Site Notice - We are currently investigating an issue with missing download links. Apologies for any inconvenience caused. PaulOBrien

  • Announcements

    • Reminder - MoDaCo position on illegal content   07/30/15

      ILLEGAL CONTENT I'd like to just reaffirm MoDaCo's position regarding piracy and illegal content in the light of some recent questions / postings. Posts will be censored by myself or my moderation team if the contain or link to: Illegal / pirated / cracked software or sites that host such softwareNintendo emulators / ROMs or sites hosting them (in light of Nintendo's legal stance)CUSTOM ROMS You may discuss and post links to custom device ROMs on MoDaCo, provided the following rules are adhered to: ROMs must not contain any illegal 3rd party software (this includes trial versions included without permission)ROMs must give full credit to the original authorISSUES If you have any issues with this policy, please contact PaulOBrien directly via PM.
    • Reminder: Selling items on the forum directly is not allowed   07/30/15

      Please note that selling items on the forum directly is not allowed by the forum rules. There is a forum for eBay auctions whereby you can list the items on eBay and link to them there. This is the ONLY forum for this type of activity. You may also advertise links to the eBay forum in your signature. Please note that selling directly in contravention of these rules will result in a warning / suspension / ban.

Perl script for unpacking the 'updata.app' files.

24 posts in this topic

Posted (edited) · Report post

I've created a simple Perl script to unpack the contents of the UPDATA.APP files. So far all of the updates that T-Mobile and Huawei have produced for the Pulse are in the form of an UPDATA.APP file and this script will extract the boot, recovery and system images from that package. This is only useful if you wish to use parts of an update to cook your own customised rom.

split_updata.pl.txt The webserver wouldn't allow me to upload a .pl script so I've given it a .txt file extension. You'll have to rename it to just split_updata.pl

Useage: perl split_updata.pl updata.app

It will extract 25 files. Some of them are obvious, like the boot and system images, but there are many I don't recognise. For the time-being I've used a .mbn file extension for the unknown files because I think they might be appsboot.mbn, oemspl.mbn, amss.mbn and such-like. If you compile the CodeAurora AOSP code you'll notice it produces appsboot.mbn and appsboothd.mbn alongside the boot and system images. I don't know what they are but they have similarities with some of the files in the UPDATA.APP package.

I don't often use Perl so I'm sure there are better ways to script this. You are more than welcome to make improvements. And it would be great if we can identify what each file does.

Note: This script will only unpack the file. Repackaging it would be very tricky because it contains checksums that would have to match.

*** UPDATE ***

There is now a much improved version of this script over in this thread. Please use that version as it's far more stable and robust. Full kudos to ZeBadger and all those involved in enhancing it.

Edited by McSpoon
0

Share this post


Link to post
Share on other sites

Posted · Report post

How did you find the format of this file? Guesswork?

0

Share this post


Link to post
Share on other sites

Posted · Report post

How did you find the format of this file? Guesswork?

Yep, just guesswork from looking at it in a hex editor. I noticed many recurrences of a "HWU8220" string. Each occurrence is surrounded by 92 bytes that are almost identical except a few bytes change each time. The bytes that differ turn out to be the offset to the where an embedded file starts, and it's length. From that we can extract the files.

Each section goes like this...

Offset	Length	Description

0x00	4	Always the same identifier 0x55AA5AA5.

0x04	4	The length of this data section.

0x08	4	Always 1.

0x0C	8	The string "HWU8220" followed by 0xFF.

0x14	4	The file length.

...By this stage, we already know the length of the data section (so we can skip the rest of it and go straight to the part where the file starts) and the file length.  I haven't bothered to dissect the rest of the section.  It mostly seems to be strings containing the date, the version number, the word "INPUT" and a random length of data which I'm guessing is a checksum.

I'm certain that checksums exist because, within the file is the T-Mobile splash image you see at boot-up, and I tried changing that to a different one (as it will always be 307200 bytes in length) but it wouldn't install the update. It knew the file was inconsistent and rejected it. So we're stuck with the T-Mobile logo for now. :)

0

Share this post


Link to post
Share on other sites

Posted (edited) · Report post

do i have to run it as a simple command in command line?

Got the lastest Rom somebody founds on huawei, but dont know how to use your script :)

Do both files have to be in the same folder?

Edited by Basher52
0

Share this post


Link to post
Share on other sites

Posted · Report post

I've created a simple Perl script to unpack the contents of the UPDATA.APP files. So far all of the updates that T-Mobile and Huawei have produced for the Pulse are in the form of an UPDATA.APP file and this script will extract the boot, recovery and system images from that package. This is only useful if you wish to use parts of an update to cook your own customised rom.

split_updata.pl.txt The webserver wouldn't allow me to upload a .pl script so I've given it a .txt file extension. You'll have to rename it to just split_updata.pl

Useage: perl split_updata.pl updata.app

It will extract 25 files. Some of them are obvious, like the boot and system images, but there are many I don't recognise. For the time-being I've used a .mbn file extension for the unknown files because I think they might be appsboot.mbn, oemspl.mbn, amss.mbn and such-like. If you compile the CodeAurora AOSP code you'll notice it produces appsboot.mbn and appsboothd.mbn alongside the boot and system images. I don't know what they are but they have similarities with some of the files in the UPDATA.APP package.

I don't often use Perl so I'm sure there are better ways to script this. You are more than welcome to make improvements. And it would be great if we can identify what each file does.

Note: This script will only unpack the file. Repackaging it would be very tricky because it contains checksums that would have to match.

man do you have CHT8000 rom?

0

Share this post


Link to post
Share on other sites

Posted · Report post

Thanks man

0

Share this post


Link to post
Share on other sites

Posted · Report post

