@@ -23,52 +23,45 @@ void picopass_scene_card_menu_on_enter(void* context) {
23
23
PicopassBlock * AA1 = picopass -> dev -> dev_data .AA1 ;
24
24
25
25
bool sio = 0x30 == AA1 [PICOPASS_ICLASS_PACS_CFG_BLOCK_INDEX ].data [0 ];
26
- bool no_key = picopass_is_memset (pacs -> key , 0x00 , PICOPASS_BLOCK_LEN );
27
26
bool secured = (AA1 [PICOPASS_CONFIG_BLOCK_INDEX ].data [7 ] & PICOPASS_FUSE_CRYPT10 ) !=
28
27
PICOPASS_FUSE_CRYPT0 ;
28
+ bool zero_config = picopass_is_memset (
29
+ AA1 [PICOPASS_ICLASS_PACS_CFG_BLOCK_INDEX ].data , 0x00 , PICOPASS_BLOCK_LEN );
30
+ bool no_credential = picopass_is_memset (pacs -> credential , 0x00 , sizeof (pacs -> credential ));
31
+ bool no_key =
32
+ picopass_is_memset (AA1 [PICOPASS_SECURE_KD_BLOCK_INDEX ].data , 0xFF , PICOPASS_BLOCK_LEN );
29
33
30
- if (! secured ) {
34
+ if (secured && zero_config ) {
31
35
submenu_add_item (
32
- submenu , "Save" , SubmenuIndexSave , picopass_scene_card_menu_submenu_callback , picopass );
33
- } else if (no_key ) {
34
- if (sio ) {
35
- submenu_add_item (
36
- submenu ,
37
- "Save" ,
38
- SubmenuIndexSave ,
39
- picopass_scene_card_menu_submenu_callback ,
40
- picopass );
41
- submenu_add_item (
42
- submenu ,
43
- "Save in Seader fmt" ,
44
- SubmenuIndexSaveAsSeader ,
45
- picopass_scene_card_menu_submenu_callback ,
46
- picopass );
47
- } else {
48
- submenu_add_item (
49
- submenu ,
50
- "Save Partial" ,
51
- SubmenuIndexSavePartial ,
52
- picopass_scene_card_menu_submenu_callback ,
53
- picopass );
54
- }
36
+ submenu ,
37
+ "Save Partial" ,
38
+ SubmenuIndexSavePartial ,
39
+ picopass_scene_card_menu_submenu_callback ,
40
+ picopass );
55
41
} else {
56
42
submenu_add_item (
57
43
submenu , "Save" , SubmenuIndexSave , picopass_scene_card_menu_submenu_callback , picopass );
44
+ }
45
+
46
+ if (secured && (sio || pacs -> sio )) {
47
+ submenu_add_item (
48
+ submenu ,
49
+ "Save in Seader fmt" ,
50
+ SubmenuIndexSaveAsSeader ,
51
+ picopass_scene_card_menu_submenu_callback ,
52
+ picopass );
53
+ }
54
+
55
+ if (secured && !no_credential ) {
58
56
submenu_add_item (
59
57
submenu ,
60
58
"Save as LFRFID" ,
61
59
SubmenuIndexSaveAsLF ,
62
60
picopass_scene_card_menu_submenu_callback ,
63
61
picopass );
64
- if (pacs -> sio ) { // SR
65
- submenu_add_item (
66
- submenu ,
67
- "Save in Seader fmt" ,
68
- SubmenuIndexSaveAsSeader ,
69
- picopass_scene_card_menu_submenu_callback ,
70
- picopass );
71
- }
62
+ }
63
+
64
+ if (!zero_config && !no_key ) {
72
65
submenu_add_item (
73
66
submenu ,
74
67
"Write" ,
@@ -81,12 +74,14 @@ void picopass_scene_card_menu_on_enter(void* context) {
81
74
SubmenuIndexEmulate ,
82
75
picopass_scene_card_menu_submenu_callback ,
83
76
picopass );
84
- submenu_add_item (
85
- submenu ,
86
- "Change Key" ,
87
- SubmenuIndexChangeKey ,
88
- picopass_scene_card_menu_submenu_callback ,
89
- picopass );
77
+ if (secured ) {
78
+ submenu_add_item (
79
+ submenu ,
80
+ "Change Key" ,
81
+ SubmenuIndexChangeKey ,
82
+ picopass_scene_card_menu_submenu_callback ,
83
+ picopass );
84
+ }
90
85
}
91
86
92
87
submenu_set_selected_item (
0 commit comments