cobreak 0.0.6 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
data/lib/cobreak.rb CHANGED
File without changes
@@ -0,0 +1,10 @@
1
+ module CoBreak
2
+ class Binary
3
+ def self.binary(dato)
4
+ return dato.unpack("B*").join('')
5
+ end
6
+ def self.hexbinary(dato)
7
+ return [dato].pack("B*")
8
+ end
9
+ end
10
+ end
@@ -1,16 +1,13 @@
1
1
  class CesarCifrado
2
- attr_accessor :dato
3
- def initialize(dato = nil)
4
- @dato = dato
5
- end
6
2
  def cesar(dato, rotasiones, orientacion = 1)
7
- alfa_mayus = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
8
- alfa_minus = "abcdefghijklmnopqrstuvwxyz"
3
+ cesar = OpenStruct.new
4
+ cesar.cad_rot = []
5
+ alfa_mayus = ('A'..'Z').to_a
6
+ alfa_minus = ('a'..'z').to_a
9
7
  alf = 26
10
8
  lit_mayus = 65
11
9
  lit_minus = 97
12
10
  cad_rot = ""
13
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m CipherText: "
14
11
  for letra in dato.chars
15
12
  if !letra.match(/^[[:alpha:]]$/)
16
13
  cad_rot += letra
@@ -25,11 +22,9 @@ class CesarCifrado
25
22
  var_ascii = letra.ord
26
23
  rot_ver = rotasiones * orientacion
27
24
  new_pos = (var_ascii - limit + rot_ver) % alf
28
- cad_rot = alfabeto[new_pos]
29
- print cad_rot
25
+ cesar.cad_rot << alfabeto[new_pos]
30
26
  end
31
- puts "\n\e[1;32m[\e[0m+\e[1;32m]\e[0m Rotations Number: #{rotasiones}"
27
+ return cesar.cad_rot.join('')
32
28
  end
33
29
  end
34
- CifraCesar = CesarCifrado.new
35
- DecifraCesar = CesarCifrado.new
30
+ Cesar = CesarCifrado.new
@@ -2,31 +2,33 @@ require 'base64'
2
2
  require 'base32'
3
3
  require 'base16'
4
4
  require 'ascii85'
5
-
6
- class Cifrado
7
- attr_accessor :data
8
- def initialize(data = nil)
9
- @data = data
10
- end
11
- def base16(dato)
12
- bas16 = Base16.encode16(dato)
13
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Ciphertext: #{bas16}\e[0m"
14
- end
15
- def base32(dato)
16
- bas32 = Base32.encode(dato)
17
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Ciphertext: #{bas32}\e[0m"
18
- end
19
- def base64(dato)
20
- bas64 = Base64.encode64(dato)
21
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Ciphertext: #{bas64}"
22
- end
23
- def binary(dato)
24
- result = dato.unpack("B*").join('')
25
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Ciphertext: #{result}"
26
- end
27
- def ascii85(dato)
28
- asci85 = Ascii85.encode(dato)
29
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m Ciphertext: #{asci85}"
5
+ require 'cobreak/cesar'
6
+ require 'cobreak/binary'
7
+ module CoBreak
8
+ class Cifrado
9
+ def self.cipher(mode, dato)
10
+ cipher = OpenStruct.new
11
+ cipher.mode = mode
12
+ cipher.dato = dato
13
+ if (cipher.mode.eql?('base16'))
14
+ cipher.result = Base16.encode16(dato)
15
+ elsif (cipher.mode.eql?('base32'))
16
+ cipher.result = Base32.encode(dato)
17
+ elsif (cipher.mode.eql?('base64'))
18
+ cipher.result = Base64.encode64(dato)
19
+ elsif (cipher.mode.eql?('ascii85'))
20
+ cipher.result = Ascii85.encode(dato)
21
+ elsif (cipher.mode.eql?('cesar'))
22
+ cipher.result = Cesar.cesar(dato, ARGV[0].to_i)
23
+ elsif (cipher.mode.eql?('binary'))
24
+ cipher.result = CoBreak::Binary.binary(dato)
25
+ end
26
+ unless (cipher.result.nil?) or (cipher.result.eql?(cipher.dato))
27
+ puts "\n\e[1;32m[\e[37m+\e[1;32m]\e[37m Ciphertext: #{cipher.result}"
28
+ puts "\e[1;32m[\e[37m+\e[1;32m]\e[37m Number Rotations: #{ARGV[0]}" if (cipher.mode.eql?('cesar'))
29
+ else
30
+ puts "\e[1;31m[\e[37m+\e[1;31m]\e[37m Not Cipher Text..."
31
+ end
32
+ end
30
33
  end
