-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathoptions.h
140 lines (122 loc) · 3.83 KB
/
options.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/*
* This file is part of John the Ripper password cracker,
* Copyright (c) 1996-98,2003,2006,2013 by Solar Designer
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted.
*
* There's ABSOLUTELY NO WARRANTY, express or implied.
*/
/*
* John's command line options definition.
*/
#ifndef _JOHN_OPTIONS_H
#define _JOHN_OPTIONS_H
#include "list.h"
#include "loader.h"
#include "getopt.h"
/*
* Option flags bitmasks.
*/
/* An action requested */
#define FLG_ACTION 0x00000001
/* Password files specified */
#define FLG_PASSWD 0x00000002
/* An option supports password files */
#define FLG_PWD_SUP 0x00000004
/* An option requires password files */
#define FLG_PWD_REQ (0x00000008 | FLG_PWD_SUP)
/* Some option that doesn't have its own flag is specified */
#define FLG_NONE 0x00000010
/* A cracking mode enabled */
#define FLG_CRACKING_CHK 0x00000020
#define FLG_CRACKING_SUP 0x00000040
#define FLG_CRACKING_SET \
(FLG_CRACKING_CHK | FLG_CRACKING_SUP | FLG_ACTION | FLG_PWD_REQ)
/* Wordlist mode enabled, options.wordlist is set to the file name or NULL
* if reading from stdin. */
#define FLG_WORDLIST_CHK 0x00000080
#define FLG_WORDLIST_SET (FLG_WORDLIST_CHK | FLG_CRACKING_SET)
/* Wordlist mode enabled, reading from stdin */
#define FLG_STDIN_CHK 0x00000100
#define FLG_STDIN_SET (FLG_STDIN_CHK | FLG_WORDLIST_SET)
/* Wordlist rules enabled */
#define FLG_RULES 0x00000200
/* "Single crack" mode enabled */
#define FLG_SINGLE_CHK 0x00000400
#define FLG_SINGLE_SET (FLG_SINGLE_CHK | FLG_CRACKING_SET)
/* Incremental mode enabled */
#define FLG_INC_CHK 0x00000800
#define FLG_INC_SET (FLG_INC_CHK | FLG_CRACKING_SET)
/* External mode or word filter enabled */
#define FLG_EXTERNAL_CHK 0x00001000
#define FLG_EXTERNAL_SET \
(FLG_EXTERNAL_CHK | FLG_ACTION | FLG_CRACKING_SUP | FLG_PWD_SUP)
/* Batch cracker */
#define FLG_BATCH_CHK 0x00004000
#define FLG_BATCH_SET (FLG_BATCH_CHK | FLG_CRACKING_SET)
/* Stdout mode */
#define FLG_STDOUT 0x00008000
/* Restoring an interrupted session */
#define FLG_RESTORE_CHK 0x00010000
#define FLG_RESTORE_SET (FLG_RESTORE_CHK | FLG_ACTION)
/* A session name is set */
#define FLG_SESSION 0x00020000
/* Print status of a session */
#define FLG_STATUS_CHK 0x00040000
#define FLG_STATUS_SET (FLG_STATUS_CHK | FLG_ACTION)
/* Make a charset */
#define FLG_MAKECHR_CHK 0x00100000
#define FLG_MAKECHR_SET \
(FLG_MAKECHR_CHK | FLG_ACTION | FLG_PWD_SUP)
/* Show cracked passwords */
#define FLG_SHOW_CHK 0x00200000
#define FLG_SHOW_SET \
(FLG_SHOW_CHK | FLG_ACTION | FLG_PWD_REQ)
/* Perform a benchmark */
#define FLG_TEST_CHK 0x00400000
#define FLG_TEST_SET \
(FLG_TEST_CHK | FLG_CRACKING_SUP | FLG_ACTION)
/* Passwords per salt requested */
#define FLG_SALTS 0x01000000
/* Ciphertext format forced */
#define FLG_FORMAT 0x02000000
/* Memory saving enabled */
#define FLG_SAVEMEM 0x04000000
/* Node number(s) specified */
#define FLG_NODE 0x10000000
/* fork() requested, and process count specified */
#define FLG_FORK 0x20000000
/* Note that 0x80000000 is taken for OPT_REQ_PARAM, see getopt.h */
/*
* Structure with option flags and all the parameters.
*/
struct options_main {
/* Option flags */
opt_flags flags;
/* Password files */
struct list_main *passwd;
/* Password file loader options */
struct db_options loader;
/* Session name */
char *session;
/* Ciphertext format name */
char *format;
/* Wordlist file name */
char *wordlist;
/* Charset file name */
char *charset;
/* External mode or word filter name */
char *external;
/* Maximum plaintext length for stdout mode */
int length;
/* Parallel processing options */
char *node_str;
unsigned int node_min, node_max, node_count, fork;
};
extern struct options_main options;
/*
* Initializes the options structure.
*/
extern void opt_init(char *name, int argc, char **argv);
#endif