Revoke List: Difference between revisions
Jump to navigation
Jump to search
mNo edit summary |
CelesteBlue (talk | contribs) No edit summary |
||
Line 1: | Line 1: | ||
Location | Revoke list is a [[Certified File]] | ||
= Location = | |||
== PS3 == | |||
CoreOS package 3.56+. | |||
RL_FOR_PACKAGE.img/RL_FOR_PROGRAM.img, pkg.srvk/prog.srvk | |||
== PSVita == | |||
slb2:prog_rvk.srvk | |||
= Decryption = | |||
See [[Certified_File#Decryption]] | |||
= Stucture | |||
Contains includes/excludes to be checked by lv1/hypervisor.<br> | Contains includes/excludes to be checked by lv1/hypervisor.<br> | ||
Line 6: | Line 24: | ||
example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.<br> | example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.<br> | ||
See also: | See also: [[keys]], [[Program Authority Id]]. | ||
[[keys]] | |||
[[ | |||
==Struct== | == Struct == | ||
<source lang="C"> | |||
typedef header { | typedef header { | ||
uint32_t type; /* header type | uint32_t type; /* header type: 3 prg rvk, 4 pkg rvk */ | ||
uint32_t unk; | |||
uint32_t | |||
union { | union { | ||
struct prg { | struct prg { | ||
uint64_t version; /* Version | uint64_t version; /* Version */ | ||
}; | }; | ||
struct pkg { | struct pkg { | ||
uint64_t | uint64_t unk_pkg_rvk; | ||
}; | }; | ||
}; | }; | ||
uint32_t | uint32_t entry_count; /* Number of entries */ | ||
uint8_t padding[12]; | uint8_t padding[12]; | ||
} __attribute__((packed)) rvk_HEADER; | } __attribute__((packed)) rvk_HEADER; | ||
</source> | |||
=== Revoke items === | |||
<source lang="C"> | |||
typedef rvk_entry { | |||
uint32_t program_type; | |||
uint32_t flags; | |||
uint64_t version; | |||
uint64_t program_authority_id; | |||
uint64_t unknown; | |||
} __attribute__((packed)) rvk_entry; | |||
</source> | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! field !! offset !! type !! notes | ! field !! offset !! type !! notes | ||
|- | |- | ||
| | | program_type || 0x00 || u32 || | ||
|- | |- | ||
|flags || 0x08 ||u32 || | | flags || 0x08 || u32 || enforce/block/ignore/whatever? | ||
|- | |- | ||
|version || 0x0c ||u64 || | | version || 0x0c || u64 || program version | ||
|- | |- | ||
| | | program_authority_id || 0x0C || u64 || [[Program Authority Id]] | ||
|- | |- | ||
|unknown ||0x10 ||u64 || | | unknown ||0x10 || u64 || enforce/block/ignore/whatever? | ||
|} | |} | ||
= Examples = | |||
== PS3 = | |||
== | === 3.56 prog.srvk === | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... | 00000200 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... | ||
Line 89: | Line 94: | ||
000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | ||
=== 3.41 trvk_prog0 | === 3.41 trvk_prog0 === | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... | 00000200 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... | ||
Line 106: | Line 112: | ||
000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | ||
=== 3.55 trvk_prog1 | === 3.55 trvk_prog1 === | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... | 00000200 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... | ||
Line 123: | Line 130: | ||
000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ | ||
=== 3.56 pkg.srvk === | |||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 03 00 00 00 02 00 01 00 00 00 00 00 00 ...�...�.�...... 1.0 version | 00000200 00 00 00 03 00 00 00 02 00 01 00 00 00 00 00 00 ...�...�.�...... 1.0 version | ||
Line 132: | Line 139: | ||
=== trvk_pkg0 === | === trvk_pkg0 === | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version | 00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version | ||
Line 141: | Line 149: | ||
=== trvk_pkg1 === | === trvk_pkg1 === | ||
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F | ||
00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version | 00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version | ||
Line 153: | Line 162: | ||
{{Reverse engineering}} | {{Reverse engineering}} | ||
{{Flash}} | {{Flash}} | ||
{{File Formats}}<noinclude>[[Category:Main]]</noinclude> | {{File Formats}} | ||
<noinclude>[[Category:Main]]</noinclude> |
Revision as of 13:36, 26 December 2019
Revoke list is a Certified File
Location
PS3
CoreOS package 3.56+.
RL_FOR_PACKAGE.img/RL_FOR_PROGRAM.img, pkg.srvk/prog.srvk
PSVita
slb2:prog_rvk.srvk
Decryption
= Stucture
Contains includes/excludes to be checked by lv1/hypervisor.
Fetched by Updating process to NAND/NOR-Flash as trvk_prg0/1 and trvk_pkg0/1.
So this is basically a list of additional checks for the hv.
example: if (sce type == 4 & authid = x) then do what flags tell, related with version etc.
See also: keys, Program Authority Id.
Struct
typedef header {
uint32_t type; /* header type: 3 prg rvk, 4 pkg rvk */
uint32_t unk;
union {
struct prg {
uint64_t version; /* Version */
};
struct pkg {
uint64_t unk_pkg_rvk;
};
};
uint32_t entry_count; /* Number of entries */
uint8_t padding[12];
} __attribute__((packed)) rvk_HEADER;
Revoke items
typedef rvk_entry {
uint32_t program_type;
uint32_t flags;
uint64_t version;
uint64_t program_authority_id;
uint64_t unknown;
} __attribute__((packed)) rvk_entry;
field | offset | type | notes |
---|---|---|---|
program_type | 0x00 | u32 | |
flags | 0x08 | u32 | enforce/block/ignore/whatever? |
version | 0x0c | u64 | program version |
program_authority_id | 0x0C | u64 | Program Authority Id |
unknown | 0x10 | u64 | enforce/block/ignore/whatever? |
Examples
= PS3
3.56 prog.srvk
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... 00000210 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 6 items 00000220 00 00 00 03 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... e.g. lv2 00000230 00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF .......�ÿÿÿÿÿÿÿÿ 00000240 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... e.g. vsh 00000250 10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF �p.�ÿ..�ÿÿÿÿÿÿÿÿ 00000260 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... 00000270 10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF �p.�þ..�ÿÿÿÿÿÿÿÿ 00000280 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... e.g. sys_init_osd 00000290 10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF �p.�ý..�ÿÿÿÿÿÿÿÿ 000002A0 00 00 00 04 00 00 00 01 00 03 00 56 00 00 00 00 ...�...�.�.V.... e.g. sys_audio 000002B0 10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF �p.�ü..�ÿÿÿÿÿÿÿÿ 000002C0 00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00 ...�...�.�...... 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ
3.41 trvk_prog0
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 00000210 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 00000220 00 00 00 03 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 00000230 00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF .......�ÿÿÿÿÿÿÿÿ 00000240 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 00000250 10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF �p.�ÿ..�ÿÿÿÿÿÿÿÿ 00000260 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 00000270 10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF �p.�þ..�ÿÿÿÿÿÿÿÿ 00000280 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 00000290 10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF �p.�ý..�ÿÿÿÿÿÿÿÿ 000002A0 00 00 00 04 00 00 00 01 00 03 00 41 00 00 00 00 ...�...�.�.A.... 000002B0 10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF �p.�ü..�ÿÿÿÿÿÿÿÿ 000002C0 00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00 ...�...�.�...... 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ
3.55 trvk_prog1
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 00000210 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 00000220 00 00 00 03 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 00000230 00 00 00 00 00 00 00 02 FF FF FF FF FF FF FF FF .......�ÿÿÿÿÿÿÿÿ 00000240 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 00000250 10 70 00 05 FF 00 00 01 FF FF FF FF FF FF FF FF �p.�ÿ..�ÿÿÿÿÿÿÿÿ 00000260 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 00000270 10 70 00 05 FE 00 00 01 FF FF FF FF FF FF FF FF �p.�þ..�ÿÿÿÿÿÿÿÿ 00000280 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 00000290 10 70 00 05 FD 00 00 01 FF FF FF FF FF FF FF FF �p.�ý..�ÿÿÿÿÿÿÿÿ 000002A0 00 00 00 04 00 00 00 01 00 03 00 55 00 00 00 00 ...�...�.�.U.... 000002B0 10 70 00 05 FC 00 00 01 FF FF FF FF FF FF FF FF �p.�ü..�ÿÿÿÿÿÿÿÿ 000002C0 00 00 00 04 00 00 00 03 00 01 00 00 00 00 00 00 ...�...�.�...... 000002D0 10 70 00 04 00 00 00 01 FF FF FF FF FF FF FF FF �p.�...�ÿÿÿÿÿÿÿÿ
3.56 pkg.srvk
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 03 00 00 00 02 00 01 00 00 00 00 00 00 ...�...�.�...... 1.0 version 00000210 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 1 items 00000220 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 ...�.......�...� 00000230 00 00 00 08 00 05 00 00 00 00 00 00 00 00 00 00 ...�.�..........
trvk_pkg0
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version 00000210 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 2 Items 00000220 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 ...�.......�...� 00000230 00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00 .�.0............ 00000240 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02 ...�.......�...� 00000250 00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00 .�.0............
trvk_pkg1
Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 00000200 00 00 00 03 00 00 00 02 00 02 00 30 00 00 00 00 ...�...�.�.0.... 2.3 version 00000210 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 ...�............ 2 Items 00000220 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 02 ...�.......�...� 00000230 00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00 .�.0............ 00000240 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02 ...�.......�...� 00000250 00 02 00 30 00 00 00 00 00 00 00 00 00 00 00 00 .�.0............
|
|