User talk:Anaria

From PS3 Developer wiki
Jump to navigation Jump to search

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:

  1. you cannot study the code, hence cannot know what it is really doing
  2. 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.

  1. Read the dump from start to end
  2. Increment a counter of each byte each time one is read
  3. Compare how many of '0x00' and '0xFF' from known values on the wiki
  4. 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.