ronin-recon 0.1.0.rc2 → 0.1.0

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: d9353cb03516130e8ab2c0c672c9b989076eede3a91027e8442356550a9698fc
4
- data.tar.gz: 85fd1b4795c9f776be9ac8c378279b4575e7d80ecc0407a092fec925c70614e9
3
+ metadata.gz: fb12d7c803f46db1479703050ae863e2c684bcf02c27e56845f57aabadba8295
4
+ data.tar.gz: 3ecef315a0ef47934ba2b6b7117ad9b2bc9813508f4db64d96e851b09469008b
5
5
  SHA512:
6
- metadata.gz: b55e6f1ce78547f5bc1f5f7571033016ea35835975d87e83ced3ac9a1ce91606194512e42a67eafc40cb67d5179000880c89dd22b3b5f518be908771f50e9ed3
7
- data.tar.gz: 8f3d6ebcb3b2a4547a21af4805d382349f597654d095a7df3b0d2d18ddf262f332221dc3f88a81b1d3f2a7d669e514bb2c44167e8655d11739e099192c0a15b6
6
+ metadata.gz: 8d4956f0572724eb5db72c774ac20202dfef0d56513d1569a3d309c5329a988a3f085db9c3d58bb23f4f7922a6da87c67f69d43971efff50704e89a2486393e9
7
+ data.tar.gz: 87eb036e8d7702d7a9bd2645c1bf152b797e990a6bf0a7f566db8c1f787217a9c14b19f9d93940f6f8645745367bba63cf27ee6b9700214d73567a17b324da6f
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-3.1
1
+ ruby-3.3
data/ChangeLog.md CHANGED
@@ -1,4 +1,4 @@
1
- ### 0.1.0 / 2024-XX-XX
1
+ ### 0.1.0 / 2024-07-22
2
2
 
3
3
  * Initial release:
4
4
  * Uses asynchronous I/O and fibers.
data/README.md CHANGED
@@ -56,6 +56,7 @@ and uses asynchronous I/O to maximize efficiency.
56
56
 
57
57
  * Does not require API keys to run.
58
58
  * Not just a script that runs a bunch of other recon tools.
59
+ * Does not use AI.
59
60
 
60
61
  ## Synopsis
61
62
 
Binary file
data/gemspec.yml CHANGED
@@ -45,13 +45,13 @@ dependencies:
45
45
  async-http: ~> 0.60
46
46
  wordlist: ~> 1.0, >= 1.0.3
47
47
  # Ronin dependencies:
48
- ronin-support: ~> 1.1.0.rc1
49
- ronin-core: ~> 0.2.0.rc1
50
- ronin-db: ~> 0.2.0.rc1
48
+ ronin-support: ~> 1.1
49
+ ronin-core: ~> 0.2
50
+ ronin-db: ~> 0.2
51
51
  ronin-repos: ~> 0.1
52
- ronin-masscan: ~> 0.1.0.rc1
53
- ronin-nmap: ~> 0.1.0.rc1
54
- ronin-web-spider: ~> 0.2.0.rc1
52
+ ronin-masscan: ~> 0.1
53
+ ronin-nmap: ~> 0.1
54
+ ronin-web-spider: ~> 0.2
55
55
 
56
56
  development_dependencies:
57
57
  bundler: ~> 2.0
@@ -19,8 +19,10 @@
19
19
  #
20
20
 
21
21
  require 'ronin/recon/worker'
22
+ require 'ronin/support/text/patterns/network'
22
23
 
23
24
  require 'async/http/internet/instance'
25
+ require 'set'
24
26
 
25
27
  module Ronin
26
28
  module Recon
@@ -33,10 +35,11 @@ module Ronin
33
35
 
34
36
  register 'api/crt_sh'
35
37
 
36
- summary 'Queries https://crt.sh and returns host from each domains certificate.'
38
+ summary 'Queries https://crt.sh'
37
39
 
38
40
  description <<~DESC
39
- Queries https://crt.sh and returns host from each domains certificate.
41
+ Queries https://crt.sh and returns the host names from each valid
42
+ certificate for the domain.
40
43
  DESC
41
44
 
42
45
  accepts Domain
@@ -67,6 +70,11 @@ module Ronin
67
70
  )
68
71
  end
69
72
 
73
+ # Regular expression to verify valid host names.
74
+ #
75
+ # @api private
76
+ HOST_NAME_REGEX = /\A#{Support::Text::Patterns::HOST_NAME}\z/
77
+
70
78
  #
71
79
  # Returns host from each domains certificate.
72
80
  #
@@ -81,15 +89,18 @@ module Ronin
81
89
  # The host from certificate.
82
90
  #
83
91
  def process(domain)
