protocol.c 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714
  1. #include "protocol_i.h"
  2. #include "furi.h"
  3. // #######################
  4. // ## Ibutton Protocols ##
  5. // #######################
  6. #define DS1990_DATA_SIZE (8)
  7. #define Metakom_DATA_SIZE (4)
  8. #define Cyfral_DATA_SIZE (2)
  9. const uint8_t uid_list_ds1990[][DS1990_DATA_SIZE] = {
  10. {0x01, 0xBE, 0x40, 0x11, 0x5A, 0x36, 0x00, 0xE1}, //– код универсального ключа, для Vizit
  11. {0x01, 0xBE, 0x40, 0x11, 0x5A, 0x56, 0x00, 0xBB}, //- проверен работает
  12. {0x01, 0xBE, 0x40, 0x11, 0x00, 0x00, 0x00, 0x77}, //- проверен работает
  13. {0x01, 0xBE, 0x40, 0x11, 0x0A, 0x00, 0x00, 0x1D}, //- проверен работает Визит иногда КЕЙМАНЫ
  14. {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x2F}, //- проверен(метаком, цифрал, ВИЗИТ).
  15. {0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x9B}, //- проверен Визит, Метакомы, КОНДОР
  16. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x14}, //???-Открываает 98% Метаком и некоторые Цифрал
  17. {0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0x19, 0xFF}, //???-Отлично работает на старых домофонах
  18. {0x01, 0x6F, 0x2E, 0x88, 0x8A, 0x00, 0x00, 0x4D}, //???-Открывать что-то должен
  19. {0x01, 0x53, 0xD4, 0xFE, 0x00, 0x00, 0x7E, 0x88}, //???-Cyfral, Metakom
  20. {0x01, 0x53, 0xD4, 0xFE, 0x00, 0x00, 0x00, 0x6F}, //???-домофоны Визит (Vizit) - до 99%
  21. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D}, //???-домофоны Cyfral CCD-20 - до 70%
  22. {0x01, 0x00, 0xBE, 0x11, 0xAA, 0x00, 0x00, 0xFB}, //???-домофоны Кейман (KEYMAN)
  23. {0x01, 0x76, 0xB8, 0x2E, 0x0F, 0x00, 0x00, 0x5C}, //???-домофоны Форвард
  24. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
  25. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x14}, // Only FF
  26. {0x01, 0x78, 0x00, 0x48, 0xFD, 0xFF, 0xFF, 0xD1}, // StarNew Uni5
  27. {0x01, 0xA9, 0xE4, 0x3C, 0x09, 0x00, 0x00, 0xE6}, // Eltis Uni
  28. {0x01, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66},
  29. {0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B},
  30. {0x01, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0},
  31. {0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48},
  32. {0x01, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13},
  33. {0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE},
  34. {0x01, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA5},
  35. {0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD7},
  36. {0x01, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C},
  37. {0x01, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x61},
  38. {0x01, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A},
  39. {0x01, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2},
  40. {0x01, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF9},
  41. {0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14},
  42. {0x01, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F},
  43. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x63},
  44. {0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xD1},
  45. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81},
  46. {0x01, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xFC},
  47. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xDF},
  48. {0x01, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x10},
  49. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x5C},
  50. {0x01, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0xA6},
  51. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x02},
  52. {0x01, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x4A},
  53. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xE0},
  54. {0x01, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x67},
  55. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xBE},
  56. {0x01, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x8B},
  57. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xFF},
  58. {0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x12},
  59. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0xA1},
  60. {0x01, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xFE},
  61. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x43},
  62. {0x01, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x57},
  63. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x1D},
  64. {0x01, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xFC},
  65. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x9E},
  66. {0x01, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x86},
  67. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xC0},
  68. {0x01, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x2D},
  69. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x22},
  70. {0x01, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xC9},
  71. {0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x7C},
  72. {0x01, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x62},
  73. {0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x79},
  74. {0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xE3},
  75. {0x01, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0x8A},
  76. {0x01, 0x10, 0x01, 0x10, 0x01, 0x00, 0x00, 0x38},
  77. {0x01, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x19},
  78. {0x01, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x68},
  79. {0x01, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x5D},
  80. {0x01, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0xB6},
  81. {0x01, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x68},
  82. {0x01, 0x11, 0x11, 0x22, 0x22, 0x00, 0x00, 0x4C},
  83. {0x01, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0x91},
  84. {0x01, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, 0xCD},
  85. {0x01, 0x12, 0x31, 0x23, 0x12, 0x31, 0x23, 0x94},
  86. {0x01, 0x12, 0x31, 0x23, 0x12, 0x00, 0x00, 0xBC},
  87. {0x01, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x4E},
  88. {0x01, 0x12, 0x34, 0x12, 0x34, 0x00, 0x00, 0xEC},
  89. {0x01, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xFD},
  90. {0x01, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x32},
  91. {0x01, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x9D},
  92. {0x01, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0xB9},
  93. {0x01, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0xA4},
  94. {0x01, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x23},
  95. {0x01, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xC4},
  96. {0x01, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0xA8},
  97. {0x01, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x64},
  98. {0x01, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x2C},
  99. {0x01, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x04},
  100. {0x01, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0xA7},
  101. {0x01, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x16},
  102. {0x01, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x01},
  103. {0x01, 0x87, 0x65, 0x43, 0x21, 0x00, 0x00, 0xC6},
  104. {0x01, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x76},
  105. {0x01, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0x8A},
  106. {0x01, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x77},
  107. {0x01, 0x98, 0x76, 0x54, 0x32, 0x00, 0x00, 0x9B},
  108. {0x01, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xD6},
  109. {0x01, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x0E},
  110. {0x01, 0xAB, 0xCD, 0xEF, 0x00, 0x00, 0x00, 0x84},
  111. {0x01, 0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD, 0xD3},
  112. {0x01, 0xAB, 0xCD, 0xAB, 0xCD, 0x00, 0x00, 0x29},
  113. {0x01, 0xAB, 0xCA, 0xBC, 0xAB, 0xCA, 0xBC, 0x70},
  114. {0x01, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xB6},
  115. {0x01, 0xBB, 0xBB, 0xBB, 0xBB, 0x00, 0x00, 0x85},
  116. {0x01, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xF2},
  117. {0x01, 0xBA, 0xBA, 0xBA, 0xBA, 0x00, 0x00, 0x5B},
  118. {0x01, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8F},
  119. {0x01, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x1F},
  120. {0x01, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xEF},
  121. {0x01, 0xDD, 0xDD, 0xDD, 0xDD, 0x00, 0x00, 0x94},
  122. {0x01, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x4F},
  123. {0x01, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x10},
  124. {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0x3D},
  125. {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x00, 0xAC},
  126. {0x01, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x88},
  127. {0x01, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x6A},
  128. {0x01, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x12, 0x8D},
  129. {0x01, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0x88},
  130. {0x01, 0xCB, 0xA9, 0x87, 0x65, 0x43, 0x21, 0xE6},
  131. {0x01, 0xCB, 0xA9, 0x87, 0x65, 0x00, 0x00, 0x55},
  132. {0x01, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x02},
  133. {0x01, 0xFE, 0xDC, 0xBA, 0x98, 0x00, 0x00, 0xA4},
  134. {0x01, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0x0E},
  135. {0x01, 0xCA, 0xCA, 0xCA, 0xCA, 0x00, 0x00, 0xE9},
  136. {0x01, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x6B},
  137. {0x01, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x45},
  138. {0x01, 0xCA, 0xFE, 0xCA, 0xFE, 0xCA, 0xFE, 0x0A},
  139. {0x01, 0xCA, 0xFE, 0xCA, 0xFE, 0x00, 0x00, 0x32},
  140. {0xFF, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5D},
  141. {0xFF, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB0},
  142. {0xFF, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEB},
  143. {0xFF, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73},
  144. {0xFF, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28},
  145. {0xFF, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC5},
  146. {0xFF, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E},
  147. {0xFF, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEC},
  148. {0xFF, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0xB7},
  149. {0xFF, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A},
  150. {0xFF, 0xB0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01},
  151. {0xFF, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x99},
  152. {0xFF, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC2},
  153. {0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2F},
  154. {0xFF, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x74},
  155. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x58},
  156. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0xEA},
  157. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xBA},
  158. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xC7},
  159. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xE4},
  160. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x2B},
  161. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x67},
  162. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x9D},
  163. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x39},
  164. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x71},
  165. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0xDB},
  166. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x5C},
  167. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x85},
  168. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0xB0},
  169. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xC4},
  170. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x29},
  171. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x9A},
  172. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0xC5},
  173. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0x78},
  174. {0xFF, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x6C},
  175. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0B, 0x26},
  176. {0xFF, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0xC7},
  177. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0xA5},
  178. {0xFF, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0xBD},
  179. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0xFB},
  180. {0xFF, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x16},
  181. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x19},
  182. {0xFF, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0xF2},
  183. {0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x47},
  184. {0xFF, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x59},
  185. {0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x42},
  186. {0xFF, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0xD8},
  187. {0xFF, 0x10, 0x01, 0x10, 0x01, 0x10, 0x01, 0xB1},
  188. {0xFF, 0x10, 0x01, 0x10, 0x01, 0x00, 0x00, 0x03},
  189. {0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x22},
  190. {0xFF, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x53},
  191. {0xFF, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x66},
  192. {0xFF, 0x11, 0x11, 0x11, 0x11, 0x00, 0x00, 0x8D},
  193. {0xFF, 0x11, 0x11, 0x22, 0x22, 0x33, 0x33, 0x53},
  194. {0xFF, 0x11, 0x11, 0x22, 0x22, 0x00, 0x00, 0x77},
  195. {0xFF, 0x12, 0x12, 0x12, 0x12, 0x12, 0x12, 0xAA},
  196. {0xFF, 0x12, 0x12, 0x12, 0x12, 0x00, 0x00, 0xF6},
  197. {0xFF, 0x12, 0x31, 0x23, 0x12, 0x31, 0x23, 0xAF},
  198. {0xFF, 0x12, 0x31, 0x23, 0x12, 0x00, 0x00, 0x87},
  199. {0xFF, 0x12, 0x34, 0x12, 0x34, 0x12, 0x34, 0x75},
  200. {0xFF, 0x12, 0x34, 0x12, 0x34, 0x00, 0x00, 0xD7},
  201. {0xFF, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0xC6},
  202. {0xFF, 0x22, 0x22, 0x22, 0x22, 0x00, 0x00, 0x09},
  203. {0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xA6},
  204. {0xFF, 0x33, 0x33, 0x33, 0x33, 0x00, 0x00, 0x82},
  205. {0xFF, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x9F},
  206. {0xFF, 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x18},
  207. {0xFF, 0x55, 0x55, 0x55, 0x55, 0x55, 0x55, 0xFF},
  208. {0xFF, 0x55, 0x55, 0x55, 0x55, 0x00, 0x00, 0x93},
  209. {0xFF, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x5F},
  210. {0xFF, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x17},
  211. {0xFF, 0x77, 0x77, 0x77, 0x77, 0x77, 0x77, 0x3F},
  212. {0xFF, 0x77, 0x77, 0x77, 0x77, 0x00, 0x00, 0x9C},
  213. {0xFF, 0x88, 0x88, 0x88, 0x88, 0x88, 0x88, 0x2D},
  214. {0xFF, 0x88, 0x88, 0x88, 0x88, 0x00, 0x00, 0x3A},
  215. {0xFF, 0x87, 0x65, 0x43, 0x21, 0x00, 0x00, 0xFD},
  216. {0xFF, 0x99, 0x99, 0x99, 0x99, 0x99, 0x99, 0x4D},
  217. {0xFF, 0x99, 0x99, 0x99, 0x99, 0x00, 0x00, 0xB1},
  218. {0xFF, 0x98, 0x76, 0x54, 0x32, 0x10, 0x00, 0x4C},
  219. {0xFF, 0x98, 0x76, 0x54, 0x32, 0x00, 0x00, 0xA0},
  220. {0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xED},
  221. {0xFF, 0xAA, 0xAA, 0xAA, 0xAA, 0x00, 0x00, 0x35},
  222. {0xFF, 0xAB, 0xCD, 0xEF, 0x00, 0x00, 0x00, 0xBF},
  223. {0xFF, 0xAB, 0xCD, 0xAB, 0xCD, 0xAB, 0xCD, 0xE8},
  224. {0xFF, 0xAB, 0xCD, 0xAB, 0xCD, 0x00, 0x00, 0x12},
  225. {0xFF, 0xAB, 0xCA, 0xBC, 0xAB, 0xCA, 0xBC, 0x4B},
  226. {0xFF, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0xBB, 0x8D},
  227. {0xFF, 0xBB, 0xBB, 0xBB, 0xBB, 0x00, 0x00, 0xBE},
  228. {0xFF, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xBA, 0xC9},
  229. {0xFF, 0xBA, 0xBA, 0xBA, 0xBA, 0x00, 0x00, 0x60},
  230. {0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xB4},
  231. {0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0x00, 0x00, 0x24},
  232. {0xFF, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xDD, 0xD4},
  233. {0xFF, 0xDD, 0xDD, 0xDD, 0xDD, 0x00, 0x00, 0xAF},
  234. {0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0xEE, 0x74},
  235. {0xFF, 0xEE, 0xEE, 0xEE, 0xEE, 0x00, 0x00, 0x2B},
  236. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC, 0x06},
  237. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x00, 0x97},
  238. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0xB3},
  239. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x90, 0x12, 0x51},
  240. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x9A, 0x12, 0xB6},
  241. {0xFF, 0x12, 0x34, 0x56, 0x78, 0x00, 0x00, 0xB3},
  242. {0xFF, 0xCB, 0xA9, 0x87, 0x65, 0x43, 0x21, 0xDD},
  243. {0xFF, 0xCB, 0xA9, 0x87, 0x65, 0x00, 0x00, 0x6E},
  244. {0xFF, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x39},
  245. {0xFF, 0xFE, 0xDC, 0xBA, 0x98, 0x00, 0x00, 0x9F},
  246. {0xFF, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0x35},
  247. {0xFF, 0xCA, 0xCA, 0xCA, 0xCA, 0x00, 0x00, 0xD2},
  248. {0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0x50},
  249. {0xFF, 0xFE, 0xFE, 0xFE, 0xFE, 0x00, 0x00, 0x7E},
  250. {0xFF, 0xCA, 0xFE, 0xCA, 0xFE, 0xCA, 0xFE, 0x31},
  251. {0xFF, 0xCA, 0xFE, 0xCA, 0xFE, 0x00, 0x00, 0x09},
  252. };
  253. const uint8_t uid_list_metakom[][Metakom_DATA_SIZE] = {
  254. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  255. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  256. {0x11, 0x11, 0x11, 0x11}, // Only 11
  257. {0x22, 0x22, 0x22, 0x22}, // Only 22
  258. {0x33, 0x33, 0x33, 0x33}, // Only 33
  259. {0x44, 0x44, 0x44, 0x44}, // Only 44
  260. {0x55, 0x55, 0x55, 0x55}, // Only 55
  261. {0x66, 0x66, 0x66, 0x66}, // Only 66
  262. {0x77, 0x77, 0x77, 0x77}, // Only 77
  263. {0x88, 0x88, 0x88, 0x88}, // Only 88
  264. {0x99, 0x99, 0x99, 0x99}, // Only 99
  265. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  266. {0x9A, 0x78, 0x56, 0x34}, // Decremental UID
  267. {0x04, 0xd0, 0x9b, 0x0d}, // ??
  268. {0x34, 0x00, 0x29, 0x3d}, // ??
  269. {0x04, 0xdf, 0x00, 0x00}, // ??
  270. {0xCA, 0xCA, 0xCA, 0xCA}, // ??
  271. };
  272. const uint8_t uid_list_cyfral[][Cyfral_DATA_SIZE] = {
  273. {0x00, 0x00}, // Null bytes
  274. {0xFF, 0xFF}, // Only FF
  275. {0x11, 0x11}, // Only 11
  276. {0x22, 0x22}, // Only 22
  277. {0x33, 0x33}, // Only 33
  278. {0x44, 0x44}, // Only 44
  279. {0x55, 0x55}, // Only 55
  280. {0x66, 0x66}, // Only 66
  281. {0x77, 0x77}, // Only 77
  282. {0x88, 0x88}, // Only 88
  283. {0x99, 0x99}, // Only 99
  284. {0x12, 0x34}, // Incremental UID
  285. {0x56, 0x34}, // Decremental UID
  286. {0xCA, 0xCA}, // ??
  287. {0x8E, 0xC9}, // Elevator code
  288. {0x6A, 0x50}, // VERY fresh code from smartkey
  289. };
  290. // ###########################
  291. // ## Rfid_125khz Protocols ##
  292. // ###########################
  293. #define EM4100_DATA_SIZE (5)
  294. #define HIDProx_DATA_SIZE (6)
  295. #define PAC_DATA_SIZE (4)
  296. #define H10301_DATA_SIZE (3)
  297. #define IOPROXXSF_DATA_SIZE (4)
  298. #define PARADOX_DATA_SIZE (6)
  299. #define INDALA26_DATA_SIZE (4)
  300. #define VIKING_DATA_SIZE (4)
  301. #define PYRAMID_DATA_SIZE (4)
  302. #define KERI_DATA_SIZE (4)
  303. #define JABLOTRON_DATA_SIZE (5)
  304. const uint8_t uid_list_em4100[][EM4100_DATA_SIZE] = {
  305. {0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
  306. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  307. {0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
  308. {0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
  309. {0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
  310. {0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
  311. {0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
  312. {0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
  313. {0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
  314. {0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
  315. {0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
  316. {0x12, 0x34, 0x56, 0x78, 0x9A}, // Incremental UID
  317. {0x9A, 0x78, 0x56, 0x34, 0x12}, // Decremental UID
  318. {0x04, 0xd0, 0x9b, 0x0d, 0x6a}, // From arha
  319. {0x34, 0x00, 0x29, 0x3d, 0x9e}, // From arha
  320. {0x04, 0xdf, 0x00, 0x00, 0x01}, // From arha
  321. {0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  322. };
  323. const uint8_t uid_list_hid[][HIDProx_DATA_SIZE] = {
  324. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
  325. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  326. {0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
  327. {0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
  328. {0x33, 0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
  329. {0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
  330. {0x55, 0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
  331. {0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
  332. {0x77, 0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
  333. {0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
  334. {0x99, 0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
  335. {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC}, // Incremental UID
  336. {0xBC, 0x9A, 0x78, 0x56, 0x34, 0x12}, // Decremental UID
  337. {0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  338. };
  339. const uint8_t uid_list_pac[][PAC_DATA_SIZE] = {
  340. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  341. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  342. {0x11, 0x11, 0x11, 0x11}, // Only 11
  343. {0x22, 0x22, 0x22, 0x22}, // Only 22
  344. {0x33, 0x33, 0x33, 0x33}, // Only 33
  345. {0x44, 0x44, 0x44, 0x44}, // Only 44
  346. {0x55, 0x55, 0x55, 0x55}, // Only 55
  347. {0x66, 0x66, 0x66, 0x66}, // Only 66
  348. {0x77, 0x77, 0x77, 0x77}, // Only 77
  349. {0x88, 0x88, 0x88, 0x88}, // Only 88
  350. {0x99, 0x99, 0x99, 0x99}, // Only 99
  351. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  352. {0x9A, 0x78, 0x56, 0x34}, // Decremental UID
  353. {0x04, 0xd0, 0x9b, 0x0d}, // From arha
  354. {0x34, 0x00, 0x29, 0x3d}, // From arha
  355. {0x04, 0xdf, 0x00, 0x00}, // From arha
  356. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  357. };
  358. const uint8_t uid_list_h10301[][H10301_DATA_SIZE] = {
  359. {0x00, 0x00, 0x00}, // Null bytes
  360. {0xFF, 0xFF, 0xFF}, // Only FF
  361. {0x11, 0x11, 0x11}, // Only 11
  362. {0x22, 0x22, 0x22}, // Only 22
  363. {0x33, 0x33, 0x33}, // Only 33
  364. {0x44, 0x44, 0x44}, // Only 44
  365. {0x55, 0x55, 0x55}, // Only 55
  366. {0x66, 0x66, 0x66}, // Only 66
  367. {0x77, 0x77, 0x77}, // Only 77
  368. {0x88, 0x88, 0x88}, // Only 88
  369. {0x99, 0x99, 0x99}, // Only 99
  370. {0x12, 0x34, 0x56}, // Incremental UID
  371. {0x56, 0x34, 0x12}, // Decremental UID
  372. {0xCA, 0xCA, 0xCA}, // From arha
  373. };
  374. const uint8_t uid_list_ioproxxsf[][IOPROXXSF_DATA_SIZE] = {
  375. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  376. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  377. {0x11, 0x11, 0x11, 0x11}, // Only 11
  378. {0x22, 0x22, 0x22, 0x22}, // Only 22
  379. {0x33, 0x33, 0x33, 0x33}, // Only 33
  380. {0x44, 0x44, 0x44, 0x44}, // Only 44
  381. {0x55, 0x55, 0x55, 0x55}, // Only 55
  382. {0x66, 0x66, 0x66, 0x66}, // Only 66
  383. {0x77, 0x77, 0x77, 0x77}, // Only 77
  384. {0x88, 0x88, 0x88, 0x88}, // Only 88
  385. {0x99, 0x99, 0x99, 0x99}, // Only 99
  386. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  387. {0x9A, 0x78, 0x56, 0x34}, // Decremental UID
  388. {0x04, 0xd0, 0x9b, 0x0d}, // From arha
  389. {0x34, 0x00, 0x29, 0x3d}, // From arha
  390. {0x04, 0xdf, 0x00, 0x00}, // From arha
  391. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  392. };
  393. const uint8_t uid_list_paradox[][PARADOX_DATA_SIZE] = {
  394. {0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
  395. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  396. {0x11, 0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
  397. {0x22, 0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
  398. {0x33, 0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
  399. {0x44, 0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
  400. {0x55, 0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
  401. {0x66, 0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
  402. {0x77, 0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
  403. {0x88, 0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
  404. {0x99, 0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
  405. {0x12, 0x34, 0x56, 0x78, 0x9A, 0xBC}, // Incremental UID
  406. {0xFF, 0xDE, 0xBC, 0x9A, 0x78, 0x56}, // Decremental UID
  407. {0xCA, 0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  408. };
  409. const uint8_t uid_list_indala26[][INDALA26_DATA_SIZE] = {
  410. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  411. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  412. {0x11, 0x11, 0x11, 0x11}, // Only 11
  413. {0x22, 0x22, 0x22, 0x22}, // Only 22
  414. {0x33, 0x33, 0x33, 0x33}, // Only 33
  415. {0x44, 0x44, 0x44, 0x44}, // Only 44
  416. {0x55, 0x55, 0x55, 0x55}, // Only 55
  417. {0x66, 0x66, 0x66, 0x66}, // Only 66
  418. {0x77, 0x77, 0x77, 0x77}, // Only 77
  419. {0x88, 0x88, 0x88, 0x88}, // Only 88
  420. {0x99, 0x99, 0x99, 0x99}, // Only 99
  421. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  422. {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
  423. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  424. };
  425. const uint8_t uid_list_viking[][VIKING_DATA_SIZE] = {
  426. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  427. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  428. {0x11, 0x11, 0x11, 0x11}, // Only 11
  429. {0x22, 0x22, 0x22, 0x22}, // Only 22
  430. {0x33, 0x33, 0x33, 0x33}, // Only 33
  431. {0x44, 0x44, 0x44, 0x44}, // Only 44
  432. {0x55, 0x55, 0x55, 0x55}, // Only 55
  433. {0x66, 0x66, 0x66, 0x66}, // Only 66
  434. {0x77, 0x77, 0x77, 0x77}, // Only 77
  435. {0x88, 0x88, 0x88, 0x88}, // Only 88
  436. {0x99, 0x99, 0x99, 0x99}, // Only 99
  437. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  438. {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
  439. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  440. };
  441. const uint8_t uid_list_pyramid[][PYRAMID_DATA_SIZE] = {
  442. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  443. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  444. {0x11, 0x11, 0x11, 0x11}, // Only 11
  445. {0x22, 0x22, 0x22, 0x22}, // Only 22
  446. {0x33, 0x33, 0x33, 0x33}, // Only 33
  447. {0x44, 0x44, 0x44, 0x44}, // Only 44
  448. {0x55, 0x55, 0x55, 0x55}, // Only 55
  449. {0x66, 0x66, 0x66, 0x66}, // Only 66
  450. {0x77, 0x77, 0x77, 0x77}, // Only 77
  451. {0x88, 0x88, 0x88, 0x88}, // Only 88
  452. {0x99, 0x99, 0x99, 0x99}, // Only 99
  453. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  454. {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
  455. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  456. };
  457. const uint8_t uid_list_keri[][KERI_DATA_SIZE] = {
  458. {0x00, 0x00, 0x00, 0x00}, // Null bytes
  459. {0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  460. {0x11, 0x11, 0x11, 0x11}, // Only 11
  461. {0x22, 0x22, 0x22, 0x22}, // Only 22
  462. {0x33, 0x33, 0x33, 0x33}, // Only 33
  463. {0x44, 0x44, 0x44, 0x44}, // Only 44
  464. {0x55, 0x55, 0x55, 0x55}, // Only 55
  465. {0x66, 0x66, 0x66, 0x66}, // Only 66
  466. {0x77, 0x77, 0x77, 0x77}, // Only 77
  467. {0x88, 0x88, 0x88, 0x88}, // Only 88
  468. {0x99, 0x99, 0x99, 0x99}, // Only 99
  469. {0x12, 0x34, 0x56, 0x78}, // Incremental UID
  470. {0xFF, 0xDE, 0xBC, 0x9A}, // Decremental UID
  471. {0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  472. };
  473. const uint8_t uid_list_jablotron[][JABLOTRON_DATA_SIZE] = {
  474. {0x00, 0x00, 0x00, 0x00, 0x00}, // Null bytes
  475. {0xFF, 0xFF, 0xFF, 0xFF, 0xFF}, // Only FF
  476. {0x11, 0x11, 0x11, 0x11, 0x11}, // Only 11
  477. {0x22, 0x22, 0x22, 0x22, 0x22}, // Only 22
  478. {0x33, 0x33, 0x33, 0x33, 0x33}, // Only 33
  479. {0x44, 0x44, 0x44, 0x44, 0x44}, // Only 44
  480. {0x55, 0x55, 0x55, 0x55, 0x55}, // Only 55
  481. {0x66, 0x66, 0x66, 0x66, 0x66}, // Only 66
  482. {0x77, 0x77, 0x77, 0x77, 0x77}, // Only 77
  483. {0x88, 0x88, 0x88, 0x88, 0x88}, // Only 88
  484. {0x99, 0x99, 0x99, 0x99, 0x99}, // Only 99
  485. {0x12, 0x34, 0x56, 0x78, 0x9A}, // Incremental UID
  486. {0xFF, 0xDE, 0xBC, 0x9A, 0x78}, // Decremental UID
  487. {0xCA, 0xCA, 0xCA, 0xCA, 0xCA}, // From arha
  488. };
  489. #if defined(RFID_125_PROTOCOL)
  490. const FuzzerProtocol fuzzer_proto_items[] = {
  491. // EM4100
  492. {
  493. .name = "EM4100",
  494. .data_size = EM4100_DATA_SIZE,
  495. .dict =
  496. {
  497. .val = (const uint8_t*)&uid_list_em4100,
  498. .len = COUNT_OF(uid_list_em4100),
  499. },
  500. },
  501. // HIDProx
  502. {
  503. .name = "HIDProx",
  504. .data_size = HIDProx_DATA_SIZE,
  505. .dict =
  506. {
  507. .val = (const uint8_t*)&uid_list_hid,
  508. .len = COUNT_OF(uid_list_hid),
  509. },
  510. },
  511. // PAC
  512. {
  513. .name = "PAC/Stanley",
  514. .data_size = PAC_DATA_SIZE,
  515. .dict =
  516. {
  517. .val = (const uint8_t*)&uid_list_pac,
  518. .len = COUNT_OF(uid_list_pac),
  519. },
  520. },
  521. // H10301
  522. {
  523. .name = "H10301",
  524. .data_size = H10301_DATA_SIZE,
  525. .dict =
  526. {
  527. .val = (const uint8_t*)&uid_list_h10301,
  528. .len = COUNT_OF(uid_list_h10301),
  529. },
  530. },
  531. // IoProxXSF
  532. {
  533. .name = "IoProxXSF",
  534. .data_size = IOPROXXSF_DATA_SIZE,
  535. .dict =
  536. {
  537. .val = (const uint8_t*)&uid_list_ioproxxsf,
  538. .len = COUNT_OF(uid_list_ioproxxsf),
  539. },
  540. },
  541. // Paradox
  542. {
  543. .name = "Paradox",
  544. .data_size = PARADOX_DATA_SIZE,
  545. .dict =
  546. {
  547. .val = (const uint8_t*)&uid_list_paradox,
  548. .len = COUNT_OF(uid_list_paradox),
  549. },
  550. },
  551. // Indala26
  552. {
  553. .name = "Indala26",
  554. .data_size = INDALA26_DATA_SIZE,
  555. .dict =
  556. {
  557. .val = (const uint8_t*)&uid_list_indala26,
  558. .len = COUNT_OF(uid_list_indala26),
  559. },
  560. },
  561. // Viking
  562. {
  563. .name = "Viking",
  564. .data_size = VIKING_DATA_SIZE,
  565. .dict =
  566. {
  567. .val = (const uint8_t*)&uid_list_viking,
  568. .len = COUNT_OF(uid_list_viking),
  569. },
  570. },
  571. // Pyramid
  572. {
  573. .name = "Pyramid",
  574. .data_size = PYRAMID_DATA_SIZE,
  575. .dict =
  576. {
  577. .val = (const uint8_t*)&uid_list_pyramid,
  578. .len = COUNT_OF(uid_list_pyramid),
  579. },
  580. },
  581. // Keri
  582. {
  583. .name = "Keri",
  584. .data_size = KERI_DATA_SIZE,
  585. .dict =
  586. {
  587. .val = (const uint8_t*)&uid_list_keri,
  588. .len = COUNT_OF(uid_list_keri),
  589. },
  590. },
  591. // Jablotron
  592. {
  593. .name = "Jablotron",
  594. .data_size = JABLOTRON_DATA_SIZE,
  595. .dict =
  596. {
  597. .val = (const uint8_t*)&uid_list_jablotron,
  598. .len = COUNT_OF(uid_list_jablotron),
  599. },
  600. },
  601. };
  602. #else
  603. const FuzzerProtocol fuzzer_proto_items[] = {
  604. // DS1990
  605. {
  606. .name = "DS1990",
  607. .data_size = DS1990_DATA_SIZE,
  608. .dict =
  609. {
  610. .val = (const uint8_t*)&uid_list_ds1990,
  611. .len = COUNT_OF(uid_list_ds1990),
  612. },
  613. },
  614. // Metakom
  615. {
  616. .name = "Metakom",
  617. .data_size = Metakom_DATA_SIZE,
  618. .dict =
  619. {
  620. .val = (const uint8_t*)&uid_list_metakom,
  621. .len = COUNT_OF(uid_list_metakom),
  622. },
  623. },
  624. // Cyfral
  625. {
  626. .name = "Cyfral",
  627. .data_size = Cyfral_DATA_SIZE,
  628. .dict =
  629. {
  630. .val = (const uint8_t*)&uid_list_cyfral,
  631. .len = COUNT_OF(uid_list_cyfral),
  632. },
  633. },
  634. };
  635. #endif
  636. typedef struct {
  637. const char* menu_label;
  638. FuzzerAttackId attack_id;
  639. } FuzzerMenuItems;
  640. const FuzzerMenuItems fuzzer_menu_items[] = {
  641. {"Default Values", FuzzerAttackIdDefaultValues},
  642. #ifdef RFID_125_PROTOCOL
  643. {"BF Customer ID", FuzzerAttackIdBFCustomerID},
  644. #endif
  645. {"Load File", FuzzerAttackIdLoadFile},
  646. {"Load UIDs from file", FuzzerAttackIdLoadFileCustomUids},
  647. };
  648. FuzzerPayload* fuzzer_payload_alloc() {
  649. FuzzerPayload* payload = malloc(sizeof(FuzzerPayload));
  650. payload->data = malloc(sizeof(payload->data[0]) * MAX_PAYLOAD_SIZE);
  651. return payload;
  652. }
  653. void fuzzer_payload_free(FuzzerPayload* payload) {
  654. furi_assert(payload);
  655. if(payload->data) {
  656. free(payload->data);
  657. }
  658. free(payload);
  659. }
  660. const char* fuzzer_proto_get_name(FuzzerProtocolsID index) {
  661. return fuzzer_proto_items[index].name;
  662. }
  663. uint8_t fuzzer_proto_get_count_of_protocols() {
  664. return COUNT_OF(fuzzer_proto_items);
  665. }
  666. uint8_t fuzzer_proto_get_max_data_size() {
  667. return MAX_PAYLOAD_SIZE;
  668. }
  669. uint8_t fuzzer_proto_get_def_emu_time() {
  670. return PROTOCOL_DEF_EMU_TIME;
  671. }
  672. uint8_t fuzzer_proto_get_def_idle_time() {
  673. return PROTOCOL_DEF_IDLE_TIME;
  674. }
  675. const char* fuzzer_proto_get_menu_label(uint8_t index) {
  676. return fuzzer_menu_items[index].menu_label;
  677. }
  678. FuzzerAttackId fuzzer_proto_get_attack_id_by_index(uint8_t index) {
  679. return fuzzer_menu_items[index].attack_id;
  680. }
  681. uint8_t fuzzer_proto_get_count_of_menu_items() {
  682. return COUNT_OF(fuzzer_menu_items);
  683. }