Re: Defeating authuld protection on CI+ devices
Posted: Wed Jun 30, 2010 1:11 pm
ACK.petergrey wrote: true, it ends with ff07ec46![]()
Samsung TV Firmware on the GO
http://forum.samygo.tv/
ACK.petergrey wrote: true, it ends with ff07ec46![]()
dlopen("/bin/authuld",RTLD_NOLOAD) should do the trick. I haven't tried that.cyberdemon79 wrote: My problem is to find the actual physical memory address, where
authuld is loaded, can i use /proc/pidofauthuld/maps to get it,
or can i just dlopen("authuld"), search for the exported start function
and calculate addresses base from that (difference to my address as offset) ?
I did not have seen any key burn procedure. However, the mkey is placed on the stack so it might get recycled as soon as authuld exits.If I'm to slow and authuld isn't running anymore, is the memory still
filled with the same data, or does it get wiped (as a kernel hardening
feature or something like that) ?
I think there will be some more steps to do this. My approach is a modification of the MacInfo_t structures in /dev/bml/3 with the structure member msgLen initialized to "4". So the /dev/bml0/6 (rootfs) and /dev/bml0/7 (boot) will allways get checked the first 4 bytes only which will be "hsqs" - regardless of the actual filesystem content.BTW. great work finding out the mkey,
now custom exeDSP should be possible without authuld rebooting the system, correct ?
Code: Select all
# ./checkintegrity
Sony D-TV integrity checker V0.1
(p) SmartSmurf 2010 (smartsmurf@shared-files.de)
kernel flash type : 1000 MB
Your cmackey is: 5E C2 6E 7D C6 A3 08 DB 2B B6 6C 7F DF 9A FC F1
(cmackey is dev)
(mkey is not dev)
macUboot( msgLen=0x00330000): 03 16 53 43 B4 50 8D FC 20 57 C4 A2 CC 3D 15 F8
CI integrity checking for file /dev/bml0/6 (input size = 0x00330000)
[AES_CMAC]: total read length = 0x00330000
calculated hash: 03 16 53 43 B4 50 8D FC 20 57 C4 A2 CC 3D 15 F8
-> integrity check OK!
macFnw( msgLen=0x000DE000): 99 94 2C 0F D7 E1 3A EC EB 57 A2 13 82 BE B3 C8
CI integrity checking for file /dev/bml0/7 (input size = 0x000DE000)
[AES_CMAC]: total read length = 0x000DE000
calculated hash: 99 94 2C 0F D7 E1 3A EC EB 57 A2 13 82 BE B3 C8
-> integrity check OK!
mtd_exe(msgLen=0x03417000): 56 7F 9A 70 39 56 F0 3F 93 B0 25 CA BD DD 40 0F
CI integrity checking for file /dev/tbml8 (input size = 0x03417000)
[AES_CMAC]: total read length = 0x03417000
calculated hash: 56 7F 9A 70 39 56 F0 3F 93 B0 25 CA BD DD 40 0F
-> integrity check OK!
mtd_appdata(msgLen=0x01CAD000): 75 B6 50 6A 22 80 F1 39 86 42 D0 B0 B6 2F 26 3A
CI integrity checking for file /dev/tbml9 (input size = 0x01CAD000)
[AES_CMAC]: total read length = 0x01CAD000
calculated hash: 75 B6 50 6A 22 80 F1 39 86 42 D0 B0 B6 2F 26 3A
-> integrity check OK!
Everything works as expected. TV had been not broken.cyberdemon79 wrote: @smartsmurf
Any news, modifying the hashes ?
Have you already tried slightly modifying exeDSP, recalculated the hash
and tried if it gets accepted ?
Hope you haven't broken your TV trying that...![]()