pwn 0.5.184 → 0.5.185
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/transparent_browser.rb +88 -16
- 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: dbfe23aedfd50bf00cce67e7eff4b1d29d8dc3cf6e4bcfcad8c83c71ee4e5362
|
4
|
+
data.tar.gz: 397c808f4509652f528c9ca350efe0ae62339556eec55cb2790351b041ceaec6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f45f0ece9a3b81bf0866d1d9edd544a079bfb9dc823be5b6d9e9b5f57de8a1a4c70166a550bd808bfe17ac4c6bb27e0369641f0f162f5f74a9cb450a38dddc70
|
7
|
+
data.tar.gz: b55dad06ecdbd6a8c2ae7cd911dc81a61b6f92f2f36c8f6d4f583d9da7ea7c768bdb497d6368c7a6bf18faae3bf745c7632a137f7f94fe435f05978dbbfd2282
|
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.185]: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.185]: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.185]: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:
|
@@ -452,12 +452,12 @@ module PWN
|
|
452
452
|
end
|
453
453
|
|
454
454
|
# Supported Method Parameters::
|
455
|
-
#
|
455
|
+
# tab = PWN::Plugins::TransparentBrowser.jmp_tab(
|
456
456
|
# browser_obj: 'required - browser_obj returned from #open method)',
|
457
457
|
# keyword: 'required - keyword in title or url used to switch tabs'
|
458
458
|
# )
|
459
459
|
|
460
|
-
public_class_method def self.
|
460
|
+
public_class_method def self.jmp_tab(opts = {})
|
461
461
|
browser_obj = opts[:browser_obj]
|
462
462
|
verify_devtools_browser(browser_obj: browser_obj)
|
463
463
|
|
@@ -473,7 +473,7 @@ module PWN
|
|
473
473
|
end
|
474
474
|
|
475
475
|
# Supported Method Parameters::
|
476
|
-
#
|
476
|
+
# tab = PWN::Plugins::TransparentBrowser.new_tab(
|
477
477
|
# browser_obj: 'required - browser_obj returned from #open method)',
|
478
478
|
# url: 'optional - URL to navigate to after opening new tab (Defaults to nil)'
|
479
479
|
# )
|
@@ -484,12 +484,16 @@ module PWN
|
|
484
484
|
|
485
485
|
url = opts[:url]
|
486
486
|
|
487
|
+
firefox_types = %i[firefox headless_firefox]
|
487
488
|
browser = browser_obj[:browser]
|
489
|
+
browser_type = browser_obj[:type]
|
488
490
|
browser.execute_script('window.open()')
|
489
|
-
|
491
|
+
jmp_tab(browser_obj: browser_obj, keyword: 'about:blank')
|
490
492
|
browser.goto('about:about') if url.nil?
|
491
493
|
rand_tab = SecureRandom.hex(8)
|
492
494
|
browser.execute_script("document.title = '#{rand_tab}'")
|
495
|
+
# Open the DevTools for Firefox, Chrome opens them automatically
|
496
|
+
browser.body.send_keys(:f12) if firefox_types.include?(browser_type)
|
493
497
|
browser.goto(url) unless url.nil?
|
494
498
|
|
495
499
|
{ title: browser.title, url: browser.url, state: :active }
|
@@ -498,7 +502,7 @@ module PWN
|
|
498
502
|
end
|
499
503
|
|
500
504
|
# Supported Method Parameters::
|
501
|
-
#
|
505
|
+
# tab = PWN::Plugins::TransparentBrowser.close_tab(
|
502
506
|
# browser_obj: 'required - browser_obj returned from #open method)'
|
503
507
|
# keyword: 'required - keyword in title or url used to close tabs'
|
504
508
|
# )
|
@@ -519,7 +523,7 @@ module PWN
|
|
519
523
|
end
|
520
524
|
|
521
525
|
# Supported Method Parameters::
|
522
|
-
#
|
526
|
+
# PWN::Plugins::TransparentBrowser.debugger(
|
523
527
|
# browser_obj: 'required - browser_obj returned from #open method)',
|
524
528
|
# action: 'optional - action to take :pause|:resume (Defaults to :pause)',
|
525
529
|
# url: 'optional - URL to navigate to after pausing debugger (Defaults to nil)'
|
@@ -573,7 +577,7 @@ module PWN
|
|
573
577
|
end
|
574
578
|
|
575
579
|
# Supported Method Parameters::
|
576
|
-
#
|
580
|
+
# PWN::Plugins::TransparentBrowser.step_into(
|
577
581
|
# browser_obj: 'required - browser_obj returned from #open method)'
|
578
582
|
# )
|
579
583
|
|
@@ -589,7 +593,7 @@ module PWN
|
|
589
593
|
end
|
590
594
|
|
591
595
|
# Supported Method Parameters::
|
592
|
-
#
|
596
|
+
# PWN::Plugins::TransparentBrowser.step_out(
|
593
597
|
# browser_obj: 'required - browser_obj returned from #open method)'
|
594
598
|
# )
|
595
599
|
|
@@ -605,7 +609,7 @@ module PWN
|
|
605
609
|
end
|
606
610
|
|
607
611
|
# Supported Method Parameters::
|
608
|
-
#
|
612
|
+
# PWN::Plugins::TransparentBrowser.step_over(
|
609
613
|
# browser_obj: 'required - browser_obj returned from #open method)'
|
610
614
|
# )
|
611
615
|
|
@@ -620,6 +624,65 @@ module PWN
|
|
620
624
|
raise e
|
621
625
|
end
|
622
626
|
|
627
|
+
# Supported Method Parameters::
|
628
|
+
# PWN::Plugins::TransparentBrowser.toggle_devtools(
|
629
|
+
# browser_obj: 'required - browser_obj returned from #open method)'
|
630
|
+
# )
|
631
|
+
|
632
|
+
public_class_method def self.toggle_devtools(opts = {})
|
633
|
+
browser_obj = opts[:browser_obj]
|
634
|
+
verify_devtools_browser(browser_obj: browser_obj)
|
635
|
+
|
636
|
+
browser = browser_obj[:browser]
|
637
|
+
browser.body.send_keys(:f12)
|
638
|
+
rescue StandardError => e
|
639
|
+
raise e
|
640
|
+
end
|
641
|
+
|
642
|
+
# Supported Method Parameters::
|
643
|
+
# PWN::Plugins::TransparentBrowser.jmp_devtools_panel(
|
644
|
+
# browser_obj: 'required - browser_obj returned from #open method)',
|
645
|
+
# panel: 'optional - panel to switch to :elements|:inspector|:console|:debugger|:sources|:network
|
646
|
+
# )
|
647
|
+
|
648
|
+
public_class_method def self.jmp_devtools_panel(opts = {})
|
649
|
+
browser_obj = opts[:browser_obj]
|
650
|
+
verify_devtools_browser(browser_obj: browser_obj)
|
651
|
+
|
652
|
+
panel = opts[:panel] ||= :elements
|
653
|
+
browser = browser_obj[:browser]
|
654
|
+
browser_type = browser_obj[:type]
|
655
|
+
firefox_types = %i[firefox headless_firefox]
|
656
|
+
chrome_types = %i[chrome headless_chrome]
|
657
|
+
|
658
|
+
case PWN::Plugins::DetectOS.type
|
659
|
+
when :linux, :openbsd, :windows
|
660
|
+
hotkey = %i[control shift]
|
661
|
+
when :macos
|
662
|
+
hotkey = %i[command option]
|
663
|
+
end
|
664
|
+
|
665
|
+
case panel
|
666
|
+
when :elements, :inspector
|
667
|
+
hotkey.push('c') if firefox_types.include?(browser_type)
|
668
|
+
when :console
|
669
|
+
hotkey.push('j') if chrome_types.include?(browser_type)
|
670
|
+
hotkey.push('k') if firefox_types.include?(browser_type)
|
671
|
+
when :debugger, :sources
|
672
|
+
hotkey.push('z') if firefox_types.include?(browser_type)
|
673
|
+
when :network
|
674
|
+
hotkey.push('e') if firefox_types.include?(browser_type)
|
675
|
+
else
|
676
|
+
raise 'ERROR: panel parameter must be :elements|:inspector|:console|:debugger|:sources|:network'
|
677
|
+
end
|
678
|
+
|
679
|
+
# Have to call twice for Chrome, otherwise devtools stays closed
|
680
|
+
browser.body.send_keys(hotkey)
|
681
|
+
browser.body.send_keys(hotkey) if chrome_types.include?(browser_type)
|
682
|
+
rescue StandardError => e
|
683
|
+
raise e
|
684
|
+
end
|
685
|
+
|
623
686
|
# Supported Method Parameters::
|
624
687
|
# browser_obj1 = PWN::Plugins::TransparentBrowser.close(
|
625
688
|
# browser_obj: 'required - browser_obj returned from #open method)'
|
@@ -768,38 +831,47 @@ module PWN
|
|
768
831
|
browser_obj: 'required - browser_obj returned from #open method)'
|
769
832
|
)
|
770
833
|
|
771
|
-
|
834
|
+
tab = #{self}.jmp_tab(
|
772
835
|
browser_obj: 'required - browser_obj returned from #open method)',
|
773
836
|
keyword: 'required - keyword in title or url used to switch tabs'
|
774
837
|
)
|
775
838
|
|
776
|
-
|
839
|
+
tab = #{self}.new_tab(
|
777
840
|
browser_obj: 'required - browser_obj returned from #open method)'
|
778
841
|
)
|
779
842
|
|
780
|
-
|
843
|
+
tab = #{self}.close_tab(
|
781
844
|
browser_obj: 'required - browser_obj returned from #open method)',
|
782
845
|
keyword: 'required - keyword in title or url used to close tabs'
|
783
846
|
)
|
784
847
|
|
785
|
-
|
848
|
+
#{self}.debugger(
|
786
849
|
browser_obj: 'required - browser_obj returned from #open method)',
|
787
850
|
action: 'optional - action to take :pause|:resume (Defaults to :pause)',
|
788
851
|
url: 'optional - URL to navigate to after pausing debugger (Defaults to nil)'
|
789
852
|
)
|
790
853
|
|
791
|
-
|
854
|
+
#{self}.step_into(
|
792
855
|
browser_obj: 'required - browser_obj returned from #open method)'
|
793
856
|
)
|
794
857
|
|
795
|
-
|
858
|
+
#{self}.step_out(
|
796
859
|
browser_obj: 'required - browser_obj returned from #open method)'
|
797
860
|
)
|
798
861
|
|
799
|
-
|
862
|
+
#{self}.step_over(
|
800
863
|
browser_obj: 'required - browser_obj returned from #open method)'
|
801
864
|
)
|
802
865
|
|
866
|
+
#{self}.toggle_devtools(
|
867
|
+
browser_obj: 'required - browser_obj returned from #open method)'
|
868
|
+
)
|
869
|
+
|
870
|
+
#{self}.jmp_devtools_panel(
|
871
|
+
browser_obj: 'required - browser_obj returned from #open method)',
|
872
|
+
panel: 'optional - panel to switch to :elements|:inspector|:console|:debugger|:sources|:network'
|
873
|
+
)
|
874
|
+
|
803
875
|
browser_obj1 = #{self}.close(
|
804
876
|
browser_obj: 'required - browser_obj returned from #open method)'
|
805
877
|
)
|
data/lib/pwn/version.rb
CHANGED