1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-25 17:38:23 +00:00

Prepare fix for datatypes, not final

This commit is contained in:
Jens Steube 2016-01-15 17:16:43 +01:00
parent 2e61685f48
commit 63e06f582b
15 changed files with 2367 additions and 2372 deletions

View File

@ -45,7 +45,7 @@
#include <sys/ioctl.h> #include <sys/ioctl.h>
#endif #endif
typedef void *HM_LIB; typedef void *HM_LIB;
#endif #endif
#ifdef _WIN #ifdef _WIN
@ -76,6 +76,13 @@ typedef HINSTANCE HM_LIB;
#endif #endif
typedef uint8_t u8;
typedef uint16_t u16;
typedef uint32_t u32;
typedef uint64_t u64;
typedef uint32_t uint; // we need to get rid of this sooner or later, for consistency
#define SPEED_CACHE 128 #define SPEED_CACHE 128
#define SPEED_MAXAGE 4096 #define SPEED_MAXAGE 4096
@ -94,7 +101,7 @@ void log_out (FILE *fp, const char *fmt, ...);
void log_info (const char *fmt, ...); void log_info (const char *fmt, ...);
void log_error (const char *fmt, ...); void log_error (const char *fmt, ...);
typedef uint32_t uint; // we should rename to u32, sooner or later, for consistency #define MIN(a,b) (((a) < (b)) ? (a) : (b))
typedef uint64_t u64; #define MAX(a,b) (((a) > (b)) ? (a) : (b))
#endif #endif

View File

