只有这一行最重要,前边都是和OpenCL的交互等。
rc_final = hashcat_session_execute (hashcat_ctx);
在这里学到的新东西是 __attribute__,https://blog.csdn.net/guozhiyingguo/article/details/53079154
是GNU里特有的,检查一下有没有什么输入错误啥的,还能精简函数篇幅,挺有用。下面开始正文:
1.开始日志文件输入
第一行是开始时间计时
第二行就是把秒和微秒输入到topid中
第三行就是检查一下往日志文件hashcat.log里输出的“START”对不对,如果不对,就要输出警告。
// start logfile entry
const time_t proc_start = time (NULL);
logfile_generate_topid (hashcat_ctx);
logfile_top_msg ("START");
可以看看hashcat.log文件里的输出,看到START了吧~
下面是一样的,就是user_options的具体值,都记录在上面的文档中了。
// add all user options to logfile in case we want to debug some user session
user_options_logger (hashcat_ctx);
2.dictstat_read
// read dictionary cache
dictstat_read (hashcat_ctx);
这个在dictstat.c文件里,根据1.2节的代码,可以知道读取的是hashcat.dictstat2这个文件。
文件第一个宽字符通过一个函数读取并转为Base64编码,测试了一下,读出来的v 值是0x6863646963743201
#include <stdio.h>
#include <stdint.h>
typedef uint64_t u64;
u64 byte_swap_64 (const u64 n)
{
return __builtin_bswap64 (n);
}
int main(void) {
u64 v;
FILE *fp = fopen ("hashcat.dictstat2", "rb");
fread (&v, size