bitter_domain 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
  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: