FIX: Strange int -> uint8_t casting behavior (0x05 gets the 25bit set and becomes 0x10005 instead) in fskdemod, removed int and sscanf.
uint8_t curSample = 0;
uint8_t lastSample = 0;
uint16_t skipCnt = 0;
uint8_t curSample = 0;
uint8_t lastSample = 0;
uint16_t skipCnt = 0;
- while(!BUTTON_PRESS() && !usb_poll_validate_length() && skipCnt<1000) {
+ while(!BUTTON_PRESS() && !usb_poll_validate_length() && skipCnt < 1000 && (i < bufsize) ) {
WDT_HIT();
if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) {
AT91C_BASE_SSC->SSC_THR = 0x43;
WDT_HIT();
if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) {
AT91C_BASE_SSC->SSC_THR = 0x43;
// if just found start - recover last sample
if (!startFound) {
dest[i++] = lastSample;
// if just found start - recover last sample
if (!startFound) {
dest[i++] = lastSample;
}
// collect samples
dest[i++] = curSample;
}
// collect samples
dest[i++] = curSample;
- if (i >= bufsize-1) break;
int FSKrawDemod(const char *Cmd, bool verbose)
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
int FSKrawDemod(const char *Cmd, bool verbose)
{
//raw fsk demod no manchester decoding no start bit finding just get binary from wave
- //set defaults
- int rfLen = 0;
- int invert = 0;
- int fchigh = 0;
- int fclow = 0;
+ uint8_t rfLen, invert, fchigh, fclow;
//set options from parameters entered with the command
//set options from parameters entered with the command
- sscanf(Cmd, "%i %i %i %i", &rfLen, &invert, &fchigh, &fclow);
-
+ rfLen = param_get8ex(Cmd, 0, 0, 10);
+ invert = param_get8ex(Cmd, 1, 0, 10);
+ fchigh = param_get8ex(Cmd, 2, 0, 10);
+ fclow = param_get8ex(Cmd, 3, 0, 10);
+
if (strlen(Cmd)>0 && strlen(Cmd)<=2) {
if (rfLen==1){
invert = 1; //if invert option only is used
if (strlen(Cmd)>0 && strlen(Cmd)<=2) {
if (rfLen==1){
invert = 1; //if invert option only is used
if (fchigh==0 || fclow == 0){
fcs = countFC(BitStream, BitLen, 1);
if (fcs==0){
if (fchigh==0 || fclow == 0){
fcs = countFC(BitStream, BitLen, 1);
if (fcs==0){
- fchigh=10;
- fclow=8;
- }else{
+ fchigh = 10;
+ fclow = 8;
+ } else {
fchigh = (fcs >> 8) & 0xFF;
fclow = fcs & 0xFF;
}
}
fchigh = (fcs >> 8) & 0xFF;
fclow = fcs & 0xFF;
}
}
rfLen = detectFSKClk(BitStream, BitLen, fchigh, fclow);
if (rfLen == 0) rfLen = 50;
}
rfLen = detectFSKClk(BitStream, BitLen, fchigh, fclow);
if (rfLen == 0) rfLen = 50;
}
- int size = fskdemod(BitStream,BitLen,(uint8_t)rfLen,(uint8_t)invert,(uint8_t)fchigh,(uint8_t)fclow);
- if (size>0){
- setDemodBuf(BitStream,size,0);
+ int size = fskdemod(BitStream, BitLen, rfLen, invert, fchigh, fclow);
+ if (size > 0){
+ setDemodBuf(BitStream, size, 0);
// Now output the bitstream to the scrollback by line of 16 bits
if (verbose || g_debugMode) {
// Now output the bitstream to the scrollback by line of 16 bits
if (verbose || g_debugMode) {
- PrintAndLog("\nUsing Clock:%d, invert:%d, fchigh:%d, fclow:%d", rfLen, invert, fchigh, fclow);
- PrintAndLog("%s decoded bitstream:",GetFSKType(fchigh,fclow,invert));
+ PrintAndLog("\nUsing Clock:%d, invert:%d, fchigh:%d, fclow:%u", rfLen, invert, fchigh, fclow);
+ PrintAndLog("%s decoded bitstream:", GetFSKType(fchigh, fclow, invert));
if (g_debugMode) PrintAndLog("no FSK data found");
}
return 0;
if (g_debugMode) PrintAndLog("no FSK data found");
}
return 0;
found = tryDetectModulation();\r
\r
if ( found ) {\r
found = tryDetectModulation();\r
\r
if ( found ) {\r
- PrintAndLog("Found valid password:[%08X]", testpwd);\r
+ PrintAndLog("Found valid password: [%08X]", testpwd);\r