31
34
  end
32
- Cifra = Cifrado.new
@@ -8,7 +8,6 @@ module CoBreak
8
8
  begin
9
9
  require 'cobreak/cifrado'
10
10
  require 'cobreak/decifrado'
11
- require 'cobreak/Cesar'
12
11
  require 'cobreak/encrypt'
13
12
  require 'cobreak/decrypt'
14
13
  rescue LoadError => e
@@ -23,72 +22,25 @@ module CoBreak
23
22
  @options = $options
24
23
  @options.enc = "" if @options.enc.nil? == true
25
24
  @options.dec = "" if @options.dec.nil? == true
26
- if (@options.enc.casecmp?('base16')) or (@options.dec.casecmp?('base16'));
25
+ @options.cipher = %w[Base16 Base32 Base64 Ascii85 Binary Cesar]
26
+ if (@options.cipher.include?(@options.enc.capitalize)) or (@options.cipher.include?(@options.dec.capitalize));
27
27
  if (File.exists?(@options.algo));
28
28
  IO.foreach(@options.algo){|line|
29
- line.chomp!
30
- Cifra::base16(line.to_s) if (@options.enc.casecmp?('base16'))
31
- Decifra::base16(line.to_s) if (@options.dec.casecmp?('base16'))
29
+ line.chomp!
30
+ if (@options.cipher?(@options.enc.capitalize))
31
+ CoBreak::Cifrado.cipher(line.to_s)
32
+ end
33
+ if (@options.cipher.include?(@options.dec.capitalize))
34
+ CoBreak::Decifrado.cipher(line.to_s)
35
+ end
32
36
  }
33
- else;
34
- Cifra::base16(@options.algo.to_s) if (@options.enc.casecmp?('base16'))
35
- Decifra::base16(@options.algo.to_s) if (@options.dec.casecmp?('base16'))
36
- end
37
- elsif (@options.enc.casecmp?('base32')) or (@options.dec.casecmp?('base32'));
38
- if (File.exists?(@options.algo));
39
- IO.foreach(@options.algo){|line|
40
- line.chomp!
41
- Cifra::base32(line.to_s) if (@options.enc.casecmp?('base32'))
42
- Decifra::base32(line.to_s) if (@options.dec.casecmp('base32'))
43
- }
44
- else;
45
- Cifra::base32(@options.algo.to_s) if (@options.enc.casecmp?('base32'))
46
- Decifra::base32(@options.algo.to_s) if (@options.dec.casecmp?('base32'))
47
- end
48
- elsif (@options.enc.casecmp?('base64')) or (@options.dec.casecmp?('base64'));
49
- if (File.exists?(@options.algo));
50
- IO.foreach(@options.algo){|line|
51
- line.chomp!
52
- Cifra::base64(line.to_s) if (@options.enc.casecmp?('base64'))
53
- Decifra::base64(line.to_s) if (@options.dec.casecmp?('base64'))
54
- }
55
- else;
56
- Cifra::base64(@options.algo.to_s) if (@options.enc.casecmp?('base64'))
57
- Decifra::base64(@options.algo.to_s) if (@options.dec.casecmp?('base64'))
58
- end
59
- elsif (@options.enc.casecmp?('ascii85')) or (@options.dec.casecmp?('ascii85'));
60
- if (File.exists?(@options.algo));
61
- IO.foreach(@options.algo){|line|
62
- line.chomp!
63
- Cifra::ascii85(line.to_s) if (@options.enc.casecmp?('ascii85'))
64
- Decifra::ascii85(line.to_s) if (@options.dec.casecmp?('ascii85'))
65
- }
66
- else;
67
- Cifra::ascii85(@options.algo.to_s) if (@options.enc.casecmp?('ascii85'))
68
- Decifra::ascii85(@options.algo.to_s) if (@options.dec.casecmp?('ascii85'))
69
- end
70
- elsif (@options.enc.casecmp?('binary')) or (@options.dec.casecmp?('binary'));
71
- if (File.exists?(@options.algo));
72
- IO.foreach(@options.algo){|line|
73
- line.chomp!
74
- Cifra::binary(line.to_s) if (@options.enc.casecmp?('binary'))
75
- Decifra::binary(line.to_s) if (@options.dec.casecmp?('binary'))
76
- }
77
- else;
78
- Cifra::binary(@options.algo.to_s) if (@options.enc.casecmp?('binary'))
79
- Decifra::binary(@options.algo.to_s) if (@options.dec.casecmp?('binary'))
80
- end
81
- elsif (@options.enc.casecmp?('cesar')) or (@options.dec.casecmp?('cesar'));
82
- dat = ARGV[0]
83
- if (File.exists?(@options.algo));
84
- IO.foreach(@options.algo){|line|
85
- line.chomp!
86
- CifraCesar::cesar(line.to_s, dat.to_i) if (@options.enc.casecmp?('cesar'))
87
- DecifraCesar::cesar(line.to_s, dat.to_i, -1) if (@options.dec.casecmp?('cesar'))
88
- }
89
- else;
90
- CifraCesar::cesar(@options.algo.to_s, dat.to_i) if (@options.enc.casecmp?('cesar'))
91
- DecifraCesar::cesar(@options.algo.to_s, dat.to_i, -1) if (@options.dec.casecmp?('cesar'))
37
+ else
38
+ if (@options.cipher.include?(@options.enc.capitalize))
39
+ CoBreak::Cifrado::cipher(@options.enc, @options.algo.to_s)
40
+ end
41
+ if (@options.cipher.include?(@options.dec.capitalize))
42
+ CoBreak::Decifrado::cipher(@options.dec,@options.algo.to_s)
43
+ end
92
44
  end