@ -3,7 +3,7 @@
* License.....: MIT * License.....: MIT
*/ */
static const uint te0[256] = static const u32 te0[256] =
{ {
0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d, 0xc66363a5, 0xf87c7c84, 0xee777799, 0xf67b7b8d,
0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554, 0xfff2f20d, 0xd66b6bbd, 0xde6f6fb1, 0x91c5c554,
@ -71,7 +71,7 @@ static const uint te0[256] =
0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a, 0x7bb0b0cb, 0xa85454fc, 0x6dbbbbd6, 0x2c16163a,
}; };
static const uint te1[256] = static const u32 te1[256] =
{ {
0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b, 0xa5c66363, 0x84f87c7c, 0x99ee7777, 0x8df67b7b,
0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5, 0x0dfff2f2, 0xbdd66b6b, 0xb1de6f6f, 0x5491c5c5,
@ -139,7 +139,7 @@ static const uint te1[256] =
0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616, 0xcb7bb0b0, 0xfca85454, 0xd66dbbbb, 0x3a2c1616,
}; };
static const uint te2[256] = static const u32 te2[256] =
{ {
0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b, 0x63a5c663, 0x7c84f87c, 0x7799ee77, 0x7b8df67b,
0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5, 0xf20dfff2, 0x6bbdd66b, 0x6fb1de6f, 0xc55491c5,
@ -207,7 +207,7 @@ static const uint te2[256] =
0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16, 0xb0cb7bb0, 0x54fca854, 0xbbd66dbb, 0x163a2c16,
}; };
static const uint te3[256] = static const u32 te3[256] =
{ {
0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6, 0x6363a5c6, 0x7c7c84f8, 0x777799ee, 0x7b7b8df6,
0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491, 0xf2f20dff, 0x6b6bbdd6, 0x6f6fb1de, 0xc5c55491,
@ -275,7 +275,7 @@ static const uint te3[256] =
0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c, 0xb0b0cb7b, 0x5454fca8, 0xbbbbd66d, 0x16163a2c,
}; };
static const uint te4[256] = static const u32 te4[256] =
{ {
0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b, 0x63636363, 0x7c7c7c7c, 0x77777777, 0x7b7b7b7b,
0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5, 0xf2f2f2f2, 0x6b6b6b6b, 0x6f6f6f6f, 0xc5c5c5c5,
@ -343,7 +343,7 @@ static const uint te4[256] =
0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616, 0xb0b0b0b0, 0x54545454, 0xbbbbbbbb, 0x16161616,
}; };
static const uint td0[256] = static const u32 td0[256] =
{ {
0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96, 0x51f4a750, 0x7e416553, 0x1a17a4c3, 0x3a275e96,
0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393, 0x3bab6bcb, 0x1f9d45f1, 0xacfa58ab, 0x4be30393,
@ -411,7 +411,7 @@ static const uint td0[256] =
0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742, 0x7bcb8461, 0xd532b670, 0x486c5c74, 0xd0b85742,
}; };
static const uint td1[256] = static const u32 td1[256] =
{ {
0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e, 0x5051f4a7, 0x537e4165, 0xc31a17a4, 0x963a275e,
0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303, 0xcb3bab6b, 0xf11f9d45, 0xabacfa58, 0x934be303,
@ -479,7 +479,7 @@ static const uint td1[256] =
0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857, 0x617bcb84, 0x70d532b6, 0x74486c5c, 0x42d0b857,
}; };
static const uint td2[256] = static const u32 td2[256] =
{ {
0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27, 0xa75051f4, 0x65537e41, 0xa4c31a17, 0x5e963a27,
0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3, 0x6bcb3bab, 0x45f11f9d, 0x58abacfa, 0x03934be3,
@ -547,7 +547,7 @@ static const uint td2[256] =
0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8, 0x84617bcb, 0xb670d532, 0x5c74486c, 0x5742d0b8,
}; };
static const uint td3[256] = static const u32 td3[256] =
{ {
0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a, 0xf4a75051, 0x4165537e, 0x17a4c31a, 0x275e963a,
0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b, 0xab6bcb3b, 0x9d45f11f, 0xfa58abac, 0xe303934b,
@ -615,7 +615,7 @@ static const uint td3[256] =
0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0, 0xcb84617b, 0x32b670d5, 0x6c5c7448, 0xb85742d0,
}; };
static const uint td4[256] = static const u32 td4[256] =
{ {
0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5, 0x52525252, 0x09090909, 0x6a6a6a6a, 0xd5d5d5d5,
0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838, 0x30303030, 0x36363636, 0xa5a5a5a5, 0x38383838,
@ -683,7 +683,7 @@ static const uint td4[256] =
0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d, 0x55555555, 0x21212121, 0x0c0c0c0c, 0x7d7d7d7d,
}; };
static const uint rcon[] = static const u32 rcon[] =
{ {
0x01000000, 0x02000000, 0x04000000, 0x08000000, 0x01000000, 0x02000000, 0x04000000, 0x08000000,
0x10000000, 0x20000000, 0x40000000, 0x80000000, 0x10000000, 0x20000000, 0x40000000, 0x80000000,
@ -692,9 +692,9 @@ static const uint rcon[] =
// 128 bit // 128 bit
static void AES128_ExpandKey (const uint *userkey, uint *rek) static void AES128_ExpandKey (const u32 *userkey, u32 *rek)
{ {
uint userkey_s[4]; u32 userkey_s[4];
userkey_s[0] = byte_swap_32 (userkey[0]); userkey_s[0] = byte_swap_32 (userkey[0]);
userkey_s[1] = byte_swap_32 (userkey[1]); userkey_s[1] = byte_swap_32 (userkey[1]);
@ -711,7 +711,7 @@ static void AES128_ExpandKey (const uint *userkey, uint *rek)
for (i = 0, j = 0; i < 10; i += 1, j += 4) for (i = 0, j = 0; i < 10; i += 1, j += 4)
{ {
uint temp = rek[j + 3]; u32 temp = rek[j + 3];
temp = (te2[(temp >> 16) & 0xff] & 0xff000000) temp = (te2[(temp >> 16) & 0xff] & 0xff000000)
^ (te3[(temp >> 8) & 0xff] & 0x00ff0000) ^ (te3[(temp >> 8) & 0xff] & 0x00ff0000)
@ -728,14 +728,14 @@ static void AES128_ExpandKey (const uint *userkey, uint *rek)
} }
} }
static void AES128_InvertKey (uint *rdk) static void AES128_InvertKey (u32 *rdk)
{ {
int i; int i;
int j; int j;
for (i = 0, j = 40; i < j; i += 4, j -= 4) for (i = 0, j = 40; i < j; i += 4, j -= 4)
{ {
uint temp; u32 temp;
temp = rdk[i + 0]; rdk[i + 0] = rdk[j + 0]; rdk[j + 0] = temp; temp = rdk[i + 0]; rdk[i + 0] = rdk[j + 0]; rdk[j + 0] = temp;
temp = rdk[i + 1]; rdk[i + 1] = rdk[j + 1]; rdk[j + 1] = temp; temp = rdk[i + 1]; rdk[i + 1] = rdk[j + 1]; rdk[j + 1] = temp;
@ -771,24 +771,24 @@ static void AES128_InvertKey (uint *rdk)
} }
} }
static void AES128_encrypt (const uint *in, uint *out, const uint *rek) static void AES128_encrypt (const u32 *in, u32 *out, const u32 *rek)
{ {
uint in_s[4]; u32 in_s[4];
in_s[0] = byte_swap_32 (in[0]); in_s[0] = byte_swap_32 (in[0]);
in_s[1] = byte_swap_32 (in[1]); in_s[1] = byte_swap_32 (in[1]);
in_s[2] = byte_swap_32 (in[2]); in_s[2] = byte_swap_32 (in[2]);
in_s[3] = byte_swap_32 (in[3]); in_s[3] = byte_swap_32 (in[3]);
uint s0 = in_s[0] ^ rek[0]; u32 s0 = in_s[0] ^ rek[0];
uint s1 = in_s[1] ^ rek[1]; u32 s1 = in_s[1] ^ rek[1];
uint s2 = in_s[2] ^ rek[2]; u32 s2 = in_s[2] ^ rek[2];
uint s3 = in_s[3] ^ rek[3]; u32 s3 = in_s[3] ^ rek[3];
uint t0; u32 t0;
uint t1; u32 t1;
uint t2; u32 t2;
uint t3; u32 t3;
t0 = te0[s0 >> 24] ^ te1[(s1 >> 16) & 0xff] ^ te2[(s2 >> 8) & 0xff] ^ te3[s3 & 0xff] ^ rek[ 4]; t0 = te0[s0 >> 24] ^ te1[(s1 >> 16) & 0xff] ^ te2[(s2 >> 8) & 0xff] ^ te3[s3 & 0xff] ^ rek[ 4];
t1 = te0[s1 >> 24] ^ te1[(s2 >> 16) & 0xff] ^ te2[(s3 >> 8) & 0xff] ^ te3[s0 & 0xff] ^ rek[ 5]; t1 = te0[s1 >> 24] ^ te1[(s2 >> 16) & 0xff] ^ te2[(s3 >> 8) & 0xff] ^ te3[s0 & 0xff] ^ rek[ 5];
@ -857,24 +857,24 @@ static void AES128_encrypt (const uint *in, uint *out, const uint *rek)
out[3] = byte_swap_32 (out[3]); out[3] = byte_swap_32 (out[3]);
} }
static void AES128_decrypt (const uint *in, uint *out, const uint *rdk) static void AES128_decrypt (const u32 *in, u32 *out, const u32 *rdk)
{ {
uint in_s[4]; u32 in_s[4];
in_s[0] = byte_swap_32 (in[0]); in_s[0] = byte_swap_32 (in[0]);
in_s[1] = byte_swap_32 (in[1]); in_s[1] = byte_swap_32 (in[1]);
in_s[2] = byte_swap_32 (in[2]); in_s[2] = byte_swap_32 (in[2]);
in_s[3] = byte_swap_32 (in[3]); in_s[3] = byte_swap_32 (in[3]);
uint s0 = in_s[0] ^ rdk[0]; u32 s0 = in_s[0] ^ rdk[0];
uint s1 = in_s[1] ^ rdk[1]; u32 s1 = in_s[1] ^ rdk[1];
uint s2 = in_s[2] ^ rdk[2]; u32 s2 = in_s[2] ^ rdk[2];
uint s3 = in_s[3] ^ rdk[3]; u32 s3 = in_s[3] ^ rdk[3];
uint t0; u32 t0;
uint t1; u32 t1;
uint t2; u32 t2;
uint t3; u32 t3;
t0 = td0[s0 >> 24] ^ td1[(s3 >> 16) & 0xff] ^ td2[(s2 >> 8) & 0xff] ^ td3[s1 & 0xff] ^ rdk[ 4]; t0 = td0[s0 >> 24] ^ td1[(s3 >> 16) & 0xff] ^ td2[(s2 >> 8) & 0xff] ^ td3[s1 & 0xff] ^ rdk[ 4];
t1 = td0[s1 >> 24] ^ td1[(s0 >> 16) & 0xff] ^ td2[(s3 >> 8) & 0xff] ^ td3[s2 & 0xff] ^ rdk[ 5]; t1 = td0[s1 >> 24] ^ td1[(s0 >> 16) & 0xff] ^ td2[(s3 >> 8) & 0xff] ^ td3[s2 & 0xff] ^ rdk[ 5];
@ -945,9 +945,9 @@ static void AES128_decrypt (const uint *in, uint *out, const uint *rdk)
// 256 bit // 256 bit
static void AES256_ExpandKey (const uint *userkey, uint *rek) static void AES256_ExpandKey (const u32 *userkey, u32 *rek)
{ {
uint userkey_s[8]; u32 userkey_s[8];
userkey_s[0] = byte_swap_32 (userkey[0]); userkey_s[0] = byte_swap_32 (userkey[0]);
userkey_s[1] = byte_swap_32 (userkey[1]); userkey_s[1] = byte_swap_32 (userkey[1]);
@ -975,7 +975,7 @@ static void AES256_ExpandKey (const uint *userkey, uint *rek)
while (1) while (1)
{ {
uint temp = rek[j + 7]; u32 temp = rek[j + 7];
rek[j + 8] = rek[j + 0] rek[j + 8] = rek[j + 0]
^ (te2[(temp >> 16) & 0xff] & 0xff000000) ^ (te2[(temp >> 16) & 0xff] & 0xff000000)
@ -1006,11 +1006,11 @@ static void AES256_ExpandKey (const uint *userkey, uint *rek)
} }
} }
static void AES256_InvertKey (uint *rdk) static void AES256_InvertKey (u32 *rdk)
{ {
for (uint i = 0, j = 56; i < j; i += 4, j -= 4) for (u32 i = 0, j = 56; i < j; i += 4, j -= 4)
{ {
uint temp; u32 temp;
temp = rdk[i + 0]; rdk[i + 0] = rdk[j + 0]; rdk[j + 0] = temp; temp = rdk[i + 0]; rdk[i + 0] = rdk[j + 0]; rdk[j + 0] = temp;
temp = rdk[i + 1]; rdk[i + 1] = rdk[j + 1]; rdk[j + 1] = temp; temp = rdk[i + 1]; rdk[i + 1] = rdk[j + 1]; rdk[j + 1] = temp;
@ -1018,7 +1018,7 @@ static void AES256_InvertKey (uint *rdk)
temp = rdk[i + 3]; rdk[i + 3] = rdk[j + 3]; rdk[j + 3] = temp; temp = rdk[i + 3]; rdk[i + 3] = rdk[j + 3]; rdk[j + 3] = temp;
} }
for (uint i = 1, j = 4; i < 14; i += 1, j += 4) for (u32 i = 1, j = 4; i < 14; i += 1, j += 4)
{ {
rdk[j + 0] = rdk[j + 0] =
td0[te1[(rdk[j + 0] >> 24) & 0xff] & 0xff] ^ td0[te1[(rdk[j + 0] >> 24) & 0xff] & 0xff] ^
@ -1046,24 +1046,24 @@ static void AES256_InvertKey (uint *rdk)
} }
} }
static void AES256_encrypt (const uint *in, uint *out, const uint *rek) static void AES256_encrypt (const u32 *in, u32 *out, const u32 *rek)
{ {
uint in_s[4]; u32 in_s[4];
in_s[0] = byte_swap_32 (in[0]); in_s[0] = byte_swap_32 (in[0]);
in_s[1] = byte_swap_32 (in[1]); in_s[1] = byte_swap_32 (in[1]);
in_s[2] = byte_swap_32 (in[2]); in_s[2] = byte_swap_32 (in[2]);
in_s[3] = byte_swap_32 (in[3]); in_s[3] = byte_swap_32 (in[3]);
uint s0 = in_s[0] ^ rek[0]; u32 s0 = in_s[0] ^ rek[0];
uint s1 = in_s[1] ^ rek[1]; u32 s1 = in_s[1] ^ rek[1];
uint s2 = in_s[2] ^ rek[2]; u32 s2 = in_s[2] ^ rek[2];
uint s3 = in_s[3] ^ rek[3]; u32 s3 = in_s[3] ^ rek[3];
uint t0; u32 t0;
uint t1; u32 t1;
uint t2; u32 t2;
uint t3; u32 t3;
t0 = te0[s0 >> 24] ^ te1[(s1 >> 16) & 0xff] ^ te2[(s2 >> 8) & 0xff] ^ te3[s3 & 0xff] ^ rek[ 4]; t0 = te0[s0 >> 24] ^ te1[(s1 >> 16) & 0xff] ^ te2[(s2 >> 8) & 0xff] ^ te3[s3 & 0xff] ^ rek[ 4];
t1 = te0[s1 >> 24] ^ te1[(s2 >> 16) & 0xff] ^ te2[(s3 >> 8) & 0xff] ^ te3[s0 & 0xff] ^ rek[ 5]; t1 = te0[s1 >> 24] ^ te1[(s2 >> 16) & 0xff] ^ te2[(s3 >> 8) & 0xff] ^ te3[s0 & 0xff] ^ rek[ 5];
@ -1148,24 +1148,24 @@ static void AES256_encrypt (const uint *in, uint *out, const uint *rek)
out[3] = byte_swap_32 (out[3]); out[3] = byte_swap_32 (out[3]);
} }
static void AES256_decrypt (const uint *in, uint *out, const uint *rdk) static void AES256_decrypt (const u32 *in, u32 *out, const u32 *rdk)
{ {
uint in_s[4]; u32 in_s[4];
in_s[0] = byte_swap_32 (in[0]); in_s[0] = byte_swap_32 (in[0]);
in_s[1] = byte_swap_32 (in[1]); in_s[1] = byte_swap_32 (in[1]);
in_s[2] = byte_swap_32 (in[2]); in_s[2] = byte_swap_32 (in[2]);
in_s[3] = byte_swap_32 (in[3]); in_s[3] = byte_swap_32 (in[3]);
uint s0 = in_s[0] ^ rdk[0]; u32 s0 = in_s[0] ^ rdk[0];
uint s1 = in_s[1] ^ rdk[1]; u32 s1 = in_s[1] ^ rdk[1];
uint s2 = in_s[2] ^ rdk[2]; u32 s2 = in_s[2] ^ rdk[2];
uint s3 = in_s[3] ^ rdk[3]; u32 s3 = in_s[3] ^ rdk[3];
uint t0; u32 t0;
uint t1; u32 t1;
uint t2; u32 t2;
uint t3; u32 t3;
t0 = td0[s0 >> 24] ^ td1[(s3 >> 16) & 0xff] ^ td2[(s2 >> 8) & 0xff] ^ td3[s1 & 0xff] ^ rdk[ 4]; t0 = td0[s0 >> 24] ^ td1[(s3 >> 16) & 0xff] ^ td2[(s2 >> 8) & 0xff] ^ td3[s1 & 0xff] ^ rdk[ 4];
t1 = td0[s1 >> 24] ^ td1[(s0 >> 16) & 0xff] ^ td2[(s3 >> 8) & 0xff] ^ td3[s2 & 0xff] ^ rdk[ 5]; t1 = td0[s1 >> 24] ^ td1[(s0 >> 16) & 0xff] ^ td2[(s3 >> 8) & 0xff] ^ td3[s2 & 0xff] ^ rdk[ 5];
@ -1252,58 +1252,58 @@ static void AES256_decrypt (const uint *in, uint *out, const uint *rdk)
// wrappers // wrappers
void AES_set_encrypt_key (unsigned char *key, int keysize, AES_KEY *aes_key) void AES_set_encrypt_key (const u8 *key, int keysize, AES_KEY *aes_key)
{ {
aes_key->bits = keysize; aes_key->bits = keysize;
if (aes_key->bits == 128) if (aes_key->bits == 128)
{ {
AES128_ExpandKey ((const uint *) key, aes_key->rek); AES128_ExpandKey ((const u32 *) key, aes_key->rek);
} }
else if (aes_key->bits == 256) else if (aes_key->bits == 256)
{ {
AES256_ExpandKey ((const uint *) key, aes_key->rek); AES256_ExpandKey ((const u32 *) key, aes_key->rek);
} }
} }
void AES_set_decrypt_key (unsigned char *key, int keysize, AES_KEY *aes_key) void AES_set_decrypt_key (const u8 *key, int keysize, AES_KEY *aes_key)
{ {
aes_key->bits = keysize; aes_key->bits = keysize;
if (aes_key->bits == 128) if (aes_key->bits == 128)
{ {
AES128_ExpandKey ((const uint *) key, aes_key->rdk); AES128_ExpandKey ((const u32 *) key, aes_key->rdk);
AES128_InvertKey (aes_key->rdk); AES128_InvertKey (aes_key->rdk);
} }
else if (aes_key->bits == 256) else if (aes_key->bits == 256)
{ {
AES256_ExpandKey ((const uint *) key, aes_key->rdk); AES256_ExpandKey ((const u32 *) key, aes_key->rdk);
AES256_InvertKey (aes_key->rdk); AES256_InvertKey (aes_key->rdk);
} }
} }
void AES_encrypt (AES_KEY *aes_key, char *input, char *output) void AES_encrypt (AES_KEY *aes_key, const u8 *input, u8 *output)
{ {
if (aes_key->bits == 128) if (aes_key->bits == 128)
{ {
AES128_encrypt ((const uint *) input, (uint *) output, aes_key->rek); AES128_encrypt ((const u32 *) input, (u32 *) output, aes_key->rek);
} }
else if (aes_key->bits == 256) else if (aes_key->bits == 256)
{ {
AES256_encrypt ((const uint *) input, (uint *) output, aes_key->rek); AES256_encrypt ((const u32 *) input, (u32 *) output, aes_key->rek);
} }
} }
void AES_decrypt (AES_KEY *aes_key, char *input, char *output) void AES_decrypt (AES_KEY *aes_key, const u8 *input, u8 *output)
{ {
if (aes_key->bits == 128) if (aes_key->bits == 128)
{ {
AES128_decrypt ((const uint *) input, (uint *) output, aes_key->rdk); AES128_decrypt ((const u32 *) input, (u32 *) output, aes_key->rdk);
} }
else if (aes_key->bits == 256) else if (aes_key->bits == 256)
{ {
AES256_decrypt ((const uint *) input, (uint *) output, aes_key->rdk); AES256_decrypt ((const u32 *) input, (u32 *) output, aes_key->rdk);
} }
} }

View File

@ -9,19 +9,19 @@
/* AES context. */ /* AES context. */
typedef struct aes_context typedef struct aes_context
{ {
uint bits; u32 bits;
uint rek[60]; u32 rek[60];
uint rdk[60]; u32 rdk[60];
} aes_context_t; } aes_context_t;
typedef aes_context_t aes_ctx; typedef aes_context_t aes_ctx;
#define AES_KEY aes_ctx #define AES_KEY aes_ctx
void AES_set_encrypt_key (unsigned char *key, int keysize, AES_KEY *aes_key); void AES_set_encrypt_key (const u8 *key, int keysize, AES_KEY *aes_key);
void AES_set_decrypt_key (unsigned char *key, int keysize, AES_KEY *aes_key); void AES_set_decrypt_key (const u8 *key, int keysize, AES_KEY *aes_key);
void AES_encrypt (AES_KEY *aes_key, char *input, char *output); void AES_encrypt (AES_KEY *aes_key, const u8 *input, u8 *output);
void AES_decrypt (AES_KEY *aes_key, char *input, char *output); void AES_decrypt (AES_KEY *aes_key, const u8 *input, u8 *output);
#endif #endif

View File

@ -3,7 +3,7 @@
* License.....: MIT * License.....: MIT
*/ */
static const uint c_SPtrans[8][64] = static const u32 c_SPtrans[8][64] =
{ {
{ {
/* nibble 0 */ /* nibble 0 */
@ -159,7 +159,7 @@ static const uint c_SPtrans[8][64] =
}, },
}; };
static const uint c_skb[8][64] = static const u32 c_skb[8][64] =
{ {
{ {
/* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */ /* for C bits (numbered as per FIPS 46) 1 2 3 4 5 6 */
@ -353,12 +353,12 @@ static const uint c_skb[8][64] =
PERM_OP (l, r, tt, 4, 0x0f0f0f0f); \ PERM_OP (l, r, tt, 4, 0x0f0f0f0f); \
} }
void _des_keysetup (uint data[2], uint Kc[16], uint Kd[16], const uint s_skb[8][64]) void _des_keysetup (u32 data[2], u32 Kc[16], u32 Kd[16], const u32 s_skb[8][64])
{ {
uint c = data[0]; u32 c = data[0];
uint d = data[1]; u32 d = data[1];
uint tt; u32 tt;
PERM_OP (d, c, tt, 4, 0x0f0f0f0f); PERM_OP (d, c, tt, 4, 0x0f0f0f0f);
HPERM_OP (c, tt, 2, 0xcccc0000); HPERM_OP (c, tt, 2, 0xcccc0000);
@ -378,8 +378,8 @@ void _des_keysetup (uint data[2], uint Kc[16], uint Kd[16], const uint s_skb[8][
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
{ {
const uint shifts3s0[16] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 }; const u32 shifts3s0[16] = { 1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1 };
const uint shifts3s1[16] = { 27, 27, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 27 }; const u32 shifts3s1[16] = { 27, 27, 26, 26, 26, 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, 27 };
c = c >> shifts3s0[i] | c << shifts3s1[i]; c = c >> shifts3s0[i] | c << shifts3s1[i];
d = d >> shifts3s0[i] | d << shifts3s1[i]; d = d >> shifts3s0[i] | d << shifts3s1[i];
@ -389,48 +389,48 @@ void _des_keysetup (uint data[2], uint Kc[16], uint Kd[16], const uint s_skb[8][
#define BOX(v,i,S) (S)[(i)][(v)] #define BOX(v,i,S) (S)[(i)][(v)]
uint s = BOX ((( c >> 0) & 0x3f), 0, s_skb) u32 s = BOX ((( c >> 0) & 0x3f), 0, s_skb)
| BOX ((((c >> 6) & 0x03) | BOX ((((c >> 6) & 0x03)
| ((c >> 7) & 0x3c)), 1, s_skb) | ((c >> 7) & 0x3c)), 1, s_skb)
| BOX ((((c >> 13) & 0x0f) | BOX ((((c >> 13) & 0x0f)
| ((c >> 14) & 0x30)), 2, s_skb) | ((c >> 14) & 0x30)), 2, s_skb)
| BOX ((((c >> 20) & 0x01) | BOX ((((c >> 20) & 0x01)
| ((c >> 21) & 0x06) | ((c >> 21) & 0x06)
| ((c >> 22) & 0x38)), 3, s_skb); | ((c >> 22) & 0x38)), 3, s_skb);
uint t = BOX ((( d >> 0) & 0x3f), 4, s_skb) u32 t = BOX ((( d >> 0) & 0x3f), 4, s_skb)
| BOX ((((d >> 7) & 0x03) | BOX ((((d >> 7) & 0x03)
| ((d >> 8) & 0x3c)), 5, s_skb) | ((d >> 8) & 0x3c)), 5, s_skb)
| BOX ((((d >> 15) & 0x3f)), 6, s_skb) | BOX ((((d >> 15) & 0x3f)), 6, s_skb)
| BOX ((((d >> 21) & 0x0f) | BOX ((((d >> 21) & 0x0f)
| ((d >> 22) & 0x30)), 7, s_skb); | ((d >> 22) & 0x30)), 7, s_skb);
Kc[i] = ((t << 16) | (s & 0x0000ffff)); Kc[i] = ((t << 16) | (s & 0x0000ffff));
Kd[i] = ((s >> 16) | (t & 0xffff0000)); Kd[i] = ((s >> 16) | (t & 0xffff0000));
Kc[i] = ROTATE_LEFT (Kc[i], 2u); Kc[i] = rotl32 (Kc[i], 2u);
Kd[i] = ROTATE_LEFT (Kd[i], 2u); Kd[i] = rotl32 (Kd[i], 2u);
} }
} }
void _des_encrypt (uint data[2], uint Kc[16], uint Kd[16], const uint s_SPtrans[8][64]) void _des_encrypt (u32 data[2], u32 Kc[16], u32 Kd[16], const u32 s_SPtrans[8][64])
{ {
uint r = data[0]; u32 r = data[0];
uint l = data[1]; u32 l = data[1];
uint tt; u32 tt;
IP (r, l, tt); IP (r, l, tt);
r = ROTATE_LEFT (r, 3u); r = rotl32 (r, 3u);
l = ROTATE_LEFT (l, 3u); l = rotl32 (l, 3u);
int i; int i;
for (i = 0; i < 16; i++) for (i = 0; i < 16; i++)
{ {
uint u = Kc[i] ^ r; u32 u = Kc[i] ^ r;
uint t = Kd[i] ^ ROTATE_LEFT (r, 28u); u32 t = Kd[i] ^ rotl32 (r, 28u);
l ^= BOX (((u >> 2) & 0x3f), 0, s_SPtrans) l ^= BOX (((u >> 2) & 0x3f), 0, s_SPtrans)
| BOX (((u >> 10) & 0x3f), 2, s_SPtrans) | BOX (((u >> 10) & 0x3f), 2, s_SPtrans)
@ -446,8 +446,8 @@ void _des_encrypt (uint data[2], uint Kc[16], uint Kd[16], const uint s_SPtrans[
r = tt; r = tt;
} }
l = ROTATE_LEFT (l, 29u); l = rotl32 (l, 29u);
r = ROTATE_LEFT (r, 29u); r = rotl32 (r, 29u);
FP (r, l, tt); FP (r, l, tt);

View File

@ -11,7 +11,7 @@
#include "common.h" #include "common.h"
#include "rp_kernel.h" #include "rp_kernel.h"
uint apply_rule (const uint name, const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len); u32 apply_rule (const u32 name, const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len);
uint apply_rules (uint *cmds, uint32_t buf0[4], uint32_t buf1[4], const uint len); u32 apply_rules (u32 *cmds, u32 buf0[4], u32 buf1[4], const u32 len);
#endif #endif

View File

@ -137,7 +137,6 @@ extern const char *VERSION_TXT;
extern const uint VERSION_BIN; extern const uint VERSION_BIN;
extern const uint RESTORE_MIN; extern const uint RESTORE_MIN;
extern const char *EULA_TXT[];
extern const char *USAGE_MINI[]; extern const char *USAGE_MINI[];
extern const char *USAGE_BIG[]; extern const char *USAGE_BIG[];
@ -1126,75 +1125,75 @@ extern hc_thread_mutex_t mux_display;
#define HASH_TYPE_BSDICRYPT 48 #define HASH_TYPE_BSDICRYPT 48
#define HASH_TYPE_RAR3HP 49 #define HASH_TYPE_RAR3HP 49
#define KERN_TYPE_MD5 0 #define KERN_TYPE_MD5 0
#define KERN_TYPE_MD5_PWSLT 10 #define KERN_TYPE_MD5_PWSLT 10
#define KERN_TYPE_MD5_SLTPW 20 #define KERN_TYPE_MD5_SLTPW 20
#define KERN_TYPE_MD5_PWUSLT 30 #define KERN_TYPE_MD5_PWUSLT 30
#define KERN_TYPE_MD5_SLTPWU 40 #define KERN_TYPE_MD5_SLTPWU 40
#define KERN_TYPE_HMACMD5_PW 50 #define KERN_TYPE_HMACMD5_PW 50
#define KERN_TYPE_HMACMD5_SLT 60 #define KERN_TYPE_HMACMD5_SLT 60
#define KERN_TYPE_SHA1 100 #define KERN_TYPE_SHA1 100
#define KERN_TYPE_SHA1_PWSLT 110 #define KERN_TYPE_SHA1_PWSLT 110
#define KERN_TYPE_SHA1_SLTPW 120 #define KERN_TYPE_SHA1_SLTPW 120
#define KERN_TYPE_SHA1_PWUSLT 130 #define KERN_TYPE_SHA1_PWUSLT 130
#define KERN_TYPE_SHA1_SLTPWU 140 #define KERN_TYPE_SHA1_SLTPWU 140
#define KERN_TYPE_HMACSHA1_PW 150 #define KERN_TYPE_HMACSHA1_PW 150
#define KERN_TYPE_HMACSHA1_SLT 160 #define KERN_TYPE_HMACSHA1_SLT 160
#define KERN_TYPE_SHA1_LINKEDIN 190 #define KERN_TYPE_SHA1_LINKEDIN 190
#define KERN_TYPE_MYSQL 200 #define KERN_TYPE_MYSQL 200
#define KERN_TYPE_MYSQL41 300 #define KERN_TYPE_MYSQL41 300
#define KERN_TYPE_PHPASS 400 #define KERN_TYPE_PHPASS 400
#define KERN_TYPE_MD5CRYPT 500 #define KERN_TYPE_MD5CRYPT 500
#define KERN_TYPE_MD4 900 #define KERN_TYPE_MD4 900
#define KERN_TYPE_MD4_PWU 1000 #define KERN_TYPE_MD4_PWU 1000
#define KERN_TYPE_MD44_PWUSLT 1100 #define KERN_TYPE_MD44_PWUSLT 1100
#define KERN_TYPE_SHA256 1400 #define KERN_TYPE_SHA256 1400
#define KERN_TYPE_SHA256_PWSLT 1410 #define KERN_TYPE_SHA256_PWSLT 1410
#define KERN_TYPE_SHA256_SLTPW 1420 #define KERN_TYPE_SHA256_SLTPW 1420
#define KERN_TYPE_SHA256_PWUSLT 1430 #define KERN_TYPE_SHA256_PWUSLT 1430
#define KERN_TYPE_SHA256_SLTPWU 1440 #define KERN_TYPE_SHA256_SLTPWU 1440
#define KERN_TYPE_HMACSHA256_PW 1450 #define KERN_TYPE_HMACSHA256_PW 1450
#define KERN_TYPE_HMACSHA256_SLT 1460 #define KERN_TYPE_HMACSHA256_SLT 1460
#define KERN_TYPE_DESCRYPT 1500 #define KERN_TYPE_DESCRYPT 1500
#define KERN_TYPE_APR1CRYPT 1600 #define KERN_TYPE_APR1CRYPT 1600
#define KERN_TYPE_SHA512 1700 #define KERN_TYPE_SHA512 1700
#define KERN_TYPE_SHA512_PWSLT 1710 #define KERN_TYPE_SHA512_PWSLT 1710
#define KERN_TYPE_SHA512_SLTPW 1720 #define KERN_TYPE_SHA512_SLTPW 1720
#define KERN_TYPE_SHA512_PWSLTU 1730 #define KERN_TYPE_SHA512_PWSLTU 1730
#define KERN_TYPE_SHA512_SLTPWU 1740 #define KERN_TYPE_SHA512_SLTPWU 1740
#define KERN_TYPE_HMACSHA512_PW 1750 #define KERN_TYPE_HMACSHA512_PW 1750
#define KERN_TYPE_HMACSHA512_SLT 1760 #define KERN_TYPE_HMACSHA512_SLT 1760
#define KERN_TYPE_SHA512CRYPT 1800 #define KERN_TYPE_SHA512CRYPT 1800
#define KERN_TYPE_DCC2 2100 #define KERN_TYPE_DCC2 2100
#define KERN_TYPE_MD5PIX 2400 #define KERN_TYPE_MD5PIX 2400
#define KERN_TYPE_MD5ASA 2410 #define KERN_TYPE_MD5ASA 2410
#define KERN_TYPE_WPA 2500 #define KERN_TYPE_WPA 2500
#define KERN_TYPE_MD55 2600 #define KERN_TYPE_MD55 2600
#define KERN_TYPE_MD55_PWSLT1 2610 #define KERN_TYPE_MD55_PWSLT1 2610
#define KERN_TYPE_MD55_PWSLT2 2710 #define KERN_TYPE_MD55_PWSLT2 2710
#define KERN_TYPE_MD55_SLTPW 2810 #define KERN_TYPE_MD55_SLTPW 2810
#define KERN_TYPE_LM 3000 #define KERN_TYPE_LM 3000
#define KERN_TYPE_ORACLEH 3100 #define KERN_TYPE_ORACLEH 3100
#define KERN_TYPE_BCRYPT 3200 #define KERN_TYPE_BCRYPT 3200
#define KERN_TYPE_MD5_SLT_MD5_PW 3710 #define KERN_TYPE_MD5_SLT_MD5_PW 3710
#define KERN_TYPE_MD5_SLT_PW_SLT 3800 #define KERN_TYPE_MD5_SLT_PW_SLT 3800
#define KERN_TYPE_MD5U5 4300 #define KERN_TYPE_MD5U5 4300
#define KERN_TYPE_MD5U5_PWSLT1 4310 #define KERN_TYPE_MD5U5_PWSLT1 4310
#define KERN_TYPE_MD5_SHA1 4400 #define KERN_TYPE_MD5_SHA1 4400
#define KERN_TYPE_SHA11 4500 #define KERN_TYPE_SHA11 4500
#define KERN_TYPE_SHA1_MD5 4700 #define KERN_TYPE_SHA1_MD5 4700
#define KERN_TYPE_MD5_CHAP 4800 #define KERN_TYPE_MD5_CHAP 4800
#define KERN_TYPE_SHA1_SLT_PW_SLT 4900 #define KERN_TYPE_SHA1_SLT_PW_SLT 4900
#define KERN_TYPE_KECCAK 5000 #define KERN_TYPE_KECCAK 5000
#define KERN_TYPE_MD5H 5100 #define KERN_TYPE_MD5H 5100
#define KERN_TYPE_PSAFE3 5200 #define KERN_TYPE_PSAFE3 5200
#define KERN_TYPE_IKEPSK_MD5 5300 #define KERN_TYPE_IKEPSK_MD5 5300
#define KERN_TYPE_IKEPSK_SHA1 5400 #define KERN_TYPE_IKEPSK_SHA1 5400
#define KERN_TYPE_NETNTLMv1 5500 #define KERN_TYPE_NETNTLMv1 5500
#define KERN_TYPE_NETNTLMv2 5600 #define KERN_TYPE_NETNTLMv2 5600
#define KERN_TYPE_ANDROIDPIN 5800 #define KERN_TYPE_ANDROIDPIN 5800
#define KERN_TYPE_RIPEMD160 6000 #define KERN_TYPE_RIPEMD160 6000
#define KERN_TYPE_WHIRLPOOL 6100 #define KERN_TYPE_WHIRLPOOL 6100
#define KERN_TYPE_TCRIPEMD160_XTS512 6211 #define KERN_TYPE_TCRIPEMD160_XTS512 6211
#define KERN_TYPE_TCRIPEMD160_XTS1024 6212 #define KERN_TYPE_TCRIPEMD160_XTS1024 6212
#define KERN_TYPE_TCRIPEMD160_XTS1536 6213 #define KERN_TYPE_TCRIPEMD160_XTS1536 6213
@ -1204,72 +1203,72 @@ extern hc_thread_mutex_t mux_display;
#define KERN_TYPE_TCWHIRLPOOL_XTS512 6231 #define KERN_TYPE_TCWHIRLPOOL_XTS512 6231
#define KERN_TYPE_TCWHIRLPOOL_XTS1024 6232 #define KERN_TYPE_TCWHIRLPOOL_XTS1024 6232
#define KERN_TYPE_TCWHIRLPOOL_XTS1536 6233 #define KERN_TYPE_TCWHIRLPOOL_XTS1536 6233
#define KERN_TYPE_MD5AIX 6300 #define KERN_TYPE_MD5AIX 6300
#define KERN_TYPE_SHA256AIX 6400 #define KERN_TYPE_SHA256AIX 6400
#define KERN_TYPE_SHA512AIX 6500 #define KERN_TYPE_SHA512AIX 6500
#define KERN_TYPE_AGILEKEY 6600 #define KERN_TYPE_AGILEKEY 6600
#define KERN_TYPE_SHA1AIX 6700 #define KERN_TYPE_SHA1AIX 6700
#define KERN_TYPE_LASTPASS 6800 #define KERN_TYPE_LASTPASS 6800
#define KERN_TYPE_GOST 6900 #define KERN_TYPE_GOST 6900
#define KERN_TYPE_PBKDF2_SHA512 7100 #define KERN_TYPE_PBKDF2_SHA512 7100
#define KERN_TYPE_RAKP 7300 #define KERN_TYPE_RAKP 7300
#define KERN_TYPE_SHA256CRYPT 7400 #define KERN_TYPE_SHA256CRYPT 7400
#define KERN_TYPE_KRB5PA 7500 #define KERN_TYPE_KRB5PA 7500
#define KERN_TYPE_SHA1_SLT_SHA1_PW 7600 #define KERN_TYPE_SHA1_SLT_SHA1_PW 7600
#define KERN_TYPE_SAPB 7700 #define KERN_TYPE_SAPB 7700
#define KERN_TYPE_SAPG 7800 #define KERN_TYPE_SAPG 7800
#define KERN_TYPE_DRUPAL7 7900 #define KERN_TYPE_DRUPAL7 7900
#define KERN_TYPE_SYBASEASE 8000 #define KERN_TYPE_SYBASEASE 8000
#define KERN_TYPE_NETSCALER 8100 #define KERN_TYPE_NETSCALER 8100
#define KERN_TYPE_CLOUDKEY 8200 #define KERN_TYPE_CLOUDKEY 8200
#define KERN_TYPE_NSEC3 8300 #define KERN_TYPE_NSEC3 8300
#define KERN_TYPE_WBB3 8400 #define KERN_TYPE_WBB3 8400
#define KERN_TYPE_RACF 8500 #define KERN_TYPE_RACF 8500
#define KERN_TYPE_LOTUS5 8600 #define KERN_TYPE_LOTUS5 8600
#define KERN_TYPE_LOTUS6 8700 #define KERN_TYPE_LOTUS6 8700
#define KERN_TYPE_ANDROIDFDE 8800 #define KERN_TYPE_ANDROIDFDE 8800
#define KERN_TYPE_SCRYPT 8900 #define KERN_TYPE_SCRYPT 8900
#define KERN_TYPE_PSAFE2 9000 #define KERN_TYPE_PSAFE2 9000
#define KERN_TYPE_LOTUS8 9100 #define KERN_TYPE_LOTUS8 9100
#define KERN_TYPE_OFFICE2007 9400 #define KERN_TYPE_OFFICE2007 9400
#define KERN_TYPE_OFFICE2010 9500 #define KERN_TYPE_OFFICE2010 9500
#define KERN_TYPE_OFFICE2013 9600 #define KERN_TYPE_OFFICE2013 9600
#define KERN_TYPE_OLDOFFICE01 9700 #define KERN_TYPE_OLDOFFICE01 9700
#define KERN_TYPE_OLDOFFICE01CM1 9710 #define KERN_TYPE_OLDOFFICE01CM1 9710
#define KERN_TYPE_OLDOFFICE01CM2 9720 #define KERN_TYPE_OLDOFFICE01CM2 9720
#define KERN_TYPE_OLDOFFICE34 9800 #define KERN_TYPE_OLDOFFICE34 9800
#define KERN_TYPE_OLDOFFICE34CM1 9810 #define KERN_TYPE_OLDOFFICE34CM1 9810
#define KERN_TYPE_OLDOFFICE34CM2 9820 #define KERN_TYPE_OLDOFFICE34CM2 9820
#define KERN_TYPE_RADMIN2 9900 #define KERN_TYPE_RADMIN2 9900
#define KERN_TYPE_SIPHASH 10100 #define KERN_TYPE_SIPHASH 10100
#define KERN_TYPE_SAPH_SHA1 10300 #define KERN_TYPE_SAPH_SHA1 10300
#define KERN_TYPE_PDF11 10400 #define KERN_TYPE_PDF11 10400
#define KERN_TYPE_PDF11CM1 10410 #define KERN_TYPE_PDF11CM1 10410
#define KERN_TYPE_PDF11CM2 10420 #define KERN_TYPE_PDF11CM2 10420
#define KERN_TYPE_PDF14 10500 #define KERN_TYPE_PDF14 10500
#define KERN_TYPE_PDF17L8 10700 #define KERN_TYPE_PDF17L8 10700
#define KERN_TYPE_SHA384 10800 #define KERN_TYPE_SHA384 10800
#define KERN_TYPE_PBKDF2_SHA256 10900 #define KERN_TYPE_PBKDF2_SHA256 10900
#define KERN_TYPE_PRESTASHOP 11000 #define KERN_TYPE_PRESTASHOP 11000
#define KERN_TYPE_POSTGRESQL_AUTH 11100 #define KERN_TYPE_POSTGRESQL_AUTH 11100
#define KERN_TYPE_MYSQL_AUTH 11200 #define KERN_TYPE_MYSQL_AUTH 11200
#define KERN_TYPE_BITCOIN_WALLET 11300 #define KERN_TYPE_BITCOIN_WALLET 11300
#define KERN_TYPE_SIP_AUTH 11400 #define KERN_TYPE_SIP_AUTH 11400
#define KERN_TYPE_CRC32 11500 #define KERN_TYPE_CRC32 11500
#define KERN_TYPE_SEVEN_ZIP 11600 #define KERN_TYPE_SEVEN_ZIP 11600
#define KERN_TYPE_GOST_2012SBOG_256 11700 #define KERN_TYPE_GOST_2012SBOG_256 11700
#define KERN_TYPE_GOST_2012SBOG_512 11800 #define KERN_TYPE_GOST_2012SBOG_512 11800
#define KERN_TYPE_PBKDF2_MD5 11900 #define KERN_TYPE_PBKDF2_MD5 11900
#define KERN_TYPE_PBKDF2_SHA1 12000 #define KERN_TYPE_PBKDF2_SHA1 12000
#define KERN_TYPE_ECRYPTFS 12200 #define KERN_TYPE_ECRYPTFS 12200
#define KERN_TYPE_ORACLET 12300 #define KERN_TYPE_ORACLET 12300
#define KERN_TYPE_BSDICRYPT 12400 #define KERN_TYPE_BSDICRYPT 12400
#define KERN_TYPE_RAR3 12500 #define KERN_TYPE_RAR3 12500
#define KERN_TYPE_CF10 12600 #define KERN_TYPE_CF10 12600
#define KERN_TYPE_MYWALLET 12700 #define KERN_TYPE_MYWALLET 12700
#define KERN_TYPE_MS_DRSR 12800 #define KERN_TYPE_MS_DRSR 12800
#define KERN_TYPE_ANDROIDFDE_SAMSUNG 12900 #define KERN_TYPE_ANDROIDFDE_SAMSUNG 12900
#define KERN_TYPE_RAR5 13000 #define KERN_TYPE_RAR5 13000
/** /**
* signatures * signatures
@ -1344,52 +1343,52 @@ extern hc_thread_mutex_t mux_display;
* Default iteration numbers * Default iteration numbers
*/ */
#define ROUNDS_PHPASS (1 << 11) // $P$B #define ROUNDS_PHPASS (1 << 11) // $P$B
#define ROUNDS_DCC2 10240 #define ROUNDS_DCC2 10240
#define ROUNDS_WPA2 4096 #define ROUNDS_WPA2 4096
#define ROUNDS_BCRYPT (1 << 5) #define ROUNDS_BCRYPT (1 << 5)
#define ROUNDS_PSAFE3 2048 #define ROUNDS_PSAFE3 2048
#define ROUNDS_ANDROIDPIN 1024 #define ROUNDS_ANDROIDPIN 1024
#define ROUNDS_TRUECRYPT_1K 1000 #define ROUNDS_TRUECRYPT_1K 1000
#define ROUNDS_TRUECRYPT_2K 2000 #define ROUNDS_TRUECRYPT_2K 2000
#define ROUNDS_SHA1AIX (1 << 6) #define ROUNDS_SHA1AIX (1 << 6)
#define ROUNDS_SHA256AIX (1 << 6) #define ROUNDS_SHA256AIX (1 << 6)
#define ROUNDS_SHA512AIX (1 << 6) #define ROUNDS_SHA512AIX (1 << 6)
#define ROUNDS_MD5CRYPT 1000 #define ROUNDS_MD5CRYPT 1000
#define ROUNDS_SHA256CRYPT 5000 #define ROUNDS_SHA256CRYPT 5000
#define ROUNDS_SHA512CRYPT 5000 #define ROUNDS_SHA512CRYPT 5000
#define ROUNDS_GRUB 10000 #define ROUNDS_GRUB 10000
#define ROUNDS_SHA512OSX 35000 #define ROUNDS_SHA512OSX 35000
#define ROUNDS_AGILEKEY 1000 #define ROUNDS_AGILEKEY 1000
#define ROUNDS_LASTPASS 500 #define ROUNDS_LASTPASS 500
#define ROUNDS_DRUPAL7 (1 << 14) // $S$C #define ROUNDS_DRUPAL7 (1 << 14) // $S$C
#define ROUNDS_CLOUDKEY 40000 #define ROUNDS_CLOUDKEY 40000
#define ROUNDS_NSEC3 1 #define ROUNDS_NSEC3 1
#define ROUNDS_ANDROIDFDE 2000 #define ROUNDS_ANDROIDFDE 2000
#define ROUNDS_PSAFE2 1000 #define ROUNDS_PSAFE2 1000
#define ROUNDS_LOTUS8 5000 #define ROUNDS_LOTUS8 5000
#define ROUNDS_CISCO8 20000 #define ROUNDS_CISCO8 20000
#define ROUNDS_OFFICE2007 50000 #define ROUNDS_OFFICE2007 50000
#define ROUNDS_OFFICE2010 100000 #define ROUNDS_OFFICE2010 100000
#define ROUNDS_OFFICE2013 100000 #define ROUNDS_OFFICE2013 100000
#define ROUNDS_DJANGOPBKDF2 20000 #define ROUNDS_DJANGOPBKDF2 20000
#define ROUNDS_SAPH_SHA1 1024 #define ROUNDS_SAPH_SHA1 1024
#define ROUNDS_PDF14 (50 + 20) #define ROUNDS_PDF14 (50 + 20)
#define ROUNDS_PDF17L8 64 #define ROUNDS_PDF17L8 64
#define ROUNDS_PBKDF2_SHA256 1000 #define ROUNDS_PBKDF2_SHA256 1000
#define ROUNDS_BITCOIN_WALLET 200000 #define ROUNDS_BITCOIN_WALLET 200000
#define ROUNDS_SEVEN_ZIP (1 << 19) #define ROUNDS_SEVEN_ZIP (1 << 19)
#define ROUNDS_PBKDF2_MD5 1000 #define ROUNDS_PBKDF2_MD5 1000
#define ROUNDS_PBKDF2_SHA1 1000 #define ROUNDS_PBKDF2_SHA1 1000
#define ROUNDS_PBKDF2_SHA512 1000 #define ROUNDS_PBKDF2_SHA512 1000
#define ROUNDS_ECRYPTFS 65536 #define ROUNDS_ECRYPTFS 65536
#define ROUNDS_ORACLET 4096 #define ROUNDS_ORACLET 4096
#define ROUNDS_BSDICRYPT 2900 #define ROUNDS_BSDICRYPT 2900
#define ROUNDS_RAR3 262144 #define ROUNDS_RAR3 262144
#define ROUNDS_MYWALLET 10 #define ROUNDS_MYWALLET 10
#define ROUNDS_MS_DRSR 100 #define ROUNDS_MS_DRSR 100
#define ROUNDS_ANDROIDFDE_SAMSUNG 4096 #define ROUNDS_ANDROIDFDE_SAMSUNG 4096
#define ROUNDS_RAR5 (1 << 15) #define ROUNDS_RAR5 (1 << 15)
/** /**
* salt types * salt types
@ -1480,9 +1479,9 @@ extern hc_thread_mutex_t mux_display;
#define DGST_SIZE_4_16 (16 * sizeof (uint)) // 64 !!! #define DGST_SIZE_4_16 (16 * sizeof (uint)) // 64 !!!
#define DGST_SIZE_4_32 (32 * sizeof (uint)) // 128 !!! #define DGST_SIZE_4_32 (32 * sizeof (uint)) // 128 !!!
#define DGST_SIZE_4_64 (64 * sizeof (uint)) // 256 #define DGST_SIZE_4_64 (64 * sizeof (uint)) // 256
#define DGST_SIZE_8_8 (8 * sizeof (uint64_t)) // 64 !!! #define DGST_SIZE_8_8 (8 * sizeof (u64)) // 64 !!!
#define DGST_SIZE_8_16 (16 * sizeof (uint64_t)) // 128 !!! #define DGST_SIZE_8_16 (16 * sizeof (u64)) // 128 !!!
#define DGST_SIZE_8_25 (25 * sizeof (uint64_t)) // 200 #define DGST_SIZE_8_25 (25 * sizeof (u64)) // 200
/** /**
* parser * parser
@ -1570,65 +1569,62 @@ extern hc_thread_mutex_t mux_display;
* functions * functions
*/ */
#define ROTATE_LEFT(a,n) rotl32 ((a), (n)) u32 rotl32 (const u32 a, const u32 n);
#define ROTATE_RIGHT(a,n) rotr32 ((a), (n)) u32 rotr32 (const u32 a, const u32 n);
u64 rotl64 (const u64 a, const u64 n);
u64 rotr64 (const u64 a, const u64 n);
uint32_t rotl32 (const uint32_t a, const uint n); u32 byte_swap_32 (const u32 n);
uint32_t rotr32 (const uint32_t a, const uint n); u64 byte_swap_64 (const u64 n);
uint64_t rotl64 (const uint64_t a, const uint n);
uint64_t rotr64 (const uint64_t a, const uint n);
void dump_hex (const char *s, size_t size); u8 hex_convert (const u8 c);
u8 hex_to_u8 (const u8 hex[2]);
u32 hex_to_u32 (const u8 hex[8]);
u64 hex_to_u64 (const u8 hex[16]);
void truecrypt_crc32 (char *file, unsigned char keytab[64]); void dump_hex (const u8 *s, const int sz);
void truecrypt_crc32 (const char *filename, u8 keytab[64]);
char *get_exec_path (); char *get_exec_path ();
char *get_install_dir (const char *progname); char *get_install_dir (const char *progname);
char *get_profile_dir (const char *homedir); char *get_profile_dir (const char *homedir);
char *get_session_dir (const char *profile_dir); char *get_session_dir (const char *profile_dir);
uint get_vliw_by_compute_capability (const uint major, const uint minor);
uint get_vliw_by_device_name (const char *device_name);
void *rulefind (const void *key, void *base, int nmemb, size_t size, int (*compar) (const void *, const void *)); void *rulefind (const void *key, void *base, int nmemb, size_t size, int (*compar) (const void *, const void *));
int sort_by_mtime (const void *p1, const void *p2); int sort_by_mtime (const void *p1, const void *p2);
int sort_by_cpu_rule (const void *p1, const void *p2); int sort_by_cpu_rule (const void *p1, const void *p2);
int sort_by_kernel_rule (const void *p1, const void *p2); int sort_by_kernel_rule (const void *p1, const void *p2);
int sort_by_stringptr (const void *p1, const void *p2); int sort_by_stringptr (const void *p1, const void *p2);
int sort_by_dictstat (const void *s1, const void *s2); int sort_by_dictstat (const void *s1, const void *s2);
int sort_by_bitmap (const void *s1, const void *s2); int sort_by_bitmap (const void *s1, const void *s2);
int sort_by_pot (const void *v1, const void *v2); int sort_by_pot (const void *v1, const void *v2);
int sort_by_hash (const void *v1, const void *v2); int sort_by_hash (const void *v1, const void *v2);
int sort_by_hash_no_salt(const void *v1, const void *v2); int sort_by_hash_no_salt (const void *v1, const void *v2);
int sort_by_salt (const void *v1, const void *v2); int sort_by_salt (const void *v1, const void *v2);
int sort_by_salt_buf (const void *v1, const void *v2); int sort_by_salt_buf (const void *v1, const void *v2);
int sort_by_hash_t_salt (const void *v1, const void *v2); int sort_by_hash_t_salt (const void *v1, const void *v2);
int sort_by_digest_4_2 (const void *v1, const void *v2); int sort_by_digest_4_2 (const void *v1, const void *v2);
int sort_by_digest_4_4 (const void *v1, const void *v2); int sort_by_digest_4_4 (const void *v1, const void *v2);
int sort_by_digest_4_5 (const void *v1, const void *v2); int sort_by_digest_4_5 (const void *v1, const void *v2);
int sort_by_digest_4_6 (const void *v1, const void *v2); int sort_by_digest_4_6 (const void *v1, const void *v2);
int sort_by_digest_4_8 (const void *v1, const void *v2); int sort_by_digest_4_8 (const void *v1, const void *v2);
int sort_by_digest_4_16 (const void *v1, const void *v2); int sort_by_digest_4_16 (const void *v1, const void *v2);
int sort_by_digest_4_32 (const void *v1, const void *v2); int sort_by_digest_4_32 (const void *v1, const void *v2);
int sort_by_digest_4_64 (const void *v1, const void *v2); int sort_by_digest_4_64 (const void *v1, const void *v2);
int sort_by_digest_8_8 (const void *v1, const void *v2); int sort_by_digest_8_8 (const void *v1, const void *v2);
int sort_by_digest_8_16 (const void *v1, const void *v2); int sort_by_digest_8_16 (const void *v1, const void *v2);
int sort_by_digest_8_25 (const void *v1, const void *v2); int sort_by_digest_8_25 (const void *v1, const void *v2);
int sort_by_digest_p0p1 (const void *v1, const void *v2); int sort_by_digest_p0p1 (const void *v1, const void *v2);
// special version for hccap (last 2 uints should be skipped where the digest is located) // special version for hccap (last 2 uints should be skipped where the digest is located)
int sort_by_hash_t_salt_hccap (const void *v1, const void *v2); int sort_by_hash_t_salt_hccap (const void *v1, const void *v2);
char hex_convert (const char c);
char hex_to_char (const char hex[2]);
uint hex_to_uint (const char hex[8]);
uint64_t hex_to_uint64_t (const char hex[16]);
void format_debug (char * debug_file, uint debug_mode, unsigned char *orig_plain_ptr, uint orig_plain_len, unsigned char *mod_plain_ptr, uint mod_plain_len, char *rule_buf, int rule_len); void format_debug (char * debug_file, uint debug_mode, unsigned char *orig_plain_ptr, uint orig_plain_len, unsigned char *mod_plain_ptr, uint mod_plain_len, char *rule_buf, int rule_len);
void format_plain (FILE *fp, unsigned char *plain_ptr, uint plain_len, uint outfile_autohex); void format_plain (FILE *fp, unsigned char *plain_ptr, uint plain_len, uint outfile_autohex);
void format_output (FILE *out_fp, char *out_buf, unsigned char *plain_ptr, const uint plain_len, const uint64_t crackpos, unsigned char *username, const uint user_len); void format_output (FILE *out_fp, char *out_buf, unsigned char *plain_ptr, const uint plain_len, const u64 crackpos, unsigned char *username, const uint user_len);
void handle_show_request (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *), FILE *out_fp); void handle_show_request (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *), FILE *out_fp);
void handle_left_request (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *), FILE *out_fp); void handle_left_request (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hashes_buf, int (*sort_by_pot) (const void *, const void *), FILE *out_fp);
void handle_show_request_lm (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *), FILE *out_fp); void handle_show_request_lm (pot_t *pot, uint pot_cnt, char *input_buf, int input_len, hash_t *hash_left, hash_t *hash_right, int (*sort_by_pot) (const void *, const void *), FILE *out_fp);
@ -1638,18 +1634,18 @@ uint setup_opencl_platforms_filter (char *opencl_platforms);
uint devices_to_devicemask (char *opencl_devices); uint devices_to_devicemask (char *opencl_devices);
cl_device_type setup_device_types_filter (char *opencl_device_types); cl_device_type setup_device_types_filter (char *opencl_device_types);
uint get_random_num (uint min, uint max); u32 get_random_num (const u32 min, const u32 max);
uint32_t mydivc32 (const uint32_t dividend, const uint32_t divisor); u32 mydivc32 (const u32 dividend, const u32 divisor);
uint64_t mydivc64 (const uint64_t dividend, const uint64_t divisor); u64 mydivc64 (const u64 dividend, const u64 divisor);
void ascii_digest (char out_buf[1024], uint salt_pos, uint digest_pos); void ascii_digest (char out_buf[1024], uint salt_pos, uint digest_pos);
void to_hccap_t (hccap_t *hccap, uint salt_pos, uint digest_pos); void to_hccap_t (hccap_t *hccap, uint salt_pos, uint digest_pos);
void format_speed_display (float val, char *buf, size_t len); void format_speed_display (float val, char *buf, size_t len);
void format_timer_display (struct tm *tm, char *buf, size_t len); void format_timer_display (struct tm *tm, char *buf, size_t len);
void lowercase (char *buf, int len); void lowercase (u8 *buf, int len);
void uppercase (char *buf, int len); void uppercase (u8 *buf, int len);
int fgetl (FILE *fp, char *line_buf); int fgetl (FILE *fp, char *line_buf);
int in_superchop (char *buf); int in_superchop (char *buf);
char **scan_directory (const char *path); char **scan_directory (const char *path);
@ -1682,14 +1678,14 @@ int hm_get_device_num (HM_LIB hm_dll_amd, HM_ADAPTER_AMD hm_adapter_index, int *
// void hm_get_opencl_busid_devid (hm_attrs_t *hm_device, uint opencl_num_devices, cl_device_id *devices); // void hm_get_opencl_busid_devid (hm_attrs_t *hm_device, uint opencl_num_devices, cl_device_id *devices);
int hm_get_adapter_index_amd (hm_attrs_t *hm_device, uint32_t *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo); int hm_get_adapter_index_amd (hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
LPAdapterInfo hm_get_adapter_info_amd (HM_LIB hm_dll_amd, int iNumberAdapters); LPAdapterInfo hm_get_adapter_info_amd (HM_LIB hm_dll_amd, int iNumberAdapters);
uint32_t *hm_get_list_valid_adl_adapters (int iNumberAdapters, int *num_adl_adapters, LPAdapterInfo lpAdapterInfo); u32 *hm_get_list_valid_adl_adapters (int iNumberAdapters, int *num_adl_adapters, LPAdapterInfo lpAdapterInfo);
int hm_get_overdrive_version (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, uint32_t *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo); int hm_get_overdrive_version (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
int hm_check_fanspeed_control (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, uint32_t *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo); int hm_check_fanspeed_control (HM_LIB hm_dll_amd, hm_attrs_t *hm_device, u32 *valid_adl_device_list, int num_adl_adapters, LPAdapterInfo lpAdapterInfo);
void hm_close (HM_LIB hm_dll); void hm_close (HM_LIB hm_dll);
@ -1710,181 +1706,175 @@ uint set_kernel_accel (uint hash_mode);
uint set_kernel_loops (uint hash_mode); uint set_kernel_loops (uint hash_mode);
void set_cpu_affinity (char *cpu_affinity); void set_cpu_affinity (char *cpu_affinity);
void eula_print (const char *progname);
void usage_mini_print (const char *progname); void usage_mini_print (const char *progname);
void usage_big_print (const char *progname); void usage_big_print (const char *progname);
void mp_css_to_uniq_tbl (uint css_cnt, cs_t *css, uint uniq_tbls[SP_PW_MAX][CHARSIZ]); void mp_css_to_uniq_tbl (uint css_cnt, cs_t *css, uint uniq_tbls[SP_PW_MAX][CHARSIZ]);
void mp_cut_at (char *mask, uint max); void mp_cut_at (char *mask, uint max);
void mp_exec (uint64_t val, char *buf, cs_t *css, int css_cnt); void mp_exec (u64 val, char *buf, cs_t *css, int css_cnt);
cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, uint *css_cnt); cs_t *mp_gen_css (char *mask_buf, size_t mask_len, cs_t *mp_sys, cs_t *mp_usr, uint *css_cnt);
uint64_t mp_get_sum (uint css_cnt, cs_t *css); u64 mp_get_sum (uint css_cnt, cs_t *css);
void mp_setup_sys (cs_t *mp_sys); void mp_setup_sys (cs_t *mp_sys);
void mp_setup_usr (cs_t *mp_sys, cs_t *mp_usr, char *buf, uint index); void mp_setup_usr (cs_t *mp_sys, cs_t *mp_usr, char *buf, uint index);
void mp_reset_usr (cs_t *mp_usr, uint index); void mp_reset_usr (cs_t *mp_usr, uint index);
char *mp_get_truncated_mask (char *mask_buf, size_t mask_len, uint len); char *mp_get_truncated_mask (char *mask_buf, size_t mask_len, uint len);
uint64_t sp_get_sum (uint start, uint stop, cs_t *root_css_buf); u64 sp_get_sum (uint start, uint stop, cs_t *root_css_buf);
void sp_exec (uint64_t ctx, char *pw_buf, cs_t *root_css_buf, cs_t *markov_css_buf, uint start, uint stop); void sp_exec (u64 ctx, char *pw_buf, cs_t *root_css_buf, cs_t *markov_css_buf, uint start, uint stop);
int sp_comp_val (const void *p1, const void *p2); int sp_comp_val (const void *p1, const void *p2);
void sp_setup_tbl (const char *install_dir, char *hcstat, uint disable, uint classic, hcstat_table_t *root_table_buf, hcstat_table_t *markov_table_buf); void sp_setup_tbl (const char *install_dir, char *hcstat, uint disable, uint classic, hcstat_table_t *root_table_buf, hcstat_table_t *markov_table_buf);
void sp_tbl_to_css (hcstat_table_t *root_table_buf, hcstat_table_t *markov_table_buf, cs_t *root_css_buf, cs_t *markov_css_buf, uint threshold, uint uniq_tbls[SP_PW_MAX][CHARSIZ]); void sp_tbl_to_css (hcstat_table_t *root_table_buf, hcstat_table_t *markov_table_buf, cs_t *root_css_buf, cs_t *markov_css_buf, uint threshold, uint uniq_tbls[SP_PW_MAX][CHARSIZ]);
void sp_stretch_markov (hcstat_table_t *in, hcstat_table_t *out); void sp_stretch_markov (hcstat_table_t *in, hcstat_table_t *out);
void sp_stretch_root (hcstat_table_t *in, hcstat_table_t *out); void sp_stretch_root (hcstat_table_t *in, hcstat_table_t *out);
uint byte_swap_32 (const uint n); int bcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
uint64_t byte_swap_64 (const uint64_t n); int cisco4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int dcc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
char hex_convert (const char c); int dcc2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int descrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int bcrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int episerver_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cisco4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ipb2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int dcc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int joomla_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int dcc2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int postgresql_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int descrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int netscreen_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int episerver_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int keccak_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ipb2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int lm_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int joomla_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int postgresql_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md4s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int netscreen_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int keccak_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int lm_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5half_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md4s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5pix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5asa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5apr1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5half_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mssql2000_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5pix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mssql2005_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5asa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int netntlmv1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5apr1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int netntlmv2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oracleh_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mssql2000_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oracles_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mssql2005_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oraclet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int netntlmv1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int osc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int netntlmv2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int osx1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oracleh_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int osx512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oracles_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int phpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oraclet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osc_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha1linkedin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osx1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha1b64_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int osx512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha1b64s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int phpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha1s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1linkedin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha256s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1b64_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha384_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1b64s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha256s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int smf_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha384_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int vb3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int vb30_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int wpa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int psafe2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int smf_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int psafe3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int vb3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ikepsk_md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int vb30_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ikepsk_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int wpa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int androidpin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int psafe2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ripemd160_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int psafe3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int whirlpool_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ikepsk_md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int truecrypt_parse_hash_1k (char *input_buf, uint input_len, hash_t *hash_buf);
int ikepsk_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int truecrypt_parse_hash_2k (char *input_buf, uint input_len, hash_t *hash_buf);
int androidpin_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int md5aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ripemd160_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha256aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int whirlpool_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int truecrypt_parse_hash_1k (char *input_buf, uint input_len, hash_t *hash_buf); int agilekey_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int truecrypt_parse_hash_2k (char *input_buf, uint input_len, hash_t *hash_buf); int sha1aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int md5aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int lastpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha256aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int gost_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha256crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int agilekey_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mssql2012_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha1aix_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512osx_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int lastpass_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int episerver4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int gost_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512grub_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha256crypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sha512b64s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mssql2012_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int hmacsha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512osx_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int hmacsha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int episerver4_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int hmacsha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512grub_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int hmacmd5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sha512b64s_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int krb5pa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacsha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sapb_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacsha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sapg_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacsha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int drupal7_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmacmd5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sybasease_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int krb5pa_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mysql323_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sapb_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int rakp_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sapg_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int netscaler_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int drupal7_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int chap_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sybasease_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int cloudkey_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mysql323_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int nsec3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int rakp_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int wbb3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int netscaler_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int racf_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int chap_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int lotus5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cloudkey_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int lotus6_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int nsec3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int lotus8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int wbb3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int hmailserver_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int racf_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int phps_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int lotus5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mediawiki_b_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int lotus6_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int peoplesoft_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int lotus8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int skype_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int hmailserver_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int androidfde_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int phps_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int scrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mediawiki_b_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int juniper_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int peoplesoft_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int cisco8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int skype_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int cisco9_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int androidfde_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int office2007_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int scrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int office2010_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int juniper_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int office2013_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cisco8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice01_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cisco9_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice01cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int office2007_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice01cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int office2010_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice34_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int office2013_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice34cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice01_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int oldoffice34cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice01cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int radmin2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice01cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int djangosha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice34_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int djangopbkdf2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice34cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int siphash_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int oldoffice34cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int crammd5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int radmin2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int saph_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int djangosha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int redmine_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int djangopbkdf2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf11_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int siphash_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf11cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int crammd5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf11cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int saph_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf14_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int redmine_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf17l3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf11_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pdf17l8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf11cm1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pbkdf2_sha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf11cm2_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int prestashop_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf14_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int postgresql_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf17l3_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mysql_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pdf17l8_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int bitcoin_wallet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pbkdf2_sha256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int sip_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int prestashop_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int crc32_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int postgresql_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int seven_zip_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mysql_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int gost2012sbog_256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int bitcoin_wallet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int gost2012sbog_512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int sip_auth_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pbkdf2_md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int crc32_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pbkdf2_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int seven_zip_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int pbkdf2_sha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int gost2012sbog_256_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ecryptfs_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int gost2012sbog_512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int bsdicrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pbkdf2_md5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int rar3hp_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pbkdf2_sha1_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int rar5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int pbkdf2_sha512_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int cf10_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ecryptfs_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int mywallet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int bsdicrypt_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int ms_drsr_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int rar3hp_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int rar5_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int cf10_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int mywallet_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int ms_drsr_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
int androidfde_samsung_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf); int androidfde_samsung_parse_hash (char *input_buf, uint input_len, hash_t *hash_buf);
void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const unsigned char **kernel_sources); void load_kernel (const char *kernel_file, int num_devices, size_t *kernel_lengths, const u8 **kernel_sources);
void writeProgramBin (char *dst, unsigned char *binary, size_t binary_size); void writeProgramBin (char *dst, u8 *binary, size_t binary_size);
uint64_t get_lowest_words_done (); u64 get_lowest_words_done ();
restore_data_t *init_restore (int argc, char **argv); restore_data_t *init_restore (int argc, char **argv);
void read_restore (const char *eff_restore_file, restore_data_t *rd); void read_restore (const char *eff_restore_file, restore_data_t *rd);
@ -1906,10 +1896,10 @@ void hc_signal (void c (int));
#endif #endif
bool class_num (char c); bool class_num (u8 c);
bool class_lower (char c); bool class_lower (u8 c);
bool class_upper (char c); bool class_upper (u8 c);
bool class_alpha (char c); bool class_alpha (u8 c);
int mangle_lrest (char arr[BLOCK_SIZE], int arr_len); int mangle_lrest (char arr[BLOCK_SIZE], int arr_len);
int mangle_urest (char arr[BLOCK_SIZE], int arr_len); int mangle_urest (char arr[BLOCK_SIZE], int arr_len);
@ -1936,21 +1926,21 @@ int mangle_dupechar_at (char arr[BLOCK_SIZE], int arr_len, int upos, int
int mangle_dupechar (char arr[BLOCK_SIZE], int arr_len); int mangle_dupechar (char arr[BLOCK_SIZE], int arr_len);
int mangle_switch_at_check (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2); int mangle_switch_at_check (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2); int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
int mangle_chr_shiftl (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_shiftl (char arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_shiftr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_shiftr (char arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_incr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_incr (char arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_decr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_decr (char arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_title (char arr[BLOCK_SIZE], int arr_len); int mangle_title (char arr[BLOCK_SIZE], int arr_len);
int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], uint32_t rp_gen_func_min, uint32_t rp_gen_func_max); int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], u32 rp_gen_func_min, u32 rp_gen_func_max);
int _old_apply_rule (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]); int _old_apply_rule (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]);
int cpu_rule_to_kernel_rule (char rule_buf[BUFSIZ], uint rule_len, kernel_rule_t *rule); int cpu_rule_to_kernel_rule (char rule_buf[BUFSIZ], uint rule_len, kernel_rule_t *rule);
int kernel_rule_to_cpu_rule (char rule_buf[BUFSIZ], kernel_rule_t *rule); int kernel_rule_to_cpu_rule (char rule_buf[BUFSIZ], kernel_rule_t *rule);
void *thread_device_watch (void *p); void *thread_device_watch (void *p);
void *thread_keypress (void *p); void *thread_keypress (void *p);
void *thread_runtime (void *p); void *thread_runtime (void *p);
/** /**
* checksum for use on cpu * checksum for use on cpu

View File

@ -161,7 +161,7 @@ typedef struct
typedef struct typedef struct
{ {
uint8_t cipher[1040]; u8 cipher[1040];
} agilekey_t; } agilekey_t;
@ -260,10 +260,10 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t l_alt_result[8]; u64 l_alt_result[8];
uint64_t l_p_bytes[2]; u64 l_p_bytes[2];
uint64_t l_s_bytes[2]; u64 l_s_bytes[2];
} sha512crypt_tmp_t; } sha512crypt_tmp_t;
@ -288,7 +288,7 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t dgst[8]; u64 dgst[8];
} bitcoin_wallet_tmp_t; } bitcoin_wallet_tmp_t;
@ -362,11 +362,11 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t ipad[8]; u64 ipad[8];
uint64_t opad[8]; u64 opad[8];
uint64_t dgst[32]; u64 dgst[32];
uint64_t out[32]; u64 out[32];
} tc64_tmp_t; } tc64_tmp_t;
@ -415,11 +415,11 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t ipad[8]; u64 ipad[8];
uint64_t opad[8]; u64 opad[8];
uint64_t dgst[8]; u64 dgst[8];
uint64_t out[8]; u64 out[8];
} sha512aix_tmp_t; } sha512aix_tmp_t;
@ -435,7 +435,7 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t digest_buf[8]; u64 digest_buf[8];
} drupal7_tmp_t; } drupal7_tmp_t;
@ -463,7 +463,7 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t out[8]; u64 out[8];
} office2013_tmp_t; } office2013_tmp_t;
@ -475,57 +475,57 @@ typedef struct
typedef struct typedef struct
{ {
uint32_t ipad[4]; u32 ipad[4];
uint32_t opad[4]; u32 opad[4];
uint32_t dgst[32]; u32 dgst[32];
uint32_t out[32]; u32 out[32];
} pbkdf2_md5_tmp_t; } pbkdf2_md5_tmp_t;
typedef struct typedef struct
{ {
uint32_t ipad[5]; u32 ipad[5];
uint32_t opad[5]; u32 opad[5];
uint32_t dgst[32]; u32 dgst[32];
uint32_t out[32]; u32 out[32];
} pbkdf2_sha1_tmp_t; } pbkdf2_sha1_tmp_t;
typedef struct typedef struct
{ {
uint32_t ipad[8]; u32 ipad[8];
uint32_t opad[8]; u32 opad[8];
uint32_t dgst[32]; u32 dgst[32];
uint32_t out[32]; u32 out[32];
} pbkdf2_sha256_tmp_t; } pbkdf2_sha256_tmp_t;
typedef struct typedef struct
{ {
uint64_t ipad[8]; u64 ipad[8];
uint64_t opad[8]; u64 opad[8];
uint64_t dgst[16]; u64 dgst[16];
uint64_t out[16]; u64 out[16];
} pbkdf2_sha512_tmp_t; } pbkdf2_sha512_tmp_t;
typedef struct typedef struct
{ {
uint64_t out[8]; u64 out[8];
} ecryptfs_tmp_t; } ecryptfs_tmp_t;
typedef struct typedef struct
{ {
uint64_t ipad[8]; u64 ipad[8];
uint64_t opad[8]; u64 opad[8];
uint64_t dgst[16]; u64 dgst[16];
uint64_t out[16]; u64 out[16];
} oraclet_tmp_t; } oraclet_tmp_t;
@ -605,7 +605,7 @@ typedef struct
typedef struct typedef struct
{ {
uint key; uint key;
uint64_t val; u64 val;
} hcstat_table_t; } hcstat_table_t;
@ -636,9 +636,9 @@ typedef struct
typedef struct typedef struct
{ {
char signature[4]; char signature[4];
uint32_t salt_buf[8]; u32 salt_buf[8];
uint32_t iterations; u32 iterations;
uint32_t hash_buf[8]; u32 hash_buf[8];
} psafe3_t; } psafe3_t;
@ -653,7 +653,7 @@ typedef struct
typedef struct typedef struct
{ {
uint64_t cnt; u64 cnt;
#ifdef _POSIX #ifdef _POSIX
struct stat stat; struct stat stat;
@ -683,17 +683,17 @@ typedef struct
{ {
union union
{ {
uint8_t hc4[4][ 64]; u8 hc4[4][ 64];
uint32_t hi4[4][ 16]; u32 hi4[4][ 16];
uint64_t hl4[4][ 8]; u64 hl4[4][ 8];
uint8_t hc2[2][128]; u8 hc2[2][128];
uint32_t hi2[2][ 32]; u32 hi2[2][ 32];
uint64_t hl2[2][ 16]; u64 hl2[2][ 16];
uint8_t hc1[1][256]; u8 hc1[1][256];
uint32_t hi1[1][ 64]; u32 hi1[1][ 64];
uint64_t hl1[1][ 32]; u64 hl1[1][ 32];
}; };
uint pw_len; uint pw_len;
@ -733,16 +733,16 @@ typedef struct
typedef struct typedef struct
{ {
uint32_t version_bin; u32 version_bin;
char cwd[256]; char cwd[256];
uint32_t pid; u32 pid;
uint32_t dictpos; u32 dictpos;
uint32_t maskpos; u32 maskpos;
uint64_t words_cur; u64 words_cur;
uint32_t argc; u32 argc;
char **argv; char **argv;
} restore_data_t; } restore_data_t;
@ -758,10 +758,10 @@ typedef struct
typedef struct typedef struct
{ {
char *buf; char *buf;
uint32_t incr; u32 incr;
uint32_t avail; u32 avail;
uint32_t cnt; u32 cnt;
uint32_t pos; u32 pos;
} wl_data_t; } wl_data_t;
@ -826,7 +826,7 @@ struct __hc_device_param
uint device_processors; uint device_processors;
uint device_processor_cores; uint device_processor_cores;
uint64_t device_maxmem_alloc; u64 device_maxmem_alloc;
uint kernel_threads; uint kernel_threads;
uint kernel_accel; uint kernel_accel;
@ -846,7 +846,7 @@ struct __hc_device_param
uint size_results; uint size_results;
uint size_plains; uint size_plains;
uint (*pw_add) (struct __hc_device_param *, const uint8_t *, const uint); uint (*pw_add) (struct __hc_device_param *, const u8 *, const uint);
void (*pw_transpose) (const pw_t *, pw_t *); void (*pw_transpose) (const pw_t *, pw_t *);
@ -859,10 +859,10 @@ struct __hc_device_param
pw_t *pws_buf; pw_t *pws_buf;
uint pws_cnt; uint pws_cnt;
uint64_t pw_cnt; u64 pw_cnt;
uint64_t words_off; u64 words_off;
uint64_t words_done; u64 words_done;
uint *result; uint *result;
@ -873,7 +873,7 @@ struct __hc_device_param
uint innerloop_left; uint innerloop_left;
uint speed_pos; uint speed_pos;
uint64_t speed_cnt[SPEED_CACHE]; u64 speed_cnt[SPEED_CACHE];
float speed_ms[SPEED_CACHE]; float speed_ms[SPEED_CACHE];
hc_timer_t speed_rec[SPEED_CACHE]; hc_timer_t speed_rec[SPEED_CACHE];
@ -955,18 +955,18 @@ struct __hc_device_param
void *kernel_params_tb[PARAMCNT]; void *kernel_params_tb[PARAMCNT];
void *kernel_params_tm[PARAMCNT]; void *kernel_params_tm[PARAMCNT];
uint32_t kernel_params_buf32[PARAMCNT]; u32 kernel_params_buf32[PARAMCNT];
uint32_t kernel_params_mp_buf32[PARAMCNT]; u32 kernel_params_mp_buf32[PARAMCNT];
uint64_t kernel_params_mp_buf64[PARAMCNT]; u64 kernel_params_mp_buf64[PARAMCNT];
uint32_t kernel_params_mp_r_buf32[PARAMCNT]; u32 kernel_params_mp_r_buf32[PARAMCNT];
uint64_t kernel_params_mp_r_buf64[PARAMCNT]; u64 kernel_params_mp_r_buf64[PARAMCNT];
uint32_t kernel_params_mp_l_buf32[PARAMCNT]; u32 kernel_params_mp_l_buf32[PARAMCNT];
uint64_t kernel_params_mp_l_buf64[PARAMCNT]; u64 kernel_params_mp_l_buf64[PARAMCNT];
uint32_t kernel_params_amp_buf32[PARAMCNT]; u32 kernel_params_amp_buf32[PARAMCNT];
}; };
typedef struct __hc_device_param hc_device_param_t; typedef struct __hc_device_param hc_device_param_t;
@ -1076,7 +1076,7 @@ typedef struct
cpt_t cpt_buf[CPT_BUF]; cpt_t cpt_buf[CPT_BUF];
int cpt_pos; int cpt_pos;
time_t cpt_start; time_t cpt_start;
uint64_t cpt_total; u64 cpt_total;
/** /**
* user * user
@ -1161,12 +1161,12 @@ typedef struct
* used for restore * used for restore
*/ */
uint64_t skip; u64 skip;
uint64_t limit; u64 limit;
restore_data_t *rd; restore_data_t *rd;
uint64_t checkpoint_cur_words; // used for the "stop at next checkpoint" feature u64 checkpoint_cur_words; // used for the "stop at next checkpoint" feature
/** /**
* status, timer * status, timer
@ -1178,13 +1178,13 @@ typedef struct
time_t proc_start; time_t proc_start;
time_t proc_stop; time_t proc_stop;
uint64_t words_cnt; u64 words_cnt;
uint64_t words_cur; u64 words_cur;
uint64_t words_base; u64 words_base;
uint64_t *words_progress_done; // progress number of words done per salt u64 *words_progress_done; // progress number of words done per salt
uint64_t *words_progress_rejected; // progress number of words rejected per salt u64 *words_progress_rejected; // progress number of words rejected per salt
uint64_t *words_progress_restored; // progress number of words restored per salt u64 *words_progress_restored; // progress number of words restored per salt
hc_timer_t timer_running; // timer on current dict hc_timer_t timer_running; // timer on current dict
hc_timer_t timer_paused; // timer on current dict hc_timer_t timer_paused; // timer on current dict

View File

@ -51,7 +51,7 @@ CP := cp
RM := rm RM := rm
INSTALL := install INSTALL := install
CC_NATIVE := gcc CC_NATIVE := clang
## ##
## Cross compiler paths ## Cross compiler paths
@ -76,8 +76,8 @@ NOW := $(shell date +%s)
## Compiler flags ## Compiler flags
## ##
CFLAGS := -O2 -s -pipe -W -Wall -std=c99 -Iinclude/ #CFLAGS := -O2 -s -pipe -W -Wall -std=c99 -Iinclude/
#CFLAGS := -g -ggdb -pipe -W -Wall -std=c99 -Iinclude/ -fsanitize=address CFLAGS := -g -ggdb -pipe -W -Wall -std=c99 -Iinclude/ -fsanitize=undefined -fno-omit-frame-pointer
## ##
## Native compilation target ## Native compilation target

View File

@ -282,7 +282,7 @@ static uint default_benchmark_algorithms[NUM_DEFAULT_BENCHMARK_ALGORITHMS] =
* types * types
*/ */
static void (*get_next_word_func) (char *, uint32_t, uint32_t *, uint32_t *); static void (*get_next_word_func) (char *, u32, u32 *, u32 *);
/** /**
* globals * globals
@ -743,8 +743,8 @@ void status_display_automat ()
{ {
hc_device_param_t *device_param = &data.devices_param[device_id]; hc_device_param_t *device_param = &data.devices_param[device_id];
uint64_t speed_cnt = 0; u64 speed_cnt = 0;
float speed_ms = 0; float speed_ms = 0;
for (int i = 0; i < SPEED_CACHE; i++) for (int i = 0; i < SPEED_CACHE; i++)
{ {
@ -768,7 +768,7 @@ void status_display_automat ()
* words_cur * words_cur
*/ */
uint64_t words_cur = get_lowest_words_done (); u64 words_cur = get_lowest_words_done ();
fprintf (out, "CURKU\t%llu\t", (unsigned long long int) words_cur); fprintf (out, "CURKU\t%llu\t", (unsigned long long int) words_cur);
@ -780,11 +780,11 @@ void status_display_automat ()
if (salts_left == 0) salts_left = 1; if (salts_left == 0) salts_left = 1;
uint64_t progress_total = data.words_cnt * salts_left; u64 progress_total = data.words_cnt * salts_left;
uint64_t all_done = 0; u64 all_done = 0;
uint64_t all_rejected = 0; u64 all_rejected = 0;
uint64_t all_restored = 0; u64 all_restored = 0;
for (uint salt_pos = 0; salt_pos < data.salts_cnt; salt_pos++) for (uint salt_pos = 0; salt_pos < data.salts_cnt; salt_pos++)
{ {
@ -800,10 +800,10 @@ void status_display_automat ()
all_restored += data.words_progress_restored[salt_pos]; all_restored += data.words_progress_restored[salt_pos];
} }
uint64_t progress_cur = all_restored + all_done + all_rejected; u64 progress_cur = all_restored + all_done + all_rejected;
uint64_t progress_end = progress_total; u64 progress_end = progress_total;
uint64_t progress_skip = 0; u64 progress_skip = 0;
if (data.skip) if (data.skip)
{ {
@ -823,8 +823,8 @@ void status_display_automat ()
else if (data.attack_kern == ATTACK_KERN_BF) progress_end *= data.bfs_cnt; else if (data.attack_kern == ATTACK_KERN_BF) progress_end *= data.bfs_cnt;
} }
uint64_t progress_cur_relative_skip = progress_cur - progress_skip; u64 progress_cur_relative_skip = progress_cur - progress_skip;
uint64_t progress_end_relative_skip = progress_end - progress_skip; u64 progress_end_relative_skip = progress_end - progress_skip;
fprintf (out, "PROGRESS\t%llu\t%llu\t", (unsigned long long int) progress_cur_relative_skip, (unsigned long long int) progress_end_relative_skip); fprintf (out, "PROGRESS\t%llu\t%llu\t", (unsigned long long int) progress_cur_relative_skip, (unsigned long long int) progress_end_relative_skip);
@ -1082,8 +1082,8 @@ void status_display ()
* speed new * speed new
*/ */
uint64_t speed_cnt[DEVICES_MAX]; u64 speed_cnt[DEVICES_MAX];
float speed_ms[DEVICES_MAX]; float speed_ms[DEVICES_MAX];
for (uint device_id = 0; device_id < data.devices_cnt; device_id++) for (uint device_id = 0; device_id < data.devices_cnt; device_id++)
{ {
@ -1208,11 +1208,11 @@ void status_display ()
if (salts_left == 0) salts_left = 1; if (salts_left == 0) salts_left = 1;
uint64_t progress_total = data.words_cnt * salts_left; u64 progress_total = data.words_cnt * salts_left;
uint64_t all_done = 0; u64 all_done = 0;
uint64_t all_rejected = 0; u64 all_rejected = 0;
uint64_t all_restored = 0; u64 all_restored = 0;
for (uint salt_pos = 0; salt_pos < data.salts_cnt; salt_pos++) for (uint salt_pos = 0; salt_pos < data.salts_cnt; salt_pos++)
{ {
@ -1228,10 +1228,10 @@ void status_display ()
all_restored += data.words_progress_restored[salt_pos]; all_restored += data.words_progress_restored[salt_pos];
} }
uint64_t progress_cur = all_restored + all_done + all_rejected; u64 progress_cur = all_restored + all_done + all_rejected;
uint64_t progress_end = progress_total; u64 progress_end = progress_total;
uint64_t progress_skip = 0; u64 progress_skip = 0;
if (data.skip) if (data.skip)
{ {
@ -1251,17 +1251,17 @@ void status_display ()
else if (data.attack_kern == ATTACK_KERN_BF) progress_end *= data.bfs_cnt; else if (data.attack_kern == ATTACK_KERN_BF) progress_end *= data.bfs_cnt;
} }
uint64_t progress_cur_relative_skip = progress_cur - progress_skip; u64 progress_cur_relative_skip = progress_cur - progress_skip;
uint64_t progress_end_relative_skip = progress_end - progress_skip; u64 progress_end_relative_skip = progress_end - progress_skip;
float speed_ms_real = ms_running - ms_paused; float speed_ms_real = ms_running - ms_paused;
uint64_t speed_plains_real = all_done; u64 speed_plains_real = all_done;
if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK)) if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK))
{ {
if (data.devices_status != STATUS_CRACKED) if (data.devices_status != STATUS_CRACKED)
{ {
uint64_t words_per_ms = 0; u64 words_per_ms = 0;
if (speed_plains_real && speed_ms_real) if (speed_plains_real && speed_ms_real)
{ {
@ -1276,9 +1276,9 @@ void status_display ()
if (words_per_ms) if (words_per_ms)
{ {
uint64_t progress_left_relative_skip = progress_end_relative_skip - progress_cur_relative_skip; u64 progress_left_relative_skip = progress_end_relative_skip - progress_cur_relative_skip;
uint64_t ms_left = progress_left_relative_skip / words_per_ms; u64 ms_left = progress_left_relative_skip / words_per_ms;
sec_etc = ms_left / 1000; sec_etc = ms_left / 1000;
} }
@ -1287,7 +1287,7 @@ void status_display ()
{ {
log_info ("Time.Estimated.: 0 secs"); log_info ("Time.Estimated.: 0 secs");
} }
else if ((uint64_t) sec_etc > ETC_MAX) else if ((u64) sec_etc > ETC_MAX)
{ {
log_info ("Time.Estimated.: > 10 Years"); log_info ("Time.Estimated.: > 10 Years");
} }
@ -1435,9 +1435,9 @@ void status_display ()
// Restore point // Restore point
uint64_t restore_point = get_lowest_words_done (); u64 restore_point = get_lowest_words_done ();
uint64_t restore_total = data.words_base; u64 restore_total = data.words_base;
float percent_restore = 0; float percent_restore = 0;
@ -1471,12 +1471,12 @@ void status_display ()
{ {
if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK)) if ((data.wordlist_mode == WL_MODE_FILE) || (data.wordlist_mode == WL_MODE_MASK))
{ {
log_info ("Progress.......: %llu/%llu (%.02f%%)", (uint64_t) 0, (uint64_t) 0, (float) 100); log_info ("Progress.......: %llu/%llu (%.02f%%)", (u64) 0, (u64) 0, (float) 100);
log_info ("Rejected.......: %llu/%llu (%.02f%%)", (uint64_t) 0, (uint64_t) 0, (float) 100); log_info ("Rejected.......: %llu/%llu (%.02f%%)", (u64) 0, (u64) 0, (float) 100);
if (data.restore_disable == 0) if (data.restore_disable == 0)
{ {
log_info ("Restore.Point..: %llu/%llu (%.02f%%)", (uint64_t) 0, (uint64_t) 0, (float) 100); log_info ("Restore.Point..: %llu/%llu (%.02f%%)", (u64) 0, (u64) 0, (float) 100);
} }
} }
else else
@ -1550,8 +1550,8 @@ static void status_benchmark ()
if (data.words_cnt == 0) return; if (data.words_cnt == 0) return;
uint64_t speed_cnt[DEVICES_MAX]; u64 speed_cnt[DEVICES_MAX];
float speed_ms[DEVICES_MAX]; float speed_ms[DEVICES_MAX];
uint device_id; uint device_id;
@ -1693,7 +1693,7 @@ static uint convert_from_hex (char *line_buf, const uint line_len)
for (i = 0, j = 0; j < line_len; i += 1, j += 2) for (i = 0, j = 0; j < line_len; i += 1, j += 2)
{ {
line_buf[i] = hex_to_char (&line_buf[j]); line_buf[i] = hex_to_u8 ((const u8 *) &line_buf[j]);
} }
memset (line_buf + i, 0, line_len - i); memset (line_buf + i, 0, line_len - i);
@ -1714,7 +1714,7 @@ static uint convert_from_hex (char *line_buf, const uint line_len)
for (i = 0, j = 5; j < line_len - 1; i += 1, j += 2) for (i = 0, j = 5; j < line_len - 1; i += 1, j += 2)
{ {
line_buf[i] = hex_to_char (&line_buf[j]); line_buf[i] = hex_to_u8 ((const u8 *) &line_buf[j]);
} }
memset (line_buf + i, 0, line_len - i); memset (line_buf + i, 0, line_len - i);
@ -1787,7 +1787,7 @@ static void clear_prompt ()
fflush (stdout); fflush (stdout);
} }
static void gidd_to_pw_t (hc_device_param_t *device_param, const uint64_t gidd, pw_t *pw) static void gidd_to_pw_t (hc_device_param_t *device_param, const u64 gidd, pw_t *pw)
{ {
hc_clEnqueueReadBuffer (device_param->command_queue, device_param->d_pws_buf, CL_TRUE, gidd * sizeof (pw_t), sizeof (pw_t), pw, 0, NULL, NULL); hc_clEnqueueReadBuffer (device_param->command_queue, device_param->d_pws_buf, CL_TRUE, gidd * sizeof (pw_t), sizeof (pw_t), pw, 0, NULL, NULL);
} }
@ -1824,7 +1824,7 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
uint gidvid = plain.gidvid; uint gidvid = plain.gidvid;
uint il_pos = plain.il_pos; uint il_pos = plain.il_pos;
uint64_t crackpos = device_param->words_off; u64 crackpos = device_param->words_off;
uint plain_buf[16]; uint plain_buf[16];
@ -1833,8 +1833,8 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
if (data.attack_mode == ATTACK_MODE_STRAIGHT) if (data.attack_mode == ATTACK_MODE_STRAIGHT)
{ {
uint64_t gidd = gidvid; u64 gidd = gidvid;
uint64_t gidm = 0; u64 gidm = 0;
pw_t pw; pw_t pw;
@ -1882,8 +1882,8 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
} }
else if (data.attack_mode == ATTACK_MODE_COMBI) else if (data.attack_mode == ATTACK_MODE_COMBI)
{ {
uint64_t gidd = gidvid; u64 gidd = gidvid;
uint64_t gidm = 0; u64 gidm = 0;
pw_t pw; pw_t pw;
@ -1923,8 +1923,8 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
} }
else if (data.attack_mode == ATTACK_MODE_BF) else if (data.attack_mode == ATTACK_MODE_BF)
{ {
uint64_t l_off = device_param->kernel_params_mp_l_buf64[3] + gidvid; u64 l_off = device_param->kernel_params_mp_l_buf64[3] + gidvid;
uint64_t r_off = device_param->kernel_params_mp_r_buf64[3] + il_pos; u64 r_off = device_param->kernel_params_mp_r_buf64[3] + il_pos;
uint l_start = device_param->kernel_params_mp_l_buf32[5]; uint l_start = device_param->kernel_params_mp_l_buf32[5];
uint r_start = device_param->kernel_params_mp_r_buf32[5]; uint r_start = device_param->kernel_params_mp_r_buf32[5];
@ -1943,8 +1943,8 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
} }
else if (data.attack_mode == ATTACK_MODE_HYBRID1) else if (data.attack_mode == ATTACK_MODE_HYBRID1)
{ {
uint64_t gidd = gidvid; u64 gidd = gidvid;
uint64_t gidm = 0; u64 gidm = 0;
pw_t pw; pw_t pw;
@ -1957,7 +1957,7 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
plain_len = pw.pw_len; plain_len = pw.pw_len;
uint64_t off = device_param->kernel_params_mp_buf64[3] + il_pos; u64 off = device_param->kernel_params_mp_buf64[3] + il_pos;
uint start = 0; uint start = 0;
uint stop = device_param->kernel_params_mp_buf32[4]; uint stop = device_param->kernel_params_mp_buf32[4];
@ -1977,8 +1977,8 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
} }
else if (data.attack_mode == ATTACK_MODE_HYBRID2) else if (data.attack_mode == ATTACK_MODE_HYBRID2)
{ {
uint64_t gidd = gidvid; u64 gidd = gidvid;
uint64_t gidm = 0; u64 gidm = 0;
pw_t pw; pw_t pw;
@ -1991,7 +1991,7 @@ static void check_hash (hc_device_param_t *device_param, const uint salt_pos, co
plain_len = pw.pw_len; plain_len = pw.pw_len;
uint64_t off = device_param->kernel_params_mp_buf64[3] + il_pos; u64 off = device_param->kernel_params_mp_buf64[3] + il_pos;
uint start = 0; uint start = 0;
uint stop = device_param->kernel_params_mp_buf32[4]; uint stop = device_param->kernel_params_mp_buf32[4];
@ -2307,7 +2307,7 @@ static void save_hash ()
unlink (old_hashfile); unlink (old_hashfile);
} }
static float find_kernel_blocks_div (const uint64_t total_left, const uint kernel_blocks_all) static float find_kernel_blocks_div (const u64 total_left, const uint kernel_blocks_all)
{ {
// function called only in case kernel_blocks_all > words_left) // function called only in case kernel_blocks_all > words_left)
@ -2315,13 +2315,13 @@ static float find_kernel_blocks_div (const uint64_t total_left, const uint kerne
kernel_blocks_div += kernel_blocks_div / 100; kernel_blocks_div += kernel_blocks_div / 100;
uint32_t kernel_blocks_new = (uint32_t) (kernel_blocks_all * kernel_blocks_div); u32 kernel_blocks_new = (u32) (kernel_blocks_all * kernel_blocks_div);
while (kernel_blocks_new < total_left) while (kernel_blocks_new < total_left)
{ {
kernel_blocks_div += kernel_blocks_div / 100; kernel_blocks_div += kernel_blocks_div / 100;
kernel_blocks_new = (uint32_t) (kernel_blocks_all * kernel_blocks_div); kernel_blocks_new = (u32) (kernel_blocks_all * kernel_blocks_div);
} }
if (data.quiet == 0) if (data.quiet == 0)
@ -2590,7 +2590,7 @@ static void run_copy (hc_device_param_t *device_param, const uint pws_cnt)
} }
else if (data.attack_kern == ATTACK_KERN_BF) else if (data.attack_kern == ATTACK_KERN_BF)
{ {
const uint64_t off = device_param->words_off; const u64 off = device_param->words_off;
device_param->kernel_params_mp_l_buf64[3] = off; device_param->kernel_params_mp_l_buf64[3] = off;
@ -2752,7 +2752,7 @@ static void run_cracker (hc_device_param_t *device_param, const uint pw_cnt, con
line_len = MIN (line_len, PW_DICTMAX); line_len = MIN (line_len, PW_DICTMAX);
char *ptr = (char *) device_param->combs_buf[i].i; u8 *ptr = (u8 *) device_param->combs_buf[i].i;
memcpy (ptr, line_buf_new, line_len); memcpy (ptr, line_buf_new, line_len);
@ -2799,7 +2799,7 @@ static void run_cracker (hc_device_param_t *device_param, const uint pw_cnt, con
} }
else if (data.attack_mode == ATTACK_MODE_BF) else if (data.attack_mode == ATTACK_MODE_BF)
{ {
uint64_t off = innerloop_pos; u64 off = innerloop_pos;
device_param->kernel_params_mp_r_buf64[3] = off; device_param->kernel_params_mp_r_buf64[3] = off;
@ -2807,7 +2807,7 @@ static void run_cracker (hc_device_param_t *device_param, const uint pw_cnt, con
} }
else if (data.attack_mode == ATTACK_MODE_HYBRID1) else if (data.attack_mode == ATTACK_MODE_HYBRID1)
{ {
uint64_t off = innerloop_pos; u64 off = innerloop_pos;
device_param->kernel_params_mp_buf64[3] = off; device_param->kernel_params_mp_buf64[3] = off;
@ -2815,7 +2815,7 @@ static void run_cracker (hc_device_param_t *device_param, const uint pw_cnt, con
} }
else if (data.attack_mode == ATTACK_MODE_HYBRID2) else if (data.attack_mode == ATTACK_MODE_HYBRID2)
{ {
uint64_t off = innerloop_pos; u64 off = innerloop_pos;
device_param->kernel_params_mp_buf64[3] = off; device_param->kernel_params_mp_buf64[3] = off;
@ -2939,7 +2939,7 @@ static void run_cracker (hc_device_param_t *device_param, const uint pw_cnt, con
* progress * progress
*/ */
uint64_t perf_sum_all = (uint64_t) pw_cnt * (uint64_t) innerloop_left; u64 perf_sum_all = (u64) pw_cnt * (u64) innerloop_left;
hc_thread_mutex_lock (mux_counter); hc_thread_mutex_lock (mux_counter);
@ -3025,11 +3025,11 @@ static void load_segment (wl_data_t *wl_data, FILE *fd)
return; return;
} }
static void get_next_word_lm (char *buf, uint32_t sz, uint32_t *len, uint32_t *off) static void get_next_word_lm (char *buf, u32 sz, u32 *len, u32 *off)
{ {
char *ptr = buf; char *ptr = buf;
for (uint32_t i = 0; i < sz; i++, ptr++) for (u32 i = 0; i < sz; i++, ptr++)
{ {
if (*ptr >= 'a' && *ptr <= 'z') *ptr -= 0x20; if (*ptr >= 'a' && *ptr <= 'z') *ptr -= 0x20;
@ -3056,11 +3056,11 @@ static void get_next_word_lm (char *buf, uint32_t sz, uint32_t *len, uint32_t *o
*len = sz; *len = sz;
} }
static void get_next_word_uc (char *buf, uint32_t sz, uint32_t *len, uint32_t *off) static void get_next_word_uc (char *buf, u32 sz, u32 *len, u32 *off)
{ {
char *ptr = buf; char *ptr = buf;
for (uint32_t i = 0; i < sz; i++, ptr++) for (u32 i = 0; i < sz; i++, ptr++)
{ {
if (*ptr >= 'a' && *ptr <= 'z') *ptr -= 0x20; if (*ptr >= 'a' && *ptr <= 'z') *ptr -= 0x20;
@ -3079,11 +3079,11 @@ static void get_next_word_uc (char *buf, uint32_t sz, uint32_t *len, uint32_t *o
*len = sz; *len = sz;
} }
static void get_next_word_std (char *buf, uint32_t sz, uint32_t *len, uint32_t *off) static void get_next_word_std (char *buf, u32 sz, u32 *len, u32 *off)
{ {
char *ptr = buf; char *ptr = buf;
for (uint32_t i = 0; i < sz; i++, ptr++) for (u32 i = 0; i < sz; i++, ptr++)
{ {
if (*ptr != '\n') continue; if (*ptr != '\n') continue;
@ -3163,11 +3163,11 @@ static void get_next_word (wl_data_t *wl_data, FILE *fd, char **out_buf, uint *o
} }
#ifdef _POSIX #ifdef _POSIX
static uint64_t count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dictstat_t *dictstat_base, size_t *dictstat_nmemb) static u64 count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dictstat_t *dictstat_base, size_t *dictstat_nmemb)
#endif #endif
#ifdef _WIN #ifdef _WIN
static uint64_t count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dictstat_t *dictstat_base, uint *dictstat_nmemb) static u64 count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dictstat_t *dictstat_base, uint *dictstat_nmemb)
#endif #endif
{ {
hc_signal (NULL); hc_signal (NULL);
@ -3204,9 +3204,9 @@ static uint64_t count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dicts
{ {
if (d_cache) if (d_cache)
{ {
uint64_t cnt = d_cache->cnt; u64 cnt = d_cache->cnt;
uint64_t keyspace = cnt; u64 keyspace = cnt;
if (data.attack_kern == ATTACK_KERN_STRAIGHT) if (data.attack_kern == ATTACK_KERN_STRAIGHT)
{ {
@ -3229,9 +3229,9 @@ static uint64_t count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dicts
time_t now = 0; time_t now = 0;
time_t prev = 0; time_t prev = 0;
uint64_t comp = 0; u64 comp = 0;
uint64_t cnt = 0; u64 cnt = 0;
uint64_t cnt2 = 0; u64 cnt2 = 0;
while (!feof (fd)) while (!feof (fd))
{ {
@ -3239,12 +3239,12 @@ static uint64_t count_words (wl_data_t *wl_data, FILE *fd, char *dictfile, dicts
comp += wl_data->cnt; comp += wl_data->cnt;
uint32_t i = 0; u32 i = 0;
while (i < wl_data->cnt) while (i < wl_data->cnt)
{ {
uint32_t len; u32 len;
uint32_t off; u32 off;
get_next_word_func (wl_data->buf + i, wl_data->cnt - i, &len, &off); get_next_word_func (wl_data->buf + i, wl_data->cnt - i, &len, &off);
@ -3316,7 +3316,7 @@ static void pw_transpose_to_hi1 (const pw_t *p1, pw_t *p2)
memcpy (p2->hi1, p1->hi1, 64 * sizeof (uint)); memcpy (p2->hi1, p1->hi1, 64 * sizeof (uint));
} }
static uint pw_add_to_hc1 (hc_device_param_t *device_param, const uint8_t *pw_buf, const uint pw_len) static uint pw_add_to_hc1 (hc_device_param_t *device_param, const u8 *pw_buf, const uint pw_len)
{ {
if (data.devices_status == STATUS_BYPASS) return 0; if (data.devices_status == STATUS_BYPASS) return 0;
@ -3324,7 +3324,7 @@ static uint pw_add_to_hc1 (hc_device_param_t *device_param, const uint8_t *pw_bu
uint cache_cnt = pw_cache->cnt; uint cache_cnt = pw_cache->cnt;
uint8_t *pw_hc1 = pw_cache->pw_buf.hc1[cache_cnt]; u8 *pw_hc1 = pw_cache->pw_buf.hc1[cache_cnt];
memcpy (pw_hc1, pw_buf, pw_len); memcpy (pw_hc1, pw_buf, pw_len);
@ -3807,7 +3807,7 @@ static void *thread_outfile_remove (void *p)
for (uint i = 0, j = 0; i < 6; i++, j += 2) for (uint i = 0, j = 0; i < 6; i++, j += 2)
{ {
if (mac1[i] != (unsigned char) hex_to_char (&mac1_pos[j])) if (mac1[i] != hex_to_u8 ((const u8 *) &mac1_pos[j]))
{ {
cracked = 0; cracked = 0;
break; break;
@ -3819,7 +3819,7 @@ static void *thread_outfile_remove (void *p)
for (uint i = 0, j = 0; i < 6; i++, j += 2) for (uint i = 0, j = 0; i < 6; i++, j += 2)
{ {
if (mac2[i] != (unsigned char) hex_to_char (&mac2_pos[j])) if (mac2[i] != hex_to_u8 ((const u8 *) &mac2_pos[j]))
{ {
cracked = 0; cracked = 0;
break; break;
@ -3900,16 +3900,16 @@ static void *thread_outfile_remove (void *p)
return (p); return (p);
} }
static uint get_work (hc_device_param_t *device_param, const uint64_t max) static uint get_work (hc_device_param_t *device_param, const u64 max)
{ {
hc_thread_mutex_lock (mux_dispatcher); hc_thread_mutex_lock (mux_dispatcher);
const uint64_t words_cur = data.words_cur; const u64 words_cur = data.words_cur;
const uint64_t words_base = (data.limit == 0) ? data.words_base : data.limit; const u64 words_base = (data.limit == 0) ? data.words_base : data.limit;
device_param->words_off = words_cur; device_param->words_off = words_cur;
const uint64_t words_left = words_base - words_cur; const u64 words_left = words_base - words_cur;
if (data.kernel_blocks_all > words_left) if (data.kernel_blocks_all > words_left)
{ {
@ -3923,8 +3923,8 @@ static uint get_work (hc_device_param_t *device_param, const uint64_t max)
{ {
if (device_param->kernel_blocks == device_param->kernel_blocks_user) if (device_param->kernel_blocks == device_param->kernel_blocks_user)
{ {
const uint32_t kernel_blocks_new = (float) device_param->kernel_blocks * data.kernel_blocks_div; const u32 kernel_blocks_new = (float) device_param->kernel_blocks * data.kernel_blocks_div;
const uint32_t kernel_power_new = kernel_blocks_new; const u32 kernel_power_new = kernel_blocks_new;
if (kernel_blocks_new < device_param->kernel_blocks) if (kernel_blocks_new < device_param->kernel_blocks)
{ {
@ -4042,7 +4042,7 @@ static void *thread_calc_stdin (void *p)
} }
} }
device_param->pw_add (device_param, (uint8_t *) line_buf, line_len); device_param->pw_add (device_param, (u8 *) line_buf, line_len);
words_cur++; words_cur++;
@ -4176,8 +4176,8 @@ static void *thread_calc (void *p)
if (work == 0) break; if (work == 0) break;
const uint64_t words_off = device_param->words_off; const u64 words_off = device_param->words_off;
const uint64_t words_fin = words_off + work; const u64 words_fin = words_off + work;
const uint pw_cnt = work; const uint pw_cnt = work;
const uint pws_cnt = work; const uint pws_cnt = work;
@ -4276,14 +4276,14 @@ static void *thread_calc (void *p)
wl_data->cnt = 0; wl_data->cnt = 0;
wl_data->pos = 0; wl_data->pos = 0;
uint64_t words_cur = 0; u64 words_cur = 0;
while ((data.devices_status != STATUS_EXHAUSTED) && (data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT)) while ((data.devices_status != STATUS_EXHAUSTED) && (data.devices_status != STATUS_CRACKED) && (data.devices_status != STATUS_ABORTED) && (data.devices_status != STATUS_QUIT))
{ {
uint64_t words_off = 0; u64 words_off = 0;
uint64_t words_fin = 0; u64 words_fin = 0;
uint64_t max = -1; u64 max = -1;
while (max) while (max)
{ {
@ -4368,7 +4368,7 @@ static void *thread_calc (void *p)
} }
} }
device_param->pw_add (device_param, (uint8_t *) line_buf, line_len); device_param->pw_add (device_param, (u8 *) line_buf, line_len);
if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint (); if (data.devices_status == STATUS_STOP_AT_CHECKPOINT) check_checkpoint ();
@ -4942,9 +4942,9 @@ void *__stdcall ADL_Main_Memory_Alloc (const int iSize)
return mymalloc (iSize); return mymalloc (iSize);
} }
static uint generate_bitmaps (const uint digests_cnt, const uint dgst_size, const uint dgst_shifts, char *digests_buf_ptr, const uint bitmap_mask, const uint bitmap_size, uint *bitmap_a, uint *bitmap_b, uint *bitmap_c, uint *bitmap_d, const uint64_t collisions_max) static uint generate_bitmaps (const uint digests_cnt, const uint dgst_size, const uint dgst_shifts, char *digests_buf_ptr, const uint bitmap_mask, const uint bitmap_size, uint *bitmap_a, uint *bitmap_b, uint *bitmap_c, uint *bitmap_d, const u64 collisions_max)
{ {
uint64_t collisions = 0; u64 collisions = 0;
const uint dgst_pos0 = data.dgst_pos0; const uint dgst_pos0 = data.dgst_pos0;
const uint dgst_pos1 = data.dgst_pos1; const uint dgst_pos1 = data.dgst_pos1;
@ -5056,8 +5056,8 @@ int main (int argc, char **argv)
uint username = USERNAME; uint username = USERNAME;
uint remove = REMOVE; uint remove = REMOVE;
uint remove_timer = REMOVE_TIMER; uint remove_timer = REMOVE_TIMER;
uint64_t skip = SKIP; u64 skip = SKIP;
uint64_t limit = LIMIT; u64 limit = LIMIT;
uint keyspace = KEYSPACE; uint keyspace = KEYSPACE;
uint potfile_disable = POTFILE_DISABLE; uint potfile_disable = POTFILE_DISABLE;
uint debug_mode = DEBUG_MODE; uint debug_mode = DEBUG_MODE;
@ -10520,7 +10520,7 @@ int main (int argc, char **argv)
if ((username && (remove || show)) || (opts_type & OPTS_TYPE_HASH_COPY)) if ((username && (remove || show)) || (opts_type & OPTS_TYPE_HASH_COPY))
{ {
uint32_t hash_pos; u32 hash_pos;
for (hash_pos = 0; hash_pos < hashes_avail; hash_pos++) for (hash_pos = 0; hash_pos < hashes_avail; hash_pos++)
{ {
@ -11756,7 +11756,7 @@ int main (int argc, char **argv)
for (uint i = 0, j = 0; i < 6; i++, j += 2) for (uint i = 0, j = 0; i < 6; i++, j += 2)
{ {
if (mac1[i] != (unsigned char) hex_to_char (&mac1_pos[j])) if (mac1[i] != hex_to_u8 ((const u8 *) &mac1_pos[j]))
{ {
found = NULL; found = NULL;
break; break;
@ -11768,7 +11768,7 @@ int main (int argc, char **argv)
for (uint i = 0, j = 0; i < 6; i++, j += 2) for (uint i = 0, j = 0; i < 6; i++, j += 2)
{ {
if (mac2[i] != (unsigned char) hex_to_char (&mac2_pos[j])) if (mac2[i] != hex_to_u8 ((const u8 *) &mac2_pos[j]))
{ {
found = NULL; found = NULL;
break; break;
@ -12944,7 +12944,7 @@ int main (int argc, char **argv)
int num_adl_adapters = 0; int num_adl_adapters = 0;
uint32_t *valid_adl_device_list = hm_get_list_valid_adl_adapters (hm_adapters_num, &num_adl_adapters, lpAdapterInfo); u32 *valid_adl_device_list = hm_get_list_valid_adl_adapters (hm_adapters_num, &num_adl_adapters, lpAdapterInfo);
if (num_adl_adapters > 0) if (num_adl_adapters > 0)
{ {
@ -13218,7 +13218,7 @@ int main (int argc, char **argv)
uint size_bfs = KERNEL_BFS * sizeof (bf_t); uint size_bfs = KERNEL_BFS * sizeof (bf_t);
uint size_tm = 32 * sizeof (bs_word_t); uint size_tm = 32 * sizeof (bs_word_t);
uint64_t size_scryptV = 1; u64 size_scryptV = 1;
if ((hash_mode == 8900) || (hash_mode == 9300)) if ((hash_mode == 8900) || (hash_mode == 9300))
{ {
@ -14269,9 +14269,9 @@ int main (int argc, char **argv)
* keep track of the progress * keep track of the progress
*/ */
data.words_progress_done = (uint64_t *) mycalloc (data.salts_cnt, sizeof (uint64_t)); data.words_progress_done = (u64 *) mycalloc (data.salts_cnt, sizeof (u64));
data.words_progress_rejected = (uint64_t *) mycalloc (data.salts_cnt, sizeof (uint64_t)); data.words_progress_rejected = (u64 *) mycalloc (data.salts_cnt, sizeof (u64));
data.words_progress_restored = (uint64_t *) mycalloc (data.salts_cnt, sizeof (uint64_t)); data.words_progress_restored = (u64 *) mycalloc (data.salts_cnt, sizeof (u64));
/** /**
* open filehandles * open filehandles
@ -14489,7 +14489,7 @@ int main (int argc, char **argv)
data.quiet = 1; data.quiet = 1;
const uint64_t words1_cnt = count_words (wl_data, fp1, dictfile1, dictstat_base, &dictstat_nmemb); const u64 words1_cnt = count_words (wl_data, fp1, dictfile1, dictstat_base, &dictstat_nmemb);
data.quiet = quiet; data.quiet = quiet;
@ -14507,7 +14507,7 @@ int main (int argc, char **argv)
data.quiet = 1; data.quiet = 1;
const uint64_t words2_cnt = count_words (wl_data, fp2, dictfile2, dictstat_base, &dictstat_nmemb); const u64 words2_cnt = count_words (wl_data, fp2, dictfile2, dictstat_base, &dictstat_nmemb);
data.quiet = quiet; data.quiet = quiet;
@ -15427,9 +15427,9 @@ int main (int argc, char **argv)
data.devices_status = STATUS_INIT; data.devices_status = STATUS_INIT;
memset (data.words_progress_done, 0, data.salts_cnt * sizeof (uint64_t)); memset (data.words_progress_done, 0, data.salts_cnt * sizeof (u64));
memset (data.words_progress_rejected, 0, data.salts_cnt * sizeof (uint64_t)); memset (data.words_progress_rejected, 0, data.salts_cnt * sizeof (u64));
memset (data.words_progress_restored, 0, data.salts_cnt * sizeof (uint64_t)); memset (data.words_progress_restored, 0, data.salts_cnt * sizeof (u64));
memset (data.cpt_buf, 0, CPT_BUF * sizeof (cpt_t)); memset (data.cpt_buf, 0, CPT_BUF * sizeof (cpt_t));
@ -15458,7 +15458,7 @@ int main (int argc, char **argv)
device_param->speed_pos = 0; device_param->speed_pos = 0;
memset (device_param->speed_cnt, 0, SPEED_CACHE * sizeof (uint64_t)); memset (device_param->speed_cnt, 0, SPEED_CACHE * sizeof (u64));
memset (device_param->speed_ms, 0, SPEED_CACHE * sizeof (float)); memset (device_param->speed_ms, 0, SPEED_CACHE * sizeof (float));
memset (device_param->speed_rec, 0, SPEED_CACHE * sizeof (hc_timer_t)); memset (device_param->speed_rec, 0, SPEED_CACHE * sizeof (hc_timer_t));
@ -15861,7 +15861,7 @@ int main (int argc, char **argv)
} }
} }
uint64_t words_base = data.words_cnt; u64 words_base = data.words_cnt;
if (data.attack_kern == ATTACK_KERN_STRAIGHT) if (data.attack_kern == ATTACK_KERN_STRAIGHT)
{ {

View File

@ -8,20 +8,20 @@
#include <rp_kernel_on_cpu.h> #include <rp_kernel_on_cpu.h>
static uint32_t generate_cmask (uint32_t buf) static u32 generate_cmask (u32 buf)
{ {
const uint32_t rmask = ((buf & 0x40404040) >> 1) const u32 rmask = ((buf & 0x40404040) >> 1)
& ~((buf & 0x80808080) >> 2); & ~((buf & 0x80808080) >> 2);
const uint32_t hmask = (buf & 0x1f1f1f1f) + 0x05050505; const u32 hmask = (buf & 0x1f1f1f1f) + 0x05050505;
const uint32_t lmask = (buf & 0x1f1f1f1f) + 0x1f1f1f1f; const u32 lmask = (buf & 0x1f1f1f1f) + 0x1f1f1f1f;
return rmask & ~hmask & lmask; return rmask & ~hmask & lmask;
} }
static void truncate_right (uint32_t w0[4], uint32_t w1[4], const uint len) static void truncate_right (u32 w0[4], u32 w1[4], const u32 len)
{ {
const uint tmp = (1 << ((len % 4) * 8)) - 1; const u32 tmp = (1 << ((len % 4) * 8)) - 1;
switch (len / 4) switch (len / 4)
{ {
@ -72,9 +72,9 @@ static void truncate_right (uint32_t w0[4], uint32_t w1[4], const uint len)
} }
} }
static void truncate_left (uint32_t w0[4], uint32_t w1[4], const uint len) static void truncate_left (u32 w0[4], u32 w1[4], const u32 len)
{ {
const uint tmp = ~((1 << ((len % 4) * 8)) - 1); const u32 tmp = ~((1 << ((len % 4) * 8)) - 1);
switch (len / 4) switch (len / 4)
{ {
@ -125,7 +125,7 @@ static void truncate_left (uint32_t w0[4], uint32_t w1[4], const uint len)
} }
} }
static void lshift_block (const uint32_t in0[4], const uint32_t in1[4], uint32_t out0[4], uint32_t out1[4]) static void lshift_block (const u32 in0[4], const u32 in1[4], u32 out0[4], u32 out1[4])
{ {
out0[0] = in0[0] >> 8 | in0[1] << 24; out0[0] = in0[0] >> 8 | in0[1] << 24;
out0[1] = in0[1] >> 8 | in0[2] << 24; out0[1] = in0[1] >> 8 | in0[2] << 24;
@ -137,7 +137,7 @@ static void lshift_block (const uint32_t in0[4], const uint32_t in1[4], uint32_t
out1[3] = in1[3] >> 8; out1[3] = in1[3] >> 8;
} }
static void rshift_block (const uint32_t in0[4], const uint32_t in1[4], uint32_t out0[4], uint32_t out1[4]) static void rshift_block (const u32 in0[4], const u32 in1[4], u32 out0[4], u32 out1[4])
{ {
out1[3] = in1[3] << 8 | in1[2] >> 24; out1[3] = in1[3] << 8 | in1[2] >> 24;
out1[2] = in1[2] << 8 | in1[1] >> 24; out1[2] = in1[2] << 8 | in1[1] >> 24;
@ -149,7 +149,7 @@ static void rshift_block (const uint32_t in0[4], const uint32_t in1[4], uint32_t
out0[0] = in0[0] << 8; out0[0] = in0[0] << 8;
} }
static void rshift_block_N (const uint32_t in0[4], const uint32_t in1[4], uint32_t out0[4], uint32_t out1[4], const uint num) static void rshift_block_N (const u32 in0[4], const u32 in1[4], u32 out0[4], u32 out1[4], const u32 num)
{ {
switch (num) switch (num)
{ {
@ -444,7 +444,7 @@ static void rshift_block_N (const uint32_t in0[4], const uint32_t in1[4], uint32
} }
} }
static void lshift_block_N (const uint32_t in0[4], const uint32_t in1[4], uint32_t out0[4], uint32_t out1[4], const uint num) static void lshift_block_N (const u32 in0[4], const u32 in1[4], u32 out0[4], u32 out1[4], const u32 num)
{ {
switch (num) switch (num)
{ {
@ -740,9 +740,9 @@ static void lshift_block_N (const uint32_t in0[4], const uint32_t in1[4], uint32
} }
} }
static void append_block1 (const uint offset, uint32_t dst0[4], uint32_t dst1[4], const uint32_t src_r0) static void append_block1 (const u32 offset, u32 dst0[4], u32 dst1[4], const u32 src_r0)
{ {
uint32_t tmp[2]; u32 tmp[2];
switch (offset & 3) switch (offset & 3)
{ {
@ -788,7 +788,7 @@ static void append_block1 (const uint offset, uint32_t dst0[4], uint32_t dst1[4]
} }
} }
static void append_block8 (const uint offset, uint32_t dst0[4], uint32_t dst1[4], const uint32_t src_l0[4], const uint32_t src_l1[4], const uint32_t src_r0[4], const uint32_t src_r1[4]) static void append_block8 (const u32 offset, u32 dst0[4], u32 dst1[4], const u32 src_l0[4], const u32 src_l1[4], const u32 src_r0[4], const u32 src_r1[4])
{ {
switch (offset) switch (offset)
{ {
@ -1034,12 +1034,12 @@ static void append_block8 (const uint offset, uint32_t dst0[4], uint32_t dst1[4]
} }
} }
static void reverse_block (uint32_t in0[4], uint32_t in1[4], uint32_t out0[4], uint32_t out1[4], const uint len) static void reverse_block (u32 in0[4], u32 in1[4], u32 out0[4], u32 out1[4], const u32 len)
{ {
rshift_block_N (in0, in1, out0, out1, 32 - len); rshift_block_N (in0, in1, out0, out1, 32 - len);
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = out1[3]; tib40[0] = out1[3];
tib40[1] = out1[2]; tib40[1] = out1[2];
@ -1060,7 +1060,7 @@ static void reverse_block (uint32_t in0[4], uint32_t in1[4], uint32_t out0[4], u
out1[3] = swap_workaround (tib41[3]); out1[3] = swap_workaround (tib41[3]);
} }
static uint rule_op_mangle_lrest (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_lrest (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
buf0[0] |= (generate_cmask (buf0[0])); buf0[0] |= (generate_cmask (buf0[0]));
buf0[1] |= (generate_cmask (buf0[1])); buf0[1] |= (generate_cmask (buf0[1]));
@ -1074,7 +1074,7 @@ static uint rule_op_mangle_lrest (const uint p0, const uint p1, uint32_t buf0[4]
return in_len; return in_len;
} }
static uint rule_op_mangle_urest (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_urest (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
buf0[0] &= ~(generate_cmask (buf0[0])); buf0[0] &= ~(generate_cmask (buf0[0]));
buf0[1] &= ~(generate_cmask (buf0[1])); buf0[1] &= ~(generate_cmask (buf0[1]));
@ -1088,7 +1088,7 @@ static uint rule_op_mangle_urest (const uint p0, const uint p1, uint32_t buf0[4]
return in_len; return in_len;
} }
static uint rule_op_mangle_lrest_ufirst (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_lrest_ufirst (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
rule_op_mangle_lrest (p0, p1, buf0, buf1, in_len); rule_op_mangle_lrest (p0, p1, buf0, buf1, in_len);
@ -1097,7 +1097,7 @@ static uint rule_op_mangle_lrest_ufirst (const uint p0, const uint p1, uint32_t
return in_len; return in_len;
} }
static uint rule_op_mangle_urest_lfirst (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_urest_lfirst (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
rule_op_mangle_urest (p0, p1, buf0, buf1, in_len); rule_op_mangle_urest (p0, p1, buf0, buf1, in_len);
@ -1106,7 +1106,7 @@ static uint rule_op_mangle_urest_lfirst (const uint p0, const uint p1, uint32_t
return in_len; return in_len;
} }
static uint rule_op_mangle_trest (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_trest (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
buf0[0] ^= (generate_cmask (buf0[0])); buf0[0] ^= (generate_cmask (buf0[0]));
buf0[1] ^= (generate_cmask (buf0[1])); buf0[1] ^= (generate_cmask (buf0[1]));
@ -1120,11 +1120,11 @@ static uint rule_op_mangle_trest (const uint p0, const uint p1, uint32_t buf0[4]
return in_len; return in_len;
} }
static uint rule_op_mangle_toggle_at (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_toggle_at (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint tmp = 0x20u << ((p0 & 3) * 8); const u32 tmp = 0x20u << ((p0 & 3) * 8);
switch (p0 / 4) switch (p0 / 4)
{ {
@ -1141,21 +1141,21 @@ static uint rule_op_mangle_toggle_at (const uint p0, const uint p1, uint32_t buf
return in_len; return in_len;
} }
static uint rule_op_mangle_reverse (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_reverse (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
reverse_block (buf0, buf1, buf0, buf1, in_len); reverse_block (buf0, buf1, buf0, buf1, in_len);
return in_len; return in_len;
} }
static uint rule_op_mangle_dupeword (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupeword (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ((in_len + in_len) >= 32) return (in_len); if ((in_len + in_len) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = buf0[0]; tib40[0] = buf0[0];
tib40[1] = buf0[1]; tib40[1] = buf0[1];
@ -1173,14 +1173,14 @@ static uint rule_op_mangle_dupeword (const uint p0, const uint p1, uint32_t buf0
return out_len; return out_len;
} }
static uint rule_op_mangle_dupeword_times (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupeword_times (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (((in_len * p0) + in_len) >= 32) return (in_len); if (((in_len * p0) + in_len) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = buf0[0]; tib40[0] = buf0[0];
tib40[1] = buf0[1]; tib40[1] = buf0[1];
@ -1191,7 +1191,7 @@ static uint rule_op_mangle_dupeword_times (const uint p0, const uint p1, uint32_
tib41[2] = buf1[2]; tib41[2] = buf1[2];
tib41[3] = buf1[3]; tib41[3] = buf1[3];
for (uint i = 0; i < p0; i++) for (u32 i = 0; i < p0; i++)
{ {
append_block8 (out_len, buf0, buf1, buf0, buf1, tib40, tib41); append_block8 (out_len, buf0, buf1, buf0, buf1, tib40, tib41);
@ -1201,14 +1201,14 @@ static uint rule_op_mangle_dupeword_times (const uint p0, const uint p1, uint32_
return out_len; return out_len;
} }
static uint rule_op_mangle_reflect (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_reflect (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ((in_len + in_len) >= 32) return (in_len); if ((in_len + in_len) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
reverse_block (buf0, buf1, tib40, tib41, out_len); reverse_block (buf0, buf1, tib40, tib41, out_len);
@ -1219,11 +1219,11 @@ static uint rule_op_mangle_reflect (const uint p0, const uint p1, uint32_t buf0[
return out_len; return out_len;
} }
static uint rule_op_mangle_append (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_append (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ((in_len + 1) >= 32) return (in_len); if ((in_len + 1) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
append_block1 (out_len, buf0, buf1, p0); append_block1 (out_len, buf0, buf1, p0);
@ -1232,11 +1232,11 @@ static uint rule_op_mangle_append (const uint p0, const uint p1, uint32_t buf0[4
return out_len; return out_len;
} }
static uint rule_op_mangle_prepend (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_prepend (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ((in_len + 1) >= 32) return (in_len); if ((in_len + 1) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
rshift_block (buf0, buf1, buf0, buf1); rshift_block (buf0, buf1, buf0, buf1);
@ -1247,15 +1247,15 @@ static uint rule_op_mangle_prepend (const uint p0, const uint p1, uint32_t buf0[
return out_len; return out_len;
} }
static uint rule_op_mangle_rotate_left (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_rotate_left (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len == 0) return (in_len); if (in_len == 0) return (in_len);
const uint in_len1 = in_len - 1; const u32 in_len1 = in_len - 1;
const uint sh = (in_len1 & 3) * 8; const u32 sh = (in_len1 & 3) * 8;
const uint32_t tmp = (buf0[0] & 0xff) << sh; const u32 tmp = (buf0[0] & 0xff) << sh;
lshift_block (buf0, buf1, buf0, buf1); lshift_block (buf0, buf1, buf0, buf1);
@ -1274,15 +1274,15 @@ static uint rule_op_mangle_rotate_left (const uint p0, const uint p1, uint32_t b
return in_len; return in_len;
} }
static uint rule_op_mangle_rotate_right (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_rotate_right (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len == 0) return (in_len); if (in_len == 0) return (in_len);
const uint in_len1 = in_len - 1; const u32 in_len1 = in_len - 1;
const uint sh = (in_len1 & 3) * 8; const u32 sh = (in_len1 & 3) * 8;
uint32_t tmp = 0; u32 tmp = 0;
switch (in_len1 / 4) switch (in_len1 / 4)
{ {
@ -1305,24 +1305,24 @@ static uint rule_op_mangle_rotate_right (const uint p0, const uint p1, uint32_t
return in_len; return in_len;
} }
static uint rule_op_mangle_delete_first (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_delete_first (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len == 0) return (in_len); if (in_len == 0) return (in_len);
const uint in_len1 = in_len - 1; const u32 in_len1 = in_len - 1;
lshift_block (buf0, buf1, buf0, buf1); lshift_block (buf0, buf1, buf0, buf1);
return in_len1; return in_len1;
} }
static uint rule_op_mangle_delete_last (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_delete_last (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len == 0) return (in_len); if (in_len == 0) return (in_len);
const uint in_len1 = in_len - 1; const u32 in_len1 = in_len - 1;
const uint tmp = (1 << ((in_len1 & 3) * 8)) - 1; const u32 tmp = (1 << ((in_len1 & 3) * 8)) - 1;
switch (in_len1 / 4) switch (in_len1 / 4)
{ {
@ -1339,19 +1339,19 @@ static uint rule_op_mangle_delete_last (const uint p0, const uint p1, uint32_t b
return in_len1; return in_len1;
} }
static uint rule_op_mangle_delete_at (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_delete_at (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
lshift_block (buf0, buf1, tib40, tib41); lshift_block (buf0, buf1, tib40, tib41);
const uint ml = (1 << ((p0 & 3) * 8)) - 1; const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
const uint mr = ~ml; const u32 mr = ~ml;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -1414,13 +1414,13 @@ static uint rule_op_mangle_delete_at (const uint p0, const uint p1, uint32_t buf
return out_len; return out_len;
} }
static uint rule_op_mangle_extract (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_extract (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
if ((p0 + p1) > in_len) return (in_len); if ((p0 + p1) > in_len) return (in_len);
uint out_len = p1; u32 out_len = p1;
lshift_block_N (buf0, buf1, buf0, buf1, p0); lshift_block_N (buf0, buf1, buf0, buf1, p0);
@ -1429,16 +1429,16 @@ static uint rule_op_mangle_extract (const uint p0, const uint p1, uint32_t buf0[
return out_len; return out_len;
} }
static uint rule_op_mangle_omit (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_omit (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
if ((p0 + p1) > in_len) return (in_len); if ((p0 + p1) > in_len) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = 0; tib40[0] = 0;
tib40[1] = 0; tib40[1] = 0;
@ -1451,8 +1451,8 @@ static uint rule_op_mangle_omit (const uint p0, const uint p1, uint32_t buf0[4],
lshift_block_N (buf0, buf1, tib40, tib41, p1); lshift_block_N (buf0, buf1, tib40, tib41, p1);
const uint ml = (1 << ((p0 & 3) * 8)) - 1; const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
const uint mr = ~ml; const u32 mr = ~ml;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -1515,24 +1515,24 @@ static uint rule_op_mangle_omit (const uint p0, const uint p1, uint32_t buf0[4],
return out_len; return out_len;
} }
static uint rule_op_mangle_insert (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_insert (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 > in_len) return (in_len); if (p0 > in_len) return (in_len);
if ((in_len + 1) >= 32) return (in_len); if ((in_len + 1) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
rshift_block (buf0, buf1, tib40, tib41); rshift_block (buf0, buf1, tib40, tib41);
const uint p1n = p1 << ((p0 & 3) * 8); const u32 p1n = p1 << ((p0 & 3) * 8);
const uint ml = (1 << ((p0 & 3) * 8)) - 1; const u32 ml = (1 << ((p0 & 3) * 8)) - 1;
const uint mr = 0xffffff00 << ((p0 & 3) * 8); const u32 mr = 0xffffff00 << ((p0 & 3) * 8);
switch (p0 / 4) switch (p0 / 4)
{ {
@ -1587,13 +1587,13 @@ static uint rule_op_mangle_insert (const uint p0, const uint p1, uint32_t buf0[4
return out_len; return out_len;
} }
static uint rule_op_mangle_overstrike (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_overstrike (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint p1n = p1 << ((p0 & 3) * 8); const u32 p1n = p1 << ((p0 & 3) * 8);
const uint m = ~(0xffu << ((p0 & 3) * 8)); const u32 m = ~(0xffu << ((p0 & 3) * 8));
switch (p0 / 4) switch (p0 / 4)
{ {
@ -1610,7 +1610,7 @@ static uint rule_op_mangle_overstrike (const uint p0, const uint p1, uint32_t bu
return in_len; return in_len;
} }
static uint rule_op_mangle_truncate_at (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_truncate_at (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
@ -1619,9 +1619,9 @@ static uint rule_op_mangle_truncate_at (const uint p0, const uint p1, uint32_t b
return p0; return p0;
} }
static uint rule_op_mangle_replace (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_replace (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
for (uint i = 0; i < in_len; i++) for (u32 i = 0; i < in_len; i++)
{ {
switch (i) switch (i)
{ {
@ -1663,26 +1663,26 @@ static uint rule_op_mangle_replace (const uint p0, const uint p1, uint32_t buf0[
return in_len; return in_len;
} }
static uint rule_op_mangle_purgechar (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_purgechar (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
// TODO // TODO
return in_len; return in_len;
} }
static uint rule_op_mangle_togglecase_rec (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_togglecase_rec (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
// TODO // TODO
return in_len; return in_len;
} }
static uint rule_op_mangle_dupechar_first (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupechar_first (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ( in_len == 0) return (in_len); if ( in_len == 0) return (in_len);
if ((in_len + p0) >= 32) return (in_len); if ((in_len + p0) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
const uint32_t tmp = buf0[0] & 0xFF; const u32 tmp = buf0[0] & 0xFF;
rshift_block_N (buf0, buf1, buf0, buf1, p0); rshift_block_N (buf0, buf1, buf0, buf1, p0);
@ -1862,16 +1862,16 @@ static uint rule_op_mangle_dupechar_first (const uint p0, const uint p1, uint32_
return out_len; return out_len;
} }
static uint rule_op_mangle_dupechar_last (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupechar_last (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ( in_len == 0) return (in_len); if ( in_len == 0) return (in_len);
if ((in_len + p0) >= 32) return (in_len); if ((in_len + p0) >= 32) return (in_len);
const uint in_len1 = in_len - 1; const u32 in_len1 = in_len - 1;
const uint sh = (in_len1 & 3) * 8; const u32 sh = (in_len1 & 3) * 8;
uint32_t tmp = 0; u32 tmp = 0;
switch (in_len1 / 4) switch (in_len1 / 4)
{ {
@ -1885,9 +1885,9 @@ static uint rule_op_mangle_dupechar_last (const uint p0, const uint p1, uint32_t
case 7: tmp = (buf1[3] >> sh) & 0xff; break; case 7: tmp = (buf1[3] >> sh) & 0xff; break;
} }
uint out_len = in_len; u32 out_len = in_len;
for (uint i = 0; i < p0; i++) for (u32 i = 0; i < p0; i++)
{ {
append_block1 (out_len, buf0, buf1, tmp); append_block1 (out_len, buf0, buf1, tmp);
@ -1897,15 +1897,15 @@ static uint rule_op_mangle_dupechar_last (const uint p0, const uint p1, uint32_t
return out_len; return out_len;
} }
static uint rule_op_mangle_dupechar_all (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupechar_all (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ( in_len == 0) return (in_len); if ( in_len == 0) return (in_len);
if ((in_len + in_len) >= 32) return (in_len); if ((in_len + in_len) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = ((buf0[0] & 0x000000FF) << 0) | ((buf0[0] & 0x0000FF00) << 8); tib40[0] = ((buf0[0] & 0x000000FF) << 0) | ((buf0[0] & 0x0000FF00) << 8);
tib40[1] = ((buf0[0] & 0x00FF0000) >> 16) | ((buf0[0] & 0xFF000000) >> 8); tib40[1] = ((buf0[0] & 0x00FF0000) >> 16) | ((buf0[0] & 0xFF000000) >> 8);
@ -1930,7 +1930,7 @@ static uint rule_op_mangle_dupechar_all (const uint p0, const uint p1, uint32_t
return out_len; return out_len;
} }
static uint rule_op_mangle_switch_first (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_switch_first (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len < 2) return (in_len); if (in_len < 2) return (in_len);
@ -1939,7 +1939,7 @@ static uint rule_op_mangle_switch_first (const uint p0, const uint p1, uint32_t
return in_len; return in_len;
} }
static uint rule_op_mangle_switch_last (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_switch_last (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (in_len < 2) return (in_len); if (in_len < 2) return (in_len);
@ -2024,13 +2024,13 @@ static uint rule_op_mangle_switch_last (const uint p0, const uint p1, uint32_t b
return in_len; return in_len;
} }
static uint rule_op_mangle_switch_at (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_switch_at (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
if (p1 >= in_len) return (in_len); if (p1 >= in_len) return (in_len);
uint32_t tmp0 = 0; u32 tmp0 = 0;
uint32_t tmp1 = 0; u32 tmp1 = 0;
switch (p0) switch (p0)
{ {
@ -2271,12 +2271,12 @@ static uint rule_op_mangle_switch_at (const uint p0, const uint p1, uint32_t buf
return in_len; return in_len;
} }
static uint rule_op_mangle_chr_shiftl (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_chr_shiftl (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2293,12 +2293,12 @@ static uint rule_op_mangle_chr_shiftl (const uint p0, const uint p1, uint32_t bu
return in_len; return in_len;
} }
static uint rule_op_mangle_chr_shiftr (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_chr_shiftr (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2315,14 +2315,14 @@ static uint rule_op_mangle_chr_shiftr (const uint p0, const uint p1, uint32_t bu
return in_len; return in_len;
} }
static uint rule_op_mangle_chr_incr (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_chr_incr (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
const uint n = 0x01010101 & mr; const u32 n = 0x01010101 & mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2339,14 +2339,14 @@ static uint rule_op_mangle_chr_incr (const uint p0, const uint p1, uint32_t buf0
return in_len; return in_len;
} }
static uint rule_op_mangle_chr_decr (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_chr_decr (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
const uint n = 0x01010101 & mr; const u32 n = 0x01010101 & mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2363,17 +2363,17 @@ static uint rule_op_mangle_chr_decr (const uint p0, const uint p1, uint32_t buf0
return in_len; return in_len;
} }
static uint rule_op_mangle_replace_np1 (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_replace_np1 (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if ((p0 + 1) >= in_len) return (in_len); if ((p0 + 1) >= in_len) return (in_len);
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
lshift_block (buf0, buf1, tib40, tib41); lshift_block (buf0, buf1, tib40, tib41);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2390,19 +2390,19 @@ static uint rule_op_mangle_replace_np1 (const uint p0, const uint p1, uint32_t b
return in_len; return in_len;
} }
static uint rule_op_mangle_replace_nm1 (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_replace_nm1 (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 == 0) return (in_len); if (p0 == 0) return (in_len);
if (p0 >= in_len) return (in_len); if (p0 >= in_len) return (in_len);
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
rshift_block (buf0, buf1, tib40, tib41); rshift_block (buf0, buf1, tib40, tib41);
const uint mr = 0xffu << ((p0 & 3) * 8); const u32 mr = 0xffu << ((p0 & 3) * 8);
const uint ml = ~mr; const u32 ml = ~mr;
switch (p0 / 4) switch (p0 / 4)
{ {
@ -2419,16 +2419,16 @@ static uint rule_op_mangle_replace_nm1 (const uint p0, const uint p1, uint32_t b
return in_len; return in_len;
} }
static uint rule_op_mangle_dupeblock_first (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupeblock_first (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 > in_len) return (in_len); if (p0 > in_len) return (in_len);
if ((in_len + p0) >= 32) return (in_len); if ((in_len + p0) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
tib40[0] = buf0[0]; tib40[0] = buf0[0];
tib40[1] = buf0[1]; tib40[1] = buf0[1];
@ -2457,16 +2457,16 @@ static uint rule_op_mangle_dupeblock_first (const uint p0, const uint p1, uint32
return out_len; return out_len;
} }
static uint rule_op_mangle_dupeblock_last (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_dupeblock_last (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
if (p0 > in_len) return (in_len); if (p0 > in_len) return (in_len);
if ((in_len + p0) >= 32) return (in_len); if ((in_len + p0) >= 32) return (in_len);
uint out_len = in_len; u32 out_len = in_len;
uint32_t tib40[4]; u32 tib40[4];
uint32_t tib41[4]; u32 tib41[4];
rshift_block_N (buf0, buf1, tib40, tib41, p0); rshift_block_N (buf0, buf1, tib40, tib41, p0);
@ -2486,7 +2486,7 @@ static uint rule_op_mangle_dupeblock_last (const uint p0, const uint p1, uint32_
return out_len; return out_len;
} }
static uint rule_op_mangle_title (const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) static u32 rule_op_mangle_title (const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
buf0[0] |= (generate_cmask (buf0[0])); buf0[0] |= (generate_cmask (buf0[0]));
buf0[1] |= (generate_cmask (buf0[1])); buf0[1] |= (generate_cmask (buf0[1]));
@ -2499,10 +2499,10 @@ static uint rule_op_mangle_title (const uint p0, const uint p1, uint32_t buf0[4]
buf0[0] &= ~(0x00000020 & generate_cmask (buf0[0])); buf0[0] &= ~(0x00000020 & generate_cmask (buf0[0]));
for (uint i = 0; i < in_len; i++) for (u32 i = 0; i < in_len; i++)
{ {
uint32_t tmp0 = 0; u32 tmp0 = 0;
uint32_t tmp1 = 0; u32 tmp1 = 0;
switch (i) switch (i)
{ {
@ -2607,9 +2607,9 @@ static uint rule_op_mangle_title (const uint p0, const uint p1, uint32_t buf0[4]
return in_len; return in_len;
} }
uint apply_rule (const uint name, const uint p0, const uint p1, uint32_t buf0[4], uint32_t buf1[4], const uint in_len) u32 apply_rule (const u32 name, const u32 p0, const u32 p1, u32 buf0[4], u32 buf1[4], const u32 in_len)
{ {
uint out_len = in_len; u32 out_len = in_len;
switch (name) switch (name)
{ {
@ -2658,15 +2658,17 @@ uint apply_rule (const uint name, const uint p0, const uint p1, uint32_t buf0[4]
return out_len; return out_len;
} }
uint apply_rules (uint *cmds, uint32_t buf0[4], uint32_t buf1[4], const uint len) u32 apply_rules (u32 *cmds, u32 buf0[4], u32 buf1[4], const u32 len)
{ {
uint out_len = len; u32 out_len = len;
for (; *cmds; cmds++) for (u32 i = 0; cmds[i] != 0; i++)
{ {
const uint name = (*cmds >> 0) & 0xff; const u32 cmd = cmds[i];
const uint p0 = (*cmds >> 8) & 0xff;
const uint p1 = (*cmds >> 16) & 0xff; const u32 name = (cmd >> 0) & 0xff;
const u32 p0 = (cmd >> 8) & 0xff;
const u32 p1 = (cmd >> 16) & 0xff;
out_len = apply_rule (name, p0, p1, buf0, buf1, out_len); out_len = apply_rule (name, p0, p1, buf0, buf1, out_len);
} }

File diff suppressed because it is too large Load Diff

View File

@ -3,12 +3,12 @@
## License.....: MIT ## License.....: MIT
## ##
GCC := /usr/bin/x86_64-linux-gnu-gcc-4.6 GCC := gcc
ROOT := ../../ ROOT := ../..
CFLAGS := -O2 -s -ansi -pipe -W -Wall -std=c99 -I$(ROOT)include/ CFLAGS := -O2 -s -pipe -W -Wall -std=c99 -I$(ROOT)/include/
LIBS := LIBS :=
TARGET := gpu2cpu_rule_test TARGET := kernel2cpu_rule_test
INCLUDE := $(ROOT)src/rp_gpu_on_cpu.c cpu_rules.c INCLUDE := $(ROOT)/src/rp_kernel_on_cpu.c cpu_rules.c
all: ${TARGET}.c all: ${TARGET}.c
${GCC} ${CFLAGS} ${INCLUDE} $< -o ${TARGET}.bin ${LIBS} ${GCC} ${CFLAGS} ${INCLUDE} $< -o ${TARGET}.bin ${LIBS}

View File

@ -25,7 +25,7 @@ extern int max_len;
#define GET_P0_CONV(rule) INCR_POS; rule_buf[rule_pos] = conv_itoc (((rule)->cmds[rule_cnt] >> 8) & 0xff) #define GET_P0_CONV(rule) INCR_POS; rule_buf[rule_pos] = conv_itoc (((rule)->cmds[rule_cnt] >> 8) & 0xff)
#define GET_P1_CONV(rule) INCR_POS; rule_buf[rule_pos] = conv_itoc (((rule)->cmds[rule_cnt] >> 16) & 0xff) #define GET_P1_CONV(rule) INCR_POS; rule_buf[rule_pos] = conv_itoc (((rule)->cmds[rule_cnt] >> 16) & 0xff)
void gen_cmask (const uint8_t *word, uint8_t *cmask, const uint len) void gen_cmask (const u8 *word, u8 *cmask, const uint len)
{ {
uint i; uint i;
@ -420,7 +420,7 @@ int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2)
return (arr_len); return (arr_len);
} }
int mangle_chr_shiftl (uint8_t arr[BLOCK_SIZE], int arr_len, int upos) int mangle_chr_shiftl (u8 arr[BLOCK_SIZE], int arr_len, int upos)
{ {
if (upos >= arr_len) return (arr_len); if (upos >= arr_len) return (arr_len);
@ -429,7 +429,7 @@ int mangle_chr_shiftl (uint8_t arr[BLOCK_SIZE], int arr_len, int upos)
return (arr_len); return (arr_len);
} }
int mangle_chr_shiftr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos) int mangle_chr_shiftr (u8 arr[BLOCK_SIZE], int arr_len, int upos)
{ {
if (upos >= arr_len) return (arr_len); if (upos >= arr_len) return (arr_len);
@ -438,7 +438,7 @@ int mangle_chr_shiftr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos)
return (arr_len); return (arr_len);
} }
int mangle_chr_incr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos) int mangle_chr_incr (u8 arr[BLOCK_SIZE], int arr_len, int upos)
{ {
if (upos >= arr_len) return (arr_len); if (upos >= arr_len) return (arr_len);
@ -447,7 +447,7 @@ int mangle_chr_incr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos)
return (arr_len); return (arr_len);
} }
int mangle_chr_decr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos) int mangle_chr_decr (u8 arr[BLOCK_SIZE], int arr_len, int upos)
{ {
if (upos >= arr_len) return (arr_len); if (upos >= arr_len) return (arr_len);
@ -486,20 +486,20 @@ int mangle_title (char arr[BLOCK_SIZE], int arr_len)
return (arr_len); return (arr_len);
} }
int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], uint32_t rp_gen_func_min, uint32_t rp_gen_func_max) int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], u32 rp_gen_func_min, u32 rp_gen_func_max)
{ {
uint32_t rp_gen_num = get_random_num (rp_gen_func_min, rp_gen_func_max); u32 rp_gen_num = get_random_num (rp_gen_func_min, rp_gen_func_max);
uint32_t j; u32 j;
uint32_t rule_pos = 0; u32 rule_pos = 0;
for (j = 0; j < rp_gen_num; j++) for (j = 0; j < rp_gen_num; j++)
{ {
uint32_t r = 0; u32 r = 0;
uint32_t p1 = 0; u32 p1 = 0;
uint32_t p2 = 0; u32 p2 = 0;
uint32_t p3 = 0; u32 p3 = 0;
switch ((char) get_random_num (0, 9)) switch ((char) get_random_num (0, 9))
{ {
@ -795,25 +795,25 @@ int apply_rule_cpu (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, c
case RULE_OP_MANGLE_CHR_SHIFTL: case RULE_OP_MANGLE_CHR_SHIFTL:
NEXT_RULEPOS (rule_pos); NEXT_RULEPOS (rule_pos);
NEXT_RPTOI (rule, rule_pos, upos); NEXT_RPTOI (rule, rule_pos, upos);
mangle_chr_shiftl ((uint8_t *) out, out_len, upos); mangle_chr_shiftl ((u8 *) out, out_len, upos);
break; break;
case RULE_OP_MANGLE_CHR_SHIFTR: case RULE_OP_MANGLE_CHR_SHIFTR:
NEXT_RULEPOS (rule_pos); NEXT_RULEPOS (rule_pos);
NEXT_RPTOI (rule, rule_pos, upos); NEXT_RPTOI (rule, rule_pos, upos);
mangle_chr_shiftr ((uint8_t *) out, out_len, upos); mangle_chr_shiftr ((u8 *) out, out_len, upos);
break; break;
case RULE_OP_MANGLE_CHR_INCR: case RULE_OP_MANGLE_CHR_INCR:
NEXT_RULEPOS (rule_pos); NEXT_RULEPOS (rule_pos);
NEXT_RPTOI (rule, rule_pos, upos); NEXT_RPTOI (rule, rule_pos, upos);
mangle_chr_incr ((uint8_t *) out, out_len, upos); mangle_chr_incr ((u8 *) out, out_len, upos);
break; break;
case RULE_OP_MANGLE_CHR_DECR: case RULE_OP_MANGLE_CHR_DECR:
NEXT_RULEPOS (rule_pos); NEXT_RULEPOS (rule_pos);
NEXT_RPTOI (rule, rule_pos, upos); NEXT_RPTOI (rule, rule_pos, upos);
mangle_chr_decr ((uint8_t *) out, out_len, upos); mangle_chr_decr ((u8 *) out, out_len, upos);
break; break;
case RULE_OP_MANGLE_REPLACE_NP1: case RULE_OP_MANGLE_REPLACE_NP1:
@ -929,7 +929,7 @@ int apply_rule_cpu (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, c
return (out_len); return (out_len);
} }
int cpu_rule_to_gpu_rule (char rule_buf[BUFSIZ], uint rule_len, gpu_rule_t *rule) int cpu_rule_to_kernel_rule (char rule_buf[BUFSIZ], uint rule_len, kernel_rule_t *rule)
{ {
uint rule_pos; uint rule_pos;
uint rule_cnt; uint rule_cnt;

View File

@ -6,10 +6,7 @@
#ifndef CPU_RULES_H #ifndef CPU_RULES_H
#define CPU_RULES_H #define CPU_RULES_H
#include <stdio.h> #include <common.h>
#include <stdlib.h>
#include <inttypes.h>
#include <string.h>
#include "rp_cpu.h" #include "rp_cpu.h"
#define BLOCK_SIZE 64 #define BLOCK_SIZE 64
@ -17,13 +14,11 @@
#define RP_RULE_BUFSIZ 0x100 #define RP_RULE_BUFSIZ 0x100
#define RULE_RC_SYNTAX_ERROR -1 #define RULE_RC_SYNTAX_ERROR -1
typedef unsigned int uint;
typedef struct typedef struct
{ {
uint cmds[256]; uint cmds[256];
} gpu_rule_t; } kernel_rule_t;
int mangle_lrest (char arr[BLOCK_SIZE], int arr_len); int mangle_lrest (char arr[BLOCK_SIZE], int arr_len);
int mangle_urest (char arr[BLOCK_SIZE], int arr_len); int mangle_urest (char arr[BLOCK_SIZE], int arr_len);
@ -51,26 +46,25 @@ int mangle_dupechar_at (char arr[BLOCK_SIZE], int arr_len, int upos, int ulen);
int mangle_dupechar (char arr[BLOCK_SIZE], int arr_len); int mangle_dupechar (char arr[BLOCK_SIZE], int arr_len);
int mangle_switch_at_check (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2); int mangle_switch_at_check (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2); int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
int mangle_chr_shiftl (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_shiftl (u8 arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_shiftr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_shiftr (u8 arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_incr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_incr (u8 arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_chr_decr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos); int mangle_chr_decr (u8 arr[BLOCK_SIZE], int arr_len, int upos);
int mangle_title (char arr[BLOCK_SIZE], int arr_len); int mangle_title (char arr[BLOCK_SIZE], int arr_len);
int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], uint32_t rp_gen_func_min, uint32_t rp_gen_func_max); int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], u32 rp_gen_func_min, u32 rp_gen_func_max);
int apply_rule_cpu (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]); int apply_rule_cpu (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]);
int cpu_rule_to_gpu_rule (char rule_buf[BUFSIZ], uint rule_len, gpu_rule_t *rule); int cpu_rule_to_kernel_rule (char rule_buf[BUFSIZ], uint rule_len, kernel_rule_t *rule);
typedef int bool;
bool class_num (char c); bool class_num (char c);
bool class_lower (char c); bool class_lower (char c);
bool class_upper (char c); bool class_upper (char c);
bool class_alpha (char c); bool class_alpha (char c);
char conv_ctoi (char c); char conv_ctoi (char c);
char conv_itoc (char c); char conv_itoc (char c);
uint get_random_num (uint min, uint max); uint get_random_num (uint min, uint max);
void gen_cmask (const uint8_t *word, uint8_t *cmask, const uint len); void gen_cmask (const u8 *word, u8 *cmask, const uint len);
#endif #endif

View File

@ -3,10 +3,7 @@
* License.....: MIT * License.....: MIT
*/ */
#include <stdlib.h> #include <common.h>
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#define RULES_PER_PLAIN_MIN 1 #define RULES_PER_PLAIN_MIN 1
#define RULES_PER_PLAIN_MAX 99 #define RULES_PER_PLAIN_MAX 99
@ -18,13 +15,13 @@
int max_len = 0; int max_len = 0;
#include "cpu_rules.h" #include "cpu_rules.h"
#include "rp_gpu_on_cpu.h" #include "rp_kernel_on_cpu.h"
void print_plain (char *plain, int plain_len) void print_plain (char *plain, int plain_len)
{ {
int need_hexifly = 0; int need_hexifly = 0;
unsigned char *plain_ptr = (unsigned char*) plain; u8 *plain_ptr = (u8*) plain;
int k; int k;
@ -124,11 +121,11 @@ int main (int argc, char **argv)
rule_len = strlen (rule_buf); rule_len = strlen (rule_buf);
} }
gpu_rule_t gpu_rule_buf; kernel_rule_t kernel_rule_buf;
memset (&gpu_rule_buf, 0, sizeof (gpu_rule_t)); memset (&kernel_rule_buf, 0, sizeof (kernel_rule_t));
if (cpu_rule_to_gpu_rule (rule_buf, rule_len, &gpu_rule_buf) == -1) continue; if (cpu_rule_to_kernel_rule (rule_buf, rule_len, &kernel_rule_buf) == -1) continue;
// cpu // cpu
char rule_buf_cpu[BLOCK_SIZE]; char rule_buf_cpu[BLOCK_SIZE];
@ -142,15 +139,15 @@ int main (int argc, char **argv)
if (max_len >= 32) continue; if (max_len >= 32) continue;
// gpu // gpu
char rule_buf_gpu[BLOCK_SIZE]; char rule_buf_kernel[BLOCK_SIZE];
memset (rule_buf_gpu, 0, sizeof (rule_buf_gpu)); memset (rule_buf_kernel, 0, sizeof (rule_buf_kernel));
memcpy (rule_buf_gpu, line_buf, line_len); memcpy (rule_buf_kernel, line_buf, line_len);
uint32_t *plain_ptr = (uint32_t *) rule_buf_gpu; u32 *plain_ptr = (u32 *) rule_buf_kernel;
int out_len_gpu = apply_rules (gpu_rule_buf.cmds, &plain_ptr[0], &plain_ptr[4], line_len); int out_len_kernel = apply_rules (kernel_rule_buf.cmds, &plain_ptr[0], &plain_ptr[4], line_len);
/* /*
* compare * compare
@ -160,9 +157,9 @@ int main (int argc, char **argv)
{ {
int failed = 1; int failed = 1;
if (out_len_gpu == out_len_cpu) if (out_len_kernel == out_len_cpu)
{ {
if (memcmp (rule_buf_gpu, rule_buf_cpu, out_len_gpu) == 0) if (memcmp (rule_buf_kernel, rule_buf_cpu, out_len_kernel) == 0)
{ {
failed = 0; failed = 0;
} }
@ -197,9 +194,9 @@ int main (int argc, char **argv)
printf (" %i vs ", out_len_cpu); printf (" %i vs ", out_len_cpu);
// modified by gpu // modified by gpu
print_plain (rule_buf_gpu, out_len_gpu); print_plain (rule_buf_kernel, out_len_kernel);
printf (" %i\n", out_len_gpu); printf (" %i\n", out_len_kernel);
} }
} }
} }