Przeglądaj źródła

Merge multi_fuzzer from https://github.com/DarkFlippers/Multi_Fuzzer

Willy-JL 1 rok temu
rodzic
commit
e970773966

+ 8 - 1
multi_fuzzer/CHANGELOG.md

@@ -1,3 +1,10 @@
+## v1.6
+New systems in RFID Fuzzer:
+    - Electra
+    - Idteck
+    - Gallagher
+    - Nexwatch
+- Changed with how lists are handled to make adding RFID protocols easier to add
 ## v1.4
 - Fix worker being not in LFRFIDWorkerIdle before next key (limit TD to 0.1)
 ## v1.3
@@ -36,4 +43,4 @@
 | Default Values      | +       | +    |
 | Load key file       | +       | +    |
 | Load UIDs from file | +       | +    |
-| BFCustomer ID       | -       | +    |
+| BFCustomer ID       | -       | +    |

+ 4 - 0
multi_fuzzer/README.md

@@ -28,6 +28,10 @@ This is a completely remade app, visual style inspired by [iButton fuzzer](https
 - Pyramid
 - Keri
 - Jablotron
+- Electra
+- Idteck
+- Gallagher
+- Nexwatch
 
 ## Application Features
 ### Main screen

+ 2 - 2
multi_fuzzer/application.fam

@@ -14,7 +14,7 @@ App(
     stack_size=2 * 1024,
     fap_author="gid9798 xMasterX",
     fap_weburl="https://github.com/DarkFlippers/Multi_Fuzzer",
-    fap_version="1.5",
+    fap_version="1.6",
     targets=["f7"],
     fap_description="Fuzzer for ibutton readers",
     fap_icon="ibutt_10px.png",
@@ -45,7 +45,7 @@ App(
     stack_size=2 * 1024,
     fap_author="gid9798 xMasterX",
     fap_weburl="https://github.com/DarkFlippers/Multi_Fuzzer",
-    fap_version="1.5",
+    fap_version="1.6",
     targets=["f7"],
     fap_description="Fuzzer for lfrfid readers",
     fap_icon="icons/rfid_10px.png",

+ 4 - 0
multi_fuzzer/catalog/docs/rfid/Changelog.md

@@ -20,6 +20,10 @@
 - Pyramid
 - Keri
 - Jablotron
+- Electra
+- Idteck
+- Gallagher
+- Nexwatch
 
 **Suported attack**
 - Default Values

+ 4 - 0
multi_fuzzer/catalog/docs/rfid/README.md

@@ -19,6 +19,10 @@ The application will also help to identify the "denial of service" vulnerability
 - Pyramid
 - Keri
 - Jablotron
+- Electra
+- Idteck
+- Gallagher
+- Nexwatch
 
 # Application Features
 ## Main screen

+ 321 - 168
multi_fuzzer/lib/worker/protocol.c

@@ -27,6 +27,230 @@ const uint8_t uid_list_ds1990[][DS1990_DATA_SIZE] = {
     {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x14}, // Only FF
     {0x01, 0x78, 0x00, 0x48, 0xFD, 0xFF, 0xFF, 0xD1}, // StarNew Uni5
     {0x01, 0xA9, 0xE4, 0x3C, 0x09, 0x00, 0x00, 0xE6}, // Eltis Uni
+    {0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66},
+    {0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B},
+    {0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0},
+    {0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48},
+    {0x01, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13},
+    {0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE},
+    {0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5},
+    {0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7},
+    {0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C},
+    {0x01, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61},
+    {0x01, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A},
+    {0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2},
+    {0x01, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9},
+    {0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14},
+    {0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x63},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xD1},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFC},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDF},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5C},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xA6},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x4A},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xE0},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x67},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xBE},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x8B},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFF},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x12},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xA1},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xFE},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x43},
+    {0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x57},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x1D},
+    {0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xFC},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x9E},
+    {0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x86},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0},
+    {0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x2D},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x22},
+    {0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xC9},
+    {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7C},
+    {0x01, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x62},
+    {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x79},
+    {0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xE3},
+    {0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x8A},
+    {0x01, 0x10, 0x01, 0x10, 0x01, 0x00, 0x00, 0x38},
+    {0x01, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x19},
+    {0x01, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x68},
+    {0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x5D},
+    {0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0xB6},
+    {0x01, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x68},
+    {0x01, 0x11, 0x11, 0x22, 0x22, 0x00, 0x00, 0x4C},
+    {0x01, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x91},
+    {0x01, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, 0xCD},
+    {0x01, 0x12, 0x31, 0x23, 0x12, 0x31, 0x23, 0x94},
+    {0x01, 0x12, 0x31, 0x23, 0x12, 0x00, 0x00, 0xBC},
+    {0x01, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x4E},
+    {0x01, 0x12, 0x34, 0x12, 0x34, 0x00, 0x00, 0xEC},
+    {0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xFD},
+    {0x01, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x32},
+    {0x01, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x9D},
+    {0x01, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0xB9},
+    {0x01, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xA4},
+    {0x01, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x23},
+    {0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xC4},
+    {0x01, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xA8},
+    {0x01, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x64},
+    {0x01, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x2C},
+    {0x01, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x04},
+    {0x01, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0xA7},
+    {0x01, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x16},
+    {0x01, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x01},
+    {0x01, 0x87, 0x65, 0x43, 0x21, 0x00, 0x00, 0xC6},
+    {0x01, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x76},
+    {0x01, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x8A},
+    {0x01, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x77},
+    {0x01, 0x98, 0x76, 0x54, 0x32, 0x00, 0x00, 0x9B},
+    {0x01, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xD6},
+    {0x01, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x0E},
+    {0x01, 0xAB, 0xCD, 0xEF, 0x00, 0x00, 0x00, 0x84},
+    {0x01, 0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD, 0xD3},
+    {0x01, 0xAB, 0xCD, 0xAB, 0xCD, 0x00, 0x00, 0x29},
+    {0x01, 0xAB, 0xCA, 0xBC, 0xAB, 0xCA, 0xBC, 0x70},
+    {0x01, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xB6},
+    {0x01, 0xBB, 0xBB, 0xBB, 0xBB, 0x00, 0x00, 0x85},
+    {0x01, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xF2},
+    {0x01, 0xBA, 0xBA, 0xBA, 0xBA, 0x00, 0x00, 0x5B},
+    {0x01, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8F},
+    {0x01, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x1F},
+    {0x01, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xEF},
+    {0x01, 0xDD, 0xDD, 0xDD, 0xDD, 0x00, 0x00, 0x94},
+    {0x01, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x4F},
+    {0x01, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x10},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0x3D},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x00, 0xAC},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x88},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x6A},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x12, 0x8D},
+    {0x01, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x88},
+    {0x01, 0xCB, 0xA9, 0x87, 0x65, 0x43, 0x21, 0xE6},
+    {0x01, 0xCB, 0xA9, 0x87, 0x65, 0x00, 0x00, 0x55},
+    {0x01, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x02},
+    {0x01, 0xFE, 0xDC, 0xBA, 0x98, 0x00, 0x00, 0xA4},
+    {0x01, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0x0E},
+    {0x01, 0xCA, 0xCA, 0xCA, 0xCA, 0x00, 0x00, 0xE9},
+    {0x01, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x6B},
+    {0x01, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x45},
+    {0x01, 0xCA, 0xFE, 0xCA, 0xFE, 0xCA, 0xFE, 0x0A},
+    {0x01, 0xCA, 0xFE, 0xCA, 0xFE, 0x00, 0x00, 0x32},
+    {0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D},
+    {0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0},
+    {0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB},
+    {0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73},
+    {0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28},
+    {0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5},
+    {0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E},
+    {0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC},
+    {0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7},
+    {0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A},
+    {0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
+    {0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99},
+    {0xFF, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2},
+    {0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F},
+    {0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x58},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xEA},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBA},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xC7},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE4},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x2B},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x67},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x9D},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x71},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xDB},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x5C},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x85},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xB0},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC4},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x29},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x9A},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xC5},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x78},
+    {0xFF, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x6C},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x26},
+    {0xFF, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xC7},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xA5},
+    {0xFF, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xBD},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xFB},
+    {0xFF, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x16},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x19},
+    {0xFF, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF2},
+    {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x47},
+    {0xFF, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x59},
+    {0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42},
+    {0xFF, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xD8},
+    {0xFF, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xB1},
+    {0xFF, 0x10, 0x01, 0x10, 0x01, 0x00, 0x00, 0x03},
+    {0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x22},
+    {0xFF, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x53},
+    {0xFF, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x66},
+    {0xFF, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x8D},
+    {0xFF, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x53},
+    {0xFF, 0x11, 0x11, 0x22, 0x22, 0x00, 0x00, 0x77},
+    {0xFF, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0xAA},
+    {0xFF, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, 0xF6},
+    {0xFF, 0x12, 0x31, 0x23, 0x12, 0x31, 0x23, 0xAF},
+    {0xFF, 0x12, 0x31, 0x23, 0x12, 0x00, 0x00, 0x87},
+    {0xFF, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x75},
+    {0xFF, 0x12, 0x34, 0x12, 0x34, 0x00, 0x00, 0xD7},
+    {0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xC6},
+    {0xFF, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x09},
+    {0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xA6},
+    {0xFF, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x82},
+    {0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x9F},
+    {0xFF, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x18},
+    {0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF},
+    {0xFF, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x93},
+    {0xFF, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x5F},
+    {0xFF, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x17},
+    {0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x3F},
+    {0xFF, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x9C},
+    {0xFF, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x2D},
+    {0xFF, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x3A},
+    {0xFF, 0x87, 0x65, 0x43, 0x21, 0x00, 0x00, 0xFD},
+    {0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x4D},
+    {0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xB1},
+    {0xFF, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x4C},
+    {0xFF, 0x98, 0x76, 0x54, 0x32, 0x00, 0x00, 0xA0},
+    {0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xED},
+    {0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x35},
+    {0xFF, 0xAB, 0xCD, 0xEF, 0x00, 0x00, 0x00, 0xBF},
+    {0xFF, 0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD, 0xE8},
+    {0xFF, 0xAB, 0xCD, 0xAB, 0xCD, 0x00, 0x00, 0x12},
+    {0xFF, 0xAB, 0xCA, 0xBC, 0xAB, 0xCA, 0xBC, 0x4B},
+    {0xFF, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x8D},
+    {0xFF, 0xBB, 0xBB, 0xBB, 0xBB, 0x00, 0x00, 0xBE},
+    {0xFF, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xC9},
+    {0xFF, 0xBA, 0xBA, 0xBA, 0xBA, 0x00, 0x00, 0x60},
+    {0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xB4},
+    {0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x24},
+    {0xFF, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xD4},
+    {0xFF, 0xDD, 0xDD, 0xDD, 0xDD, 0x00, 0x00, 0xAF},
+    {0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x74},
+    {0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x2B},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0x06},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x00, 0x97},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0xB3},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x51},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x12, 0xB6},
+    {0xFF, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0xB3},
+    {0xFF, 0xCB, 0xA9, 0x87, 0x65, 0x43, 0x21, 0xDD},
+    {0xFF, 0xCB, 0xA9, 0x87, 0x65, 0x00, 0x00, 0x6E},
+    {0xFF, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x39},
+    {0xFF, 0xFE, 0xDC, 0xBA, 0x98, 0x00, 0x00, 0x9F},
+    {0xFF, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0x35},
+    {0xFF, 0xCA, 0xCA, 0xCA, 0xCA, 0x00, 0x00, 0xD2},
+    {0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x50},
+    {0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x7E},
+    {0xFF, 0xCA, 0xFE, 0xCA, 0xFE, 0xCA, 0xFE, 0x31},
+    {0xFF, 0xCA, 0xFE, 0xCA, 0xFE, 0x00, 0x00, 0x09},
 };
 
 const uint8_t uid_list_metakom[][Metakom_DATA_SIZE] = {
@@ -71,19 +295,13 @@ const uint8_t uid_list_cyfral[][Cyfral_DATA_SIZE] = {
 // ###########################
 // ## Rfid_125khz Protocols ##
 // ###########################
-#define EM4100_DATA_SIZE (5)
-#define HIDProx_DATA_SIZE (6)
-#define PAC_DATA_SIZE (4)
-#define H10301_DATA_SIZE (3)
-#define IOPROXXSF_DATA_SIZE (4)
-#define PARADOX_DATA_SIZE (6)
-#define INDALA26_DATA_SIZE (4)
-#define VIKING_DATA_SIZE (4)
-#define PYRAMID_DATA_SIZE (4)
-#define KERI_DATA_SIZE (4)
-#define JABLOTRON_DATA_SIZE (5)
+#define THREEBYTE_DATA_SIZE (3) // H10301
+#define FOURBYTE_DATA_SIZE (4) // PAC/Stanley, IoProxXSF, Indala26, Viking, Pyramid, Keri
+#define FIVEBYTE_DATA_SIZE (5) // EM4100, Joblotron
+#define SIXBYTE_DATA_SIZE (6) // HIDProx, Paradox
+#define EIGHTBYTE_DATA_SIZE (8) // Electra, Idteck, Gallagher, Nexwatch
 
-const uint8_t uid_list_em4100[][EM4100_DATA_SIZE] = {
+const uint8_t uid_list_5byte[][FIVEBYTE_DATA_SIZE] = {
     {0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
     {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
     {0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
@@ -103,7 +321,7 @@ const uint8_t uid_list_em4100[][EM4100_DATA_SIZE] = {
     {0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
 };
 
-const uint8_t uid_list_hid[][HIDProx_DATA_SIZE] = {
+const uint8_t uid_list_6byte[][SIXBYTE_DATA_SIZE] = {
     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
     {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
     {0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
@@ -120,7 +338,7 @@ const uint8_t uid_list_hid[][HIDProx_DATA_SIZE] = {
     {0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
 };
 
-const uint8_t uid_list_pac[][PAC_DATA_SIZE] = {
+const uint8_t uid_list_4byte[][FOURBYTE_DATA_SIZE] = {
     {0x00, 0x00, 0x00, 0x00}, // Null bytes
     {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
     {0x11, 0x11, 0x11, 0x11}, // Only 11
@@ -140,7 +358,7 @@ const uint8_t uid_list_pac[][PAC_DATA_SIZE] = {
     {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
 };
 
-const uint8_t uid_list_h10301[][H10301_DATA_SIZE] = {
+const uint8_t uid_list_3byte[][THREEBYTE_DATA_SIZE] = {
     {0x00, 0x00, 0x00}, // Null bytes
     {0xFF, 0xFF, 0xFF}, // Only FF
     {0x11, 0x11, 0x11}, // Only 11
@@ -157,126 +375,21 @@ const uint8_t uid_list_h10301[][H10301_DATA_SIZE] = {
     {0xCA, 0xCA, 0xCA}, // From arha
 };
 
-const uint8_t uid_list_ioproxxsf[][IOPROXXSF_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78}, // Incremental UID
-    {0x9A, 0x78, 0x56, 0x34}, // Decremental UID
-    {0x04, 0xd0, 0x9b, 0x0d}, // From arha
-    {0x34, 0x00, 0x29, 0x3d}, // From arha
-    {0x04, 0xdf, 0x00, 0x00}, // From arha
-    {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_paradox[][PARADOX_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A, 0x78, 0x56}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_indala26[][INDALA26_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_viking[][VIKING_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_pyramid[][PYRAMID_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_keri[][KERI_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
-};
-
-const uint8_t uid_list_jablotron[][JABLOTRON_DATA_SIZE] = {
-    {0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
-    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
-    {0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
-    {0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
-    {0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
-    {0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
-    {0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
-    {0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
-    {0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
-    {0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
-    {0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
-    {0x12, 0x34, 0x56, 0x78, 0x9A}, // Incremental UID
-    {0xFF, 0xDE, 0xBC, 0x9A, 0x78}, // Decremental UID
-    {0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
+const uint8_t uid_list_8byte[][EIGHTBYTE_DATA_SIZE] = {
+    {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
+    {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
+    {0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
+    {0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
+    {0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
+    {0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
+    {0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
+    {0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
+    {0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
+    {0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
+    {0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
+    {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0xDE, 0xFF}, // Incremental UID
+    {0xFF, 0xDE, 0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12}, // Decremental UID
+    {0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
 };
 
 #if defined(RFID_125_PROTOCOL)
@@ -284,111 +397,151 @@ const FuzzerProtocol fuzzer_proto_items[] = {
     // EM4100
     {
         .name = "EM4100",
-        .data_size = EM4100_DATA_SIZE,
+        .data_size = FIVEBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_em4100,
-                .len = COUNT_OF(uid_list_em4100),
+                .val = (const uint8_t*)&uid_list_5byte,
+                .len = COUNT_OF(uid_list_5byte),
             },
     },
     // HIDProx
     {
         .name = "HIDProx",
-        .data_size = HIDProx_DATA_SIZE,
+        .data_size = SIXBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_hid,
-                .len = COUNT_OF(uid_list_hid),
+                .val = (const uint8_t*)&uid_list_6byte,
+                .len = COUNT_OF(uid_list_6byte),
             },
     },
     // PAC
     {
         .name = "PAC/Stanley",
-        .data_size = PAC_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_pac,
-                .len = COUNT_OF(uid_list_pac),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
     // H10301
     {
         .name = "H10301",
-        .data_size = H10301_DATA_SIZE,
+        .data_size = THREEBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_h10301,
-                .len = COUNT_OF(uid_list_h10301),
+                .val = (const uint8_t*)&uid_list_3byte,
+                .len = COUNT_OF(uid_list_3byte),
             },
     },
     // IoProxXSF
     {
         .name = "IoProxXSF",
-        .data_size = IOPROXXSF_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_ioproxxsf,
-                .len = COUNT_OF(uid_list_ioproxxsf),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
     // Paradox
     {
         .name = "Paradox",
-        .data_size = PARADOX_DATA_SIZE,
+        .data_size = SIXBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_paradox,
-                .len = COUNT_OF(uid_list_paradox),
+                .val = (const uint8_t*)&uid_list_6byte,
+                .len = COUNT_OF(uid_list_6byte),
             },
     },
     // Indala26
     {
         .name = "Indala26",
-        .data_size = INDALA26_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_indala26,
-                .len = COUNT_OF(uid_list_indala26),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
     // Viking
     {
         .name = "Viking",
-        .data_size = VIKING_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_viking,
-                .len = COUNT_OF(uid_list_viking),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
    // Pyramid
     {
         .name = "Pyramid",
-        .data_size = PYRAMID_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_pyramid,
-                .len = COUNT_OF(uid_list_pyramid),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
    // Keri
     {
         .name = "Keri",
-        .data_size = KERI_DATA_SIZE,
+        .data_size = FOURBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_keri,
-                .len = COUNT_OF(uid_list_keri),
+                .val = (const uint8_t*)&uid_list_4byte,
+                .len = COUNT_OF(uid_list_4byte),
             },
     },
    // Jablotron
     {
         .name = "Jablotron",
-        .data_size = JABLOTRON_DATA_SIZE,
+        .data_size = FIVEBYTE_DATA_SIZE,
+        .dict =
+            {
+                .val = (const uint8_t*)&uid_list_5byte,
+                .len = COUNT_OF(uid_list_5byte),
+            },
+    },
+   // Electra
+    {
+        .name = "Electra",
+        .data_size = EIGHTBYTE_DATA_SIZE,
+        .dict =
+            {
+                .val = (const uint8_t*)&uid_list_8byte,
+                .len = COUNT_OF(uid_list_8byte),
+            },
+    },
+   // Idteck
+    {
+        .name = "Idteck",
+        .data_size = EIGHTBYTE_DATA_SIZE,
+        .dict =
+            {
+                .val = (const uint8_t*)&uid_list_8byte,
+                .len = COUNT_OF(uid_list_8byte),
+            },
+    },
+   // Gallagher
+    {
+        .name = "Gallagher",
+        .data_size = EIGHTBYTE_DATA_SIZE,
+        .dict =
+            {
+                .val = (const uint8_t*)&uid_list_8byte,
+                .len = COUNT_OF(uid_list_8byte),
+            },
+    },
+   // Nexwatch
+    {
+        .name = "Nexwatch",
+        .data_size = EIGHTBYTE_DATA_SIZE,
         .dict =
             {
-                .val = (const uint8_t*)&uid_list_jablotron,
-                .len = COUNT_OF(uid_list_jablotron),
+                .val = (const uint8_t*)&uid_list_8byte,
+                .len = COUNT_OF(uid_list_8byte),
             },
     },
 };

+ 2 - 2
multi_fuzzer/lib/worker/protocol_i.h

@@ -3,7 +3,7 @@
 #include "protocol.h"
 
 #if defined(RFID_125_PROTOCOL)
-#define MAX_PAYLOAD_SIZE (6)
+#define MAX_PAYLOAD_SIZE (8)
 #define PROTOCOL_DEF_IDLE_TIME (4)
 #define PROTOCOL_DEF_EMU_TIME (5)
 #define PROTOCOL_TIME_DELAY_MIN PROTOCOL_DEF_IDLE_TIME + PROTOCOL_DEF_EMU_TIME
@@ -48,4 +48,4 @@ struct FuzzerProtocol {
 // #define FUZZ_TIME_DELAY_DEFAULT (8)
 // #define FUZZ_TIME_DELAY_MAX (80)
 
-extern const FuzzerProtocol fuzzer_proto_items[];
+extern const FuzzerProtocol fuzzer_proto_items[];