yashsingh1/xdaforums huggingface dataset:
[Atrix 4G Android Development] zambezy:
I think it can be done... But before the fuse is set... Once it is set I dont even know if it can be modified. From what I understood from briefly reading this is that it holds the verification keys for the different images. Also sets all other security perimeters. It does not hold any other data... But the only way I can imagine to circumvent is with a signed bootloader that would disregard the fuse conditions.

Sad thing is that even JTAG will not work...

60 #define FLAGS_PROGRAM_SECURE_BOOT_KEY 0x001

61 #define FLAGS_PROGRAM_DEVICE_KEY 0x002

62 #define FLAGS_PROGRAM_JTAG_DISABLE 0x004

63 #define FLAGS_PROGRAM_BOOT_DEV_SEL 0x008

64 #define FLAGS_PROGRAM_BOOT_DEV_CONFIG 0x010

65 #define FLAGS_PROGRAM_SW_RESERVED 0x020

66 #define FLAGS_PROGRAM_ODM_PRODUCTION 0x040

67 #define FLAGS_PROGRAM_SPARE_BITS 0x080

68 #define FLAGS_PROGRAM_SKIP_DEV_SEL_STRAPS 0x100

69 #define FLAGS_PROGRAM_RESERVED_ODM 0x200

70

71 #define FLAGS_PROGRAM_ILLEGAL 0x80000000

72

73 #define NVDDK_DEVICE_KEY_BYTES (4)

74 #define NVDDK_SECURE_BOOT_KEY_BYTES (16)

75 #define NVDDK_RESERVED_ODM_BYTES (32)

76

77 #define NVDDK_TPROGRAM_VALUE_CORRECTED 0
[Atrix 4G Android Development] t0dbld:
/mbm_combo.bin'

00020406080a0c0e10121416181a1c1e

00020406080a0c0e10121416181a1c1e

Keyfind progress: 100%

for the record that same key is in the combo bin as well
[Atrix 4G Android Development] zambezy:
Does this mean that the fuse programing can be invoked again?

44	* - Calling the NvDdkDisableFuseProgram() API before exiting the boot loader
45	* disables further fuse programming until the next system reset. (See the
46	* example code.)
47	* - It is advised that you disable the JTAG while using this code in
48	* the final version.
49	* - Enabling clock and voltage to program the fuse is out of scope of this
50	* library. You must ensure that these are enabled prior to using the library
51	* functions.
52	* - The library works on physical mapped memory or on virtual mapped with
53	* one-to-one mapping for the fuse registers.

Maybe is we can call ?...system reset.... ? we can clear the fuse and start clean.
[Atrix 4G Android Development] t0dbld:
i think so but question is how will we stop the continued boot process and clear fuse after initiating the system reset ?

ok so i do think it will be imparitive that we hjack the next OTA update , correct me if im crazy but if we do, than use lets say ARK as to not to disrupt the signature, could we not comment out / change some of these commands so that efuse does not get re-set?
[Atrix 4G Android Development] t0dbld:
i mean DG posted where the OTA went and was stored too, so if we stopped the update, changed /commented out some of these commands pushed the new update back to correct folder and allowed the system to than update it self , could we not in turn allow the system to crack it self ?
[Atrix 4G Android Development] zambezy:
I believe is is not just regular system reset... I think it goes deeper than that.

Possibly once it is initiated we need to load signed update that would reset bootloader and system with a fresh engineering install... Needless to say it is not this easy.

I firmly believe that only a leak from Motorola will save us. Unless there is some major disassemble of the code and full understanding is revealed of how this works... Only then we can speculate on how to overrun the protections... Its obvious that there is more than one barrier to overcome

I wonder if any phones survived and rejected the OTA... We may need a dump from one of those to compare and see what changed... If anyone has a Dev phone prior to the OTA Please let us know...
[Atrix 4G Android Development] Djazin:
Interesting, though aren't there check sums within the update files being that its a over the air update I would assume moto would need to check that all the packages made it to the device correctly, if such is the case interrupting at a certain point might cause the update to revert/ or redo its progress unless it reboots before actually applying the files we might be able to pull battery and hijack the update through adb, unless I'm reading to much into it.
[Atrix 4G Android Development] t0dbld:
i agree it is a deeper reset, but thats why im saying ... they push us the new OTA update for 1080p encrytion lets say, there update just like this one will have to system reset to enter its new code / defuse fuse and than the script comes in to reset fuse to the same and or new values... l am saying that if we hijack that update let it down load stop the update process , open the update and edit the script so that after it system resets and pushes the update ... it well forgets to reset the fuse ... wouldnt this work ?
[Atrix 4G Android Development] zambezy:
On paper it sounds great but how would we know when the fuse resets... It might be too late or too early and bricking the phone will be almost certain... If the SPL(bootloader and radio) dont load correctly it will most definitely brick the phone...

But if we CAN (that is the key) recover via RSD at that point it might work... Granted the fuse got reset.
[Atrix 4G Android Development] t0dbld:
ahh yes well RSD would be great, and i agree with your post , but i am not planning on hijacking while its flashing . Ok here is how the exact scenario plays out in my head lol you can call me an idiot if you dont see it its ok...

1. i get notification of OTA

2. i select ok and let it download

3. upon immediate completion of download i battery pull

4. using early enable usb i than adb pull update.zip from /cache/tmp

5. using ark we open this update edit script or the whatever.c like you have displayed and change /comment out the commands to launch the programs that reset the efuse nothing else

6. i than push file back to /cache/tmp over writing the one it knows it downloaded and enter recovery and let it flash its own update, that it should be unaware that we modified

7. hopefully a system with fuses that are left off

8. all drink beer and take turns prank calling Motorola

(last part is optional)

in my head this works, how ever only really scary part i see is we would only get one shot, as i would imagine it runs a version check and we would not be able to keep attempting an reflashing the same update
[Atrix 4G Android Development] pokey9000:
The mention of a programming clock and voltage implies that these are REAL fuses, fusible links that physically vaporize when they're set. Usually a dedicated pin on the chip is required to be fed with a higher voltage than the rest of the chip uses to program these fuses. This means that it's likely impossible to ever reset the fuses, and the fuses are unwriteable for us. I know this is the case on OMAP.

Some chip designs use a few identical sets of fuses, so that you have a few tries to recover from a bad fuse programming, or change the product's serial number in factory (i.e. issuing a new sn to a refurbished phone). Whether or not that's the case on the Tegra2 is something only nVidia and NDA-holding ODMs have.

It can't hurt to look more into this, but I'm sure there's a better chance of cracking / subverting the existing key than finding a way to disable it. That being said, count me among the people who returned theirs. If Motorola releases a mea culpa and an unlocked bootloader or some other developer concession, then I might get one again. Til then I've got my N1 and its HTC-sanctioned unlockable bootloader.
[Atrix 4G Android Development] t0dbld:
what do you make of me finding that same aes key in the update DG posted last night ?
[Atrix 4G Android Development] pokey9000:
Are you sure it's a key? It looks to me like it could be a look-up table that's counting in 2s bytewise. If it is a key to signed code, there should be a hash it decrypts somewhere nearby. If you can verify that, then go look in that test key table someone posted earlier and find the private key.
[Atrix 4G Android Development] cellzealot:
Glad to see you folks are developing enough of your own info to start understanding what you are dealing with. Congratulatons.
[Atrix 4G Android Development] zambezy:
That would be great but as soon as you modify the image it will fail hash verification and report unable to flash... Unless that is where the AES key comes in and we find a way to push it back so that the correct hash is verified.

Little off topic but this tread has over 50,000 views... LOL you think people want open bootloaders...
[Atrix 4G Android Development] t0dbld:
if no one else noticed before goto /sys/firmware/fuse not sure if we can extract any data from there , but sure enough everything just discussed is there
[Atrix 4G Android Development] milk242:
Should we check the Xoom sbf to see if their kernel config is the same or different so we can verify if this is tegra_fuse is actually like the efuse in the OMAP processors?

