pwn 0.5.192 → 0.5.193
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 +3 -3
- data/lib/pwn/plugins/repl.rb +4 -2
- data/lib/pwn/plugins/transparent_browser.rb +30 -28
- data/lib/pwn/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 45b078b3f53dc5344594ebeb0a8e0121fa76d6161019e4ff6918ce1741d1e4f4
|
4
|
+
data.tar.gz: 6e066b6544dd185e3497cedacb72fc1250b519f04cdcf1fad8366cc6db777ab6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de6837d334d503f2052e7ac8401a993466e003ff03abc83e656f27c2b84bd95d56b1e3ba616d36d4c04c96efc759258077bb55c355d7a8f967ba05e7c1d737b4
|
7
|
+
data.tar.gz: 19b1550c8b1202312322a8ec5c0cc167b8273362bc9ef2eda046e825e2c336c4a4ae75145b1f4d593df61219fc8a0ba36fdd2d4ce54656d5965e81ec57e0ca03
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ $ cd /opt/pwn
|
|
37
37
|
$ ./install.sh
|
38
38
|
$ ./install.sh ruby-gem
|
39
39
|
$ pwn
|
40
|
-
pwn[v0.5.
|
40
|
+
pwn[v0.5.193]:001 >>> PWN.help
|
41
41
|
```
|
42
42
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
@@ -52,7 +52,7 @@ $ rvm use ruby-3.3.3@pwn
|
|
52
52
|
$ gem uninstall --all --executables pwn
|
53
53
|
$ gem install --verbose pwn
|
54
54
|
$ pwn
|
55
|
-
pwn[v0.5.
|
55
|
+
pwn[v0.5.193]:001 >>> PWN.help
|
56
56
|
```
|
57
57
|
|
58
58
|
If you're using a multi-user install of RVM do:
|
@@ -62,7 +62,7 @@ $ rvm use ruby-3.3.3@pwn
|
|
62
62
|
$ rvmsudo gem uninstall --all --executables pwn
|
63
63
|
$ rvmsudo gem install --verbose pwn
|
64
64
|
$ pwn
|
65
|
-
pwn[v0.5.
|
65
|
+
pwn[v0.5.193]:001 >>> PWN.help
|
66
66
|
```
|
67
67
|
|
68
68
|
PWN periodically upgrades to the latest version of Ruby which is reflected in `/opt/pwn/.ruby-version`. The easiest way to upgrade to the latest version of Ruby from a previous PWN installation is to run the following script:
|
data/lib/pwn/plugins/repl.rb
CHANGED
@@ -605,7 +605,8 @@ module PWN
|
|
605
605
|
model: model,
|
606
606
|
request: request.chomp,
|
607
607
|
response_history: response_history,
|
608
|
-
speak_answer: speak_answer
|
608
|
+
speak_answer: speak_answer,
|
609
|
+
spinner: true
|
609
610
|
)
|
610
611
|
when :openai
|
611
612
|
response = PWN::Plugins::OpenAI.chat(
|
@@ -613,7 +614,8 @@ module PWN
|
|
613
614
|
model: model,
|
614
615
|
request: request.chomp,
|
615
616
|
response_history: response_history,
|
616
|
-
speak_answer: speak_answer
|
617
|
+
speak_answer: speak_answer,
|
618
|
+
spinner: true
|
617
619
|
)
|
618
620
|
else
|
619
621
|
raise "ERROR: Unsupported AI Engine: #{ai_engine}"
|
@@ -42,7 +42,6 @@ module PWN
|
|
42
42
|
# browser_type: 'optional - :firefox|:chrome|:headless|:rest|:websocket (defaults to :chrome)',
|
43
43
|
# proxy: 'optional - scheme://proxy_host:port || tor (defaults to nil)',
|
44
44
|
# devtools: 'optional - boolean (defaults to true)',
|
45
|
-
# url: 'optional - URL to navigate to after opening browser (Defaults to about:about#RANDID)'
|
46
45
|
# )
|
47
46
|
|
48
47
|
public_class_method def self.open(opts = {})
|
@@ -63,8 +62,6 @@ module PWN
|
|
63
62
|
devtools = opts[:devtools] ||= false
|
64
63
|
devtools = true if devtools_supported.include?(browser_type) && devtools
|
65
64
|
|
66
|
-
url = opts[:url] ||= "about:about##{SecureRandom.hex(8)}"
|
67
|
-
|
68
65
|
# Let's crank up the default timeout from 30 seconds to 15 min for slow sites
|
69
66
|
Watir.default_timeout = 900
|
70
67
|
|
@@ -130,7 +127,7 @@ module PWN
|
|
130
127
|
end
|
131
128
|
end
|
132
129
|
|
133
|
-
args.push('--devtools') if devtools
|
130
|
+
# args.push('--devtools') if devtools
|
134
131
|
options = Selenium::WebDriver::Firefox::Options.new(
|
135
132
|
args: args,
|
136
133
|
accept_insecure_certs: true
|
@@ -152,7 +149,7 @@ module PWN
|
|
152
149
|
end
|
153
150
|
|
154
151
|
if devtools
|
155
|
-
args.push('--auto-open-devtools-for-tabs')
|
152
|
+
# args.push('--auto-open-devtools-for-tabs')
|
156
153
|
args.push('--disable-hang-monitor')
|
157
154
|
end
|
158
155
|
|
@@ -258,7 +255,6 @@ module PWN
|
|
258
255
|
browser_obj[:browser].proxy = proxy
|
259
256
|
end
|
260
257
|
end
|
261
|
-
puts browser_obj[:browser].get(url).body if url
|
262
258
|
|
263
259
|
when :websocket
|
264
260
|
if proxy
|
@@ -285,10 +281,6 @@ module PWN
|
|
285
281
|
end
|
286
282
|
|
287
283
|
if devtools_supported.include?(browser_type)
|
288
|
-
rand_tab = SecureRandom.hex(8)
|
289
|
-
browser_obj[:browser].goto(url)
|
290
|
-
browser_obj[:browser].execute_script("document.title = '#{rand_tab}'")
|
291
|
-
|
292
284
|
if devtools
|
293
285
|
driver = browser_obj[:browser].driver
|
294
286
|
browser_obj[:devtools] = driver.devtools
|
@@ -310,8 +302,8 @@ module PWN
|
|
310
302
|
browser_obj[:bidi] = driver.bidi
|
311
303
|
|
312
304
|
jmp_devtools_panel(browser_obj: browser_obj, panel: :elements)
|
313
|
-
browser_obj[:browser].send_keys(:escape)
|
314
305
|
end
|
306
|
+
new_tab(browser_obj: browser_obj, first_tab: true)
|
315
307
|
end
|
316
308
|
|
317
309
|
browser_obj
|
@@ -479,31 +471,28 @@ module PWN
|
|
479
471
|
# Supported Method Parameters::
|
480
472
|
# tab = PWN::Plugins::TransparentBrowser.new_tab(
|
481
473
|
# browser_obj: 'required - browser_obj returned from #open method)',
|
482
|
-
#
|
474
|
+
# first_tab: 'optional - boolean to indicate if this is the first tab (Defaults to false)'
|
483
475
|
# )
|
484
476
|
|
485
477
|
public_class_method def self.new_tab(opts = {})
|
486
478
|
browser_obj = opts[:browser_obj]
|
487
479
|
verify_devtools_browser(browser_obj: browser_obj)
|
488
480
|
|
489
|
-
|
481
|
+
first_tab = opts[:first_tab] ||= false
|
490
482
|
|
491
|
-
firefox_types = %i[firefox headless_firefox]
|
492
483
|
browser = browser_obj[:browser]
|
493
484
|
browser_type = browser_obj[:type]
|
494
485
|
devtools = browser_obj[:devtools]
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
if url.nil?
|
499
|
-
browser.goto("about:about##{rand_tab}")
|
500
|
-
browser.execute_script("document.title = '#{rand_tab}'")
|
486
|
+
unless first_tab
|
487
|
+
browser.execute_script('window.open()')
|
488
|
+
jmp_tab(browser_obj: browser_obj, keyword: 'about:blank')
|
501
489
|
end
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
browser.
|
506
|
-
browser.
|
490
|
+
|
491
|
+
rand_tab = SecureRandom.hex(8)
|
492
|
+
url = "about:about##{rand_tab}"
|
493
|
+
browser.goto(url)
|
494
|
+
browser.execute_script("document.title = '#{rand_tab}'")
|
495
|
+
toggle_devtools(browser_obj: browser_obj) if devtools
|
507
496
|
|
508
497
|
{ title: browser.title, url: browser.url, state: :active }
|
509
498
|
rescue StandardError => e
|
@@ -660,8 +649,14 @@ module PWN
|
|
660
649
|
browser_obj = opts[:browser_obj]
|
661
650
|
verify_devtools_browser(browser_obj: browser_obj)
|
662
651
|
|
652
|
+
total_tabs = list_tabs(browser_obj: browser_obj).length
|
653
|
+
|
663
654
|
browser = browser_obj[:browser]
|
664
655
|
browser.send_keys(:f12)
|
656
|
+
if total_tabs < 2
|
657
|
+
sleep 1
|
658
|
+
browser.send_keys(:escape)
|
659
|
+
end
|
665
660
|
rescue StandardError => e
|
666
661
|
raise e
|
667
662
|
end
|
@@ -697,7 +692,12 @@ module PWN
|
|
697
692
|
hotkey.push('j') if chrome_types.include?(browser_type)
|
698
693
|
hotkey.push('k') if firefox_types.include?(browser_type)
|
699
694
|
when :debugger, :sources
|
700
|
-
|
695
|
+
if firefox_types.include?(browser_type)
|
696
|
+
# If we're in the console, we need to switch to the inspector first
|
697
|
+
jmp_devtools_panel(browser_obj: browser_obj, panel: :inspector)
|
698
|
+
sleep 1
|
699
|
+
hotkey.push('z') if firefox_types.include?(browser_type)
|
700
|
+
end
|
701
701
|
when :network
|
702
702
|
hotkey.push('e') if firefox_types.include?(browser_type)
|
703
703
|
else
|
@@ -705,9 +705,11 @@ module PWN
|
|
705
705
|
end
|
706
706
|
|
707
707
|
# Have to call twice for Chrome, otherwise devtools stays closed
|
708
|
-
browser.
|
708
|
+
browser_obj[:browser].send_keys(:escape)
|
709
|
+
# browser.body.click!
|
709
710
|
browser.send_keys(hotkey)
|
710
711
|
browser.send_keys(hotkey) if chrome_types.include?(browser_type)
|
712
|
+
browser.send_keys(:escape)
|
711
713
|
rescue StandardError => e
|
712
714
|
raise e
|
713
715
|
end
|
@@ -867,7 +869,7 @@ module PWN
|
|
867
869
|
|
868
870
|
tab = #{self}.new_tab(
|
869
871
|
browser_obj: 'required - browser_obj returned from #open method)',
|
870
|
-
|
872
|
+
first_tab: 'optional - boolean to indicate if this is the first tab (Defaults to false)'
|
871
873
|
)
|
872
874
|
|
873
875
|
tab = #{self}.close_tab(
|
data/lib/pwn/version.rb
CHANGED