brute_force 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba9aeaf6b85fcf3ff4d380f806be110c6b9c7137
4
- data.tar.gz: b069b4e5766acbcbbb4453ca5fe9ec7e76c45a10
3
+ metadata.gz: 4844e22bdfd282e1a2677a5df8edae17478ad445
4
+ data.tar.gz: 1a6fde10b07112d823333198fc75dd5820f92853
5
5
  SHA512:
6
- metadata.gz: e4ddc4dfd4b1040b722613840cfc935391bedd2051929652be6e688366601830a4d5d69c227970d9ed01e7e66ed00c03c446cfb83a25a91dc2e4b5afeb567b57
7
- data.tar.gz: eb0c35d91b1e8ddcd2feaf656d2a8553143f5268f8dbdf2af9bf98c2210d5690dcac97ca50e73c57050988de7dcb1cbadef5c0d7467e3d7552ae4f28829c67a7
6
+ metadata.gz: 4fc33997eec2ac40d7c5ecb353409a0916a7fba87dd290ae5f36fc165088d236159322e40f245b21918c50473616d8cb1f1d675573971dbddf679c82eb01a129
7
+ data.tar.gz: 862c4f9fa0630b6e174b4ebb0a935f4f622c93abd0e03c80f19005fc15e34cda0d68d059e0f73bc3cff2819b57cd8b419286c1e985a24c64f10b43649547d9a8
data/README.md CHANGED
@@ -30,7 +30,7 @@ Or install it yourself as:
30
30
 
31
31
  ```ruby
32
32
  #default signature
33
- BruteForce::Generator.new(letters: BruteForce::ALPHA_NUMERIC, filter: nil, starts_from: '')
33
+ BruteForce::Generator.new(letters: BruteForce::ALPHANUMERIC, filter: nil, starts_from: '')
34
34
 
35
35
  BruteForce::Generator.new
36
36
  BruteForce::Generator.new(letters: BruteForce::LOWERCASE | ['-'])
@@ -54,7 +54,7 @@ require 'brute_force'
54
54
  require 'digest/md5'
55
55
  require 'benchmark'
56
56
 
57
- BruteForce::Generator.new(letters: BruteForce::LOWER_ALPHA_NUMERIC | BruteForce::SYMBOL, starts_from: 'lolaaaa').tap do |g|
57
+ BruteForce::Generator.new(letters: BruteForce::LOWER_ALPHANUMERIC | BruteForce::ASCII_SYMBOL, starts_from: 'lolaaaa').tap do |g|
58
58
  target_hash = 'c68ab9687ec94f924c6548671d646e1b'
59
59
  count = 0
60
60
  hr = '-' * 85
@@ -78,20 +78,20 @@ end
78
78
  ```
79
79
  Status | Word | Hash | Number of attempts
80
80
  -------------------------------------------------------------------------------------
