-
Notifications
You must be signed in to change notification settings - Fork 76
/
Copy pathfcrackzip.1
187 lines (177 loc) · 7.92 KB
/
fcrackzip.1
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
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
.TH FCRACKZIP 1 "Free/Fast Zip Password Cracker"
.SH NAME
.I fcrackzip
\- a Free/Fast Zip Password Cracker
.SH SYNOPSIS
.B fcrackzip
[-bDBchVvplum2] [--brute-force] [--dictionary] [--benchmark] [--charset characterset]
[--help] [--validate] [--verbose] [--init-password string/path] [--length min-max]
[--use-unzip] [--method name] [--modulo r/m] file...
.SH DESCRIPTION
.I fcrackzip
searches each zipfile given for encrypted files and tries to guess the
password. All files must be encrypted with the same password, the more
files you provide, the better.
.SS OPTIONS
.TP
.B \-h, \--help
Prints the version number and (hopefully) some helpful insights.
.TP
.B \-v, \--verbose
Each -v makes the program more verbose.
.TP
.B \-b, \--brute-force
Select brute force mode. This tries all possible combinations
of the letters you specify.
.TP
.B \-D, \--dictionary
Select dictionary mode. In this mode, fcrackzip will read passwords
from a file, which must contain one password per line and should be
alphabetically sorted (e.g. using \fBsort(1)\fR).
.TP
.B \-c, \--charset characterset-specification
Select the characters to use in brute-force cracking. Must be one
of
.nf
a include all lowercase characters [a-z]
A include all uppercase characters [A-Z]
1 include the digits [0-9]
! include [!:$%&/()=?{[]}+*~#]
: the following characters upto the end of the spe-
cification string are included in the character set.
This way you can include any character except binary
null (at least under unix).
.fi
For example, a1:$% selects lowercase characters, digits and the dollar and
percent signs.
.TP
.B \-p, \--init-password string
Set initial (starting) password for brute-force searching to \fIstring\fR,
or use the file with the name \fIstring\fR to supply passwords for dictionary
searching.
.TP
.B \-l, \--length min[-max]
Use an initial password of length min, and check all passwords
upto passwords of length max (including). You can omit the max
parameter.
.TP
.B \-u, \--use-unzip
Try to decompress the first file by calling unzip with the guessed
password. This weeds out false positives when not enough files have
been given.
.TP
.B \-m, \--method name
Use method number "name" instead of the default cracking method. The
switch \fB--help\fR will print a list of available methods. Use
\fB--benchmark\fR to see which method does perform best on your
machine. The \fBname\fR can also be the number of the method to use.
.TP
.B \-2, \--modulo r/m
Calculate only r/m of the password. Not yet supported.
.TP
.B \-B, \--benchmark
Make a small benchmark, the output is nearly meaningless.
.TP
.B -V, \--validate
Make some basic checks wether the cracker works.
.SH ZIP PASSWORD BASICS
Have you ever mis-typed a password for unzip? Unzip reacted pretty fast with
\'incorrect password\', \fIwithout\fR decrypting the whole file. While the
encryption algorithm used by zip is relatively secure, PK made cracking easy
by providing hooks for very fast password-checking, directly in the zip
file. Understanding these is crucial to zip password cracking:
For each password that is tried, the first twelve bytes of the file are
decrypted. Depending on the version of zip used to encrypt the file (more on
that later), the first ten or eleven bytes are random, followed by one or
two bytes whose values are stored elsewhere in the zip file, i.e. are known
beforehand. If these last bytes don't have the correct (known) value, the
password is definitely wrong. If the bytes are correct, the password
\fImight\fR be correct, but the only method to find out is to unzip the file
and compare the uncompressed length and crc\'s.
Earlier versions of pkzip (1.xx) (and, incidentally, many zip clones for
other operating systems!) stored two known bytes. Thus the error rate was
roughly 1/2^16 = 0.01%. PKWARE \'improved\' (interesting what industry calls
improved) the security of their format by only including one byte, so the
possibility of false passwords is now raised to 0.4%. Unfortunately, there
is no real way to distinguish one byte from two byte formats, so we have to
be conservative.
.SH BRUTE FORCE MODE
By default, brute force starts at the given starting password, and
successively tries all combinations until they are exhausted, printing all
passwords that it detects, together with a rough correctness indicator.
The starting password given by the \fI-p\fR switch determines the length.
fcrackzip will not currently increase the password length automatically, unless
the \fI-l\fR switch is used.
.SH DICTIONARY MODE
This mode is similar to brute force mode, but instead of generating passwords
using a given set of characters and a length, the passwords will be read from
a file that you have to specify using the \fI-p\fR switch.
.SH CP MASK
A CP mask is a method to obscure images or parts of images using a
password. These obscured images can be restored even when saved as JPEG
files. In most of these files the password is actually hidden and can
be decoded easily (using one of the many available viewer and masking
programs, e.g. xv). If you convert the image the password, however, is
lost. The \fBcpmask\fR crack method can be used to brute-force these
images. Instead of a zip file you supply the obscured part (and nothing
else) of the image in the \fBPPM\fR-Image Format (\fBxv\fR and other
viewers can easily do this).
The \fBcpmask\fR method can only cope with password composed of uppercase
letters, so be sure to supply the \fB--charset A\fR or equivalent option,
together with a suitable initialization password.
.SH EXAMPLES
.TP
.B fcrackzip -c a -p aaaaaa sample.zip
checks the encrypted files in sample.zip for all lowercase 6 character
passwords (aaaaaa ... abaaba ... ghfgrg ... zzzzzz).
.TP
.B fcrackzip --method cpmask --charset A --init AAAA test.ppm
checks the obscured image \fBtest.ppm\fR for all four character passwords.
-TP
.B fcrackzip -D -p passwords.txt sample.zip
check for every password listed in the file \fBpasswords.txt\fR.
.SH PERFORMANCE
\fIfzc\fR, which seems to be widely used as a fast password cracker,
claims to make 204570 checks per second on my machine (measured under plain
dos w/o memory manager).
\fIfcrackzip\fR, being written in C and not in assembler, naturally
is slower. Measured on a slightly loaded unix (same machine), it\'s 12
percent slower (the compiler used was \fIpgcc\fR, from
\fBhttp://www.gcc.ml.org/\fR).
To remedy this a bit, I converted small parts of the encryption core to x86
assembler (it will still compile on non x86 machines), and now it\'s about
4-12 percent faster than \fIfzc\fR (again, the \fIfcrackzip\fR performance
was measured under a multitasking os, so there are inevitably some
meaurement errors), so there shouldn't be a tempting reason to switch to
other programs.
Further improvements are definitely possible: \fIfzc\fR took 4 years to get
into shape, while fcrackzip was hacked together in under 10 hours. And not to
forget you have the source, while other programs (like \fIfzc\fR), even come
as an \fIencrypted .exe\fR file (maybe because their programmers are afraid
of other people could having a look at their lack of programming skills?
nobody knows...)
.SH RATIONALE
The reason I wrote \fIfcrackzip\fR was \fBNOT\fR to have the fastest zip
cracker available, but to provide a \fIportable\fR, \fIfree\fR (thus
\fIextensible\fR), but still \fIfast\fR zip password cracker. I was really
pissed of with that dumb, nonextendable zipcrackers that were either slow,
were too limited, or wouldn't run in the background (say, under unix). (And
you can't run them on your superfast 600Mhz Alpha).
.SH BUGS
No automatic unzip checking.
.PP
Stop/resume facility is missing.
.PP
Should be able to distinguish between files with 16 bit stored CRC\'s and 8
bit stored CRC\'s.
.PP
\The benchmark does not work on all systems.
.PP
It's still early alpha.
.PP
Method "cpmask" only accepts ppms.
.PP
Could be faster.
.SH AUTHOR
\fIfcrackzip\fR was written by Marc Lehmann <pcg@goof.com>. The main
\fIfcrackzip\fR page is at \fBhttp://www.goof.com/pcg/marc/fcrackzip.html\fR)