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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5648f4c353c1bd404ffe48dac0d496c908544ec42ad7683385a5c7b36653f65b
4
- data.tar.gz: 411b8eae843f42168ce7e7e538e7c32c564a059177dad0532ce155cfc01ab7b1
3
+ metadata.gz: 50cc7524ec85308d7779171078697a4375c44b4cd064de0bcb854d000e72d225
4
+ data.tar.gz: 72f92a81a31b21799d83b7dc3c2da4773168feded8a0322ac2d6db7f25cc2c2a
5
5
  SHA512:
6
- metadata.gz: f34d05508e9019453ad7b09c98fe523be8ee5beb206811caf22ca743b53113025cc33a1b7595a0821c0a059ba4bb715cd843d585113f2d6656b0092a4c0cf9fd
7
- data.tar.gz: aa0da73a4ab66b582dd49571b28d365cbe706192668a5680ad381ad60b836b4a7a3b034c759bd2a1b13d3b0bb86cdf859ae1dc9df950b65e64fcd07843029eb7
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
- host, ext = options[:url].split(".")
17
- shifter = BitterDomain::BitShifter.new(host)
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
- shifted_domains.each { |shift| $stdout.puts "#{shift}" }
20
+ mapper.print_shifts
23
21
  else
24
22
  checker = BitterDomain::DomainChecker.new(shifted_domains)
25
23
  checker.test_domains
26
- checker.retry if options[:retry]
27
- options[:verbose] ? checker.print_verbose : checker.print_available
24
+ mapper.check_domains(options[:retry])
25
+ options[:verbose] ? mapper.print_verbose : mapper.print_available
28
26
  end
29
27
  end
30
28
  end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module BitterDomain
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  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.0
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 00:00:00.000000000 Z
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: