User talk:Anaria
Intro[edit source]
As of the ongoing project I'm working on, I'd like to try to add comments and documentation here, in the hope that it will help anyone who would like to work on his own project.
Current project source code can be found on Github: NOR-Dump-Tool
First it deserves to be given credit to all the wiki contributors as this would not exist without any of them.
The code itself is designed to be portable on many platforms, it is as today a one man project so slow and not well optimized.
It has no aim to teach anything to anyone but only to show an example of what can be done from open information available on the wiki. Anyhow it's aimed to always evolve and is not guaranty to be out of any bug.
It is solely design to read NOR dumps, hopefully a NAND project can easily (as in easier than from scratch) be made based on this one.
It can help to validate, but it is not a 100% guaranty that a dump has no issues.
Anyway do not trust anyone telling you he can guaranty you a 100% valid dump with his tool especially if:
- you cannot study the code, hence cannot know what it is really doing
- the tool does not permit decryption of the per console information (metldr, bootldr, EID ...) with your console keys
It can help to read parts of a dump or any other kind of manipulation not dedicated to specifically validate a dump.
There is no option to reverse a dump but it should now automatically manage both bytes order as it read a dump.
As the full source code is available on Github I'll put one function example, but for all others I'll point out their name, if you are then interested in reading those parts you'll just have to go to the repository.
Usage and examples:[edit source]
Command line option | Description |
---|---|
-P | Give percentage of bytes |
-G | Check PS3 Generic information |
-C | Check and display perconsole information |
-f | Check areas filled with '00' or 'FF' |
-F | Check Firmware information (ros0/1 + trvk) |
-N | Check areas containing data in opposition to -F option |
-S FolderName | Split some NOR section to folder 'FolderName' |
-M Start Size | Run MD5 sum on file from 'Start' for 'Size' long |
-E FileName Start Size | Extract specific NOR Section from 'Start' for 'Size' long |
-D Start Size H/A | Display a specific NOR Section from 'Start' for 'Size' long, use H or A for HEX or ASCII |
What if you just want to check dump!?[edit source]
Checking a Dump is done by running the app with only the dump file name as an input. By default it uses options -P -G -C -f -F -N and -R
run the command:
$ ./NORDumpTool NORDumpFileName.bin
Dump validation coverage[edit source]
Below is described a short list of what is a dump validation coverage:
Validating_flash_dumps | NOR Dump Tool | Command line example | Comment |
---|---|---|---|
Statistical analysis | Done | NORDumpTool dumpfilename.bin -P | |
Bytereversed | Done | none | automatic |
Only zeroes | Done | NORDumpTool dumpfilename.bin -f | |
patterned non zeroes / patterned non ff's | Done | NORDumpTool dumpfilename.bin -N | |
patterned FF's | Done | NORDumpTool dumpfilename.bin -f | |
malformed headers / filenames / regionnames | Done | NORDumpTool dumpfilename.bin | done via different sub routine, should be fully covered when launching all tests |
absent files /regions | Done | NORDumpTool dumpfilename.bin | done via different sub routine, should be fully covered when launching all tests |
malformed files /regions | Done | NORDumpTool dumpfilename.bin | done via different sub routine, should be fully covered when launching all tests |
Repetitions | Done | NORDumpTool dumpfilename.bin -R | May be improved as it does not cover all repeated addreses but only one in order to identify a stuck address line |
Check metldr+bootldr sizes | Done | NORDumpTool dumpfilename.bin -C |
Example of output for a validation[edit source]
****************************** * NOR Dump Tool Version0.9.x * ****************************** DRAFT for 0.9.7 ****************************** * Statistics * ****************************** Bytes '00' found 3084206 times, 18.38% Good Bytes 'FF' found 1755117 times, 10.46% Good Other bytes found 50237 times maximum, 0.30% Good ****************************** * Generic Data * ****************************** No problem found in the Generic Data, anyway remain careful! ****************************** * Per Console Data * ****************************** Section: mtldr revision : read 43B6EF4AE20F7400C8809E53 Section: mtldr binary size : read 00000E89 Section: mtldr pcn : read ************************ Section: EID0 - IDPS : read 0000000100870008100************* Section: EID0 static : read 0012000B Section: EID0 pcn : read ************************ Section: EID3 - ckp_mgt_id : read 00000000******** Section: EID3 static : read 000100D0 Section: EID3 pcn : read ************************ Section: EID5 - IDPS : read 0000000100870008100************* Section: EID5 static : read 00120730 Section: EID5 pcn : read ************************ Section: PS3 MAC Address : read 00********** Section: cISD1 0001/0002 ? : read 0002 Section: cISD1 - CID : read ******** Section: cISD1 - eCID : read 01CA0122810C9718121************* Section: cISD1 - board_id : read ********* Section: cISD1 - kiban_id : read 3HF1******** Section: cISD1 -0x3F0A4 Data: read 007900790106 Section: cISD1 -0x3F0B0 Data: read 0002001100020012 Section: cISD1 - ckp_mgt_id : read 00000000******** Section: cISD2 - wlan_data1 : read 1FFF000000000000 Section: cISD2 - wlan_data2 : read 0000000000000000 Section: cvtrm - pck/puk : read 6062157E******************************** Section: HDD SHA1 SUM : read 1A6F6D43******************************** Section: HDD information ? : read 00000010 Section: HDD information : read TOSHIBA MK8052GSX Section: PS3 Serial Number : read Y******** Section: Bootldr revision : read 92AC2C2157A577C84DDFECDB Section: Bootldr binary size: read 00002EB3 Section: Bootldr pcn : read ************************ Data found in NOR to identify the SKU are: TargetID | metldr | bootldr TargetID | Offset0 | Offset1 | Offset0 | Offset1 08 E8D0 0E89 2EB3 2EB3 PS3 SKU : CECHLxx (VER-001) minimum FW : 2.45 (item 29 in list) No problem found in the Per Console Data, anyway remain careful! ****************************** * Area filled with 00 or FF * ****************************** ' FlashHeader' from '0x00000000' to '0x00000010' is full of '0x00' ! GOOD ' FlashHeader' from '0x00000030' to '0x00000200' is full of '0x00' ! GOOD ' FlashFormat' from '0x00000210' to '0x00000400' is full of '0xFF' ! GOOD 'FlashRegion over' from '0x00000620' to '0x00000800' is full of '0x00' ! GOOD ' asecure_loader' from '0x0000F120' to '0x0002F000' is full of '0x00' ! GOOD ' eEID' from '0x00030DD0' to '0x0003F000' is full of '0xFF' ! GOOD ' cISD' from '0x0003F046' to '0x0003F060' is full of '0xFF' ! GOOD ' cISD' from '0x0003F270' to '0x0003F800' is full of '0xFF' ! GOOD ' cCSD' from '0x0003F820' to '0x0003F850' is full of '0xFF' ! GOOD ' cCSD' from '0x0003F850' to '0x00040000' is full of '0xFF' ! GOOD ' cCSD' from '0x0003F8AC' to '0x0003F8B0' is full of '0xFF' ! GOOD ' trvk_prg0' from '0x000402F0' to '0x00040FF0' is empty (00 / FF) ! GOOD ' trvk_prg0' from '0x00040FF0' to '0x00060000' is empty (00 / FF) ! GOOD ' trvk_prg1' from '0x000602F0' to '0x00060FF0' is empty (00 / FF) ! GOOD ' trvk_prg1' from '0x00060FF0' to '0x00080000' is empty (00 / FF) ! GOOD ' trvk_pkg0' from '0x00080250' to '0x00080FF0' is empty (00 / FF) ! GOOD ' trvk_pkg0' from '0x00080FF0' to '0x000A0000' is empty (00 / FF) ! GOOD ' trvk_pkg1' from '0x000A0250' to '0x000A0FF0' is empty (00 / FF) ! GOOD ' trvk_pkg1' from '0x000A0FF0' to '0x000C0000' is empty (00 / FF) ! GOOD ' ros0' from '0x006A2D0C' to '0x007C0000' is empty (00 / FF) ! GOOD ' ros1' from '0x00D9CABC' to '0x00EC0000' is empty (00 / FF) ! GOOD 'CELL_EXTNOR_AREA' from '0x00F20040' to '0x00F20200' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F20240' to '0x00F40000' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F40030' to '0x00F60000' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F60060' to '0x00F69400' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F69408' to '0x00F69430' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F69530' to '0x00F69C00' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F69C00' to '0x00F7F000' is full of '0xFF' ! GOOD 'CELL_EXTNOR_AREA' from '0x00F80030' to '0x00FA0000' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00FA0060' to '0x00FA9400' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00FA9408' to '0x00FA9430' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00FA9530' to '0x00FA9C00' is full of '0x00' ! GOOD 'CELL_EXTNOR_AREA' from '0x00FA9C00' to '0x00FBF000' is full of '0xFF' ! GOOD 'CELL_EXTNOR_AREA' from '0x00FBF000' to '0x00FC0000' is full of '0xFF' ! GOOD ' bootldr' from '0x00FEEF80' to '0x01000000' is full of '0xFF' ! GOOD No problem found in areas filled with '00' or 'FF', anyway remain careful! ****************************** * Not Empty Area * ****************************** ' asecure_loader' from '0x00000840' to '0x0000F120' is not empty ! GOOD ' eEID' from '0x0002F090' to '0x0002FB70' is not empty ! GOOD ' eEID' from '0x0002FB90' to '0x000302A0' is not empty ! GOOD ' eEID' from '0x000302C0' to '0x000303A0' is not empty ! GOOD ' eEID' from '0x000303A0' to '0x000303D0' is not empty ! GOOD ' eEID' from '0x000303F0' to '0x00030DD0' is not empty ! GOOD 'CELL_EXTNOR_AREA' from '0x00F20200' to '0x00F20240' is not empty ! GOOD ' CRL1' from '0x00F40000' to '0x00F40030' is not empty ! GOOD ' DRL1' from '0x00F60000' to '0x00F60060' is not empty ! GOOD ' OCRL0200' from '0x00F69430' to '0x00F69540' is not empty ! GOOD 'CELL_EXTNOR_AREA' from '0x00F7F000' to '0x00F80000' is not empty ! GOOD ' CRL2' from '0x00F80000' to '0x00F80030' is not empty ! GOOD ' DRL2' from '0x00FA0000' to '0x00FA0060' is not empty ! GOOD ' OCRL0200' from '0x00FA9430' to '0x00FA9540' is not empty ! GOOD 'CELL_EXTNOR_AREA' from '0x00FBF000' to '0x00FC0000' is not empty ! GOOD ' bootldr' from '0x00FC0040' to '0x00FEEFC0' is not empty ! GOOD There are data in supposed areas, anyway remain careful! ****************************** * Per Firmware Data * ****************************** Short MD5 checking for revokation C67C0E8750BE22D781C5168FE631145F trvk_prg0 for FW :'3.5' ! GOOD you can find the suspect file here:'Dump_trvk_prg0.bin', use any tools like scetool to check it in detail 9A3060D30A25DCE7686AA415A1857319 trvk_prg1 for FW :'3.55/3.55_DEX' ! GOOD E056B25601DE15B90EFCF56CF9B3339F trvk_pkg0 unknown but good header ! WARNING you can find the suspect file here:'Dump_trvk_prg0.bin', use any tools like scetool to check it in detail E056B25601DE15B90EFCF56CF9B3339F trvk_pkg1 unknown but good header ! WARNING you can find the suspect file here:'Dump_trvk_prg0.bin', use any tools like scetool to check it in detailShort MD5 checking for core os 0 files 09A1D434DBD7197E7C3AF8A7C28CA38B 'creserved_0' 5658FE830DD262D5692FE7F3DC3D723A 'sdk_version' SDK '4.30' 797B68E5694EB2072CC944D6F072A961 'spu_pkg_rvk_verifier.self' 05F02ECA781C7462870E4A80A13E6A76 'spu_token_processor.self' 20054C84A4BF7E1237FDAF645101EF74 'spu_utoken_processor.self' 5A6AFCCA39BED9E979B2EADD46D516E1 'sc_iso.self' 667FC8DB8E5519CACBF8F9F2AF2E0B08 'aim_spu_module.self' FC0D132FAEE4585963887860C33807F1 'spp_verifier.self' 2CB801DBF76FD3C83DFE01D6FF99E824 'mc_iso_spu_module.self' 0E6248204D381BE2C21B0630AA7A432D 'me_iso_spu_module.self' B95D9A045A89DC1CBCA94FD3BB6E91F1 'sv_iso_spu_module.self' 13E53D2EC13F91B3C5B0ACFD076C5391 'sb_iso_spu_module.self' C79E5C952D4BF8208668788AB85A019F 'me_iso_for_ps2emu.self' 8073E364721EBEC9AF8082C9A12FF796 'sv_iso_for_ps2emu.self' 5CBF8D6FA103C32E8EA94E841D908A13 'default.spp' ABA5830829EBD635E664AFC1516D060A 'lv1.self' 21F4C35B7EB584CD3F36AE04E6A4854C 'lv0' 6557DF35F9A5446C4340815F45C67CC7 'lv0.2' DE15FF24BA24A4D00554B8EA874A1882 'lv2_kernel.self' B5F54D9A11D1EAE71F35B5907C6B9D3A 'eurus_fw.bin' 3E9606F2312708E179BC9FABD4824746 'emer_init.self' FBAE5ED84C958409DB553B5799E50AA7 'hdd_copy.self' 559996552D855C5B6386D8EF99134051 'manu_info_spu_module.self' 846119D645909060A441F475FBE438D0 'prog.srvk' D5A194AF4965159101619370E2989E9C 'pkg.srvk' Short MD5 checking for core os 1 files 09A1D434DBD7197E7C3AF8A7C28CA38B 'creserved_0' A01B32CD2B1E29FA0351FBE1BC1B986F 'sdk_version' SDK '4.25' 772B0A6F772BF7FE397D89ED5ADBDFD8 'spu_pkg_rvk_verifier.self' AE8E4A8F29B78D62E3FA72EB32CCF3E2 'spu_token_processor.self' B9FB697C1FE64B0C3323AF0B860331F3 'spu_utoken_processor.self' 71BE4C9D062AD3FE682F51467788F39B 'sc_iso.self' E3D1C5125F080490955C938511855482 'aim_spu_module.self' 678E330A794A04952C553810BE4A824D 'spp_verifier.self' E2BD05A2EA6D0FE4BA8AFC77F508AF75 'mc_iso_spu_module.self' D4458D316C7F77F426EA98A560FEB689 'me_iso_spu_module.self' 9A34120704C08358E6ECAC560F4EA7B1 'sv_iso_spu_module.self' 94B668D9964D39F0FFFFA2532E9290D3 'sb_iso_spu_module.self' 5F3705A9A4B9CD0D33303623DFD02220 'me_iso_for_ps2emu.self' 23BE2713AB61CCD9FE946F2894BE3D02 'sv_iso_for_ps2emu.self' 88C5C6FA11BD34C2155F58FAF5B84A89 'default.spp' 09F6DACA862850E57906F305A320F95D 'lv1.self' 2FD2CF54908AEE6884AAC2EAB4CFDA86 'lv0' 2E665676F2E9B1D95C5C745E7D7A5339 'lv0.2' F895022A31E005525E888FD105EFCD77 'lv2_kernel.self' B5F54D9A11D1EAE71F35B5907C6B9D3A 'eurus_fw.bin' 62073B10B22126FA539E4AEA2BD34816 'emer_init.self' 168612C5A0FEA5517C04BB244C4074C9 'hdd_copy.self' 4E05177E68B51CD50E868ABFFC336269 'manu_info_spu_module.self' 1085132297E8FA266AEAE703A15858ED 'prog.srvk' 238BC014CE0482718FB7B0AD1E0FAC7F 'pkg.srvk' Some checking were not successful. You may need to check further your dump. Be cautious there is something fishy in your dump. ****************************** * Data Repetition * ****************************** No repetition found on Address '00800000' ! GOOD No repetition found on Address '00400000' ! GOOD No repetition found on Address '00200000' ! GOOD No repetition found on Address '00100000' ! GOOD No repetition found on Address '00080000' ! GOOD No repetition found on Address '00040000' ! GOOD No repetition found on Address '00020000' ! GOOD No repetition found on Address '00010000' ! GOOD No repetition found on Address '00008000' ! GOOD No repetition found on Address '00004000' ! GOOD No repetition found on Address '00002000' ! GOOD No repetition found on Address '00001000' ! GOOD No repetition found on Address '00000800' ! GOOD No repetition found on Address '00000400' ! GOOD No repetition found on Address '00000200' ! GOOD No repetition found on Address '00000100' ! GOOD No repetition found on Address '00000080' ! GOOD No repetition found on Address '00000040' ! GOOD No repetition found on Address '00000020' ! GOOD No repetition found on Address '00000010' ! GOOD No repetition found on Address '00000008' ! GOOD No repetition found! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 0x00BF2948 or 74.67% of the file has been checked ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Error in Per Firmware data -You can run again with option -F only !!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! FAIL fix it and try again ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!
What is the current source code being this?[edit source]
What if you just want to check the statistics!?[edit source]
run the command:
$ ./NORDumpTool NORDumpFileName.bin -P
Example of output for the statistics[edit source]
****************************** * NOR Dump Tool Version0.9.x * ****************************** DRAFT for 0.9.7 ****************************** * Statistics * ****************************** Bytes '00' found 3084206 times, 18.38% Good Bytes 'FF' found 1755117 times, 10.46% Good Other bytes found 50237 times maximum, 0.30% Good !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! GOOD, same player, play again!? ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
What is the current source code being this Statistics option?[edit source]
This is ran by the function:
uint8_t Statistics(FILE *FileToRead)
The way it's done is quite simple.
- Read the dump from start to end
- Increment a counter of each byte each time one is read
- Compare how many of '0x00' and '0xFF' from known values on the wiki
- For other bytes just compare to the wiki refrence the one having the highest count.
What if you just want to check some generic information!?[edit source]
run the command:
$ ./NORDumpTool NORDumpFileName.bin -G
Example of output for generic information[edit source]
What is the current source code being this?[edit source]
This is ran by the function:
uint8_t CheckGenericData(FILE *FileToRead, uint32_t *PercentCheck)
What it does is to check some known data like:
- FACE0FF magic number
- Flash Format "IFI"
- Check the flash's TOC and its entries (entry name, offset and length)
- metldr generic data like its name Offset and length
What if you just want to read some information specific to your console!?[edit source]
run the command:
$ ./NORDumpTool NORDumpFileName.bin -C
Example of output for per console information[edit source]
****************************** * NOR Dump Tool Version0.9.x * ****************************** DRAFT for 0.9.7 ****************************** * Per Console Data * ****************************** Section: mtldr revision : read 43B6EF4AE20F7400C8809E53 Section: mtldr binary size : read 00000E89 Section: mtldr pcn : read ************************ Section: EID0 - IDPS : read 0000000100870008100************* Section: EID0 static : read 0012000B Section: EID0 pcn : read ************************ Section: EID3 - ckp_mgt_id : read 00000000******** Section: EID3 static : read 000100D0 Section: EID3 pcn : read ************************ Section: EID5 - IDPS : read 0000000100870008100************* Section: EID5 static : read 00120730 Section: EID5 pcn : read ************************ Section: PS3 MAC Address : read 00********** Section: cISD1 0001/0002 ? : read 0002 Section: cISD1 - CID : read ******** Section: cISD1 - eCID : read 01CA0122810C9718121************* Section: cISD1 - board_id : read ********* Section: cISD1 - kiban_id : read 3HF1******** Section: cISD1 -0x3F0A4 Data: read 007900790106 Section: cISD1 -0x3F0B0 Data: read 0002001100020012 Section: cISD1 - ckp_mgt_id : read 00000000******** Section: cISD2 - wlan_data1 : read 1FFF000000000000 Section: cISD2 - wlan_data2 : read 0000000000000000 Section: cvtrm - pck/puk : read 6062157E******************************** Section: HDD SHA1 SUM : read 1A6F6D43******************************** Section: HDD information ? : read 00000010 Section: HDD information : read TOSHIBA MK8052GSX Section: PS3 Serial Number : read Y******** Section: Bootldr revision : read 92AC2C2157A577C84DDFECDB Section: Bootldr binary size: read 00002EB3 Section: Bootldr pcn : read ************************ Data found in NOR to identify the SKU are: TargetID | metldr | bootldr TargetID | Offset0 | Offset1 | Offset0 | Offset1 08 E8D0 0E89 2EB3 2EB3 PS3 SKU : CECHLxx (VER-001) minimum FW : 2.45 (item 29 in list) No problem found in the Per Console Data, anyway remain careful! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! GOOD, same player, play again!? ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
What is the current source code being this?[edit source]
Note that this require to set some constant which are found in the full source code.
uint8_t CheckPerConsoleData(FILE *FileToRead, uint32_t *PercentCheck) { uint8_t Cursor = 0; uint8_t SKUFound = 0; uint8_t Status = EXIT_SUCCESS; uint32_t SizedCheck = 0; char *Buffer = malloc(DATA_BUFFER_SIZE+1); char *IDPSTargetID = malloc(0x02+1); char *metldrOffset0 = malloc(0x08+1); char *metldrOffset1 = malloc(0x08+1); char *metldrSize = malloc(0x08+1); char *bootldrOffset0 = malloc(0x08+1); char *bootldrOffset1 = malloc(0x08+1); char *bootldrSize = malloc(0x08+1); char *pcn = malloc(0x18+1); GetSection (FileToRead, SectionTOC[eEID].Offset+0x84, 0x0C, TYPE_HEX, pcn); GetSection (FileToRead, SectionTOC[asecure_loader].Offset+0x40, 0x04, TYPE_HEX, metldrSize); GetSection (FileToRead, SectionTOC[bootldr].Offset, 0x04, TYPE_HEX, bootldrSize); struct Sections SectionPerConsole[] = { {"mtldr revision ", SectionTOC[asecure_loader].Offset+0x44 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"mtldr binary size ", SectionTOC[asecure_loader].Offset+0x50 , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 1, metldrSize}, {"mtldr pcn ", SectionTOC[asecure_loader].Offset+0x54 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"EID0 - IDPS ", SectionTOC[eEID].Offset+0x70 , 0x10, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"EID0 static ", SectionTOC[eEID].Offset+0x80 , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 1, "0012000B"}, {"EID0 pcn ", SectionTOC[eEID].Offset+0x84 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"EID3 - ckp_mgt_id ", SectionTOC[eEID].Offset+0x12A8 , 0x08, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"EID3 static ", SectionTOC[eEID].Offset+0x12B0 , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 1, "000100D0"}, {"EID3 pcn ", SectionTOC[eEID].Offset+0x12B4 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 0, pcn}, {"EID5 - IDPS ", SectionTOC[eEID].Offset+0x13D0 , 0x10, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"EID5 static ", SectionTOC[eEID].Offset+0x13E0 , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 1, "00120730"}, {"EID5 pcn ", SectionTOC[eEID].Offset+0x13E4 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 1, pcn}, {"eEID Nb of Entries ", SectionTOC[eEID].Offset , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000006"}, {"eEID Lentgh ", SectionTOC[eEID].Offset+0x04 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00001DD0"}, {"eEID Unknown/Blank ", SectionTOC[eEID].Offset+0x08 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000000"}, {"eEID EID 0 Entry ", SectionTOC[eEID].Offset+0x10 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000070"}, {"eEID EID 0 Length ", SectionTOC[eEID].Offset+0x14 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000860"}, {"eEID EID 0 ", SectionTOC[eEID].Offset+0x18 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000000"}, {"eEID EID 1 Entry ", SectionTOC[eEID].Offset+0x20 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "000008D0"}, {"eEID EID 1 Length ", SectionTOC[eEID].Offset+0x24 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "000002A0"}, {"eEID EID 1 ", SectionTOC[eEID].Offset+0x28 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000001"}, {"eEID EID 2 Entry ", SectionTOC[eEID].Offset+0x30 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000B70"}, {"eEID EID 2 Length ", SectionTOC[eEID].Offset+0x34 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000730"}, {"eEID EID 2 ", SectionTOC[eEID].Offset+0x38 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000002"}, {"eEID EID 3 Entry ", SectionTOC[eEID].Offset+0x40 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "000012A0"}, {"eEID EID 3 Length ", SectionTOC[eEID].Offset+0x44 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000100"}, {"eEID EID 3 ", SectionTOC[eEID].Offset+0x48 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000003"}, {"eEID EID 4 Entry ", SectionTOC[eEID].Offset+0x50 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "000013A0"}, {"eEID EID 4 Length ", SectionTOC[eEID].Offset+0x54 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000030"}, {"eEID EID 4 ", SectionTOC[eEID].Offset+0x58 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000004"}, {"eEID EID 5 Entry ", SectionTOC[eEID].Offset+0x60 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "000013D0"}, {"eEID EID 5 Length ", SectionTOC[eEID].Offset+0x64 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000A00"}, {"eEID EID 5 ", SectionTOC[eEID].Offset+0x68 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000005"}, {"eEID EID 2 P Block ", SectionTOC[eEID].Offset+0x0B70 , 0x02, TYPE_HEX +DISPLAY_FAIL , 1, "0080"}, {"eEID EID 2 S Block ", SectionTOC[eEID].Offset+0x0B72 , 0x02, TYPE_HEX +DISPLAY_FAIL , 1, "0690"}, {"eEID EID 2 Blank ", SectionTOC[eEID].Offset+0x0B74 , 0x1A, TYPE_HEX +DISPLAY_FAIL , 1, "00000000000000000000000000000000000000000000000000000000"}, {"cISD Nb of Entries ", SectionTOC[cISD].Offset , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000003"}, //Number of entries (3 entries: cISD0, cISD1, and cISD2) {"cISD Lentgh ", SectionTOC[cISD].Offset+0x04 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000270"}, //cISD length (included header, file table, and all entries) {"cISD Unknown/Blank ", SectionTOC[cISD].Offset+0x08 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000000"}, //Unknown/Blank {"cISD cISD0 Entry ", SectionTOC[cISD].Offset+0x10 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000040"}, //ciSD0 Entry point {"cISD cISD0 Length ", SectionTOC[cISD].Offset+0x14 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000020"}, //ciSD0 Length {"cISD cISD0 NB ", SectionTOC[cISD].Offset+0x18 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000000"}, //ciSD0 Entry number {"cISD cISD1 Entry ", SectionTOC[cISD].Offset+0x20 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000060"}, // {"cISD cISD1 Length ", SectionTOC[cISD].Offset+0x24 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000200"}, // {"cISD cISD1 NB ", SectionTOC[cISD].Offset+0x28 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000001"}, // {"cISD cISD2 Entry ", SectionTOC[cISD].Offset+0x30 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000260"}, // {"cISD cISD2 Length ", SectionTOC[cISD].Offset+0x34 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000010"}, // {"cISD cISD2 NB ", SectionTOC[cISD].Offset+0x38 , 0x08, TYPE_HEX +DISPLAY_FAIL , 1, "0000000000000002"}, // {"PS3 MAC Address ", SectionTOC[cISD].Offset+0x40 , 0x06, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD1 Magic Number ", SectionTOC[cISD].Offset+0x60 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "7F49444C"}, {"cISD1 Unknown ", SectionTOC[cISD].Offset+0x64 , 0x02, TYPE_HEX +DISPLAY_FAIL , 1, "0002"}, {"cISD1 Start Offset ", SectionTOC[cISD].Offset+0x66 , 0x02, TYPE_HEX +DISPLAY_FAIL , 1, "0060"}, {"cISD1 Unknown ", SectionTOC[cISD].Offset+0x68 , 0x02, TYPE_HEX +DISPLAY_FAIL , 1, "0100"}, {"cISD1 0001/0002 ? ", SectionTOC[cISD].Offset+0x6A , 0x02, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD1 - CID ", SectionTOC[cISD].Offset+0x6C , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD1 - eCID ", SectionTOC[cISD].Offset+0x70 , 0x20, TYPE_ASCII+DISPLAY_ALWAYS, 0, NULL}, {"cISD1 - board_id ", SectionTOC[cISD].Offset+0x90 , 0x08, TYPE_ASCII+DISPLAY_ALWAYS, 0, NULL}, {"cISD1 - kiban_id ", SectionTOC[cISD].Offset+0x98 , 0x0C, TYPE_ASCII+DISPLAY_ALWAYS, 0, NULL}, {"cISD1 -0x3F0A4 Data", SectionTOC[cISD].Offset+0xA4 , 0x06, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD1 -0x3F0B0 Data", SectionTOC[cISD].Offset+0xB0 , 0x08, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD1 - ckp_mgt_id ", SectionTOC[cISD].Offset+0xB8 , 0x08, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD2 - wlan_data1 ", SectionTOC[cISD].Offset+0x0260 , 0x08, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cISD2 - wlan_data2 ", SectionTOC[cISD].Offset+0x0268 , 0x08, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"cvtrm - pck/puk ", SectionTOC[cvtrm].Offset+0x1D748 , 0x14, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"CELL_EXTNOR_AREA 01", SectionTOC[CELL_EXTNOR_AREA].Offset+0x10 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000001"}, {"Offset for SHA1SUM?", SectionTOC[CELL_EXTNOR_AREA].Offset+0x20 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000200"}, {"CELL_EXTNOR_AREA 44", SectionTOC[CELL_EXTNOR_AREA].Offset+0x24 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000044"}, {"CELL_EXTNOR_AREA 00", SectionTOC[CELL_EXTNOR_AREA].Offset+0x28 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "00000000"}, {"HDD SHA1 SUM ", SectionTOC[CELL_EXTNOR_AREA].Offset+0x2C , 0x14, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"HDD information ? ", SectionTOC[CELL_EXTNOR_AREA].Offset+0x200, 0x04, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"HDD information ", SectionTOC[CELL_EXTNOR_AREA].Offset+0x204, 0x1C, TYPE_ASCII+DISPLAY_ALWAYS, 0, NULL}, {"PS3 Serial Number ", SectionTOC[CELL_EXTNOR_AREA].Offset+0x230, 0x10, TYPE_ASCII+DISPLAY_ALWAYS, 0, NULL}, // http://www.ps3devwiki.com/wiki/Talk:Flash:asecure_loader {"Bootldr revision ", SectionTOC[bootldr].Offset+0x04 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 0, NULL}, {"Bootldr binary size", SectionTOC[bootldr].Offset+0x10 , 0x04, TYPE_HEX +DISPLAY_ALWAYS, 1, bootldrSize}, {"Bootldr pcn ", SectionTOC[bootldr].Offset+0x14 , 0x0C, TYPE_HEX +DISPLAY_ALWAYS, 1, pcn}, {"cvtrm SCEI magicnbr", SectionTOC[cvtrm].Offset , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "53434549"}, {"cvtrm hdr ", SectionTOC[cvtrm].Offset+0x004004 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "5654524D"}, {"cvtrm hdr bis ", SectionTOC[cvtrm].Offset+0x024004 , 0x04, TYPE_HEX +DISPLAY_FAIL , 1, "5654524D"}, {NULL, 0, 0, 0, 0, NULL} // 78 }; printf ("******************************\n"); printf ("* Per Console Data *\n"); printf ("******************************\n"); while (SectionPerConsole[Cursor].name!=NULL) { Status |= ReadSection(SectionPerConsole[Cursor].name , FileToRead , SectionPerConsole[Cursor].Offset , SectionPerConsole[Cursor].Size , SectionPerConsole[Cursor].DisplayType , SectionPerConsole[Cursor].Check , SectionPerConsole[Cursor].Pattern); SizedCheck += SectionPerConsole[Cursor].Size; Cursor++; } GetSection(FileToRead, SectionTOC[asecure_loader].Offset+0x40, 0x04, TYPE_HEX, Buffer); Status |= ReadSection("metldr hdr",FileToRead, SectionTOC[asecure_loader].Offset+0x50, 0x04, TYPE_HEX+DISPLAY_FAIL, 1, Buffer); GetSection(FileToRead, SectionTOC[bootldr].Offset, 0x04, TYPE_HEX, Buffer); Status |= ReadSection("Bootldr hdr",FileToRead, SectionTOC[bootldr].Offset+0x10, 0x04, TYPE_HEX+DISPLAY_FAIL, 1, Buffer); GetSection(FileToRead, SectionTOC[eEID].Offset+0x77, 0x01, TYPE_HEX, IDPSTargetID); GetSection(FileToRead, SectionTOC[asecure_loader].Offset+0x1E, 0x02, TYPE_HEX, metldrOffset0); GetSection(FileToRead, SectionTOC[asecure_loader].Offset+0x42, 0x02, TYPE_HEX, metldrOffset1); GetSection(FileToRead, SectionTOC[bootldr].Offset+0x02, 0x02, TYPE_HEX, bootldrOffset0); GetSection(FileToRead, SectionTOC[bootldr].Offset+0x12, 0x02, TYPE_HEX, bootldrOffset1); printf ("\nData found in NOR to identify the SKU are:\n"); printf ("TargetID | metldr\t | bootldr \n"); printf ("TargetID | Offset0 | Offset1 | Offset0 | Offset1\n"); SetTextYELLOW(); printf (" %7s %7s %7s %7s %7s\n\n", IDPSTargetID, metldrOffset0, metldrOffset1, bootldrOffset0, bootldrOffset1); SetTextNONE(); Cursor=0; while (CheckPerSKU[Cursor].IDPSTargetID!=NULL) { if ((strcmp(CheckPerSKU[Cursor].IDPSTargetID,IDPSTargetID)==0) &&(strcmp(CheckPerSKU[Cursor].metldrOffset0,metldrOffset0)==0) &&(strcmp(CheckPerSKU[Cursor].metldrOffset1,metldrOffset1)==0) &&(strcmp(CheckPerSKU[Cursor].bootldrOffset0,bootldrOffset0)==0) &&(strcmp(CheckPerSKU[Cursor].bootldrOffset1,bootldrOffset1)==0)) { printf ("PS3 SKU : %s minimum FW : %s (item %d in list)\n", CheckPerSKU[Cursor].SKU, CheckPerSKU[Cursor].MinFW, Cursor); SKUFound = 1; } Cursor++; } exit: free (Buffer); free (IDPSTargetID); free (metldrOffset0); free (metldrOffset1); free (metldrSize); free (bootldrOffset0); free (bootldrOffset1); free (bootldrSize); free (pcn); return Status; }
What if you just want to split the Dump in files for each regions!?[edit source]
run the command:
$ ./NORDumpTool NORDumpFileName.bin -S FolderName
Example of output for a complete extraction[edit source]
****************************** * NOR Dump Tool Version0.9.x * ****************************** DRAFT for 0.9.7 ****************************** * Splitting NOR Dump * ****************************** All regions have been exctracted in folder 'FolderName'! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! GOOD, same player, play again!? ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
What files are found in the folder?[edit source]
FolderName/: total 15764 drwxrwxr-x 4 toto toto 4096 Mar 9 23:27 . drwxrwxrwx 5 toto toto 4096 Mar 9 23:27 .. -rw-rw-r-- 1 toto toto 190464 Mar 9 23:27 asecure_loader -rw-rw-r-- 1 toto toto 262144 Mar 9 23:27 bootldr -rw-rw-r-- 1 toto toto 2048 Mar 9 23:27 cCSD -rw-rw-r-- 1 toto toto 131072 Mar 9 23:27 CELL_EXTNOR_AREA -rw-rw-r-- 1 toto toto 2048 Mar 9 23:27 cISD -rw-rw-r-- 1 toto toto 262144 Mar 9 23:27 cvtrm -rw-rw-r-- 1 toto toto 65536 Mar 9 23:27 eEID -rw-rw-r-- 1 toto toto 7340032 Mar 9 23:27 ros0 drwxrwxr-x 2 toto toto 4096 Mar 9 23:27 ROS0Files -rw-rw-r-- 1 toto toto 7340032 Mar 9 23:27 ros1 drwxrwxr-x 2 toto toto 4096 Mar 9 23:27 ROS1Files -rw-rw-r-- 1 toto toto 131072 Mar 9 23:27 trvk_pkg0 -rw-rw-r-- 1 toto toto 131072 Mar 9 23:27 trvk_pkg1 -rw-rw-r-- 1 toto toto 131072 Mar 9 23:27 trvk_prg0 -rw-rw-r-- 1 toto toto 131072 Mar 9 23:27 trvk_prg1 FolderName/ROS0Files: total 6092 drwxrwxr-x 2 toto toto 4096 Mar 9 23:27 . drwxrwxr-x 4 toto toto 4096 Mar 9 23:27 .. -rw-rw-r-- 1 toto toto 17048 Mar 9 23:27 aim_spu_module.self -rw-rw-r-- 1 toto toto 262144 Mar 9 23:27 creserved_0 -rw-rw-r-- 1 toto toto 10016 Mar 9 23:27 default.spp -rw-rw-r-- 1 toto toto 564624 Mar 9 23:27 emer_init.self -rw-rw-r-- 1 toto toto 462740 Mar 9 23:27 eurus_fw.bin -rw-rw-r-- 1 toto toto 419072 Mar 9 23:27 hdd_copy.self -rw-rw-r-- 1 toto toto 947872 Mar 9 23:27 lv0 -rw-rw-r-- 1 toto toto 1280 Mar 9 23:27 lv0.2 -rw-rw-r-- 1 toto toto 1282272 Mar 9 23:27 lv1.self -rw-rw-r-- 1 toto toto 1568912 Mar 9 23:27 lv2_kernel.self -rw-rw-r-- 1 toto toto 4776 Mar 9 23:27 manu_info_spu_module.self -rw-rw-r-- 1 toto toto 32908 Mar 9 23:27 mc_iso_spu_module.self -rw-rw-r-- 1 toto toto 34960 Mar 9 23:27 me_iso_for_ps2emu.self -rw-rw-r-- 1 toto toto 34960 Mar 9 23:27 me_iso_spu_module.self -rw-rw-r-- 1 toto toto 576 Mar 9 23:27 pkg.srvk -rw-rw-r-- 1 toto toto 736 Mar 9 23:27 prog.srvk -rw-rw-r-- 1 toto toto 24456 Mar 9 23:27 sb_iso_spu_module.self -rw-rw-r-- 1 toto toto 119512 Mar 9 23:27 sc_iso.self -rw-rw-r-- 1 toto toto 8 Mar 9 23:27 sdk_version -rw-rw-r-- 1 toto toto 55280 Mar 9 23:27 spp_verifier.self -rw-rw-r-- 1 toto toto 64332 Mar 9 23:27 spu_pkg_rvk_verifier.self -rw-rw-r-- 1 toto toto 51504 Mar 9 23:27 spu_token_processor.self -rw-rw-r-- 1 toto toto 25552 Mar 9 23:27 spu_utoken_processor.self -rw-rw-r-- 1 toto toto 92448 Mar 9 23:27 sv_iso_for_ps2emu.self -rw-rw-r-- 1 toto toto 92448 Mar 9 23:27 sv_iso_spu_module.self FolderName/ROS1Files: total 6064 drwxrwxr-x 2 toto toto 4096 Mar 9 23:27 . drwxrwxr-x 4 toto toto 4096 Mar 9 23:27 .. -rw-rw-r-- 1 toto toto 17048 Mar 9 23:27 aim_spu_module.self -rw-rw-r-- 1 toto toto 262144 Mar 9 23:27 creserved_0 -rw-rw-r-- 1 toto toto 10016 Mar 9 23:27 default.spp -rw-rw-r-- 1 toto toto 567768 Mar 9 23:27 emer_init.self -rw-rw-r-- 1 toto toto 462740 Mar 9 23:27 eurus_fw.bin -rw-rw-r-- 1 toto toto 397056 Mar 9 23:27 hdd_copy.self -rw-rw-r-- 1 toto toto 947168 Mar 9 23:27 lv0 -rw-rw-r-- 1 toto toto 1280 Mar 9 23:27 lv0.2 -rw-rw-r-- 1 toto toto 1281760 Mar 9 23:27 lv1.self -rw-rw-r-- 1 toto toto 1567864 Mar 9 23:27 lv2_kernel.self -rw-rw-r-- 1 toto toto 4776 Mar 9 23:27 manu_info_spu_module.self -rw-rw-r-- 1 toto toto 32908 Mar 9 23:27 mc_iso_spu_module.self -rw-rw-r-- 1 toto toto 34960 Mar 9 23:27 me_iso_for_ps2emu.self -rw-rw-r-- 1 toto toto 34960 Mar 9 23:27 me_iso_spu_module.self -rw-rw-r-- 1 toto toto 576 Mar 9 23:27 pkg.srvk -rw-rw-r-- 1 toto toto 736 Mar 9 23:27 prog.srvk -rw-rw-r-- 1 toto toto 24456 Mar 9 23:27 sb_iso_spu_module.self -rw-rw-r-- 1 toto toto 119512 Mar 9 23:27 sc_iso.self -rw-rw-r-- 1 toto toto 8 Mar 9 23:27 sdk_version -rw-rw-r-- 1 toto toto 55280 Mar 9 23:27 spp_verifier.self -rw-rw-r-- 1 toto toto 64332 Mar 9 23:27 spu_pkg_rvk_verifier.self -rw-rw-r-- 1 toto toto 51504 Mar 9 23:27 spu_token_processor.self -rw-rw-r-- 1 toto toto 25552 Mar 9 23:27 spu_utoken_processor.self -rw-rw-r-- 1 toto toto 90480 Mar 9 23:27 sv_iso_for_ps2emu.self -rw-rw-r-- 1 toto toto 90480 Mar 9 23:27 sv_iso_spu_module.self
Note if a file/region offset, size or name is suspect a file of 0 bytes will be created with a _Broken added to its name.
example with defective parts:
BADDumpFolder/: total 15380 drwxrwxr-x 4 toto toto 4096 Mar 9 00:12 . drwxrwxrwx 5 toto toto 4096 Mar 9 23:27 .. -rw-rw-r-- 1 toto toto 190464 Mar 9 00:19 asecure_loader -rw-rw-r-- 1 toto toto 0 Mar 9 00:19 bootldr_Broken -rw-rw-r-- 1 toto toto 2048 Mar 9 00:19 cCSD -rw-rw-r-- 1 toto toto 0 Mar 9 00:19 CELL_EXTNOR_AREA_Broken -rw-rw-r-- 1 toto toto 2048 Mar 9 00:19 cISD -rw-rw-r-- 1 toto toto 262144 Mar 9 00:19 cvtrm -rw-rw-r-- 1 toto toto 65536 Mar 9 00:19 eEID -rw-rw-r-- 1 toto toto 7340032 Mar 9 00:19 ros0 drwxrwxr-x 2 toto toto 4096 Mar 9 00:12 ROS0Files -rw-rw-r-- 1 toto toto 7340032 Mar 9 00:19 ros1 drwxrwxr-x 2 toto toto 4096 Mar 9 00:12 ROS1Files -rw-rw-r-- 1 toto toto 131072 Mar 9 00:19 trvk_pkg0 -rw-rw-r-- 1 toto toto 131072 Mar 9 00:19 trvk_pkg1 -rw-rw-r-- 1 toto toto 131072 Mar 9 00:19 trvk_prg0 -rw-rw-r-- 1 toto toto 131072 Mar 9 00:19 trvk_prg1
What is the current source code being this?[edit source]
This is ran by the function:
uint8_t ExtractAll (FILE *FileToRead, char *FolderName)
- It basically the flash's TOC for its entries and extract each regions when their data are confirmed correct in the TOC.
- Quickly check the CELL_EXTNOR_AREA and the bootldr separatly before extarction as they are not listed in the TOC
- Goes in both ROS 0 and 1 TOCs to extract their files.