mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-02-26 00:25:24 +08:00
addition animal tags demod info
This commit is contained in:
parent
04bb05670d
commit
fd1d30cb76
3 changed files with 22 additions and 27 deletions
|
@ -1493,11 +1493,14 @@ int CmdIso11784demodBI(const char *Cmd){
|
|||
setDemodBuf(BitStream, 128, preambleIndex);
|
||||
//printDemodBuff();
|
||||
|
||||
size = removeParity(BitStream, preambleIndex + 11, 9, 1, 117);
|
||||
if ( size <= 0 ) {
|
||||
size = removeParity(BitStream, preambleIndex + 11, 9, 2, 117);
|
||||
if ( size <= 103 ) {
|
||||
if (g_debugMode) PrintAndLog("Error removeParity:: %d", size);
|
||||
return 0;
|
||||
}
|
||||
//char *bin = sprint_bin_break(BitStream,size,16);
|
||||
//PrintAndLog("DEBUG BinStream:\n%s",bin);
|
||||
|
||||
PrintAndLog("startmarker %d; Size %d", preambleIndex, size);
|
||||
|
||||
//return 1;
|
||||
|
@ -1511,25 +1514,14 @@ int CmdIso11784demodBI(const char *Cmd){
|
|||
uint32_t crc16 = bytebits_to_byteLSBF(BitStream+64,16);
|
||||
uint32_t extended = bytebits_to_byteLSBF(BitStream+80,24);
|
||||
|
||||
PrintAndLog("NationalCode: %x%08x",NationalCodeB,NationalCodeA);
|
||||
//add rest of print code here...
|
||||
/*
|
||||
uint8_t ByteStream[16] = {0x00};
|
||||
uint8_t bitCnt = 0;
|
||||
uint8_t ByteCnt = 0;
|
||||
size_t startIdx = preambleIndex + 11; //start after preamble
|
||||
for (size_t idx = 0; idx < size-11; idx++){
|
||||
|
||||
//lsb first
|
||||
ByteStream[ByteCnt] = ByteStream[ByteCnt] | (BitStream[startIdx+idx] << bitCnt);
|
||||
bitCnt++;
|
||||
if (bitCnt % 8 == 0){
|
||||
if (g_debugMode) PrintAndLog("byte %d: %02x", ByteCnt, ByteStream[ByteCnt]);
|
||||
bitCnt = 0;
|
||||
ByteCnt++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
PrintAndLog("NationalCode: %X%08X",NationalCodeB,NationalCodeA);
|
||||
PrintAndLog("CountryCode: %d",countryCode);
|
||||
PrintAndLog("dataBlockBit: %d",dataBlockBit);
|
||||
PrintAndLog("reservedCode: %X",reservedCode);
|
||||
PrintAndLog("animalBit: %d", animalBit);
|
||||
PrintAndLog("CRC: %02X", crc16);
|
||||
PrintAndLog("Extended: %x", extended);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
@ -2289,6 +2281,7 @@ static command_t CommandTable[] =
|
|||
{"hexsamples", CmdHexsamples, 0, "<bytes> [<offset>] -- Dump big buffer as hex bytes"},
|
||||
{"hide", CmdHide, 1, "Hide graph window"},
|
||||
{"hpf", CmdHpf, 1, "Remove DC offset from trace"},
|
||||
{"iso11784demod", CmdIso11784demodBI, 1, "Demodulate a ISO11784/85 Biphase tag from GraphBuffer"},
|
||||
{"load", CmdLoad, 1, "<filename> -- Load trace (to graph window"},
|
||||
{"ltrim", CmdLtrim, 1, "<samples> -- Trim samples from left of trace"},
|
||||
{"rtrim", CmdRtrim, 1, "<location to end trace> -- Trim samples from right of trace"},
|
||||
|
|
|
@ -526,7 +526,7 @@ int ParadoxdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, ui
|
|||
return (int)startIdx;
|
||||
}
|
||||
|
||||
uint32_t bytebits_to_byte(uint8_t* src, size_t numbits)
|
||||
uint32_t bytebits_to_byte(uint8_t *src, size_t numbits)
|
||||
{
|
||||
uint32_t num = 0;
|
||||
for(int i = 0 ; i < numbits ; i++)
|
||||
|
@ -538,13 +538,12 @@ uint32_t bytebits_to_byte(uint8_t* src, size_t numbits)
|
|||
}
|
||||
|
||||
//least significant bit first
|
||||
uint32_t bytebits_to_byteLSBF(uint8_t* src, size_t numbits)
|
||||
uint32_t bytebits_to_byteLSBF(uint8_t *src, size_t numbits)
|
||||
{
|
||||
uint32_t num = 0;
|
||||
for(int i = 0 ; i < numbits ; i++)
|
||||
{
|
||||
num = (num << 1) | (*src);
|
||||
src++;
|
||||
num = (num << 1) | *(src + (numbits-(i+1)));
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
@ -581,7 +580,7 @@ int IOdemodFSK(uint8_t *dest, size_t size)
|
|||
|
||||
// by marshmellow
|
||||
// takes a array of binary values, start position, length of bits per parity (includes parity bit),
|
||||
// Parity Type (1 for odd 0 for even), and binary Length (length to run)
|
||||
// Parity Type (1 for odd; 0 for even; 2 for just drop it), and binary Length (length to run)
|
||||
size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t pType, size_t bLen)
|
||||
{
|
||||
uint32_t parityWd = 0;
|
||||
|
@ -593,7 +592,9 @@ size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t p
|
|||
}
|
||||
j--;
|
||||
// if parity fails then return 0
|
||||
if (parityTest(parityWd, pLen, pType) == 0) return -1;
|
||||
if (pType != 2) {
|
||||
if (parityTest(parityWd, pLen, pType) == 0) return -1;
|
||||
}
|
||||
bitCnt+=(pLen-1);
|
||||
parityWd = 0;
|
||||
}
|
||||
|
|
|
@ -41,6 +41,7 @@ void psk1TOpsk2(uint8_t *BitStream, size_t size);
|
|||
size_t removeParity(uint8_t *BitStream, size_t startIdx, uint8_t pLen, uint8_t pType, size_t bLen);
|
||||
|
||||
//tag specific
|
||||
int ISO11784demodBI(uint8_t *dest, size_t *size);
|
||||
int AWIDdemodFSK(uint8_t *dest, size_t *size);
|
||||
int gProxII_Demod(uint8_t BitStream[], size_t *size);
|
||||
int HIDdemodFSK(uint8_t *dest, size_t *size, uint32_t *hi2, uint32_t *hi, uint32_t *lo);
|
||||
|
|
Loading…
Reference in a new issue