mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
device side mac
This commit is contained in:
parent
445d5a46df
commit
b0ffc90c16
2 changed files with 21 additions and 1 deletions
|
@ -249,12 +249,32 @@ static void opt_MAC(uint8_t *k, uint8_t *input, uint8_t *out) {
|
||||||
opt_output(k, &_init, out);
|
opt_output(k, &_init, out);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void opt_MAC_N(uint8_t *k, uint8_t *input, uint8_t in_size, uint8_t *out) {
|
||||||
|
State _init = {
|
||||||
|
((k[0] ^ 0x4c) + 0xEC) & 0xFF,// l
|
||||||
|
((k[0] ^ 0x4c) + 0x21) & 0xFF,// r
|
||||||
|
0x4c, // b
|
||||||
|
0xE012 // t
|
||||||
|
};
|
||||||
|
|
||||||
|
opt_suc(k, &_init, input, in_size, false);
|
||||||
|
opt_output(k, &_init, out);
|
||||||
|
}
|
||||||
|
|
||||||
void opt_doReaderMAC(uint8_t *cc_nr_p, uint8_t *div_key_p, uint8_t mac[4]) {
|
void opt_doReaderMAC(uint8_t *cc_nr_p, uint8_t *div_key_p, uint8_t mac[4]) {
|
||||||
uint8_t dest [] = {0, 0, 0, 0, 0, 0, 0, 0};
|
uint8_t dest [] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
opt_MAC(div_key_p, cc_nr_p, dest);
|
opt_MAC(div_key_p, cc_nr_p, dest);
|
||||||
memcpy(mac, dest, 4);
|
memcpy(mac, dest, 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void doMAC_N(uint8_t *in_p, uint8_t in_size, uint8_t *div_key_p, uint8_t mac[4]) {
|
||||||
|
uint8_t dest [] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
opt_MAC_N(div_key_p, in_p, in_size, dest);
|
||||||
|
memcpy(mac, dest, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void opt_doTagMAC(uint8_t *cc_p, const uint8_t *div_key_p, uint8_t mac[4]) {
|
void opt_doTagMAC(uint8_t *cc_p, const uint8_t *div_key_p, uint8_t mac[4]) {
|
||||||
State _init = {
|
State _init = {
|
||||||
((div_key_p[0] ^ 0x4c) + 0xEC) & 0xFF,// l
|
((div_key_p[0] ^ 0x4c) + 0xEC) & 0xFF,// l
|
||||||
|
|
|
@ -46,6 +46,6 @@ State opt_doTagMAC_1(uint8_t *cc_p, const uint8_t *div_key_p);
|
||||||
*/
|
*/
|
||||||
void opt_doTagMAC_2(State _init, uint8_t *nr, uint8_t mac[4], const uint8_t *div_key_p);
|
void opt_doTagMAC_2(State _init, uint8_t *nr, uint8_t mac[4], const uint8_t *div_key_p);
|
||||||
|
|
||||||
|
void doMAC_N(uint8_t *in_p, uint8_t in_size, uint8_t *div_key_p, uint8_t mac[4]);
|
||||||
void iclass_calc_div_key(uint8_t *csn, uint8_t *key, uint8_t *div_key, bool elite);
|
void iclass_calc_div_key(uint8_t *csn, uint8_t *key, uint8_t *div_key, bool elite);
|
||||||
#endif // OPTIMIZED_CIPHER_H
|
#endif // OPTIMIZED_CIPHER_H
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue