StreetDeck is Microsoft Windows based software that uses the latest technology to take advantage of all the power in your UMPC, Laptop, NetBook, or other in car PC. GPS Navigation, Music, Satellite Radio, HD Radio, and More. It makes the features you want to use in your car accessible while driving.


Disclaimer
This software is believed to be abandonware, as:
1. It is unavailable to download from the original website (http://streetdeck.com/Downloads.aspx)
2. It is unavailable for purchase from the original website (https://streetdeck.com/Restricted/PurchaseWizard.aspx)
3. The author is not responding to email requests (info@streetdeck.com)
4. The forums are no longer hosted. (http://forums.streetdeck.com/forum)
Introduction
I installed StreetDeck into a double-din Infill G4 Mini PC in my old Audi A4 (B5) in 2007, and paid for the v2 upgrade in 2008.
StreetDeck uses a number of physical parameters to generate a Machine Code, and lock the software to a machine configuration. The website (used to) allow the user to generate up to three codes (original + two updates). However, if the PC used to run StreetDeck added ram, or changed the hard drive to SSD, this would require the user to re-authenticate the software.
Understanding that I do not change my cars as frequently as the average owner, I was still using this software in 2015 and could no longer generate additional codes. Additionally, the company did not respond to any support requests for additional license keys.
In addition to the lack of response from the owner, download of Satellite overview tiles no longer functioned, and many features were blocked when moving unless “testmode” was enabled. (I am assuming the same company only paid for a few years of commercial support of satellite imagery, and that support had lapsed).
Keygen
StreetDeck uses a variant EXECryptor protection to increase the difficulty for reverse engineering. Standard unpackers were not able to remove the protection, but OllyDbg could be added to the process after it was started, so I didn’t need to create my own unpacker.
The protection uses the following information to generate a key:
1. Machine Code and Check Code: StreetDeck uses a number of physical parameters to generate a Machine Code and lock the software to a machine configuration. The website (used to) allow the user to generate up to three codes (original + two updates). However, if the PC used to run StreetDeck added ram, or changed the hard drive to SSD, this would require the user to re-authenticate the software.
2. Option Strings: Different option strings appended to the Machine Code and Check Code enable specific versions or features
string optionstring1 = "0E9B69EB-637"; // StreetDeck Version 1 string optionstring2 = "DIOL:SDK-5A4"; // North American Navigation Ultimate string optionstring3 = "6F531732-54C"; // Base Application string optionstring4 = "3CE6DF09-CBE"; // European Navigation Ultimate string optionstring5 = "92F18915-89F"; // Extended North American POIs string optionstring6 = "5945B8DA-918"; // Extended European POIs string optionstring7 = "CCE47B89-5AB"; // North American Navigation (6 Month) string optionstring8 = "93EAA4E8-7F7"; // North American Navigation
The final code is generated by:
1. Appending the Machine Code, and Check Code together into a “Combined Code”
2. Take the first 16 characters of the Combined Code and append the Option String. Use a modified MD5 (more below) to create a Hash.
3. XOR the Hash with the remaining 8 characters of the Combined Code
4. Perform a second hash using the the modified MD5 on the post-XOR Hash
5. Append the Option String to the second hash, and create a third modified MD5 hash
6. Convert the third digest and the first five bytes in the second digest into ASCII

The MD5 used is slightly modified from a standard MD5, where the finalize routine does not append the 8-bit length. (This was quite annoying to debug, as the routine and initialising constants look like a standard MD5 implementation)
Key Breakpoints are: Start of Read Serial Routine 0056EFB9 To read the Serial you input 0056EFF2 MD5 Calculation Subroutine with 6xArguments 00AD0226 Arg5 is the License Type (optionstring) The input is MD5'd Three times First Hash (Plain Text combinedcode) 00ACFF5A Second Hash (Hash of First Hash - Post-XOR) 00ACFFE6 Third Hash (Hash of Second Hash - Post-XOR) 00AD006A Read a Valid Code 005E9985
Keygen source code and executables are available here, for those that want to look into the protection routines in more depth.
To test, download and install StreetDeck v2 North America or StreetDeck v2 Europe and the 2.1.0.1 update. User instructions are available in the manual.
If StreetDeck is being used in an Infill G4 double din headunit, please use the Infill G4 Drivers.
The keygen is able to generate the following codes:|
1. StreetDeck Version 1
2. North American Navigation Ultimate
3. Base Application
4. European Navigation Ultimate
5. Extended North American POIs
6. Extended European POIs
7. North American Navigation (6 Month)
8. North American Navigation
Notes:
1. StreetDeck Version 1 codes will only work on the original version of StreetDeck, not the version 2 software found on this page.
2. Extended North American and European POIs must be added to a licensed version of the software. (A key error will result if an attempt is made to register the software with this key as the only one)
3. Licences can be stacked. (You can apply North American Navigation to European Navigation)
4. The license file is kept in “My Documents\Streetdeck\RegCodes.dat”. The RegCodes.dat file is a regular text file, licenses can be stacked and manually installed by copy/pasting them to their own line in this file.





EXE Patches
Binaries modified to disable the testmode warning and re-enable Satellite Imagery downloads is available here.
1. The “testmode” command line flag geneartes a popup indicating that testmode should not be used in a moving vehicle. This was easily removed by NOP’ing out the CALL routine that creates the popup.


2. While looking into patching / updating the binary to restore the ability to download satellite imagery, I noticed that there were two different sources for the maps. By default, globexplorer.com was used, with four different map servers available, accessed using the same API key. Testing with WireShark showed that these servers were not even available, let alone authorised to download new tiles.
However, a second (first?) source address was initially added to the stack before being overwritten by the paid map server. NOP’ing out the CALL routines which overwrote the paid address in the struct allowed for Satellite imagery tiles to be downloaded.
In the images below you can see the NOP’d out routines, as well as the URL held at Stack Address 1443FDB8


I honestly expected it to be much more difficult to modify the binary to restore Satellite imagery download, but quick and easy fixes are always appreciated.
