mirror of
https://github.com/Proxmark/proxmark3.git
synced 2025-07-12 00:06:09 -07:00
Fixed issue #36 & improved file consistency.
This commit is contained in:
parent
c8387e85e3
commit
9cefee6f42
4 changed files with 117 additions and 98 deletions
|
@ -34,6 +34,7 @@ static void __attribute__((constructor)) fill_lut()
|
||||||
static void quicksort(uint32_t* const start, uint32_t* const stop)
|
static void quicksort(uint32_t* const start, uint32_t* const stop)
|
||||||
{
|
{
|
||||||
uint32_t *it = start + 1, *rit = stop;
|
uint32_t *it = start + 1, *rit = stop;
|
||||||
|
uint32_t tmp;
|
||||||
|
|
||||||
if(it > rit)
|
if(it > rit)
|
||||||
return;
|
return;
|
||||||
|
@ -43,13 +44,19 @@ static void quicksort(uint32_t* const start, uint32_t* const stop)
|
||||||
++it;
|
++it;
|
||||||
else if(*rit > *start)
|
else if(*rit > *start)
|
||||||
--rit;
|
--rit;
|
||||||
else
|
else {
|
||||||
*it ^= (*it ^= *rit, *rit ^= *it);
|
tmp = *it;
|
||||||
|
*it = *rit;
|
||||||
|
*rit = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
if(*rit >= *start)
|
if(*rit >= *start)
|
||||||
--rit;
|
--rit;
|
||||||
if(rit != start)
|
if(rit != start) {
|
||||||
*rit ^= (*rit ^= *start, *start ^= *rit);
|
tmp = *rit;
|
||||||
|
*rit = *start;
|
||||||
|
*start = tmp;
|
||||||
|
}
|
||||||
|
|
||||||
quicksort(start, rit - 1);
|
quicksort(start, rit - 1);
|
||||||
quicksort(rit + 1, stop);
|
quicksort(rit + 1, stop);
|
||||||
|
@ -319,9 +326,12 @@ uint8_t lfsr_rollback_bit(struct Crypto1State *s, uint32_t in, int fb)
|
||||||
{
|
{
|
||||||
int out;
|
int out;
|
||||||
uint8_t ret;
|
uint8_t ret;
|
||||||
|
uint32_t tmp;
|
||||||
|
|
||||||
s->odd &= 0xffffff;
|
s->odd &= 0xffffff;
|
||||||
s->odd ^= (s->odd ^= s->even, s->even ^= s->odd);
|
tmp = s->odd;
|
||||||
|
s->odd = s->even;
|
||||||
|
s->even = tmp;
|
||||||
|
|
||||||
out = s->even & 1;
|
out = s->even & 1;
|
||||||
out ^= LF_POLY_EVEN & (s->even >>= 1);
|
out ^= LF_POLY_EVEN & (s->even >>= 1);
|
||||||
|
|
|
@ -51,6 +51,7 @@ void crypto1_get_lfsr(struct Crypto1State *state, uint64_t *lfsr)
|
||||||
uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
||||||
{
|
{
|
||||||
uint32_t feedin;
|
uint32_t feedin;
|
||||||
|
uint32_t tmp;
|
||||||
uint8_t ret = filter(s->odd);
|
uint8_t ret = filter(s->odd);
|
||||||
|
|
||||||
feedin = ret & !!is_encrypted;
|
feedin = ret & !!is_encrypted;
|
||||||
|
@ -59,7 +60,9 @@ uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
||||||
feedin ^= LF_POLY_EVEN & s->even;
|
feedin ^= LF_POLY_EVEN & s->even;
|
||||||
s->even = s->even << 1 | parity(feedin);
|
s->even = s->even << 1 | parity(feedin);
|
||||||
|
|
||||||
s->odd ^= (s->odd ^= s->even, s->even ^= s->odd);
|
tmp = s->odd;
|
||||||
|
s->odd = s->even;
|
||||||
|
s->even = tmp;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -382,9 +382,12 @@ struct Crypto1State* lfsr_recovery64(uint32_t ks2, uint32_t ks3)
|
||||||
void lfsr_rollback_bit(struct Crypto1State *s, uint32_t in, int fb)
|
void lfsr_rollback_bit(struct Crypto1State *s, uint32_t in, int fb)
|
||||||
{
|
{
|
||||||
int out;
|
int out;
|
||||||
|
uint32_t tmp;
|
||||||
|
|
||||||
s->odd &= 0xffffff;
|
s->odd &= 0xffffff;
|
||||||
s->odd ^= (s->odd ^= s->even, s->even ^= s->odd);
|
tmp = s->odd;
|
||||||
|
s->odd = s->even;
|
||||||
|
s->even = tmp;
|
||||||
|
|
||||||
out = s->even & 1;
|
out = s->even & 1;
|
||||||
out ^= LF_POLY_EVEN & (s->even >>= 1);
|
out ^= LF_POLY_EVEN & (s->even >>= 1);
|
||||||
|
|
|
@ -49,6 +49,7 @@ void crypto1_get_lfsr(struct Crypto1State *state, uint64_t *lfsr)
|
||||||
uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
||||||
{
|
{
|
||||||
uint32_t feedin;
|
uint32_t feedin;
|
||||||
|
uint32_t tmp;
|
||||||
uint8_t ret = filter(s->odd);
|
uint8_t ret = filter(s->odd);
|
||||||
|
|
||||||
feedin = ret & !!is_encrypted;
|
feedin = ret & !!is_encrypted;
|
||||||
|
@ -57,7 +58,9 @@ uint8_t crypto1_bit(struct Crypto1State *s, uint8_t in, int is_encrypted)
|
||||||
feedin ^= LF_POLY_EVEN & s->even;
|
feedin ^= LF_POLY_EVEN & s->even;
|
||||||
s->even = s->even << 1 | parity(feedin);
|
s->even = s->even << 1 | parity(feedin);
|
||||||
|
|
||||||
s->odd ^= (s->odd ^= s->even, s->even ^= s->odd);
|
tmp = s->odd;
|
||||||
|
s->odd = s->even;
|
||||||
|
s->even = tmp;
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue