PS3HaX Member anaria has compiled a code to help with the checking of Nor Dumps, here is a quote from his thread:
Hi Guys,I’m no dev nor a PS3 expert, but I’d like to try some stuff in there…
So I’ve wrote few lines of code in order to help me, and who else want, to validated and analyse a PS3 NOR dump.I’ve read what I could from ps3devwiki as well as on ps3hax in order to gather as much as possible information to help me in writing my lines.
I’d come to it shortly, but first I’d like to thanks all of you who participate to this scene, I’m not good at naming people and I’m worry to forget some.
Now my code may not look beautiful and may definitely be improved/enhanced, but as of today it seems useful to me and I hope it can be for others, so please enjoy it as much as you want.
I have no pretension for it but I’d like from anyone who enjoy it, to keep it as an opensource project, if this code or any part of it is used for another application I ask you to make it public as well, if you like this code and write some changes please share it with everyone.
I’d also appreciate if anyone want to propose some code and English correction.
Thanks anaria




01-21-2013
06:56 AM
great initiative ^^
I thought of this already, but my Java skills did not make me confident enough to try it out.
Just let us know if we can help you in anyway.
I will look at your code later this evening when I get home.
01-21-2013
07:12 AM
Just make a simple app that i can call and it extract a hex value or string that i ask and ill do the rest
Sent from my iPhone 5 using Tapatalk
01-21-2013
08:10 AM
[MENTION=220459]katsuru[/MENTION] I've used C as it's fastest simplest best way to build a command line app, if you like to migrate it to java and make a GUI you are welcome to do so, otherwise you may stick to the C and add functions
[MENTION=245343]Sarah1331[/MENTION] the function ReadSection does this, we can just add another option the argument and call it with the proper parameters to do what you'd like.
01-21-2013
08:46 AM
I have no idea on how to compile such code but if I can help in anyway let me know
Sent from my iPhone 5 using Tapatalk
01-21-2013
08:50 AM
This is good, hope an executable application will be released, to help validating the dump.
although i think i will always go back to HxD to make sure
01-21-2013
08:54 AM
Sent from my iPhone 5 using Tapatalk
01-21-2013
09:15 AM
ATM I can only compile it for you for Mac you'd have to wait tomorrow that I get my hand on a PC, otherwise it's really simple to compile:
gcc sourcefile.c -o appname -lcrypto
01-21-2013
09:20 AM
Would be grateful if you compile for my "noob" abilities
Sent from my iPhone 5 using Tapatalk
01-21-2013
09:53 AM
Working a treat on my RasPi, thanks a lot!
(Tested on known bad dump, warns not to flash)
01-21-2013
09:53 AM
wow. it has been a while since i actually saw such a clean C code
if that makes [MENTION=131344]euss[/MENTION] happy then i guess it'll make a decent terminal app to use :D
01-21-2013
09:53 AM
Here you go for a compiled version on Mac: www dot sendspace dot com/file/1sdabq
I'm looking at cross compile stuff now and it hurts my brain ...
01-21-2013
10:16 AM
http://dl.dropbox.com/u/35197530/nor...checker.tar.gz
I have added a Makefile for it for linux and put it as a binary application, if it's ok with the OP
01-21-2013
12:27 PM
[MENTION=202826]zecoxao[/MENTION] no problem you are welcome to do so, thanks for your support.
01-21-2013
04:19 PM
Well written, well structured coding.
10/10
A
01-21-2013
11:50 PM
Some notes for anyone who want to compile it but have no idea about it:


There are many solution out there but as I only wrote and tested it on a POSIX platform I'd stick to it.
For windows user:
I suggest to install cygwin with developer packages.
You can then compile with the command:
gcc sourcefile.c -o appname -lcrypto
to run it from cygwin shell just type ./appname
to run it from the dos you'll need to copy required cygwin dll
you can also use the tgz from [MENTION=202826]zecoxao[/MENTION] and do a make as on any other POSIX system within cygwin of course.
For Linux users:
well you know that already :P
For Mac users:
I hope you know that too... otherwise the simplest is to install xcode in order to have gcc and all includes then follow same steps as in cygwin.
For any other POSIX platform:
I'm sure you know that already.
For Amiga users:
go with gcc, google will tell you
For Atari ST users:
I suggest you to exchange it with an Amiga...:D, arf of course yes you can find something.
Any other exotic platform: you'll have to find by yourself
[MENTION=245343]Sarah1331[/MENTION], I've added especially for you :P the -D option some examples below under windows and cygwin:
$ ./NORDumpTool.exe nordump.bin -D 0x820 0x10 A
******************************
* NOR Dump Tool *
******************************
Open source project aimed to help to validate PS3 NOR dumps
At the moment (January 2013) the code is probably able
to give you a validation status of roughly 90%!?
It's anyway better to do additionnal checking by your own,
unless the code of this tool is fully validated by experts!!!
Section: Start at '0x00000820' of size '0x10': read metldr
$ ./NORDumpTool.exe nordump.bin -D 0x820 0x10 H
******************************
* NOR Dump Tool *
******************************
Open source project aimed to help to validate PS3 NOR dumps
At the moment (January 2013) the code is probably able
to give you a validation status of roughly 90%!?
It's anyway better to do additionnal checking by your own,
unless the code of this tool is fully validated by experts!!!
Section: Start at '0x00000820' of size '0x10': read 6D65746C647200000000000000000000
Binaries:
Windows with cygwin dlls: www dot sendspace dot com/file/d74gcd
Linux: [MENTION=202826]zecoxao[/MENTION], I'll be grateful again if you proceed with it
Mac: .... wait few hours...
Note: I hope this code is clear enough to be evolved in treating NAND dump as well, I'll have a look later if no one does it first, but I'll then have to put my hand on a NAND dump to try it.
01-22-2013
04:12 AM
what developer package i need to install for cygwin?
sorry noob question
01-22-2013
05:09 AM
Nice work!
Made a native win32 version (linked statically, nothing else required):
http://www.mediafire.com/?cfp29xc0xgbs5dk
-- judges
Btw, I guess "IDPSTargetID = malloc(2);" should be "IDPSTargetID = malloc(3);"...
01-22-2013
05:21 AM
but always check your Dump with HxD i feel more comfortable that way.
but this is a good App
thanx [MENTION=41726]anaria[/MENTION] for the code
thanx [MENTION=193105]judges[/MENTION] for the compiled version
01-22-2013
05:56 AM
[MENTION=250000]MD Krie[/MENTION], I'm not sure of the exact minimum required, it should be around packages like gcc-core, g++, openssl.

If you have enough space (like about 200MB) just install the category Devel, otherwise you can select it to be installed then go in to remove other compiler not related to C/C++ like gcc-java/ada/fortran... mingw is not required either.
[MENTION=193105]judges[/MENTION], exact I've counted 1 byte instead of 2
01-22-2013
05:59 AM
Your a good man thank you
Sent from my iPhone 5 using Tapatalk
01-22-2013
07:06 AM
thanks to all people for give us some more pratical tools

great work
01-23-2013
05:48 AM
I've edited the first post with a new code, I've added the checking of area where FF or 00 are supposed to be found.
Use the option "-F" to execute it on a dump.
It's also part of the default options, which means that if you run this on a dump with no options you will check its statistics, generic data found in a dump, per console information and area filled with 00 and FF.
Apologies if I did not take time to compile it for you.
01-23-2013
06:50 AM
Please don't take it as an attack I love the app
Sent from my iPhone 5 using Tapatalk
01-23-2013
07:46 AM
thanks so much
01-23-2013
07:49 AM
http://www.mediafire.com/?b3g679tg5hvzf5t
-- judges
01-23-2013
08:07 AM
And yes you are right this is going to be better than some stuff I saw on the web out there, just kidding :P
Ok I'll increase the percentage of trust, I'd say now it has reach a good 97%, but even after further updates I'll not go over 99.9% unless I receive the green light from the big bosses, and get validation from the many of us knowing about properly validating a NOR.
And then I promise to make it THE app
Again if anyone want to see some additional feature, just ask and I'll see what can be done, but you are anyway welcome to give an update yourself and that's one of the reason for it to be open.
01-23-2013
08:22 AM
I have swapped face off deadbeef for deadeeef and it didn't detect it just to point it out
Sent from my iPhone 5 using Tapatalk
01-23-2013
08:33 AM
01-23-2013
08:36 AM
Am only trying to help I changed to face off deaeeeef and it flagged it
But deadeeee it doesn't detect either
Sent from my iPhone 5 using Tapatalk
01-23-2013
09:11 AM
Code fixed in ReadSection, I don't know why I wanted to have both quartet of one byte to be fail to raise it ans not just one of them...
My mistake was about the use of a logical and instead of a or.
Thx again [MENTION=245343]Sarah1331[/MENTION], btw I'll stick it to 90% as you see I like bugs :P
To all, do not hesitate to push this to the limit, I didn't share it to receive roses but to be sure it will profit to all, and also aas you may know it's always better to have someone else check your on work for validation, at least that's what we do when building test solution in my company.
01-23-2013
09:25 AM
Is that because I am on Windows 7 64bit?
I did try changing the compatibility in properties, and run as admin.
01-23-2013
09:26 AM
Sent from my iPhone 5 using Tapatalk
01-23-2013
09:38 AM
Any other way I try the window just flashes and disappears.
01-23-2013
09:39 AM
Guys, you may want to use it only starting version 0.9.4 as previous have a serious lack of byte comparison.
01-23-2013
09:44 AM
I have
Check.exe dump.bin
Pause
From script obviousley
Sent from my iPhone 5 using Tapatalk
01-23-2013
10:05 AM
You may or may not be familiar with gcc, but if you are using windows, I really suggest you to install cygwin, then you can easily compile and execute it, you may even be able in that case to quickly try changes in the code and see what it does.
Again I did code it on my Mac and only used a PC with cygwin to rework it and test it.
01-23-2013
10:57 AM
thx for the "open source" source code [MENTION=41726]anaria[/MENTION]...great idea and tool

also thx to judges for the compiled build, as this code compile noob could not get it compiled even with the ease HOWTO
error i was getting on "full Cygwin" =
01-23-2013
11:12 AM
http://www.mediafire.com/?wbl3wdm1df4cs16
-- judges
************* [ - Post Merged - ] *************
01-23-2013
11:59 AM
01-23-2013
12:01 PM
01-23-2013
12:08 PM
01-23-2013
12:17 PM
from wikipedia:
Cygwin is a Unix-like environment and command-line interface for Microsoft Windows. Cygwin provides native integration of Windows-based applications, data, and other system resources with applications, software tools, and data of the Unix-like environment. Thus it is possible to launch Windows applications from the Cygwin environment, as well as to use Cygwin tools and applications within the Windows operating context.
You can't use like win ".exe" you must use "command prompt" in windows
01-23-2013
12:22 PM
01-23-2013
12:27 PM
look my screenshot here
http://www.ps3hax.net/showpost.php?p...3&postcount=22
push shift and right button mouse inside the folder (on blank space) and open command prompt here,after then write:
anaria_norvalidator.exe namedump.bin
01-23-2013
12:30 PM
damn..i'm a noob..nvm...thx again
01-23-2013
12:37 PM
************* [ - Post Merged - ] *************
Ok I have checked a few bad dumps I had on my laptop with this tool and I have checked good ones and this thing really seems to work. So is this safe to use or is this still to early to confirm safe and should I keep checking dumps manually?
01-23-2013
01:13 PM
01-23-2013
01:37 PM
This is great!! You're the best, hope it becomes THE 'official' application to check dumps
01-23-2013
02:46 PM
There are probably more little bugs and wiggle room for extra detection and rejection improvement. Even so, it already seems good enough (in quality) as any of the other verification tools that are officially referred to at the PS3DevWiki.
Here is a list of possible next steps you might consider:
* Add your tool to "other verification tools" section of "Verifying FLash Dumps" PS3 wiki page. Or indeed as one of the primary tools!
* If you want to propose the changes, but without it being official just yet. Then you can always add your stuff temporarily into the "Talk" Tab until other Wiki people will formally approve it.
* You might have no suitable place to permanmently host the download (and your latest source code too!). This is important to have a good permanment link for the official Wiki to point to. BwE might be able to offer your tool a coveted place next to the other verification tools on his website (betterwayelectronics dot com). You should really ask him about that.
* You can talk to BwE and many of the others who oversee the official PS3DevWiki by logging in to the #ps3downgrade channel. But you must first log in to EFNet irc servers!! (otherwise you will be alone and see nobody on there).
* Stay logged in to irc and collect for people posting their failed dumps. With a failed dump you can improve upon the rejection capabilities of your tool. For example to detect bad address lines.
* Command line switches should be added in the --help.
* Maybe Judges' win32 build are worth to include too. If it doesn't depend on Cygwin. Otherwise write that as a dependency requirement for windows, i suppose ? Or maybe BwE can help you convert this to a proper standalone Windows binary for you. I have no idea.
And 1 Last request: This is an important issue, so I hope you will consider it.
* Our Problem: All these verification tools is they are great: but they are not trusted. None of us users know how much of the verification they actually are doing. Where? In that same table we all go to. Help us know exactly how comprehensive your tool is. And build a stronger trust of the automation when using it.
* Suggestion: Go back to the big table of offsets in PS3DevWiki. And add a new column to the very right of that table. Make the title of the column the same name of your cmd line tool "NORDumpTool".
* For each row (offset location) in that list, if your automated tool checks for it, then to make a [X] or brief notes to indicate it is supported. We want to clearly see exactly which of the offsets that we usually manually check for - were also automatically checked for. Then we can manually check ourselves any remaining (not supported or newly added) offset.
And thanks again!
01-23-2013
10:57 PM
I woke up with good surprises today, thanks everyone for giving this a shot and your positive feedback and comment.
[MENTION=249897]afzoo3hax[/MENTION], as Papa pig says "I'm a kind of expert at these things", sorry for the reference my son is addicted to Peppa pig and Shaun the sheep :P.
Well even at work documentation is not my favorite thing but there I have no choice than writing some.
I'll put feet in the wiki a bit later, what I'll try to do first is a short notice on how to use it as a end user and document what it does or not as per reference of the wiki.
as for the "--help" I've been lazy in including this I instead check if no arguments are given which lead to this:
******************************
* NOR Dump Tool *
******************************
Open source project aimed to help to validate PS3 NOR dumps
At the moment (January 2013) the code is probably able
to give you a validation status of roughly 90%!?
It's anyway better to do additional checking by your own,
unless the code of this tool is fully validated by experts!!!
Usage: ./NORDumpTool NorFile.bin (Options)
Option: -P : Give percentage of bytes
Option: -G : Check PS3 Generic information
Option: -C : Check and display perconsole information
Option: -F : Check areas filled with '00' or 'FF'
Option: -S FolderName : Split some NOR section to folder 'FolderName'
Option: -M Start Size : Run MD5 sum on file from 'Start' for 'Size' long
Option: -E FileName Start Size : Extract specific NOR Section from 'Start' for 'Size' long
Option: -D Start Size H/A : Display a specific NOR Section from 'Start' for 'Size' long,
use H or A for Hexa or ASCII
By default -P -G -C and -F will be applied if no option is given
what I'm going to do in short term is to put it here:
https://github.com/anaria28/NOR-Dump-Tool
Then I'll write down a more complete readme.
But ATM I'm still living in China for few more weeks/months, and as you may know ... well Fvcking Internet monitoring...
01-24-2013
12:34 AM
[MENTION=41726]anaria[/MENTION], i can see you have natural C skills. good luck with that work, but, my guess is that your Dump Checker will be wiki's natural auto tool in a few weeks
01-24-2013
02:47 AM
But again its great
Sent from my iPhone 5 using Tapatalk
01-24-2013
06:45 AM
First post updated.
Version 0.9.5 is out : Source + bin made with MinGW32.
Please confirm me if the bin is running properly in the DOS as it's my first try with this, I hope it's ok because I spend few hours downloading and installing MinGW + MSYS.
Also, please do not use any binary based on a source lower than 0.9.4.
Cheers!!!
01-24-2013
07:44 AM
************* [ - Post Merged - ] *************
01-24-2013
08:57 AM
mirror program 0.9.5+dll fullpack
http://www.mediafire.com/?r9i4zts9tirwap4
01-24-2013
10:28 AM
[MENTION=41726]anaria[/MENTION] man this is a great job


thank you so much
and thanks for every one that's trying to make this scene simpler and cleaner
i feel so thankful for all of those ppl that kicks $ony each day, hope the best for you guys
01-24-2013
11:25 AM
-- judges
01-24-2013
12:04 PM
great job [MENTION=41726]anaria[/MENTION], thanks!
01-24-2013
01:15 PM
any chance of if it failes at any part to go to a YOUR DUMP HAS FAILED
as when testing deadeeef rather than deadbeef it shows error but at end it says
seems good but evedu............................
or with option to repair generic
Then again if generic is bad who knows..
01-24-2013
01:24 PM
it would be beautiful to implement it with WxWigets
wish i knew how
01-24-2013
01:43 PM
PS3HaX Memberanariahas compiled a code to help... [Read More]
01-24-2013
08:31 PM
Big days ahead!
I'll work more on the reliability and robustness of for a time.
For now I'm adding some more checking in revocation and ros areas for unique bytes, I'll rework the warning messages a bit as well.
And regarding binaries, I'll check more about MinGW32 about static options, I'm not sure what I did yesterday but I have different behaviour between the Mac and Windows version... But again all of you are welcome to fork it, port it to another language make a GUI, whatever you want, but please keep it open to ensure everyone can fully benefit of your experience, it's for me very frustrating to have a tool doing things on my files without knowing what is under the hood.
See you then, and thanks again to all of you who are testing/reporting/giving advices ...
01-24-2013
11:12 PM
No really I'm grateful for your tests and feedback, appreciate that a lot.
I'll need you to give me more detail, you may PM me part of the output and what you would expect to see ( I sware I will not give your secrets to others :D)
I've used the RSOD dump from ps3devwiki and changed the FACE0FF DEADBEEF see what it says to me:
******************************
* NOR Dump Tool *
******************************
Version 0.9.6
Open source project aimed to help to validate PS3 NOR dumps
At the moment (January 2013) the code is probably able
to give you a validation status of roughly 95%!?
It's anyway better to do additional checking by your own,
unless the code of this tool is fully validated by experts!!!
******************************
* Statistics *
******************************
Bytes '00' found 4414254 times, 26.31% Good
Bytes 'FF' found 1766242 times, 10.53% Too High
Other bytes found 44455 times maximum, 0.26% Good
******************************
* Generic Data *
******************************
Section: Flash Magic Number : read 000000000FACE0FF00000000DEADDEEF ! mismatch pattern '000000000FACE0FF00000000DEADBEEF' !
Some checking were not successful.
You may need to check further your dump.
But fortunately for the Generic section of the NOR it may be fixed.
******************************
* Per Console Data *
******************************
Section: mtldr size and rev : read 00000E8943B6EF4AE20F7400C8809E53
Section: mtldr size and pcn : read 00000E89Censored :P
Section: EID0 - IDPS : read Censored :P
Section: EID0 static : read 0012000B
Section: EID0 pcn : read Censored :P
Section: EID3 - ckp_mgt_id : read Censored :P
Section: EID3 static : read 000100D0
Section: EID3 pcn : read Censored :P
Section: EID5 - IDPS : read Censored :P
Section: EID5 static : read 00120730
Section: EID5 pcn : read Censored :P
Section: PS3 MAC Address : read Censored :P
Section: cISD1 - CID : read Censored :P
Section: cISD1 - eCID : read Censored :P
Section: cISD1 - board_id : read Censored :P
Section: cISD1 - kiban_id : read Censored :P
Section: cISD1 -0x3F0A4 Data: read 007900790106
Section: cISD1 -0x3F0B0 Data: read 0002001100020012
Section: cISD1 - ckp_mgt_id : read Censored :P
Section: cvtrm - pck/puk : read Censored :P
Section: HDD information : read TOSHIBA Censored :P
Section: PS3 Serial Number : read Censored :P
Section: Bootldr hdr and rev: read 00002EB392AC2C2157A577C84DDFECDB
Section: Bootldr hdr and pcn: read 00002EBCensored :P
Section: cvtrm hdr bis : read FFFFFFFF ! mismatch pattern '5654524D' !
PS3 SKU : CECHLxx(VER-001) minimum FW : 2.45 (item 29 in list)
Some checking were not successful.
You may need to check further your dump.
Be cautious, flashing this one may lead to a brick of your PS3.
******************************
* Area filled with 00 or FF *
******************************
debug: trvk_pkg0Size:'0x000002E0' trvk_pkg0FilledSize:'0x00000D00'
debug: ros0Size:'0x0053CC88' ros0FilledSize:'0x001C3378'
Succesfully checked 'flashformat' From '0x00000210' size: '0x000001F0' full of '0xFF'
Succesfully checked 'asecure_loader' From '0x0000F110' size: '0x0001FEF0' full of '0x00'
Succesfully checked 'eEID' From '0x00030DD0' size: '0x0000E230' full of '0xFF'
Succesfully checked 'cISD' From '0x0003F270' size: '0x00000590' full of '0xFF'
Succesfully checked 'cCSD' From '0x0003F850' size: '0x000007B0' full of '0xFF'
Succesfully checked 'trvk_prg0' From '0x00040FF0' size: '0x0001F010' full of '0xFF'
Succesfully checked 'trvk_prg1' From '0x00060FF0' size: '0x0001F010' full of '0xFF'
Succesfully checked 'trvk_pkg0' From '0x00080FF0' size: '0x0001F010' full of '0xFF'
Succesfully checked 'trvk_pkg1' From '0x000A0FF0' size: '0x0001F010' full of '0xFF'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F20040' size: '0x000001C0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F20240' size: '0x0001FDC0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F40030' size: '0x0001FFD0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F60060' size: '0x000093A0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F69530' size: '0x000006D0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F69C00' size: '0x00015400' full of '0xFF'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F80030' size: '0x0001FFD0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA0060' size: '0x000093A0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA9530' size: '0x000006D0' full of '0x00'
Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA9C00' size: '0x00015400' full of '0xFF'
Succesfully checked 'bootldr' From '0x00FEEB70' size: '0x00011490' full of '0xFF'
Seems good, but you'd eventually like to be carefull!
I've chosen to display such message "Some checking were not successful.
You may need to check further your dump.
But fortunately for the Generic section of the NOR it may be fixed." for any error in the generic part, because it can be fixed wihtout the need to decrypt/encrypt anything as in opposition of the per console area and as they are generic they can be replaced by existing information, of course if you know what you are doing it's better.
At the end what I understand, is that you'd like to see in the final report one and unique message giving a global PASS/FAIL to this, no?
01-25-2013
01:47 AM
Thank you for this most useful tool, I'm glad my painstaking reverse engineering and documentation came in handy for someone.
I would like to upload this to the wiki's download section if you don't mind.
Also, just a comment on checking the 0x00 and 0xFF areas, I have a few samples where areas that usually are 0xFF are indeed 0x00. I am not sure what conditions cause this but I assume it's from different boundaries from previous firmwares.
Basically, areas that are 0xFF will be so because NOR flash memory in it's "erased" state contains all 1's, a write operation is able to change a 1 to a 0 however a block erase operation is required to revert 0's to 1's. Areas that are 0x00 are simply where blank data has been written over an erased block, usually to fill up a boundary.
As for a final report, it would be nice to give a pass or warnings on what specific parts of flash are incorrect.
01-25-2013
02:11 AM
I understand the generic section can be fixed am just not too sure how good of an idea it is as your dump should have no errors if you have an error anywhere I'd trash it
I use a 25xx dump and create errors to test your checker i feel if an error has occurred it should halt and "Your dump is bad" at any point even if it could be repaired
As most users won't read anything except seems good but you would eventually want to check
As let's be fair if they have a error in generic data something in the wiring / clip is wrong
Maybe for a passed dump
Your dump is valid
You may still want to do more tests
But for any fail even the smallest id flag it as junk
Sent from my iPhone 5 using Tapatalk
01-25-2013
03:15 AM
Thank you, compiled for Mac and finally checked my dump.
Appears to be ok as per this utility:
******************************
* Generic Data *
******************************
Seems good, but you'd eventually like to be carefull!
01-25-2013
05:30 AM
C:\Users\administrator\Desktop\anaria_norvalidator 0.9.5>NORDumpTool.exe bkpps3.bin
******************************
* NOR Dump Tool *
******************************
Version 0.9.5
Open source project aimed to help to validate PS3 NOR dumps
At the moment (January 2013) the code is probably able
to give you a validation status of roughly 90%!?
It's anyway better to do additional checking by your own,
unless the code of this tool is fully validated by experts!!!
******************************
* Statistics *
******************************
Bytes '00' found 3367078 times, 20.07% Good
Bytes 'FF' found 1754725 times, 10.46% Good
Other bytes found 48187 times maximum, 0.29% Good
Not treating byte reversed dump at the moment.
C:\Users\administrator\Desktop\anaria_norvalidator 0.9.5>
and with a broken one i get a lot more information. is this correct?
01-25-2013
05:38 AM
01-25-2013
05:59 AM
Of course, please do upload it it's my pleasure, if this is confirmed to definitely be useful I hope it can profit to all of us.
You exactly confirm what I was scared of, this seems to be the problem in ros/revocation ...
This means that I'll have to find a routine to check these areas for both cases, in which case I should check if we have only 00 or only FF but never other value.
I worked on below draft but it cannot be valid in all cases.
uint8_t CheckFilledData (FILE *FileToRead, uint32_t *PercentCheck){ int Cursor=0; int Cursor2=0; uint32_t SizedCheck=0; uint8_t Status=EXIT_SUCCESS; uint8_t Status2=EXIT_SUCCESS; uint32_t bootldrSize; uint32_t bootldrFilledSize; uint32_t metldrSize; uint32_t metldrFilledSize; uint32_t trvk_prg0Size; uint32_t trvk_prg0FilledSize; uint32_t trvk_prg1Size; uint32_t trvk_prg1FilledSize; uint32_t trvk_pkg0Size; uint32_t trvk_pkg0FilledSize; uint32_t trvk_pkg1Size; uint32_t trvk_pkg1FilledSize; uint32_t ros0Size; uint32_t ros0FilledSize; uint32_t ros1Size; uint32_t ros1FilledSize; uint32_t LastFileTOC; uint32_t LastFileOffset; uint32_t LastFileSize; char *DataRead; char *metldrOffset0; char *bootldrOffset0; char *trvk_prg0Offset0; char *trvk_prg1Offset0; char *trvk_pkg0Offset0; char *trvk_pkg1Offset0; // char *ros0Offset0; // char *ros1Offset0; //uint32_t ros0Offset0; //uint32_t ros1Offset0; DataRead = malloc(0x10); metldrOffset0 = malloc(5); bootldrOffset0 = malloc(5); trvk_prg0Offset0 = malloc(5); trvk_prg1Offset0 = malloc(5); trvk_pkg0Offset0 = malloc(5); trvk_pkg1Offset0 = malloc(5); // ros0Offset0 = malloc(5); // ros1Offset0 = malloc(5); printf("******************************\n"); printf("* Area filled with 00 or FF *\n"); printf("******************************\n"); GetSection(FileToRead, SectionTOC[asecure_loader].Offset+0x42, 0x02, HexaType, metldrOffset0); metldrSize = (strtol(metldrOffset0,NULL,16))*0x10+0x40; metldrFilledSize = 0x2F000 - metldrSize - SectionTOC[asecure_loader].Offset - 0x40; GetSection(FileToRead, SectionTOC[bootldr].Offset+0x02, 0x02, HexaType, bootldrOffset0); bootldrSize = (strtol(bootldrOffset0,NULL,16))*0x10+0x40; bootldrFilledSize = 0x1000000 - bootldrSize - SectionTOC[bootldr].Offset; GetSection(FileToRead, SectionTOC[trvk_prg0].Offset+0x0E, 0x02, HexaType, trvk_prg0Offset0); trvk_prg0Size = strtol(trvk_prg0Offset0,NULL,16); trvk_prg0FilledSize = 0x040FF0 - trvk_prg0Size - SectionTOC[trvk_prg0].Offset - 0x10; printf("debug: trvk_prg0Size:'0x%08X' trvk_prg0FilledSize:'0x%08X' \n",trvk_prg0Size,trvk_prg0FilledSize); GetSection(FileToRead, SectionTOC[trvk_prg1].Offset+0x0E, 0x02, HexaType, trvk_prg1Offset0); trvk_prg1Size = strtol(trvk_prg1Offset0,NULL,16); trvk_prg1FilledSize = 0x060FF0 - trvk_prg1Size - SectionTOC[trvk_prg1].Offset - 0x10; printf("debug: trvk_prg1Size:'0x%08X' trvk_prg1FilledSize:'0x%08X' \n",trvk_prg1Size,trvk_prg1FilledSize); GetSection(FileToRead, SectionTOC[trvk_pkg0].Offset+0x0E, 0x02, HexaType, trvk_pkg0Offset0); trvk_pkg0Size = strtol(trvk_pkg0Offset0,NULL,16); trvk_pkg0FilledSize = 0x080FF0 - trvk_pkg0Size - SectionTOC[trvk_pkg0].Offset - 0x10; printf("debug: trvk_pkg0Size:'0x%08X' trvk_pkg0FilledSize:'0x%08X' \n",trvk_pkg0Size,trvk_pkg0FilledSize); GetSection(FileToRead, SectionTOC[trvk_pkg1].Offset+0x0E, 0x02, HexaType, trvk_pkg1Offset0); trvk_pkg1Size = strtol(trvk_pkg1Offset0,NULL,16); trvk_pkg1FilledSize = 0x0A0FF0 - trvk_pkg1Size - SectionTOC[trvk_pkg1].Offset - 0x10; printf("debug: trvk_pkg1Size:'0x%08X' trvk_pkg1FilledSize:'0x%08X' \n",trvk_pkg1Size,trvk_pkg1FilledSize); //at ros0 offset + 0x14: nb of files, (nb of files) * 0x30 = size of TOC GetSection(FileToRead, SectionTOC[ros0].Offset+0x14, 0x04, HexaType, DataRead); LastFileTOC = (strtol(DataRead,NULL,16))*0x30-0x10; //last file position found at (ros0 offset) + (size of TOC) - 0x10 GetSection(FileToRead, SectionTOC[ros0].Offset+LastFileTOC, 0x08, HexaType, DataRead); LastFileOffset = strtol(DataRead,NULL,16); //+ 0x8 for its size. GetSection(FileToRead, SectionTOC[ros0].Offset+LastFileTOC+0x08, 0x08, HexaType, DataRead); LastFileSize = strtol(DataRead,NULL,16); ros0Size = 0x10 + LastFileOffset + LastFileSize; //From end of last file pos + size to next section - 0x10 : full of 00 //last 0x10 bytes are full of FF !!?? ros0FilledSize = SectionTOC[ros1].Offset - SectionTOC[ros0].Offset - ros0Size -0x10; //printf("debug: ros0Size:'0x%08X' ros0FilledSize:'0x%08X' \n",ros0Size,ros0FilledSize); //at ros1 offset + 0x14: nb of files, (nb of files) * 0x30 = size of TOC GetSection(FileToRead, SectionTOC[ros1].Offset+0x14, 0x04, HexaType, DataRead); LastFileTOC = (strtol(DataRead,NULL,16))*0x30-0x10; //last file position found at (ros1 offset) + (size of TOC) - 0x10 GetSection(FileToRead, SectionTOC[ros1].Offset+LastFileTOC, 0x08, HexaType, DataRead); LastFileOffset = strtol(DataRead,NULL,16); //+ 0x8 for its size. GetSection(FileToRead, SectionTOC[ros1].Offset+LastFileTOC+0x08, 0x08, HexaType, DataRead); LastFileSize = strtol(DataRead,NULL,16); ros1Size = 0x10 + LastFileOffset + LastFileSize; //From end of last file pos + size to next section - 0x10 : full of 00 //last 0x10 bytes are full of FF !!?? ros1FilledSize = SectionTOC[cvtrm].Offset - SectionTOC[ros1].Offset - ros1Size -0x10; //printf("debug: ros1Size:'0x%08X' ros1FilledSize:'0x%08X' \n",ros1Size,ros1FilledSize); struct Sections SectionFilled[] = { {"flashformat", 0x000210, 0x01F0, HexaType+DisplayFailOnly, 1, "FF"}, {"asecure_loader", SectionTOC[asecure_loader].Offset+0x40+metldrSize, metldrFilledSize, HexaType+DisplayFailOnly, 1, "00"}, {"eEID", 0x030DD0, 0xE230, HexaType+DisplayFailOnly, 1, "FF"}, {"cISD", 0x03F270, 0x0590, HexaType+DisplayFailOnly, 1, "FF"}, {"cCSD", 0x03F850, 0x07B0, HexaType+DisplayFailOnly, 1, "FF"}, // need to investigate size at trvk_prg0 offset + 0x0E // until 40FF0 : 00 // from 40FF0 to next section : FF {"trvk_prg0", SectionTOC[trvk_prg0].Offset+0x10+trvk_prg0Size, trvk_prg0FilledSize, HexaType+DisplayFailOnly, 1, "00"}, {"trvk_prg0", 0x040FF0, 0x01F010, HexaType+DisplayFailOnly, 1, "FF"}, {"trvk_prg1", SectionTOC[trvk_prg1].Offset+0x10+trvk_prg1Size, trvk_prg1FilledSize, HexaType+DisplayFailOnly, 1, "00"}, {"trvk_prg1", 0x060FF0, 0x01F010, HexaType+DisplayFailOnly, 1, "FF"}, {"trvk_pkg0", SectionTOC[trvk_pkg0].Offset+0x10+trvk_pkg0Size, trvk_pkg0FilledSize, HexaType+DisplayFailOnly, 1, "00"}, {"trvk_pkg0", 0x080FF0, 0x01F010, HexaType+DisplayFailOnly, 1, "FF"}, {"trvk_pkg1", SectionTOC[trvk_pkg1].Offset+0x10+trvk_pkg1Size, trvk_pkg1FilledSize, HexaType+DisplayFailOnly, 1, "00"}, {"trvk_pkg1", 0x0A0FF0, 0x01F010, HexaType+DisplayFailOnly, 1, "FF"}, {"ros0", SectionTOC[ros0].Offset + ros0Size, ros0FilledSize, HexaType+DisplayFailOnly, 1, "00"}, // need to investigate {"ros0", SectionTOC[ros0].Offset + ros0Size + ros0FilledSize, 0x10, HexaType+DisplayFailOnly, 1, "FF"}, // need to investigate {"ros1", SectionTOC[ros1].Offset + ros1Size, ros1FilledSize, HexaType+DisplayFailOnly, 1, "00"}, // need to investigate {"ros1", SectionTOC[ros1].Offset + ros1Size + ros1FilledSize, 0x10, HexaType+DisplayFailOnly, 1, "FF"}, // need to investigate //{"cvtrm", 0xECxxxx, 0x0xxxxx, HexaType+DisplayFailOnly, 1, "00"}, // need to investigate {"CELL_EXTNOR_AREA", 0xF20040, 0x01C0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xF20240, 0x01FDC0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xF40030, 0x01FFD0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xF60060, 0x93A0, HexaType+DisplayFailOnly, 1, "00"}, // need to calculate the correct start, size seems to be found at 0xF60000E on 2 bytes ? {"CELL_EXTNOR_AREA", 0xF69530, 0x06D0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xF69C00, 0x015400, HexaType+DisplayFailOnly, 1, "FF"}, {"CELL_EXTNOR_AREA", 0xF80030, 0x01FFD0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xFA0060, 0x93A0, HexaType+DisplayFailOnly, 1, "00"}, // need to calculate the correct start, size seems to be found at 0xFA0000E on 2 bytes ? {"CELL_EXTNOR_AREA", 0xFA9530, 0x06D0, HexaType+DisplayFailOnly, 1, "00"}, {"CELL_EXTNOR_AREA", 0xFA9C00, 0x015400, HexaType+DisplayFailOnly, 1, "FF"}, {"bootldr", SectionTOC[bootldr].Offset+bootldrSize, bootldrFilledSize, HexaType+DisplayFailOnly, 1, "FF"}, {NULL, 0, 0, 0, 0, NULL} }; while (SectionFilled[Cursor].name!=NULL) { for (Cursor2=0;Cursor2<SectionFilled[Cursor].Size;Cursor2++) { if ((Status2 = ReadSection(SectionFilled[Cursor].name , FileToRead , SectionFilled[Cursor].Offset+Cursor2 , 1 , SectionFilled[Cursor].DisplayType , SectionFilled[Cursor].Check , SectionFilled[Cursor].Pattern))) { printf ("Error at '0x%08X\n",SectionFilled[Cursor].Offset+Cursor2); } } if (!Status2) { printf ("Succesfully checked '%s' From '0x%08X' size: '0x%08X' full of '0x%s'\n",SectionFilled[Cursor].name,SectionFilled[Cursor].Offset, SectionFilled[Cursor].Size, SectionFilled[Cursor].Pattern); } else { printf ("Some error occured when checking '%s'\n",SectionFilled[Cursor].name); } Cursor++; Status = Status | Status2; Status2 = EXIT_SUCCESS; SizedCheck = SizedCheck + SectionFilled[Cursor].Size; } //printf("debug: SectionTOC[trvk_prg0].Offset:'0x%08X' SectionTOC[trvk_prg0].Offset+0x10+trvk_prg0Size:'0x%08X' trvk_pkg0FilledSize:'0x%08X'\n",SectionTOC[trvk_prg0].Offset,SectionTOC[trvk_prg0].Offset+0x10+trvk_prg0Size,trvk_pkg0FilledSize); *PercentCheck = SizedCheck; free(DataRead); free(metldrOffset0); free(bootldrOffset0); free(trvk_prg0Offset0); free(trvk_prg1Offset0); free(trvk_pkg0Offset0); free(trvk_pkg1Offset0); //free(ros0Offset0); //free(ros1Offset0); return Status; }At the same time I may include a percentage indicating on how much exactly of the NOR has been analyzed.
BTW it is for now exactly checking 30.56% of the NOR's bytes.
[MENTION=159161]Arcidodo[/MENTION] & [MENTION=203592]nzie[/MENTION], Yep I was too lazy to treat both cases, also I was thinking that reversing is done fast and easily with good tools.
As I mentioned before, I'll do the improvement as far as I can go then document it in accordence to the wiki.
And then I'll have to do 2 things:
- port it for NAND
- evolve it for both bytes order
and I don't know what else...
01-25-2013
09:01 AM
maybe of topic * NAND dump remaping for bad blocks ?
it's a good idea :P but maybe hard i don't know ..
but thanks [MENTION=41726]anaria[/MENTION] for the great job u did
01-25-2013
01:23 PM
Sent from my iPhone 5 using Tapatalk
01-25-2013
01:28 PM
i think it is good idea, it can be done but again i do not know how difficult it would be.
01-25-2013
06:59 PM
otherwise its a bit pointless moving it there if it cannot be accessed.
^^^dont take that as a piss take or anything. its just a question
01-26-2013
09:38 AM
I'm having an error when running the program , any ideas ? Win 7 , 32bit
01-26-2013
10:03 AM
or did you compile it? then did you change anything in the code?
01-26-2013
11:18 AM
It's version 0.9.5 linked to in the first post
01-26-2013
11:39 AM
Sent from my iPhone 5 using Tapatalk
01-26-2013
11:57 AM
Eventually DLLs are present but not the correct version?
01-26-2013
12:46 PM
Version 0.9.4 works for me . Whatever you changed between 0.9.4 and 0.9.5 causes it not to work on some systems .
01-26-2013
06:03 PM
01-26-2013
07:05 PM
Would you agree if I port this to Java or C++ (Havn't chose yet) and make a GUI for it
?
01-26-2013
07:42 PM
[MENTION=41726]anaria[/MENTION] made it an open source and he welcomed anyone that wants to help building the perfect tool
01-26-2013
08:13 PM
Nice

So what do you guys suggest?
C++ with Qt or Java?
I need a project and when I think about it, I've done nothing for PS3 Scene, times to welcome me a bit more
01-26-2013
09:08 PM
I've tried both under cygwin + MingW32 on a Windows 7 64 bits and did not meet this. But definitely if a bug is present I'd be happy to get rid off.
As I wrote and wrote my code few times, so I cannot exclude to have missed something, but the code is open and I'm not afraid to get remarks on it as lon as it permit to make it better and make all of us happy.
Do not read me wrong I really welcome all feedback and not comlaining about any posts.
Again, I encourage anyone using windows who want to simply install cygwin or MinGW32/MSYS and try to compile it to learn/modify/investiguate whatever you want.
Below you'll see the output of current draft launched under cygwin but I have a lot more to include.
$ time ./NORDumpToolcygwin.exe Broken.bin ****************************** * NOR Dump Tool * ****************************** Version 0.9.6 Open source project aimed to help to validate PS3 NOR dumps At the moment (January 2013) the code is probably able to give you a validation status of roughly 95%!? It's anyway better to do additional checking by your own, unless the code of this tool is fully validated by experts!!! ****************************** * Statistics * ****************************** Bytes '00' found 4414253 times, 26.31% Good Bytes 'FF' found 1766242 times, 10.53% Too High Other bytes found 44455 times maximum, 0.26% Good ****************************** * Generic Data * ****************************** Section: Flash Magic Number : read '000000000FACE0FF00000000DEADDEEF' ! mismatch pattern '000000000FACE0FF00000000DEADBEEF' ! Some checking were not successful. You may need to check further your dump. But fortunately for the Generic section of the NOR it may be fixed. ****************************** * Per Console Data * ****************************** Section: mtldr size and rev : read hidden Section: mtldr size and pcn : read hidden Section: EID0 - IDPS : read hidden Section: EID0 static : read hidden Section: EID0 pcn : read hidden Section: EID3 - ckp_mgt_id : read hidden Section: EID3 static : read hidden Section: EID3 pcn : read hidden Section: EID5 - IDPS : read hidden Section: EID5 static : read hidden Section: EID5 pcn : read hidden Section: PS3 MAC Address : read hidden Section: cISD1 - CID : read hidden Section: cISD1 - eCID : read hidden Section: cISD1 - board_id : read hidden Section: cISD1 - kiban_id : read hidden Section: cISD1 -0x3F0A4 Data: read hidden Section: cISD1 -0x3F0B0 Data: read hidden Section: cISD1 - ckp_mgt_id : read hidden Section: cvtrm - pck/puk : read hidden Section: HDD information : read TOSHIBA hidden Section: PS3 Serial Number : read hidden Section: Bootldr hdr and rev: read hidden Section: Bootldr hdr and pcn: read hidden Section: cvtrm hdr bis : read 'FFFFFFFF' ! mismatch pattern '5654524D' ! PS3 SKU : CECHLxx (VER-001) minimum FW : 2.45 (item 29 in list) Some checking were not successful. You may need to check further your dump. Be cautious, flashing this one may lead to a brick of your PS3. ****************************** * Area filled with 00 or FF * ****************************** Succesfully checked 'flashHeader' From '0x00000000' size: '0x00000010' full of '0x00' Succesfully checked 'flashHeader' From '0x00000030' size: '0x000001D0' full of '0x00' Succesfully checked 'flashformat' From '0x00000210' size: '0x000001F0' full of '0xFF' Succesfully checked 'asecure_loader' From '0x0000F110' size: '0x0001FEF0' full of '0x00' Succesfully checked 'eEID' From '0x00030DD0' size: '0x0000E230' full of '0xFF' Succesfully checked 'cISD' From '0x0003F270' size: '0x00000590' full of '0xFF' Succesfully checked 'cCSD' From '0x0003F850' size: '0x000007B0' full of '0xFF' Error at '0x00040400 Some error occured when checking 'trvk_prg0' Succesfully checked 'trvk_prg0' From '0x00040FF0' size: '0x0001F010' full of '00' xor 'FF' Succesfully checked 'trvk_prg1' From '0x000602D0' size: '0x00000D20' full of '00' xor 'FF' Succesfully checked 'trvk_prg1' From '0x00060FF0' size: '0x0001F010' full of '00' xor 'FF' Succesfully checked 'trvk_pkg0' From '0x00080270' size: '0x00000D80' full of '00' xor 'FF' Succesfully checked 'trvk_pkg0' From '0x00080FF0' size: '0x0001F010' full of '00' xor 'FF' Succesfully checked 'trvk_pkg1' From '0x000A0270' size: '0x00000D80' full of '00' xor 'FF' Succesfully checked 'trvk_pkg1' From '0x000A0FF0' size: '0x0001F010' full of '00' xor 'FF' Succesfully checked 'ros0' From '0x005FCC88' size: '0x001C3378' full of '00' xor 'FF' Succesfully checked 'ros1' From '0x00CFCD1C' size: '0x001C32E4' full of '00' xor 'FF' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F20040' size: '0x000001C0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F20240' size: '0x0001FDC0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F40030' size: '0x0001FFD0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F60060' size: '0x000093A0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F69530' size: '0x000006D0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F69C00' size: '0x00015400' full of '0xFF' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F80030' size: '0x0001FFD0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA0060' size: '0x000093A0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA9530' size: '0x000006D0' full of '0x00' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA9C00' size: '0x00015400' full of '0xFF' Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FBF000' size: '0x00001000' full of '0xFF' Succesfully checked 'bootldr' From '0x00FEEB70' size: '0x00011490' full of '0xFF' Some checking were not successful. You may need to check further your dump. Be cautious there is something fishy in your dump. ****************************** * Not Empty Area * ****************************** Succesfully checked 'asecure_loader' From '0x00000840' size: '0x0000E8D0' not empty Succesfully checked 'eEID' From '0x0002F090' size: '0x00000AE0' not empty Succesfully checked 'eEID' From '0x0002FB90' size: '0x00000710' not empty Succesfully checked 'eEID' From '0x000302C0' size: '0x000000E0' not empty Succesfully checked 'eEID' From '0x000303A0' size: '0x00000030' not empty Succesfully checked 'eEID' From '0x000303F0' size: '0x000009E0' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F20200' size: '0x00000040' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F40000' size: '0x00000030' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F60000' size: '0x00000060' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F69400' size: '0x00000130' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00F7F000' size: '0x00001030' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA0000' size: '0x00000060' not empty Succesfully checked 'CELL_EXTNOR_AREA' From '0x00FA9400' size: '0x00000130' not empty Succesfully checked 'bootldr' From '0x00FC0040' size: '0x0002EB70' not empty Seems good, but you'd eventually like to be carefull! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 31.81% of the file has been checked ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error in Statistics -See report above or run again with option -P only Error in Generic Data Checking -See report above or run again with option -G only Error in Per PS3 Data Checking -See report above or run again with option -C only Error in 00/FF filled area -See report above or run again with option -F only !!!!!!!!!!!!!!!!!!!!!!!!!!!! ! YOU FAIL come back later ! !!!!!!!!!!!!!!!!!!!!!!!!!!!! real 0m11.531s user 0m11.465s sys 0m0.030sIf I may suggest you on the GUI, I think the best to do is to make a tool which calls and parse the current code, see what has been done for scetool, in that case you do not need to rebuild it each time a new delivery is done but only if the interface changes.
01-27-2013
12:31 AM
I had chose to start in C++ so yeah here is a little preview of the first GUI right now. When we will press the validate button, it's gonna change all the layout with the détails of the dump
01-27-2013
02:59 AM
[MENTION=166855]jamesst20[/MENTION] Good intiative.
You may want to use github if not done already and fork my project in order to easily follow any update done, you may also look at an0nym0u5 repository as he started to clean, and help to raise some errors as well, his programming skill is definitely higher than mine and its code may become easier to read than my own
01-27-2013
05:39 AM
I don't know if I can link here,hope so, in italian forum a guy published som part of flowrebuilder code.Maybe can help to improve also this tool and for adding NAND support
http://www.consoleopen.com/forum/hac...urce-code.html
01-27-2013
09:32 AM
But unfortunately I doubt that Flow Rebuilder is an open source project, I may be wrong.
Why do I have this bad feeling when googling "Flow Rebuilder source code" and then I fall in a thread on another forum where guys are looking for this source code as well in order to build a dump validator and this is 2 months old!? Where is this validator?
I've read the wiki many times, read threads here and googled a lot for a while but then I decided to start working on some coding after xmas vacations, so that's not long coding and that may explain why the code is not complete and still requires improvment, but sure I know it's sometimes hard to decide where to start when you want to get involved in something, anyhow I did it, so I hope those guys from this other forum are far away ahead of what I did and that they are going to share their work as well.
I sure like to read source and learn from others when they allow it, but I'm not too keen in doing some copy paste randomly especially if it makes the author unhappy.
I do not say you were wrong doing this, it would be only if you had purely 'stolen' the code, I do not either say that it's better to give an app for free but keeping the source code as a teasure.
I personnaly do not want to run business on that and hide a code that is basically and only here thanks to guys like defyboy, euss and many others who did not keep their secret, my code is just my interpretation of the wiki.
Months before E3 sold their stuff I was reading a lot from defyboy and was going to work on the STM32 to build my stuff, but for many bad reasons I stopped very early. But I ensure you that if I had finished it I would have release all for free and 100% open.
Anyhow, everyone can do what he wants with what he built, it's his right to keep it secret for whatever reason it is, but I have nothing to hide and you are not going to do nasty things to me by copying/transforming my code, moreover if fail0verflow had never shared their own source code many of would have written nothing!
ATM I'm increasing the "test coverage" (Sh!t I'm using my job's words) and also cleaning, and more important changing back strict address reference to shifts from based addresses, when it would complete I'm sure porting it to NAND would be easy as pie, the only thing I have no idea on how to manage is about NAND bad blocks...
Note: It's not anger or hate against anyone, it's just my statements and I just finished my dinner with an imported good French red wine, and you know what we say... Froggies are grumpy bad A$$h0les.
01-27-2013
02:23 PM
Edit : There you go : http://pastebin.com/QfKc12s3 (I'm not the author, I don't do C but C++). It's poorly written but works
Edit 2 : Cleaned a bit the code and made it easier to use. Works with C/C++ by now http://pastebin.com/y20HuRAZ but still dirty
Edit 3 : Rewrote it entirely, didn't like the old dirty way. I don't think it's gonna work in C but yeah
Edit 4: On what Platform are you codding for ? I have no such include #include <unistd.h> in Windows
01-27-2013
07:10 PM
The only thing I've done to have it compile and run easily under windows and not only with cygwin was to redefine the mkdir so it can be built with MinGW32.
01-27-2013
08:51 PM
Also, i'm trying to avoid modifying all you have done on NorDumpTool.c. The way I would like it is that everytime you update it, I just need to fully copy/paste your new code from github
Thanks you sir and if you disagree, I would understand but keep in mind that would just make everything else simplier after
01-27-2013
09:20 PM
[MENTION=166855]jamesst20[/MENTION], Yep I saw your post and codes, I'll give it a shot a bit later.

I'm in pain reading again and again all NOR offsets and checking if each areas are variable/static data or empty (00 or FF), and make sure the code covers as much as possible of the 16777216 bytes of the NOR, for now even if it checks the most important parts, it in fact checks only 31.81% of pure bytes.
I'll then include a byte swapping routine later but may not include it in the 0.9.6, don't know yet.
And as for the integration of this code in your own, I will not take time to introduce this changes for now, what I was thinking of, was more about having a GUY which knows each options (-P, -F and so on) execute the binary and then parse the output to eventually fill up some fields in the GUI itself, similar to what have been done with the scetool or some others.
I know that I've been too lazy to make it more flexible and only wrote one big C file instead of splitting it in headers and C, I'll do that later which will help you if you want to have only one app instead of a gui calling a binary.
Also if you use GitHub and fork the project you'll get all diff each time I do some changes which will make it definitely easier for you to build your code. Finaly as you can see my app is very basic (read file->do something->printf whatever) and so very simple to adapt those printf into sprintf or anything nicer
01-27-2013
09:54 PM
if i'm not mistaken, the type of byteswap used is byteswap 16 (16 bytes) in that case, naehrwert has published his ps3_hdd POC tool which includes the function in a clean and tidy way of his
lemme see if i can fetch it.
https://dl.dropbox.com/u/35197530/types.h
#include "types.h" /*! Swap u16 endianness. */ static void _es16_buffer(u8 *buf, u32 length) { u16 *ptr = (u16 *)buf; u32 i; for(i = 0; i < length/2; i++) ptr[i] = _ES16(ptr[i]); }01-27-2013
11:01 PM
When you say it only checks for 31.81% of pure bytes, you mean that the rest is what is determined by all of your struct which are assumed ?
01-28-2013
04:18 AM
[MENTION=166855]jamesst20[/MENTION], this current % represent for today what is really read from the dump and checked.
The missing 68.xx % are all part for which I did not finish to write offsets length and so on, like in ros0/1 you have a lot of data but depending if you get a dump from a PS3 under OFW or CFW all can change, and then you can analyse by many ways like doing MD5 if you have a database for each OFW, but for CFW that's no use, so what I'm doing for this is adding routines to read the each ros TOC so I can analyse each files in it or eventually just their MD5 (bad idea if CFW), at least I need to check if there are data where they're supposed to be, it will then increase the % of bytes covered, it may be quite impossible to reach 100%, but what I'm work on is to be sure to meet as close as possible all what guys gave us on the ps3devwiki.
01-28-2013
11:20 AM
01-28-2013
12:34 PM
But reverse Engineering is a different thing, if it's the case it can considered differently.
And so as I knew I would write a lot of stuff I wanted first to ensure that you do not take it for yourself, I just got upset after finding some thread in that other forum...
01-28-2013
01:15 PM
I know I sound like an ass but I'd try to create a header file or two(Keeps it nice and neat in my opinion). But VERY interesting....
You have a very good code process(VERY neat). I'm not very good at C but I can understand it with the C++ I know. May have to see if I can convert it later.
01-28-2013
09:55 PM
That's quite interesting, I've always been thinking of C being ten times easier to read than C++, even if you may need more lines in C than C++ to do the same thing!?
I agree that it may be better to split it into .h and .c, but I did not put that on my priority list
01-28-2013
10:58 PM
C is pretty easy to read just a little more detailed than I like haha. The only major difference in C and C++ is that C++ has some shortcuts.
The C++ I know is what? Data Structures. I haven't really gotten to the algorithms yet though. We have done a couple but not many. I'm actually a computer Science student at a university. So I'm still not the 100% best at programming I just have a hint or two
01-29-2013
08:16 PM
Anaria you make a good job here. I'm very happy to see how this scene grow up and make things easier for people like me.
Did this version is running on win 7 64 bit? When will be released a GUI version?
do we have to check the dumbs again with HxD hexedit?
Do you think that a brick secure version is possible?
Thanx for this genius app from a guy who dont know about validate dumps with hex
Keep up the good work
Greets from germany
01-30-2013
01:54 AM
Thanks, yes I'd like it to become a tool on which we can rely to confirm that a dump is safe or not, at the current stage it cannot be, even when I think I'm finish with the code implentation we will need experts to give a green light to it, I do not want to have any PS3's blood on my hands...
In other words, as long as you do not see anything on ps3devwiki mentionning it to be safe I sugeest you to be carefull
Today status is:
- Run on almost any platform if you compile it with the correct options and environment (see post #16)
- I'm not working on a GUI, I really and definitely think that is faster and easier to use this kind of tool in a shell but it's only what I think myself, but [MENTION=166855]jamesst20[/MENTION] as started to work on a GUI, maybe some others did but I'm not aware of.
- It's still better to use a binary editor to check the file anyway.
- Yes I hope to be able to see one day a brick safe tool.
- The draft version for a future 0.9.6 release has now reached a 97.29% of bytes covered, but I'm not ready to release it before next week, let say it will be a Chinese year release :D
Sorry I'm not very fast and I only have few hours per day to code.
01-30-2013
02:45 AM
Back on topic. I personally think that a pretty looking GUI for any program these days is needed for a couple reasons. One it doesn't overwhelm people who aren't used to CLI. Another reason is presentation is much more organized and flexible, and not limited to text on the screen. I'm not saying create a GUI version, I'm just throwing my opinion
01-30-2013
02:51 AM
01-31-2013
04:15 PM
Hello
Thank anaria for your sharing.
I have used it. I have write a little soft for testing Nor Dump and 2 3 nother feature.
But i can't show you because PS3Hax refused link or picture ^^
gueux-forum.net/index.php?/topic/271077-ps3dumpvalidating/
01-31-2013
10:30 PM
Well done for yours.
So you are the one to use my thread to promote your tool :P (je blague pas de probleme)(just kidding no problem)
Here is a snapshot:
Please see my PM.
02-01-2013
12:33 AM
Btw, how do you calculate the others byte percentage? 100% - FF% - 00% doesn't equal less the 0.5. Is it an average of the quantity of each single different bytes?
Envoyé depuis mon Nexus 7 avec Tapatalk
02-01-2013
12:53 AM
uint8_t Statistics(FILE *FileToRead) { // Calculate some statistics on bytes percentages uint8_t Status=EXIT_SUCCESS; uint32_t Cursor; uint16_t Counter; uint32_t CountOthers=0; uint32_t CountByte[0xFF+1]; char msg_low[] = "Too Low"; char msg_high[] = "Too High"; char msg_good[] = "Good"; char *Status00=NULL; char *StatusFF=NULL; char *StatusOthers=NULL; printf("******************************\n"); printf("* Statistics *\n"); printf("******************************\n"); fseek(FileToRead, 0, SEEK_SET); // reset all counters for (Counter=0x00;Counter<0xFF+1;Counter++) CountByte[Counter]=0; //count how many of each bytes are found for (Cursor=0;Cursor<NOR_FILE_SIZE;Cursor++) CountByte[fgetc(FileToRead)]+=1; // for all bytes value from 0x01 to 0xFE check which one has the highest count for (Counter=0x01;Counter<0xFF;Counter++) { if (CountOthers<CountByte[Counter]) CountOthers=CountByte[Counter]; } if (CountByte[0x00]<MIN00) { Status00=msg_low; Status = EXIT_FAILURE; } else if (CountByte[0x00]>MAX00) { Status00=msg_high; Status = EXIT_FAILURE; } else Status00=msg_good; if (CountByte[0xFF]<MINFF) { StatusFF=msg_low; Status = EXIT_FAILURE; } else if (CountByte[0xFF]>MAXFF) { StatusFF=msg_high; Status = EXIT_FAILURE; } else StatusFF=msg_good; if (CountOthers>MAXOTHERS) { StatusOthers=msg_high; Status = EXIT_FAILURE; } else StatusOthers=msg_good; printf ("Bytes '00' found %d times, %2.2f%% %s\n" , CountByte[0x00], (double)CountByte[0x00]*100/(double)NOR_FILE_SIZE, Status00); printf ("Bytes 'FF' found %d times, %2.2f%% %s\n" , CountByte[0xFF], (double)CountByte[0xFF]*100/(double)NOR_FILE_SIZE, StatusFF); printf ("Other bytes found %d times maximum, %2.2f%% %s\n", CountOthers , (double)CountOthers *100/(double)NOR_FILE_SIZE, StatusOthers); return Status; }02-01-2013
05:04 PM
@ anaria
you share, i use it ^^
I don't want became famous, just learn and sharing. And now i adapte your code for Nand. And my own, check if the dump is reversed.... ^^
And for the percentage, in first i have my function but yours is more faster...
i filled up a array of int with every byte, and make 256 count on it ^^.... It's not good with a nand 256 Mb ^^
So i take yours....Thank again.
@ jamesst20
I have begin 3, 4 month ago... I have just use the anaria code for 2 new test...
It's in C++/ Qt, compatible with Mac and Linux and I give source code for respect the Qt License.
Source code : ps3.gx-mod.com/images/news/softwares/nandTool/SourcePs3DumpValidating.rar
02-02-2013
01:28 AM
[MENTION=201511]deaphroat[/MENTION], again well done for your work.
I'vwe wasted my time a bit, but I’m still working on this, I’ve made some fix/improvement which hopefully should be useful.
For instance the MD5 function was only valid if you were running it on a full size file but gave wrong sum for a part of a file, I’ve asked google how I should because I know nothing about hashing and so on.
At the moment I trying to fill up a list of MD5 You can eventually help…
You may have a look here I’ve uploaded some code I use to help me in my dev, especially for all the MD5 stuff, it’s basically some copy/paste from my 0.9.6 main draft with few debugging things in it, if you want to use a MD5 routine from my code use the one from this one not from the older 0.9.5 of the NOR Dump Tool code as this old one is wrong.
In PS3Data.h you'll see that I've started to build a MD5 db based on the wiki plus some comments where I tried to get sum for each FW files, you may complete it and share your findings :D
PS: !!! I forgot to mention that in this dev-debugging code there no control for the NOR itself so do not use it as it is to confirm anything. it is just for debugging and dev, IT'S NOT VALIDATING ANYTHING !!!
02-02-2013
02:34 AM
if you want md5 validation one of my public apps does that.
02-02-2013
05:25 AM
Thank BwE and thanks all ^^
For comparing dump, i don't use md5, i make a array of bit and make == on it ^^
But it's nod a good idea for Nand... Maybe i will use a md5...
I have already use Aes et Sha1 for ps3 with hashlib et Rijndael .
02-02-2013
05:42 AM
md5 is a simple digest function. it takes a message of length x and turns it into a hash of length 16 bytes (i think it's 16, someone correct me here if it's not please).
if you change one single byte of a message, the md5 will not match the previous one.
02-02-2013
07:19 AM
With Qt it's easy for make a md5, so my 2 function for test if dump are egal it's done (Nor and Nand).
02-02-2013
07:27 AM
"
I’d come to it shortly, but first I’d like to thanks all of you who participate to this scene, I’m not good at naming people and I’m worry to forget some.
"
Yep if I had found your source code you can be sure I would have not scratch my heads in writing my lines, but now I think my draft is good enough for this part, I just need to make a proper do of MD5 for each possible files in the core os.
02-02-2013
07:41 AM
As they change once installed. (As told by me on the wiki).
02-02-2013
09:23 AM
[MENTION=202826]zecoxao[/MENTION] & @deaphrot, what I did wrong was to use [SPOILER]void MD5SumFileSection(char* SectionText, FILE *FileToRead, uint32_t Position, uint32_t Size) {
unsigned char MD5Sum[MD5_DIGEST_LENGTH];
int ByteSize;
uint32_t Cursor;
int DataWidth = 0x10;
unsigned char DataValue[DataWidth];
MD5_CTX mdContext;
MD5_Init (&mdContext);
fseek(FileToRead, Position, SEEK_SET);
for (Cursor=0;Cursor<NOR_FILE_SIZE;Cursor+=DataWidth) {
ByteSize = fread (DataValue, 1, DataWidth, FileToRead);
MD5_Update (&mdContext, DataValue, ByteSize);
}
MD5_Final (MD5Sum,&mdContext);
printf ("%s", SectionText);
for(Cursor = 0; Cursor < MD5_DIGEST_LENGTH; Cursor++)
printf("%02x", MD5Sum[Cursor]);
printf("\n");
}[/SPOILER]
instead of
[SPOILER]void MD5SumFileSection( FILE *FileToRead, uint32_t Position, uint32_t Size, uint8_t *Sum) {
char *Buffer = malloc(Size+1);
fseek (FileToRead, Position, SEEK_SET);
fread (Buffer, Size, 1, FileToRead);
MD5 (Buffer, Size, Sum);
}
void printMD5 (uint8_t MD5result[MD5_DIGEST_LENGTH]) {
uint8_t Cursor;
for(Cursor = 0; Cursor < MD5_DIGEST_LENGTH; Cursor++)
printf("%02x",MD5result[Cursor]);
}[/SPOILER]
the result given with the first routine is valid only if you perform it on a full size but not on some part it, which is ok with the second one.
But I 've found no reference of any MD5 for each files of each version of the CORE OS.
But wath you are doing is not what I'm loking for for exmaple you check the MD5 of both ros0 and ros1, what I want to do is to check each files from both of them for example (probably not correct i still need to establish a correct db:
{"emer_init.self" , "3.55","ca9bbc99c645173e1f98aa66c47a4500"}, {"isoldr" , "3.55","5c7436bffc7e8d0a8e210bd0ca83cdf2"}, {"manu_info_spu_module.self" , "3.55","09a1d434dbd7197e7c3af8a7c28ca38b"}, {"aim_spu_module.self" ,"3.55", "b0ad88ee637311ae5196f1b11d43be0a"}, {"appldr" , "9d670b662be696c8460449b7efdd803e"}, {"mc_iso_spu_module.self" ,"3.55", "b5f54d9a11d1eae71f35b5907c6b9d3a"}, {"creserved_0" ,"3.55", "c1dc055ef0d6082580ac066e2b0a3c38"}, {"sb_iso_spu_module.self" ,"3.55", "811329ecdb677181b9fc5cc3564d9047"}, {"sv_iso_spu_module.self" ,"3.55", "ff6753184d15f45508c5330a6144a4d9"}, {"sc_iso.self" ,"3.55", "bc6b000f5ac5db94daee47720d0bfe6b"}, {"spu_pkg_rvk_verifier.self" ,"3.55", "e9ae2a62b4cc31750d4e56c7d5ffdd6f"}, {"lv2ldr" ,"3.55", "a597aa3d8101674856eef83ac1d0ef28"}, {"eurus_fw.bin" ,"3.55", "413b0666736e87929b346ca2b712284d"}, {"lv1.self" ,"3.55", "65a3eee4c48716674cb1c29609b5f54d"}, {"spp_verifier.self" ,"3.55", "5ffb33a6cecb99081e54a0e36e3c61af"}, {"lv2_kernel.self" ,"3.55", "3b15c14770d654fef9987e2517616d89"}, {"spu_token_processor.self" ,"3.55", "b39e13fbd6b07f65616a0355ef5cb262"}, {"me_iso_spu_module.self" ,"3.55", "d7edca0ed3749f11ee34f0f532cf5aa7"}, {"lv1ldr" ,"3.55", "3da12e2cb472eb8193309b663d7c913a"}, {"hdd_copy.self" , "90d1c8a45f6fee52219e1b14ff8c9765"}, {"spu_utoken_processor.self" ,"3.55", "b76b7244b19032a9518787d9ec827f3c"}, {"default.spp" ,"3.55", "22ababcfc027f892ad2cf4e1c9fd925c"}, {"sdk_version" ,"3.55", "0e5a2e8a68fe09481d728c227dc5a165"}, {"lv0" ,"3.55", "368f2d290c00f3cb3c5a5c8cfe584534"},02-03-2013
01:54 AM
Envoyé depuis mon Nexus 7 avec Tapatalk
02-03-2013
04:57 AM
I suppose it's because your file is in buffer RAM and not a direct read from the disk !?
02-03-2013
05:38 AM
02-03-2013
08:22 AM
So I have and want to do this for many good or bad reasons:
1st I have no db of any MD5 for each ros version, so if I want to do the same way as you I need to establish a list of MD5 for this.
2nd doing MD5 for the whole ROS is valid only if done on a known format like OFW and eventually few CFW, but it can exist many cases where the ros is 100% valid but its MD5 unkown because it's a MFW which as never been calculated.
3rd doing it on each files of the ros can be as problematic as fopr the ros itself in case of a CFW/MFW, but at least there are only few files which are impacted when not having a OFW, also I don't want to solely give a report of the ros being fail if I can more over give to the user whihc file in the ros is problematic or unkown.
4th maybe a better way would be to use your method for known MD5 then go in the detail if there's a mismatch.
02-03-2013
11:22 AM
02-04-2013
02:16 AM
But realistically, you validate when you downgrade, you downgrade when you're on OFW.
02-04-2013
03:33 AM
Honestly, folks will do what they want with this code when finish, but if I can finalise it correctly, it will not be aimed to only permit anyone to just validate a NOR for future downgrade, at least I will not use it for that.
For example you can see at the moment that it displays some per console information and generic things from the dump.
As for the validation itself, again if I can have a list of MD5 per ros I would be more than happy to include this in the code and then yes I would be able to implement this 4th point.
EDIT: 0.9.6 is on github
Still a lot is to be done but even if it's not really clean or out of bug, I've uploaded what I've done recenty.
new stuff have been introduced:
Added percentage indicator
Added global status
Added Fixed of some part of the code & cleaning from an0nym0u5
Changed MD5 function, the first one was only valid if done on a full file not on inner sections.
Added report for trvk and ros' files MD5
move part of the definitons in PS3Data.h
As per the MD5 things, it's not complete but it should help to start going further on this.
You will also note that I've increased the status to 97%, but it does not mean that a dump can be considered good if you are green...
I cannot garanty that it really covers critical parts.
For example when you check some per console zone, the code can tell if the header or the size of a region is correct,then it checks if the region is full of data, BUT IT DOES NOT CHECK that the data in it are valide.
Be aware that you cannot rely 100% on this to validate your dump, remember it is aimed to help you validate but it's not able to do all the job for you.
The most important is that you can learn from this code if you want and make your own tools for what ever purpose if you like some part of this.
You will also notice that I have added some lines of MD5 sums in PS3Data.h for example:
[SPOILER] // FW 3.41 Files
{"creserved_0" , "3.41" , "09A1D434DBD7197E7C3AF8A7C28CA38B"},
{"sdk_version" , "3.41" , "7A2595AECEDE95C9338C710CF8DBBA99"},
{"lv1ldr" , "3.41" , "C7BF42F12A3EE32E694EB9FE46E1DB51"},
{"lv2ldr" , "3.41" , "C8777688BF00F42E6C73DE336E10A25A"},
{"isoldr" , "3.41" , "54490521B6965BD0E95D93928C1B4056"},
{"appldr" , "3.41" , "CF08E9B3421E4B1AA665717C555ED670"},
{"spu_pkg_rvk_verifier.self" , "3.41" , "964A28D0F0E6AA3423A4FF1DA4598C21"},
{"spu_token_processor.self" , "3.41" , "7D71C9C119989446766442E8127BA0CB"},
{"spu_utoken_processor.self" , "3.41" , "92913EAD973B8AA24BFF4F38FE66927E"},
{"sc_iso.self" , "3.41" , "7E9938FF024C809DE3CC950B61E01F6B"},
{"aim_spu_module.self" , "3.41" , "8C3DF66C7BCFCB291221884EE46CB351"},
{"spp_verifier.self" , "3.41" , "A60518DDF46B904E7F8B4ADC96F60342"},
{"mc_iso_spu_module.self" , "3.41" , "07DDFE013304965BF7EB63D9AC5BD0C2"},
{"me_iso_spu_module.self" , "3.41" , "A237F20A0491149B1C0890B0FCE8E0CE"},
{"sv_iso_spu_module.self" , "3.41" , "7D20C0D5F382EEB31E6B830EA1ED4B8F"},
{"sb_iso_spu_module.self" , "3.41" , "5A219A19D772E26F41A86BCB8449093E"},
{"default.spp" , "3.41" , "4E78EA91BE73C71012930C4144B50CC1"},
{"lv1.self" , "3.41" , "200A67508DF9C6B2F47A7A93FF2160CA"},
{"lv0" , "3.41" , "C0C71AE21AEC6A6116464B8A7DF4D534"},
{"lv2_kernel.self" , "3.41" , "9DBFDC3B026622E83398554B783E1CEC"},
{"eurus_fw.bin" , "3.41" , "B5F54D9A11D1EAE71F35B5907C6B9D3A"},
{"emer_init.self" , "3.41" , "D5F6040AAB1B27E29461E847CFFDA08E"},
{"hdd_copy.self" , "3.41" , "F1142B43BCD76C0EC9A0CBF1BE8BE407"},[/SPOILER]
This list is of course not complete but it's not validated either, so I would appreciate anyone willing to report any additional sums, and prompt me those which are wrong.
You can use both codes from my second repo here to generate your own list of sums.
Unfortunately for those who want to know more about what it does and what is the exact soucre of information, I did not fill in enough comments...
02-07-2013
06:45 PM
As you can see I'm good turtle on this... :P


I've started this coding, but it does not mean I have to be the only one to work on it, I made it open for that, and I do not consider it as my property, so if there are any smart folks willing to put line to that it would be benefic to all.
I'm just asking to anyone who does so to not copy/paste some part of it to put in their stuff and then lock it in a close source to be sure noone else can build a software similar to his!
Remember, we have brainies on the wiki who finds thing then share it so every one can find something useful.
So, for this code you for sure can notice that the 0.9.6 enhance the coverage but it's not doing everything perfectly.
I'm trying to follow smoe advices from [MENTION=131344]euss[/MENTION] and [MENTION=193105]judges[/MENTION], but unfortunately my brain has a lack of space
most of the method used in the code are very simple: read some bytes cehck if they are at 00 or FF when supposed to, check if they are not when it's supposed to be data, compare some string/bytes, and do some MD5 sums...
One very good suggestion I got from euss is, instead of doing some hash checking as it require to build a huge list of possibilities, to decrypt the RVK and other selfs in the ros to check them, which definitely makes more sens as you do not need to build a list of thousands of MD5 and also it permit to check something which is not known to date.
I don't think I'm writing this the correct way...
And because I'm a stupid ass regarding encryption, if someone has an idea on how to emplement such thing I hope he would like to put few lines of code to this, of course it does not mean I'm not reading the wiki and example for fail0verflow to try to do it myself, but it may takes weeks for me and seconds for others.
Finally, I've wrote earlier that this code is aimed to help validating a dump, so yes it can help, but I guess I made a mistake writing it this way.
Please do not consider ti as a full validator or something, it will you for that, but you can use it for something else it's your choice, and that's reason I just named it "NOR Dump Tool", anyway it''s open you do as you like
Cheers, time to go buy my new MAC :P
02-19-2013
02:43 PM
Hello
Thanks BWE ^^
ps3.gx-mod.com/modules/news/article.php?storyid=3197
02-19-2013
04:54 PM
your validator is leaked, by you or what? your main page still says coming soon
[MENTION=177623]baileyscream[/MENTION] , [MENTION=204330]MJ999[/MENTION] , [MENTION=245343]Sarah1331[/MENTION] , [MENTION=211522]playerkp420[/MENTION]
check this tool it is very good
02-19-2013
05:05 PM
It has been on the wiki, for a few days now.
02-19-2013
05:26 PM
i havent been able to get it to run i assume its something on my laptop stopping it from running
i get the annoying music though!!! why put that on it i dont know. i would have thought BwE would be the sort to hate that type of thing. ah well each to there own.
btw i'm on win7 32bit (finaly got rid of the stupid win8)
02-19-2013
05:27 PM
Nice
Actually what does it all test?
Sent from my Nexus 7 using Tapatalk 2
02-19-2013
05:38 PM
reminds me with cracking programs software. good have a mute button for it
02-19-2013
11:15 PM
02-20-2013
12:25 AM
02-20-2013
04:16 AM
02-20-2013
05:32 AM
i nearly had a heart attack lol..
how about making a version without or atleast with the sound off at default then have a tick box if you want it on.
lol funny that this is all i can find wrong with it
02-20-2013
05:38 AM
take it or leave it
02-20-2013
06:28 AM
to bad my sound is *** keygen music? love it...great work and thx for the share...and a new sig there...ur on a roll huh

02-20-2013
09:11 AM
Glad to see that the thread speaking about opensource tool and open weeks ago is not dead...
02-20-2013
10:08 PM
i find it funny not many people know about my validator, which is the plan.

i originally put it just on the wiki for the sole purpose for people who actually have the brain to go look for it there deserve to use it
02-20-2013
10:52 PM
Good job anyway.
Few comments:
7MB+ is a bit big for such tool, any plan to split it in 2 parts like exe + data, so those who do not want to use it for patching, or eventually for later, can download only what they'd like?
On the job's PC (Win7 x64) the memory usage climbs to about 300MB !? But I did not try on my old small config (Win2k 256MB) so maybe it allocates dynamically??
Only WIN32? or ....?
02-20-2013
11:18 PM
Best I can do is make a version that doesn't patch which would make it 1-1.5mb.
300mb isn't much (plus I have never checked or noticed an issue).
Its for both 32 and 64bit.
02-21-2013
01:16 AM
Anyway it doesn't matter as you already plan to release the source sooner or later anyone would then port it to what he wants
By the way, do you plan to change the input parameter option as all your tools just read the first toto.bin file they find, it would be better if this can be overrode, no?
02-21-2013
01:19 AM
Input parameter option? All of my tools read the first .bin? No?
My NOR Validator will read automatically if there is only ONE .bin in the directory. If there is more than one it will prompt you to select which one.
02-21-2013
01:42 AM
What is 7MB, in this world of TB? LOL
You gonna add 3 musketeers patches, or you don't believe in that?
02-21-2013
02:20 AM
02-21-2013
07:50 AM
Also the fact that when we maintain soft for production we have to face some manager who do not want to invest a penny in new PCs if you can upgrade the test software running on an old PIII with 128 MB of RAM and a 20GB HDD, so you get the habit to build 100KB when you can instead Megsss.
Regarding a command line options it clearly seems that we do not have the same view, in my opinion the way it's done in your case is exactly what you would expect from a GUI, do things for the user then propose some options, but for a pure command line you need to allow the user to enter parameters like -i <input file> -o <output file> -whatyouwant option blabla so it can easily be used in a script/batch, otherwise it's a GUI with no window in a shell no more, but that's only my view of a command line and I do not force anyone to think the same
Sure we have different view as you are running a business and I'm just an employee. :P
02-21-2013
08:19 AM
I was going to also have a hex editor style gui also, but I could not be bothered to do it.
As for actual command line inputs, that is just pointless. You are after one thing, the flash to be validated. Anything else is just boring. Output name/location etc? Who cares, it does it for you - everything is simple because only simple people will use my program.
If you want something done your way you would have validated it yourself.
02-21-2013
09:03 AM
Sorry I'm a complex bad ass :D
Nop if I want something done my way I'll ask my code to do it for me as I'm a lazy fat ass and I have no brain able to do the job
02-21-2013
10:30 AM
02-21-2013
11:18 AM
http://www.urbandictionary.com/define.php?term=rightio
?
02-21-2013
06:14 PM
Is version 0.9.6 available ?
02-21-2013
07:33 PM
03-02-2013
06:15 AM
Hi Guys, draft for release 0.9.7 is available on github.
I did few validation but surely not enough, if you are interested in testing this draft you can sync the last commit or download the binaries I've compiled.
I've just compiled 2 binaries for windows one runs under cygwin and the other one should run under a standard dos (at least it did in my VM of XP).
Interestingly for the same code it seems to be much faster with cygwin...
I've also started to publish some documentation on the wiki, this can be found here
03-02-2013
06:22 AM
Edit:
Attached Full DLL + 0.97 Version
http://www.4shared.com/rar/Am18djoE/...l-pre_097.html
i see a lot of improvement on it
Thanx
03-02-2013
08:56 AM
[MENTION=207545]3absiso[/MENTION]

I'm trying to add improvement and bugs fix as much as I can
Also I'm now using Code::Blocks as it make things easier when trying to compile for Win32, but I want to keep it multi-platform.
Also you've uploaded the binary with DLLs for cygwin does it mean that you were not able to run the second binary found in the NORDumpTool-pre0.9.7-WIN32.7z archive without adding DLLs to it?
EDIT: I forgot to mention that the WIN32 version should only require install of openssl (Win32openssl binary)