@@ -23,52 +23,45 @@ void picopass_scene_card_menu_on_enter(void* context) {
2323 PicopassBlock * AA1 = picopass -> dev -> dev_data .AA1 ;
2424
2525 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 );
2726 bool secured = (AA1 [PICOPASS_CONFIG_BLOCK_INDEX ].data [7 ] & PICOPASS_FUSE_CRYPT10 ) !=
2827 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 );
2933
30- if (! secured ) {
34+ if (secured && zero_config ) {
3135 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 );
5541 } else {
5642 submenu_add_item (
5743 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 ) {
5856 submenu_add_item (
5957 submenu ,
6058 "Save as LFRFID" ,
6159 SubmenuIndexSaveAsLF ,
6260 picopass_scene_card_menu_submenu_callback ,
6361 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 ) {
7265 submenu_add_item (
7366 submenu ,
7467 "Write" ,
@@ -81,12 +74,14 @@ void picopass_scene_card_menu_on_enter(void* context) {
8174 SubmenuIndexEmulate ,
8275 picopass_scene_card_menu_submenu_callback ,
8376 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+ }
9085 }
9186
9287 submenu_set_selected_item (
0 commit comments