From 4e656596175845ef18c559ab1ea756645f1ef195 Mon Sep 17 00:00:00 2001 From: Sunny Capt Date: Fri, 2 Dec 2022 02:02:45 +0300 Subject: [PATCH] add script to check for duplicate keys --- .gitignore | 1 + Makefile | 2 + .../ibutton/msk_B1-vizit-kgn_Dallas_2.ibtn} | 0 intercom-keys/msk/keys/ibutton/msk_B1.ibtn | 6 -- intercom-keys/msk/keys/ibutton/msk_F1.ibtn | 6 -- .../msk_Y2-vizit_cyfral-kgn_Dallas.ibtn} | 0 intercom-keys/msk/keys/ibutton/msk_Y2.ibtn | 6 -- .../{msk_Y3.ibtn => msk_Y3_cyfral_ccd.ibtn} | 0 ...{msk_Y4.ibtn => msk_Y4_vizit_metakom.ibtn} | 0 .../keys/ibutton/msk_brn_F1_forward.ibtn} | 0 intercom-keys/msk/keys/lfrfid/msk_B2.rfid | 6 -- intercom-keys/spb/keys/ibutton/spb_B15.ibtn | 6 -- .../lfrfid/spb_B1vis-kgn_EM4100-msk.rfid} | 0 intercom-keys/spb/keys/lfrfid/spb_B1vis.rfid | 6 -- .../keys/ibutton/unknwn_cyfral_ccd-20.ibtn | 6 -- .../unknwn/keys/ibutton/unknwn_forward.ibtn | 6 -- .../unknwn/keys/ibutton/unknwn_keyman.ibtn | 6 -- .../unknwn/keys/ibutton/unknwn_universal.ibtn | 6 -- .../keys/ibutton/unknwn_universal2.ibtn | 6 -- .../unknwn/keys/ibutton/unknwn_vizit.ibtn | 6 -- .../keys/ibutton/unknwn_vizit_cyfral.ibtn | 6 -- .../keys/ibutton/unknwn_vizit_metakom.ibtn | 6 -- scripts/key-utils/check-duplicates.py | 71 +++++++++++++++++++ 23 files changed, 74 insertions(+), 84 deletions(-) create mode 100644 .gitignore create mode 100644 Makefile rename intercom-keys/{kgn/keys/ibutton/kgn_Dallas_2.ibtn => msk/keys/ibutton/msk_B1-vizit-kgn_Dallas_2.ibtn} (100%) delete mode 100644 intercom-keys/msk/keys/ibutton/msk_B1.ibtn delete mode 100644 intercom-keys/msk/keys/ibutton/msk_F1.ibtn rename intercom-keys/{kgn/keys/ibutton/kgn_Dallas_1.ibtn => msk/keys/ibutton/msk_Y2-vizit_cyfral-kgn_Dallas.ibtn} (100%) delete mode 100644 intercom-keys/msk/keys/ibutton/msk_Y2.ibtn rename intercom-keys/msk/keys/ibutton/{msk_Y3.ibtn => msk_Y3_cyfral_ccd.ibtn} (100%) rename intercom-keys/msk/keys/ibutton/{msk_Y4.ibtn => msk_Y4_vizit_metakom.ibtn} (100%) rename intercom-keys/{brn/keys/ibutton/brn1.ibtn => msk/keys/ibutton/msk_brn_F1_forward.ibtn} (100%) delete mode 100644 intercom-keys/msk/keys/lfrfid/msk_B2.rfid delete mode 100644 intercom-keys/spb/keys/ibutton/spb_B15.ibtn rename intercom-keys/{kgn/keys/lfrfid/kgn_EM4100_2.rfid => spb/keys/lfrfid/spb_B1vis-kgn_EM4100-msk.rfid} (100%) delete mode 100644 intercom-keys/spb/keys/lfrfid/spb_B1vis.rfid delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_cyfral_ccd-20.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_forward.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_keyman.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_universal.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_universal2.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_vizit.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_vizit_cyfral.ibtn delete mode 100644 intercom-keys/unknwn/keys/ibutton/unknwn_vizit_metakom.ibtn create mode 100644 scripts/key-utils/check-duplicates.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..485dee6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.idea diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..a7c6d33 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +check-keys: + python3 ./scripts/key-utils/check-duplicates.py \ No newline at end of file diff --git a/intercom-keys/kgn/keys/ibutton/kgn_Dallas_2.ibtn b/intercom-keys/msk/keys/ibutton/msk_B1-vizit-kgn_Dallas_2.ibtn similarity index 100% rename from intercom-keys/kgn/keys/ibutton/kgn_Dallas_2.ibtn rename to intercom-keys/msk/keys/ibutton/msk_B1-vizit-kgn_Dallas_2.ibtn diff --git a/intercom-keys/msk/keys/ibutton/msk_B1.ibtn b/intercom-keys/msk/keys/ibutton/msk_B1.ibtn deleted file mode 100644 index 8a60d5a..0000000 --- a/intercom-keys/msk/keys/ibutton/msk_B1.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 BE 40 11 5A 36 00 E1 diff --git a/intercom-keys/msk/keys/ibutton/msk_F1.ibtn b/intercom-keys/msk/keys/ibutton/msk_F1.ibtn deleted file mode 100644 index 6294267..0000000 --- a/intercom-keys/msk/keys/ibutton/msk_F1.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 76 B8 2E 0F 00 00 5C diff --git a/intercom-keys/kgn/keys/ibutton/kgn_Dallas_1.ibtn b/intercom-keys/msk/keys/ibutton/msk_Y2-vizit_cyfral-kgn_Dallas.ibtn similarity index 100% rename from intercom-keys/kgn/keys/ibutton/kgn_Dallas_1.ibtn rename to intercom-keys/msk/keys/ibutton/msk_Y2-vizit_cyfral-kgn_Dallas.ibtn diff --git a/intercom-keys/msk/keys/ibutton/msk_Y2.ibtn b/intercom-keys/msk/keys/ibutton/msk_Y2.ibtn deleted file mode 100644 index 8f8ef47..0000000 --- a/intercom-keys/msk/keys/ibutton/msk_Y2.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 FF FF FF FF FF FF 2F diff --git a/intercom-keys/msk/keys/ibutton/msk_Y3.ibtn b/intercom-keys/msk/keys/ibutton/msk_Y3_cyfral_ccd.ibtn similarity index 100% rename from intercom-keys/msk/keys/ibutton/msk_Y3.ibtn rename to intercom-keys/msk/keys/ibutton/msk_Y3_cyfral_ccd.ibtn diff --git a/intercom-keys/msk/keys/ibutton/msk_Y4.ibtn b/intercom-keys/msk/keys/ibutton/msk_Y4_vizit_metakom.ibtn similarity index 100% rename from intercom-keys/msk/keys/ibutton/msk_Y4.ibtn rename to intercom-keys/msk/keys/ibutton/msk_Y4_vizit_metakom.ibtn diff --git a/intercom-keys/brn/keys/ibutton/brn1.ibtn b/intercom-keys/msk/keys/ibutton/msk_brn_F1_forward.ibtn similarity index 100% rename from intercom-keys/brn/keys/ibutton/brn1.ibtn rename to intercom-keys/msk/keys/ibutton/msk_brn_F1_forward.ibtn diff --git a/intercom-keys/msk/keys/lfrfid/msk_B2.rfid b/intercom-keys/msk/keys/lfrfid/msk_B2.rfid deleted file mode 100644 index 1924f8f..0000000 --- a/intercom-keys/msk/keys/lfrfid/msk_B2.rfid +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper RFID key -Version: 1 -# Key type can be EM4100, H10301 or I40134 -Key type: EM4100 -# Data size for EM4100 is 5, for H10301 is 3, for I40134 is 3 -Data: 56 5A 11 40 BE diff --git a/intercom-keys/spb/keys/ibutton/spb_B15.ibtn b/intercom-keys/spb/keys/ibutton/spb_B15.ibtn deleted file mode 100644 index fdfa1de..0000000 --- a/intercom-keys/spb/keys/ibutton/spb_B15.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 5E 99 AC 12 00 00 FA diff --git a/intercom-keys/kgn/keys/lfrfid/kgn_EM4100_2.rfid b/intercom-keys/spb/keys/lfrfid/spb_B1vis-kgn_EM4100-msk.rfid similarity index 100% rename from intercom-keys/kgn/keys/lfrfid/kgn_EM4100_2.rfid rename to intercom-keys/spb/keys/lfrfid/spb_B1vis-kgn_EM4100-msk.rfid diff --git a/intercom-keys/spb/keys/lfrfid/spb_B1vis.rfid b/intercom-keys/spb/keys/lfrfid/spb_B1vis.rfid deleted file mode 100644 index 1924f8f..0000000 --- a/intercom-keys/spb/keys/lfrfid/spb_B1vis.rfid +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper RFID key -Version: 1 -# Key type can be EM4100, H10301 or I40134 -Key type: EM4100 -# Data size for EM4100 is 5, for H10301 is 3, for I40134 is 3 -Data: 56 5A 11 40 BE diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_cyfral_ccd-20.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_cyfral_ccd-20.ibtn deleted file mode 100644 index fd188a1..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_cyfral_ccd-20.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 00 00 00 00 00 00 3D diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_forward.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_forward.ibtn deleted file mode 100644 index 6294267..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_forward.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 76 B8 2E 0F 00 00 5C diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_keyman.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_keyman.ibtn deleted file mode 100644 index 0a6958e..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_keyman.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 00 BE 11 AA 00 00 FB diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_universal.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_universal.ibtn deleted file mode 100644 index 56b34a8..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_universal.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 00 00 00 00 90 19 FF diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_universal2.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_universal2.ibtn deleted file mode 100644 index a852395..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_universal2.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 53 D4 FE 00 00 00 6F diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_vizit.ibtn deleted file mode 100644 index 8a60d5a..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 BE 40 11 5A 36 00 E1 diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_cyfral.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_cyfral.ibtn deleted file mode 100644 index 8f8ef47..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_cyfral.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 FF FF FF FF FF FF 2F diff --git a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_metakom.ibtn b/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_metakom.ibtn deleted file mode 100644 index 67e46cf..0000000 --- a/intercom-keys/unknwn/keys/ibutton/unknwn_vizit_metakom.ibtn +++ /dev/null @@ -1,6 +0,0 @@ -Filetype: Flipper iButton key -Version: 1 -# Key type can be Cyfral, Dallas or Metakom -Key type: Dallas -# Data size for Cyfral is 2, for Metakom is 4, for Dallas is 8 -Data: 01 FF FF FF FF 00 00 9B diff --git a/scripts/key-utils/check-duplicates.py b/scripts/key-utils/check-duplicates.py new file mode 100644 index 0000000..4ce0f60 --- /dev/null +++ b/scripts/key-utils/check-duplicates.py @@ -0,0 +1,71 @@ +from collections import defaultdict +from pathlib import Path + + +KEYS_DIR = Path(__file__).parent.parent.parent / 'intercom-keys' +KEYS = defaultdict(list) + + +class KeyTypes: + ibtn = 'ibutton' + rfid = 'lfrfid' + nfc = 'nfc' + + +def parse_data(file_path: Path): + with file_path.open() as file: + key_data = file.read() + + if 'Data' not in key_data: + return '' + + start_index = key_data.index('\nData: ') + 7 + end_index = start_index + key_data[start_index + 1:].index('\n') + + return key_data[start_index:end_index] + + +def handle_keys(dir_path, key_type): + for file in (dir_path / key_type).iterdir(): + if not file.is_file() or file.name == '.gitkeep': + continue + + data = parse_data(file).replace(' ', '').strip() + if not data: + continue + + KEYS[f'{key_type}:{data}'].append(file) + + +def check_duplicates(): + for city_dir in KEYS_DIR.iterdir(): + if not city_dir.is_dir(): + continue + + keys_dir = city_dir / 'keys' + handle_keys(keys_dir, KeyTypes.ibtn) + handle_keys(keys_dir, KeyTypes.rfid) + handle_keys(keys_dir, KeyTypes.nfc) + + +def main(): + global KEYS + + print('CHECK FOR DUPLICATE KEYS:\n') + + KEYS.clear() + check_duplicates() + + result = '\n'.join( + (f'{k}:\n\t' + '\n\t'.join(f.as_posix() for f in v)) + for k, v in KEYS.items() if len(v) > 1 + ) + + if not result: + print('no duplicates') + else: + print(result) + + +if __name__ == '__main__': + main()