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

📄 options.c

📁 UNIX、linux密码的破密程序源代码实现
💻 C
字号:
/* * This file is part of John the Ripper password cracker, * Copyright (c) 1996-2005 by Solar Designer */#include <stdio.h>#include <stdlib.h>#include <string.h>#include "arch.h"#include "misc.h"#include "params.h"#include "memory.h"#include "list.h"#include "loader.h"#include "logger.h"#include "status.h"#include "recovery.h"#include "options.h"struct options_main options;static struct opt_entry opt_list[] = {	{"", FLG_PASSWD, 0, 0, 0, OPT_FMT_ADD_LIST, &options.passwd},	{"single", FLG_SINGLE_SET, FLG_CRACKING_CHK},	{"wordlist", FLG_WORDLIST_SET, FLG_CRACKING_CHK,		0, OPT_REQ_PARAM, OPT_FMT_STR_ALLOC, &options.wordlist},	{"stdin", FLG_STDIN_SET, FLG_CRACKING_CHK},	{"rules", FLG_RULES, FLG_RULES, FLG_WORDLIST_CHK, FLG_STDIN_CHK},	{"incremental", FLG_INC_SET, FLG_CRACKING_CHK,		0, 0, OPT_FMT_STR_ALLOC, &options.charset},	{"external", FLG_EXTERNAL_SET, FLG_EXTERNAL_CHK,		0, OPT_REQ_PARAM, OPT_FMT_STR_ALLOC, &options.external},	{"stdout", FLG_STDOUT, FLG_STDOUT,		FLG_CRACKING_SUP, FLG_SINGLE_CHK | FLG_BATCH_CHK,		"%u", &options.length},	{"restore", FLG_RESTORE_SET, FLG_RESTORE_CHK,		0, ~FLG_RESTORE_SET & ~OPT_REQ_PARAM,		OPT_FMT_STR_ALLOC, &options.session},	{"session", FLG_SESSION, FLG_SESSION,		FLG_CRACKING_SUP, OPT_REQ_PARAM,		OPT_FMT_STR_ALLOC, &options.session},	{"status", FLG_STATUS_SET, FLG_STATUS_CHK,		0, ~FLG_STATUS_SET & ~OPT_REQ_PARAM,		OPT_FMT_STR_ALLOC, &options.session},	{"make-charset", FLG_MAKECHR_SET, FLG_MAKECHR_CHK,		0, FLG_CRACKING_CHK | FLG_SESSION | OPT_REQ_PARAM,		OPT_FMT_STR_ALLOC, &options.charset},	{"show", FLG_SHOW_SET, FLG_SHOW_CHK,		0, FLG_CRACKING_SUP | FLG_MAKECHR_CHK},	{"test", FLG_TEST_SET, FLG_TEST_CHK,		0, ~FLG_TEST_SET & ~FLG_FORMAT & ~FLG_SAVEMEM &		~OPT_REQ_PARAM},	{"users", FLG_NONE, 0, FLG_PASSWD, OPT_REQ_PARAM,		OPT_FMT_ADD_LIST_MULTI, &options.loader.users},	{"groups", FLG_NONE, 0, FLG_PASSWD, OPT_REQ_PARAM,		OPT_FMT_ADD_LIST_MULTI, &options.loader.groups},	{"shells", FLG_NONE, 0, FLG_PASSWD, OPT_REQ_PARAM,		OPT_FMT_ADD_LIST_MULTI, &options.loader.shells},	{"salts", FLG_SALTS, FLG_SALTS, FLG_PASSWD, OPT_REQ_PARAM,		"%d", &options.loader.min_pps},	{"format", FLG_FORMAT, FLG_FORMAT,		FLG_CRACKING_SUP,		FLG_MAKECHR_CHK | FLG_STDOUT | OPT_REQ_PARAM,		OPT_FMT_STR_ALLOC, &options.format},	{"save-memory", FLG_SAVEMEM, FLG_SAVEMEM, 0, OPT_REQ_PARAM,		"%u", &mem_saving_level},	{NULL}};#if DES_BS/* nonstd.c, sboxes.c, and parts of x86-mmx.S aren't mine */#define JOHN_COPYRIGHT \	"Solar Designer and others"#else#define JOHN_COPYRIGHT \	"Solar Designer"#endif#define JOHN_USAGE \"John the Ripper password cracker, version " JOHN_VERSION "\n" \"Copyright (c) 1996-2005 by " JOHN_COPYRIGHT "\n" \"Homepage: http://www.openwall.com/john/\n" \"\n" \"Usage: %s [OPTIONS] [PASSWORD-FILES]\n" \"--single                   \"single crack\" mode\n" \"--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin\n" \"--rules                    enable word mangling rules for wordlist mode\n" \"--incremental[=MODE]       \"incremental\" mode [using section MODE]\n" \"--external=MODE            external mode or word filter\n" \"--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]\n" \"--restore[=NAME]           restore an interrupted session [called NAME]\n" \"--session=NAME             give a new session the NAME\n" \"--status[=NAME]            print status of a session [called NAME]\n" \"--make-charset=FILE        make a charset, FILE will be overwritten\n" \"--show                     show cracked passwords\n" \"--test                     perform a benchmark\n" \"--users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only\n" \"--groups=[-]GID[,..]       load users [not] of this (these) group(s) only\n" \"--shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only\n" \"--salts=[-]COUNT           load salts with[out] at least COUNT passwords " \	"only\n" \"--format=NAME              force ciphertext format NAME: " \	"DES/BSDI/MD5/BF/AFS/LM\n" \"--save-memory=LEVEL        enable memory saving, at LEVEL 1..3\n"void opt_init(int argc, char **argv){	if (!argv[0]) error();	if (!argv[1]) {		printf(JOHN_USAGE, argv[0]);		exit(0);	}	memset(&options, 0, sizeof(options));	list_init(&options.passwd);	options.loader.flags = DB_LOGIN;	list_init(&options.loader.users);	list_init(&options.loader.groups);	list_init(&options.loader.shells);	options.length = -1;	opt_process(opt_list, &options.flags, argv);	if ((options.flags &	    (FLG_EXTERNAL_CHK | FLG_CRACKING_CHK | FLG_MAKECHR_CHK)) ==	    FLG_EXTERNAL_CHK)		options.flags |= FLG_CRACKING_SET;	if (!(options.flags & FLG_ACTION))		options.flags |= FLG_BATCH_SET;	opt_check(opt_list, options.flags, argv);	if (options.session)		rec_name = options.session;	if (options.flags & FLG_RESTORE_CHK) {		rec_restore_args(1);		return;	}	if (options.flags & FLG_STATUS_CHK) {		rec_restore_args(0);		options.flags |= FLG_STATUS_SET;		status_init(NULL, 1);		status_print();		exit(0);	}	if (options.flags & FLG_SALTS)	if (options.loader.min_pps < 0) {		options.loader.max_pps = -1 - options.loader.min_pps;		options.loader.min_pps = 0;	}	if (options.length < 0)		options.length = PLAINTEXT_BUFFER_SIZE - 3;	else	if (options.length < 1 || options.length > PLAINTEXT_BUFFER_SIZE - 3) {		fprintf(stderr, "Invalid plaintext length requested\n");		error();	}	if (options.flags & FLG_STDOUT) options.flags &= ~FLG_PWD_REQ;	if ((options.flags & (FLG_PASSWD | FLG_PWD_REQ)) == FLG_PWD_REQ) {		fprintf(stderr, "Password files required, "			"but none specified\n");		error();	}	if ((options.flags & (FLG_PASSWD | FLG_PWD_SUP)) == FLG_PASSWD) {		fprintf(stderr, "Password files specified, "			"but no option would use them\n");		error();	}	rec_argc = argc; rec_argv = argv;	rec_check = 0;}

⌨️ 快捷键说明

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