⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bf_fmt.c

📁 unix密码破解软件John the Ripper
💻 C
字号:
/* * This file is part of John the Ripper password cracker, * Copyright (c) 1996-98 by Solar Designer */#include <stdlib.h>#include <string.h>#include "arch.h"#include "misc.h"#include "BF_std.h"#include "common.h"#include "formats.h"#define FORMAT_LABEL			"bf"#define FORMAT_NAME			"OpenBSD Blowfish"#define BENCHMARK_COMMENT		" (x32)"#define BENCHMARK_LENGTH		-1#define PLAINTEXT_LENGTH		72#define CIPHERTEXT_LENGTH		60#define BINARY_SIZE			4#define SALT_SIZE			20#define MIN_KEYS_PER_CRYPT		1#define MAX_KEYS_PER_CRYPT		1static struct fmt_tests tests[] = {	{"$2a$05$CCCCCCCCCCCCCCCCCCCCC.E5YPO9kmyuRGyh0XouQYb4YMJKvyOeW",		"U*U"},	{"$2a$05$CCCCCCCCCCCCCCCCCCCCC.VGOzA784oUp/Z0DY336zx7pLYAy0lwK",		"U*U*"},	{"$2a$05$XXXXXXXXXXXXXXXXXXXXXOAcXxm9kjPGEMsLznoKqmqw7tc8WCx4a",		"U*U*U"},	{"$2a$05$CCCCCCCCCCCCCCCCCCCCC.7uG0VCzI2bS7j6ymqJi9CdcdxiRTWNy",		""},	{"$2a$05$abcdefghijklmnopqrstuu5s2v8.iXieOjg/.AySBTTZIIVFJeBui",		"0123456789abcdefghijklmnopqrstuvwxyz"		"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"},	{NULL}};static char saved_key[PLAINTEXT_LENGTH + 1];static BF_salt saved_salt;static int valid(char *ciphertext){	int rounds;	char *pos;	if (strncmp(ciphertext, "$2a$", 4)) return 0;	if (ciphertext[4] < '0' || ciphertext[4] > '9') return 0;	if (ciphertext[5] < '0' || ciphertext[5] > '9') return 0;	rounds = atoi(ciphertext + 4);	if (rounds < 4 || rounds > 31) return 0;	if (ciphertext[6] != '$') return 0;	for (pos = &ciphertext[7]; atoi64[(ARCH_INDEX)*pos] != 0x7F; pos++);	if (*pos || pos - ciphertext != CIPHERTEXT_LENGTH) return 0;	return 1;}static int binary_hash_0(void *binary){	return *(BF_word *)binary & 0xF;}static int binary_hash_1(void *binary){	return *(BF_word *)binary & 0xFF;}static int binary_hash_2(void *binary){	return *(BF_word *)binary & 0xFFF;}static int get_hash_0(int index){	return BF_out[0] & 0xF;}static int get_hash_1(int index){	return BF_out[0] & 0xFF;}static int get_hash_2(int index){	return BF_out[0] & 0xFFF;}static int salt_hash(void *salt){	return *(BF_word *)salt & 0x3FF;}static void set_salt(void *salt){	memcpy(saved_salt, salt, sizeof(saved_salt));}static void set_key(char *key, int index){	BF_std_set_key(key);	strnfcpy(saved_key, key, PLAINTEXT_LENGTH);}static char *get_key(int index){	saved_key[PLAINTEXT_LENGTH] = 0;	return saved_key;}static void crypt_all(int count){	BF_std_crypt(saved_salt);}static int cmp_all(void *binary, int index){	return *(BF_word *)binary == BF_out[0];}static int cmp_exact(char *source, int index){	BF_std_crypt_exact();	return !memcmp(BF_std_get_binary(source), BF_out, sizeof(BF_binary));}struct fmt_main fmt_BF = {	{		FORMAT_LABEL,		FORMAT_NAME,		BF_ALGORITHM_NAME,		BENCHMARK_COMMENT,		BENCHMARK_LENGTH,		PLAINTEXT_LENGTH,		BINARY_SIZE,		SALT_SIZE,		MIN_KEYS_PER_CRYPT,		MAX_KEYS_PER_CRYPT,		FMT_CASE | FMT_8_BIT,		tests	}, {		BF_std_init,		valid,		fmt_default_split,		(void *(*)(char *))BF_std_get_binary,		(void *(*)(char *))BF_std_get_salt,		{			binary_hash_0,			binary_hash_1,			binary_hash_2		},		salt_hash,		set_salt,		set_key,		get_key,		crypt_all,		{			get_hash_0,			get_hash_1,			get_hash_2		},		cmp_all,		cmp_all,		cmp_exact	}};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -