mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 13:53:55 -07:00
fdxb: add manufacturers & countries
This commit is contained in:
parent
cb18c4cbd9
commit
fa332b1ba4
2 changed files with 273 additions and 2 deletions
|
@ -215,6 +215,272 @@ static int CmdFDXBdemodBI(const char *Cmd) {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
// For the country part:
|
||||||
|
// wget -q -O - "https://en.wikipedia.org/w/index.php?title=List_of_ISO_3166_country_codes&action=raw" | awk '/id=/{match($0, /\[\[([^\]|]*)/, a); name=a[1];getline;getline;getline;getline;getline;match($0, /numeric#([0-9]*)/, a);num=a[1]; if (num != "") {printf " { %3u, \"%s\" },\n", num, name}}'
|
||||||
|
// Beware the bottom of the list contains also Manufacturers list
|
||||||
|
const fdxbCountryMapping_t fdxbCountryMapping[] = {
|
||||||
|
{ 4, "Afghanistan" },
|
||||||
|
{ 8, "Albania" },
|
||||||
|
{ 12, "Algeria" },
|
||||||
|
{ 16, "American Samoa" },
|
||||||
|
{ 20, "Andorra" },
|
||||||
|
{ 24, "Angola" },
|
||||||
|
{ 660, "Anguilla" },
|
||||||
|
{ 10, "Antarctica" },
|
||||||
|
{ 28, "Antigua and Barbuda" },
|
||||||
|
{ 32, "Argentina" },
|
||||||
|
{ 51, "Armenia" },
|
||||||
|
{ 533, "Aruba" },
|
||||||
|
{ 40, "Austria" },
|
||||||
|
{ 31, "Azerbaijan" },
|
||||||
|
{ 44, "The Bahamas" },
|
||||||
|
{ 48, "Bahrain" },
|
||||||
|
{ 50, "Bangladesh" },
|
||||||
|
{ 52, "Barbados" },
|
||||||
|
{ 112, "Belarus" },
|
||||||
|
{ 56, "Belgium" },
|
||||||
|
{ 84, "Belize" },
|
||||||
|
{ 204, "Benin" },
|
||||||
|
{ 60, "Bermuda" },
|
||||||
|
{ 64, "Bhutan" },
|
||||||
|
{ 68, "Bolivia" },
|
||||||
|
{ 535, "Bonaire" },
|
||||||
|
{ 70, "Bosnia and Herzegovina" },
|
||||||
|
{ 72, "Botswana" },
|
||||||
|
{ 74, "Bouvet Island" },
|
||||||
|
{ 76, "Brazil" },
|
||||||
|
{ 86, "British Indian Ocean Territory" },
|
||||||
|
{ 100, "Bulgaria" },
|
||||||
|
{ 854, "Burkina Faso" },
|
||||||
|
{ 132, "Cape Verde" },
|
||||||
|
{ 116, "Cambodia" },
|
||||||
|
{ 120, "Cameroon" },
|
||||||
|
{ 124, "Canada" },
|
||||||
|
{ 140, "Central African Republic" },
|
||||||
|
{ 148, "Chad" },
|
||||||
|
{ 152, "Chile" },
|
||||||
|
{ 156, "China" },
|
||||||
|
{ 170, "Colombia" },
|
||||||
|
{ 174, "Comoros" },
|
||||||
|
{ 180, "Democratic Republic of the Congo" },
|
||||||
|
{ 178, "Republic of the Congo" },
|
||||||
|
{ 184, "Cook Islands" },
|
||||||
|
{ 384, "Ivory Coast" },
|
||||||
|
{ 191, "Croatia" },
|
||||||
|
{ 192, "Cuba" },
|
||||||
|
{ 531, "Curaçao" },
|
||||||
|
{ 196, "Cyprus" },
|
||||||
|
{ 203, "Czech Republic" },
|
||||||
|
{ 262, "Djibouti" },
|
||||||
|
{ 212, "Dominica" },
|
||||||
|
{ 214, "Dominican Republic" },
|
||||||
|
{ 818, "Egypt" },
|
||||||
|
{ 222, "El Salvador" },
|
||||||
|
{ 232, "Eritrea" },
|
||||||
|
{ 233, "Estonia" },
|
||||||
|
{ 748, "Eswatini" },
|
||||||
|
{ 231, "Ethiopia" },
|
||||||
|
{ 238, "Falkland Islands" },
|
||||||
|
{ 234, "Faroe Islands" },
|
||||||
|
{ 242, "Fiji" },
|
||||||
|
{ 246, "Finland" },
|
||||||
|
{ 250, "France" },
|
||||||
|
{ 254, "French Guiana" },
|
||||||
|
{ 258, "French Polynesia" },
|
||||||
|
{ 260, "French Southern Territories" },
|
||||||
|
{ 266, "Gabon" },
|
||||||
|
{ 270, "The Gambia" },
|
||||||
|
{ 268, "Georgia (country)" },
|
||||||
|
{ 276, "Germany" },
|
||||||
|
{ 288, "Ghana" },
|
||||||
|
{ 292, "Gibraltar" },
|
||||||
|
{ 304, "Greenland" },
|
||||||
|
{ 308, "Grenada" },
|
||||||
|
{ 312, "Guadeloupe" },
|
||||||
|
{ 316, "Guam" },
|
||||||
|
{ 320, "Guatemala" },
|
||||||
|
{ 831, "Bailiwick of Guernsey" },
|
||||||
|
{ 324, "Guinea" },
|
||||||
|
{ 624, "Guinea-Bissau" },
|
||||||
|
{ 328, "Guyana" },
|
||||||
|
{ 332, "Haiti" },
|
||||||
|
{ 336, "Holy See" },
|
||||||
|
{ 340, "Honduras" },
|
||||||
|
{ 344, "Hong Kong" },
|
||||||
|
{ 348, "Hungary" },
|
||||||
|
{ 352, "Iceland" },
|
||||||
|
{ 356, "India" },
|
||||||
|
{ 360, "Indonesia" },
|
||||||
|
{ 364, "Iran (Islamic Republic of)" },
|
||||||
|
{ 368, "Iraq" },
|
||||||
|
{ 372, "Republic of Ireland" },
|
||||||
|
{ 833, "Isle of Man" },
|
||||||
|
{ 376, "Israel" },
|
||||||
|
{ 380, "Italy" },
|
||||||
|
{ 832, "Jersey" },
|
||||||
|
{ 400, "Jordan" },
|
||||||
|
{ 398, "Kazakhstan" },
|
||||||
|
{ 404, "Kenya" },
|
||||||
|
{ 296, "Kiribati" },
|
||||||
|
{ 408, "North Korea" },
|
||||||
|
{ 410, "South Korea" },
|
||||||
|
{ 414, "Kuwait" },
|
||||||
|
{ 417, "Kyrgyzstan" },
|
||||||
|
{ 418, "Laos" },
|
||||||
|
{ 428, "Latvia" },
|
||||||
|
{ 422, "Lebanon" },
|
||||||
|
{ 426, "Lesotho" },
|
||||||
|
{ 430, "Liberia" },
|
||||||
|
{ 434, "Libya" },
|
||||||
|
{ 438, "Liechtenstein" },
|
||||||
|
{ 440, "Lithuania" },
|
||||||
|
{ 442, "Luxembourg" },
|
||||||
|
{ 446, "Macau" },
|
||||||
|
{ 807, "North Macedonia" },
|
||||||
|
{ 450, "Madagascar" },
|
||||||
|
{ 454, "Malawi" },
|
||||||
|
{ 458, "Malaysia" },
|
||||||
|
{ 462, "Maldives" },
|
||||||
|
{ 466, "Mali" },
|
||||||
|
{ 470, "Malta" },
|
||||||
|
{ 584, "Marshall Islands" },
|
||||||
|
{ 474, "Martinique" },
|
||||||
|
{ 478, "Mauritania" },
|
||||||
|
{ 480, "Mauritius" },
|
||||||
|
{ 175, "Mayotte" },
|
||||||
|
{ 484, "Mexico" },
|
||||||
|
{ 583, "Federated States of Micronesia" },
|
||||||
|
{ 498, "Moldova" },
|
||||||
|
{ 492, "Monaco" },
|
||||||
|
{ 496, "Mongolia" },
|
||||||
|
{ 499, "Montenegro" },
|
||||||
|
{ 500, "Montserrat" },
|
||||||
|
{ 504, "Morocco" },
|
||||||
|
{ 508, "Mozambique" },
|
||||||
|
{ 104, "Myanmar" },
|
||||||
|
{ 516, "Namibia" },
|
||||||
|
{ 520, "Nauru" },
|
||||||
|
{ 524, "Nepal" },
|
||||||
|
{ 528, "Kingdom of the Netherlands" },
|
||||||
|
{ 540, "New Caledonia" },
|
||||||
|
{ 554, "New Zealand" },
|
||||||
|
{ 558, "Nicaragua" },
|
||||||
|
{ 562, "Niger" },
|
||||||
|
{ 566, "Nigeria" },
|
||||||
|
{ 570, "Niue" },
|
||||||
|
{ 574, "Norfolk Island" },
|
||||||
|
{ 578, "Norway" },
|
||||||
|
{ 512, "Oman" },
|
||||||
|
{ 586, "Pakistan" },
|
||||||
|
{ 585, "Palau" },
|
||||||
|
{ 275, "State of Palestine" },
|
||||||
|
{ 591, "Panama" },
|
||||||
|
{ 598, "Papua New Guinea" },
|
||||||
|
{ 600, "Paraguay" },
|
||||||
|
{ 608, "Philippines" },
|
||||||
|
{ 612, "Pitcairn Islands" },
|
||||||
|
{ 616, "Poland" },
|
||||||
|
{ 620, "Portugal" },
|
||||||
|
{ 630, "Puerto Rico" },
|
||||||
|
{ 634, "Qatar" },
|
||||||
|
{ 638, "Réunion" },
|
||||||
|
{ 642, "Romania" },
|
||||||
|
{ 643, "Russia" },
|
||||||
|
{ 646, "Rwanda" },
|
||||||
|
{ 654, "Saint Helena" },
|
||||||
|
{ 659, "Saint Kitts and Nevis" },
|
||||||
|
{ 662, "Saint Lucia" },
|
||||||
|
{ 663, "Collectivity of Saint Martin" },
|
||||||
|
{ 666, "Saint Pierre and Miquelon" },
|
||||||
|
{ 670, "Saint Vincent and the Grenadines" },
|
||||||
|
{ 882, "Samoa" },
|
||||||
|
{ 674, "San Marino" },
|
||||||
|
{ 678, "São Tomé and Príncipe" },
|
||||||
|
{ 682, "Saudi Arabia" },
|
||||||
|
{ 688, "Serbia" },
|
||||||
|
{ 690, "Seychelles" },
|
||||||
|
{ 694, "Sierra Leone" },
|
||||||
|
{ 702, "Singapore" },
|
||||||
|
{ 703, "Slovakia" },
|
||||||
|
{ 705, "Slovenia" },
|
||||||
|
{ 90, "Solomon Islands" },
|
||||||
|
{ 706, "Somalia" },
|
||||||
|
{ 710, "South Africa" },
|
||||||
|
{ 239, "South Georgia and the South Sandwich Islands" },
|
||||||
|
{ 724, "Spain" },
|
||||||
|
{ 144, "Sri Lanka" },
|
||||||
|
{ 729, "Sudan" },
|
||||||
|
{ 740, "Suriname" },
|
||||||
|
{ 744, "Svalbard" },
|
||||||
|
{ 752, "Sweden" },
|
||||||
|
{ 756, "Switzerland" },
|
||||||
|
{ 760, "Syria" },
|
||||||
|
{ 158, "Taiwan" },
|
||||||
|
{ 762, "Tajikistan" },
|
||||||
|
{ 834, "Tanzania" },
|
||||||
|
{ 764, "Thailand" },
|
||||||
|
{ 626, "East Timor" },
|
||||||
|
{ 768, "Togo" },
|
||||||
|
{ 772, "Tokelau" },
|
||||||
|
{ 776, "Tonga" },
|
||||||
|
{ 780, "Trinidad and Tobago" },
|
||||||
|
{ 788, "Tunisia" },
|
||||||
|
{ 792, "Turkey" },
|
||||||
|
{ 795, "Turkmenistan" },
|
||||||
|
{ 796, "Turks and Caicos Islands" },
|
||||||
|
{ 798, "Tuvalu" },
|
||||||
|
{ 800, "Uganda" },
|
||||||
|
{ 804, "Ukraine" },
|
||||||
|
{ 784, "United Arab Emirates" },
|
||||||
|
{ 826, "United Kingdom" },
|
||||||
|
{ 581, "United States Minor Outlying Islands" },
|
||||||
|
{ 840, "United States" },
|
||||||
|
{ 860, "Uzbekistan" },
|
||||||
|
{ 548, "Vanuatu" },
|
||||||
|
{ 704, "Vietnam" },
|
||||||
|
{ 92, "British Virgin Islands" },
|
||||||
|
{ 850, "United States Virgin Islands" },
|
||||||
|
{ 732, "Western Sahara" },
|
||||||
|
{ 887, "Yemen" },
|
||||||
|
{ 894, "Zambia" },
|
||||||
|
{ 716, "Zimbabwe" },
|
||||||
|
|
||||||
|
// Manufacturers list:
|
||||||
|
{ 952, "JECTA" },
|
||||||
|
{ 953, "Cromasa Identificacion electronica S.A."},
|
||||||
|
{ 955, "Reseaumatique" },
|
||||||
|
{ 956, "Trovan Ltd. (ACK Reunite)" },
|
||||||
|
{ 958, "Pet ID" },
|
||||||
|
{ 959, "Global ID Technologies" },
|
||||||
|
{ 961, "Mannings I.A.I.D." },
|
||||||
|
{ 963, "Korth Eletro Mecanica LTDA" },
|
||||||
|
{ 965, "4D Technology Co. Ltd" },
|
||||||
|
{ 966, "PetCode" },
|
||||||
|
{ 967, "Rfdynamics / M4S ID in Canada" },
|
||||||
|
{ 968, "AEG / EIDAP in Canada" },
|
||||||
|
{ 972, "Planet ID" },
|
||||||
|
{ 975, "Sokymat" },
|
||||||
|
{ 977, "AVID" },
|
||||||
|
{ 978, "Ordicam" },
|
||||||
|
{ 981, "Microfindr, Datamars, Found Animals, Crystal Tag, Banfield, Bayer resQ, Peeva" },
|
||||||
|
{ 982, "24 Pet Watch (Allflex)" },
|
||||||
|
{ 985, "HomeAgain (Destron Fearing/Digital Angel)" },
|
||||||
|
{ 991, "Peeva" },
|
||||||
|
{ 999, "Test range" },
|
||||||
|
{ 0, "N/A" } // must be the last entry
|
||||||
|
};
|
||||||
|
|
||||||
|
static const char* mapFDBX(uint16_t countryCode) {
|
||||||
|
uint16_t i = 0;
|
||||||
|
while (fdxbCountryMapping[i].code > 0) {
|
||||||
|
if (countryCode == fdxbCountryMapping[i].code) {
|
||||||
|
return fdxbCountryMapping[i].desc;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return fdxbCountryMapping[i].desc;
|
||||||
|
}
|
||||||
|
|
||||||
//see ASKDemod for what args are accepted
|
//see ASKDemod for what args are accepted
|
||||||
//almost the same demod as cmddata.c/CmdFDXBdemodBI
|
//almost the same demod as cmddata.c/CmdFDXBdemodBI
|
||||||
int demodFDXB(bool verbose) {
|
int demodFDXB(bool verbose) {
|
||||||
|
@ -299,9 +565,9 @@ int demodFDXB(bool verbose) {
|
||||||
return PM3_SUCCESS;
|
return PM3_SUCCESS;
|
||||||
}
|
}
|
||||||
PrintAndLogEx(SUCCESS, "FDX-B / ISO 11784/5 Animal");
|
PrintAndLogEx(SUCCESS, "FDX-B / ISO 11784/5 Animal");
|
||||||
PrintAndLogEx(SUCCESS, "Animal ID " _GREEN_("%04u-%012"PRIu64), countryCode, NationalCode);
|
PrintAndLogEx(SUCCESS, "Animal ID " _GREEN_("%03u-%012"PRIu64), countryCode, NationalCode);
|
||||||
PrintAndLogEx(SUCCESS, "National Code " _GREEN_("%012" PRIu64) " (0x%" PRIX64 ")", NationalCode, NationalCode);
|
PrintAndLogEx(SUCCESS, "National Code " _GREEN_("%012" PRIu64) " (0x%" PRIX64 ")", NationalCode, NationalCode);
|
||||||
PrintAndLogEx(SUCCESS, "Country Code " _GREEN_("%04u"), countryCode);
|
PrintAndLogEx(SUCCESS, "Country Code " _GREEN_("%03u") " - %s", countryCode, mapFDBX(countryCode));
|
||||||
PrintAndLogEx(SUCCESS, "Reserved/RFU %u (0x%04X)", reservedCode, reservedCode);
|
PrintAndLogEx(SUCCESS, "Reserved/RFU %u (0x%04X)", reservedCode, reservedCode);
|
||||||
PrintAndLogEx(SUCCESS, " Animal bit set? %s", animalBit ? _YELLOW_("True") : "False");
|
PrintAndLogEx(SUCCESS, " Animal bit set? %s", animalBit ? _YELLOW_("True") : "False");
|
||||||
PrintAndLogEx(SUCCESS, " Data block? %s [value 0x%X]", dataBlockBit ? _YELLOW_("True") : "False", extended);
|
PrintAndLogEx(SUCCESS, " Data block? %s [value 0x%X]", dataBlockBit ? _YELLOW_("True") : "False", extended);
|
||||||
|
|
|
@ -11,6 +11,11 @@
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
uint16_t code;
|
||||||
|
const char *desc;
|
||||||
|
} fdxbCountryMapping_t;
|
||||||
|
|
||||||
int CmdLFFdxB(const char *Cmd);
|
int CmdLFFdxB(const char *Cmd);
|
||||||
int detectFDXB(uint8_t *dest, size_t *size);
|
int detectFDXB(uint8_t *dest, size_t *size);
|
||||||
int demodFDXB(bool verbose);
|
int demodFDXB(bool verbose);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue