]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
added PSK2 to lf simpsk
authormarshmellow42 <marshmellowrf@gmail.com>
Sun, 22 Feb 2015 03:54:52 +0000 (22:54 -0500)
committermarshmellow42 <marshmellowrf@gmail.com>
Sun, 22 Feb 2015 03:54:52 +0000 (22:54 -0500)
testing still ongoing.

client/cmdlf.c
common/lfdemod.c
common/lfdemod.h

index b23721015d011e8548c800ed526e028e7e48efc5..d3ea8eea950e542afed171f46fcb1ff71aa3ec11 100644 (file)
@@ -28,6 +28,7 @@
 #include "cmdlft55xx.h"
 #include "cmdlfpcf7931.h"
 #include "cmdlfio.h"
+#include "lfdemod.h"
 
 static int CmdHelp(const char *Cmd);
 
@@ -853,13 +854,20 @@ int CmdLFpskSim(const char *Cmd)
   }
   if (dataLen == 0){ //using DemodBuffer
     if (clk==0) clk = GetPskClock(NULL, FALSE, FALSE);
-    if (!carrier) carrier = GetPskCarrier(NULL, FALSE, FALSE);
+    if (!carrier) carrier = GetPskCarrier(NULL, FALSE, FALSE); 
   } else {
     setDemodBuf(data, dataLen, 0);
   }
   if (clk <= 0) clk = 32;
   if (carrier == 0) carrier = 2;
-
+  if (pskType != 1){
+    if (pskType == 2){
+      //need to convert psk2 to psk1 data before sim
+      psk2TOpsk1(DemodBuffer, DemodBufferLen);
+    } else {
+      PrintAndLog("Sorry, PSK3 not yet available");
+    }
+  }
   uint16_t arg1, arg2;
   arg1 = clk << 8 | carrier;
   arg2 = invert;
index 79252dd983669c23d6d182a508396ddd29afdcb5..bee87ece7b5b5c93b10e13472ca1e2708b2abf72 100644 (file)
@@ -1068,6 +1068,23 @@ void psk1TOpsk2(uint8_t *BitStream, size_t size)
        return;
 }
 
+// by marshmellow
+// convert psk2 demod to psk1 demod
+// from only transition waves are 1s to phase shifts change bit
+void psk2TOpsk1(uint8_t *BitStream, size_t size)
+{
+       size_t i;
+       uint8_t phase=BitStream[0];
+       //uint8_t lastBit=BitStream[0];
+       for (i=1; i<size; i++){
+               if (phase!=BitStream[i]){
+                       phase ^=1;
+               }
+               BitStream[i]=phase;
+       }
+       return;
+}
+
 // redesigned by marshmellow adjusted from existing decode functions
 // indala id decoding - only tested on 26 bit tags, but attempted to make it work for more
 int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert)
index 2880ff82fb9959efd7d549256119597b534e6386..9d55d064373ed9e40ea37f6a7a2ac052000fc28f 100644 (file)
@@ -28,6 +28,7 @@ int fskdemod(uint8_t *dest, size_t size, uint8_t rfLen, uint8_t invert, uint8_t
 uint32_t bytebits_to_byte(uint8_t* src, size_t numbits);
 int nrzRawDemod(uint8_t *dest, size_t *size, int *clk, int *invert, int maxErr);
 void psk1TOpsk2(uint8_t *BitStream, size_t size);
+void psk2TOpsk1(uint8_t *BitStream, size_t size);
 int DetectNRZClock(uint8_t dest[], size_t size, int clock);
 int indala26decode(uint8_t *bitStream, size_t *size, uint8_t *invert);
 void pskCleanWave(uint8_t *bitStream, size_t size);
Impressum, Datenschutz