-#include "crapto1.h"
-#define __STDC_FORMAT_MACROS
+#include "crapto1/crapto1.h"
#include <inttypes.h>
-#define llx PRIx64
#include <stdio.h>
typedef unsigned char byte_t;
int main(const int argc, const char* argv[]) {
struct Crypto1State *state;
- uint32_t pos, uid, nt, nr, rr, nr_diff, ks1, ks2;
+ uint32_t pos, uid, nt, nr, rr, nr_diff;
byte_t bt, i, ks3x[8], par[8][8];
- uint64_t key, key_recovered;
+ uint64_t key_recovered;
uint64_t par_info;
uint64_t ks_info;
nr = rr = 0;
}
sscanf(argv[1],"%08x",&uid);
sscanf(argv[2],"%08x",&nt);
- sscanf(argv[3],"%016"llx,&par_info);
- sscanf(argv[4],"%016"llx,&ks_info);
+ sscanf(argv[3],"%016" SCNx64,&par_info);
+ sscanf(argv[4],"%016" SCNx64,&ks_info);
// Reset the last three significant bits of the reader nonce
nr &= 0xffffff1f;
- printf("\nuid(%08x) nt(%08x) par(%016"llx") ks(%016"llx")\n\n",uid,nt,par_info,ks_info);
+ printf("\nuid(%08x) nt(%08x) par(%016" PRIx64 ") ks(%016" PRIx64 ")\n\n",uid,nt,par_info,ks_info);
for (pos=0; pos<8; pos++)
{
printf("%01x|\n",par[i][7]);
}
- state = lfsr_common_prefix(nr,rr,ks3x,par);
+ state = lfsr_common_prefix(nr,rr,ks3x,par,0);
lfsr_rollback_word(state,uid^nt,0);
crypto1_get_lfsr(state,&key_recovered);
- printf("\nkey recovered: %012"llx"\n\n",key_recovered);
+ printf("\nkey recovered: %012" PRIx64 "\n\n",key_recovered);
crypto1_destroy(state);
return 0;