93
45
  end
94
46
  end
@@ -98,94 +50,25 @@ module CoBreak
98
50
  @options = $options
99
51
  @options.encrypt = "" if @options.encrypt.nil? == true
100
52
  @options.decrypt = "" if @options.decrypt.nil? == true
101
- if (@options.encrypt.casecmp?("md4")) or (@options.decrypt.casecmp?("md4"));
102
- if (File.exists?(@options.algo));
103
- IO.foreach(@options.algo){|line|
104
- line.chomp!
105
- EnCrypt::md4(line) if (@options.encrypt.casecmp?("md4"))
106
- DeCrypt::md4(line) if (@options.decrypt.casecmp?("md4"))
107
- }
108
- else
109
- EnCrypt::md4(@options.algo) if (@options.encrypt.casecmp?("md4"))
110
- DeCrypt::md4(@options.algo) if (@options.decrypt.casecmp?("md4"))
111
- end
112
- elsif (@options.encrypt.casecmp?("md5")) or (@options.decrypt.casecmp?("md5"));
113
- if (File.exists?(@options.algo));
114
- IO.foreach(@options.algo){|line|
115
- line.chomp!
116
- EnCrypt::md5(line) if (@options.encrypt.casecmp?("md5"))
117
- DeCrypt::md5(line) if (@options.decrypt.casecmp?("md5"))
118
- }
119
- else
120
- EnCrypt::md5(@options.algo) if (@options.encrypt.casecmp?("md5"))
121
- DeCrypt::md5(@options.algo) if (@options.decrypt.casecmp?("md5"))
122
- end
123
- elsif (@options.encrypt.casecmp?("sha1")) or (@options.decrypt.casecmp?("sha1"))
124
- if (File.exists?(@options.algo));
125
- IO.foreach(@options.algo){|line|
126
- line.chomp!
127
- EnCrypt::sha1(line) if (@options.encrypt.casecmp?("sha1"))
128
- DeCrypt::sha1(line) if (@options.decrypt.casecmp?("sha1"))
129
- }
130
- else
131
- EnCrypt::sha1(@options.algo) if (@options.encrypt.casecmp?("sha1"))
132
- DeCrypt::sha1(@options.algo) if (@options.decrypt.casecmp?("sha1"))
133
- end
134
- elsif (@options.encrypt.casecmp?("sha224")) or (@options.decrypt.casecmp?("sha224"));
135
- if (File.exists?(@options.algo));
136
- IO.foreach(@options.algo){|line|
137
- line.chomp!
138
- EnCrypt::sha224(line) if (@options.encrypt.casecmp?("sha224"))
139
- DeCrypt::sha224(line) if (@options.decrypt.casecmp?("sha224"))
140
- }
141
- else
142
- EnCrypt::sha224(@options.algo) if (@options.encrypt.casecmp?("sha224"))
143
- DeCrypt::sha224(@options.algo) if (@options.decrypt.casecmp?("sha224"))
144
- end
145
- elsif (@options.encrypt.casecmp?("sha256")) or (@options.decrypt.casecmp?("sha256"));
146
- if (File.exists?(@options.algo));
147
- IO.foreach(@options.algo){|line|
148
- line.chomp!
149
- EnCrypt::sha256(line) if (@options.encrypt.casecmp?("sha256"))
150
- DeCrypt::sha256(line) if (@options.decrypt.casecmp?("sha256"))
151
- }
152
- else
153
- EnCrypt::sha256(@options.algo) if (@options.encrypt.casecmp?("sha256"))
154
- DeCrypt::sha256(@options.algo) if (@options.decrypt.casecmp?("sha256"))
155
- end
156
- elsif (@options.encrypt.casecmp?("sha384")) or (@options.decrypt.casecmp?("sha384"));
157
- if (File.exists?(@options.algo));
158
- IO.foreach(@options.algo){|line|
159
- line.chomp!
160
- EnCrypt::sha384(line) if (@options.encrypt.casecmp?("sha384"))
161
- DeCrypt::sha384(line) if (@options.decrypt.casecmp?("sha384"))
162
- }
163
- else
164
- EnCrypt::sha384(@options.algo) if (@options.encrypt.casecmp?("sha384"))
165
- DeCrypt::sha384(@options.algo) if (@options.decrypt.casecmp?("sha384"))
166
- end
167
- elsif (@options.encrypt.casecmp?("sha512")) or (@options.decrypt.casecmp?("sha512"));
168
- if (File.exists?(@options.algo));
169
- IO.foreach(@options.algo){|line|
170
- line.chomp!
171
- EnCrypt::sha512(line) if (@options.encrypt.casecmp?("sha512"))
172
- DeCrypt::sha512(line) if (@options.decrypt.casecmp?("sha512"))
173
- }
174
- else
175
- EnCrypt::sha512(@options.algo) if (@options.encrypt.casecmp?("sha512"))
176
- DeCrypt::sha512(@options.algo) if (@options.decrypt.casecmp?("sha512"))
177
- end
178
- elsif (@options.encrypt.casecmp?("ripemd160")) or (@options.decrypt.casecmp?("ripemd160"));
53
+ show = OpenStruct.new
54
+ show.crypt = %w[MD4 MD5 SHA1 SHA224 SHA256 SHA384 SHA512 RIPEMD160]
55
+ if (show.crypt.include?(@options.encrypt.upcase)) or (show.crypt.include?(@options.decrypt.upcase));
179
56
  if (File.exists?(@options.algo));
180
57
  IO.foreach(@options.algo){|line|
181
- line.chomp!
182
- EnCrypt::ripemd160(line) if (@options.encrypt.casecmp?("ripemd160"))
183
- DeCrypt::ripemd160(line) if (@options.decrypt.casecmp?("ripemd160"))
58
+ line.chomp!
59
+ EnCrypt::show(@options.encrypt, line) if (show.crypt.include?(@options.encrypt.upcase))
60
+ DeCrypt::show(@options.decrypt, line) if (show.crypt.include?(@options.decrypt.upcase))
184
61
  }
185
62
  else
186
- EnCrypt::ripemd160(@options.algo) if (@options.encrypt.casecmp?("ripemd160"))
187
- DeCrypt::ripemd160(@options.algo) if (@options.decrypt.casecmp?("ripemd160"))
63
+ if (show.crypt.include?(@options.encrypt.upcase))
64
+ EnCrypt::show(@options.encrypt, @options.algo)
65
+ end
66
+ if (show.crypt.include?(@options.decrypt.upcase))
67
+ DeCrypt::show(@options.decrypt, @options.algo)
68
+ end
188
69
  end
70
+ else
71
+ abort "\e[31m[\e[37m✘\e[31m]\e[37m Invalid Hash Format"
189
72
  end
190
73
  end
191
74
  end
File without changes
@@ -2,31 +2,35 @@ require 'base64'
2
2
  require 'base32'
3
3
  require 'base16'
4
4
  require 'ascii85'
5
-
6
- class Decifrado
7
- attr_accessor :data
8
- def initialize(data = nil)
9
- @data = data
10
- end
11
- def base16(dato)
12
- bas16 = Base16.decode16(dato)
13
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m DecipherText: #{bas16}\e[0m"
14
- end
15
- def base32(dato)
16
- bas32 = Base32.decode(dato)
17
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m DecipherText: #{bas32}\e[0m"
18
- end
19
- def base64(dato)
20
- bas64 = Base64.decode64(dato)
21
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m DecipherText: #{bas64}"
22
- end
23
- def binary(dato)
24
- result = [dato].pack("B*")
25
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m DecipherText: #{result}"
26
- end
27
- def ascii85(dato)
28
- asci85 = Ascii85.decode(dato)
29
- puts "\e[1;32m[\e[0m+\e[1;32m]\e[0m DecipherText: #{asci85}"
5
+ require 'cobreak/cesar'
6
+ require 'cobreak/binary'
7
+ module CoBreak
8
+ class Decifrado
9
+ def self.cipher(mode, dato)
10
+ decipher = OpenStruct.new
11
+ decipher.mode = mode
12
+ decipher.dato = dato
13
+ if (decipher.mode.eql?('base16'))
14
+ decipher.result = Base16.decode16(decipher.dato)
15
+ elsif (decipher.mode.eql?('base32'))
16
+ decipher.result = Base32.decode(decipher.dato)
17
+ elsif (decipher.mode.eql?('base64'))
18
+ decipher.result = Base64.decode64(decipher.dato)
19
+ elsif (decipher.mode.eql?('ascii85'))
20
+ decipher.result = Ascii85.decode(decipher.dato)
21
+ elsif (decipher.mode.eql?('cesar'))
22
+ decipher.result = Cesar.cesar(decipher.dato, ARGV[0].to_i, -1)
23
+ elsif (decipher.mode.eql?('binary'))
24
+ decipher.result = CoBreak::Binary.hexbinary(decipher.dato)
25
+ end
26
+ unless (decipher.result.nil?) or (decipher.result.eql?(decipher.dato))
27
+ puts "\n\e[1;32m[\e[37m+\e[1;32m]\e[37m DecipherText: #{decipher.result}"
28
+ if (decipher.mode.eql?('cesar'))
29
+ puts "\e[1;32m[\e[37m+\e[1;32m]\e[37m Number Rotations: #{ARGV[0]}"
30
+ end
31
+ else
32
+ puts "\e[1;31m[\e[37m+\e[1;31m]\e[37m Not Cipher Text..."
33
+ end
34
+ end
30
35
  end
31
36
  end
32
- Decifra = Decifrado.new
@@ -1,110 +1,43 @@
1
- require 'openssl'
2
- require 'sequel'
3
1
  require 'cobreak/version'
4
2
  class Decrypt
5
- def md4(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'md4.db'))
6
- dbs = Sequel.sqlite
7
- dbs.create_table? :hashes do
8
- String :original
9
- String :hash
10
- end
11
- IO.foreach(wordlist) {|line|
12
- line.chomp!
13
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::MD4.hexdigest(line)}
14
- }
15
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
16
- puts dbs[:hashes].filter(hash:dato).map(:original)
17
- end
18
- def md5(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'md5.db'))
19
- dbs = Sequel.sqlite
20
- dbs.create_table? :hashes do
21
- String :original
22
- String :hash
23
- end
24
- IO.foreach(wordlist) {|line|
25
- line.chomp!
26
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::MD5.hexdigest(line)}
27
- }
28
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
29
- puts dbs[:hashes].filter(hash:dato).map(:original)
30
- end
31
- def sha1(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha1.db'))
32
- dbs = Sequel.sqlite
33
- dbs.create_table? :hashes do
34
- String :original
35
- String :hash
36
- end
37
- IO.foreach(wordlist) {|line|
38
- line.chomp!
39
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::SHA1.hexdigest(line)}
40
- }
41
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
42
- puts dbs[:hashes].filter(hash:dato).map(:original)
43
- end
44
- def sha224(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha224.db'))
45
- dbs = Sequel.sqlite
46
- dbs.create_table? :hashes do
47
- String :original
48
- String :hash
49
- end
50
- IO.foreach(wordlist) {|line|
51
- line.chomp!
52
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::SHA224.hexdigest(line)}
53
- }
54
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
55
- puts dbs[:hashes].filter(hash:dato).map(:original)
56
- end
57
- def sha256(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha256.db'))
58
- dbs = Sequel.sqlite
59
- dbs.create_table? :hashes do
60
- String :original
61
- String :hash
62
- end
63
- IO.foreach(wordlist) {|line|
64
- line.chomp!
65
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::SHA256.hexdigest(line)}
66
- }
67
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
68
- puts dbs[:hashes].filter(hash:dato).map(:original)
69
- end
70
- def sha384(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha384.db'))
71
- dbs = Sequel.sqlite
72
- dbs.create_table? :hashes do
73
- String :original
74
- String :hash
75
- end
76
- IO.foreach(wordlist) {|line|
77
- line.chomp!
78
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::SHA384.hexdigest(line)}
79
- }
80
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
81
- puts dbs[:hashes].filter(hash:dato).map(:original)
82
- end
83
- def sha512(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'sha512.db'))
84
- dbs = Sequel.sqlite
85
- dbs.create_table? :hashes do
86
- String :original
87
- String :hash
88
- end
89
- IO.foreach(wordlist) {|line|
90
- line.chomp!
91
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::SHA512.hexdigest(line)}
92
- }
93
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
94
- puts dbs[:hashes].filter(hash:dato).map(:original)
95
- end
96
- def ripemd160(dato, wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', 'ripemd160.db'))
97
- dbs = Sequel.sqlite
98
- dbs.create_table? :hashes do
99
- String :original
100
- String :hash
101
- end
102
- IO.foreach(wordlist) {|line|
103
- line.chomp!
104
- dbs[:hashes] << {original:line, hash:OpenSSL::Digest::RIPEMD160.hexdigest(line)}
105
- }
106
- print "\e[1;32m[\e[0m+\e[1;32m]\e[0m Decrypted Text: "
107
- puts dbs[:hashes].filter(hash:dato).map(:original)
3
+ def show(mode, dato)
4
+ decrypt = OpenStruct.new
5
+ decrypt.mode = mode.downcase
6
+ decrypt.wordlist = File.join(Gem.path[1], "gems", "cobreak-#{CoBreak.version}", 'lib', 'cobreak', 'show', "#{decrypt.mode}.db")
7
+ dbs = Sequel.sqlite
8
+ dbs.create_table? :hashes do
9
+ String :original
10
+ String :hash
11
+ end
12
+ case decrypt.mode
13
+ when ('md4')
14
+ decrypt.crypt = OpenSSL::Digest::MD4.new
15
+ when ('md5')
16
+ decrypt.crypt = OpenSSL::Digest::MD5.new
17
+ when ('sha1')
18
+ decrypt.crypt = OpenSSL::Digest::SHA1.new
19
+ when ('sha224')
20
+ decrypt.crypt = OpenSSL::Digest::SHA224.new
21
+ when ('sha256')
22
+ decrypt.crypt = OpenSSL::Digest::SHA256.new
23
+ when ('sha384')
24
+ decrypt.crypt = OpenSSL::Digest::SHA384.new
25
+ when ('sha512')
26
+ decrypt.crypt = OpenSSL::Digest::SHA512.new
27
+ when ('ripemd160')
28
+ decrypt.crypt = OpenSSL::Digest::RIPEMD160.new
29
+ end
30
+ File.foreach(decrypt.wordlist) {|line|
31
+ line.chomp!
32
+ dbs[:hashes] << {original:line, hash:decrypt.crypt.hexdigest(line)}
33
+ }
34
+ decrypt.pass = dbs[:hashes].filter(hash:dato).map(:original)
35
+ unless (decrypt.pass.empty?)
36
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Type Hash: #{decrypt.mode}"
37
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Hash Found: #{decrypt.pass.join(',')}\e[0m"
38
+ else
39
+ puts "\e[1;31m[\e[1;37m+\e[1;31m]\e[1;37m Hash Not Found in Database...\e[0m"
40
+ end
108
41
  end
109
42
  end
110
43
  DeCrypt = Decrypt.new