cobreak 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/Gemfile +15 -0
- data/LICENSE +700 -0
- data/README.md +74 -0
- data/bin/cobreak +11 -0
- data/cobreak.gemspec +12 -0
- data/dicc.txt +1 -0
- data/diccionario.txt +275 -0
- data/hola.txt +1397760 -0
- data/lib/cobreak.rb +3 -0
- data/lib/cobreak/Cesar.rb +35 -0
- data/lib/cobreak/cifrado.rb +32 -0
- data/lib/cobreak/cobreak.rb +193 -0
- data/lib/cobreak/decifrado.rb +32 -0
- data/lib/cobreak/decrypt.rb +110 -0
- data/lib/cobreak/details.rb +19 -0
- data/lib/cobreak/encrypt.rb +55 -0
- data/lib/cobreak/force.rb +227 -0
- data/lib/cobreak/force_brute.rb +81 -0
- data/lib/cobreak/function_db.rb +27 -0
- data/lib/cobreak/function_hash.rb +29 -0
- data/lib/cobreak/hash/hash.db +29 -0
- data/lib/cobreak/info_author.rb +22 -0
- data/lib/cobreak/list_all.rb +19 -0
- data/lib/cobreak/optionpr.rb +59 -0
- data/lib/cobreak/run.rb +9 -0
- data/lib/cobreak/show/md4.db +6 -0
- data/lib/cobreak/show/md5.db +14 -0
- data/lib/cobreak/show/ripemd160.db +1 -0
- data/lib/cobreak/show/sha1.db +3 -0
- data/lib/cobreak/show/sha224.db +1 -0
- data/lib/cobreak/show/sha256.db +1 -0
- data/lib/cobreak/show/sha384.db +1 -0
- data/lib/cobreak/show/sha512.db +1 -0
- data/lib/cobreak/version.rb +5 -0
- data/prueba.txt +2 -0
- metadata +78 -0
@@ -0,0 +1,227 @@
|
|
1
|
+
require 'sequel'
|
2
|
+
require 'ostruct'
|
3
|
+
require 'cobreak/function_hash'
|
4
|
+
class Forze_brute
|
5
|
+
def initialize(author = 'BreakerBox')
|
6
|
+
@author = author
|
7
|
+
end
|
8
|
+
def verify(dato, word = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'hash', 'hash.db'))
|
9
|
+
hash_db = Sequel.sqlite
|
10
|
+
hash_db.create_table? :datahash do
|
11
|
+
String :ori
|
12
|
+
String :has
|
13
|
+
end
|
14
|
+
IO.foreach(word) {|lin|
|
15
|
+
lin = lin.chomp
|
16
|
+
hash_db[:datahash] << {ori:lin, has:dato}
|
17
|
+
}
|
18
|
+
ha = hash_db[:datahash].filter(ori:dato).map(:has)
|
19
|
+
arr = Array.new
|
20
|
+
arr << dato
|
21
|
+
if (ha == arr)
|
22
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash already existing in the database: #{dato}"
|
23
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m decrypt the hash using --decrypt, see the help parameter for more information"
|
24
|
+
exit
|
25
|
+
end
|
26
|
+
end
|
27
|
+
def md4(dato, wordlist)
|
28
|
+
verify(dato)
|
29
|
+
forzebrute = OpenStruct.new
|
30
|
+
forzebrute.time = Time.now
|
31
|
+
forzebrute.hash = dato
|
32
|
+
forzebrute.wordlist = wordlist
|
33
|
+
require 'openssl'
|
34
|
+
File.foreach(forzebrute.wordlist) {|line|
|
35
|
+
line.chomp!
|
36
|
+
forzebrute.md4 = OpenSSL::Digest::MD4.hexdigest(line)
|
37
|
+
if (forzebrute.md4 == forzebrute.hash)
|
38
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
39
|
+
puts line
|
40
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
41
|
+
$datBas::database(forzebrute.hash)
|
42
|
+
DB::database(forzebrute.md4, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'md4.db'))
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
}
|
46
|
+
if true
|
47
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{dato}"
|
48
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
def md5(dato, wordlist)
|
52
|
+
# verify(dato)
|
53
|
+
forzebrute = OpenStruct.new
|
54
|
+
forzebrute.hash = dato
|
55
|
+
forzebrute.wordlist = wordlist
|
56
|
+
require 'digest/md5'
|
57
|
+
forzebrute.time = Time.now
|
58
|
+
File.foreach(forzebrute.wordlist) {|line|
|
59
|
+
line.chomp!
|
60
|
+
forzebrute.md5 = Digest::MD5.hexdigest(line)
|
61
|
+
if (forzebrute.md5 == forzebrute.hash)
|
62
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
63
|
+
puts line
|
64
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
65
|
+
$datBas::database(forzebrute.hash)
|
66
|
+
DB::database(forzebrute.md5, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'md5.db'))
|
67
|
+
exit
|
68
|
+
end
|
69
|
+
}
|
70
|
+
if true
|
71
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{dato}"
|
72
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
73
|
+
exit
|
74
|
+
end
|
75
|
+
end
|
76
|
+
def sha1(dato, wordlist)
|
77
|
+
verify(dato)
|
78
|
+
forzebrute = OpenStruct.new
|
79
|
+
forzebrute.time = Time.now
|
80
|
+
forzebrute.hash = dato
|
81
|
+
forzebrute.wordlist = wordlist
|
82
|
+
require 'digest/sha1'
|
83
|
+
File.foreach(forzebrute.wordlist) {|line|
|
84
|
+
line.chomp!
|
85
|
+
forzebrute.sha1 = Digest::SHA1.hexdigest(line)
|
86
|
+
if (forzebrute.sha1 == forzebrute.hash)
|
87
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
88
|
+
puts line
|
89
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
90
|
+
$datBas::database(forzebrute.hash)
|
91
|
+
DB::database(forzebrute.sha1, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha1.db'))
|
92
|
+
exit
|
93
|
+
end
|
94
|
+
}
|
95
|
+
if true
|
96
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{dato}"
|
97
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
def sha224(dato, wordlist)
|
101
|
+
verify(dato)
|
102
|
+
forzebrute = OpenStruct.new
|
103
|
+
forzebrute.time = Time.now
|
104
|
+
forzebrute.hash = dato
|
105
|
+
forzebrute.wordlist = wordlist
|
106
|
+
require 'digest/sha224'
|
107
|
+
File.foreach(forzebrute.wordlist) {|line|
|
108
|
+
line.chomp!
|
109
|
+
forzebrute.sha224 = Digest::SHA224.hexdigest(line)
|
110
|
+
if (forzebrute.sha224 == forzebrute.hash)
|
111
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
112
|
+
puts line
|
113
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
114
|
+
$datBas::database(forzebrute.hash)
|
115
|
+
DB::database(forzebrute.sha224, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha224.db'))
|
116
|
+
exit
|
117
|
+
end
|
118
|
+
}
|
119
|
+
if true
|
120
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{dato}"
|
121
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
122
|
+
exit
|
123
|
+
end
|
124
|
+
end
|
125
|
+
def sha256(dato, wordlist)
|
126
|
+
verify(dato)
|
127
|
+
forzebrute = OpenStruct.new
|
128
|
+
forzebrute.time = Time.now
|
129
|
+
forzebrute.hash = dato
|
130
|
+
forzebrute.wordlist = wordlist
|
131
|
+
require 'digest/sha256'
|
132
|
+
File.foreach(forzebrute.wordlist) {|line|
|
133
|
+
line.chomp!
|
134
|
+
forzebrute.sha256 = Digest::SHA256.hexdigest(line)
|
135
|
+
if (forzebrute.sha256 == forzebrute.hash)
|
136
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
137
|
+
puts line
|
138
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
139
|
+
$datBas::database(forzebrute.hash)
|
140
|
+
DB::database(forzebrute.sha256, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha256.db'))
|
141
|
+
exit
|
142
|
+
end
|
143
|
+
}
|
144
|
+
if true
|
145
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{dato}"
|
146
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
147
|
+
exit
|
148
|
+
end
|
149
|
+
end
|
150
|
+
def sha384(dato, wordlist)
|
151
|
+
verify(dato)
|
152
|
+
forzebrute = OpenStruct.new
|
153
|
+
forzebrute.time = Time.now
|
154
|
+
forzebrute.hash = dato
|
155
|
+
forzebrute.wordlist = wordlist
|
156
|
+
require 'digest/sha384'
|
157
|
+
File.foreach(forzebrute.wordlist) {|line|
|
158
|
+
line.chomp!
|
159
|
+
forzebrute.sha384 = Digest::SHA384.hexdigest(line)
|
160
|
+
if (forzebrute.sha384 == forzebrute.hash)
|
161
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
162
|
+
puts line
|
163
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
164
|
+
$datBas::database(forzebrute.hash)
|
165
|
+
DB::database(forzebrute.sha384, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha384.db'))
|
166
|
+
exit
|
167
|
+
end
|
168
|
+
}
|
169
|
+
if true
|
170
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{forzebrute.hash}"
|
171
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
172
|
+
exit
|
173
|
+
end
|
174
|
+
end
|
175
|
+
def sha512(dato, wordlist)
|
176
|
+
verify(dato)
|
177
|
+
forzebrute = OpenStruct.new
|
178
|
+
forzebrute.time = Time.now
|
179
|
+
forzebrute.hash = dato
|
180
|
+
forzebrute.wordlist = wordlist
|
181
|
+
require 'digest/sha512'
|
182
|
+
File.foreach(forzebrute.wordlist) {|line|
|
183
|
+
line.chomp!
|
184
|
+
forzebrute.sha512 = Digest::SHA512.hexdigest(line)
|
185
|
+
if (forzebrute.sha512 == forzebrute.hash)
|
186
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
187
|
+
puts line
|
188
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
189
|
+
$datBas::database(forzebrute.hash)
|
190
|
+
DB::database(forzebrute.sha512, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha512.db'))
|
191
|
+
exit
|
192
|
+
end
|
193
|
+
}
|
194
|
+
if true
|
195
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{forzebrute.hash}"
|
196
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
197
|
+
exit
|
198
|
+
end
|
199
|
+
end
|
200
|
+
def ripemd160(dato, wordlist)
|
201
|
+
verify(dato)
|
202
|
+
verify(dato)
|
203
|
+
forzebrute = OpenStruct.new
|
204
|
+
forzebrute.time = Time.now
|
205
|
+
forzebrute.hash = dato
|
206
|
+
forzebrute.wordlist = wordlist
|
207
|
+
require 'digest/rmd160'
|
208
|
+
File.foreach(forzebrute.wordlist) {|line|
|
209
|
+
line.chomp!
|
210
|
+
forzebrute.ripemd160 = Digest::RMD160.hexdigest(line)
|
211
|
+
if (forzebrute.ripemd160 == forzebrute.hash)
|
212
|
+
print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
|
213
|
+
puts line
|
214
|
+
puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Hash Cracking #{Time.now - forzebrute.time} seconds"
|
215
|
+
$datBas::database(forzebrute.hash)
|
216
|
+
DB::database(forzebrute.ripemd160, File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'ripemd160.db'))
|
217
|
+
exit
|
218
|
+
end
|
219
|
+
}
|
220
|
+
if true
|
221
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Not Decrypted Text: #{forzebrute.hash}"
|
222
|
+
puts "\e[1;31m[\e[0m+\e[1;31m]\e[0m Time: #{Time.now - forzebrute.time} seconds"
|
223
|
+
exit
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
ForzeBrute = Forze_brute.new
|
@@ -0,0 +1,81 @@
|
|
1
|
+
#!/bin/env ruby
|
2
|
+
require 'cobreak/version'
|
3
|
+
module CoBreak
|
4
|
+
class BruteForze
|
5
|
+
def initialize(options)
|
6
|
+
@options = options
|
7
|
+
@hash = %w[MD4 MD5 SHA1 SHA224 SHA256 SHA384 SHA512 RIPEMD160]
|
8
|
+
end
|
9
|
+
begin
|
10
|
+
require 'cobreak/force'
|
11
|
+
rescue LoadError => e
|
12
|
+
puts e.message
|
13
|
+
abort "reinstall gem new"
|
14
|
+
end
|
15
|
+
def banner_wordlist()
|
16
|
+
puts "\e[32m╭─[\e[0m CoBreak: #{CoBreak.version}"
|
17
|
+
if (File.exists?(@options.wordlist.to_s))
|
18
|
+
puts "\e[32m├─[\e[0m Wordlist: #{File.expand_path(@options.wordlist)}"
|
19
|
+
else
|
20
|
+
puts "\e[31m├─[\e[0m WordList Not Found"
|
21
|
+
end
|
22
|
+
if (@hash.include?(@options.bruteforce.to_s.upcase))
|
23
|
+
puts "\e[32m├─[\e[0m Type Hash: #{@options.bruteforce.upcase}"
|
24
|
+
else
|
25
|
+
puts "\e[31m├─[\e[0m Type Hash Not Found"
|
26
|
+
end
|
27
|
+
unless (@options.algo.nil?) or (@options.algo.empty?)
|
28
|
+
puts "\e[32m╰─[\e[0m Hash: #{@options.algo}\n\n"
|
29
|
+
else
|
30
|
+
puts "\e[31m╰─[\e[0m Hash Not Found"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
def wordlist()
|
34
|
+
if (@options.wordlist.nil?) or (@options.wordlist.empty?) or ('-'.include?(@options.wordlist.to_s))
|
35
|
+
abort "\n"
|
36
|
+
end
|
37
|
+
if (@hash.include?(@options.bruteforce.to_s.upcase))
|
38
|
+
if (File.exists?(@options.algo.to_s))
|
39
|
+
IO.foreach(@options.algo.to_s){|line|
|
40
|
+
line.chomp!
|
41
|
+
if (@options.bruteforce.to_s.downcase.eql?('md4'))
|
42
|
+
ForzeBrute::md4(line, @options.wordlist)
|
43
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('md5'))
|
44
|
+
ForzeBrute::md5(line, @options.wordlist)
|
45
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha1'))
|
46
|
+
ForzeBrute::sha1(line, @options.wordlist)
|
47
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha224'))
|
48
|
+
ForzeBrute::sha224(line, @options.wordlist)
|
49
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha256'))
|
50
|
+
ForzeBrute::sha256(line, @options.wordlist)
|
51
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha384'))
|
52
|
+
ForzeBrute::sha384(line, @options.wordlist)
|
53
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha512'))
|
54
|
+
ForzeBrute::sha512(line, @options.wordlist)
|
55
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('ripemd160'))
|
56
|
+
ForzeBrute::ripemd160(line, @options.wordlist)
|
57
|
+
end
|
58
|
+
}
|
59
|
+
else
|
60
|
+
if (@options.bruteforce.to_s.downcase.eql?('md4'))
|
61
|
+
ForzeBrute::md4(@options.algo.to_s, @options.wordlist)
|
62
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('md5'))
|
63
|
+
ForzeBrute::md5(@options.algo.to_s, @options.wordlist)
|
64
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha1'))
|
65
|
+
ForzeBrute::sha1(@options.algo.to_s, @options.wordlist)
|
66
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha224'))
|
67
|
+
ForzeBrute::sha224(@options.algo.to_s, @options.wordlist)
|
68
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha256'))
|
69
|
+
ForzeBrute::sha256(@options.algo.to_s, @options.wordlist)
|
70
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha384'))
|
71
|
+
ForzeBrute::sha384(@options.algo.to_s, @options.wordlist)
|
72
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('sha512'))
|
73
|
+
ForzeBrute::sha512(@options.algo.to_s, @options.wordlist)
|
74
|
+
elsif (@options.bruteforce.to_s.downcase.eql?('ripemd160'))
|
75
|
+
ForzeBrute::ripemd160(@options.algo.to_s, @options.wordlist)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'sequel'
|
3
|
+
class DataBase
|
4
|
+
$db = Sequel.sqlite
|
5
|
+
$db.create_table? :database do
|
6
|
+
String :text_db
|
7
|
+
end
|
8
|
+
def initialize(alg = nil)
|
9
|
+
@alg = alg
|
10
|
+
end
|
11
|
+
def database(alg, var1)
|
12
|
+
if File.exists?(var1) == false
|
13
|
+
FileUtils.touch(var1)
|
14
|
+
end
|
15
|
+
IO.foreach(var1) {|line|
|
16
|
+
line.chomp!
|
17
|
+
$db[:database] << {text_db:line}
|
18
|
+
}
|
19
|
+
if ($db[:database].filter(text_db:alg).map(:text_db)).include?(alg) == true
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
File.open(var1, mode: 'a'){|lin|
|
23
|
+
lin.puts alg
|
24
|
+
}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
DB = DataBase.new
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'sequel'
|
3
|
+
require 'cobreak/version'
|
4
|
+
class BaseDato
|
5
|
+
$db = Sequel.sqlite
|
6
|
+
$db.create_table? :database do
|
7
|
+
String :text_db
|
8
|
+
end
|
9
|
+
def initialize(alg = nil)
|
10
|
+
@alg = alg
|
11
|
+
end
|
12
|
+
def database(alg)
|
13
|
+
var1 = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'hash', 'hash.db')
|
14
|
+
if File.exists?(var1) == false
|
15
|
+
FileUtils.touch(var1)
|
16
|
+
end
|
17
|
+
IO.foreach(var1) {|line|
|
18
|
+
line.chomp!
|
19
|
+
$db[:database] << {text_db:line}
|
20
|
+
}
|
21
|
+
if ($db[:database].filter(text_db:alg).map(:text_db)).include?(alg) == true
|
22
|
+
exit
|
23
|
+
end
|
24
|
+
File.open(var1, mode: 'a'){|lin|
|
25
|
+
lin.puts alg
|
26
|
+
}
|
27
|
+
end
|
28
|
+
end
|
29
|
+
$datBas = BaseDato.new
|
@@ -0,0 +1,29 @@
|
|
1
|
+
ac5585d98646d255299c359140537783
|
2
|
+
4d186321c1a7f0f354b297e8914ab240
|
3
|
+
849ceedae14b70e6292c58f27454cff4
|
4
|
+
0fb0a49e3068aae01d664978c56a2291
|
5
|
+
4cecb21b44628b17c436739bf6301af2
|
6
|
+
187ef4436122d1cc2f40dc2b92f0eba0
|
7
|
+
b86fc6b051f63d73de262d4c34e3a0a9
|
8
|
+
670da91be64127c92faac35c8300e814
|
9
|
+
f9ca81659235ad6de39c77cb7154f30d
|
10
|
+
0ef546118008f6fb7ebab60c7e3cee2f
|
11
|
+
fb8d211b98db3feb5206ed7501749cd8
|
12
|
+
2466ed15c785916f782b6ab6daa558df
|
13
|
+
da387ec05c4902110dabb22395a26b6b
|
14
|
+
534b9a3588bdd87bf7c3b9d650e43e46
|
15
|
+
60885f7923ace3a3328c23e98c88e60e
|
16
|
+
518ed29525738cebdac49c49e60ea9d3
|
17
|
+
31d6cfe0d16ae931b73c59d7e0c089c0
|
18
|
+
d41d8cd98f00b204e9800998ecf8427e
|
19
|
+
2510c39011c5be704182423e3a695e91
|
20
|
+
99800b85d3383e3a2fb45eb7d0066a4879a9dad0
|
21
|
+
f39ef9f3e4426b4b9b705b52d4b8ae426c33f9b0
|
22
|
+
1a1f58c9adc75e11a9c4c108e39bb79bfb4435ac
|
23
|
+
41d1de28e96dc1cde568d3b068fa17bb
|
24
|
+
f33da01f361b228b4406e1f3cc467777
|
25
|
+
a439344f4b08d69e633a4ae02ced47a3b89cf37dd8138d5568696657
|
26
|
+
d77e22123e64d3d87f1f95d9cff7a0b6af6c32b9a81552cb90e991eb55cf63d4
|
27
|
+
aa985c9abeaa7eaa4cba092bb9cf324d5b1a166ba71b994104d3ea7bca7b66f2ebf2c556e78fda4ef3c7cf310a649acd
|
28
|
+
789ffe2f72383f30704918bf701f9f2fe4ae836857c0c415319850d099b0aa219fb7f0c5c029d1e959ed0f91594354b5003946dfff4bf95673072fa15af9ccb3
|
29
|
+
e5b4c7c6d3e871790c46124c2b51cf177b5bb9fc
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'launchy'
|
2
|
+
module CoBreak
|
3
|
+
class Author
|
4
|
+
def self.author()
|
5
|
+
return "Breaker Box"
|
6
|
+
end
|
7
|
+
def self.email()
|
8
|
+
return "breakerhtb@gmail.com"
|
9
|
+
end
|
10
|
+
def self.date()
|
11
|
+
return "2020-5-25"
|
12
|
+
end
|
13
|
+
def self.telegram()
|
14
|
+
return "@BreakerBox"
|
15
|
+
end
|
16
|
+
def self.group()
|
17
|
+
group = "https://t.me/Black0utx"
|
18
|
+
Launchy.open(group)
|
19
|
+
return group
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module CoBreak
|
2
|
+
class List
|
3
|
+
#all list formats and types
|
4
|
+
def initialize(options)
|
5
|
+
type = Array.new
|
6
|
+
type << "Base64" << "Base32" << "Base16" << "Ascii85" << "Binary" << "Cesar"
|
7
|
+
if (options.list.eql?("type"))
|
8
|
+
puts "\nMode Cipher:"
|
9
|
+
puts type
|
10
|
+
end
|
11
|
+
format = Array.new
|
12
|
+
format << "MD4" << "MD5" << "SHA1" << "SHA224" << "SHA256" << "SHA384" << "SHA512" << "RIPEMD160"
|
13
|
+
if (options.list.eql?("format"))
|
14
|
+
puts "\nMode Cryptography:"
|
15
|
+
puts format
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'cobreak/cobreak'
|
3
|
+
require 'cobreak/force_brute'
|
4
|
+
require 'cobreak/version'
|
5
|
+
require 'cobreak/list_all'
|
6
|
+
module CoBreak
|
7
|
+
class ParseOPT
|
8
|
+
def self.optparse(options)
|
9
|
+
begin
|
10
|
+
OptionParser.new do|param|
|
11
|
+
param.banner = "Usage: CoBreak.rb [--options] [text or file]"
|
12
|
+
param.separator ''
|
13
|
+
param.separator "Mode Cipher:"
|
14
|
+
param.on('--encoding=[TYPE]', String, 'encoding parameter'){|en_co| options.enc = en_co}
|
15
|
+
param.on('--decoding=[TYPE]', String, 'decoding parameter'){|de_co| options.dec = de_co}
|
16
|
+
param.separator "Mode Cryptography"
|
17
|
+
param.on('--encrypt=[FORMAT]', String, 'encrypt parameter'){|en_en| options.encrypt = en_en}
|
18
|
+
param.on('--decrypt=[FORMAT]', String, 'decrypt parameter'){|de_en| options.decrypt = de_en}
|
19
|
+
param.separator "Mode BruteForce"
|
20
|
+
param.on('--bruteforce=[FORMAT]', String, 'brute force mode to crack a hash'){|modeforce| options.bruteforce = modeforce}
|
21
|
+
param.separator ""
|
22
|
+
param.separator "Options:"
|
23
|
+
param.on('-l', '--list=TYPE or FORMAT', String, 'list cipher types of hash formats'){|lin| options.list = lin}
|
24
|
+
param.on('-r', '--range MIN MAX', Integer, "word chars length"){|min| options.min = min}
|
25
|
+
param.on('-c', '--chars CHARACTERS', 'character input to generate word lists'){|chars| options.chars = chars}
|
26
|
+
param.on('-w', '--wordlist=WORDLIST', 'Wordlist mode, read words from FILE or stadin (default: diccionario.txt)'){|wordlist| options.wordlist = wordlist}
|
27
|
+
param.on('-i', '--input FILE or TEXT', String, 'take file or text to carry out the process'){|alg| options.algo = alg}
|
28
|
+
param.on_tail('-v', '--version', 'show version'){puts "CoBreak version #{CoBreak.version}"; exit}
|
29
|
+
param.on_tail('-h', '--help', 'command to view help parameters'){puts param; exit}
|
30
|
+
param.separator ''
|
31
|
+
end.parse!
|
32
|
+
rescue OptionParser::MissingArgument => missing
|
33
|
+
if missing.to_s.include?("--wordlist")
|
34
|
+
options.wordlist = File.join(Gem.path[1], 'gems', "cobreak-#{CoBreak.version}", 'diccionario.txt')
|
35
|
+
elsif missing.to_s.include?("--chars")
|
36
|
+
options.chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
|
37
|
+
else
|
38
|
+
puts missing.message
|
39
|
+
end
|
40
|
+
ensure
|
41
|
+
if (options.wordlist == "diccionario.txt")
|
42
|
+
unless (File.exists?(options.wordlist))
|
43
|
+
options.wordlist = File.join(Gem.path[1], 'gems', "cobreak-#{CoBreak.version}", 'diccionario.txt')
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
CoBreak::Box.var(options)
|
48
|
+
CoBreak::Box::Cipher.coding()
|
49
|
+
CoBreak::Box::Cryptgraphy.crypt()
|
50
|
+
CoBreak::List.new(options)
|
51
|
+
unless (options.wordlist.nil?) or (options.wordlist.empty?)
|
52
|
+
bruteforce = CoBreak::BruteForze.new(options)
|
53
|
+
bruteforce.banner_wordlist()
|
54
|
+
bruteforce.wordlist
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|