mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-02-14 03:03:14 +08:00
ADD: removed the paritythingy, I missunderstood its purpose.
This commit is contained in:
parent
7f96433c8a
commit
22a6a62fbb
1 changed files with 24 additions and 14 deletions
|
@ -1463,6 +1463,19 @@ int CmdFSKdemodPyramid(const char *Cmd)
|
||||||
// NATIONAL CODE, ICAR database
|
// NATIONAL CODE, ICAR database
|
||||||
// COUNTRY CODE (ISO3166)
|
// COUNTRY CODE (ISO3166)
|
||||||
// FLAG (animal/non-animal)
|
// FLAG (animal/non-animal)
|
||||||
|
/*
|
||||||
|
38 IDbits
|
||||||
|
10 country code
|
||||||
|
1 extra app bit
|
||||||
|
14 reserved bits
|
||||||
|
1 animal bit
|
||||||
|
16 ccitt CRC chksum over 64bit ID CODE.
|
||||||
|
24 appli bits.
|
||||||
|
|
||||||
|
-- sample: 985121004515220
|
||||||
|
|
||||||
|
Now is nibble shifting, byte shifting.
|
||||||
|
*/
|
||||||
int CmdIso11784demodBI(const char *Cmd){
|
int CmdIso11784demodBI(const char *Cmd){
|
||||||
|
|
||||||
int invert = 1;
|
int invert = 1;
|
||||||
|
@ -1482,44 +1495,41 @@ int CmdIso11784demodBI(const char *Cmd){
|
||||||
if (g_debugMode) PrintAndLog("Error BiphaseRawDecode: %d", errCnt);
|
if (g_debugMode) PrintAndLog("Error BiphaseRawDecode: %d", errCnt);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
int preambleIndex = ISO11784demodBI(BitStream, &size);
|
int preambleIndex = ISO11784demodBI(BitStream, &size);
|
||||||
if (preambleIndex < 0){
|
if (preambleIndex < 0){
|
||||||
if (g_debugMode) PrintAndLog("Error ISO11784Demod , no startmarker found :: %d",preambleIndex);
|
if (g_debugMode) PrintAndLog("Error ISO11784Demod , no startmarker found :: %d",preambleIndex);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
size = removeParity(BitStream, preambleIndex + 11, 9, 1, 128);
|
|
||||||
if ( size <= 0 ) {
|
|
||||||
if (g_debugMode) PrintAndLog("Error removeParity:: %d", size);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
PrintAndLog("startmarker %d; Size %d", preambleIndex, size);
|
PrintAndLog("startmarker %d; Size %d", preambleIndex, size);
|
||||||
|
|
||||||
return 1;
|
|
||||||
//got a good demod
|
//got a good demod
|
||||||
uint8_t ByteStream[16] = {0x00};
|
uint8_t ByteStream[16] = {0x00};
|
||||||
uint8_t bitCnt = 0;
|
uint8_t bitCnt = 0;
|
||||||
uint8_t ByteCnt = 0;
|
uint8_t ByteCnt = 0;
|
||||||
size_t startIdx = preambleIndex + 11; //start after preamble
|
size_t startIdx = preambleIndex + 11; //start after preamble
|
||||||
for (size_t idx = 0; idx < size-11; idx++){
|
for (size_t idx = 0; idx < size; idx++){
|
||||||
|
|
||||||
|
if ( bitCnt == 9 ){
|
||||||
|
bitCnt = 0;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
//lsb first
|
//lsb first
|
||||||
ByteStream[ByteCnt] = ByteStream[ByteCnt] | (BitStream[startIdx+idx] << bitCnt);
|
ByteStream[ByteCnt] |= ( BitStream[startIdx+idx] << bitCnt );
|
||||||
bitCnt++;
|
bitCnt++;
|
||||||
if (bitCnt % 8 == 0){
|
if (bitCnt % 8 == 0){
|
||||||
if (g_debugMode) PrintAndLog("byte %d: %02x", ByteCnt, ByteStream[ByteCnt]);
|
if (g_debugMode) PrintAndLog("byte %d: %02x", ByteCnt, ByteStream[ByteCnt]);
|
||||||
bitCnt = 0;
|
bitCnt = 9;
|
||||||
ByteCnt++;
|
ByteCnt++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
PrintAndLog("DATA: %s", sprint_hex(ByteStream, 14));
|
||||||
//now ByteStream contains 16 bytes of decrypted raw tag data
|
//now ByteStream contains 16 bytes of decrypted raw tag data
|
||||||
setDemodBuf(ByteStream, 128, 0);
|
setDemodBuf(BitStream+preambleIndex, 128, 0);
|
||||||
//printDemodBuff();
|
printDemodBuff();
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue