亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? single.c

?? 著名的解Unix密碼的源程序
?? C
字號:
/* * This file is part of John the Ripper password cracker, * Copyright (c) 1996-98 by Solar Designer */#include <stdio.h>#include <string.h>#include "misc.h"#include "params.h"#include "path.h"#include "memory.h"#include "signals.h"#include "loader.h"#include "recovery.h"#include "rpp.h"#include "rules.h"#include "external.h"#include "cracker.h"static int progress = 0;static int rec_rule;static struct db_main *single_db;static int rule_number, rule_count;static int length, key_count;static struct db_keys *guessed_keys;static struct rpp_context *rule_ctx;static void save_state(FILE *file){	fprintf(file, "%d\n", rec_rule);}static int restore_rule_number(){	if (rule_ctx)	for (rule_number = 0; rule_number < rec_rule; rule_number++)	if (!rpp_next(rule_ctx)) return 1;	return 0;}static int restore_state(FILE *file){	if (fscanf(file, "%d\n", &rec_rule) != 1) return 1;	return restore_rule_number();}static void single_alloc_keys(struct db_keys **keys){	int hash_size = sizeof(struct db_keys_hash) +		sizeof(struct db_keys_hash_entry) * (key_count - 1);	if (!*keys) {		*keys = mem_alloc_tiny(			sizeof(struct db_keys) - 1 + length * key_count,			MEM_ALIGN_WORD);		(*keys)->hash = mem_alloc_tiny(hash_size, MEM_ALIGN_WORD);	}	(*keys)->count = 0;	(*keys)->ptr = (*keys)->buffer;	(*keys)->rule = rule_number;	(*keys)->lock = 0;	memset((*keys)->hash, -1, hash_size);}static void single_init(){	struct db_salt *salt;	progress = 0;	length = single_db->format->params.plaintext_length;	key_count = single_db->format->params.min_keys_per_crypt;	if (key_count < SINGLE_HASH_MIN) key_count = SINGLE_HASH_MIN;	if (rpp_init(rule_ctx, SUBSECTION_SINGLE)) {		fprintf(stderr, "No \"single crack\" mode rules found in %s\n",			path_expand(CFG_NAME));		error();	}	rules_init(length);	rec_rule = rule_number = 0;	rule_count = rules_count(rule_ctx, 0);	rec_restore_mode(restore_state);	rec_init(single_db, save_state);	salt = single_db->salts;	do {		single_alloc_keys(&salt->keys);	} while ((salt = salt->next));	guessed_keys = NULL;	single_alloc_keys(&guessed_keys);	crk_init(single_db, NULL, guessed_keys);}static int single_key_hash(char *key){	int pos, hash = 0;	for (pos = 0; pos < length && *key; pos++) {		hash <<= 1;		hash ^= *key++;	}	hash ^= hash >> SINGLE_HASH_LOG;	hash ^= hash >> (2 * SINGLE_HASH_LOG);	hash &= SINGLE_HASH_SIZE - 1;	return hash;}static int single_add_key(struct db_keys *keys, char *key){	int index, hash;	struct db_keys_hash_entry *entry;	if ((index = keys->hash->hash[single_key_hash(key)]) >= 0)	do {		entry = &keys->hash->list[index];		if (!strncmp(key, &keys->buffer[entry->offset], length))			return 0;	} while ((index = entry->next) >= 0);	index = keys->hash->hash[hash = single_key_hash(keys->ptr)];	if (index == keys->count)		keys->hash->hash[hash] = keys->hash->list[index].next;	else	if (index >= 0) {		entry = &keys->hash->list[index];		while ((index = entry->next) >= 0) {			if (index == keys->count) {				entry->next = keys->hash->list[index].next;				break;			}			entry = &keys->hash->list[index];		}	}	index = keys->hash->hash[hash = single_key_hash(key)];	entry = &keys->hash->list[keys->count];	entry->next = index;	entry->offset = keys->ptr - keys->buffer;	keys->hash->hash[hash] = keys->count;	strnfcpy(keys->ptr, key, length);	keys->ptr += length;	return ++(keys->count) >= key_count;}static int single_process_buffer(struct db_salt *salt){	struct db_salt *current;	struct db_keys *keys;	size_t size;	if (crk_process_salt(salt)) return 1;	keys = salt->keys;	keys->count = 0;	keys->ptr = keys->buffer;	keys->lock++;	if (guessed_keys->count) {		keys = mem_alloc(size = sizeof(struct db_keys) - 1 +			length * guessed_keys->count);		memcpy(keys, guessed_keys, size);		keys->ptr = keys->buffer;		do {			current = single_db->salts;			do {				if (current == salt) continue;				if (single_add_key(current->keys, keys->ptr))				if (single_process_buffer(current)) return 1;			} while ((current = current->next));			keys->ptr += length;		} while (--keys->count);		mem_free((void **)&keys);	}	keys = salt->keys;	keys->lock--;	if (!keys->count && !keys->lock) keys->rule = rule_number;	return 0;}static int single_process_pw(struct db_salt *salt, struct db_password *pw,	char *rule){	struct db_keys *keys;	struct list_entry *first, *second;	int first_number, second_number;	char pair[RULE_WORD_SIZE];	int split;	char *key;	unsigned int c;	keys = salt->keys;	first_number = 0;	if ((first = pw->words->head))	do {		if ((key = rules_apply(first->data, rule, 0)))		if (ext_filter(key))		if (single_add_key(keys, key))		if (single_process_buffer(salt)) return 1;		if (!salt->list) return 0;		if (++first_number > SINGLE_WORDS_PAIR_MAX) continue;		c = (unsigned int)first->data[0] | 0x20;		if (c < 'a' || c > 'z') continue;		second_number = 0;		second = pw->words->head;		do		if (first != second) {			if ((split = strlen(first->data)) < length) {				strnzcpy(pair, first->data, RULE_WORD_SIZE);				strnzcat(pair, second->data, RULE_WORD_SIZE);				if ((key = rules_apply(pair, rule, split)))				if (ext_filter(key))				if (single_add_key(keys, key))				if (single_process_buffer(salt)) return 1;				if (!salt->list) return 0;			}			if (first->data[1]) {				pair[1] = 0;				strnzcat(pair, second->data, RULE_WORD_SIZE);				if ((key = rules_apply(pair, rule, 1)))				if (ext_filter(key))				if (single_add_key(keys, key))				if (single_process_buffer(salt)) return 1;				if (!salt->list) return 0;			}		} while (++second_number <= SINGLE_WORDS_PAIR_MAX &&			(second = second->next));	} while ((first = first->next));	return 0;}static int single_process_salt(struct db_salt *salt, char *rule){	struct db_keys *keys;	struct db_password *pw;	keys = salt->keys;	pw = salt->list;	do {		if (single_process_pw(salt, pw, rule)) return 1;		if (!salt->list) return 0;	} while ((pw = pw->next));	if (keys->count && rule_number - keys->rule > (key_count << 1))		if (single_process_buffer(salt)) return 1;	if (!keys->count) keys->rule = rule_number;	return 0;}static void single_run(){	char *rule;	struct db_salt *salt;	int min;	while ((rule = rpp_next(rule_ctx))) {		min = rule_number;		salt = single_db->salts;		do {			if (single_process_salt(salt, rule)) return;			if (salt->keys->rule < min) min = salt->keys->rule;		} while ((salt = salt->next));		rec_rule = min;		rule_number++;	}}static void single_done(){	struct db_salt *salt;	if (!event_abort) {		if ((salt = single_db->salts))		do {			if (salt->keys->count)			if (single_process_buffer(salt)) return;		} while ((salt = salt->next));		progress = 100;	}	rec_done(event_abort);}void do_single_crack(struct db_main *db){	struct rpp_context ctx;	single_db = db;	rule_ctx = &ctx;	single_init();	single_run();	single_done();}int get_single_progress(){	if (progress) return progress;	return rule_number * 100 / (rule_count + 1);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99免费精品在线| 久久综合色综合88| 久久日一线二线三线suv| 亚洲欧美日韩综合aⅴ视频| 青草av.久久免费一区| 成人免费黄色大片| 日韩免费看的电影| 一区二区三区不卡视频| 国产成人av网站| 日韩欧美国产综合在线一区二区三区 | 亚洲小说欧美激情另类| 国产精品99久久久久久久vr| 7777精品伊人久久久大香线蕉完整版| 国产精品欧美经典| 国产一区二区成人久久免费影院| 欧美精品在欧美一区二区少妇| 最近日韩中文字幕| 国产91丝袜在线播放0| 日韩美女主播在线视频一区二区三区| 亚洲综合精品自拍| 91在线播放网址| 中文字幕色av一区二区三区| 国产激情精品久久久第一区二区| 日韩欧美国产综合| 久久精品久久综合| 日韩三级在线免费观看| 日本vs亚洲vs韩国一区三区二区 | 久久精品99国产精品日本| 欧美日本一道本| 亚洲国产精品一区二区尤物区| 91麻豆免费看片| 有坂深雪av一区二区精品| 99久久综合99久久综合网站| 国产精品免费av| 成人黄色av网站在线| 国产精品久久久一区麻豆最新章节| 国模无码大尺度一区二区三区| 2023国产精品视频| 国产精品一区二区在线观看网站| 国产丝袜欧美中文另类| 高清不卡一二三区| 亚洲欧美综合网| 欧美性猛交xxxxxxxx| 亚洲电影第三页| 欧美一二三区在线| 加勒比av一区二区| 中文字幕免费不卡| 一本大道久久a久久精二百| 一区二区欧美视频| 69p69国产精品| 韩国精品久久久| 国产日韩精品一区| 欧洲视频一区二区| 蜜桃视频一区二区三区| 国产三级精品在线| 在线观看亚洲a| 日本不卡一二三| 国产欧美一区二区三区在线老狼| av一二三不卡影片| 日韩国产欧美在线播放| 久久亚洲一级片| 91美女片黄在线观看91美女| 亚洲第一激情av| 国产亚洲污的网站| 在线观看亚洲精品视频| 极品尤物av久久免费看| 国产精品九色蝌蚪自拍| 欧美精品高清视频| 丰满白嫩尤物一区二区| 亚洲国产精品影院| 国产亚洲欧美一级| 在线播放一区二区三区| 豆国产96在线|亚洲| 首页欧美精品中文字幕| 日本一区二区三区在线不卡| 欧美日韩综合在线| 国产精品18久久久久久久久| 亚洲成人免费观看| 国产精品传媒入口麻豆| 日韩一区二区免费高清| 99久免费精品视频在线观看| 久久99在线观看| 亚洲一区二区影院| 国产精品水嫩水嫩| 欧美成人女星排名| 欧美日韩精品三区| 成人午夜电影小说| 六月丁香婷婷久久| 亚洲成人av一区| 亚洲人成影院在线观看| 国产日韩一级二级三级| 欧美一区二区三区的| 日本精品裸体写真集在线观看| 国产高清久久久久| 奇米精品一区二区三区在线观看一| 亚洲日本丝袜连裤袜办公室| 久久精品视频在线看| 精品久久人人做人人爱| 欧美一区二区三区四区视频| 欧美三级欧美一级| 欧美在线观看禁18| 91网站最新网址| 99免费精品视频| 成人午夜电影网站| 成人黄色在线网站| 大桥未久av一区二区三区中文| 久久99热国产| 久久99精品久久久久久动态图| 日本伊人午夜精品| 日本大胆欧美人术艺术动态| 五月综合激情日本mⅴ| 亚洲电影在线免费观看| 亚洲一区在线观看网站| 亚洲一区二区三区四区在线免费观看 | 欧美精品乱码久久久久久按摩| 日本高清无吗v一区| 色乱码一区二区三区88| 99精品视频在线免费观看| 91丨九色丨蝌蚪丨老版| 色婷婷av一区二区三区gif| 91网站最新网址| 欧美亚洲日本国产| 欧美视频一区二| 欧美一区二区大片| 欧美www视频| 国产视频一区在线观看| 久久精品视频在线免费观看| 国产精品水嫩水嫩| 一区二区三区四区精品在线视频| 亚洲国产视频网站| 毛片av一区二区三区| 国产伦精品一区二区三区视频青涩 | 全国精品久久少妇| 久久电影国产免费久久电影| 国产一区二区三区av电影| 成人伦理片在线| 在线免费不卡视频| 日韩欧美一区二区三区在线| 久久精品视频免费观看| 《视频一区视频二区| 性欧美疯狂xxxxbbbb| 国产做a爰片久久毛片| 91色porny在线视频| 欧美裸体bbwbbwbbw| 久久奇米777| 亚洲精品成人精品456| 男男gaygay亚洲| eeuss鲁一区二区三区| 欧美视频精品在线观看| 久久婷婷久久一区二区三区| 亚洲视频在线一区观看| 日本视频免费一区| www.亚洲在线| 日韩精品一区二区三区在线观看| 国产精品成人在线观看| 免费观看在线色综合| 色综合天天综合| 欧美va亚洲va香蕉在线| 亚洲精品日韩专区silk| 狠狠色综合日日| 欧美影视一区在线| 欧美激情资源网| 免费人成在线不卡| 色综合久久天天综合网| 久久久久久久综合| 偷拍与自拍一区| 波多野结衣精品在线| 日韩精品最新网址| 亚洲电影中文字幕在线观看| 成人sese在线| 亚洲精品一线二线三线| 亚洲成人动漫精品| 97精品国产97久久久久久久久久久久| 日韩一区二区三区在线| 亚洲主播在线播放| 91在线看国产| 欧美激情综合五月色丁香小说| 卡一卡二国产精品| 精品污污网站免费看| 亚洲欧洲一区二区在线播放| 国产精品一区二区视频| 欧美一区午夜精品| 亚洲成av人片在线| 欧美综合色免费| 亚洲欧美激情小说另类| www.视频一区| 中文字幕欧美激情一区| 国产成人在线观看免费网站| 欧美大白屁股肥臀xxxxxx| 日本不卡123| 欧美一区二区在线免费观看| 五月天久久比比资源色| 欧美色视频在线观看| 一区二区三区不卡视频在线观看| 91女人视频在线观看| 亚洲视频一区二区在线观看| 91视频你懂的| 亚洲欧美日韩国产综合在线| 91麻豆蜜桃一区二区三区| 综合久久国产九一剧情麻豆|