-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathJtrTestSuite.Manifest
167 lines (166 loc) · 11.7 KB
/
JtrTestSuite.Manifest
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
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
#-------------------------------------------------------------------
# John, testing suite, v1.12.6 Jim Fougeron.
#
# No copyright is claimed, and the software is hereby
# placed in the public domain. In case this attempt to disclaim
# copyright and place the software in the public domain is deemed
# null and void, then the software is Copyright © 2011-2012 Jim Fougeron
# and it is hereby released to the general public under the following
# terms:
#
# This software may be modified, redistributed, and used for any
# purpose, in source and binary forms, with or without modification.
#
# Things TODO:
# Add an 'expected' number to match. Then if it matches, simply echo "PASS"
# Finish up any missing formats.
#
# v1.00 initial release
# v1.01 Added: HDAA, mssql, mysql/mysql-fast, netntlm, openssha, oracle11, oracle
# changes some password order around in pw.dic
# added -utf8 to mskrb5, mssql05, mssql, oracle, netntlm
# v1.02 Added: lotus5.
# added ablity to use multiple different dictionary files.
#
# v1.03 Totally redid all hash files. Up'd the count to 1500. Also simplified
# the results. Now the results are 'pass' 'fail' (and if
# fail, the number missing is displayed. Added 'validation' of
# the data stored in john.pot, extract the passwords, and
# re-run then through john again. mediawiki added. Added code
# functions and initial checking, and then detect if the john
# is core or jumbo, and run the 'right' code. So now, tstall
# will properly work for core or jumbo builds, and auto detect.
#
# v1.04 Small change. Using john's unique program, vs using the sort | uniq, since
# the prior had issues with our 'bad' binary data, and LC_COLLATE settings
# John's unique program treats data in a 'binary' manner, and will not
# unique out lines that are different but setup to collate the same.
#
# v1.05 Small change again. Now, the UNIQUE is one of the 'top' settings in tstall script.
# Also, different versions of john-jumbo, to handle --utf8 or --charset=utf8
# until we get a 'unified' version.
#
# v1.06 Split up unicode into it's own function. Added 'encoding' function also (for KOI8-R
# and CP1251). Fixed a bug in tstonebase where we were redirecting to /dev/nul
# Got all KOI8-R and CP1251's working. Added CP866 also. Within the 'SETUP_UNICODE'
# function, we do not setup CP866 to allow it to run at this time.
# These functions are now part of this script:
# CORE_JOHN_ONLY() tests the 'core' functions, and uses fewer command line switches
# SETUP_UNICODE_AND_PRETESTS() figures out if old -utf8 or newer -enc=utf8 works. Sets
# -enc=koi8r also. This also performs the 'quick'
# -test=0's for the unicode, and other code pages.
# JUMBO_FORMATS() Tests all the 'jumbo' formats including base ones.
# JUMBO_FORMATS_UNICODE() Tests the unicode enabled formats.
# JUMBO_FORMATS_ENCODING() Tests the unicode enabled formats, using non-standard code
# page processing.
# v1.07 More functions. Now, easy to add code pages. Only 2 parts need small edits.
# The functions allow a much smaller script file. To add a new code page,
# be sure the input files are named properly (FmtName_tst_CODEPAGE.in), then in
# this script file search for CODE_PAGE, and add the new approprate lines.
# v1.08 Added crc32. Changed md5_gen to dynamic, changing 'all' files, both names, and internal
# contents. Some fixes in tstonebase, and LM was not being called in base.
# Added 'raw' input testing for dynamic. Magnum added -utf8 command line switch.
#
# v1.10 Major release. Recoded entire test suite, in perl. Now program is MUCH
# smarter. It knows the capabilities of john, and ONLY allows proper things
# to be done. Also, screen output is much more controlable. Also, we can
# easily select the work to do or not do. Defaults (if there are no command
# line params) is -type base -type utf8 -type koi8r if the john is a jumbo,
# and is -type core -type full if this is a john core build. This will cause
# john to run MUCH faster in a 'default' mode. There are MANY other
# improvements. NTv2 format also added.
#
# v1.11 There were a few MSSQL05 hashes, which were using forced mssql, instead of the mssql05.
# Only the .dat file changed.
# Did a little to 'clean' up the main code, in the jtrts.pl file.
# Added dynamic 30,31,32,33,34. Added NT-raw, NT-raw-utf8. These files were added
# to NT, NTv2 and dynamic_33.
# Different message if there are zero tests.
#
# v1.12 Added some new hashes, and build types (ssh, inc, cuda, opencl).
# There was much change to the dat file. Many lines added.
# Added 3 incrementatal test types, dyna_0, NT and DES. There are numerous
# test items added for each of these types. There are quick ones, and slower
# tests. NOTE, these 'may' cause a lockup like situation, since there is no
# dictionary, that will 'finish'. We may want to look into ways to fix this.
# In bleeding edge john, there is the --max-run-time=X switch.
# New 'types' added, are (cuda) (opencl) (gpu) which is either cuda or opencl,
# and (inc). Now, if a dictionary name starts with INCREMENT_ then no dictionary
# will be used, and an incremental john run will be done, using the last part of
# the dictionary field (minus the INCREMENT_) for this line in the jtrts.dat file.
# A large ssh input file was created by putting 1500 files into an input file.
# These ssh input were built by Dhiru.
# New command line args to jtrts.pl added:
# -passthru <s> Will allow this string to be passed to john as a command line
# argument. Multiple -passthru <s> can be used.
# -stoponerror Will cause jtrts to stop on any error, and leaves the .pot file
# Fixed issues where / char or ' ' (space) char could be used to separate the
# fmt types in john's screen output. Now, either form will work.
# Added gost format
# Added SAPG format (still has problems). I will work this out with Magnum.
# PO now required a forced test (gost 'grabbed' it ;) )
# Raw SHA1 required a forced test.
# v1.12.2 Fixed sapG and added sapB (per magnum).
# v1.12.3 Added gost, gost_cp, raw-sha1_ng (faster on some cpu's).
# Added some extra test using crc32, for dupe suppression, and for files having
# and lacking
# final EOL in the file.
# Numerous other changes (-enc:utf changed to --encode=utf)
# Changed the cut statement in .pot testing, adding the -s to only cut lines
# with a : char.
# v1.12.4 Added a bunch of new formats:
# raw-ssh224, raw-ssh256, raw-sha384, raw-sha512, dragonfly3_32, dragonfly4_32,
# hmac-sha1, hmac-sha224, hmac-sha256, hmac-sha384, hmac-sha512,
# -w= changed to --wordlist= and -enc:utf8 changed to --encoding=utf8. The
# -w= change trigged a couple of bugs.
# v1.12.5 Added sha256crypt and sha512crypt. Still had one more nit from the change from
# -w= to --wordlist=
# v1.12.6 Added XSHA512, and updated/added many GPU formats.
# v1.12.7 Added new formats dynamic_35 sha1(uc($u).:.$p), dynamic_36 sha1($u.:.$p),
# dynamic_37 sha1(lc($u).$p) and dynamic_38 (sha1($s.sha1($s.sha1($p)))
# v1.12.8 Added new formats dynamic_39, which is an sha256 dynamic. Updated input file
# for dyna_38. Salt set to fixed 20 bytes.
# v1.12.9 Added new formats dynamic_50,_51,_52, which is an sha224 dynamic ($p) ($s.$p) ($p.$s)
# Updated input file for dyna_38. Salt set to fixed 20 bytes.
# Added new dynamic_60,_61,_62 (SHA256). _70,_71,_72 SHA384. _80,_81,_82 SHA512.
# _90,_91,_92 GOST. Dyna_39 renamed to dyna_61
# some lines added to a few dynamic formats, that were dupe lines, but with
# case change in the hash. This will flush out problems of split-unify-case
# not being present.
# v1.12.10 Added new formats dynamic_100,_101,_102, which is whirlpool($p) & ($s.$p) & ($p.$s)
# and added pwsafe (cpu, cuda and opencl). Added MD5 checksum into usage of the
# incremental files. This is a REQUIRED check. This will make sure that
# the incremental file, and the test data actually match up. If they do not, then
# the TS can appear to lock up. Added a new script file (pw_len_finder.sh)
# that can help to build the proper number of candidates to expect, when a format
# has a PLAINTEXT_LENGTH shorter than what the input file was built with.
# v1.12.11 Added django, dragonfly3-64 and dragonfly4-64, formspring (thin-dyna_61),
# EPI, episerver (v1 and v0), hmailserver, nukedclan(nk), radmin, rawsha0,
# SybaseASE, wbb3 (WoltLab Burning Board 3: sha1($s.sha1($s.sha1($p)))),
# v1.12.14 Many small changes, and many formats added (lots of opencl)
# v1.12.15 (sept 24, 2014) Got -fork=NN working. Lots of little changes.
# Added -show | tail 1 to detect count in a different manner. This was needed for
# the -fork (and -mpi) runs, which may detect more than the count in the input
# file. The -show will run without the fork, and list the count of user passwords
# cracked. One side effect is formats that have dupe hashes (dyna_0 and a few others
# do this to check dupe supression), we end up with more than expected count on the
# -show. So a new (-show####) was added to specifically handle these known side
# effects. MANY other smaller issues in the .dat file were also fixed.
# v1.12.16 (sept 24, 2014) added a new fake 'type' full_only. This type if used, will cause the
# TS to ONLY test the formats which have a requirement of (full) (i.e. the slower
# formats). This will allow a run (even though slow), of only the slow formats,
# which usually do not get tested. No changes to the .dat file, only to the Perl file.
# v1.12.17 (oct 28, 2014) Added checks for non-zero return code (cores). This will always show (even
# in -q mode, and has a summary line listing how many non-zero's were seen.
# made -no-prelims the default, so now if you WANT prelims, you have to use -prelims
# v1.12.18 (oct 31, 2014) Return from script will not be 0 if there are any failures. It will be number
# number of failed test, or tests which jtr returned non-zero.
#
# v1.13 (dec 18, 2014) added -internal test mode, to test 'test' strings from inside formats.
# This allows testing formats which do not yet have test suite input files.
# Did a 'major' version, since this is fully new behavior.
# Todo (1.14)
# Add tests for -pipe, files with \r\n \n \r and \r\r\n, which are 'real'
# file formats seen in the wild. These tests are in -w= and -pipe modes
# http://www.openwall.com/lists/john-dev/2012/06/29/39
#--------------------------------------------------------------------