Has there been any progress on working out where the checksums are? I'm thinking of having a bash, but if anyone has any more information then that would be appreciated.

0

Share this post


Link to post
Share on other sites

Posted (edited) · Report post

Has there been any progress on working out where the checksums are? I'm thinking of having a bash, but if anyone has any more information then that would be appreciated.

Okay... I have no idea how far people have gone with all this, so I've just started from scratch.

I've dumped the december update using this script.

boot.img contains a ROMFS file and a CPIO image of the filesystem.

recovery.img contains an identical ROMFS file and a CPIO image of the filesystem with a few more bits and bobs.

I have found the checksums for these files in the UPDATA.APP file. eg "18 89 db e0" is the boot CPIO image checksum (reversed) and is at offset 0145c38A

Is this of any use to anyone? Got to go to bed, but I can work on adding more to the file format tomorrow. I'm guessing that we can remove that horrible pink t-mobile logo :)

ZeBadger

PS Checksum of the dumped splash image is : 69FD5EC9 (C9 5E FD 69 reversed), in both the UPDATA.APP files I've looked at, but I can't find it in the UPDATA.APP file :)

Edited by ZeBadger
0

Share this post


Link to post
Share on other sites

Posted · Report post

I have found the checksums for these files in the UPDATA.APP file. eg "18 89 db e0" is the boot CPIO image checksum (reversed) and is at offset 0145c38A

Okay, while getting ready for work this morning I've realised that these CRCs are part of the gzip in the img files and not part of the UPDATA.APP file. I'll keep working on it!

0

Share this post


Link to post
Share on other sites

Posted · Report post

Hi,

This script is not working correctly to me, is there is any other tool to extract UPDATE.APP...

Thanks in Advance....:D

0

Share this post


Link to post
Share on other sites

Posted · Report post

Hi,

This script is not working correctly to me, is there is any other tool to extract UPDATE.APP...

Thanks in Advance....:D

Yes, the new script. It's in the "Repacking UPDATA.APP" thread...

0

Share this post


Link to post
Share on other sites

Posted (edited) · Report post

Yes, the new script. It's in the "Repacking UPDATA.APP" thread...

Thanks for your replay......i will check that post......

Edited by sreeramu
0

Share this post


Link to post
Share on other sites

Posted · Report post

Thanks for your replay......i will check that post......

Wait - do you have a Pulse or an HTC Touch 3G (whatever that is)?

This only works for T-Mobile Pulse UPDATA.APP's.

0

Share this post


Link to post
Share on other sites

Posted · Report post

I've also produced a windows program which will extract the contents of UPDATA.APPs, but it has the same restrictions as the perl script.

0

Share this post


Link to post
Share on other sites

Posted · Report post

I've also produced a windows program which will extract the contents of UPDATA.APPs, but it has the same restrictions as the perl script.

Can i Know the Restriction ... in the latest perl script we need linux system ....

what is the restriction you are telling about....

0

Share this post


Link to post
Share on other sites

Posted · Report post

Can i Know the Restriction ... in the latest perl script we need linux system ....

what is the restriction you are telling about....

Won't it work with ActivePerl for Windows?

0

Share this post


Link to post
Share on other sites

Posted · Report post

Can i Know the Restriction ... in the latest perl script we need linux system ....

what is the restriction you are telling about....

As stated above - It will only work for T-Mobile Pulse UPDATA.APP's.
0

Share this post


Link to post
Share on other sites

Posted · Report post

Thanks For All your replays , i used ubuntu and extracted the UPDATE.APP with latest perl script...thanks once again....

0

Share this post


Link to post
Share on other sites

Posted · Report post

Hello there! I'm looking for the boot.img of my phone, bacause I'va flashed the boot image with a wrong one (I have U8220-6), so what I did is download my rom and unzip it.

Inside there was the UPDATA.APP so I used your script. I have extracted the files successfully. But the problem is here: The boot.img is only 40 B. I tried to flash it but it is too small (it should be around 1 MB).

Maybe one of the other files is the boot image. Do you know something?

Thanks!

0

Share this post


Link to post
Share on other sites

Posted (edited) · Report post

Hello there! I'm looking for the boot.img of my phone, bacause I'va flashed the boot image with a wrong one (I have U8220-6), so what I did is download my rom and unzip it.

Inside there was the UPDATA.APP so I used your script. I have extracted the files successfully. But the problem is here: The boot.img is only 40 B. I tried to flash it but it is too small (it should be around 1 MB).

Maybe one of the other files is the boot image. Do you know something?

Thanks!

The script linked to in the first post on this topic unpacks the correct filenames... you also need the crc binary downloaded to the same location. It only works on Linux... if you remove the crc checking it'll work on anything running perl.

Edited by ZeBadger
0

Share this post


Link to post
Share on other sites

Posted (edited) · Report post

**** SD download log ****

Failure: OEMSBL version unmatched.

Failure: operation did not succeed.

Failure: operation did not succeed.

Failure: operation did not succeed.

Failure: operation did not succeed.

Failure: operation did not succeed.

dload_sd_ram_data_proc->(retry >= DLOAD_RETRY) failed!

YES.

Using the Perl script method, as work around to flash with CWM recovery works.

But however, my U8220 was 1.5 ROM partition size, still have small /system ~85mb and large /data ~105mb, which UK 2.1 stock ROM changed size.

this still do not resolve all my issues.

James

Edited by James Kei
0

Share this post


Link to post
Share on other sites

Posted · Report post

Great work.. It works with U8100 Canada Wind Update.APP

0

Share this post


Link to post
Share on other sites

Posted · Report post

Look Look......

0

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

MoDaCo is part of the MoDaCo.network, © Paul O'Brien 2002-2015. MoDaCo uses IntelliTxt technology.