mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-01-08 17:18:10 +08:00
add: xorcumb
chg: from veritcal to horizontal printing.
This commit is contained in:
parent
e513cf8a31
commit
2c601080c3
1 changed files with 31 additions and 21 deletions
|
@ -101,13 +101,24 @@ static uint8_t calcSumNibbleAdd( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
||||||
static uint8_t calcSumNibbleAddOnes( uint8_t* bytes, uint8_t len, uint32_t mask){
|
static uint8_t calcSumNibbleAddOnes( uint8_t* bytes, uint8_t len, uint32_t mask){
|
||||||
return ~calcSumNibbleAdd(bytes, len, mask);
|
return ~calcSumNibbleAdd(bytes, len, mask);
|
||||||
}
|
}
|
||||||
|
static uint8_t calcSumCrumbXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
||||||
|
uint8_t sum = 0;
|
||||||
|
for (uint8_t i = 0; i < len; i++) {
|
||||||
|
sum ^= CRUMB(bytes[i], 0);
|
||||||
|
sum ^= CRUMB(bytes[i], 2);
|
||||||
|
sum ^= CRUMB(bytes[i], 4);
|
||||||
|
sum ^= CRUMB(bytes[i], 6);
|
||||||
|
}
|
||||||
|
sum &= mask;
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
static uint8_t calcSumNibbleXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
static uint8_t calcSumNibbleXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
||||||
uint8_t sum = 0;
|
uint8_t sum = 0;
|
||||||
for (uint8_t i = 0; i < len; i++) {
|
for (uint8_t i = 0; i < len; i++) {
|
||||||
sum ^= NIBBLE_LOW(bytes[i]);
|
sum ^= NIBBLE_LOW(bytes[i]);
|
||||||
sum ^= NIBBLE_HIGH(bytes[i]);
|
sum ^= NIBBLE_HIGH(bytes[i]);
|
||||||
}
|
}
|
||||||
sum &= mask;
|
sum &= mask;
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
static uint8_t calcSumByteXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
static uint8_t calcSumByteXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
|
||||||
|
@ -248,7 +259,7 @@ int CmdAnalyseCHKSUM(const char *Cmd){
|
||||||
|
|
||||||
uint8_t data[50];
|
uint8_t data[50];
|
||||||
uint8_t cmdp = 0;
|
uint8_t cmdp = 0;
|
||||||
uint32_t mask = 0xFF;
|
uint32_t mask = 0xFFFF;
|
||||||
bool errors = false;
|
bool errors = false;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
memset(data, 0x0, sizeof(data));
|
memset(data, 0x0, sizeof(data));
|
||||||
|
@ -280,25 +291,24 @@ int CmdAnalyseCHKSUM(const char *Cmd){
|
||||||
//Validations
|
//Validations
|
||||||
if(errors) return usage_analyse_checksum();
|
if(errors) return usage_analyse_checksum();
|
||||||
|
|
||||||
PrintAndLog("\nByte Add | 0x%X", calcSumByteAdd(data, len, mask));
|
PrintAndLog(" add | sub | add 1's compl | sub 1's compl | xor");
|
||||||
PrintAndLog("Nibble Add | 0x%X", calcSumNibbleAdd(data, len, mask));
|
PrintAndLog("byte nibble crumb | byte nibble | byte nibble cumb | byte nibble | byte nibble cumb");
|
||||||
PrintAndLog("Crumb Add | 0x%X", calcSumCrumbAdd(data, len, mask));
|
PrintAndLog("------------------+-------------+------------------+-----------------+--------------------");
|
||||||
|
PrintAndLog("0x%02X 0x%02X 0x%02X | 0x%02X 0x%02X | 0x%02X 0x%02X 0x%02X | 0x%02X 0x%02X | 0x%02X 0x%02X 0x%02X",
|
||||||
PrintAndLog("\nByte Subtract | 0x%X", calcSumByteSub(data, len, mask));
|
calcSumByteAdd(data, len, mask)
|
||||||
PrintAndLog("Nibble Subtract | 0x%X", calcSumNibbleSub(data, len, mask));
|
, calcSumNibbleAdd(data, len, mask)
|
||||||
|
, calcSumCrumbAdd(data, len, mask)
|
||||||
PrintAndLog("\nCHECKSUM - One's complement");
|
, calcSumByteSub(data, len, mask)
|
||||||
PrintAndLog("Byte Add | 0x%X", calcSumByteAddOnes(data, len, mask));
|
, calcSumNibbleSub(data, len, mask)
|
||||||
PrintAndLog("Nibble Add | 0x%X", calcSumNibbleAddOnes(data, len, mask));
|
, calcSumByteAddOnes(data, len, mask)
|
||||||
PrintAndLog("Crumb Add | 0x%X", calcSumCrumbAddOnes(data, len, mask));
|
, calcSumNibbleAddOnes(data, len, mask)
|
||||||
|
, calcSumCrumbAddOnes(data, len, mask)
|
||||||
PrintAndLog("Byte Subtract | 0x%X", calcSumByteSubOnes(data, len, mask));
|
, calcSumByteSubOnes(data, len, mask)
|
||||||
PrintAndLog("Nibble Subtract | 0x%X", calcSumNibbleSubOnes(data, len, mask));
|
, calcSumNibbleSubOnes(data, len, mask)
|
||||||
|
, calcSumByteXor(data, len, mask)
|
||||||
PrintAndLog("\nXOR");
|
, calcSumNibbleXor(data, len, mask)
|
||||||
PrintAndLog("Byte Xor | 0x%X", calcSumByteXor(data, len, mask));
|
, calcSumCrumbXor(data, len, mask)
|
||||||
PrintAndLog("Nibble Xor | 0x%X", calcSumNibbleXor(data, len, mask));
|
);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue