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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 943acf516461b6defab89c118dce50021fbe4a54149e383cb94be08570cb4735
4
- data.tar.gz: 88ed9ddeec7d76c97a0b4665b26d14db609b9a820786905ab81a2d1f9115f65b
3
+ metadata.gz: 45b078b3f53dc5344594ebeb0a8e0121fa76d6161019e4ff6918ce1741d1e4f4
4
+ data.tar.gz: 6e066b6544dd185e3497cedacb72fc1250b519f04cdcf1fad8366cc6db777ab6
5
5
  SHA512:
6
- metadata.gz: 15fea999df3f0b8f05358f285980cf34851d3dde2992e325f8b1cc3d550be9e24a18fe78a7147531d811992f8b15b9ef2e89300cade9d9873534addc513ecd65
7
- data.tar.gz: 13f05cebbee3ddd043f8f397a733a78daa7e8aa1efae393659d2e8f9bd493cc940bcea1d953fd2bcebeaece47eb29f9abad9184f41ce5a3b587e6285a981beb0
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.192]:001 >>> PWN.help
40
+ pwn[v0.5.193]:001 >>> PWN.help
41
41
  ```
42
42
 
43
43
  [![Installing the pwn Security Automation Framework](https://raw.githubusercontent.com/0dayInc/pwn/master/documentation/pwn_install.png)](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.192]:001 >>> PWN.help
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.192]:001 >>> PWN.help
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:
@@ -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
- # url: 'optional - URL to navigate to after opening new tab (Defaults to nil)'
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
- url = opts[:url]
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
- browser.execute_script('window.open()')
496
- jmp_tab(browser_obj: browser_obj, keyword: 'about:blank')
497
- rand_tab = SecureRandom.hex(8)
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
- # Open the DevTools for Firefox, Chrome opens them automatically
503
- browser.send_keys(:f12) if firefox_types.include?(browser_type)
504
- # Open Console drawer if DevTools are open
505
- browser.send_keys(:escape) unless devtools.nil?
506
- browser.goto(url) unless url.nil?
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
- hotkey.push('z') if firefox_types.include?(browser_type)
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.body.click
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
- url: 'optional - URL to navigate to after opening new tab (Defaults to nil)'
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PWN
4
- VERSION = '0.5.192'
4
+ VERSION = '0.5.193'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pwn
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.192
4
+ version: 0.5.193
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.