mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-03-20 03:48:33 +08:00
ADD: @marshmellow42 's fixes to cmdlft55xx.c (save_restoreGB)
ADD: started with a skeleton method for printing hex and ascill.
This commit is contained in:
parent
2b9006bd14
commit
0c97a4562d
3 changed files with 24 additions and 2 deletions
|
@ -384,18 +384,22 @@ bool DecodeT55xxBlock(){
|
||||||
ans = ASKDemod(cmdStr, FALSE, FALSE, 1);
|
ans = ASKDemod(cmdStr, FALSE, FALSE, 1);
|
||||||
break;
|
break;
|
||||||
case DEMOD_PSK1:
|
case DEMOD_PSK1:
|
||||||
// skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)
|
// skip first 16 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)
|
||||||
|
save_restoreGB(1);
|
||||||
CmdLtrim("160");
|
CmdLtrim("160");
|
||||||
snprintf(cmdStr, sizeof(buf),"%d %d 6", bitRate[config.bitrate], config.inverted );
|
snprintf(cmdStr, sizeof(buf),"%d %d 6", bitRate[config.bitrate], config.inverted );
|
||||||
ans = PSKDemod(cmdStr, FALSE);
|
ans = PSKDemod(cmdStr, FALSE);
|
||||||
|
save_restoreGB(0);
|
||||||
break;
|
break;
|
||||||
case DEMOD_PSK2: //inverted won't affect this
|
case DEMOD_PSK2: //inverted won't affect this
|
||||||
case DEMOD_PSK3: //not fully implemented
|
case DEMOD_PSK3: //not fully implemented
|
||||||
// skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)
|
// skip first 160 samples to allow antenna to settle in (psk gets inverted occasionally otherwise)
|
||||||
|
save_restoreGB(1);
|
||||||
CmdLtrim("160");
|
CmdLtrim("160");
|
||||||
snprintf(cmdStr, sizeof(buf),"%d 0 6", bitRate[config.bitrate] );
|
snprintf(cmdStr, sizeof(buf),"%d 0 6", bitRate[config.bitrate] );
|
||||||
ans = PSKDemod(cmdStr, FALSE);
|
ans = PSKDemod(cmdStr, FALSE);
|
||||||
psk1TOpsk2(DemodBuffer, DemodBufferLen);
|
psk1TOpsk2(DemodBuffer, DemodBufferLen);
|
||||||
|
save_restoreGB(1);
|
||||||
break;
|
break;
|
||||||
case DEMOD_NRZ:
|
case DEMOD_NRZ:
|
||||||
snprintf(cmdStr, sizeof(buf),"%d %d 1", bitRate[config.bitrate], config.inverted );
|
snprintf(cmdStr, sizeof(buf),"%d %d 1", bitRate[config.bitrate], config.inverted );
|
||||||
|
@ -1011,8 +1015,14 @@ int CmdT55xxInfo(const char *Cmd){
|
||||||
|
|
||||||
if (!DecodeT55xxBlock()) return 1;
|
if (!DecodeT55xxBlock()) return 1;
|
||||||
|
|
||||||
|
// too little space to start with
|
||||||
if ( DemodBufferLen < 32) return 1;
|
if ( DemodBufferLen < 32) return 1;
|
||||||
|
|
||||||
|
//
|
||||||
|
PrintAndLog("Offset+32 ==%d\n DemodLen == %d", config.offset + 32,DemodBufferLen );
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t si = config.offset;
|
uint8_t si = config.offset;
|
||||||
uint32_t bl0 = PackBits(si, 32, DemodBuffer);
|
uint32_t bl0 = PackBits(si, 32, DemodBuffer);
|
||||||
|
|
||||||
|
|
|
@ -124,7 +124,12 @@ char *sprint_hex(const uint8_t *data, const size_t len) {
|
||||||
|
|
||||||
char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
|
char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks) {
|
||||||
// make sure we don't go beyond our char array memory
|
// make sure we don't go beyond our char array memory
|
||||||
int max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
|
int max_len;
|
||||||
|
if (breaks==0)
|
||||||
|
max_len = ( len > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len;
|
||||||
|
else
|
||||||
|
max_len = ( len+(len/breaks) > MAX_BIN_BREAK_LENGTH ) ? MAX_BIN_BREAK_LENGTH : len+(len/breaks);
|
||||||
|
|
||||||
static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits
|
static char buf[MAX_BIN_BREAK_LENGTH]; // 3072 + end of line characters if broken at 8 bits
|
||||||
//clear memory
|
//clear memory
|
||||||
memset(buf, 0x00, sizeof(buf));
|
memset(buf, 0x00, sizeof(buf));
|
||||||
|
@ -150,6 +155,12 @@ char *sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t brea
|
||||||
char *sprint_bin(const uint8_t *data, const size_t len) {
|
char *sprint_bin(const uint8_t *data, const size_t len) {
|
||||||
return sprint_bin_break(data, len, 0);
|
return sprint_bin_break(data, len, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char *sprint_hex_ascii(const uint8_t *data, const size_t len) {
|
||||||
|
static char buf[1024];
|
||||||
|
memset(buf, 0x00, 1024);
|
||||||
|
return buf;
|
||||||
|
}
|
||||||
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
|
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest)
|
||||||
{
|
{
|
||||||
while (len--) {
|
while (len--) {
|
||||||
|
|
|
@ -40,6 +40,7 @@ void print_hex(const uint8_t * data, const size_t len);
|
||||||
char * sprint_hex(const uint8_t * data, const size_t len);
|
char * sprint_hex(const uint8_t * data, const size_t len);
|
||||||
char * sprint_bin(const uint8_t * data, const size_t len);
|
char * sprint_bin(const uint8_t * data, const size_t len);
|
||||||
char * sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks);
|
char * sprint_bin_break(const uint8_t *data, const size_t len, const uint8_t breaks);
|
||||||
|
char *sprint_hex_ascii(const uint8_t *data, const size_t len);
|
||||||
|
|
||||||
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest);
|
void num_to_bytes(uint64_t n, size_t len, uint8_t* dest);
|
||||||
uint64_t bytes_to_num(uint8_t* src, size_t len);
|
uint64_t bytes_to_num(uint8_t* src, size_t len);
|
||||||
|
|
Loading…
Add table
Reference in a new issue