84
- Async do
85
- path = "/?dNSName=#{domain}&exclude=expired&output=json"
86
- response = @client.get(path)
87
- certs = JSON.parse(response.read, symbolize_names: true)
92
+ path = "/?dNSName=#{domain}&exclude=expired&output=json"
93
+ response = @client.get(path)
94
+ certs = JSON.parse(response.read, symbolize_names: true)
95
+ hostnames = Set.new
96
+
97
+ certs.each do |cert|
98
+ common_name = cert[:common_name]
88
99
 
89
- certs.each do |cert|
90
- if (common_name = cert[:common_name])
91
- yield Host.new(common_name)
92
- end
100
+ if common_name &&
101
+ common_name =~ HOST_NAME_REGEX &&
102
+ hostnames.add?(common_name)
103
+ yield Host.new(common_name)
93
104
  end
94
105
  end
95
106
  end
@@ -41,6 +41,7 @@ module Ronin
41
41
 
42
42
  accepts IP
43
43
  outputs OpenPort
44
+ concurrency 1 # prevents overloading the network interface
44
45
 
45
46
  param :ports, String, desc: 'Optional port list to scan'
46
47
 
@@ -32,10 +32,14 @@ module Ronin
32
32
 
33
33
  register 'web/spider'
34
34
 
35
- summary 'Spiders a website'
35
+ summary 'Spiders a website and finds every URL'
36
36
 
37
37
  description <<~DESC
38
- Spiders a website and returns every URL.
38
+ Spiders a website and finds every URL.
39
+
40
+ * Visits every `a`, `iframe`, `frame`, `link`, and `script` URL.
41
+ * Extracts paths from JavaScript.
42
+ * Extracts URLs from JavaScript.
39
43
  DESC
40
44
 
41
45
  accepts Website
@@ -21,7 +21,6 @@
21
21
  require 'ronin/recon/value'
22
22
 
23
23
  require 'uri'
24
- require 'base64'
25
24
 
26
25
  module Ronin
27
26
  module Recon
@@ -21,6 +21,6 @@
21
21
  module Ronin
22
22
  module Recon
23
23
  # ronin-recon version
24
- VERSION = '0.1.0.rc2'
24
+ VERSION = '0.1.0'
25
25
  end
26
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ronin-recon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0.rc2
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Postmodern
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-07-15 00:00:00.000000000 Z
11
+ date: 2024-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thread-local
@@ -92,42 +92,42 @@ dependencies:
92
92
  requirements:
93
93
  - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: 1.1.0.rc1
95
+ version: '1.1'
96
96
  type: :runtime
97
97
  prerelease: false
98
98
  version_requirements: !ruby/object:Gem::Requirement
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 1.1.0.rc1
102
+ version: '1.1'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: ronin-core
105
105
  requirement: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 0.2.0.rc1
109
+ version: '0.2'
110
110
  type: :runtime
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: 0.2.0.rc1
116
+ version: '0.2'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: ronin-db
119
119
  requirement: !ruby/object:Gem::Requirement
120
120
  requirements:
121
121
  - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: 0.2.0.rc1
123
+ version: '0.2'
124
124
  type: :runtime
125
125
  prerelease: false
126
126
  version_requirements: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: 0.2.0.rc1
130
+ version: '0.2'
131
131
  - !ruby/object:Gem::Dependency
132
132
  name: ronin-repos
133
133
  requirement: !ruby/object:Gem::Requirement
@@ -148,42 +148,42 @@ dependencies:
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: 0.1.0.rc1
151
+ version: '0.1'
152
152
  type: :runtime
153
153
  prerelease: false
154
154
  version_requirements: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: 0.1.0.rc1
158
+ version: '0.1'
159
159
  - !ruby/object:Gem::Dependency
160
160
  name: ronin-nmap
161
161
  requirement: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: 0.1.0.rc1
165
+ version: '0.1'
166
166
  type: :runtime
167
167
  prerelease: false
168
168
  version_requirements: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - "~>"
171
171
  - !ruby/object:Gem::Version
172
- version: 0.1.0.rc1
172
+ version: '0.1'
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: ronin-web-spider
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: 0.2.0.rc1
179
+ version: '0.2'
180
180
  type: :runtime
181
181
  prerelease: false
182
182
  version_requirements: !ruby/object:Gem::Requirement
183
183
  requirements:
184
184
  - - "~>"
185
185
  - !ruby/object:Gem::Version
186
- version: 0.2.0.rc1
186
+ version: '0.2'
187
187
  - !ruby/object:Gem::Dependency
188
188
  name: bundler
189
189
  requirement: !ruby/object:Gem::Requirement
@@ -357,7 +357,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
357
357
  - !ruby/object:Gem::Version
358
358
  version: '0'
359
359
  requirements: []
360
- rubygems_version: 3.3.27
360
+ rubygems_version: 3.5.11
361
361
  signing_key:
362
362
  specification_version: 4
363
363
  summary: A micro-framework and tool for performing reconnaissance.