updated rp_gpu_on_cpu rules test script, we do not need the cpp extension anymore
[hashcat.git] / tools / rules_test / cpu_rules.h
1 /**
2 * Author......: Jens Steube <jens.steube@gmail.com>
3 * License.....: MIT
4 */
5
6 #ifndef CPU_RULES_H
7 #define CPU_RULES_H
8
9 #include <stdio.h>
10 #include <stdlib.h>
11 #include <inttypes.h>
12 #include <string.h>
13 #include "rp_cpu.h"
14
15 #define BLOCK_SIZE 64
16 #define RULE_RC_REJECT_ERROR -2
17 #define RP_RULE_BUFSIZ 0x100
18 #define RULE_RC_SYNTAX_ERROR -1
19
20 typedef unsigned int uint;
21
22 typedef struct
23 {
24 uint cmds[256];
25
26 } gpu_rule_t;
27
28 int mangle_lrest (char arr[BLOCK_SIZE], int arr_len);
29 int mangle_urest (char arr[BLOCK_SIZE], int arr_len);
30 int mangle_trest (char arr[BLOCK_SIZE], int arr_len);
31 int mangle_reverse (char arr[BLOCK_SIZE], int arr_len);
32 int mangle_double (char arr[BLOCK_SIZE], int arr_len);
33 int mangle_double_times (char arr[BLOCK_SIZE], int arr_len, int times);
34 int mangle_reflect (char arr[BLOCK_SIZE], int arr_len);
35 int mangle_rotate_left (char arr[BLOCK_SIZE], int arr_len);
36 int mangle_rotate_right (char arr[BLOCK_SIZE], int arr_len);
37 int mangle_append (char arr[BLOCK_SIZE], int arr_len, char c);
38 int mangle_prepend (char arr[BLOCK_SIZE], int arr_len, char c);
39 int mangle_delete_at (char arr[BLOCK_SIZE], int arr_len, int upos);
40 int mangle_extract (char arr[BLOCK_SIZE], int arr_len, int upos, int ulen);
41 int mangle_omit (char arr[BLOCK_SIZE], int arr_len, int upos, int ulen);
42 int mangle_insert (char arr[BLOCK_SIZE], int arr_len, int upos, char c);
43 int mangle_insert_multi (char arr[BLOCK_SIZE], int arr_len, int arr_pos, char arr2[BLOCK_SIZE], int arr2_len, int arr2_pos, int arr2_cpy);
44 int mangle_overstrike (char arr[BLOCK_SIZE], int arr_len, int upos, char c);
45 int mangle_truncate_at (char arr[BLOCK_SIZE], int arr_len, int upos);
46 int mangle_replace (char arr[BLOCK_SIZE], int arr_len, char oldc, char newc);
47 int mangle_purgechar (char arr[BLOCK_SIZE], int arr_len, char c);
48 int mangle_dupeblock_prepend (char arr[BLOCK_SIZE], int arr_len, int ulen);
49 int mangle_dupeblock_append (char arr[BLOCK_SIZE], int arr_len, int ulen);
50 int mangle_dupechar_at (char arr[BLOCK_SIZE], int arr_len, int upos, int ulen);
51 int mangle_dupechar (char arr[BLOCK_SIZE], int arr_len);
52 int mangle_switch_at_check (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
53 int mangle_switch_at (char arr[BLOCK_SIZE], int arr_len, int upos, int upos2);
54 int mangle_chr_shiftl (uint8_t arr[BLOCK_SIZE], int arr_len, int upos);
55 int mangle_chr_shiftr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos);
56 int mangle_chr_incr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos);
57 int mangle_chr_decr (uint8_t arr[BLOCK_SIZE], int arr_len, int upos);
58 int mangle_title (char arr[BLOCK_SIZE], int arr_len);
59 int generate_random_rule (char rule_buf[RP_RULE_BUFSIZ], uint32_t rp_gen_func_min, uint32_t rp_gen_func_max);
60 int apply_rule_cpu (char *rule, int rule_len, char in[BLOCK_SIZE], int in_len, char out[BLOCK_SIZE]);
61 int cpu_rule_to_gpu_rule (char rule_buf[BUFSIZ], uint rule_len, gpu_rule_t *rule);
62
63 typedef int bool;
64
65 bool class_num (char c);
66 bool class_lower (char c);
67 bool class_upper (char c);
68 bool class_alpha (char c);
69 char conv_ctoi (char c);
70 char conv_itoc (char c);
71
72 uint get_random_num (uint min, uint max);
73
74 void gen_cmask (const uint8_t *word, uint8_t *cmask, const uint len);
75
76 #endif