LIC.DAT: Difference between revisions

From PS3 Developer wiki
Jump to navigation Jump to search
mNo edit summary
Line 22: Line 22:
{|class="wikitable"
{|class="wikitable"
|-
|-
! Offset !! Length !! Value !! Description
! Offset !! Length !! Example !! Name !! Description
|-
|-
| 0x0 || 0x8 || 'PS3LICDA' || Magic
| 0x0 || 0x8 || 'PS3LICDA' || Magic ||
|-
|-
| 0x8 || 0x4 || 0x1 || Version
| 0x8 || 0x4 || 0x1 || Version || DAT version or license version ?
|-
|-
| 0xC || 0x4 || 0x80000000 || 0x00000000 = debug<br>0x80000000 = retail
| 0xC || 0x4 || 0x80000000 || License type ? || 0x00000000 = debug<br>0x80000000 = retail
|-
|-
| 0x10 || 0x4 || 0x00000900 || chunks end (can be calculated with the formula: ''chunks start + chunk amounts * chunk size'')
| 0x10 || 0x4 || 0x00000900 || License table, absolute end offset || chunks end (can be calculated with the formula: ''chunks start + chunk amounts * chunk size'')
|-
|-
| 0x14 || 0x4 || 0x00000800 || chunks start (static)
| 0x14 || 0x4 || 0x00000800 || License table, absolute start offset || chunks start (static)
|-
|-
| 0x18 || 0x4 || 0x00000100 || chunk size (static)
| 0x18 || 0x4 || 0x00000100 || License size || chunk size (static)
|-
|-
| 0x1C || 0x4 || 0x00000001 || chunk amounts
| 0x1C || 0x4 || 0x00000001 || License amount || chunk amounts
|-
|-
| 0x20 || 0x4 || 0xD8A9D38C|| CRC32 from the first byte till the end of last chunk (without CRC32 value)
| 0x20 || 0x4 || 0xD8A9D38C|| crc32 || CRC32 from the first byte till the end of last chunk (without CRC32 value)
|}
|}


Line 45: Line 45:
{|class="wikitable"
{|class="wikitable"
|-
|-
! Address !! Length !! Value !! Description
! Offset !! Length !! Value !! Description
|-
|-
| 0x800+i*0x100 || 0x1 || 0x1 || kind of ID
| 0x800+i*0x100 || 0x1 || 0x1 || kind of ID

Revision as of 16:59, 28 August 2015

See also Discussion page

  • Location: /dev_bdvd/PS3_GAME/LICDIR/LIC.DAT (soon LIC.EDAT)
  • Checked within Level 2 Kernel and possible via lv2syscall476
  • Final File size is: 0x10000 Bytes

example

00000000 50 53 33 4C 49 43 44 41 00 00 00 01 80 00 00 00 PS3LICDA........
00000010 00 00 09 00 00 00 08 00 00 00 01 00 00 00 00 01 ................
00000020 8C D3 A9 D8 00 00 00 00 00 00 00 00 00 00 00 00 ................
...
00000800 01 42 4C 45 53 30 31 36 32 33 00 00 00 00 00 00 .BLES01623......
...

structure

header

Offset Length Example Name Description
0x0 0x8 'PS3LICDA' Magic
0x8 0x4 0x1 Version DAT version or license version ?
0xC 0x4 0x80000000 License type ? 0x00000000 = debug
0x80000000 = retail
0x10 0x4 0x00000900 License table, absolute end offset chunks end (can be calculated with the formula: chunks start + chunk amounts * chunk size)
0x14 0x4 0x00000800 License table, absolute start offset chunks start (static)
0x18 0x4 0x00000100 License size chunk size (static)
0x1C 0x4 0x00000001 License amount chunk amounts
0x20 0x4 0xD8A9D38C crc32 CRC32 from the first byte till the end of last chunk (without CRC32 value)

chunk

Offset Length Value Description
0x800+i*0x100 0x1 0x1 kind of ID
0x801+i*0x100 ID depending 'BLES01623' Title ID / Contend ID

The first byte indicates type and size of following text:

  • 0x01 means 0xA bytes, a regular TitleID (ex. BLES01623) with \0 terminating
  • 0x02 means 0x2A bytes, a regular SKU ID (ex. UP0002-BLES01623_00-0000111122223333-E001) with \0 terminating
  • 0x03 means 0x25 bytes, a regular npdrm ContentID (ex. UP0002-BLES01623_00-0000111122223333) with \0 terminating