CHG: spelling mistakes. (

This commit is contained in:
iceman1001 2017-01-18 20:19:08 +01:00
parent efbf81da52
commit 6df022667d
2 changed files with 40 additions and 66 deletions

View file

@ -10,7 +10,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
- `hf iclass write` - fixed bugs, added crc. (?) - `hf iclass write` - fixed bugs, added crc. (?)
- `hf iclass dump` - changed layout in dump (iceman) - `hf iclass dump` - changed layout in dump (iceman)
- Changed - debug statements are more clear (iceman) - Changed - debug statements are more clear (iceman)
- `lf search` - fixed the silent option when aquireing data. (iceman) - `lf search` - fixed the silent option when acquire data. (iceman)
- `lf search` - added presco, visa2000, noralsy detection (iceman) - `lf search` - added presco, visa2000, noralsy detection (iceman)
- `lf precso` - fixed some bitsgeneration in precso bits (iceman) - `lf precso` - fixed some bitsgeneration in precso bits (iceman)
- Added `lf noralsy` - adds demod/clone/sime of Noralsy LF tags. (iceman) - Added `lf noralsy` - adds demod/clone/sime of Noralsy LF tags. (iceman)

View file

@ -6,28 +6,7 @@
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// Low frequency T55xx commands // Low frequency T55xx commands
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "proxmark3.h"
#include "ui.h"
#include "graph.h"
#include "cmdmain.h"
#include "cmdparser.h"
#include "cmddata.h"
#include "cmdlf.h"
#include "cmdlft55xx.h" #include "cmdlft55xx.h"
#include "util.h"
#include "data.h"
#include "lfdemod.h"
#include "cmdhf14a.h" //for getTagInfo
#define T55x7_CONFIGURATION_BLOCK 0x00
#define T55x7_PAGE0 0x00
#define T55x7_PAGE1 0x01
#define T55x7_PWD 0x00000010
#define REGULAR_READ_MODE_BLOCK 0xFF
// Default configuration // Default configuration
t55xx_conf_block_t config = { .modulation = DEMOD_ASK, .inverted = FALSE, .offset = 0x00, .block0 = 0x00, .Q5 = FALSE }; t55xx_conf_block_t config = { .modulation = DEMOD_ASK, .inverted = FALSE, .offset = 0x00, .block0 = 0x00, .Q5 = FALSE };
@ -1489,7 +1468,7 @@ bool IsCancelled(void) {
int CmdT55xxBruteForce(const char *Cmd) { int CmdT55xxBruteForce(const char *Cmd) {
// load a default pwd file. // load a default pwd file.
char buf[9]; char line[9];
char filename[FILE_PATH_SIZE]={0}; char filename[FILE_PATH_SIZE]={0};
int keycnt = 0; int keycnt = 0;
uint8_t stKeyBlock = 20; uint8_t stKeyBlock = 20;
@ -1498,10 +1477,12 @@ int CmdT55xxBruteForce(const char *Cmd) {
uint32_t end_password = 0xFFFFFFFF; //end password uint32_t end_password = 0xFFFFFFFF; //end password
bool found = false; bool found = false;
memset(line, 0, sizeof(line));
char cmdp = param_getchar(Cmd, 0); char cmdp = param_getchar(Cmd, 0);
if (cmdp == 'h' || cmdp == 'H') return usage_t55xx_bruteforce(); if (cmdp == 'h' || cmdp == 'H') return usage_t55xx_bruteforce();
keyBlock = calloc(stKeyBlock, 6); keyBlock = calloc(stKeyBlock, 4);
if (keyBlock == NULL) return 1; if (keyBlock == NULL) return 1;
if (cmdp == 'i' || cmdp == 'I') { if (cmdp == 'i' || cmdp == 'I') {
@ -1516,45 +1497,47 @@ int CmdT55xxBruteForce(const char *Cmd) {
free(keyBlock); free(keyBlock);
return 1; return 1;
} }
while( fgets(buf, sizeof(buf), f) ){
if (strlen(buf) < 8 || buf[7] == '\n') continue;
while (fgetc(f) != '\n' && !feof(f)) ; //goto next line while( fgets(line, sizeof(line), f) ){
if (strlen(line) < 8 || line[7] == '\n') continue;
//goto next line
while (fgetc(f) != '\n' && !feof(f)) ;
//The line start with # is comment, skip //The line start with # is comment, skip
if( buf[0]=='#' ) continue; if( line[0]=='#' ) continue;
if (!isxdigit(buf[0])){ if (!isxdigit(line[0])) {
PrintAndLog("File content error. '%s' must include 8 HEX symbols", buf); PrintAndLog("File content error. '%s' must include 8 HEX symbols", line);
continue; continue;
} }
buf[8] = 0; line[8] = 0;
// realloc keyblock array size.
if ( stKeyBlock - keycnt < 2) { if ( stKeyBlock - keycnt < 2) {
p = realloc(keyBlock, 6*(stKeyBlock+=10)); p = realloc(keyBlock, 4 * (stKeyBlock += 10));
if (!p) { if (!p) {
PrintAndLog("Cannot allocate memory for defaultKeys"); PrintAndLog("Cannot allocate memory for defaultKeys");
free(keyBlock); free(keyBlock);
if (f) { if (f)
fclose(f); fclose(f);
f = NULL;
}
return 2; return 2;
} }
keyBlock = p; keyBlock = p;
} }
// clear mem
memset(keyBlock + 4 * keycnt, 0, 4); memset(keyBlock + 4 * keycnt, 0, 4);
num_to_bytes(strtoll(buf, NULL, 16), 4, keyBlock + 4*keycnt);
PrintAndLog("chk custom pwd[%2d] %08X", keycnt, bytes_to_num(keyBlock + 4*keycnt, 4)); num_to_bytes( strtoll(line, NULL, 16), 4, keyBlock + 4*keycnt);
keycnt++;
memset(buf, 0, sizeof(buf)); PrintAndLog("chk custom pwd[%2d] %08X", keycnt, bytes_to_num(keyBlock + 4 * keycnt, 4) );
keycnt++;
memset(line, 0, sizeof(line));
} }
if (f) { if (f)
fclose(f); fclose(f);
f = NULL;
}
if (keycnt == 0) { if (keycnt == 0) {
PrintAndLog("No keys found in file"); PrintAndLog("No keys found in file");
free(keyBlock); free(keyBlock);
@ -1582,7 +1565,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
PrintAndLog("Testing %08X", testpwd); PrintAndLog("Testing %08X", testpwd);
if ( !AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, testpwd)) { if ( !AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, testpwd)) {
PrintAndLog("Aquireing data from device failed. Quitting"); PrintAndLog("Acquire data from device failed. Quitting");
free(keyBlock); free(keyBlock);
return 0; return 0;
} }
@ -1590,8 +1573,8 @@ int CmdT55xxBruteForce(const char *Cmd) {
found = tryDetectModulation(); found = tryDetectModulation();
if ( found ) { if ( found ) {
PrintAndLog("Found valid password: [%08X]", testpwd); PrintAndLog("Found valid password: [%08X]", testpwd);
free(keyBlock); //free(keyBlock);
return 0; //return 0;
} }
} }
PrintAndLog("Password NOT found."); PrintAndLog("Password NOT found.");
@ -1625,7 +1608,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
} }
if (!AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, i)) { if (!AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, i)) {
PrintAndLog("Aquireing data from device failed. Quitting"); PrintAndLog("Acquire data from device failed. Quitting");
free(keyBlock); free(keyBlock);
return 0; return 0;
} }
@ -1649,7 +1632,7 @@ int CmdT55xxBruteForce(const char *Cmd) {
int tryOnePassword(uint32_t password) { int tryOnePassword(uint32_t password) {
PrintAndLog("Trying password %08x", password); PrintAndLog("Trying password %08x", password);
if (!AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, password)) { if (!AquireData(T55x7_PAGE0, T55x7_CONFIGURATION_BLOCK, TRUE, password)) {
PrintAndLog("Aquireing data from device failed. Quitting"); PrintAndLog("Acquire data from device failed. Quitting");
return -1; return -1;
} }
@ -1666,20 +1649,16 @@ int CmdT55xxRecoverPW(const char *Cmd) {
uint32_t prev_password = 0xffffffff; uint32_t prev_password = 0xffffffff;
uint32_t mask = 0x0; uint32_t mask = 0x0;
int found = 0; int found = 0;
char cmdp = param_getchar(Cmd, 0); char cmdp = param_getchar(Cmd, 0);
if (cmdp == 'h' || cmdp == 'H') return usage_t55xx_recoverpw(); if (cmdp == 'h' || cmdp == 'H') return usage_t55xx_recoverpw();
orig_password = param_get32ex(Cmd, 0, 0x51243648, 16); //password used by handheld cloners orig_password = param_get32ex(Cmd, 0, 0x51243648, 16); //password used by handheld cloners
// first try fliping each bit in the expected password // first try fliping each bit in the expected password
while ((found != 1) && (bit < 32)) { while (bit < 32) {
curr_password = orig_password ^ ( 1 << bit ); curr_password = orig_password ^ ( 1 << bit );
found = tryOnePassword(curr_password); found = tryOnePassword(curr_password);
if (found == 1) if (found == -1) return 0;
goto done;
else if (found == -1)
return 0;
bit++; bit++;
if (IsCancelled()) return 0; if (IsCancelled()) return 0;
@ -1691,7 +1670,7 @@ int CmdT55xxRecoverPW(const char *Cmd) {
// not sure from which end the bit bits are written, so try from both ends // not sure from which end the bit bits are written, so try from both ends
// from low bit to high bit // from low bit to high bit
bit = 0; bit = 0;
while ((found != 1) && (bit < 32)) { while (bit < 32) {
mask += ( 1 << bit ); mask += ( 1 << bit );
curr_password = orig_password & mask; curr_password = orig_password & mask;
// if updated mask didn't change the password, don't try it again // if updated mask didn't change the password, don't try it again
@ -1700,10 +1679,7 @@ int CmdT55xxRecoverPW(const char *Cmd) {
continue; continue;
} }
found = tryOnePassword(curr_password); found = tryOnePassword(curr_password);
if (found == 1) if (found == -1) return 0;
goto done;
else if (found == -1)
return 0;
bit++; bit++;
prev_password = curr_password; prev_password = curr_password;
@ -1713,7 +1689,7 @@ int CmdT55xxRecoverPW(const char *Cmd) {
// from high bit to low // from high bit to low
bit = 0; bit = 0;
mask = 0xffffffff; mask = 0xffffffff;
while ((found != 1) && (bit < 32)) { while (bit < 32) {
mask -= ( 1 << bit ); mask -= ( 1 << bit );
curr_password = orig_password & mask; curr_password = orig_password & mask;
// if updated mask didn't change the password, don't try it again // if updated mask didn't change the password, don't try it again
@ -1722,16 +1698,14 @@ int CmdT55xxRecoverPW(const char *Cmd) {
continue; continue;
} }
found = tryOnePassword(curr_password); found = tryOnePassword(curr_password);
if (found == 1) if (found == -1)
goto done;
else if (found == -1)
return 0; return 0;
bit++; bit++;
prev_password = curr_password; prev_password = curr_password;
if (IsCancelled()) return 0; if (IsCancelled()) return 0;
} }
done:
PrintAndLog(""); PrintAndLog("");
if (found == 1) if (found == 1)