Most likely, but just holding out for hope
[Atrix 4G Android Development] pokey9000:
It seems like reading the key and some of the flags out of there would be useful...
[Atrix 4G Android Development] Squadfer:
yep noticed it earlier... havent been able to do anything with those files myself :/
[Atrix 4G Android Development] t0dbld:
lol sure well i have pulled them from the device but hmm well most of them are blank

and the ones that are not dont seem to be useful because they have

0

or

FFFFFFF

and thats it, but maybe some one else knows a way to read them :p
[Atrix 4G Android Development] zambezy:
Just Google it. You can find all the instructions for the kernel. I think the fuse is set when the kernel boots. There might be a chance to deactivate after reset, if that is the case.
[Atrix 4G Android Development] zambezy:
Has anyone looked at the xoom bootloader how do they differ. Any mention of the fuse. I'm away from my computer.
[Atrix 4G Android Development] t0dbld:
ill see what i cant dig up now ... also going to tear appart that sbf leak with splitter see if nothing useful there
[Atrix 4G Android Development] zambezy:
Here is some more information on the ODM Production Fuse programing...

http://nv-tegra.nvidia.com/gitweb/?...c;hb=0a2530f2dbffc846ff403703af1e632a924e1653

http://nv-tegra.nvidia.com/gitweb/?...b;hb=7babb616e672128db7ec4a3efa8fbe0c09fed1b5

http://gitorious.org/ac100/kernel/commit/7babb616e672128db7ec4a3efa8fbe0c09fed1b5

http://gitorious.org/~ggrandou/ac100/ggrandou-kernel/commit/7babb616e672128db7ec4a3efa8fbe0c09fed1b5

Considering we will need some serious support on cracking this I suggest we setup a bounty for the person/group that figures out how to bypass it... Money always seems to motivate people...
[Atrix 4G Android Development] t0dbld:
haha i think money will go with out a bounty, personally i think we should try and get in contact with these comitters
[Atrix 4G Android Development] zambezy:
Personally I dont care about the money... Unlocked device like that could be revolutionary... Can you imagine the possibilities... Some people on the other hand do need the extra push to produce.
[Atrix 4G Android Development] t0dbld:
haha money was your suggestion , lol who cares doesnt matter im going to keep digging, good find on those pages, im trying to get koush to help with comparison of atrix and xoom and few other things i want to run buy him
[Atrix 4G Android Development] cellzealot:
Those are some very nice docs for the fuse array. We didn't have anywhere near that clear a picture of the process for many weeks into it until we got a later set that filled in many holes in our understanding.

You guys are lucky...nice job!

If you are talking to Koush you should ask him about writing a bootstrap recovery for the Atrix, That is the most critical and useful tool that you don't have right now.
[Atrix 4G Android Development] zambezy:
Ok so the XOOM has fuse protection also... we need to look hard at those files and see what they do to disable the checks... Interestingly it came up something about multiple fuses... Hummm I wonder if the Atrix only has one and the Xoom has multiple allowing for unlocking the phone..

TCMD: SecICTypeRead
hack-around
TCMD: phone security mode: %d
TCMD: get security mode prod mode
TCMD: leaving getting security mode
/dev/tegra
TCMD: /dev/tegra
fuse opended with fd: %d
TCMD: ioctl ret value : %d
TCMD: SBK revealed: %s
TCMD: programming SBK...
TCMD: SBK successfully blown!!!
TCMD: SBK pogramming has failed!!!
[Atrix 4G Android Development] t0dbld:
I plan on that , well have to send him a device ... how ever ill have to see if he will work on what i want i got a few ideas of how a custom bootstrap for that could help us break it wide open but unfortunitly my knowledge of building bootstraps is limited i was looking at AT91SAM bootstraps that our linux kernel is a custom to using, also i wish we could get a sbf for what we have as it would enable some further testing with what you have given us
[Atrix 4G Android Development] droidbird:
No bearing on what we are doing here, but they are using ClearCase. Nice tool, but a pita to get your config specs right in a complex project.
[Atrix 4G Android Development] cellzealot:
We aren't likely to get a stock release SBF for Atrix. Our primary source said dev for these phones is not done at his facility and therefore does not have access to those engineers and/or files. He said it's possible and we have other sources as well, but I wouldn't bet on it.

If one surfaces we will post it of course.

We will shortly be dealing with this same setup when the Bionic comes out in a few months with the additional complexity of LTE and an entirely new network security protocol with SIM based CDMA/EvDO and LTE authentication.

I can hardly wait...
[Atrix 4G Android Development] zambezy:
As far as your source... could he give you some insight on weather it is possible to revert to engineering build with open fuse...or erasing the fuse protection, rewriting it... or is it permanently burned in...
[Atrix 4G Android Development] amwbt:
Edited, moderator please remove this reply.
[Atrix 4G Android Development] cellzealot:
I don't know who you are directing your comments towards, but I wasn't being negative at all, merely stating clearly for the record that the SBF that many people have been asking if TBH can acquire is not likely to come from us anytime soon...that's all.
[Atrix 4G Android Development] zambezy:
The problem is that protections in the SPL/bootloaders are becoming increasingly complicated and it is hard to get the full picture to even exploit weaknesses. And without files that would restore the device it is hard to justify bricking $500+ in equipment just to try something.

LOL that disappeared before I can even finish typing
[Atrix 4G Android Development] YellowGTO:
My bad knee, is hurting. So that makes me think and SBF will be released very shortly.
[Atrix 4G Android Development] zambezy:
More this seems to invoke the unlock selection?

"hardware/tegra/core/security/mot_sst/src/mot_sst.c"

Could this reset the fuse?

misc/update factory/fti %04d %08x PDB bt/bt_bdaddr bt/bt_bdaddr.bin wifi/wlan_mac wifi/wlan_mac.bin factory/byte update required HW Failure: Unable to read SBD_EN fuse SBK clearing failed. Device will reboot in 4 seconds

%s ----------------------------------------------- Vol Up/Back to select, Vol Down for next choice current choice>> %s Unrecoverable bootloader error in GetUsrSelectn (0x%08x).

And it fails if it cant returning "Unrecoverable bootloader error in... "

Please guys some constructive criticism would be nice here...
[Atrix 4G Android Development] xxtsfxx:
I know very little about the programing side of this but i am a (noob) electrical engineer. I had a class that required us to learn FPGA boards and how to use HDL ect....

Anyways, The company that i got my softawre/hardware aslo gives tools to read the data on the eFUSE registers. Perhaps this could be of help. Especialy if we could see that "customer defined algorithm" Feel free to click links and look around.

xilinx eFUSE site.

http://www.xilinx.com/support/documentation/sw_manuals/xilinx11/pim_c_introduction_efuse.htm

http://www.xilinx.com/support/documentation/user_guides/ug360.pdf (search for eFUSE section)

Im still doing some reserch on this. But I know the eFuse, dev by IBM, can only be pogramed once... NEVER AGAIN(scource xilinx and toshiba) but it seems you can see what code is in it.

This may not help due to the fact we would somehow need to hook the chip up to the FPGA board. Im not sure if you can use this via USB connection on the phone. However, im sure this FPGA board may be similar or what moto used to develop the eFUSE for these phones.

Toshiba uses it as well. This link somewhat gives us a little diagram of how it works.

http://www.toshiba-components.com/ASIC/eFUSE.html

This means the key is stored elsehwere? not on the FUSE.

The eFUSE code may or may not be accessable the way you guys are trying to access it. However, remeber I am a noob so please dont flame :) This is all i know so far.

Just trying to help.
[Atrix 4G Android Development] zambezy:
The code is stored on the fuse but they disable the JTAG and even at that the information is encrypted... You know... Maybe that information is encripted with the AES key... Memory dump and figuring out the encryption algorithm might reveal the Private keys used to sign... But that is way beyond what we can do right now...

anyhow look what I stumbled on ...
[Atrix 4G Android Development] xxtsfxx:
Do the dev phones have JTAG ports enabled? If so we may be able to read the algorithm... if its the same...
[Atrix 4G Android Development] zambezy:
flash

Nvflash started

nvflash action [options]

action (one or more) =

--help (or -h)

displays this page

--cmdhelp cmd(or -ch)

displays command help

--resume (or -r)

send the following commands to an already-running bootloader

--quiet (or -q)

surpress excessive console output

--wait (or -w)

waits for a device connection (currently a USB cable)

--create

full initialization of the target device using the config file

--download N filename

download partition filename to N

--setboot N

sets the boot partition to partition N

--format_partition N

formats contents of partition N

--read N filename

reads back partition N into filename

--getpartitiontable filename

reads back the partition table into filename

--getbit filename

reads back BIT into filename

--getbct

reads back the BCT from mass storage

--odm C Data

ODM custom 32bit command 'C' with associated 32bit data

--go

continues normal execution of the downloaded bootloader

options =

--configfile filename

indicates the configuration file used with the following commands:

--create, --format_all

--bct filename

indicates the file containing the BCT

--sbk 0x00000000 00000000 00000000 00000000

indicates the secure boot key for the target device

--bl filename

downloads and runs the bootloader specified by filename

--odmdata N

sets 32bit customer data into a field in the BCT, either hex or

decimal

--diskimgopt N

sets 32bit data required for disk image convertion tool

--format_all

formats all existing partitions on the target device using the config fil

e,

including partitions and the bct

--setbootdevtype S

sets the boot device type fuse value for the device name.

allowed device name string mentioned below:

emmc, nand_x8, nand_x16, nor, spi

--setbootdevconfig N

sets the boot device config fuse value either hex or decimal

--verifypart N

verifies data for partition id = N specified. N=-1

indicates all partitions

Intended to be used with --create command only.

--setbct

updates the chip specific settings of the BCT in mass storage to

the bct supplied,used with --create, should not be with --read,and

--format(delete)_all,format(delete)_partition,--download, and--read

--sync

issues force sync commad

--rawdeviceread S N filename

reads back N sectors starting from sector S into filename

--rawdevicewrite S N filename

writes back N sectors from filename to device starting from sector S

nvflash switches and nvflash commands
[Atrix 4G Android Development] zambezy:
Once the fuse is enabled its all over.... you cant access it. They are not that stupid.

But again I have no way to know... its all speculation.... we are all just as clueless...
[Atrix 4G Android Development] xxtsfxx:
Well, I believe its accessable you just cant alter it.
[Atrix 4G Android Development] zambezy:
never mind that was stupid
[Atrix 4G Android Development] t0dbld:
wow i took an hour break to try a few things , than make deposit grab food and go home ... alot happened gimme a few to catch up and ill see if i have any criticism :p
[Atrix 4G Android Development] t0dbld:
Well the first thing i wanted to try was along those same lines as what koush is doing. I was going to try and use the tegra2 bootloader for froyo 2.2 off the developer site and essentailly try and get the phone to act as the dev board, at the time TBH advised me that this woukd not work because of the chain of trust that went to the nvida ram . . I would still consider going this route if we can establish the fuse is only checked at boot give me a few to re read site and my previous notes and thoughts
[Atrix 4G Android Development] ntwrkwizard:
Did anyone notice the zip file located at /etc/security/otacerts.zip? Not sure what it is but thought I would point it out given the file exists in both the dev dump with "test" keys and in this retail file with what appears to be a live 509 key that is specific for validating a motorola cert.

NW
[Atrix 4G Android Development] t0dbld:
im away from my dev machine for the night could you upload so i can look at it ?

if we could determine there authenticity that would maybe help
[Atrix 4G Android Development] ntwrkwizard:
-----BEGIN CERTIFICATE-----

MIIDvjCCAqagAwIBAgICEnswDQYJKoZIhvcNAQEFBQAwdTELMAkGA1UEBhMCVVMx

ETAPBgNVBAgTCElsbGlub2lzMRUwEwYDVQQHEwxMaWJlcnR5dmlsbGUxFTATBgNV

BAoTDE1vdG9yb2xhIEluYzEMMAoGA1UECxMDTURCMRcwFQYDVQQDEw5NQVAzIE9U

QSA0NDgtNTAeFw0xMDA4MDYxNjU2MDJaFw0zNTA4MDYxNjU2MDJaMHQxCzAJBgNV

BAYTAlVTMREwDwYDVQQIEwhJbGxpbm9pczEVMBMGA1UEBxMMTGliZXJ0eXZpbGxl

MREwDwYDVQQKEwhNb3Rvcm9sYTEMMAoGA1UECxMDTURiMRowGAYDVQQDExFNQVAz

IE9UQSA0NDgtNS0xOTCCASAwDQYJKoZIhvcNAQEBBQADggENADCCAQgCggEBAKie

e1dPP2M3ArFGzpEU2xssrSZJFeXRBMrDeXBFPisPNk4znvb1+i3dYresiDLUtaCs

r/RabPsCDfwZJtZoA6w2BvgCaazsTH0etd+lcxke4wUQbbbP7n6dPj499pF64pkj

r3Df3nMADX7e6Zh4yR7sadhL8rvOCpu8kGrL6dV8UjGmJ7DaLxk6ahouRV9ZjRbR

Q6OzASg1KDS6naLbfdtmR5dx2xCdJFNxYYwrR1MFlcE+1k14+db9wBNNKwj9Kwej

V3pd2m87KHtDZyBTlgF4PHTTMz+dpTxK/uiQe7SJQQ37fP85XUlIKxk+VjVbNAUJ

y3cUVvzYcsZBrCCo+DECAQOjWzBZMB8GA1UdIwQYMBaAFB2ridMIpZVg4y0jP8wZ

2FvmXuqbMBEGCWCGSAGG+EIBAQQEAwIEEDAOBgNVHQ8BAf8EBAMCBeAwEwYDVR0l

BAwwCgYIKwYBBQUHAwMwDQYJKoZIhvcNAQEFBQADggEBANUmWxkLWM/Tr8S7Nhfh

XpZ6z4AHqofoIbVkxDt/7JedK2qNnZjxTUHKnbeDM1tUGm/Q/gnWOE36csF1Vq1e

U93jWHIvF0+2nhLgsGzP6e0Hf4+qB8St8SI7ir9H2RE17qThGDW4tik0saM7mHrj

+PWrWay92w1glFCl4jHatKbcxV5/VQiDLkQSlYzOrtu1to5JuLAsE/0wvvWEdofe

26M4o2nLEQd3wypkGaCbAMNZFlbRs752B+zSktAZOuw/2LeUmLkSoWLcE5G5kkZ/

9oSxkfwycrLrMfJBZMgs2xZVB7p+HiJXAku/1AYZnHbHyxLLU1S2v8OqRYVOctmi

45c=

-----END CERTIFICATE-----
[Atrix 4G Android Development] wade7919:
Has anyone tried getting the cached public key during an OTA on any of the other moto devices. Not sure if it would work the same as the old cached key exploit on the pgp keys. just a thought. keys has to be cached both server and phone side, during and after the ota.
[Atrix 4G Android Development] Festaman:
Does the stock SBF from the Xoom help at all?

http://www.droid-life.com/2011/03/05/download-motorola-xoom-stock-sbf-hri39/
[Atrix 4G Android Development] zambezy:
I suggest t you guys read trap doors in asymmetric cryptography.

Cracking the public key will not gain access to the private key.

F (x) only outputs one value that equals f (y) and that value is not y.

The pubic key will differ with hash differences and its only used for y/n responses.

To generate signature you need the private key and encryption and decryption algorithms along with the pubic key that is generated.

The public key is just that pubic so everyone knows it but it only decrypts