pwn 0.5.777 → 0.5.778
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 +1 -1
- data/Rakefile +1 -2
- data/build_gem.sh +14 -0
- data/documentation/Installation.md +21 -2
- data/lib/pwn/version.rb +1 -1
- data/spec/lib/pwn/module_skills_spec.rb +71 -32
- data/third_party/pwn_rdoc.jsonl +0 -23
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3bd715a7f2fae3e39f56f1c2e0d47629de11144461591acbfcbc7399e8a1da9a
|
|
4
|
+
data.tar.gz: 80b713ca6f117ba5f9862416f2796f777e3c4a1e1bba68fdf05fda02ea758635
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e17ff89a41133b10913a559880f90220940fa02ae6e74694e6c914d1c74af793d94907b05bd5655f7a9ee27afac498e896888c2d8a0c206381e7910ed8233dca
|
|
7
|
+
data.tar.gz: acc1ceac0c1e58354e730a115e06d312d5873cabaf1775ab7f39149ebfa99bb20094e83eae12b9e33108d046bcba61ab0887b7c869471fe9c0a9c655d29a2c72
|
data/Gemfile
CHANGED
|
@@ -24,7 +24,7 @@ gem 'bundler', '>=4.0.23'
|
|
|
24
24
|
gem 'bundler-audit', '>=0.9.3'
|
|
25
25
|
gem 'bunny', '3.4.0'
|
|
26
26
|
gem 'colorize', '1.1.0'
|
|
27
|
-
gem 'credit_card_validations', '
|
|
27
|
+
gem 'credit_card_validations', '10.0.0'
|
|
28
28
|
gem 'curses', '1.7.0'
|
|
29
29
|
gem 'diffy', '3.4.4'
|
|
30
30
|
gem 'eventmachine', '1.2.7'
|
data/Rakefile
CHANGED
|
@@ -38,9 +38,8 @@ default_tasks = %i[spec rubocop]
|
|
|
38
38
|
default_tasks << :rerdoc if defined?(RDoc::Task)
|
|
39
39
|
task default: default_tasks
|
|
40
40
|
|
|
41
|
-
desc 'Regenerate etc/default_skills/pwn from live PWN modules'
|
|
41
|
+
desc 'Regenerate etc/default_skills/pwn from live PWN modules. Not a spec dependency: writing the checkout blocks git merge on upgrade.'
|
|
42
42
|
task :module_skills do
|
|
43
43
|
require 'pwn'
|
|
44
44
|
PWN::ModuleSkills.refresh!
|
|
45
45
|
end
|
|
46
|
-
Rake::Task[:spec].enhance([:module_skills])
|
data/build_gem.sh
CHANGED
|
@@ -19,6 +19,20 @@ git config pull.rebase false
|
|
|
19
19
|
# Sync fork with upstream to avoid merge conflicts and ensure we are building the latest codebase
|
|
20
20
|
git remote -v | grep 'upstream' || git remote add upstream https://github.com/0dayinc/pwn.git
|
|
21
21
|
git fetch upstream
|
|
22
|
+
# Preserve legacy generated-skill changes before switching branches or merging.
|
|
23
|
+
# Leave the stash saved: popping it would recreate the next upgrade conflict.
|
|
24
|
+
generated_skills=()
|
|
25
|
+
while IFS= read -r skill; do
|
|
26
|
+
[[ -f "$skill" ]] || continue
|
|
27
|
+
[[ "$skill" == */SKILL.md ]] || continue
|
|
28
|
+
grep -Eq '^[[:space:]]*generated:[[:space:]]*true[[:space:]]*$' "$skill" || continue
|
|
29
|
+
grep -Eq '^[[:space:]]*preserve:[[:space:]]*true[[:space:]]*$' "$skill" && continue
|
|
30
|
+
generated_skills+=("$skill")
|
|
31
|
+
done < <(git diff --name-only HEAD -- etc/default_skills/pwn)
|
|
32
|
+
if (( ${#generated_skills[@]} )); then
|
|
33
|
+
git stash push -m 'pwn upgrade: saved generated module skills' -- "${generated_skills[@]}"
|
|
34
|
+
printf '%s\n' 'Generated skill edits saved in git stash; not reapplied after upgrade.'
|
|
35
|
+
fi
|
|
22
36
|
git checkout master
|
|
23
37
|
git merge upstream/master
|
|
24
38
|
git pull
|
|
@@ -381,8 +381,27 @@ edited SOP `SKILL.md`). Generated module skills under `etc/default_skills/pwn/`
|
|
|
381
381
|
`PWN::` module, plus `references/` when the source has CWE/NIST/URLs) are
|
|
382
382
|
copied to `~/.pwn/skills/pwn/` and **are** overwritten on
|
|
383
383
|
`pwn setup --migrate` / first launch so they stay in sync with `lib/pwn`.
|
|
384
|
-
`bundle exec rake`
|
|
385
|
-
|
|
384
|
+
`bundle exec rake` does not rewrite `etc/default_skills/pwn`. `rake module_skills`
|
|
385
|
+
is the explicit regenerate. A spec or rake run that writes the checkout
|
|
386
|
+
leaves a local `SKILL.md` edit, and the next `upgrade_pwn.sh` merge aborts.
|
|
387
|
+
The upgrade saves modified generated module `SKILL.md` files in a named Git
|
|
388
|
+
stash before merging; it does not automatically reapply those stale files.
|
|
389
|
+
Skills marked `preserve: true` and unrelated edits are left alone.
|
|
390
|
+
|
|
391
|
+
For a clone already blocked before it can obtain this fix, no reclone is needed:
|
|
392
|
+
|
|
393
|
+
```bash
|
|
394
|
+
cd /opt/pwn
|
|
395
|
+
git stash push -m 'pwn: preserve legacy generated skills before upgrade' -- etc/default_skills/pwn
|
|
396
|
+
./upgrade_pwn.sh
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
The stash preserves the prior skill edits for review with `git stash list` and
|
|
400
|
+
`git stash show -p`. Do not blindly pop it after upgrading: that restores stale
|
|
401
|
+
generated files and can recreate the conflict. The one-time command saves all
|
|
402
|
+
edits under that skill subtree, including any hand-edited skills; recover those
|
|
403
|
+
selectively after reviewing them. Other local changes are not stashed.
|
|
404
|
+
|
|
386
405
|
`pwn setup --migrate` and `pwn-ai` start copy that tree to `~/.pwn/skills/pwn`. Add at least one
|
|
387
406
|
LLM engine key with the `pwn-vault` REPL command to enable `pwn-ai` - see
|
|
388
407
|
[Configuration](Configuration.md). `pwn setup` will report the AI-engine
|
data/lib/pwn/version.rb
CHANGED
|
@@ -3,8 +3,46 @@
|
|
|
3
3
|
require 'spec_helper'
|
|
4
4
|
require 'fileutils'
|
|
5
5
|
require 'tmpdir'
|
|
6
|
+
require 'open3'
|
|
6
7
|
|
|
7
8
|
describe PWN::ModuleSkills do
|
|
9
|
+
it 'saves legacy generated edits and merges without discarding unrelated edits' do
|
|
10
|
+
script = File.read(File.expand_path('../../../build_gem.sh', __dir__))
|
|
11
|
+
recovery = script.split('generated_skills=()', 2).last.split('git checkout master', 2).first
|
|
12
|
+
Dir.mktmpdir('pwn_upgrade') do |dir|
|
|
13
|
+
git = lambda do |*args|
|
|
14
|
+
out, status = Open3.capture2e('git', *args, chdir: dir)
|
|
15
|
+
expect(status.success?).to be(true), out
|
|
16
|
+
out
|
|
17
|
+
end
|
|
18
|
+
git.call('init', '-b', 'master')
|
|
19
|
+
git.call('config', 'user.email', 'test@example.invalid')
|
|
20
|
+
git.call('config', 'user.name', 'Upgrade Test')
|
|
21
|
+
skill = 'etc/default_skills/pwn/json_text/SKILL.md'
|
|
22
|
+
path = File.join(dir, skill)
|
|
23
|
+
FileUtils.mkdir_p(File.dirname(path))
|
|
24
|
+
original = "---\ngenerated: true\n---\noriginal\n"
|
|
25
|
+
File.write(path, original)
|
|
26
|
+
File.write(File.join(dir, 'notes'), 'original')
|
|
27
|
+
git.call('add', '.')
|
|
28
|
+
git.call('commit', '-m', 'base')
|
|
29
|
+
git.call('checkout', '-b', 'incoming')
|
|
30
|
+
File.write(path, "#{original}upstream\n")
|
|
31
|
+
git.call('commit', '-am', 'update')
|
|
32
|
+
git.call('checkout', 'master')
|
|
33
|
+
File.write(path, "#{original}local regeneration\n")
|
|
34
|
+
File.write(File.join(dir, 'notes'), 'keep my edit')
|
|
35
|
+
_, blocked = Open3.capture2e('git', 'merge', '--ff-only', 'incoming', chdir: dir)
|
|
36
|
+
expect(blocked.success?).to be(false)
|
|
37
|
+
out, status = Open3.capture2e('bash', '-ec', "generated_skills=()#{recovery}", chdir: dir)
|
|
38
|
+
expect(status.success?).to be(true), out
|
|
39
|
+
git.call('merge', '--ff-only', 'incoming')
|
|
40
|
+
expect(File.read(path)).to eq("#{original}upstream\n")
|
|
41
|
+
expect(File.read(File.join(dir, 'notes'))).to eq('keep my edit')
|
|
42
|
+
expect(git.call('show', "stash@{0}:#{skill}")).to include('local regeneration')
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
8
46
|
it 'should display information for authors' do
|
|
9
47
|
expect(described_class).to respond_to :authors
|
|
10
48
|
end
|
|
@@ -23,48 +61,50 @@ describe PWN::ModuleSkills do
|
|
|
23
61
|
expect(described_class.relpath(source: 'pwn.rb')).to eq('pwn/SKILL.md')
|
|
24
62
|
end
|
|
25
63
|
|
|
26
|
-
it 'refreshes
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
64
|
+
it 'refreshes a temp skill tree and does not rewrite the checkout' do
|
|
65
|
+
checkout = File.join(PWN::ModuleSkills::GEM_SKILLS, 'json_text', 'SKILL.md')
|
|
66
|
+
before = File.read(checkout)
|
|
67
|
+
Dir.mktmpdir('pwn_mod_refresh') do |dir|
|
|
68
|
+
report = described_class.refresh!(dest: dir)
|
|
69
|
+
expect(report[:modules]).to be > 50
|
|
70
|
+
tb = File.join(dir, 'pwn', 'plugins', 'transparent_browser', 'SKILL.md')
|
|
71
|
+
expect(File.file?(tb)).to eq(true), tb
|
|
72
|
+
expect(File).not_to exist(File.join(dir, 'pwn', 'plugins', 'transparent_browser.md'))
|
|
73
|
+
body = File.read(tb)
|
|
74
|
+
expect(body).to include('PWN::Plugins::TransparentBrowser')
|
|
75
|
+
expect(body).to include('open')
|
|
76
|
+
expect(body).not_to match(/hermes/i)
|
|
36
77
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
78
|
+
pw = File.join(dir, 'pwn', 'sast', 'password', 'SKILL.md')
|
|
79
|
+
expect(File.file?(pw)).to eq(true), pw
|
|
80
|
+
expect(File.file?(File.join(dir, 'pwn', 'sast', 'password', 'references', 'security.md'))).to eq(true)
|
|
81
|
+
|
|
82
|
+
described_class.enumerate.each do |rec|
|
|
83
|
+
path = File.join(dir, described_class.relpath(source: rec[:source], const: rec[:const]))
|
|
84
|
+
expect(File.file?(path)).to eq(true), path
|
|
85
|
+
expect(File.read(path)).to include(rec[:const])
|
|
86
|
+
expect(File.read(path)).not_to match(/hermes/i)
|
|
87
|
+
end
|
|
88
|
+
drift = described_class.drift(dest: dir)
|
|
89
|
+
expect(drift[:missing]).to eq([])
|
|
90
|
+
expect(drift[:stale]).to eq([])
|
|
91
|
+
expect(drift[:orphans]).to eq([])
|
|
92
|
+
end
|
|
93
|
+
expect(File.read(checkout)).to eq(before)
|
|
40
94
|
|
|
41
95
|
gw = File.join(PWN::ModuleSkills::GEM_SKILLS, 'plugins', 'google_workspace', 'SKILL.md')
|
|
42
96
|
expect(File.read(gw)).to include('preserve: true')
|
|
43
97
|
expect(File.read(gw)).to include('gmail_search')
|
|
44
98
|
expect(File.read(gw)).to include('daily-brief.md')
|
|
45
99
|
expect(File).not_to exist(File.join(PWN::Config.default_skills_dir, 'productivity', 'google-workspace', 'SKILL.md'))
|
|
46
|
-
|
|
47
|
-
described_class.enumerate.each do |rec|
|
|
48
|
-
path = File.join(
|
|
49
|
-
File.dirname(PWN::ModuleSkills::GEM_SKILLS),
|
|
50
|
-
described_class.relpath(source: rec[:source], const: rec[:const])
|
|
51
|
-
)
|
|
52
|
-
expect(File.file?(path)).to eq(true), path
|
|
53
|
-
expect(File.read(path)).to include(rec[:const])
|
|
54
|
-
expect(File.read(path)).not_to match(/hermes/i)
|
|
55
|
-
end
|
|
56
|
-
drift = described_class.drift
|
|
57
|
-
expect(drift[:missing]).to eq([])
|
|
58
|
-
expect(drift[:stale]).to eq([])
|
|
59
|
-
expect(drift[:orphans]).to eq([])
|
|
60
100
|
end
|
|
61
101
|
|
|
62
|
-
it '
|
|
63
|
-
expect(described_class).to respond_to(:drift)
|
|
102
|
+
it 'does not rewrite the checkout before spec' do
|
|
64
103
|
rake = File.read(File.expand_path('../../../Rakefile', __dir__))
|
|
65
|
-
expect(rake).to match(/module_skills/)
|
|
104
|
+
expect(rake).to match(/task :module_skills do/)
|
|
66
105
|
expect(rake).to match(/ModuleSkills\.refresh!/)
|
|
67
|
-
expect(rake).
|
|
106
|
+
expect(rake).not_to match(/Task\[:spec\]\.enhance\(\[:module_skills\]\)/)
|
|
107
|
+
expect(rake).not_to match(/module_skills_drift/)
|
|
68
108
|
end
|
|
69
109
|
|
|
70
110
|
it 'install overwrites existing generated module skills' do
|
|
@@ -83,7 +123,6 @@ describe PWN::ModuleSkills do
|
|
|
83
123
|
end
|
|
84
124
|
|
|
85
125
|
it 'ships no credential-shaped artifacts under etc/default_skills' do
|
|
86
|
-
described_class.refresh!
|
|
87
126
|
rx = described_class.const_get(:ARTIFACT_RX)
|
|
88
127
|
leftovers = []
|
|
89
128
|
Dir.glob(File.join(PWN::Config.default_skills_dir, '**', '*')).each do |path|
|
data/third_party/pwn_rdoc.jsonl
CHANGED
|
@@ -3397,18 +3397,6 @@
|
|
|
3397
3397
|
{"messages":[{"role":"user","content":"PWN::Plugins::REDB.strings Usage"},{"role":"assistant","content":"`PWN::Plugins::REDB.strings`: "}]}
|
|
3398
3398
|
{"messages":[{"role":"user","content":"PWN::Plugins::REDB.with_db Usage"},{"role":"assistant","content":"`PWN::Plugins::REDB.with_db`: "}]}
|
|
3399
3399
|
{"messages":[{"role":"user","content":"PWN::Plugins::REDB.xrefs_to Usage"},{"role":"assistant","content":"`PWN::Plugins::REDB.xrefs_to`: "}]}
|
|
3400
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.add_commands Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.add_commands`: Supported Method Parameters\n\nPWN::Plugins::REPL.add_commands\n"}]}
|
|
3401
|
-
{"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"}]}
|
|
3402
|
-
{"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"}]}
|
|
3403
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.compact_context_tokens Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.compact_context_tokens`: "}]}
|
|
3404
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.enable_autocomplete Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.enable_autocomplete`: "}]}
|
|
3405
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.help Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.help`: "}]}
|
|
3406
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.leave_special_mode! Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.leave_special_mode!`: "}]}
|
|
3407
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.ready_tty! Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.ready_tty!`: "}]}
|
|
3408
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.refresh_ps1_proc Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.refresh_ps1_proc`: "}]}
|
|
3409
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.reset_reline_editor Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.reset_reline_editor`: "}]}
|
|
3410
|
-
{"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"}]}
|
|
3411
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL.process Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL.process`: "}]}
|
|
3412
3400
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::AI.add_commands Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::AI.add_commands`: "}]}
|
|
3413
3401
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::AI.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::AI.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
3414
3402
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::AI.help Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::AI.help`: "}]}
|
|
@@ -3677,13 +3665,6 @@
|
|
|
3677
3665
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
3678
3666
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh.help Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh.help`: "}]}
|
|
3679
3667
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh.process Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh.process`: "}]}
|
|
3680
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.install_pwn_mesh_completer! Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.install_pwn_mesh_completer!`: "}]}
|
|
3681
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.mesh_menu_pick Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.mesh_menu_pick`: "}]}
|
|
3682
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.mesh_reset_input! Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.mesh_reset_input!`: "}]}
|
|
3683
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.persist_mesh_env Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.persist_mesh_env`: "}]}
|
|
3684
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_complete Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_complete`: "}]}
|
|
3685
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_dispatch_slash! Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_dispatch_slash!`: "}]}
|
|
3686
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_menu_rows Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Mesh::PWN::Plugins::REPL.pwn_mesh_menu_rows`: "}]}
|
|
3687
3668
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.new Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.new`: "}]}
|
|
3688
3669
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.ensure_tmux_extended_keys Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.ensure_tmux_extended_keys`: "}]}
|
|
3689
3670
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.ensure_vte_shift_enter Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.ensure_vte_shift_enter`: "}]}
|
|
@@ -3692,10 +3673,6 @@
|
|
|
3692
3673
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.reline_config Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.reline_config`: "}]}
|
|
3693
3674
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.tty? Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.tty?`: "}]}
|
|
3694
3675
|
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::PWNMultiLineInput.winsize Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::PWNMultiLineInput.winsize`: "}]}
|
|
3695
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Vault.add_commands Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Vault.add_commands`: "}]}
|
|
3696
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Vault.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Vault.authors`: Author(s)\n\n0day Inc. <support@0dayinc.com>\n"}]}
|
|
3697
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Vault.help Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Vault.help`: "}]}
|
|
3698
|
-
{"messages":[{"role":"user","content":"PWN::Plugins::REPL::Vault.process Usage"},{"role":"assistant","content":"`PWN::Plugins::REPL::Vault.process`: "}]}
|
|
3699
3676
|
{"messages":[{"role":"user","content":"PWN::Plugins::ROP.annotate Usage"},{"role":"assistant","content":"`PWN::Plugins::ROP.annotate`: "}]}
|
|
3700
3677
|
{"messages":[{"role":"user","content":"PWN::Plugins::ROP.authors Usage"},{"role":"assistant","content":"`PWN::Plugins::ROP.authors`: "}]}
|
|
3701
3678
|
{"messages":[{"role":"user","content":"PWN::Plugins::ROP.canonical_register Usage"},{"role":"assistant","content":"`PWN::Plugins::ROP.canonical_register`: "}]}
|
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.778
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- 0day Inc.
|
|
@@ -197,14 +197,14 @@ dependencies:
|
|
|
197
197
|
requirements:
|
|
198
198
|
- - '='
|
|
199
199
|
- !ruby/object:Gem::Version
|
|
200
|
-
version:
|
|
200
|
+
version: 10.0.0
|
|
201
201
|
type: :runtime
|
|
202
202
|
prerelease: false
|
|
203
203
|
version_requirements: !ruby/object:Gem::Requirement
|
|
204
204
|
requirements:
|
|
205
205
|
- - '='
|
|
206
206
|
- !ruby/object:Gem::Version
|
|
207
|
-
version:
|
|
207
|
+
version: 10.0.0
|
|
208
208
|
- !ruby/object:Gem::Dependency
|
|
209
209
|
name: curses
|
|
210
210
|
requirement: !ruby/object:Gem::Requirement
|