Sony BDP S1200 Blu-ray/DVD player firmware
I purchased the Sony BDP-S1200 blu-ray/DVD player on special. I need a region free DVD player, and there are none available within New Zealand. It's possible to buy a universal remote, and to enter some codes and it's been reported to work - but it's claimed to work for firmware only for other regions. There are reports of other models allowing you to put a shared library and a script on a USB key and to have it start the telnet daemon, but I don't have a router to connect the player to, via ethernet cable.
Malcolm Stagg has managed to modify the firmware for his S390, and provided detailed instructions. I've downloaded five versions of the firmware. Unlike the S390, which Malcolm has decryption scripts for, this is not encrypted with a simple substitution cipher. It looks more like it has been XOR'd.
I've written a simple Python script to take what I assume the initial bytes to be, and look for the XOR key that matches in the rest of the file, hoping to find them over a sequence of null bytes. But the longest match was four contiguous bytes in an unlikely location.
The five different firmware versions are (version numers are in the light coloured bar for first four):
- UPDATE_M19R0071.ZIP
- UPDATE_M19R0112.ZIP
- UPDATE_M19R0116.ZIP
- UPDATE_M19R0156.ZIP
- UPDATE_M19R0164.ZIP (bottom right).
If the first 16 bytes are a general null-terminated text version ('MSB19\0\0\0...') then this implies at least 16 bytes that may be located elsewhere in the file, should there be a long enough sequence of null bytes.
I've already run a Python script over what I guessed the initial 16 bytes to be, and longest matched sequence is 4 contiguous bytes. It's possible that the embedded files which follow the header are compressed, but I doubt it. It's also possible they used a different firmware version string format. But given the pattern of red differences in the screenshot above, it looks like the header is almost the same to what Malcolm found,
- The 0x00 line is obviously still the firmware version, so will be something like 'MSB19\0\0\0\0...'
- The 0x10 line is obviously still the text version of the release. The only difference is the changed numbers, i.e. one difference between 116 and 156 on the two releases in the upper right.
- The 0x20 line is the text release date. I don't know the release dates, and expect they differ from the publication dates when the releases were made available for download.
- The 0x50 line differs where the checksum is supposed to be.
- The 0xC0 line is where Malcolm documents the size of the second embedded file.
- Look for substrings of the known XOR patterns where they've been applied to null bytes, instead of matching on the start of the known XOR key. It is possible that 0x00 doesn't start with 'MSB19'.
- Apply the longest believed correct XOR key segments to the rest of the file stepping the application index by one byte. Output any readable strings of decent length to a log and go through it later.