2 * Author......: Jens Steube <jens.steube@gmail.com>
11 #define RULES_PER_PLAIN_MIN 1
12 #define RULES_PER_PLAIN_MAX 99
13 #define RP_GEN_FUNC_MIN 1
14 #define RP_GEN_FUNC_MAX 4
16 #define LINE_SIG_LEN RP_GEN_FUNC_MAX * 2 + 1
20 #include "cpu_rules.h"
21 #include "rp_gpu_on_cpu.h"
23 void print_plain (char *plain
, int plain_len
)
27 unsigned char *plain_ptr
= (unsigned char*) plain
;
31 for (k
= 0; k
< plain_len
; k
++)
33 if ((plain_ptr
[k
] < 0x20) || (plain_ptr
[k
] > 0x7f))
45 for (k
= 0; k
< plain_len
; k
++)
47 printf ("%02x", plain_ptr
[k
]);
54 for (k
= 0; k
< plain_len
; k
++)
56 printf ("%c", plain_ptr
[k
]);
61 int main (int argc
, char **argv
)
65 char rule_buf
[BUFSIZ
];
67 int rp_gen_func_min
= RP_GEN_FUNC_MIN
;
68 int rp_gen_func_max
= RP_GEN_FUNC_MAX
;
78 char line_buf
[BUFSIZ
+ 1];
80 char *line_ptr
= fgets (line_buf
, BUFSIZ
, fp
);
82 if (line_ptr
== NULL
) continue;
84 int line_len
= strlen (line_ptr
);
88 if (line_len
< 0) continue;
89 if (line_len
> PW_MAX
) continue;
91 memset (line_ptr
+ line_len
, 0, PW_MAX
- line_len
);
94 * generate random rule and apply it afterwards
101 max
= get_random_num (RULES_PER_PLAIN_MIN
, RULES_PER_PLAIN_MAX
);
110 for (i
= 0; i
< max
; i
++)
114 memset (rule_buf
, 0, BLOCK_SIZE
);
118 rule_len
= (int) generate_random_rule (rule_buf
, rp_gen_func_min
, rp_gen_func_max
);
122 strncpy (rule_buf
, argv
[1], BUFSIZ
);
124 rule_len
= strlen (rule_buf
);
127 gpu_rule_t gpu_rule_buf
;
129 memset (&gpu_rule_buf
, 0, sizeof (gpu_rule_t
));
131 if (cpu_rule_to_gpu_rule (rule_buf
, rule_len
, &gpu_rule_buf
) == -1) continue;
134 char rule_buf_cpu
[BLOCK_SIZE
];
136 memset (rule_buf_cpu
, 0, BLOCK_SIZE
);
140 int out_len_cpu
= apply_rule_cpu (rule_buf
, rule_len
, line_ptr
, line_len
, rule_buf_cpu
);
142 if (max_len
>= 32) continue;
145 char rule_buf_gpu
[BLOCK_SIZE
];
147 memset (rule_buf_gpu
, 0, sizeof (rule_buf_gpu
));
149 memcpy (rule_buf_gpu
, line_buf
, line_len
);
151 uint32_t *plain_ptr
= (uint32_t *) rule_buf_gpu
;
153 int out_len_gpu
= apply_rules (gpu_rule_buf
.cmds
, &plain_ptr
[0], &plain_ptr
[4], line_len
);
159 if (out_len_cpu
>= 0 && out_len_cpu
< 32)
163 if (out_len_gpu
== out_len_cpu
)
165 if (memcmp (rule_buf_gpu
, rule_buf_cpu
, out_len_gpu
) == 0)
177 printf ("Rule: %s", rule_buf
);
180 int spaces
= LINE_SIG_LEN
- rule_len
;
182 if (rule_len
> 10) spaces
++;
183 if (rule_len
> 100) spaces
++;
185 while (spaces
--) printf (".");
190 print_plain (line_buf
, line_len
);
192 printf (" %i => ", line_len
);
195 print_plain (rule_buf_cpu
, out_len_cpu
);
197 printf (" %i vs ", out_len_cpu
);
200 print_plain (rule_buf_gpu
, out_len_gpu
);
202 printf (" %i\n", out_len_gpu
);