pwn 0.5.562 → 0.5.587
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.yml +1 -1
- data/.rubocop_todo.yml +4 -3
- data/.ruby-version +1 -1
- data/Gemfile +17 -17
- data/README.md +5 -5
- data/Rakefile +8 -4
- data/build_gem.sh +19 -10
- data/documentation/lifecycle_authz_replay.example.yaml +27 -0
- data/git_commit.sh +6 -1
- data/lib/pwn/ai/anthropic.rb +281 -0
- data/lib/pwn/ai/grok.rb +8 -3
- data/lib/pwn/ai/introspection.rb +9 -0
- data/lib/pwn/ai/open_ai.rb +6 -2
- data/lib/pwn/ai.rb +1 -0
- data/lib/pwn/bounty/lifecycle_authz_replay.rb +505 -0
- data/lib/pwn/bounty.rb +16 -0
- data/lib/pwn/config.rb +145 -7
- data/lib/pwn/cron.rb +210 -0
- data/lib/pwn/driver.rb +9 -0
- data/lib/pwn/memory.rb +136 -0
- data/lib/pwn/plugins/repl.rb +393 -50
- data/lib/pwn/plugins/xxd.rb +24 -0
- data/lib/pwn/sessions.rb +160 -0
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn.rb +4 -0
- data/pwn.gemspec +6 -4
- data/spec/lib/pwn/ai/anthropic_spec.rb +15 -0
- data/spec/lib/pwn/bounty/lifecycle_authz_replay_spec.rb +53 -0
- data/spec/lib/pwn/bounty_spec.rb +10 -0
- data/spec/lib/pwn/cron_spec.rb +15 -0
- data/spec/lib/pwn/memory_spec.rb +24 -0
- data/spec/lib/pwn/sessions_spec.rb +25 -0
- data/spec/smoke/lifecycle_authz_replay_smoke_test.rb +59 -0
- data/third_party/pwn_rdoc.jsonl +69 -2
- data/upgrade_pwn.sh +1 -1
- data/vagrant/provisioners/pwn.sh +1 -1
- metadata +50 -36
data/lib/pwn/sessions.rb
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'json'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'time'
|
|
6
|
+
require 'securerandom'
|
|
7
|
+
|
|
8
|
+
module PWN
|
|
9
|
+
# PWN::Sessions provides session management for pwn-ai (and other drivers)
|
|
10
|
+
# equivalent to Hermes sessions (list, resume, transcripts, stats).
|
|
11
|
+
# Sessions are stored as JSONL transcripts in ~/.pwn/sessions/ for durability
|
|
12
|
+
# and easy search/append. pwn-ai agent mode auto-creates and appends to a
|
|
13
|
+
# session on each activation.
|
|
14
|
+
module Sessions
|
|
15
|
+
SESSIONS_DIR = File.join(Dir.home, '.pwn', 'sessions')
|
|
16
|
+
|
|
17
|
+
# Supported Method Parameters::
|
|
18
|
+
# dir = PWN::Sessions.sessions_dir
|
|
19
|
+
public_class_method def self.sessions_dir
|
|
20
|
+
FileUtils.mkdir_p(SESSIONS_DIR)
|
|
21
|
+
SESSIONS_DIR
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Supported Method Parameters::
|
|
25
|
+
# sessions = PWN::Sessions.list
|
|
26
|
+
public_class_method def self.list
|
|
27
|
+
dir = sessions_dir
|
|
28
|
+
Dir.glob(File.join(dir, '*.jsonl')).reverse.map do |f|
|
|
29
|
+
{
|
|
30
|
+
id: File.basename(f, '.jsonl'),
|
|
31
|
+
path: f,
|
|
32
|
+
size: File.size(f),
|
|
33
|
+
mtime: File.mtime(f).utc.iso8601,
|
|
34
|
+
lines: File.readlines(f).count
|
|
35
|
+
}
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Supported Method Parameters::
|
|
40
|
+
# session = PWN::Sessions.create(
|
|
41
|
+
# title: 'optional - human title',
|
|
42
|
+
# source: 'optional - e.g. pwn-ai-repl'
|
|
43
|
+
# )
|
|
44
|
+
public_class_method def self.create(opts = {})
|
|
45
|
+
dir = sessions_dir
|
|
46
|
+
ts = Time.now.utc.strftime('%Y%m%d_%H%M%S')
|
|
47
|
+
rand = SecureRandom.hex(4)
|
|
48
|
+
id = "#{ts}_#{rand}"
|
|
49
|
+
path = File.join(dir, "#{id}.jsonl")
|
|
50
|
+
|
|
51
|
+
meta = {
|
|
52
|
+
id: id,
|
|
53
|
+
title: opts[:title] || "pwn-ai session #{id}",
|
|
54
|
+
source: opts[:source] || 'pwn-ai',
|
|
55
|
+
created_at: Time.now.utc.iso8601
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
File.open(path, 'w') do |f|
|
|
59
|
+
f.puts(JSON.dump(role: 'system', content: "Session started: #{meta[:title]}", timestamp: meta[:created_at]))
|
|
60
|
+
end
|
|
61
|
+
{ id: id, path: path, meta: meta }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
# Supported Method Parameters::
|
|
65
|
+
# PWN::Sessions.append(
|
|
66
|
+
# session_id: 'required',
|
|
67
|
+
# role: 'user|assistant|system|observation',
|
|
68
|
+
# content: 'the message or obs'
|
|
69
|
+
# )
|
|
70
|
+
public_class_method def self.append(opts = {})
|
|
71
|
+
sid = opts[:session_id]
|
|
72
|
+
raise 'ERROR: session_id required' unless sid
|
|
73
|
+
|
|
74
|
+
path = File.join(sessions_dir, "#{sid}.jsonl")
|
|
75
|
+
raise "Session #{sid} not found" unless File.exist?(path)
|
|
76
|
+
|
|
77
|
+
entry = {
|
|
78
|
+
role: opts[:role] || 'user',
|
|
79
|
+
content: opts[:content],
|
|
80
|
+
timestamp: Time.now.utc.iso8601
|
|
81
|
+
}
|
|
82
|
+
File.open(path, 'a') { |f| f.puts(JSON.dump(entry)) }
|
|
83
|
+
entry
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# Supported Method Parameters::
|
|
87
|
+
# transcript = PWN::Sessions.load(session_id: 'required')
|
|
88
|
+
public_class_method def self.load(opts = {})
|
|
89
|
+
sid = opts[:session_id]
|
|
90
|
+
path = File.join(sessions_dir, "#{sid}.jsonl")
|
|
91
|
+
return [] unless File.exist?(path)
|
|
92
|
+
|
|
93
|
+
File.readlines(path).map { |l| JSON.parse(l, symbolize_names: true) }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Supported Method Parameters::
|
|
97
|
+
# history_for_ai = PWN::Sessions.to_response_history(session_id:)
|
|
98
|
+
# (converts transcript to the response_history format used by PWN::AI::* .chat)
|
|
99
|
+
public_class_method def self.to_response_history(opts = {})
|
|
100
|
+
transcript = load(session_id: opts[:session_id])
|
|
101
|
+
choices = transcript.map do |e|
|
|
102
|
+
{
|
|
103
|
+
role: e[:role],
|
|
104
|
+
content: e[:content]
|
|
105
|
+
}
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
{
|
|
109
|
+
id: opts[:session_id],
|
|
110
|
+
object: 'session.transcript',
|
|
111
|
+
model: 'pwn-ai',
|
|
112
|
+
usage: {},
|
|
113
|
+
choices: choices
|
|
114
|
+
}
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# Supported Method Parameters::
|
|
118
|
+
# PWN::Sessions.delete(session_id:)
|
|
119
|
+
public_class_method def self.delete(opts = {}) # rubocop:disable Naming/PredicateMethod
|
|
120
|
+
sid = opts[:session_id]
|
|
121
|
+
path = File.join(sessions_dir, "#{sid}.jsonl")
|
|
122
|
+
FileUtils.rm_f(path)
|
|
123
|
+
true
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# Supported Method Parameters::
|
|
127
|
+
# stats = PWN::Sessions.stats
|
|
128
|
+
public_class_method def self.stats
|
|
129
|
+
sessions = list
|
|
130
|
+
{
|
|
131
|
+
total_sessions: sessions.size,
|
|
132
|
+
total_lines: sessions.sum { |s| s[:lines] },
|
|
133
|
+
oldest: sessions.last ? sessions.last[:mtime] : nil,
|
|
134
|
+
newest: sessions.first ? sessions.first[:mtime] : nil
|
|
135
|
+
}
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
139
|
+
|
|
140
|
+
public_class_method def self.authors
|
|
141
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
# Display Usage for this Module
|
|
145
|
+
public_class_method def self.help
|
|
146
|
+
puts <<~USAGE
|
|
147
|
+
USAGE:
|
|
148
|
+
sess = PWN::Sessions.create(title: 'recon on target.com')
|
|
149
|
+
PWN::Sessions.append(session_id: sess[:id], role: 'user', content: 'Run NmapIt...')
|
|
150
|
+
transcript = PWN::Sessions.load(session_id: sess[:id])
|
|
151
|
+
hist = PWN::Sessions.to_response_history(session_id: sess[:id])
|
|
152
|
+
PWN::Sessions.list
|
|
153
|
+
PWN::Sessions.stats
|
|
154
|
+
PWN::Sessions.delete(session_id: sess[:id])
|
|
155
|
+
|
|
156
|
+
#{self}.authors
|
|
157
|
+
USAGE
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
end
|
data/lib/pwn/version.rb
CHANGED
data/lib/pwn.rb
CHANGED
|
@@ -13,8 +13,12 @@ module PWN
|
|
|
13
13
|
autoload :AI, 'pwn/ai'
|
|
14
14
|
autoload :AWS, 'pwn/aws'
|
|
15
15
|
autoload :Banner, 'pwn/banner'
|
|
16
|
+
autoload :Bounty, 'pwn/bounty'
|
|
16
17
|
autoload :Blockchain, 'pwn/blockchain'
|
|
17
18
|
autoload :Config, 'pwn/config'
|
|
19
|
+
autoload :Cron, 'pwn/cron'
|
|
20
|
+
autoload :Memory, 'pwn/memory'
|
|
21
|
+
autoload :Sessions, 'pwn/sessions'
|
|
18
22
|
autoload :Driver, 'pwn/driver'
|
|
19
23
|
autoload :FFI, 'pwn/ffi'
|
|
20
24
|
autoload :Plugins, 'pwn/plugins'
|
data/pwn.gemspec
CHANGED
|
@@ -53,11 +53,13 @@ Gem::Specification.new do |spec|
|
|
|
53
53
|
]
|
|
54
54
|
|
|
55
55
|
File.readlines('./Gemfile').each do |line|
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
# Robust parser: extract name and version using regex to handle quotes, operators (>=, <), and avoid empty/invalid versions.
|
|
57
|
+
# Anchor with ^\\s* to only match active (non-commented) gem declarations at start of line.
|
|
58
|
+
match = line.match(/^\s*gem\s+['"]([^'"]+)['"]\s*,\s*['"]([^'"]+)['"]/)
|
|
59
|
+
next unless match
|
|
58
60
|
|
|
59
|
-
gem_name =
|
|
60
|
-
gem_version =
|
|
61
|
+
gem_name = match[1]
|
|
62
|
+
gem_version = match[2]
|
|
61
63
|
|
|
62
64
|
# Good for debugging issues in Gemfile
|
|
63
65
|
# puts "pwn.gemspec: Adding dependency: #{gem_name} #{gem_version}"
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::AI::Anthropic do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::AI::Anthropic
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::AI::Anthropic
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
require 'tmpdir'
|
|
5
|
+
|
|
6
|
+
RSpec.describe PWN::Bounty::LifecycleAuthzReplay do
|
|
7
|
+
it 'builds a normalized evidence bundle and flags stale access' do
|
|
8
|
+
Dir.mktmpdir('lifecycle-authz-replay-spec-') do |tmp_dir|
|
|
9
|
+
run_obj = described_class.start_run(
|
|
10
|
+
plan: {
|
|
11
|
+
campaign: {
|
|
12
|
+
id: 'acme-revoke-collaborator',
|
|
13
|
+
target: 'https://example.test',
|
|
14
|
+
change_event: 'remove_collaborator'
|
|
15
|
+
},
|
|
16
|
+
actors: %w[owner revoked_user],
|
|
17
|
+
surfaces: ['repo_settings_page'],
|
|
18
|
+
checkpoints: %w[pre_change post_change_t0],
|
|
19
|
+
expected_denied_after: ['post_change_t0']
|
|
20
|
+
},
|
|
21
|
+
output_dir: tmp_dir,
|
|
22
|
+
run_id: 'rspec-run'
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
described_class.record_observation(
|
|
26
|
+
run_obj: run_obj,
|
|
27
|
+
checkpoint: 'pre_change',
|
|
28
|
+
actor: 'owner',
|
|
29
|
+
surface: 'repo_settings_page',
|
|
30
|
+
status: :accessible,
|
|
31
|
+
response: { http_status: 200 }
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
described_class.record_observation(
|
|
35
|
+
run_obj: run_obj,
|
|
36
|
+
checkpoint: 'post_change_t0',
|
|
37
|
+
actor: 'revoked_user',
|
|
38
|
+
surface: 'repo_settings_page',
|
|
39
|
+
status: :accessible,
|
|
40
|
+
response: { http_status: 200 },
|
|
41
|
+
notes: 'Still accessible after collaborator removal'
|
|
42
|
+
)
|
|
43
|
+
|
|
44
|
+
summary = described_class.finalize_run(run_obj: run_obj)
|
|
45
|
+
|
|
46
|
+
expect(summary[:totals][:stale_access_findings]).to eq(1)
|
|
47
|
+
expect(File).to exist(File.join(tmp_dir, 'rspec-run', 'RUNBOOK.md'))
|
|
48
|
+
expect(File).to exist(File.join(tmp_dir, 'rspec-run', 'coverage_matrix.json'))
|
|
49
|
+
expect(File).to exist(File.join(tmp_dir, 'rspec-run', 'SUMMARY.json'))
|
|
50
|
+
expect(File).to exist(File.join(tmp_dir, 'rspec-run', 'REPORT.md'))
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Cron do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Cron
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Cron
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Memory do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Memory
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Memory
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should support remember/recall/forget/clear' do
|
|
17
|
+
PWN::Memory.clear
|
|
18
|
+
PWN::Memory.remember(key: :test_fact, value: 'pwn-ai test memory', category: :fact)
|
|
19
|
+
res = PWN::Memory.recall(query: 'test')
|
|
20
|
+
expect(res.keys).to include(:test_fact)
|
|
21
|
+
PWN::Memory.forget(:test_fact)
|
|
22
|
+
expect(PWN::Memory.recall(query: 'test').keys).to be_empty
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
|
|
5
|
+
describe PWN::Sessions do
|
|
6
|
+
it 'should display information for authors' do
|
|
7
|
+
authors_response = PWN::Sessions
|
|
8
|
+
expect(authors_response).to respond_to :authors
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
it 'should display information for existing help method' do
|
|
12
|
+
help_response = PWN::Sessions
|
|
13
|
+
expect(help_response).to respond_to :help
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'should support create/list/append/load/delete' do
|
|
17
|
+
s = PWN::Sessions.create(title: 'spec test session')
|
|
18
|
+
expect(s[:id]).not_to be_nil
|
|
19
|
+
PWN::Sessions.append(session_id: s[:id], role: 'user', content: 'test input')
|
|
20
|
+
t = PWN::Sessions.load(session_id: s[:id])
|
|
21
|
+
expect(t.size).to be >= 2
|
|
22
|
+
PWN::Sessions.delete(session_id: s[:id])
|
|
23
|
+
expect(PWN::Sessions.list.any? { |x| x[:id] == s[:id] }).to be false
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'minitest/autorun'
|
|
4
|
+
require 'tmpdir'
|
|
5
|
+
require 'pwn'
|
|
6
|
+
|
|
7
|
+
# Smoke test for lifecycle authz replay (minitest, not rspec). Docs in main spec.
|
|
8
|
+
class LifecycleAuthzReplaySmokeTest < Minitest::Test
|
|
9
|
+
def test_builds_evidence_bundle_and_flags_stale_access
|
|
10
|
+
Dir.mktmpdir('lifecycle-authz-replay-smoke-') do |tmp_dir|
|
|
11
|
+
plan = {
|
|
12
|
+
campaign: {
|
|
13
|
+
id: 'acme-revoke-collaborator',
|
|
14
|
+
target: 'https://example.test',
|
|
15
|
+
change_event: 'remove_collaborator'
|
|
16
|
+
},
|
|
17
|
+
actors: %w[owner revoked_user],
|
|
18
|
+
surfaces: ['repo_settings_page'],
|
|
19
|
+
checkpoints: %w[pre_change post_change_t0],
|
|
20
|
+
expected_denied_after: ['post_change_t0']
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
run_obj = PWN::Bounty::LifecycleAuthzReplay.start_run(
|
|
24
|
+
plan: plan,
|
|
25
|
+
output_dir: tmp_dir,
|
|
26
|
+
run_id: 'smoke-run'
|
|
27
|
+
)
|
|
28
|
+
|
|
29
|
+
PWN::Bounty::LifecycleAuthzReplay.record_observation(
|
|
30
|
+
run_obj: run_obj,
|
|
31
|
+
checkpoint: 'pre_change',
|
|
32
|
+
actor: 'owner',
|
|
33
|
+
surface: 'repo_settings_page',
|
|
34
|
+
status: :accessible,
|
|
35
|
+
response: { http_status: 200 }
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
PWN::Bounty::LifecycleAuthzReplay.record_observation(
|
|
39
|
+
run_obj: run_obj,
|
|
40
|
+
checkpoint: 'post_change_t0',
|
|
41
|
+
actor: 'revoked_user',
|
|
42
|
+
surface: 'repo_settings_page',
|
|
43
|
+
status: :accessible,
|
|
44
|
+
response: { http_status: 200 },
|
|
45
|
+
notes: 'Still accessible after collaborator removal'
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
summary = PWN::Bounty::LifecycleAuthzReplay.finalize_run(
|
|
49
|
+
run_obj: run_obj
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
assert_equal(1, summary[:totals][:stale_access_findings])
|
|
53
|
+
assert(File.exist?(File.join(tmp_dir, 'smoke-run', 'RUNBOOK.md')))
|
|
54
|
+
assert(File.exist?(File.join(tmp_dir, 'smoke-run', 'coverage_matrix.json')))
|
|
55
|
+
assert(File.exist?(File.join(tmp_dir, 'smoke-run', 'SUMMARY.json')))
|
|
56
|
+
assert(File.exist?(File.join(tmp_dir, 'smoke-run', 'REPORT.md')))
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -22,9 +22,14 @@
|
|
|
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\"',\nmarkup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)'\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)',\noutput_path: 'optional - path to save the generated markdown report'\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
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.anthropic_rest_call Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.anthropic_rest_call`: Supported Method Parameters\n\nanthropic_rest_call(\n\ntoken: 'required - anthropic api key',\nhttp_method: 'optional HTTP method (defaults to GET)',\nbase_uri: 'optional base anthropic api URI (defaults to https://api.anthropic.com/v1)',\nrest_call: 'required rest call to make per the schema',\nparams: 'optional params passed in the URI or HTTP Headers',\nhttp_body: 'optional HTTP body sent in HTTP methods that support it e.g. POST',\ntimeout: 'optional timeout in seconds (defaults to 300)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
29
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.authors Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
30
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.chat Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.chat`: Supported Method Parameters\n\nresponse = PWN::AI::Anthropic.chat(\n\nrequest: 'required - message to Anthropic',\nmodel: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:anthropic][:model])',\ntemp: 'optional - creative response float (defaults to PWN::Env[:ai][:anthropic][:temp])',\nsystem_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:anthropic][:system_role_content])',\nresponse_history: 'optional - pass response back in to have a conversation',\nspeak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',\ntimeout: 'optional timeout in seconds (defaults to 300)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
31
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.get_models Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.get_models`: Supported Method Parameters\n\nmodels = PWN::AI::Anthropic.get_models\n"}]}
|
|
32
|
+
{"messages":[{"role":"user","content":"PWN::AI::Anthropic.help Usage"},{"role":"assistant","content":"`PWN::AI::Anthropic.help`: "}]}
|
|
28
33
|
{"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"}]}
|
|
29
34
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.chat Usage"},{"role":"assistant","content":"`PWN::AI::Grok.chat`: Supported Method Parameters\n\nresponse = PWN::AI::Grok.chat(\n\nrequest: 'required - message to Grok'\nmodel: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:grok][:model])',\ntemp: 'optional - creative response float (deafults to PWN::Env[:ai][:grok][:temp])',\nsystem_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:grok][:system_role_content])',\nresponse_history: 'optional - pass response back in to have a conversation',\nspeak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',\ntimeout: 'optional timeout in seconds (defaults to 300)',\nspinner: 'optional - display spinner (defaults to false)'\n\n)\n"}]}
|
|
30
35
|
{"messages":[{"role":"user","content":"PWN::AI::Grok.get_models Usage"},{"role":"assistant","content":"`PWN::AI::Grok.get_models`: Supported Method Parameters\n\nmodels = PWN::AI::Grok.get_models\n"}]}
|
|
@@ -482,12 +487,50 @@
|
|
|
482
487
|
{"messages":[{"role":"user","content":"PWN::Blockchain::ETH.get_block_details Usage"},{"role":"assistant","content":"`PWN::Blockchain::ETH.get_block_details`: Supported Method Parameters\n\nPWN::Blockchain::ETH.get_block_details(\n\nheight: 'required - block height number',\ntoken: 'optional - API token for higher rate limits'\n\n)\n"}]}
|
|
483
488
|
{"messages":[{"role":"user","content":"PWN::Blockchain::ETH.get_latest_block Usage"},{"role":"assistant","content":"`PWN::Blockchain::ETH.get_latest_block`: Supported Method Parameters\n\nlatest_block = PWN::Blockchain::ETH.get_latest_block(\n\ntoken: 'optional - API token for higher rate limits'\n\n)\n"}]}
|
|
484
489
|
{"messages":[{"role":"user","content":"PWN::Blockchain::ETH.help Usage"},{"role":"assistant","content":"`PWN::Blockchain::ETH.help`: "}]}
|
|
490
|
+
{"messages":[{"role":"user","content":"PWN::Bounty.help Usage"},{"role":"assistant","content":"`PWN::Bounty.help`: "}]}
|
|
491
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.authors Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
492
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.build_coverage_matrix Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.build_coverage_matrix`: "}]}
|
|
493
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.finalize_run Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.finalize_run`: Supported Method Parameters\n\nsummary = PWN::Bounty::LifecycleAuthzReplay.finalize_run(\n\nrun_obj: run_obj\n\n)\n"}]}
|
|
494
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.find_coverage_cell Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.find_coverage_cell`: "}]}
|
|
495
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.find_stale_access_findings Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.find_stale_access_findings`: "}]}
|
|
496
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.help Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.help`: "}]}
|
|
497
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.load_plan Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.load_plan`: Supported Method Parameters\n\nplan = PWN::Bounty::LifecycleAuthzReplay.load_plan(\n\nyaml_path: '/path/to/lifecycle_authz_replay.yaml'\n\n)\n"}]}
|
|
498
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.normalize_named_records Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.normalize_named_records`: "}]}
|
|
499
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.normalize_plan Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.normalize_plan`: Supported Method Parameters\n\nplan = PWN::Bounty::LifecycleAuthzReplay.normalize_plan(\n\nplan: {\n campaign: { id: 'acme-revoke' },\n actors: ['owner', 'revoked_user'],\n surfaces: ['repo_settings'],\n checkpoints: ['pre_change', 'post_change_t0']\n}\n\n)\n"}]}
|
|
500
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.normalize_token Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.normalize_token`: "}]}
|
|
501
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.record_observation Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.record_observation`: Supported Method Parameters\n\nPWN::Bounty::LifecycleAuthzReplay.record_observation(\n\nrun_obj: run_obj,\ncheckpoint: 'post_change_t0',\nactor: 'revoked_user',\nsurface: 'repo_settings_page',\nstatus: :accessible,\nrequest: { method: 'GET', path: '/org/repo/settings' },\nresponse: { http_status: 200 },\nnotes: 'Still reachable after collaborator removal',\nartifact_paths: ['/tmp/screen.png']\n\n)\n"}]}
|
|
502
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.start_run Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.start_run`: Supported Method Parameters\n\nrun_obj = PWN::Bounty::LifecycleAuthzReplay.start_run(\n\nyaml_path: '/path/to/lifecycle_authz_replay.yaml',\noutput_dir: '/tmp/evidence_bundle'\n\n)\n\nOR run_obj = PWN::Bounty::LifecycleAuthzReplay.start_run(\n\nplan: normalized_plan_hash,\noutput_dir: '/tmp/evidence_bundle'\n\n)\n"}]}
|
|
503
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.symbolize_obj Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.symbolize_obj`: "}]}
|
|
504
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.write_coverage_markdown Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.write_coverage_markdown`: "}]}
|
|
505
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.write_json Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.write_json`: "}]}
|
|
506
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.write_report Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.write_report`: "}]}
|
|
507
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.write_runbook Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.write_runbook`: "}]}
|
|
508
|
+
{"messages":[{"role":"user","content":"PWN::Bounty::LifecycleAuthzReplay.write_yaml Usage"},{"role":"assistant","content":"`PWN::Bounty::LifecycleAuthzReplay.write_yaml`: "}]}
|
|
485
509
|
{"messages":[{"role":"user","content":"PWN::Config.authors Usage"},{"role":"assistant","content":"`PWN::Config.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
486
510
|
{"messages":[{"role":"user","content":"PWN::Config.default_env Usage"},{"role":"assistant","content":"`PWN::Config.default_env`: Supported Method Parameters\n\nenv = PWN::Config.default_env(\n\npwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml'\n\n)\n"}]}
|
|
487
511
|
{"messages":[{"role":"user","content":"PWN::Config.help Usage"},{"role":"assistant","content":"`PWN::Config.help`: "}]}
|
|
488
512
|
{"messages":[{"role":"user","content":"PWN::Config.init_driver_options Usage"},{"role":"assistant","content":"`PWN::Config.init_driver_options`: Supported Method Parameters\n\nenv = PWN::Config.init_driver_options\n"}]}
|
|
513
|
+
{"messages":[{"role":"user","content":"PWN::Config.load_memory Usage"},{"role":"assistant","content":"`PWN::Config.load_memory`: Supported Method Parameters\n\nPWN::Config.load_memory\n"}]}
|
|
514
|
+
{"messages":[{"role":"user","content":"PWN::Config.load_skills Usage"},{"role":"assistant","content":"`PWN::Config.load_skills`: Supported Method Parameters\n\nskills = PWN::Config.load_skills(\n\npwn_skills_path: 'optional - Path to skills folder. Defaults to ~/.pwn/skills'\n\n)\n\nLoads instruction-based skills (.md, .txt, .skill, .yaml) and executable Ruby skills (.rb) into PWN::Skills constant (hash of basename => {type, path, content, loaded?}). The pwn-ai command (REPL driver) loads and is aware of this folder to expand autonomous agent capabilities (equivalent to Hermes agent TUI skills for task execution).\n"}]}
|
|
515
|
+
{"messages":[{"role":"user","content":"PWN::Config.pwn_cron_path Usage"},{"role":"assistant","content":"`PWN::Config.pwn_cron_path`: Supported Method Parameters\n\npath = PWN::Config.pwn_cron_path\n"}]}
|
|
516
|
+
{"messages":[{"role":"user","content":"PWN::Config.pwn_memory_path Usage"},{"role":"assistant","content":"`PWN::Config.pwn_memory_path`: Supported Method Parameters\n\npath = PWN::Config.pwn_memory_path\n"}]}
|
|
517
|
+
{"messages":[{"role":"user","content":"PWN::Config.pwn_sessions_path Usage"},{"role":"assistant","content":"`PWN::Config.pwn_sessions_path`: Supported Method Parameters\n\npath = PWN::Config.pwn_sessions_path\n"}]}
|
|
518
|
+
{"messages":[{"role":"user","content":"PWN::Config.pwn_skills_path Usage"},{"role":"assistant","content":"`PWN::Config.pwn_skills_path`: Supported Method Parameters\n\npwn_skills_path = PWN::Config.pwn_skills_path(\n\npwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml'\n\n)\n"}]}
|
|
489
519
|
{"messages":[{"role":"user","content":"PWN::Config.redact_sensitive_artifacts Usage"},{"role":"assistant","content":"`PWN::Config.redact_sensitive_artifacts`: Supported Method Parameters\n\nPWN::Config.redact_sensitive_artifacts(\n\nconfig: 'optional - Hash to redact sensitive artifacts from. Defaults to PWN::Env'\n\n)\n"}]}
|
|
490
520
|
{"messages":[{"role":"user","content":"PWN::Config.refresh_env Usage"},{"role":"assistant","content":"`PWN::Config.refresh_env`: Supported Method Parameters\n\nPWN::Config.refresh_env(\n\npwn_env_path: 'optional - Path to pwn.yaml file. Defaults to ~/.pwn/pwn.yaml',\npwn_dec_path: 'optional - Path to pwn.yaml.decryptor file. Defaults to ~/.pwn/pwn.yaml.decryptor'\n\n)\n"}]}
|
|
521
|
+
{"messages":[{"role":"user","content":"PWN::Cron.authors Usage"},{"role":"assistant","content":"`PWN::Cron.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
522
|
+
{"messages":[{"role":"user","content":"PWN::Cron.create Usage"},{"role":"assistant","content":"`PWN::Cron.create`: Supported Method Parameters\n\njob = PWN::Cron.create(\n\nname: 'optional',\nschedule: 'required e.g. \"0 * * * *\" or \"30m\" or \"every 2h\"',\nprompt: 'optional - pwn-ai prompt to run',\nruby: 'optional - ruby snippet to eval',\nscript: 'optional - path to external script',\ndelivery: 'log|stdout (default log)',\nenabled: true\n\n)\n"}]}
|
|
523
|
+
{"messages":[{"role":"user","content":"PWN::Cron.cron_dir Usage"},{"role":"assistant","content":"`PWN::Cron.cron_dir`: Supported Method Parameters\n\ndir = PWN::Cron.cron_dir\n"}]}
|
|
524
|
+
{"messages":[{"role":"user","content":"PWN::Cron.disable Usage"},{"role":"assistant","content":"`PWN::Cron.disable`: "}]}
|
|
525
|
+
{"messages":[{"role":"user","content":"PWN::Cron.enable Usage"},{"role":"assistant","content":"`PWN::Cron.enable`: Supported Method Parameters\n\nPWN::Cron.enable/disable(id:)\n"}]}
|
|
526
|
+
{"messages":[{"role":"user","content":"PWN::Cron.help Usage"},{"role":"assistant","content":"`PWN::Cron.help`: "}]}
|
|
527
|
+
{"messages":[{"role":"user","content":"PWN::Cron.install_crontab_entry Usage"},{"role":"assistant","content":"`PWN::Cron.install_crontab_entry`: "}]}
|
|
528
|
+
{"messages":[{"role":"user","content":"PWN::Cron.list Usage"},{"role":"assistant","content":"`PWN::Cron.list`: Supported Method Parameters\n\njobs = PWN::Cron.list\n"}]}
|
|
529
|
+
{"messages":[{"role":"user","content":"PWN::Cron.load_jobs Usage"},{"role":"assistant","content":"`PWN::Cron.load_jobs`: "}]}
|
|
530
|
+
{"messages":[{"role":"user","content":"PWN::Cron.remove Usage"},{"role":"assistant","content":"`PWN::Cron.remove`: Supported Method Parameters\n\nPWN::Cron.remove(id:)\n"}]}
|
|
531
|
+
{"messages":[{"role":"user","content":"PWN::Cron.run Usage"},{"role":"assistant","content":"`PWN::Cron.run`: Supported Method Parameters\n\nPWN::Cron.run(id: ‘required or name’) Executes the job (for pwn-ai prompt it will use current active AI engine via PWN::AI::* but without full REPL hook unless in pwn-ai).\n"}]}
|
|
532
|
+
{"messages":[{"role":"user","content":"PWN::Cron.save_jobs Usage"},{"role":"assistant","content":"`PWN::Cron.save_jobs`: "}]}
|
|
533
|
+
{"messages":[{"role":"user","content":"PWN::Cron.toggle Usage"},{"role":"assistant","content":"`PWN::Cron.toggle`: "}]}
|
|
491
534
|
{"messages":[{"role":"user","content":"PWN::Driver.authors Usage"},{"role":"assistant","content":"`PWN::Driver.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
492
535
|
{"messages":[{"role":"user","content":"PWN::Driver.help Usage"},{"role":"assistant","content":"`PWN::Driver.help`: "}]}
|
|
493
536
|
{"messages":[{"role":"user","content":"PWN::Driver::Parser.new Usage"},{"role":"assistant","content":"`PWN::Driver::Parser.new`: "}]}
|
|
@@ -495,6 +538,15 @@
|
|
|
495
538
|
{"messages":[{"role":"user","content":"PWN::FFI.help Usage"},{"role":"assistant","content":"`PWN::FFI.help`: "}]}
|
|
496
539
|
{"messages":[{"role":"user","content":"PWN::FFI::Stdio.authors Usage"},{"role":"assistant","content":"`PWN::FFI::Stdio.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
497
540
|
{"messages":[{"role":"user","content":"PWN::FFI::Stdio.help Usage"},{"role":"assistant","content":"`PWN::FFI::Stdio.help`: "}]}
|
|
541
|
+
{"messages":[{"role":"user","content":"PWN::Memory.authors Usage"},{"role":"assistant","content":"`PWN::Memory.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
542
|
+
{"messages":[{"role":"user","content":"PWN::Memory.clear Usage"},{"role":"assistant","content":"`PWN::Memory.clear`: Supported Method Parameters\n\nPWN::Memory.clear\n"}]}
|
|
543
|
+
{"messages":[{"role":"user","content":"PWN::Memory.forget Usage"},{"role":"assistant","content":"`PWN::Memory.forget`: Supported Method Parameters\n\nPWN::Memory.forget(key)\n"}]}
|
|
544
|
+
{"messages":[{"role":"user","content":"PWN::Memory.help Usage"},{"role":"assistant","content":"`PWN::Memory.help`: "}]}
|
|
545
|
+
{"messages":[{"role":"user","content":"PWN::Memory.load Usage"},{"role":"assistant","content":"`PWN::Memory.load`: Supported Method Parameters\n\nmemory = PWN::Memory.load\n"}]}
|
|
546
|
+
{"messages":[{"role":"user","content":"PWN::Memory.recall Usage"},{"role":"assistant","content":"`PWN::Memory.recall`: Supported Method Parameters\n\nresults = PWN::Memory.recall(\n\nquery: 'optional - string to search keys/values/categories (simple match)',\ncategory: 'optional - filter by category',\nlimit: 'optional - max results (default 50)'\n\n)\n"}]}
|
|
547
|
+
{"messages":[{"role":"user","content":"PWN::Memory.remember Usage"},{"role":"assistant","content":"`PWN::Memory.remember`: Supported Method Parameters\n\nPWN::Memory.remember(\n\nkey: 'required - Symbol or String key for the memory fact',\nvalue: 'required - The value (any JSON serializable)',\ncategory: 'optional - e.g. :fact, :preference, :lesson, :env (default: :fact)'\n\n)\n"}]}
|
|
548
|
+
{"messages":[{"role":"user","content":"PWN::Memory.save Usage"},{"role":"assistant","content":"`PWN::Memory.save`: Supported Method Parameters\n\nPWN::Memory.save(memory_hash)\n"}]}
|
|
549
|
+
{"messages":[{"role":"user","content":"PWN::Memory.to_context Usage"},{"role":"assistant","content":"`PWN::Memory.to_context`: Supported Method Parameters\n\ncontext = PWN::Memory.to_context(limit: 20) (used internally by pwn-ai hook to inject into system prompt)\n"}]}
|
|
498
550
|
{"messages":[{"role":"user","content":"PWN::Plugins.help Usage"},{"role":"assistant","content":"`PWN::Plugins.help`: "}]}
|
|
499
551
|
{"messages":[{"role":"user","content":"PWN::Plugins::Android.adb_net_connect Usage"},{"role":"assistant","content":"`PWN::Plugins::Android.adb_net_connect`: Supported Method Parameters\n\nPWN::Plugins::Android.adb_net_connect(\n\nadb_path: 'required - path to adb binary',\ntarget: 'required - target host or IP to connect',\nport: 'optional - defaults to tcp 5555'\n\n)\n"}]}
|
|
500
552
|
{"messages":[{"role":"user","content":"PWN::Plugins::Android.adb_net_disconnect Usage"},{"role":"assistant","content":"`PWN::Plugins::Android.adb_net_disconnect`: Supported Method Parameters\n\nPWN::Plugins::Android.adb_net_disconnect(\n\nadb_path: 'required - path to adb binary',\ntarget: 'required - target host or IP to disconnect',\nport: 'optional - defaults to tcp 5555'\n\n)\n"}]}
|
|
@@ -928,10 +980,14 @@
|
|
|
928
980
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.add_hooks Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.add_hooks`: Supported Method Parameters\n\nPWN::Plugins::REPL.add_hooks\n"}]}
|
|
929
981
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
930
982
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.help Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.help`: "}]}
|
|
931
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.refresh_ps1_proc Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.refresh_ps1_proc`:
|
|
983
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.refresh_ps1_proc Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.refresh_ps1_proc`: "}]}
|
|
932
984
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.start Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.start`: Supported Method Parameters\n\nPWN::Plugins::REPL.start\n"}]}
|
|
933
985
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.process Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.process`: "}]}
|
|
934
986
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.top_h1_program_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.top_h1_program_scope`: "}]}
|
|
987
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PwnAIInput.new Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PwnAIInput.new`: "}]}
|
|
988
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PwnAIInput.readline Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PwnAIInput.readline`: "}]}
|
|
989
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PwnAIInput.tty? Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PwnAIInput.tty?`: "}]}
|
|
990
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PwnAIInput.winsize Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PwnAIInput.winsize`: "}]}
|
|
935
991
|
{"messages":[{"role":"user","content":"PWN::Plugins::RabbitMQ.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::RabbitMQ.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
936
992
|
{"messages":[{"role":"user","content":"PWN::Plugins::RabbitMQ.close Usage"},{"role":"assistant","content":"`PWN::Plugins::RabbitMQ.close`: Supported Method Parameters\n\nPWN::Plugins::RabbitMQ.close(\n\namqp_oject: amqp_conn1\n\n)\n"}]}
|
|
937
993
|
{"messages":[{"role":"user","content":"PWN::Plugins::RabbitMQ.help Usage"},{"role":"assistant","content":"`PWN::Plugins::RabbitMQ.help`: "}]}
|
|
@@ -1072,6 +1128,7 @@
|
|
|
1072
1128
|
{"messages":[{"role":"user","content":"PWN::Plugins::XXD.fill_range_w_byte Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.fill_range_w_byte`: Supported Method Parameters\n\nhexdump = PWN::Plugins::XXD.fill_range_w_byte(\n\nhexdump: 'required - hexdump returned from #dump method',\nstart_addr: 'required - start address to fill with byte',\nend_addr: 'required - end address to fill with byte',\nbyte: 'required - byte to fill range with'\n\n)\n"}]}
|
|
1073
1129
|
{"messages":[{"role":"user","content":"PWN::Plugins::XXD.help Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.help`: "}]}
|
|
1074
1130
|
{"messages":[{"role":"user","content":"PWN::Plugins::XXD.reverse_dump Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.reverse_dump`: Supported Method Parameters\n\nPWN::Plugins::XXD.reverse_dump(\n\nhexdump: 'required - hexdump returned from #dump method',\nfile: 'required - path to binary file to dump',\nbyte_chunks: 'optional - if set, will write n byte chunks of hexdump to multiple files'\n\n)\n"}]}
|
|
1131
|
+
{"messages":[{"role":"user","content":"PWN::Plugins::XXD.reverse_hex_string Usage"},{"role":"assistant","content":"`PWN::Plugins::XXD.reverse_hex_string`: Supported Method Parameters\n\nPWN::Plugins::XXD.reverse_dump(\n\nstring: 'required - continuous hex string to reverse (i.e. \"68656c6c6f\")',\nfile: 'required - path to binary file to dump'\n\n)\n"}]}
|
|
1075
1132
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.active_scan Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.active_scan`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.active_scan(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_url: 'required - url to scan',\nexclude_paths: 'optional - array of paths to exclude from scan (default: [])',\nscan_policy: 'optional - scan policy to use (defaults to Default Policy)'\n\n)\n"}]}
|
|
1076
1133
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.add_to_scope Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.add_to_scope`: Supported Method Parameters\n\nPWN::Plugins::Zaproxy.add_to_scope(\n\nzap_obj: 'required - zap_obj returned from #open method',\ntarget_regex: 'required - url regex to add to scope (e.g. https://test.domain.local.*)',\ncontext_name: 'optional - context name to add target_regex to (defaults to Default Context)'\n\n)\n"}]}
|
|
1077
1134
|
{"messages":[{"role":"user","content":"PWN::Plugins::Zaproxy.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::Zaproxy.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
@@ -1363,6 +1420,16 @@
|
|
|
1363
1420
|
{"messages":[{"role":"user","content":"PWN::SDR::SonMicroRFID.read_tag Usage"},{"role":"assistant","content":"`PWN::SDR::SonMicroRFID.read_tag`: Supported Method Parameters\n\nPWN::SDR::SonMicroRFID.read_tag(\n\nson_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method',\nauthn: 'optional - authentication flag (default: false)',\nkey: 'optional - key for authentication (default: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF])'\n\n)\n"}]}
|
|
1364
1421
|
{"messages":[{"role":"user","content":"PWN::SDR::SonMicroRFID.update_tag Usage"},{"role":"assistant","content":"`PWN::SDR::SonMicroRFID.update_tag`: Supported Method Parameters\n\nPWN::SDR::SonMicroRFID.update_tag(\n\nson_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method'\n\n)\n"}]}
|
|
1365
1422
|
{"messages":[{"role":"user","content":"PWN::SDR::SonMicroRFID.write_tag Usage"},{"role":"assistant","content":"`PWN::SDR::SonMicroRFID.write_tag`: Supported Method Parameters\n\nPWN::SDR::SonMicroRFID.write_tag(\n\nson_micro_rfid_obj: 'required - son_micro_rfid_obj returned from #connect method',\nrfid_data: 'required - RFID data to write (see #read_tag for structure)',\nauthn: 'optional - authentication flag (default: false)',\nkey: 'optional - key for authentication (default: [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF])'\n\n)\n"}]}
|
|
1423
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.append Usage"},{"role":"assistant","content":"`PWN::Sessions.append`: Supported Method Parameters\n\nPWN::Sessions.append(\n\nsession_id: 'required',\nrole: 'user|assistant|system|observation',\ncontent: 'the message or obs'\n\n)\n"}]}
|
|
1424
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.authors Usage"},{"role":"assistant","content":"`PWN::Sessions.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
1425
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.create Usage"},{"role":"assistant","content":"`PWN::Sessions.create`: Supported Method Parameters\n\nsession = PWN::Sessions.create(\n\ntitle: 'optional - human title',\nsource: 'optional - e.g. pwn-ai-repl'\n\n)\n"}]}
|
|
1426
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.delete Usage"},{"role":"assistant","content":"`PWN::Sessions.delete`: Supported Method Parameters\n\nPWN::Sessions.delete(session_id:)\n"}]}
|
|
1427
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.help Usage"},{"role":"assistant","content":"`PWN::Sessions.help`: "}]}
|
|
1428
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.list Usage"},{"role":"assistant","content":"`PWN::Sessions.list`: Supported Method Parameters\n\nsessions = PWN::Sessions.list\n"}]}
|
|
1429
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.load Usage"},{"role":"assistant","content":"`PWN::Sessions.load`: Supported Method Parameters\n\ntranscript = PWN::Sessions.load(session_id: ‘required’)\n"}]}
|
|
1430
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.sessions_dir Usage"},{"role":"assistant","content":"`PWN::Sessions.sessions_dir`: Supported Method Parameters\n\ndir = PWN::Sessions.sessions_dir\n"}]}
|
|
1431
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.stats Usage"},{"role":"assistant","content":"`PWN::Sessions.stats`: Supported Method Parameters\n\nstats = PWN::Sessions.stats\n"}]}
|
|
1432
|
+
{"messages":[{"role":"user","content":"PWN::Sessions.to_response_history Usage"},{"role":"assistant","content":"`PWN::Sessions.to_response_history`: Supported Method Parameters\n\nhistory_for_ai = PWN::Sessions.to_response_history(session_id:) (converts transcript to the response_history format used by PWN::AI::* .chat)\n"}]}
|
|
1366
1433
|
{"messages":[{"role":"user","content":"PWN::WWW.help Usage"},{"role":"assistant","content":"`PWN::WWW.help`: "}]}
|
|
1367
1434
|
{"messages":[{"role":"user","content":"PWN::WWW::AppCobaltIO.authors Usage"},{"role":"assistant","content":"`PWN::WWW::AppCobaltIO.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
1368
1435
|
{"messages":[{"role":"user","content":"PWN::WWW::AppCobaltIO.close Usage"},{"role":"assistant","content":"`PWN::WWW::AppCobaltIO.close`: Supported Method Parameters\n\nbrowser_obj = PWN::WWW::AppCobaltIO.close(\n\nbrowser_obj: 'required - browser_obj returned from #open method'\n\n)\n"}]}
|
data/upgrade_pwn.sh
CHANGED
data/vagrant/provisioners/pwn.sh
CHANGED
|
@@ -10,4 +10,4 @@ else
|
|
|
10
10
|
fi
|
|
11
11
|
|
|
12
12
|
export rvmsudo_secure_path=1
|
|
13
|
-
|
|
13
|
+
/bin/bash --login -c "cd ${pwn_root} && git config --global --add safe.directory ${pwn_root} && ./build_gem.sh"
|