bitter_domain 0.1.0 → 0.1.1
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 +4 -4
- data/Gemfile.lock +2 -0
- data/bin/bitter_domain +5 -7
- data/bitter_domain.gemspec +1 -0
- data/lib/bitter_domain.rb +4 -3
- data/lib/bitter_domain/bit_shifter.rb +3 -3
- data/lib/bitter_domain/domain_mapper.rb +84 -0
- data/lib/bitter_domain/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50cc7524ec85308d7779171078697a4375c44b4cd064de0bcb854d000e72d225
|
4
|
+
data.tar.gz: 72f92a81a31b21799d83b7dc3c2da4773168feded8a0322ac2d6db7f25cc2c2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 599de2c0dd413a33d9e74f7fc6365cfcc4644e8af0c513af7e0c0601d03ac1c8f0e313c7313c930a179d7429a1077c8aa48faae7a53aa8ff38b52e3c327fd840
|
7
|
+
data.tar.gz: 9e37fe354980e43e04c887a3b4393ee0e33b1cdf9adff87c4b017e65cd9e46aa5f846678869022c01af4215929358aca623a8b07adc046fd46b3efb754844290
|
data/Gemfile.lock
CHANGED
@@ -3,6 +3,7 @@ PATH
|
|
3
3
|
specs:
|
4
4
|
bitter_domain (0.1.0)
|
5
5
|
colorize
|
6
|
+
public_suffix
|
6
7
|
whois (~> 4.0.8)
|
7
8
|
whois-parser (~> 1.1.0)
|
8
9
|
|
@@ -51,6 +52,7 @@ GEM
|
|
51
52
|
pry (0.12.2)
|
52
53
|
coderay (~> 1.1.0)
|
53
54
|
method_source (~> 0.9.0)
|
55
|
+
public_suffix (3.0.3)
|
54
56
|
rake (10.5.0)
|
55
57
|
rb-fsevent (0.10.3)
|
56
58
|
rb-inotify (0.10.0)
|
data/bin/bitter_domain
CHANGED
@@ -13,18 +13,16 @@ class CLI < Thor
|
|
13
13
|
method_option :url, aliases: ['-u'], desc: 'url to generate shifts for', required: true
|
14
14
|
method_option :verbose, aliases: ['-v'], desc: 'print verbose output'
|
15
15
|
def gen_shifts()
|
16
|
-
|
17
|
-
|
18
|
-
shifted_domains = shifter.get_shifted_domains()
|
19
|
-
.map { |dom| "#{dom}.#{ext}" }
|
16
|
+
mapper = BitterDomain::DomainMapper.new(options[:url])
|
17
|
+
shifted_domains = mapper.gen_shifts
|
20
18
|
|
21
19
|
if options["flips-only".to_sym]
|
22
|
-
|
20
|
+
mapper.print_shifts
|
23
21
|
else
|
24
22
|
checker = BitterDomain::DomainChecker.new(shifted_domains)
|
25
23
|
checker.test_domains
|
26
|
-
|
27
|
-
options[:verbose] ?
|
24
|
+
mapper.check_domains(options[:retry])
|
25
|
+
options[:verbose] ? mapper.print_verbose : mapper.print_available
|
28
26
|
end
|
29
27
|
end
|
30
28
|
end
|
data/bitter_domain.gemspec
CHANGED
@@ -39,6 +39,7 @@ Gem::Specification.new do |spec|
|
|
39
39
|
spec.add_dependency "colorize"
|
40
40
|
spec.add_dependency "whois", "~> 4.0.8"
|
41
41
|
spec.add_dependency "whois-parser", "~> 1.1.0"
|
42
|
+
spec.add_dependency "public_suffix"
|
42
43
|
|
43
44
|
spec.add_development_dependency "bundler", "~> 1.17"
|
44
45
|
spec.add_development_dependency "rake", "~> 10.0"
|
data/lib/bitter_domain.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
require "bitter_domain/version"
|
2
|
-
require "bitter_domain/bit_shifter"
|
3
|
-
require "bitter_domain/domain_checker"
|
4
1
|
module BitterDomain
|
2
|
+
require "bitter_domain/version"
|
3
|
+
require "bitter_domain/bit_shifter"
|
4
|
+
require "bitter_domain/domain_checker"
|
5
|
+
require "bitter_domain/domain_mapper"
|
5
6
|
end
|
@@ -6,6 +6,7 @@ module BitterDomain
|
|
6
6
|
|
7
7
|
def initialize(domain)
|
8
8
|
@domain = domain
|
9
|
+
@shifts = []
|
9
10
|
end
|
10
11
|
|
11
12
|
def valid_domain?(domain)
|
@@ -15,13 +16,12 @@ module BitterDomain
|
|
15
16
|
def gen_shifts(byte)
|
16
17
|
# left-shift 1 through each bit of the byte
|
17
18
|
# and XOR to flip a single one at each position
|
18
|
-
shifts = []
|
19
19
|
8.times do |i|
|
20
20
|
shifted = byte ^ (1 << i)
|
21
|
-
shifts.push(shifted)
|
21
|
+
@shifts.push(shifted)
|
22
22
|
end
|
23
23
|
|
24
|
-
shifts
|
24
|
+
@shifts
|
25
25
|
end
|
26
26
|
|
27
27
|
def get_shifted_domains
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'uri/http'
|
2
|
+
require 'public_suffix'
|
3
|
+
|
4
|
+
module BitterDomain
|
5
|
+
class DomainMapper
|
6
|
+
attr_reader :shifted_domains
|
7
|
+
attr_reader :domain
|
8
|
+
|
9
|
+
def initialize(domain)
|
10
|
+
@domain = parse_domain(domain)
|
11
|
+
@checker = nil
|
12
|
+
@shifted_domains = []
|
13
|
+
end
|
14
|
+
|
15
|
+
def gen_shifts
|
16
|
+
host = @domain.sld
|
17
|
+
shifter = BitterDomain::BitShifter.new(host)
|
18
|
+
self.checker = nil
|
19
|
+
@shifted_domains = shifter.get_shifted_domains
|
20
|
+
.map { |dom| "#{dom}.#{@domain.tld}" }
|
21
|
+
end
|
22
|
+
|
23
|
+
def print_shifts
|
24
|
+
self.shifted_domains.each { |shift| $stdout.puts "#{shift}" }
|
25
|
+
end
|
26
|
+
|
27
|
+
def domain=(domain)
|
28
|
+
self.domain = parse_domain(domain)
|
29
|
+
gen_shifts
|
30
|
+
end
|
31
|
+
|
32
|
+
def check_domains(attempt_retry=false)
|
33
|
+
self.checker = BitterDomain::DomainChecker.new(@shifted_domains)
|
34
|
+
self.checker.test_domains
|
35
|
+
|
36
|
+
self.checker.retry if attempt_retry
|
37
|
+
|
38
|
+
self.checker.available
|
39
|
+
end
|
40
|
+
|
41
|
+
def get_available
|
42
|
+
self.checker.available
|
43
|
+
end
|
44
|
+
|
45
|
+
def get_errors
|
46
|
+
self.checker.errors
|
47
|
+
end
|
48
|
+
|
49
|
+
def get_tested
|
50
|
+
self.checker.tested
|
51
|
+
end
|
52
|
+
|
53
|
+
def retry
|
54
|
+
self.checker.retry
|
55
|
+
end
|
56
|
+
|
57
|
+
def print_verbose
|
58
|
+
self.checker.print_verbose
|
59
|
+
end
|
60
|
+
|
61
|
+
def print_available
|
62
|
+
self.checker.print_available
|
63
|
+
end
|
64
|
+
|
65
|
+
def query_shifts
|
66
|
+
gen_shifts
|
67
|
+
check_domains
|
68
|
+
|
69
|
+
get_available
|
70
|
+
end
|
71
|
+
|
72
|
+
|
73
|
+
protected
|
74
|
+
|
75
|
+
attr_accessor :checker
|
76
|
+
def parse_domain(url)
|
77
|
+
uri = URI.parse(url)
|
78
|
+
uri = URI.parse("http://#{url}") if uri.scheme.nil?
|
79
|
+
host = uri.host.downcase
|
80
|
+
|
81
|
+
PublicSuffix.parse(host)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitter_domain
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- axylos
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04
|
11
|
+
date: 2019-05-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 1.1.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: public_suffix
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: bundler
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -160,6 +174,7 @@ files:
|
|
160
174
|
- lib/bitter_domain.rb
|
161
175
|
- lib/bitter_domain/bit_shifter.rb
|
162
176
|
- lib/bitter_domain/domain_checker.rb
|
177
|
+
- lib/bitter_domain/domain_mapper.rb
|
163
178
|
- lib/bitter_domain/version.rb
|
164
179
|
homepage: https://github.com/Axylos/squat_logs
|
165
180
|
licenses:
|