The changes are applied to the CFW segment (Controller Firmware). The original (locked) CFW segment has a single compressed section (CPRS) while the unlocked CFW segment has two CPRS sections.
ICBW, but ISTM that the first CPRS sections of the two ROMs have identical decompressed sizes of 0x19CC4 bytes. The compressed versions differ in size by 4 bytes (0x1427C versus 0x14280). I suspect that the actual differences in the decompressed versions amount to only 1 or 2 bytes. I'm wondering whether the original code has been hacked so that it jumps to a subroutine in the second CPRS section, in which case the "unlocking" code, and key, would be located there.
The whole-space CRCs for both CFW segments are 0x0000, so no problem there. However, the used-space CRCs are non-zero for both. This anomaly is either not significant or perhaps my interpretations are in error.
The other strange thing is that the decompressed size (0x6F0) for the second CPRS section is less than the compressed size (0x7D4). Once again it could be that my interpretation is in error.
CFW_original.bin
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000032A0 05 F0 09 05 F0 A1 23 00
^^^^^
000032B0 43 50 52 53 7C 42 01 00 C4 9C 01 00 E0 1C 51 80 CPRS|B..Äœ..à.Q€
^^^^^^^^^^^ ^^^^^^^^^^^
compressed /decompressed(?) sizes
00007680 78 A3 B2 37 CB 0A 41 49 84 81 05 70 01 56 4C 88
^^ differences begin here
........
0000A520 10 D7 0C 00 B1 67 87 67 C4 64 3A 0E F6 34 C0 E1
files resync here ^^
........
00017520 FF FF FF FF FF 03 00 00 43 50 52 53 02 00 00 00 ÿÿÿÿÿ...CPRS....
end of single compressed section ^^^^^^^^^^^
00017530 00 00 00 00 00 00 00 00 00 00 00 00 B3 8F 00 00
used space checksum ^^^^^
00017540 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
........
00018790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000187A0 FF FF FF FF 36 38 00 00
whole space checksum ^^^^^
CFW_unlocked.bin
Code:
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
000032A0 05 00 0A 05 F0 A1 23 00
^^^^^
000032B0 43 50 52 53 80 42 01 00 C4 9C 01 00 E0 1C 51 80 CPRS€B..Äœ..à.Q€
^^^^^^^^^^^ ^^^^^^^^^^^
compressed /decompressed(?) sizes
........
00007680 78 A3 B2 8F 7A 08 00 13 50 47 EA F9 28 01 C0 02
^^ differences begin here
........
0000A530 08 F6 34 C0 E1 A9 42 82 D1 CF 95 27 17 63 98 10
^^ files resync here
........
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
00017520 14 A5 FF FF FF FF FF FF FF FF 03 00 43 50 52 53 .¥ÿÿÿÿÿÿÿÿ..CPRS
end of first compressed section ^^^^^^^^^^^
00017530 03 50 1F 00 F4 3E 25 00 43 50 52 53 D4 07 00 00 .P..ô>%.CPRSÔ...
start of 2nd compressed section ^^^^^^^^^^^ ^^^^^^^^^^^
compressed size = 0x7D4
00017540 F0 06 00 00 14 80 03 F0 AB 4C 90 02 00 30 18 00
^^^^^^^^^^^ decompressed size = 0x6F0 ???
.......
00017D00 FF FF FF FF FF 1F 00 00 43 50 52 53 02 00 00 00 ÿÿÿÿÿ...CPRS....
end of second compressed section ^^^^^^^^^^^
00017D10 00 00 00 00 00 00 00 00 00 00 00 00 7A 68 00 00
used space checksum ^^^^^
00017D20 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
........
00018790 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
000187A0 FF FF FF FF C3 6F 00 00
whole space checksum ^^^^^
Code:
Directory of C:\Downloads\Seagate\Firmware\ST3000NC000
ROM-20~2 BIN 524,288 12-13-17 7:04p ROM-20171213190407.bin
ROM-UN~1 BIN 524,288 12-13-17 8:28p ROM-Unocked-20171213202801.bin
CFW_OR~1 BIN 100,264 12-16-17 8:29a CFW_original.bin
CFW_UN~1 BIN 100,264 12-16-17 8:25a CFW_unlocked.bin
CFW_OR~2 BIN 95,552 12-17-17 7:08a CFW_original_used_space.bin
CFW_UN~2 BIN 97,568 12-17-17 7:08a CFW_unlocked_used_space.bin
Code:
CFW_unlocked.bin: CRC16 = 0x0000
CFW_original.bin: CRC16 = 0x0000
CFW_original_used_space.bin: CRC16 = 0x0086
CFW_unlocked_used_space.bin: CRC16 = 0x3B43