pwn 0.5.453 → 0.5.454
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/.rubocop_todo.yml +4 -3
- data/Gemfile +2 -2
- data/README.md +3 -3
- data/bin/pwn +4 -15
- data/bin/pwn_android_war_dialer +1 -10
- data/bin/pwn_aws_describe_resources +1 -10
- data/bin/pwn_bdba_groups +1 -10
- data/bin/pwn_bdba_scan +1 -10
- data/bin/pwn_burp_suite_pro_active_rest_api_scan +1 -10
- data/bin/pwn_burp_suite_pro_active_scan +1 -10
- data/bin/pwn_char_base64_encoding +1 -10
- data/bin/pwn_char_dec_encoding +1 -10
- data/bin/pwn_char_hex_escaped_encoding +1 -10
- data/bin/pwn_char_html_entity_encoding +1 -10
- data/bin/pwn_char_unicode_escaped_encoding +1 -10
- data/bin/pwn_char_url_encoding +1 -10
- data/bin/pwn_crt_sh +1 -10
- data/bin/pwn_defectdojo_engagement_create +1 -10
- data/bin/pwn_defectdojo_importscan +1 -10
- data/bin/pwn_defectdojo_reimportscan +1 -10
- data/bin/pwn_diff_csv_files_w_column_exclude +1 -6
- data/bin/pwn_domain_reversewhois +1 -10
- data/bin/pwn_fuzz_net_app_proto +1 -10
- data/bin/pwn_gqrx_scanner +1 -10
- data/bin/pwn_jenkins_create_job +1 -10
- data/bin/pwn_jenkins_create_view +1 -10
- data/bin/pwn_jenkins_install_plugin +1 -10
- data/bin/pwn_jenkins_thinBackup_aws_s3 +1 -10
- data/bin/pwn_jenkins_update_plugins +1 -10
- data/bin/pwn_jenkins_useradd +1 -10
- data/bin/pwn_mail_agent +1 -10
- data/bin/pwn_nessus_cloud_scan_crud +1 -10
- data/bin/pwn_nessus_cloud_vulnscan +1 -10
- data/bin/pwn_nexpose +1 -10
- data/bin/pwn_nmap_discover_tcp_udp +1 -10
- data/bin/pwn_openvas_vulnscan +1 -10
- data/bin/pwn_pastebin_sample_filter +1 -10
- data/bin/pwn_phone +1 -10
- data/bin/pwn_rdoc_to_jsonl +5 -7
- data/bin/pwn_sast +1 -25
- data/bin/pwn_serial_check_voicemail +1 -10
- data/bin/pwn_serial_msr206 +4 -6
- data/bin/pwn_serial_son_micro_sm132_rfid +4 -6
- data/bin/pwn_shodan_graphql_introspection +1 -6
- data/bin/pwn_shodan_search +1 -10
- data/bin/pwn_simple_http_server +4 -5
- data/bin/pwn_web_cache_deception +1 -10
- data/bin/pwn_www_checkip +7 -5
- data/bin/pwn_www_uri_buster +1 -10
- data/bin/pwn_xss_dom_vectors +1 -10
- data/bin/pwn_zaproxy_active_rest_api_scan +1 -10
- data/bin/pwn_zaproxy_active_scan +1 -10
- data/lib/pwn/ai/introspection.rb +3 -1
- data/lib/pwn/config.rb +70 -25
- data/lib/pwn/driver.rb +85 -0
- data/lib/pwn/plugins/repl.rb +7 -10
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn.rb +5 -4
- data/spec/lib/pwn/driver_spec.rb +15 -0
- metadata +7 -7
- data/etc/pwn.decryptor.yaml.EXAMPLE +0 -5
- data/etc/pwn.yaml.EXAMPLE +0 -71
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
13
9
|
|
14
10
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
@@ -36,11 +32,6 @@ OptionParser.new do |options|
|
|
36
32
|
end
|
37
33
|
end.parse!
|
38
34
|
|
39
|
-
if opts.empty?
|
40
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
41
|
-
exit 1
|
42
|
-
end
|
43
|
-
|
44
35
|
begin
|
45
36
|
ip = opts[:ip].to_s.scrub
|
46
37
|
port = opts[:port].to_i
|
@@ -5,11 +5,7 @@ require 'aws-sdk'
|
|
5
5
|
require 'pwn'
|
6
6
|
|
7
7
|
opts = PWN::Env[:driver_opts]
|
8
|
-
|
9
|
-
options.banner = "USAGE:
|
10
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
11
|
-
"
|
12
|
-
|
8
|
+
PWN::Driver::Parser.new do |options|
|
13
9
|
options.on('-rREGION', '--region=REGION', "<Optional - AWS STS Region (Defaults to 'us-west-1')>") do |sts_region|
|
14
10
|
opts[:sts_region] = sts_region
|
15
11
|
end
|
@@ -37,11 +33,6 @@ OptionParser.new do |options|
|
|
37
33
|
end
|
38
34
|
end.parse!
|
39
35
|
|
40
|
-
if opts.empty?
|
41
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
42
|
-
exit 1
|
43
|
-
end
|
44
|
-
|
45
36
|
sts_region = if opts[:sts_region].nil?
|
46
37
|
'us-west-1'
|
47
38
|
else
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
13
9
|
|
14
10
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
@@ -36,11 +32,6 @@ OptionParser.new do |options|
|
|
36
32
|
end
|
37
33
|
end.parse!
|
38
34
|
|
39
|
-
if opts.empty?
|
40
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
41
|
-
exit 1
|
42
|
-
end
|
43
|
-
|
44
35
|
ip = opts[:ip].to_s.scrub
|
45
36
|
port = opts[:port].to_i
|
46
37
|
username = opts[:username]
|
data/bin/pwn_jenkins_useradd
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-sIP', '--ip=IP', '<Required - Jenkins Server IP>') { |s| opts[:ip] = s }
|
13
9
|
|
14
10
|
options.on('-dPORT', '--dest-port=PORT', '<Optional - Jenkins Server Port (Defaults to 8080)>') do |port|
|
@@ -40,11 +36,6 @@ OptionParser.new do |options|
|
|
40
36
|
end
|
41
37
|
end.parse!
|
42
38
|
|
43
|
-
if opts.empty?
|
44
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
45
|
-
exit 1
|
46
|
-
end
|
47
|
-
|
48
39
|
ip = opts[:ip].to_s.scrub
|
49
40
|
port = opts[:port].to_i
|
50
41
|
|
data/bin/pwn_mail_agent
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-aTYPE', '--agent-type=TYPE', '<Required - Mail Agent Type office365|gmail|hotmail_n_live|yahoo|manual>') do |a|
|
13
9
|
opts[:agent_type] = a
|
14
10
|
end
|
@@ -22,11 +18,6 @@ OptionParser.new do |options|
|
|
22
18
|
end
|
23
19
|
end.parse!
|
24
20
|
|
25
|
-
if opts.empty?
|
26
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
|
30
21
|
private_methods def initiate_action
|
31
22
|
puts @list_agent_opts
|
32
23
|
if @list_agent_opts
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Access & Secret Keys for Authentication, Including Credential Information for Scan Creation (https://developer.tenable.com/docs/determine-settings-for-credential-type)>') do |c|
|
13
9
|
opts[:yaml_config] = c
|
14
10
|
end
|
@@ -86,11 +82,6 @@ OptionParser.new do |options|
|
|
86
82
|
end
|
87
83
|
end.parse!
|
88
84
|
|
89
|
-
if opts.empty?
|
90
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
91
|
-
exit 1
|
92
|
-
end
|
93
|
-
|
94
85
|
begin
|
95
86
|
# Get Options Passed to pwn_nessus_cloud_create_scan
|
96
87
|
# Required Arguments
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Access & Secret Keys for Authentication>') do |c|
|
13
9
|
opts[:yaml_config] = c
|
14
10
|
end
|
@@ -26,11 +22,6 @@ OptionParser.new do |options|
|
|
26
22
|
end
|
27
23
|
end.parse!
|
28
24
|
|
29
|
-
if opts.empty?
|
30
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
25
|
begin
|
35
26
|
yaml_config = opts[:yaml_config]
|
36
27
|
|
data/bin/pwn_nexpose
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
# Nexpose Flags
|
13
9
|
options.on('-CIP', '--console_ip=IP', '<Required - Nexpose Console IP>') { |c| opts[:console_ip] = c }
|
14
10
|
options.on('-UCUSER', '--console_username=CUSER', '<Required - Nexpose Console Username>') { |cu| opts[:console_username] = cu }
|
@@ -17,11 +13,6 @@ OptionParser.new do |options|
|
|
17
13
|
options.on('-RREPORTS', '--report_names=REPORTS', '<Required - Comma Delimited String of Report Names>') { |r| opts[:report_names] = r }
|
18
14
|
end.parse!
|
19
15
|
|
20
|
-
if opts.empty?
|
21
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
22
|
-
exit 1
|
23
|
-
end
|
24
|
-
|
25
16
|
# Nexpose
|
26
17
|
console_ip = opts[:console_ip].to_s.scrub
|
27
18
|
console_username = opts[:console_username].to_s.scrub
|
@@ -7,11 +7,7 @@ require 'pwn'
|
|
7
7
|
require 'time'
|
8
8
|
|
9
9
|
opts = PWN::Env[:driver_opts]
|
10
|
-
|
11
|
-
options.banner = "USAGE:
|
12
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
13
|
-
"
|
14
|
-
|
10
|
+
PWN::Driver::Parser.new do |options|
|
15
11
|
options.on('-fFILE', '--target-file=FILE', '<Required if --target-range excluded - File containing one supported nmap target / line e.g. foo.bar, 10.1.1.1, 192.168.1.1-20, 192.168.1.0/24, etc>') do |f|
|
16
12
|
opts[:target_file] = f
|
17
13
|
end
|
@@ -41,11 +37,6 @@ OptionParser.new do |options|
|
|
41
37
|
end
|
42
38
|
end.parse!
|
43
39
|
|
44
|
-
if opts.empty?
|
45
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
46
|
-
exit 1
|
47
|
-
end
|
48
|
-
|
49
40
|
ftimestr = '%Y-%m-%d %H:%M:%S.%N%z'
|
50
41
|
started_at = Time.now.strftime(ftimestr)
|
51
42
|
started_at_parse = Time.parse(started_at)
|
data/bin/pwn_openvas_vulnscan
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-cYPATH', '--yaml-config=YPATH', '<Required - YAML Config Containing Username & Password for Authentication>') do |c|
|
13
9
|
opts[:yaml_config] = c
|
14
10
|
end
|
@@ -26,11 +22,6 @@ OptionParser.new do |options|
|
|
26
22
|
end
|
27
23
|
end.parse!
|
28
24
|
|
29
|
-
if opts.empty?
|
30
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
25
|
task_name = opts[:task_name]
|
35
26
|
|
36
27
|
report_dir = opts[:report_dir].to_s.scrub
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-rPATTERN', '--regex=PATTERN', "<Required - Regex Pattern for Interesting Pastes ('.*' for All)>") do |r|
|
13
9
|
opts[:regex] = r
|
14
10
|
end
|
@@ -18,11 +14,6 @@ OptionParser.new do |options|
|
|
18
14
|
end
|
19
15
|
end.parse!
|
20
16
|
|
21
|
-
if opts.empty?
|
22
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
23
|
-
exit 1
|
24
|
-
end
|
25
|
-
|
26
17
|
proxy = opts[:proxy]
|
27
18
|
regex = opts[:regex]
|
28
19
|
|
data/bin/pwn_phone
CHANGED
@@ -8,11 +8,7 @@ require 'ruby-audio'
|
|
8
8
|
require 'waveform'
|
9
9
|
|
10
10
|
opts = PWN::Env[:driver_opts]
|
11
|
-
|
12
|
-
options.banner = "USAGE:
|
13
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
14
|
-
"
|
15
|
-
|
11
|
+
PWN::Driver::Parser.new do |options|
|
16
12
|
options.on('-tPATH', '--target-file=PATH', '<Required - File Containing List of Targets to Dial>') do |t|
|
17
13
|
opts[:target_file] = t
|
18
14
|
end
|
@@ -62,11 +58,6 @@ OptionParser.new do |options|
|
|
62
58
|
# TODO: Append results to pwn_phone_results.json as things are running #save_memory.
|
63
59
|
end.parse!
|
64
60
|
|
65
|
-
if opts.empty?
|
66
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
67
|
-
exit 1
|
68
|
-
end
|
69
|
-
|
70
61
|
begin
|
71
62
|
pwn_provider = 'ruby-gem'
|
72
63
|
# pwn_provider = ENV.fetch('PWN_PROVIDER') if ENV.keys.select { |s| s == 'PWN_PROVIDER' }.any?
|
data/bin/pwn_rdoc_to_jsonl
CHANGED
@@ -6,19 +6,17 @@ require 'pwn'
|
|
6
6
|
|
7
7
|
# Set the path to your project directory
|
8
8
|
opts = PWN::Env[:driver_opts]
|
9
|
-
|
10
|
-
options.banner = "USAGE:
|
11
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
12
|
-
"
|
13
|
-
|
9
|
+
pwn_driver = PWN::Driver::Parser.new do |options|
|
14
10
|
options.on('-rPATH', '--rdoc-root-dir=PATH', '<Optional - RDoc root directory (Default: "/opt/pwn/rdoc/PWN")>') do |r|
|
15
11
|
opts[:rdoc_root] = r
|
16
12
|
end
|
17
13
|
|
18
|
-
options.on('-jPATH', '--jsonl-results=PATH', '<Optional - Path to save JSONL file (Default: "/tmp/
|
14
|
+
options.on('-jPATH', '--jsonl-results=PATH', '<Optional - Path to save JSONL file (Default: "/tmp/PWN-[TIMESTAMP].jsonl">') do |j|
|
19
15
|
opts[:jsonl_results] = j
|
20
16
|
end
|
21
|
-
end
|
17
|
+
end
|
18
|
+
pwn_driver.auto_opts_help = false
|
19
|
+
pwn_driver.parse!
|
22
20
|
|
23
21
|
begin
|
24
22
|
rdoc_root = opts[:rdoc_root] ||= '/opt/pwn/rdoc/PWN'
|
data/bin/pwn_sast
CHANGED
@@ -5,20 +5,7 @@ require 'htmlentities'
|
|
5
5
|
require 'pwn'
|
6
6
|
|
7
7
|
opts = PWN::Env[:driver_opts]
|
8
|
-
|
9
|
-
options.banner = "USAGE:
|
10
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
11
|
-
"
|
12
|
-
|
13
|
-
# TODO: HOW TO LOAD THE pwn.yaml CONFIGURATION FILE FOR EVERYTHING UNLESS OVERRIDDEN???
|
14
|
-
options.on('-YPATH', '--pwn-env=PATH', '<Optional - PWN YAML File>') do |p|
|
15
|
-
opts[:pwn_env_path] = p
|
16
|
-
end
|
17
|
-
|
18
|
-
options.on('-ZPATH', '--pwn-dec=PATH', '<Optional - Out-of-Band YAML File with :key && :iv>') do |d|
|
19
|
-
opts[:pwn_dec_path] = d
|
20
|
-
end
|
21
|
-
|
8
|
+
PWN::Driver::Parser.new do |options|
|
22
9
|
options.on('-uGITURI', '--uri-source-root=GITURI', '<Required - HTTP URI of Git Repo Scanned e.g. https://github.com/0dayInc/pwn/tree/master>') do |u|
|
23
10
|
opts[:uri_source_root] = u
|
24
11
|
end
|
@@ -48,22 +35,11 @@ OptionParser.new do |options|
|
|
48
35
|
end
|
49
36
|
end.parse!
|
50
37
|
|
51
|
-
if opts.empty?
|
52
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
53
|
-
exit 1
|
54
|
-
end
|
55
|
-
|
56
38
|
begin
|
57
39
|
timestamp = Time.now.strftime('%Y-%m-%d_%H:%M:%S%z')
|
58
40
|
|
59
41
|
pwn_env_path = opts[:pwn_env_path]
|
60
42
|
pwn_dec_path = opts[:pwn_dec_path]
|
61
|
-
if pwn_env_path
|
62
|
-
PWN::Config.refresh_env(
|
63
|
-
pwn_env_path: pwn_env_path,
|
64
|
-
pwn_dec_path: pwn_dec_path
|
65
|
-
)
|
66
|
-
end
|
67
43
|
|
68
44
|
previous_dir = Dir.pwd
|
69
45
|
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-vNUM', '--voicemail_num=num', '<Required - Number to Voicemail Service>') do |num|
|
13
9
|
opts[:voicemail_num] = num
|
14
10
|
end
|
@@ -17,11 +13,6 @@ OptionParser.new do |options|
|
|
17
13
|
end
|
18
14
|
end.parse!
|
19
15
|
|
20
|
-
if opts.empty?
|
21
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
22
|
-
exit 1
|
23
|
-
end
|
24
|
-
|
25
16
|
voicemail_num = opts[:voicemail_num].to_s.scrub.strip.chomp.delete('-').delete('.').to_i
|
26
17
|
|
27
18
|
if opts[:voicemail_pin].nil?
|
data/bin/pwn_serial_msr206
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
pwn_driver = PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-dDEV', '--block-dev=DEV', '<Optional - MSR206 block device path (defaults to /dev/ttyUSB0)>') do |d|
|
13
9
|
opts[:block_dev] = d
|
14
10
|
end
|
@@ -32,7 +28,9 @@ OptionParser.new do |options|
|
|
32
28
|
options.on('-fFLOWCTRL', '--flow-control=FLOWCTRL', '<Optional - none||hard||soft (defaults to soft)>') do |f|
|
33
29
|
opts[:flow_control] = f
|
34
30
|
end
|
35
|
-
end
|
31
|
+
end
|
32
|
+
pwn_driver.auto_opts_help = false
|
33
|
+
pwn_driver.parse!
|
36
34
|
|
37
35
|
begin
|
38
36
|
block_dev = opts[:block_dev]
|
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
pwn_driver = PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-dDEV', '--block-dev=DEV', '<Optional - SonMicroRFID block device path (defaults to /dev/ttyUSB0)>') do |d|
|
13
9
|
opts[:block_dev] = d
|
14
10
|
end
|
@@ -36,7 +32,9 @@ OptionParser.new do |options|
|
|
36
32
|
options.on('-v', '--verbose', '<Optional - Enable verbose output>') do
|
37
33
|
opts[:verbose] = true
|
38
34
|
end
|
39
|
-
end
|
35
|
+
end
|
36
|
+
pwn_driver.auto_opts_help = false
|
37
|
+
pwn_driver.parse!
|
40
38
|
|
41
39
|
begin
|
42
40
|
block_dev = opts[:block_dev] if opts[:block_dev] && File.exist?(opts[:block_dev])
|
@@ -5,17 +5,12 @@ require 'faker'
|
|
5
5
|
require 'pwn'
|
6
6
|
|
7
7
|
opts = PWN::Env[:driver_opts]
|
8
|
-
|
8
|
+
PWN::Driver::Parser.new do |options|
|
9
9
|
options.on('-jFILE', '--json-results=FILE', 'Required - JSON results file from pwn_shodan_search driver') do |j|
|
10
10
|
opts[:json_results] = j
|
11
11
|
end
|
12
12
|
end.parse!
|
13
13
|
|
14
|
-
if opts.empty?
|
15
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
16
|
-
exit 1
|
17
|
-
end
|
18
|
-
|
19
14
|
json_results_path = opts[:json_results]
|
20
15
|
raise "ERROR: Shodan JSON Results File #{json_results_path} Does Not Exist." unless File.exist?(json_results_path)
|
21
16
|
|
data/bin/pwn_shodan_search
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-cYAML', '--config-yaml=YAML', '<Required - YAML config containing api_key from Shodan.io>') do |y|
|
13
9
|
opts[:yaml] = y
|
14
10
|
end
|
@@ -26,11 +22,6 @@ OptionParser.new do |options|
|
|
26
22
|
end
|
27
23
|
end.parse!
|
28
24
|
|
29
|
-
if opts.empty?
|
30
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
31
|
-
exit 1
|
32
|
-
end
|
33
|
-
|
34
25
|
begin
|
35
26
|
yaml_file = opts[:yaml].to_s
|
36
27
|
raise "ERROR: #{yaml_file} does not exist." unless File.exist?(yaml_file)
|
data/bin/pwn_simple_http_server
CHANGED
@@ -4,10 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
7
|
+
pwn_driver = PWN::Driver::Parser.new do |options|
|
11
8
|
options.on('-iIP', '--bind-ip=IP', '<Optional - HTTP Bind IP to Listen> (Defaults to Localhost)') do |i|
|
12
9
|
opts[:bind_ip] = i
|
13
10
|
end
|
@@ -15,7 +12,9 @@ OptionParser.new do |options|
|
|
15
12
|
options.on('-pPORT', '--port=PORT', '<Optional - HTTP Port to Listen (Defaults to 3333)>') do |p|
|
16
13
|
opts[:port] = p
|
17
14
|
end
|
18
|
-
end
|
15
|
+
end
|
16
|
+
pwn_driver.auto_opts_help = false
|
17
|
+
pwn_driver.parse!
|
19
18
|
|
20
19
|
bind_ip = opts[:bind_ip] ||= '127.0.0.1'
|
21
20
|
|
data/bin/pwn_web_cache_deception
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-tURL', '--target-url=URL', '<Required - URL to Target>') do |t|
|
13
9
|
opts[:target_url] = t
|
14
10
|
end
|
@@ -42,11 +38,6 @@ OptionParser.new do |options|
|
|
42
38
|
end
|
43
39
|
end.parse!
|
44
40
|
|
45
|
-
if opts.empty?
|
46
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
|
50
41
|
# Colors!
|
51
42
|
@dark_red = "\e[1m\e[31m"
|
52
43
|
@green = "\e[32m"
|
data/bin/pwn_www_checkip
CHANGED
@@ -4,10 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
7
|
+
pwn_driver = PWN::Driver::Parser.new do |options|
|
11
8
|
options.on('-tIP_HOST', '--target=IP_HOST', '<Optional - IP or Host to Check (Default - Your Public IP)>') do |t|
|
12
9
|
opts[:target] = t
|
13
10
|
end
|
@@ -23,7 +20,12 @@ OptionParser.new do |options|
|
|
23
20
|
options.on('-pPROXY', '--proxy=PROXY', '<Optional - HTTP or Socks Proxy || tor>') do |p|
|
24
21
|
opts[:proxy] = p
|
25
22
|
end
|
26
|
-
end
|
23
|
+
end
|
24
|
+
pwn_driver.auto_opts_help = false
|
25
|
+
pwn_driver.parse!
|
26
|
+
|
27
|
+
pwn_env_path = opts[:pwn_env_path]
|
28
|
+
pwn_dec_path = opts[:pwn_dec_path]
|
27
29
|
|
28
30
|
target = opts[:target]
|
29
31
|
tls_port = opts[:tls_port]
|
data/bin/pwn_www_uri_buster
CHANGED
@@ -9,11 +9,7 @@ require 'time'
|
|
9
9
|
require 'uri'
|
10
10
|
|
11
11
|
opts = PWN::Env[:driver_opts]
|
12
|
-
|
13
|
-
options.banner = "USAGE:
|
14
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
15
|
-
"
|
16
|
-
|
12
|
+
PWN::Driver::Parser.new do |options|
|
17
13
|
options.on('-uURL', '--target-url=URL', '<Required - Target URL)>') do |t|
|
18
14
|
opts[:target_url] = t
|
19
15
|
end
|
@@ -67,11 +63,6 @@ OptionParser.new do |options|
|
|
67
63
|
end
|
68
64
|
end.parse!
|
69
65
|
|
70
|
-
if opts.empty?
|
71
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
72
|
-
exit 1
|
73
|
-
end
|
74
|
-
|
75
66
|
def request_path(opts = {})
|
76
67
|
target_url = opts[:target_url]
|
77
68
|
proxy = opts[:proxy]
|
data/bin/pwn_xss_dom_vectors
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-tFQDN', '--target-fqdn=FQDN', '<Required - FQDN to Target>') do |t|
|
13
9
|
opts[:target_fqdn] = t
|
14
10
|
end
|
@@ -34,11 +30,6 @@ OptionParser.new do |options|
|
|
34
30
|
end
|
35
31
|
end.parse!
|
36
32
|
|
37
|
-
if opts.empty?
|
38
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
39
|
-
exit 1
|
40
|
-
end
|
41
|
-
|
42
33
|
# Required Flag Variables
|
43
34
|
target_fqdn = opts[:target_fqdn].to_s.scrub.strip.chomp
|
44
35
|
output_dir = opts[:output_dir].to_s.scrub.strip.chomp if Dir.exist?(opts[:output_dir].to_s.scrub.strip.chomp)
|
@@ -6,11 +6,7 @@ require 'pwn'
|
|
6
6
|
require 'uri'
|
7
7
|
|
8
8
|
opts = PWN::Env[:driver_opts]
|
9
|
-
|
10
|
-
options.banner = "USAGE:
|
11
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
12
|
-
"
|
13
|
-
|
9
|
+
PWN::Driver::Parser.new do |options|
|
14
10
|
options.on('-aAPIKEY', '--api_key=APIKEY', '<Required - OWASP Zap API Key (Tools>Options>API)>') do |a|
|
15
11
|
opts[:api_key] = a
|
16
12
|
end
|
@@ -60,11 +56,6 @@ OptionParser.new do |options|
|
|
60
56
|
end
|
61
57
|
end.parse!
|
62
58
|
|
63
|
-
if opts.empty?
|
64
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
65
|
-
exit 1
|
66
|
-
end
|
67
|
-
|
68
59
|
begin
|
69
60
|
timestamp = Time.now.strftime('%Y-%m-%d_%H-%M-%S%Z')
|
70
61
|
logger = PWN::Plugins::PWNLogger.create
|
data/bin/pwn_zaproxy_active_scan
CHANGED
@@ -4,11 +4,7 @@
|
|
4
4
|
require 'pwn'
|
5
5
|
|
6
6
|
opts = PWN::Env[:driver_opts]
|
7
|
-
|
8
|
-
options.banner = "USAGE:
|
9
|
-
#{File.basename($PROGRAM_NAME)} [opts]
|
10
|
-
"
|
11
|
-
|
7
|
+
PWN::Driver::Parser.new do |options|
|
12
8
|
options.on('-aAPIKEY', '--api_key=APIKEY', '<Required - OWASP Zap API Key (Tools>Options>API)>') do |a|
|
13
9
|
opts[:api_key] = a
|
14
10
|
end
|
@@ -50,11 +46,6 @@ OptionParser.new do |options|
|
|
50
46
|
end
|
51
47
|
end.parse!
|
52
48
|
|
53
|
-
if opts.empty?
|
54
|
-
puts `#{File.basename($PROGRAM_NAME)} --help`
|
55
|
-
exit 1
|
56
|
-
end
|
57
|
-
|
58
49
|
begin
|
59
50
|
logger = PWN::Plugins::PWNLogger.create
|
60
51
|
|
data/lib/pwn/ai/introspection.rb
CHANGED
@@ -45,7 +45,9 @@ module PWN
|
|
45
45
|
system_role_content: system_role_content,
|
46
46
|
spinner: false
|
47
47
|
)
|
48
|
-
|
48
|
+
response = response[:choices].last[:content] if response.is_a?(Hash) &&
|
49
|
+
response.key?(:choices) &&
|
50
|
+
response[:choices].last.keys.include?(:content)
|
49
51
|
when :openai
|
50
52
|
response = PWN::AI::OpenAI.chat(
|
51
53
|
request: request.chomp,
|