pwn 0.5.549 → 0.5.550
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/Gemfile +5 -5
- data/README.md +3 -3
- data/lib/pwn/ai/agent/assembly.rb +6 -0
- data/lib/pwn/ai/agent/btc.rb +3 -0
- data/lib/pwn/ai/agent/burp_suite.rb +3 -0
- data/lib/pwn/ai/agent/gqrx.rb +4 -0
- data/lib/pwn/ai/agent/hacker_one.rb +4 -0
- data/lib/pwn/ai/agent/sast.rb +3 -0
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -0
- data/lib/pwn/ai/agent/vuln_gen.rb +27 -4
- data/lib/pwn/version.rb +1 -1
- data/third_party/pwn_rdoc.jsonl +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2a74ded9ce97c06a9d9351d25abdb3a2a0410d5131f8e63936c6e9432c1ab56d
|
|
4
|
+
data.tar.gz: 1983a6472a848c7c33f8de30d5c355e28056c5eb847cfab77a6894ee1d98d45f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9e858bf97b28a1e9a989d52d0ff92c03ed23c6134381817d56e752cf04c27e935b91ecb8283ac242acf2708fa8b075d1b4e5af33f0becad70a793a59b9e8e4f3
|
|
7
|
+
data.tar.gz: e9e07591011448b93f47289b709c3df0545808a4aeb2309ef689f9fd59d4503b7e02c99496e22ec4e34f1f86d206749fe5b57c21f9536fa519ddfebd9f28d0f9
|
data/Gemfile
CHANGED
|
@@ -25,11 +25,11 @@ gem 'bundler-audit', '>=0.9.3'
|
|
|
25
25
|
gem 'bunny', '2.24.0'
|
|
26
26
|
gem 'colorize', '1.1.0'
|
|
27
27
|
gem 'credit_card_validations', '8.0.0'
|
|
28
|
-
gem 'curses', '1.
|
|
28
|
+
gem 'curses', '1.6.0'
|
|
29
29
|
gem 'diffy', '3.4.4'
|
|
30
30
|
gem 'eventmachine', '1.2.7'
|
|
31
31
|
gem 'executable-hooks', '1.7.1'
|
|
32
|
-
gem 'faker', '3.6.
|
|
32
|
+
gem 'faker', '3.6.1'
|
|
33
33
|
gem 'faye-websocket', '0.12.0'
|
|
34
34
|
gem 'ffi', '1.17.3'
|
|
35
35
|
# gem 'fftw3', '0.3'
|
|
@@ -49,8 +49,8 @@ gem 'jwt', '3.1.2'
|
|
|
49
49
|
gem 'libusb', '0.7.2'
|
|
50
50
|
gem 'luhn', '3.0.0'
|
|
51
51
|
gem 'mail', '2.9.0'
|
|
52
|
-
gem 'mcp', '0.
|
|
53
|
-
gem 'meshtastic', '0.0.
|
|
52
|
+
gem 'mcp', '0.8.0'
|
|
53
|
+
gem 'meshtastic', '0.0.157'
|
|
54
54
|
gem 'metasm', '1.0.5'
|
|
55
55
|
gem 'mongo', '2.23.0'
|
|
56
56
|
gem 'msfrpc-client', '1.1.2'
|
|
@@ -81,7 +81,7 @@ gem 'rmagick', '6.2.0'
|
|
|
81
81
|
gem 'rqrcode', '3.2.0'
|
|
82
82
|
gem 'rspec', '3.13.2'
|
|
83
83
|
gem 'rtesseract', '3.1.4'
|
|
84
|
-
gem 'rubocop', '1.85.
|
|
84
|
+
gem 'rubocop', '1.85.1'
|
|
85
85
|
gem 'rubocop-rake', '0.7.1'
|
|
86
86
|
gem 'rubocop-rspec', '3.9.0'
|
|
87
87
|
gem 'ruby-audio', '1.6.1'
|
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.550]:001 >>> PWN.help
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
[](https://youtu.be/G7iLUY4FzsI)
|
|
@@ -52,7 +52,7 @@ $ rvm use ruby-4.0.1@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.550]: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-4.0.1@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.550]: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:
|
|
@@ -56,6 +56,12 @@ module PWN
|
|
|
56
56
|
|
|
57
57
|
public_class_method def self.help
|
|
58
58
|
puts "USAGE:
|
|
59
|
+
ai_analysis = PWN::AI::Agent::Assembly.analyze(
|
|
60
|
+
request: 'required - the assembly opcodes or instructions to be analyzed',
|
|
61
|
+
type: 'required - :opcodes_to_asm|:asm_to_opcodes - specify the type of analysis to perform',
|
|
62
|
+
arch: 'required - name of arch returned from `PWN::Plugins::Assembly.list_supported_archs` (e.g., :i386|:i686|:x86|:x64|:arm|:arm64, etc.)',
|
|
63
|
+
endian: 'required - the endianness of the assembly code (e.g., :little|:big)'
|
|
64
|
+
)
|
|
59
65
|
|
|
60
66
|
#{self}.authors
|
|
61
67
|
"
|
data/lib/pwn/ai/agent/btc.rb
CHANGED
|
@@ -37,6 +37,9 @@ module PWN
|
|
|
37
37
|
|
|
38
38
|
public_class_method def self.help
|
|
39
39
|
puts "USAGE:
|
|
40
|
+
ai_analysis = PWN::AI::Agent::BTC.analyze(
|
|
41
|
+
request: 'required - latest block information retrieved from a bitcoin node via `PWN::Blockchain::BTC.get_latest_block`'
|
|
42
|
+
)
|
|
40
43
|
|
|
41
44
|
#{self}.authors
|
|
42
45
|
"
|
data/lib/pwn/ai/agent/gqrx.rb
CHANGED
|
@@ -41,6 +41,10 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
+
ai_analysis = PWN::AI::Agent::GQRX.analyze(
|
|
45
|
+
request: 'required - A string containing the signal data captured by GQRX that you want to analyze. This data should be in a format that can be interpreted by the AI for analysis, such as raw signal data, frequency information, or any relevant metadata associated with the capture.',
|
|
46
|
+
location: 'required - A string containing a city, state, country, or GPS coordinates where the signal data was captured. This information will be used to provide context for the analysis and to determine if the frequency is licensed or unlicensed based on FCC records.'
|
|
47
|
+
)
|
|
44
48
|
|
|
45
49
|
#{self}.authors
|
|
46
50
|
"
|
|
@@ -51,6 +51,10 @@ module PWN
|
|
|
51
51
|
|
|
52
52
|
public_class_method def self.help
|
|
53
53
|
puts "USAGE:
|
|
54
|
+
ai_analysis = PWN::AI::Agent::HackerOne.analyze(
|
|
55
|
+
request: 'required - dataset to analyze, such as bounty program details, scope details, or hacktivity details'
|
|
56
|
+
type: 'required - type of analysis to perform, such as :bounty_programs, :scope_details, or :hacktivity'
|
|
57
|
+
)
|
|
54
58
|
|
|
55
59
|
#{self}.authors
|
|
56
60
|
"
|
data/lib/pwn/ai/agent/sast.rb
CHANGED
|
@@ -37,6 +37,9 @@ module PWN
|
|
|
37
37
|
|
|
38
38
|
public_class_method def self.help
|
|
39
39
|
puts "USAGE:
|
|
40
|
+
ai_analysis = PWN::AI::Agent::SAST.analyze(
|
|
41
|
+
request: 'required - A string containing the source code snippet to be analyzed for SAST antipatterns and vulnerabilities.'
|
|
42
|
+
)
|
|
40
43
|
|
|
41
44
|
#{self}.authors
|
|
42
45
|
"
|
|
@@ -41,6 +41,10 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
+
ai_analysis = PWN::AI::Agent::TransparentBrowser.analyze(
|
|
45
|
+
request: 'required - current step in the JavaScript debugging session to analyze',
|
|
46
|
+
source_to_review: 'required - the block of JavaScript code in which the current step resides'
|
|
47
|
+
)
|
|
44
48
|
|
|
45
49
|
#{self}.authors
|
|
46
50
|
"
|
|
@@ -7,15 +7,34 @@ module PWN
|
|
|
7
7
|
module VulnGen
|
|
8
8
|
# Supported Method Parameters::
|
|
9
9
|
# ai_analysis = PWN::AI::Agent::VulnGen.analyze(
|
|
10
|
-
# request: 'required - high level description of vulnerability discovered (e.g. "Discovered a SQLi vulnerability in /login"'
|
|
10
|
+
# request: 'required - high level description of vulnerability discovered (e.g. "Discovered a SQLi vulnerability in /login"',
|
|
11
|
+
# markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
11
12
|
# )
|
|
12
13
|
|
|
13
14
|
public_class_method def self.analyze(opts = {})
|
|
14
15
|
request = opts[:request]
|
|
15
16
|
raise 'ERROR: request parameter is required' if request.nil? || request.empty?
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
18
|
+
markup_type = opts[:markup_type] ||= :jira
|
|
19
|
+
|
|
20
|
+
markup = ''
|
|
21
|
+
case markup_type
|
|
22
|
+
when :jira
|
|
23
|
+
markup = 'Jira Wiki Markup'
|
|
24
|
+
when :markdown
|
|
25
|
+
markup = 'Markdown'
|
|
26
|
+
when :html
|
|
27
|
+
markup = 'HTML'
|
|
28
|
+
when :confluence
|
|
29
|
+
markup = 'Confluence Wiki Markup'
|
|
30
|
+
when :xml
|
|
31
|
+
markup = 'XML'
|
|
32
|
+
else
|
|
33
|
+
raise "ERROR: Unsupported markup_type '#{markup_type}'. Supported types are :jira, :markdown, :html, :confluence, :xml."
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
system_role_content = "
|
|
37
|
+
_ALWAYS_ Generate #{markup} security findings for the message provided with the following content:
|
|
19
38
|
|
|
20
39
|
1. Detailed Finding Description: This should be a deep, detailed technical description that should include exploit proof-of-concepts when possible.
|
|
21
40
|
|
|
@@ -28,7 +47,7 @@ module PWN
|
|
|
28
47
|
5. CWE Category, Brief CWE description, and CWE URI
|
|
29
48
|
|
|
30
49
|
6. NIST 800-53 Security Control that is impacted by this vulnerability.
|
|
31
|
-
|
|
50
|
+
"
|
|
32
51
|
|
|
33
52
|
PWN::AI::Introspection.reflect_on(
|
|
34
53
|
system_role_content: system_role_content,
|
|
@@ -51,6 +70,10 @@ module PWN
|
|
|
51
70
|
|
|
52
71
|
public_class_method def self.help
|
|
53
72
|
puts "USAGE:
|
|
73
|
+
ai_analysis = #{self}.analyze(
|
|
74
|
+
request: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"',
|
|
75
|
+
markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'
|
|
76
|
+
)
|
|
54
77
|
|
|
55
78
|
#{self}.authors
|
|
56
79
|
"
|
data/lib/pwn/version.rb
CHANGED
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::TransparentBrowser.analyze(\n\nrequest: 'required - current step in the JavaScript debugging session to analyze',\nsource_to_review: 'required - the block of JavaScript code in which the current step resides'\n\n)\n"}]}
|
|
23
23
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
24
24
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::TransparentBrowser.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::TransparentBrowser.help`: "}]}
|
|
25
|
-
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::VulnGen.analyze(\n\nrequest: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"'\n\n)\n"}]}
|
|
25
|
+
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.analyze Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.analyze`: Supported Method Parameters\n\nai_analysis = PWN::AI::Agent::VulnGen.analyze(\n\nrequest: 'required - high level description of vulnerability discovered (e.g. \"Discovered a SQLi vulnerability in /login\"',\nmarkup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'\n\n)\n"}]}
|
|
26
26
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.authors Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
27
27
|
{"messages":[{"role":"user","content":"PWN::AI::Agent::VulnGen.help Usage"},{"role":"assistant","content":"`PWN::AI::Agent::VulnGen.help`: "}]}
|
|
28
28
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.authors Usage"},{"role":"assistant","content":"`PWN::AI::Grok.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
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.
|
|
4
|
+
version: 0.5.550
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -211,14 +211,14 @@ dependencies:
|
|
|
211
211
|
requirements:
|
|
212
212
|
- - '='
|
|
213
213
|
- !ruby/object:Gem::Version
|
|
214
|
-
version: 1.
|
|
214
|
+
version: 1.6.0
|
|
215
215
|
type: :runtime
|
|
216
216
|
prerelease: false
|
|
217
217
|
version_requirements: !ruby/object:Gem::Requirement
|
|
218
218
|
requirements:
|
|
219
219
|
- - '='
|
|
220
220
|
- !ruby/object:Gem::Version
|
|
221
|
-
version: 1.
|
|
221
|
+
version: 1.6.0
|
|
222
222
|
- !ruby/object:Gem::Dependency
|
|
223
223
|
name: diffy
|
|
224
224
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -267,14 +267,14 @@ dependencies:
|
|
|
267
267
|
requirements:
|
|
268
268
|
- - '='
|
|
269
269
|
- !ruby/object:Gem::Version
|
|
270
|
-
version: 3.6.
|
|
270
|
+
version: 3.6.1
|
|
271
271
|
type: :runtime
|
|
272
272
|
prerelease: false
|
|
273
273
|
version_requirements: !ruby/object:Gem::Requirement
|
|
274
274
|
requirements:
|
|
275
275
|
- - '='
|
|
276
276
|
- !ruby/object:Gem::Version
|
|
277
|
-
version: 3.6.
|
|
277
|
+
version: 3.6.1
|
|
278
278
|
- !ruby/object:Gem::Dependency
|
|
279
279
|
name: faye-websocket
|
|
280
280
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -533,28 +533,28 @@ dependencies:
|
|
|
533
533
|
requirements:
|
|
534
534
|
- - '='
|
|
535
535
|
- !ruby/object:Gem::Version
|
|
536
|
-
version: 0.
|
|
536
|
+
version: 0.8.0
|
|
537
537
|
type: :runtime
|
|
538
538
|
prerelease: false
|
|
539
539
|
version_requirements: !ruby/object:Gem::Requirement
|
|
540
540
|
requirements:
|
|
541
541
|
- - '='
|
|
542
542
|
- !ruby/object:Gem::Version
|
|
543
|
-
version: 0.
|
|
543
|
+
version: 0.8.0
|
|
544
544
|
- !ruby/object:Gem::Dependency
|
|
545
545
|
name: meshtastic
|
|
546
546
|
requirement: !ruby/object:Gem::Requirement
|
|
547
547
|
requirements:
|
|
548
548
|
- - '='
|
|
549
549
|
- !ruby/object:Gem::Version
|
|
550
|
-
version: 0.0.
|
|
550
|
+
version: 0.0.157
|
|
551
551
|
type: :runtime
|
|
552
552
|
prerelease: false
|
|
553
553
|
version_requirements: !ruby/object:Gem::Requirement
|
|
554
554
|
requirements:
|
|
555
555
|
- - '='
|
|
556
556
|
- !ruby/object:Gem::Version
|
|
557
|
-
version: 0.0.
|
|
557
|
+
version: 0.0.157
|
|
558
558
|
- !ruby/object:Gem::Dependency
|
|
559
559
|
name: metasm
|
|
560
560
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -981,14 +981,14 @@ dependencies:
|
|
|
981
981
|
requirements:
|
|
982
982
|
- - '='
|
|
983
983
|
- !ruby/object:Gem::Version
|
|
984
|
-
version: 1.85.
|
|
984
|
+
version: 1.85.1
|
|
985
985
|
type: :runtime
|
|
986
986
|
prerelease: false
|
|
987
987
|
version_requirements: !ruby/object:Gem::Requirement
|
|
988
988
|
requirements:
|
|
989
989
|
- - '='
|
|
990
990
|
- !ruby/object:Gem::Version
|
|
991
|
-
version: 1.85.
|
|
991
|
+
version: 1.85.1
|
|
992
992
|
- !ruby/object:Gem::Dependency
|
|
993
993
|
name: rubocop-rake
|
|
994
994
|
requirement: !ruby/object:Gem::Requirement
|