ronin-web 1.0.1 → 1.0.2
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/README.md +241 -0
- data/lib/ronin/web/cli/commands/server.rb +2 -2
- data/lib/ronin/web/cli/commands/spider.rb +1 -1
- data/lib/ronin/web/mechanize.rb +3 -1
- data/lib/ronin/web/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d74a1711d3d63c034cb9a4e37f765c27cc1dd4b7e5cbf21154fc936a1db02e02
|
4
|
+
data.tar.gz: 06b58a6806d23dd2a201942978349cedfd57341f9acd9c9c687dcf1c41ec95bc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: be61036695c8a3ec44f095008352ab9d7fbc741218ca202f3dfbea9fd235bbb7a38ddc3d79896d62d349512f17085473ac2ac73aff7ae2bad4e2d7fda013c49a
|
7
|
+
data.tar.gz: 2ea04d21c0cd5dbdee6ffe714ffd94f89a4b2c8f2dceefeafd9daba0908f890da0b78a78b9df302ae14b39b44ca51e674c262b5fd470671382d9786f3904b6af
|
data/README.md
CHANGED
@@ -57,6 +57,247 @@ Commands:
|
|
57
57
|
spider
|
58
58
|
```
|
59
59
|
|
60
|
+
Open the `ronin-web` Ruby REPL:
|
61
|
+
|
62
|
+
```shell
|
63
|
+
$ ronin-web irb
|
64
|
+
```
|
65
|
+
|
66
|
+
Diff two HTML files:
|
67
|
+
|
68
|
+
```shell
|
69
|
+
$ ronin-web diff index1.html index2.html
|
70
|
+
+
|
71
|
+
|
72
|
+
+ <div>hax</div>
|
73
|
+
```
|
74
|
+
|
75
|
+
Diff two URLs:
|
76
|
+
|
77
|
+
```shell
|
78
|
+
$ ronin-web diff http://example.com/index.html http://example.com/index2.html
|
79
|
+
```
|
80
|
+
|
81
|
+
Perform an XPath query on an HTML file:
|
82
|
+
|
83
|
+
```shell
|
84
|
+
$ ronin-web html --xpath //meta index.html
|
85
|
+
<meta charset="utf-8">
|
86
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
87
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
88
|
+
```
|
89
|
+
|
90
|
+
Perform an XPath query on a URL:
|
91
|
+
|
92
|
+
```shell
|
93
|
+
$ ronin-web html --xpath //meta https://example.com/
|
94
|
+
<meta charset="utf-8">
|
95
|
+
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
96
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
97
|
+
```
|
98
|
+
|
99
|
+
Dump all links from a web page:
|
100
|
+
|
101
|
+
```shell
|
102
|
+
$ ronin-web html --links https://www.google.com/
|
103
|
+
https://www.google.com/imghp?hl=en&tab=wi
|
104
|
+
https://maps.google.com/maps?hl=en&tab=wl
|
105
|
+
https://play.google.com/?hl=en&tab=w8
|
106
|
+
https://www.youtube.com/?tab=w1
|
107
|
+
https://news.google.com/?tab=wn
|
108
|
+
https://mail.google.com/mail/?tab=wm
|
109
|
+
https://drive.google.com/?tab=wo
|
110
|
+
https://www.google.com/intl/en/about/products?tab=wh
|
111
|
+
http://www.google.com/history/optout?hl=en
|
112
|
+
/preferences?hl=en
|
113
|
+
https://accounts.google.com/ServiceLogin?hl=en&passive=true&continue=https://www.google.com/&ec=GAZAAQ
|
114
|
+
/advanced_search?hl=en&authuser=0
|
115
|
+
https://www.google.com/url?q=https://blog.google/products/search/google-search-new-fact-checking-misinformation/&source=hpp&id=19034203&ct=3&usg=AOvVaw3UxG35a-5UX1Rl8M_VwPbd&sa=X&ved=0ahUKEwjM4Iq--JD-AhVtGTQIHXMBBaYQ8IcBCAU
|
116
|
+
/intl/en/ads/
|
117
|
+
/services/
|
118
|
+
/intl/en/about.html
|
119
|
+
/intl/en/policies/privacy/
|
120
|
+
/intl/en/policies/terms/
|
121
|
+
```
|
122
|
+
|
123
|
+
Spiders a host and print all visited URLs:
|
124
|
+
|
125
|
+
```shell
|
126
|
+
$ ronin-web spider --host www.ruby-lang.org
|
127
|
+
http://www.ruby-lang.org/
|
128
|
+
http://www.ruby-lang.org/en/
|
129
|
+
http://www.ruby-lang.org/en/downloads/
|
130
|
+
http://www.ruby-lang.org/en/documentation/
|
131
|
+
http://www.ruby-lang.org/en/libraries/
|
132
|
+
http://www.ruby-lang.org/en/community/
|
133
|
+
https://www.ruby-lang.org/en/news/
|
134
|
+
https://www.ruby-lang.org/en/security/
|
135
|
+
https://www.ruby-lang.org/en/about/
|
136
|
+
...
|
137
|
+
```
|
138
|
+
|
139
|
+
Spiders the domain and sub-domains and print every visited URL:
|
140
|
+
|
141
|
+
```shell
|
142
|
+
$ ronin-web spider --domain ruby-lang.org
|
143
|
+
http://ruby-lang.org/
|
144
|
+
https://www.ruby-lang.org/
|
145
|
+
https://www.ruby-lang.org/en/
|
146
|
+
https://www.ruby-lang.org/en/downloads/
|
147
|
+
https://www.ruby-lang.org/en/documentation/
|
148
|
+
https://www.ruby-lang.org/en/libraries/
|
149
|
+
https://www.ruby-lang.org/en/community/
|
150
|
+
https://www.ruby-lang.org/en/news/
|
151
|
+
https://www.ruby-lang.org/en/security/
|
152
|
+
https://www.ruby-lang.org/en/about/
|
153
|
+
...
|
154
|
+
```
|
155
|
+
|
156
|
+
Spiders a specific web-site and print every visited URL:
|
157
|
+
|
158
|
+
```shell
|
159
|
+
$ ronin-web spider --site https://www.ruby-lang.org/
|
160
|
+
https://www.ruby-lang.org/
|
161
|
+
https://www.ruby-lang.org/en/
|
162
|
+
https://www.ruby-lang.org/en/downloads/
|
163
|
+
https://www.ruby-lang.org/en/documentation/
|
164
|
+
https://www.ruby-lang.org/en/libraries/
|
165
|
+
https://www.ruby-lang.org/en/community/
|
166
|
+
https://www.ruby-lang.org/en/news/
|
167
|
+
https://www.ruby-lang.org/en/security/
|
168
|
+
https://www.ruby-lang.org/en/about/
|
169
|
+
...
|
170
|
+
```
|
171
|
+
|
172
|
+
Spider a host and print the response statuses:
|
173
|
+
|
174
|
+
```shell
|
175
|
+
200 http://www.ruby-lang.org/
|
176
|
+
200 http://www.ruby-lang.org/en/
|
177
|
+
200 http://www.ruby-lang.org/en/downloads/
|
178
|
+
200 http://www.ruby-lang.org/en/documentation/
|
179
|
+
200 http://www.ruby-lang.org/en/libraries/
|
180
|
+
200 http://www.ruby-lang.org/en/community/
|
181
|
+
200 http://www.ruby-lang.org/en/news/
|
182
|
+
200 http://www.ruby-lang.org/en/security/
|
183
|
+
200 http://www.ruby-lang.org/en/about/
|
184
|
+
...
|
185
|
+
```
|
186
|
+
|
187
|
+
Spider a host and print the response status and headers:
|
188
|
+
|
189
|
+
```shell
|
190
|
+
ronin-web spider --print-headers --host www.ruby-lang.org
|
191
|
+
200 http://www.ruby-lang.org/
|
192
|
+
Connection: close
|
193
|
+
Content-Length: 887
|
194
|
+
Server: Cowboy
|
195
|
+
Strict-Transport-Security: max-age=31536000
|
196
|
+
Content-Type: text/html
|
197
|
+
Etag: W/"496ac7fab29a6094e490da28025c5857"
|
198
|
+
X-Frame-Options: SAMEORIGIN
|
199
|
+
Via: 1.1 vegur, 1.1 varnish
|
200
|
+
Accept-Ranges: bytes
|
201
|
+
Date: Tue, 04 Apr 2023 19:42:51 GMT
|
202
|
+
Age: 155
|
203
|
+
X-Served-By: cache-pdx12330-PDX
|
204
|
+
X-Cache: HIT
|
205
|
+
X-Cache-Hits: 1
|
206
|
+
X-Timer: S1680637372.808609,VS0,VE1
|
207
|
+
Vary: Accept-Encoding
|
208
|
+
...
|
209
|
+
```
|
210
|
+
|
211
|
+
Start a debug web server on http://localhost:8000/:
|
212
|
+
|
213
|
+
```shell
|
214
|
+
$ ronin-web server
|
215
|
+
[2023-04-04 12:26:59] INFO WEBrick 1.7.0
|
216
|
+
[2023-04-04 12:26:59] INFO ruby 3.1.3 (2022-11-24) [x86_64-linux]
|
217
|
+
== Sinatra (v3.0.4) has taken the stage on 8000 for development with backup from WEBrick
|
218
|
+
[2023-04-04 12:26:59] INFO WEBrick::HTTPServer#start: pid=8966 port=8000
|
219
|
+
```
|
220
|
+
|
221
|
+
Start a debug web server on a different address and port:
|
222
|
+
|
223
|
+
```shell
|
224
|
+
$ ronin-web server --host 0.0.0.0 --port 1337
|
225
|
+
```
|
226
|
+
|
227
|
+
Host the files in a directory on http://localhost:8000/:
|
228
|
+
|
229
|
+
```shell
|
230
|
+
$ ronin-web server --root .
|
231
|
+
```
|
232
|
+
|
233
|
+
Mount a specific file at a specific HTTP path:
|
234
|
+
|
235
|
+
```shell
|
236
|
+
$ ronin-web server --dir /dir/index.html:./index.html
|
237
|
+
```
|
238
|
+
|
239
|
+
Mount a specific directory at a specific HTTP path:
|
240
|
+
|
241
|
+
```shell
|
242
|
+
$ ronin-web server --dir /dir:.
|
243
|
+
```
|
244
|
+
|
245
|
+
Add a redirect to the web server:
|
246
|
+
|
247
|
+
```shell
|
248
|
+
$ ronin-web server --redirect /redirect:https://example.com/
|
249
|
+
```
|
250
|
+
|
251
|
+
Start a HTTP reverse proxy that rewrites HTTP responses on http://localhost:8080:
|
252
|
+
|
253
|
+
```shell
|
254
|
+
$ ronin-web reverse-proxy --rewrite-response Example:Hax
|
255
|
+
```
|
256
|
+
|
257
|
+
Test the reverse proxy:
|
258
|
+
|
259
|
+
```shell
|
260
|
+
$ curl -H "Host: example.com" http://localhost:8080/
|
261
|
+
```
|
262
|
+
|
263
|
+
Generate a new Ruby script for parsing HTML/XML:
|
264
|
+
|
265
|
+
```shell
|
266
|
+
$ ronin-web new nokogiri parse.rb
|
267
|
+
erb nokogiri.rb.erb parse.rb
|
268
|
+
chmod parse.rb
|
269
|
+
```
|
270
|
+
|
271
|
+
Generate a new web spider script:
|
272
|
+
|
273
|
+
```shell
|
274
|
+
$ ronin-web new spider --host=www.example.com spider.rb
|
275
|
+
erb spider.rb.erb spider.rb
|
276
|
+
chmod spider.rb
|
277
|
+
```
|
278
|
+
|
279
|
+
Generate a new web server script:
|
280
|
+
|
281
|
+
```shell
|
282
|
+
$ ronin-web new server server.rb
|
283
|
+
erb server.rb.erb server.rb
|
284
|
+
chmod server.rb
|
285
|
+
```
|
286
|
+
|
287
|
+
Generate a new web app:
|
288
|
+
|
289
|
+
```shell
|
290
|
+
$ ronin-web new webapp app
|
291
|
+
mkdir app
|
292
|
+
mkdir app/lib
|
293
|
+
mkdir app/views
|
294
|
+
mkdir app/public
|
295
|
+
erb .ruby-version.erb app/.ruby-version
|
296
|
+
cp Gemfile app
|
297
|
+
erb app.rb.erb app/app.rb
|
298
|
+
cp config.ru app
|
299
|
+
```
|
300
|
+
|
60
301
|
## Examples
|
61
302
|
|
62
303
|
Get a web-page:
|
@@ -58,7 +58,7 @@ module Ronin
|
|
58
58
|
default: 'localhost'
|
59
59
|
},
|
60
60
|
desc: 'Host name or IP to bind to' do |host|
|
61
|
-
App.
|
61
|
+
App.bind = host
|
62
62
|
end
|
63
63
|
|
64
64
|
option :port, short: '-p',
|
@@ -144,7 +144,7 @@ module Ronin
|
|
144
144
|
end
|
145
145
|
end
|
146
146
|
|
147
|
-
log_info "Starting web server listening on #{App.
|
147
|
+
log_info "Starting web server listening on #{App.bind}:#{App.port} ..."
|
148
148
|
begin
|
149
149
|
App.run!
|
150
150
|
rescue Errno::EADDRINUSE => error
|
@@ -390,7 +390,7 @@ module Ronin
|
|
390
390
|
},
|
391
391
|
desc: 'Spiders the website, starting at the URL'
|
392
392
|
|
393
|
-
option :
|
393
|
+
option :print_status, desc: 'Print the status codes for each URL'
|
394
394
|
|
395
395
|
option :print_headers, desc: 'Print response headers for each URL'
|
396
396
|
|
data/lib/ronin/web/mechanize.rb
CHANGED
@@ -32,7 +32,9 @@ module Ronin
|
|
32
32
|
class Mechanize < ::Mechanize
|
33
33
|
|
34
34
|
#
|
35
|
-
# Creates a new [Mechanize]
|
35
|
+
# Creates a new [Mechanize] Agent.
|
36
|
+
#
|
37
|
+
# [Mechanize]: https://github.com/sparklemotion/mechanize#readme
|
36
38
|
#
|
37
39
|
# @param [Network::HTTP::Proxy, Hash, String] proxy
|
38
40
|
# Proxy information.
|
data/lib/ronin/web/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ronin-web
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Postmodern
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|