Defeat ELMS Delivery Client

Published on March 08, 2011

Defeat ELMS Delivery Client

    First I’ll explain what I’m talking about.
    What is ELMS? ELMS (e-academy License Management System) is a software distribution website that each program administrator can customize to suit the needs of his department. MSDN Academic Alliance subscribing faculties around the world can use ELMS for free, so using it will not result in additional costs.

    Why do we need ELMS? ELMS is a web-based management system that simplifies the distribution of software to students in accordance with the MSDN AA licensing policy.

    The main idea of ​​this system is that the user downloads a special application that downloads the licensed software installer and unzips it. The idea is not so very good, but at first glance tolerable. But, as is often the case with Microsoft products, everything went wrong.

    I came across the following system flaws:

    1. The file is downloaded in one stream and rather slowly.
    2. When the connection is disconnected, the client must be restarted manually, and this happens quite often.
    3. Far from always downloading resumes from the percentage at which it broke off.
    4. Often there are incomprehensible damage to the file during the download, due to which the file, having fully downloaded, does not pass the CRC check and is safely deleted by the Delivery Client.

    After the third time described in the fourth paragraph, I sent a few rays of hatred to the small-sized company and decided that something needs to be changed.

    Googling suggested that this behavior could be caused by a damaged file on the server or by a crooked Delivery Client. Since we cannot do anything with the first problem, we will try to eliminate the second.

    The experiments were conducted in Windows 7 and Windows XP SP3.

    First we need to find out the url of the downloaded file. I used Wireshark for this . I have not used it before, so the algorithm may not be optimal.

    1. We order the desired product on the MSDN AA website and download the Delivery Client.
    2. Close all unnecessary programs that use the network.
    3. Run the Delivery Client, select the folder to download.
    4. Open Wireshark. In the “Capture” section of the start page, select the main network interface.
    5. In the Delivery Client, click the button. We wait until the download starts (“1%” appears).
    6. Close the Delivery Client.
    7. In Wireshark, click Capture - Stop.
    8. Sort the list of packets by the Protocol column.
    9. We are looking for HTTP packets in the Info column which have GET followed by a url ending in ".sdc". There can be several such requests.
    10. Having selected the package, we expand the Hypertext Transfer Protocol section at the bottom of the window. We need the first line (GET) and the HOST header. We copy them (right-click - Copy - Value), delete the service characters and put the HOST value before the GET value.

    We got a link. If you insert it into the browser, the download of the file with the sdc extension should begin. If the file is large, it beats several, they will end in ".01.sdc", ".02.sdc", etc. It seems that the files are divided into 2 GB.

    Now we download the files with our favorite download manager, which supports downloading to multiple streams (I got a 10-fold increase in speed).

    If there was one file, just put it in the folder that you specified Delivery Client (by default, C: \ Temp).

    If there were several files, you must first glue them with the copy command in the console:
    copy /b file.01.sdc+file.02.sdc result.sdc
    Then put the result in the Delivery Client download folder and give it the name of the first of the files: file.01.sdc (the file with this name should have been created by Delivery Client when it was first launched) .

    After starting Delivery Client will find our file and immediately begin to unpack it. Our goal is achieved.