mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-11 07:46:09 -07:00
fixed lf antenna left on bug && some iclass ...
output cleanup by @iceman1001
This commit is contained in:
parent
921e63992c
commit
89696b8b24
3 changed files with 31 additions and 20 deletions
|
@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
||||||
## [unreleased][unreleased]
|
## [unreleased][unreleased]
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
- Added hitag2 read UID only and added that to lf search (marshmellow)
|
||||||
- Added lf pyramid commands (iceman)
|
- Added lf pyramid commands (iceman)
|
||||||
- Added lf presco commands - some bits not fully understood... (iceman)
|
- Added lf presco commands - some bits not fully understood... (iceman)
|
||||||
- Added experimental HitagS support (Oguzhan Cicek, Hendrik Schwartke, Ralf Spenneberg)
|
- Added experimental HitagS support (Oguzhan Cicek, Hendrik Schwartke, Ralf Spenneberg)
|
||||||
|
@ -34,9 +35,10 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
||||||
- Added 'hf snoop'. This command take digitalized signal from FPGA and put in BigBuffer. (pwpiwi + enio)
|
- Added 'hf snoop'. This command take digitalized signal from FPGA and put in BigBuffer. (pwpiwi + enio)
|
||||||
- Added Topaz (NFC type 1) protocol support ('hf topaz reader', 'hf list topaz', 'hf 14a raw -T', 'hf topaz snoop'). (piwi)
|
- Added Topaz (NFC type 1) protocol support ('hf topaz reader', 'hf list topaz', 'hf 14a raw -T', 'hf topaz snoop'). (piwi)
|
||||||
- Added option c to 'hf list' (mark CRC bytes) (piwi)
|
- Added option c to 'hf list' (mark CRC bytes) (piwi)
|
||||||
- Added option `l` or `h` to `hw tune` to save time and unnecessary fpga writes if you are only interested in lf or hf.
|
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
- Fixed bug in lf sim and continuous demods not turning off antenna when finished
|
||||||
|
- Fixed bug(s) in hf iclass write
|
||||||
- Fixed bug in lf biphase sim - `lf simask b` (and any tagtype that relies on it - gproxii...) (marshmellow)
|
- Fixed bug in lf biphase sim - `lf simask b` (and any tagtype that relies on it - gproxii...) (marshmellow)
|
||||||
- Fixed bug in lf viking clone/sim (iceman)
|
- Fixed bug in lf viking clone/sim (iceman)
|
||||||
- Fixed broken `data askedgedetect` (marshmellow)
|
- Fixed broken `data askedgedetect` (marshmellow)
|
||||||
|
|
|
@ -403,6 +403,7 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol)
|
||||||
//wait until SSC_CLK goes HIGH
|
//wait until SSC_CLK goes HIGH
|
||||||
while(!(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_CLK)) {
|
while(!(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_CLK)) {
|
||||||
if(BUTTON_PRESS() || (usb_poll_validate_length() )) {
|
if(BUTTON_PRESS() || (usb_poll_validate_length() )) {
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -420,8 +421,9 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol)
|
||||||
LED_D_OFF();
|
LED_D_OFF();
|
||||||
//wait until SSC_CLK goes LOW
|
//wait until SSC_CLK goes LOW
|
||||||
while(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_CLK) {
|
while(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_CLK) {
|
||||||
if(BUTTON_PRESS()) {
|
if(BUTTON_PRESS() || (usb_poll_validate_length() )) {
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
|
@ -436,6 +438,7 @@ void SimulateTagLowFrequency(int period, int gap, int ledcontrol)
|
||||||
SpinDelayUs(gap);
|
SpinDelayUs(gap);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -840,13 +843,15 @@ void CmdHIDdemodFSK(int findone, int *high, int *low, int ledcontrol)
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
*high = hi;
|
*high = hi;
|
||||||
*low = lo;
|
*low = lo;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
// reset
|
// reset
|
||||||
}
|
}
|
||||||
hi2 = hi = lo = idx = 0;
|
hi2 = hi = lo = idx = 0;
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
}
|
}
|
||||||
|
@ -931,12 +936,13 @@ void CmdAWIDdemodFSK(int findone, int *high, int *low, int ledcontrol)
|
||||||
}
|
}
|
||||||
if (findone){
|
if (findone){
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
// reset
|
// reset
|
||||||
idx = 0;
|
idx = 0;
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
}
|
}
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
}
|
}
|
||||||
|
@ -991,13 +997,14 @@ void CmdEM410xdemod(int findone, int *high, int *low, int ledcontrol)
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
*high=lo>>32;
|
*high=lo>>32;
|
||||||
*low=lo & 0xFFFFFFFF;
|
*low=lo & 0xFFFFFFFF;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
hi = lo = size = idx = 0;
|
hi = lo = size = idx = 0;
|
||||||
clk = invert = errCnt = 0;
|
clk = invert = errCnt = 0;
|
||||||
}
|
}
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
}
|
}
|
||||||
|
@ -1056,7 +1063,7 @@ void CmdIOdemodFSK(int findone, int *high, int *low, int ledcontrol)
|
||||||
//LED_A_OFF();
|
//LED_A_OFF();
|
||||||
*high=code;
|
*high=code;
|
||||||
*low=code2;
|
*low=code2;
|
||||||
return;
|
break;
|
||||||
}
|
}
|
||||||
code=code2=0;
|
code=code2=0;
|
||||||
version=facilitycode=0;
|
version=facilitycode=0;
|
||||||
|
@ -1065,6 +1072,7 @@ void CmdIOdemodFSK(int findone, int *high, int *low, int ledcontrol)
|
||||||
|
|
||||||
WDT_HIT();
|
WDT_HIT();
|
||||||
}
|
}
|
||||||
|
FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF);
|
||||||
DbpString("Stopped");
|
DbpString("Stopped");
|
||||||
if (ledcontrol) LED_A_OFF();
|
if (ledcontrol) LED_A_OFF();
|
||||||
}
|
}
|
||||||
|
|
|
@ -777,10 +777,10 @@ int CmdHFiClassReader_Dump(const char *Cmd) {
|
||||||
if (have_debit_key) memcpy(tag_data+(3*8),div_key,8);
|
if (have_debit_key) memcpy(tag_data+(3*8),div_key,8);
|
||||||
if (have_credit_key) memcpy(tag_data+(4*8),c_div_key,8);
|
if (have_credit_key) memcpy(tag_data+(4*8),c_div_key,8);
|
||||||
// print the dump
|
// print the dump
|
||||||
printf("CSN |00| %02X %02X %02X %02X %02X %02X %02X %02X |\n",tag_data[0],tag_data[1],tag_data[2]
|
printf("------+--+-------------------------+\n");
|
||||||
,tag_data[3],tag_data[4],tag_data[5],tag_data[6],tag_data[7]);
|
printf("CSN |00| %s|\n",sprint_hex(tag_data, 8));
|
||||||
printIclassDumpContents(tag_data, 1, (gotBytes/8)-1, gotBytes-8);
|
printIclassDumpContents(tag_data, 1, (gotBytes/8), gotBytes);
|
||||||
|
|
||||||
if (filename[0] == 0){
|
if (filename[0] == 0){
|
||||||
snprintf(filename, FILE_PATH_SIZE,"iclass_tagdump-%02x%02x%02x%02x%02x%02x%02x%02x",
|
snprintf(filename, FILE_PATH_SIZE,"iclass_tagdump-%02x%02x%02x%02x%02x%02x%02x%02x",
|
||||||
tag_data[0],tag_data[1],tag_data[2],tag_data[3],
|
tag_data[0],tag_data[1],tag_data[2],tag_data[3],
|
||||||
|
@ -1255,7 +1255,6 @@ int CmdHFiClass_loclass(const char *Cmd) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize) {
|
void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize) {
|
||||||
uint8_t blockdata[8];
|
|
||||||
uint8_t mem_config;
|
uint8_t mem_config;
|
||||||
memcpy(&mem_config, iclass_dump + 13,1);
|
memcpy(&mem_config, iclass_dump + 13,1);
|
||||||
uint8_t maxmemcount;
|
uint8_t maxmemcount;
|
||||||
|
@ -1270,18 +1269,19 @@ void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t e
|
||||||
startblock = 6;
|
startblock = 6;
|
||||||
if ((endblock > maxmemcount) || (endblock == 0))
|
if ((endblock > maxmemcount) || (endblock == 0))
|
||||||
endblock = maxmemcount;
|
endblock = maxmemcount;
|
||||||
if (endblock > filemaxblock)
|
|
||||||
|
// remember endblock need to relate to zero-index arrays.
|
||||||
|
if (endblock > filemaxblock-1)
|
||||||
endblock = filemaxblock;
|
endblock = filemaxblock;
|
||||||
|
|
||||||
int i = startblock;
|
int i = startblock;
|
||||||
int j;
|
printf("------+--+-------------------------+\n");
|
||||||
while (i <= endblock){
|
while (i <= endblock) {
|
||||||
printf("Block |%02X| ",i);
|
uint8_t *blk = iclass_dump + (i * 8);
|
||||||
memcpy(blockdata,iclass_dump + (i * 8),8);
|
printf("Block |%02X| %s|\n", i, sprint_hex(blk, 8) );
|
||||||
for (j = 0;j < 8;j++)
|
|
||||||
printf("%02X ",blockdata[j]);
|
|
||||||
printf("|\n");
|
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
printf("------+--+-------------------------+\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
int usage_hf_iclass_readtagfile() {
|
int usage_hf_iclass_readtagfile() {
|
||||||
|
@ -1327,7 +1327,8 @@ int CmdHFiClassReadTagFile(const char *Cmd) {
|
||||||
size_t bytes_read = fread(dump, 1, fsize, f);
|
size_t bytes_read = fread(dump, 1, fsize, f);
|
||||||
fclose(f);
|
fclose(f);
|
||||||
uint8_t *csn = dump;
|
uint8_t *csn = dump;
|
||||||
printf("CSN [00] | %02X %02X %02X %02X %02X %02X %02X %02X |\n",csn[0],csn[1],csn[2],csn[3],csn[4],csn[5],csn[6],csn[7]);
|
printf("------+--+-------------------------+\n");
|
||||||
|
printf("CSN |00| %s|\n", sprint_hex(csn, 8) );
|
||||||
// printIclassDumpInfo(dump);
|
// printIclassDumpInfo(dump);
|
||||||
printIclassDumpContents(dump,startblock,endblock,bytes_read);
|
printIclassDumpContents(dump,startblock,endblock,bytes_read);
|
||||||
free(dump);
|
free(dump);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue