This commit is contained in:
Philippe Teuwen 2021-10-10 01:35:38 +02:00
commit 88308ea727
98 changed files with 271 additions and 271 deletions

View file

@ -179,7 +179,7 @@ static inline uint8_t bit_rotate_r(uint8_t a, uint8_t n_bits) {
return ((a >> 1) | ((a & 1) << (n_bits - 1)));
}
static uint8_t lookup_left_substraction[0x400];
static uint8_t lookup_left_subtraction[0x400];
static uint8_t lookup_right_subtraction[0x400];
static lookup_entry lookup_left[0x100000];
static lookup_entry lookup_right[0x8000];
@ -211,15 +211,15 @@ static inline void init_lookup_right() {
}
}
static void init_lookup_left_substraction() {
static void init_lookup_left_subtraction() {
for (int index = 0; index < 0x400 ; index++) {
uint8_t b3 = (index >> 5 & 0x1f);
uint8_t bx = (index & 0x1f);
lookup_left_substraction[index] = bit_rotate_r(mod((bx + 0x1f) - b3, 0x1f), 5);
lookup_left_subtraction[index] = bit_rotate_r(mod((bx + 0x1f) - b3, 0x1f), 5);
}
}
static void init_lookup_right_substraction() {
static void init_lookup_right_subtraction() {
for (int index = 0; index < 0x400 ; index++) {
int b16 = (index >> 5);
uint8_t bx = (index & 0x1f);
@ -248,7 +248,7 @@ static inline void previous_left(uint8_t in, vector<cs_t> *candidate_states) {
state->l ^= (((uint64_t)in & 0x1f) << 20);
}
} else {
uint8_t b6 = lookup_left_substraction[b3 | bx];
uint8_t b6 = lookup_left_subtraction[b3 | bx];
state->l = (state->l & 0x7ffffffe0ull) | b6;
state->l ^= (((uint64_t)in & 0x1f) << 20);
@ -790,8 +790,8 @@ int main(int argc, const char *argv[]) {
printf("Initializing lookup tables for increasing cipher speed\n");
init_lookup_left();
init_lookup_right();
init_lookup_left_substraction();
init_lookup_right_substraction();
init_lookup_left_subtraction();
init_lookup_right_subtraction();
// Load in the ci (tag-nonce), together with the first half of Q (reader-nonce)
rstate_before_gc = 0;

View file

@ -192,7 +192,7 @@ static inline uint8_t bit_rotate_r(uint8_t a, uint8_t n_bits) {
#define BIT_ROR(a) (((a) >> 1) | (((a) & 1) << 4))
static uint8_t lookup_left_substraction[0x400];
static uint8_t lookup_left_subtraction[0x400];
static uint8_t lookup_right_subtraction[0x400];
static lookup_entry lookup_left[0x100000];
static lookup_entry lookup_right[0x8000];
@ -232,17 +232,17 @@ static inline void init_lookup_right() {
}
}
static void init_lookup_left_substraction() {
static void init_lookup_left_subtraction() {
for (int index = 0; index < 0x400 ; index++) {
uint8_t b3 = (index >> 5 & 0x1f);
uint8_t bx = (index & 0x1f);
//lookup_left_substraction[index] = bit_rotate_r(mod((bx+0x1f)-b3,0x1f),5);
lookup_left_substraction[index] = BIT_ROR(mod((bx + 0x1F) - b3, 0x1F));
//lookup_left_subtraction[index] = bit_rotate_r(mod((bx+0x1f)-b3,0x1f),5);
lookup_left_subtraction[index] = BIT_ROR(mod((bx + 0x1F) - b3, 0x1F));
}
}
static void init_lookup_right_substraction() {
static void init_lookup_right_subtraction() {
for (int index = 0; index < 0x400 ; index++) {
int b16 = (index >> 5);
uint8_t bx = (index & 0x1f);
@ -271,7 +271,7 @@ static inline void previous_left(uint8_t in, vector<cs_t> *candidate_states) {
state->l ^= (((uint64_t)in & 0x1f) << 20);
}
} else {
uint8_t b6 = lookup_left_substraction[b3 | bx];
uint8_t b6 = lookup_left_subtraction[b3 | bx];
state->l = (state->l & 0x7ffffffe0ull) | b6;
state->l ^= (((uint64_t)in & 0x1f) << 20);
@ -1050,8 +1050,8 @@ int main(int argc, const char *argv[]) {
std::thread foo_left(init_lookup_left);
std::thread foo_right(init_lookup_right);
std::thread foo_leftsub(init_lookup_left_substraction);
std::thread foo_rightsub(init_lookup_right_substraction);
std::thread foo_leftsub(init_lookup_left_subtraction);
std::thread foo_rightsub(init_lookup_right_subtraction);
foo_left.join();
foo_right.join();

View file

@ -160,7 +160,7 @@
(Mikron's European Patent EP 0473569 A2 was filed 23 August 1991, with a
priority date of 23 Aug 1990.)
Mikron was subsequently acquired by Philips Semiconductors in 1995.
Philips Semiconductors divsion subsequently became NXP.
Philips Semiconductors division subsequently became NXP.
+ Modulation read/write device -> transponder: 100 % ASK and binary pulse
length coding

View file

@ -67,7 +67,7 @@ static unsigned int profiles[11][2] = {
{ 16384, 5 }, // 0, best for Intel GPU's with Neo
{ 8192, 6 }, // 1, only for Intel NEO
{ 4096, 7 }, // 2 (old 0) seems the best for all others (also NVIDIA) :D Apple/Intel GPU's stable here
{ 2048, 8 }, // 3 (old 1) usefull for any kind of CPU's
{ 2048, 8 }, // 3 (old 1) usefulfor any kind of CPU's
{ 1024, 9 },
{ 512, 10 },
{ 256, 11 },
@ -1008,7 +1008,7 @@ int main(int argc, char **argv) {
exit(3);
}
// at this point z is the max value, still usefull for free's
// at this point z is the max value, still usefulfor free's
#if DEBUGME > 0
printf("[debug] Lower profile between %u device(s) is: %d\n", selected_devices_cnt, profile);

View file

@ -25,7 +25,7 @@ License: GNU General Public License v3 or any later version (see LICENSE.txt)
#include "opencl.h"
bool plat_dev_enabled(unsigned int id, unsigned int *sel, unsigned int cnt, unsigned int cur_type, unsigned int allow_type) {
// usefull only with devices
// usefulonly with devices
if (allow_type != CL_DEVICE_TYPE_ALL) {
if (cur_type != allow_type) return false;
}
@ -404,7 +404,7 @@ int discoverDevices(unsigned int profile_selected, uint32_t device_types_selecte
(*cd_ctx)[platform_idx].device[device_idx].is_apple_gpu = (*cd_ctx)[platform_idx].device[device_idx].is_gpu;
}
// force profile to 0 with Intel GPU and 2 wih Intel CPU's
// force profile to 0 with Intel GPU and 2 with Intel CPU's
if ((*cd_ctx)[platform_idx].is_intel) {
if ((*cd_ctx)[platform_idx].device[device_idx].is_gpu) {
(*cd_ctx)[platform_idx].device[device_idx].profile = 0; // Intel GPU's, work better with a very slow profile
@ -461,7 +461,7 @@ int discoverDevices(unsigned int profile_selected, uint32_t device_types_selecte
if (!show && verbose) printf("%14s: %s\n", "Selected", ((*cd_ctx)[platform_idx].device[device_idx].selected) ? "yes" : "no");
if ((*cd_ctx)[platform_idx].device[device_idx].unsupported) {
printf("\n%14s: this device was not supported, beacuse of missing resources\n\n", "=====> Warning");
printf("\n%14s: this device was not supported, because of missing resources\n\n", "=====> Warning");
continue;
}

View file

@ -411,7 +411,7 @@ int main(void) {
{ 16384, 5 }, // 0, best for Intel GPU's with Neo
{ 8192, 6 }, // 1, only for Intel NEO
{ 4096, 7 }, // 2 (old 0) seems the best for all others (also NVIDIA) :D Apple/Intel GPU's stable here
{ 2048, 8 }, // 3 (old 1) usefull for any kind of CPU's
{ 2048, 8 }, // 3 (old 1) usefulfor any kind of CPU's
{ 1024, 9 },
{ 512, 10 },
{ 256, 11 },

View file

@ -206,7 +206,7 @@ int thread_start_scheduler(thread_ctx_t *ctx, thread_args_t *t_arg, wu_queue_ctx
}
}
// internel err
// internal err
if (error && err == 0) {
thread_destroy(ctx);
err = THREAD_ERROR_INTERNAL;

View file

@ -34,10 +34,10 @@ TAG a3 76 dc df c1 42 e0 ee c6 75 a4 ca eb 0c da eb 46 a0 // 18 bytes = 16 byte
-------Until this line we can recover key or decrypt communication with no troubles (see mfkey64 tool)--------------------------------
TAG 52 6e af 8b // nested auth encrypted tag nonce that we dont know
TAG 52 6e af 8b // nested auth encrypted tag nonce that we don't know
8e 21 3a 29 a4 80 7e 02 // nr_enc = nr^ks1, ar_enc = ar^ks2
TAG b9 43 74 8d // at_enc = at^ks3
e2 25 f8 32 // probably next command (actually is read block cmd, but we dont know it yet)
e2 25 f8 32 // probably next command (actually is read block cmd, but we don't know it yet)
TAG 1f 26 82 8d 12 21 dd 42 c2 84 3e d0 26 7f 6b 2a 81 a9 // probably data
ba 85 1d 36 // probably read cmd
TAG 62 a8 78 69 ee 36 22 16 1c ff 4b 4e 69 cb 27 c2 e8 7e // probably data

View file

@ -127,7 +127,7 @@ static int param_gethex_to_eol(const char *line, int paramnum, uint8_t *data, in
}
if (*datalen >= maxdatalen) {
// if we dont have space in buffer and have symbols to translate
// if we don't have space in buffer and have symbols to translate
return 2;
}

View file

@ -113,7 +113,7 @@ static int param_gethex_to_eol(const char *line, int paramnum, uint8_t *data, in
}
if (*datalen >= maxdatalen) {
// if we dont have space in buffer and have symbols to translate
// if we don't have space in buffer and have symbols to translate
return 2;
}

View file

@ -74,7 +74,7 @@ Recovering key for:
{enc7}: 4abd964b07d3563aa066ed0a2eac7f6312bf
{enc8}: 9f9149ea
LFSR succesors of the tag challenge:
LFSR successors of the tag challenge:
nt': 76d4468d
nt'': d5f3c476

View file

@ -40,7 +40,7 @@ int main(int argc, char *argv[]) {
printf(" {nr_1}: %08x\n", nr1_enc);
printf(" {ar_1}: %08x\n", ar1_enc);
// Generate lfsr succesors of the tag challenge
// Generate lfsr successors of the tag challenge
printf("\nLFSR successors of the tag challenge:\n");
uint32_t p64 = prng_successor(nt, 64);
printf(" nt': %08x\n", p64);

View file

@ -44,7 +44,7 @@ int main(int argc, char *argv[]) {
printf(" {nr_1}: %08x\n", nr1_enc);
printf(" {ar_1}: %08x\n", ar1_enc);
// Generate lfsr succesors of the tag challenge
// Generate lfsr successors of the tag challenge
printf("\nLFSR successors of the tag challenge:\n");
uint32_t p64 = prng_successor(nt0, 64);
uint32_t p64b = prng_successor(nt1, 64);

View file

@ -58,7 +58,7 @@ int main(int argc, char *argv[]) {
printf("\n");
}
// Generate lfsr succesors of the tag challenge
// Generate lfsr successors of the tag challenge
printf("\nLFSR successors of the tag challenge:\n");
uint32_t p64 = prng_successor(nt, 64);
printf(" nt': %08x\n", p64);

View file

@ -69,7 +69,7 @@
# Block 59: Success: isOk:01
# Block 63: Success: isOk:01
#
# Thats it! Your S50 7byte UID card is wiped back. Now you can return back to Step 1 of this manual.
# That's it! Your S50 7byte UID card is wiped back. Now you can return back to Step 1 of this manual.
#
#

View file

@ -21,7 +21,7 @@
# GNU General Public License for more details.
#
#
# Dependecies:
# Dependencies:
#
# pip3 install pexpect ansicolors
#
@ -247,10 +247,10 @@ def main():
must_update_fw = 1
if flash_mem in msg:
print("[+] Flash memory accessable ", color('[OK]', fg='green'))
print("[+] Flash memory accessible ", color('[OK]', fg='green'))
res += 1
else:
print("[-] Flash memory accessable ", color('[FAIL]', fg='red'))
print("[-] Flash memory accessible ", color('[FAIL]', fg='red'))
# extract slow clock and verify its OK...
# slow clock check: