mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-20 21:33:47 -07:00
support fct
This commit is contained in:
parent
0f9f5f116c
commit
a348d58c6d
2 changed files with 31 additions and 0 deletions
|
@ -1048,6 +1048,36 @@ int binstring2binarray(uint8_t *target, char *source, int length) {
|
|||
return count;
|
||||
}
|
||||
|
||||
void binstr_2_bytes(uint8_t *target, size_t *targetlen, const char *src) {
|
||||
size_t binlen = strlen(src);
|
||||
if (binlen == 0) {
|
||||
*targetlen = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
// Calculate padding needed
|
||||
size_t padding = (8 - (binlen % 8)) % 8;
|
||||
|
||||
// Determine the size of the hexadecimal array
|
||||
*targetlen = (binlen + padding) / 8;
|
||||
|
||||
uint8_t b = 0;
|
||||
size_t bit_cnt = padding;
|
||||
size_t idx = 0;
|
||||
|
||||
// Process binary string
|
||||
for (size_t i = 0; i < binlen; ++i) {
|
||||
b = (b << 1) | (src[i] == '1');
|
||||
++bit_cnt;
|
||||
|
||||
if (bit_cnt == 8) {
|
||||
target[idx++] = b;
|
||||
b = 0;
|
||||
bit_cnt = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// return parity bit required to match type
|
||||
uint8_t GetParity(const uint8_t *bits, uint8_t type, int length) {
|
||||
int x;
|
||||
|
|
|
@ -123,6 +123,7 @@ void binarraytobinstring(char *target, char *source, int length);
|
|||
int binstring2binarray(uint8_t *target, char *source, int length);
|
||||
|
||||
void byte_2_binstr(char *target, const uint8_t *source, size_t sourcelen);
|
||||
void binstr_2_bytes(uint8_t *target, size_t *targetlen, const char *src);
|
||||
|
||||
uint8_t GetParity(const uint8_t *bits, uint8_t type, int length);
|
||||
void wiegand_add_parity(uint8_t *target, uint8_t *source, uint8_t length);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue