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