81
- Searching | lold4f[ | 043f3b74588a7cd039a73b6590acd0dd | 1000000
82
- Searching | lolf~l# | 8d7d3e5f5091b433421ae171e89763c0 | 2000000
83
- Searching | loli^rj | 84c5997b9d3ebc71c7a9010ed161a37c | 3000000
84
- Searching | loll>x | 40777367a79b9644702a03addf130542 | 4000000
85
- Searching | lolo."- | e8e72e1eea1f1315bf5f622da7241354 | 5000000
86
- Searching | lolr((t | 5dddefb07d81393a535da22d6a809ff0 | 6000000
87
- Searching | lolu".9 | 827e73d722c4631623a1ff8e973d1072 | 7000000
88
- Searching | lolxw=[ | 1269a5f1e373f6882f4aa9df61ff5153 | 8000000
89
- Searching | lol q]# | 979dfab06b4c4b0c804bd81736052c4e | 9000000
90
- Searching | lol#k}j | e30345d498bef4aeaf6a5733d42e199d | 10000000
81
+ Searching | lolc| ) | 40f14259308d216d91332fd1598b5998 | 1000000
82
+ Searching | lolf/_a | f05b19bfe63fac31107a000bbe7adfa9 | 2000000
83
+ Searching | loli!i* | a5f4c6425ec7e8e2126e008f7ae5b920 | 3000000
84
+ Searching | lollm)b | 716555993d324cefc0ff7a6d4d8bf83a | 4000000
85
+ Searching | lolo80+ | 670b92da3b79d23fc7162b0afdc5bc2b | 5000000
86
+ Searching | lolq`rc | 2a3a3e607480640e3ead5490d3388f8e | 6000000
87
+ Searching | lolt-;, | 1a90f2fde019f2e024e5940d08e26772 | 7000000
88
+ Searching | lolwz9d | 22f9a3c1139d85becfbccc4a2d89d1e3 | 8000000
89
+ Searching | lolzkz- | 6e1ceb0549bb2c535b0686c14a60ac43 | 9000000
90
+ Searching | lol"5^e | 8da39ab9f8d8a021df908a0bfa5093db | 10000000
91
91
  -------------------------------------------------------------------------------------
92
- Found | lol$123 | c68ab9687ec94f924c6548671d646e1b | 10245334
92
+ Found | lol$123 | c68ab9687ec94f924c6548671d646e1b | 10691387
93
93
  -------------------------------------------------------------------------------------
94
- 71.234000 0.000000 71.234000 ( 71.357751)
94
+ 73.062000 0.000000 73.062000 ( 73.156629)
95
95
  ```
96
96
 
97
97
  ## Development
data/lib/brute_force.rb CHANGED
@@ -3,19 +3,22 @@ require 'radix'
3
3
 
4
4
  module BruteForce
5
5
  EMPTY = ["\0"]
6
+ CONTROL = EMPTY | [*"\0".."\x1F"]
6
7
  LOWERCASE = EMPTY | [*'a'..'z']
7
8
  UPPERCASE = EMPTY | [*'A'..'Z']
8
9
  NUMERIC = EMPTY | [*'0'..'9']
9
- SYMBOL = EMPTY | [*' '..'/', *':'..'@', *'['..'`', *'{'..'~']
10
+ ASCII_SYMBOL = EMPTY | [*' '..'/', *':'..'@', *'['..'`', *'{'.."\x7F"]
11
+ ASCII_EXTENDED = EMPTY | [*"\x80".."\xFF"]
10
12
  UNICODE = EMPTY | [*"\u007B".."\u00BF", *"\u02B0".."\u037F", *"\u2000".."\u2BFF"]
11
13
 
12
- LOWER_ALPHA_NUMERIC = NUMERIC | LOWERCASE
13
- UPPER_ALPHA_NUMERIC = NUMERIC | UPPERCASE
14
- ALPHA_NUMERIC = NUMERIC | LOWERCASE | UPPERCASE
15
- ALL = ALPHA_NUMERIC | SYMBOL | UNICODE
14
+ LOWER_ALPHANUMERIC = NUMERIC | LOWERCASE
15
+ UPPER_ALPHANUMERIC = NUMERIC | UPPERCASE
16
+ ALPHANUMERIC = NUMERIC | LOWERCASE | UPPERCASE
17
+ ASCII_PRINTABLE = ASCII_SYMBOL | ALPHANUMERIC
18
+ ALL = CONTROL | ALPHANUMERIC | ASCII_SYMBOL | ASCII_EXTENDED | UNICODE
16
19
 
17
20
  class Generator
18
- def initialize(letters: ALPHA_NUMERIC, filter: nil, starts_from: '')
21
+ def initialize(letters: ALPHANUMERIC, filter: nil, starts_from: '')
19
22
  self.letters = letters
20
23
  self.filter = filter
21
24
  self.counter = word_to_number(starts_from)
@@ -25,7 +28,7 @@ module BruteForce
25
28
  begin
26
29
  word = number_to_word(self.counter)
27
30
  self.counter+=1
28
- end while !filter.nil? && (filter.is_a?(Regexp)? !filter.match(word) : !filter.call(word))
31
+ end while not allowed?(word)
29
32
  word
30
33
  end
31
34
 
@@ -39,5 +42,9 @@ module BruteForce
39
42
  def number_to_word(number)
40
43
  number.b(letters.length).to_a(letters).join
41
44
  end
45
+
46
+ def allowed?(word)
47
+ (filter.nil?)? true : (filter.is_a?(Regexp)? filter.match(word) : filter.call(word))
48
+ end
42
49
  end
43
50
  end
@@ -1,3 +1,3 @@
1
1
  module BruteForce
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brute_force
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pagliaro Alexandre