mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 13:53:55 -07:00
CHG: a select_legic function with structs and stuff and
This commit is contained in:
parent
d7e24e7c5f
commit
a39944216d
7 changed files with 132 additions and 95 deletions
20
common/crc.c
20
common/crc.c
|
@ -29,6 +29,7 @@ void crc_init(crc_t *crc, int order, uint32_t polynom, uint32_t initial_value, u
|
|||
}
|
||||
|
||||
void crc_clear(crc_t *crc) {
|
||||
|
||||
crc->state = crc->initial_value & crc->mask;
|
||||
if (crc->refin)
|
||||
crc->state = reflect(crc->state, crc->order);
|
||||
|
@ -36,26 +37,33 @@ void crc_clear(crc_t *crc) {
|
|||
|
||||
void crc_update(crc_t *crc, uint32_t indata, int data_width){
|
||||
|
||||
uint32_t poly = crc->polynom;
|
||||
|
||||
// if requested, return the initial CRC */
|
||||
if (indata == 0)
|
||||
return crc->initial_value;
|
||||
|
||||
//reflected
|
||||
if (crc->refin) indata = reflect(indata, data_width);
|
||||
if (crc->refin)
|
||||
indata = reflect(indata, data_width);
|
||||
|
||||
// Bring the next byte into the remainder.
|
||||
crc->state ^= indata << (crc->order - data_width);
|
||||
|
||||
for( uint8_t bit = data_width; bit > 0; --bit) {
|
||||
|
||||
|
||||
for( uint8_t bit = data_width; bit > 0; --bit) {
|
||||
// Try to divide the current data bit.
|
||||
if (crc->state & crc->topbit)
|
||||
crc->state = (crc->state << 1) ^ crc->polynom;
|
||||
crc->state = (crc->state << 1) ^ poly;
|
||||
else
|
||||
crc->state = (crc->state << 1);
|
||||
}
|
||||
return crc ^ model->xorout;
|
||||
}
|
||||
|
||||
void crc_update2(crc_t *crc, uint32_t data, int data_width)
|
||||
{
|
||||
if (crc->refin) data = reflect(data, data_width);
|
||||
if (crc->refin)
|
||||
data = reflect(data, data_width);
|
||||
|
||||
int i;
|
||||
for(i=0; i<data_width; i++) {
|
||||
|
|
|
@ -31,7 +31,7 @@ typedef struct {
|
|||
uint8_t mem_config; //[13]
|
||||
uint8_t eas; //[14]
|
||||
uint8_t fuses; //[15]
|
||||
}picopass_conf_block;
|
||||
} picopass_conf_block;
|
||||
|
||||
|
||||
typedef struct {
|
||||
|
@ -41,8 +41,7 @@ typedef struct {
|
|||
uint8_t key_d[8];
|
||||
uint8_t key_c[8];
|
||||
uint8_t app_issuer_area[8];
|
||||
|
||||
}picopass_hdr;
|
||||
} picopass_hdr;
|
||||
|
||||
uint8_t isset(uint8_t val, uint8_t mask) {
|
||||
return (val & mask);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue