int i, j, clock, header, rows, bit, hithigh, hitlow, first, bit2idx, high, low;
int parity[4];
char id[11];
+ char id2[11];
int retested = 0;
uint8_t BitStream[MAX_GRAPH_TRACE_LEN];
high = low = 0;
{
/* Read another byte! */
sprintf(id+rows, "%x", (8 * BitStream[i]) + (4 * BitStream[i+1]) + (2 * BitStream[i+2]) + (1 * BitStream[i+3]));
+ sprintf(id2+rows, "%x", (8 * BitStream[i+3]) + (4 * BitStream[i+2]) + (2 * BitStream[i+1]) + (1 * BitStream[i]));
rows++;
/* Keep parity info */
{
/* Sweet! */
PrintAndLog("EM410x Tag ID: %s", id);
+ PrintAndLog("Unique Tag ID: %s", id2);
/* Stop any loops */
return 1;
// is very slow
// TBD: Auto-grow sample size based on detected sample rate. IE: If the
// rate gets lower, then grow the number of samples
- CmdSamples("4000");
- } while ( ! CmdEM410xRead(""));
+
+ // Changed by martin, 4000 x 4 = 16000,
+ // see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235
+ CmdSamples("16000");
+ } while ( ! CmdEM410xRead(""));
return 0;
}
++i;
while ((GraphBuffer[i] > low) && (i<GraphTraceLen))
++i;
- if (j>(MAX_GRAPH_TRACE_LEN/64)) {
+ if (j>=(MAX_GRAPH_TRACE_LEN/64)) {
break;
}
tmpbuff[j++]= i - start;
int CmdEM410xWrite(const char *Cmd)
{
uint64_t id = 0xFFFFFFFFFFFFFFFF; // invalid id value
- unsigned int card = 0xFF; // invalid card value
+ int card = 0xFF; // invalid card value
unsigned int clock = 0; // invalid clock value
sscanf(Cmd, "%" PRIx64 " %d %d", &id, &card, &clock);