]> git.zerfleddert.de Git - proxmark3-svn/blobdiff - client/cmdanalyse.c
ADD: 'analyse chksum' added a nibble xor calc - calcSumNibbleXor
[proxmark3-svn] / client / cmdanalyse.c
index 0d6072cbddcf8ad8d74b5b6cbd9a9e2e12fb2b8a..3f967ac66a39de0069e1e43cf008d021f7fe9e83 100644 (file)
@@ -101,6 +101,22 @@ 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){
        return ~calcSumNibbleAdd(bytes, len, mask);
 }
+static uint8_t calcSumNibbleXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
+    uint8_t sum = 0;
+    for (uint8_t i = 0; i < len; i++) {
+        sum ^= NIBBLE_LOW(bytes[i]);
+               sum ^= NIBBLE_HIGH(bytes[i]);
+       }
+       sum &= mask;    
+    return sum;
+}
+static uint8_t calcSumByteXor( uint8_t* bytes, uint8_t len, uint32_t mask) {
+    uint8_t sum = 0;
+    for (uint8_t i = 0; i < len; i++)
+        sum ^= bytes[i];
+       sum &= mask;    
+    return sum;
+}
 
 static uint8_t calcSumByteAdd( uint8_t* bytes, uint8_t len, uint32_t mask) {
     uint8_t sum = 0;
@@ -114,6 +130,8 @@ static uint8_t calcSumByteAddOnes( uint8_t* bytes, uint8_t len, uint32_t mask) {
        return ~calcSumByteAdd(bytes, len, mask);
 }
 
+
+
 static uint8_t calcSumByteSub( uint8_t* bytes, uint8_t len, uint32_t mask) {
     uint8_t sum = 0;
     for (uint8_t i = 0; i < len; i++)
@@ -277,6 +295,10 @@ int CmdAnalyseCHKSUM(const char *Cmd){
        PrintAndLog("Byte Subtract   | 0x%X", calcSumByteSubOnes(data, len, mask));
        PrintAndLog("Nibble Subtract | 0x%X", calcSumNibbleSubOnes(data, len, mask));
        
+       PrintAndLog("\nXOR");
+       PrintAndLog("Byte Xor   | 0x%X", calcSumByteXor(data, len, mask));
+       PrintAndLog("Nibble Xor   | 0x%X", calcSumNibbleXor(data, len, mask));
+       
        return 0;
 }
 
Impressum, Datenschutz