Initial commit
[hashcat.git] / include / rp_cpu.h
1 /**
2 * Author......: Jens Steube <jens.steube@gmail.com>
3 * License.....: MIT
4 */
5
6 #define RP_RULE_BUFSIZ 0x100
7
8 #define RULE_RC_SYNTAX_ERROR -1
9 #define RULE_RC_REJECT_ERROR -2
10
11 #define RULE_OP_MANGLE_NOOP ':'
12 #define RULE_OP_MANGLE_LREST 'l'
13 #define RULE_OP_MANGLE_UREST 'u'
14 #define RULE_OP_MANGLE_LREST_UFIRST 'c'
15 #define RULE_OP_MANGLE_UREST_LFIRST 'C'
16 #define RULE_OP_MANGLE_TREST 't'
17 #define RULE_OP_MANGLE_TOGGLE_AT 'T'
18 #define RULE_OP_MANGLE_REVERSE 'r'
19 #define RULE_OP_MANGLE_DUPEWORD 'd'
20 #define RULE_OP_MANGLE_DUPEWORD_TIMES 'p'
21 #define RULE_OP_MANGLE_REFLECT 'f'
22 #define RULE_OP_MANGLE_ROTATE_LEFT '{'
23 #define RULE_OP_MANGLE_ROTATE_RIGHT '}'
24 #define RULE_OP_MANGLE_APPEND '$'
25 #define RULE_OP_MANGLE_PREPEND '^'
26 #define RULE_OP_MANGLE_DELETE_FIRST '['
27 #define RULE_OP_MANGLE_DELETE_LAST ']'
28 #define RULE_OP_MANGLE_DELETE_AT 'D'
29 #define RULE_OP_MANGLE_EXTRACT 'x'
30 #define RULE_OP_MANGLE_OMIT 'O'
31 #define RULE_OP_MANGLE_INSERT 'i'
32 #define RULE_OP_MANGLE_OVERSTRIKE 'o'
33 #define RULE_OP_MANGLE_TRUNCATE_AT '\''
34 #define RULE_OP_MANGLE_REPLACE 's'
35 #define RULE_OP_MANGLE_PURGECHAR '@'
36 #define RULE_OP_MANGLE_TOGGLECASE_REC 'a'
37 #define RULE_OP_MANGLE_DUPECHAR_FIRST 'z'
38 #define RULE_OP_MANGLE_DUPECHAR_LAST 'Z'
39 #define RULE_OP_MANGLE_DUPECHAR_ALL 'q'
40 #define RULE_OP_MANGLE_EXTRACT_MEMORY 'X'
41 #define RULE_OP_MANGLE_APPEND_MEMORY '4'
42 #define RULE_OP_MANGLE_PREPEND_MEMORY '6'
43
44 #define RULE_OP_MEMORIZE_WORD 'M'
45
46 #define RULE_OP_REJECT_LESS '<'
47 #define RULE_OP_REJECT_GREATER '>'
48 #define RULE_OP_REJECT_CONTAIN '!'
49 #define RULE_OP_REJECT_NOT_CONTAIN '/'
50 #define RULE_OP_REJECT_EQUAL_FIRST '('
51 #define RULE_OP_REJECT_EQUAL_LAST ')'
52 #define RULE_OP_REJECT_EQUAL_AT '='
53 #define RULE_OP_REJECT_CONTAINS '%'
54 #define RULE_OP_REJECT_MEMORY 'Q'
55
56 /* hashcat only */
57 #define RULE_OP_MANGLE_SWITCH_FIRST 'k'
58 #define RULE_OP_MANGLE_SWITCH_LAST 'K'
59 #define RULE_OP_MANGLE_SWITCH_AT '*'
60 #define RULE_OP_MANGLE_CHR_SHIFTL 'L'
61 #define RULE_OP_MANGLE_CHR_SHIFTR 'R'
62 #define RULE_OP_MANGLE_CHR_INCR '+'
63 #define RULE_OP_MANGLE_CHR_DECR '-'
64 #define RULE_OP_MANGLE_REPLACE_NP1 '.'
65 #define RULE_OP_MANGLE_REPLACE_NM1 ','
66 #define RULE_OP_MANGLE_DUPEBLOCK_FIRST 'y'
67 #define RULE_OP_MANGLE_DUPEBLOCK_LAST 'Y'
68 #define RULE_OP_MANGLE_TITLE 'E'
69
70 static const char grp_op_nop[] =
71 {
72 RULE_OP_MANGLE_LREST,
73 RULE_OP_MANGLE_UREST,
74 RULE_OP_MANGLE_LREST_UFIRST,
75 RULE_OP_MANGLE_UREST_LFIRST,
76 RULE_OP_MANGLE_TREST,
77 RULE_OP_MANGLE_REVERSE,
78 RULE_OP_MANGLE_DUPEWORD,
79 RULE_OP_MANGLE_REFLECT,
80 RULE_OP_MANGLE_DELETE_FIRST,
81 RULE_OP_MANGLE_DELETE_LAST,
82 RULE_OP_MANGLE_ROTATE_LEFT,
83 RULE_OP_MANGLE_ROTATE_RIGHT,
84 RULE_OP_MANGLE_SWITCH_FIRST,
85 RULE_OP_MANGLE_SWITCH_LAST,
86 RULE_OP_MANGLE_DUPECHAR_ALL,
87 RULE_OP_MANGLE_TITLE,
88 RULE_OP_MANGLE_APPEND_MEMORY,
89 RULE_OP_MANGLE_PREPEND_MEMORY,
90 };
91
92 static const char grp_op_pos_p0[] =
93 {
94 RULE_OP_MANGLE_TOGGLE_AT,
95 RULE_OP_MANGLE_DELETE_AT,
96 RULE_OP_MANGLE_TRUNCATE_AT,
97 RULE_OP_MANGLE_CHR_INCR,
98 RULE_OP_MANGLE_CHR_DECR,
99 RULE_OP_MANGLE_CHR_SHIFTL,
100 RULE_OP_MANGLE_CHR_SHIFTR,
101 RULE_OP_MANGLE_REPLACE_NP1,
102 RULE_OP_MANGLE_REPLACE_NM1
103 };
104
105 static const char grp_op_pos_p1[] =
106 {
107 RULE_OP_MANGLE_DUPEWORD_TIMES,
108 RULE_OP_MANGLE_DUPECHAR_FIRST,
109 RULE_OP_MANGLE_DUPECHAR_LAST,
110 RULE_OP_MANGLE_DUPEBLOCK_FIRST,
111 RULE_OP_MANGLE_DUPEBLOCK_LAST
112 };
113
114 static const char grp_op_chr[] =
115 {
116 RULE_OP_MANGLE_APPEND,
117 RULE_OP_MANGLE_PREPEND,
118 RULE_OP_MANGLE_PURGECHAR
119 };
120
121 static const char grp_op_chr_chr[] =
122 {
123 RULE_OP_MANGLE_REPLACE
124 };
125
126 static const char grp_op_pos_chr[] =
127 {
128 RULE_OP_MANGLE_INSERT,
129 RULE_OP_MANGLE_OVERSTRIKE
130 };
131
132 static const char grp_op_pos_pos0[] =
133 {
134 RULE_OP_MANGLE_SWITCH_AT
135 };
136
137 static const char grp_op_pos_pos1[] =
138 {
139 RULE_OP_MANGLE_EXTRACT,
140 RULE_OP_MANGLE_OMIT
141 };
142
143 static const char grp_op_pos1_pos2_pos3[] =
144 {
145 RULE_OP_MANGLE_EXTRACT_MEMORY
146 };
147
148 static const char grp_pos[] =
149 {
150 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B'
151 };