mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-08-14 02:26:59 -07:00
hitag2 write (#310)
Usage is similar to hitagS write: lf hitag write 24 KEY pagenumber 32bitvalue * added changlelog entry
This commit is contained in:
parent
979c76556a
commit
52244230d3
6 changed files with 763 additions and 398 deletions
|
@ -22,6 +22,9 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
|||
|
||||
## [3.0.0][2017-06-05]
|
||||
|
||||
### Added
|
||||
- Added lf hitag write 24, the command writes a block to hitag2 tags in crypto mode (henjo)
|
||||
|
||||
### Added
|
||||
- Added hf mf hardnested, an attack working for hardened Mifare cards (EV1, Mifare Plus SL1) where hf mf nested fails
|
||||
- Added experimental testmode write option for t55xx (danger) (marshmellow)
|
||||
|
|
|
@ -1051,7 +1051,12 @@ void UsbPacketReceived(uint8_t *packet, int len)
|
|||
ReadHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes);
|
||||
break;
|
||||
case CMD_WR_HITAG_S://writer for Hitag tags args=data to write,page and key or challenge
|
||||
WritePageHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes,c->arg[2]);
|
||||
if ((hitag_function)c->arg[0] < 10) {
|
||||
WritePageHitagS((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes,c->arg[2]);
|
||||
}
|
||||
else if ((hitag_function)c->arg[0] >= 10) {
|
||||
WriterHitag((hitag_function)c->arg[0],(hitag_data*)c->d.asBytes, c->arg[2]);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
|
||||
|
|
|
@ -182,6 +182,7 @@ void iClass_ReadCheck(uint8_t blockNo, uint8_t keyType);
|
|||
void SnoopHitag(uint32_t type);
|
||||
void SimulateHitagTag(bool tag_mem_supplied, byte_t* data);
|
||||
void ReaderHitag(hitag_function htf, hitag_data* htd);
|
||||
void WriterHitag(hitag_function htf, hitag_data* htd, int page);
|
||||
|
||||
//hitagS.h
|
||||
void SimulateHitagSTag(bool tag_mem_supplied, byte_t* data);
|
||||
|
|
1142
armsrc/hitag2.c
1142
armsrc/hitag2.c
File diff suppressed because it is too large
Load diff
|
@ -349,7 +349,9 @@ int CmdLFHitagWP(const char *Cmd) {
|
|||
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
||||
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->auth.data);
|
||||
} break;
|
||||
case 04: { //WHTSF_KEY
|
||||
case 04:
|
||||
case 24:
|
||||
{ //WHTSF_KEY
|
||||
num_to_bytes(param_get64ex(Cmd,1,0,16),6,htd->crypto.key);
|
||||
c.arg[2]= param_get32ex(Cmd, 2, 0, 10);
|
||||
num_to_bytes(param_get32ex(Cmd,3,0,16),4,htd->crypto.data);
|
||||
|
@ -363,6 +365,7 @@ int CmdLFHitagWP(const char *Cmd) {
|
|||
PrintAndLog(" 04 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
|
||||
PrintAndLog(" Hitag1 (1*)");
|
||||
PrintAndLog(" Hitag2 (2*)");
|
||||
PrintAndLog(" 24 <key> (set to 0 if no authentication is needed) <page> <byte0...byte3> write page on a Hitag S tag");
|
||||
return 1;
|
||||
} break;
|
||||
}
|
||||
|
|
|
@ -27,8 +27,9 @@ typedef enum {
|
|||
RHT2F_PASSWORD = 21,
|
||||
RHT2F_AUTHENTICATE = 22,
|
||||
RHT2F_CRYPTO = 23,
|
||||
WHT2F_CRYPTO = 24,
|
||||
RHT2F_TEST_AUTH_ATTEMPTS = 25,
|
||||
RHT2F_UID_ONLY = 26
|
||||
RHT2F_UID_ONLY = 26,
|
||||
} hitag_function;
|
||||
|
||||
typedef struct {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue