pwn 0.5.712 → 0.5.714

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.
Files changed (116) hide show
  1. checksums.yaml +4 -4
  2. data/etc/default_skills/pwn/ai/agent/learning/SKILL.md +3 -0
  3. data/etc/default_skills/pwn/ai/agent/mistakes/SKILL.md +1 -0
  4. data/etc/default_skills/pwn/ai/agent/swarm/SKILL.md +1 -0
  5. data/etc/default_skills/pwn/ai/agent/tool_guard/SKILL.md +16 -0
  6. data/etc/default_skills/pwn/ai/agent/tools/artifacts/SKILL.md +45 -0
  7. data/etc/default_skills/pwn/ai/agent/tools/binary_triage/SKILL.md +45 -0
  8. data/etc/default_skills/pwn/ai/agent/tools/decompile/SKILL.md +45 -0
  9. data/etc/default_skills/pwn/ai/agent/tools/exploitdev/SKILL.md +45 -0
  10. data/etc/default_skills/pwn/ai/agent/tools/finding_record/SKILL.md +45 -0
  11. data/etc/default_skills/pwn/ai/agent/tools/fuzz_campaign/SKILL.md +45 -0
  12. data/etc/default_skills/pwn/ai/agent/tools/intel_lookup/SKILL.md +45 -0
  13. data/etc/default_skills/pwn/ai/agent/tools/job_run/SKILL.md +45 -0
  14. data/etc/default_skills/pwn/ai/agent/tools/pty_session/SKILL.md +45 -0
  15. data/etc/default_skills/pwn/ai/agent/tools/session_export/SKILL.md +45 -0
  16. data/etc/default_skills/pwn/ai/agent/tools/swarm_map/SKILL.md +45 -0
  17. data/etc/default_skills/pwn/memory_index/SKILL.md +1 -0
  18. data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +1 -0
  19. data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +2 -0
  20. data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +1 -0
  21. data/etc/default_skills/pwn/plugins/detect_os/SKILL.md +1 -0
  22. data/etc/default_skills/pwn/plugins/findings/SKILL.md +50 -0
  23. data/etc/default_skills/pwn/plugins/ghidra/SKILL.md +49 -0
  24. data/etc/default_skills/pwn/plugins/jobs/SKILL.md +1 -0
  25. data/etc/default_skills/pwn/plugins/log/SKILL.md +1 -0
  26. data/etc/default_skills/pwn/plugins/nmap_it/SKILL.md +1 -0
  27. data/etc/default_skills/pwn/plugins/preflight_checker/SKILL.md +2 -0
  28. data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +2 -0
  29. data/etc/default_skills/pwn/sessions/SKILL.md +3 -0
  30. data/etc/default_skills/pwn/setup/references/urls.md +1 -0
  31. data/etc/intel/files_exploits.csv +2 -0
  32. data/lib/pwn/ai/agent/dispatch.rb +5 -0
  33. data/lib/pwn/ai/agent/learning.rb +72 -0
  34. data/lib/pwn/ai/agent/loop.rb +62 -13
  35. data/lib/pwn/ai/agent/mistakes.rb +21 -1
  36. data/lib/pwn/ai/agent/prompt_builder.rb +16 -13
  37. data/lib/pwn/ai/agent/registry.rb +21 -1
  38. data/lib/pwn/ai/agent/reward.rb +4 -2
  39. data/lib/pwn/ai/agent/swarm.rb +26 -0
  40. data/lib/pwn/ai/agent/tool_guard.rb +201 -1
  41. data/lib/pwn/ai/agent/tools/artifacts.rb +61 -0
  42. data/lib/pwn/ai/agent/tools/binary_triage.rb +20 -0
  43. data/lib/pwn/ai/agent/tools/decompile.rb +27 -0
  44. data/lib/pwn/ai/agent/tools/exploitdev.rb +45 -0
  45. data/lib/pwn/ai/agent/tools/finding_record.rb +48 -0
  46. data/lib/pwn/ai/agent/tools/fuzz_campaign.rb +44 -0
  47. data/lib/pwn/ai/agent/tools/intel_lookup.rb +24 -0
  48. data/lib/pwn/ai/agent/tools/job_run.rb +56 -0
  49. data/lib/pwn/ai/agent/tools/pty_session.rb +73 -0
  50. data/lib/pwn/ai/agent/tools/session_export.rb +20 -0
  51. data/lib/pwn/ai/agent/tools/shell.rb +5 -0
  52. data/lib/pwn/ai/agent/tools/swarm_map.rb +26 -0
  53. data/lib/pwn/config.rb +10 -1
  54. data/lib/pwn/memory_index.rb +50 -0
  55. data/lib/pwn/plugins/aflplusplus.rb +30 -1
  56. data/lib/pwn/plugins/artifact_registry.rb +43 -0
  57. data/lib/pwn/plugins/binary_parser.rb +31 -0
  58. data/lib/pwn/plugins/detect_os.rb +109 -2
  59. data/lib/pwn/plugins/exploit_db.rb +38 -1
  60. data/lib/pwn/plugins/findings.rb +105 -0
  61. data/lib/pwn/plugins/ghidra.rb +75 -0
  62. data/lib/pwn/plugins/jobs.rb +12 -1
  63. data/lib/pwn/plugins/log.rb +18 -3
  64. data/lib/pwn/plugins/nmap_it.rb +29 -0
  65. data/lib/pwn/plugins/preflight_checker.rb +36 -0
  66. data/lib/pwn/plugins/transparent_browser.rb +29 -0
  67. data/lib/pwn/plugins.rb +2 -0
  68. data/lib/pwn/sessions.rb +92 -1
  69. data/lib/pwn/setup.rb +41 -15
  70. data/lib/pwn/version.rb +1 -1
  71. data/spec/lib/pwn/ai/agent/fixtures/error_class_docker.json +7 -0
  72. data/spec/lib/pwn/ai/agent/learning_spec.rb +15 -0
  73. data/spec/lib/pwn/ai/agent/loop_spec.rb +57 -2
  74. data/spec/lib/pwn/ai/agent/mistakes_spec.rb +21 -0
  75. data/spec/lib/pwn/ai/agent/registry_spec.rb +11 -0
  76. data/spec/lib/pwn/ai/agent/reward_spec.rb +14 -0
  77. data/spec/lib/pwn/ai/agent/swarm_spec.rb +6 -0
  78. data/spec/lib/pwn/ai/agent/tool_guard_spec.rb +48 -0
  79. data/spec/lib/pwn/ai/agent/tools/artifacts_spec.rb +16 -0
  80. data/spec/lib/pwn/ai/agent/tools/binary_triage_spec.rb +14 -0
  81. data/spec/lib/pwn/ai/agent/tools/decompile_spec.rb +14 -0
  82. data/spec/lib/pwn/ai/agent/tools/exploitdev_spec.rb +14 -0
  83. data/spec/lib/pwn/ai/agent/tools/finding_record_spec.rb +15 -0
  84. data/spec/lib/pwn/ai/agent/tools/fuzz_campaign_spec.rb +14 -0
  85. data/spec/lib/pwn/ai/agent/tools/intel_lookup_spec.rb +14 -0
  86. data/spec/lib/pwn/ai/agent/tools/job_run_spec.rb +16 -0
  87. data/spec/lib/pwn/ai/agent/tools/pty_session_spec.rb +17 -0
  88. data/spec/lib/pwn/ai/agent/tools/session_export_spec.rb +14 -0
  89. data/spec/lib/pwn/ai/agent/tools/swarm_map_spec.rb +14 -0
  90. data/spec/lib/pwn/cron_spec.rb +2 -2
  91. data/spec/lib/pwn/memory_index_spec.rb +9 -0
  92. data/spec/lib/pwn/plugins/aflplusplus_spec.rb +9 -0
  93. data/spec/lib/pwn/plugins/artifact_registry_spec.rb +12 -0
  94. data/spec/lib/pwn/plugins/detect_os_spec.rb +40 -0
  95. data/spec/lib/pwn/plugins/exploit_db_spec.rb +12 -0
  96. data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
  97. data/spec/lib/pwn/plugins/findings_spec.rb +30 -0
  98. data/spec/lib/pwn/plugins/frida_spec.rb +5 -0
  99. data/spec/lib/pwn/plugins/fuzz_spec.rb +20 -0
  100. data/spec/lib/pwn/plugins/gdb_spec.rb +15 -0
  101. data/spec/lib/pwn/plugins/ghidra_spec.rb +14 -0
  102. data/spec/lib/pwn/plugins/k8s_spec.rb +5 -0
  103. data/spec/lib/pwn/plugins/log_spec.rb +10 -5
  104. data/spec/lib/pwn/plugins/nmap_it_spec.rb +4 -0
  105. data/spec/lib/pwn/plugins/nuclei_spec.rb +6 -0
  106. data/spec/lib/pwn/plugins/preflight_checker_spec.rb +24 -0
  107. data/spec/lib/pwn/plugins/process_tube_spec.rb +23 -0
  108. data/spec/lib/pwn/plugins/semgrep_spec.rb +4 -0
  109. data/spec/lib/pwn/plugins/sock_spec.rb +7 -0
  110. data/spec/lib/pwn/plugins/transparent_browser_spec.rb +15 -0
  111. data/spec/lib/pwn/sessions_spec.rb +53 -0
  112. data/spec/lib/pwn/setup_spec.rb +32 -0
  113. data/third_party/pwn_rdoc.jsonl +64 -2
  114. metadata +42 -3
  115. data/spec/lib/pwn/req_queue_spec.rb +0 -168
  116. data/tmp_pwn_critic_skills_flaw.txt +0 -9
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.712
4
+ version: 0.5.714
5
5
  platform: ruby
6
6
  authors:
7
7
  - 0day Inc.
@@ -4935,23 +4935,34 @@ files:
4935
4935
  - etc/default_skills/pwn/ai/agent/swarm/SKILL.md
4936
4936
  - etc/default_skills/pwn/ai/agent/task_summarizer/SKILL.md
4937
4937
  - etc/default_skills/pwn/ai/agent/tool_guard/SKILL.md
4938
+ - etc/default_skills/pwn/ai/agent/tools/artifacts/SKILL.md
4939
+ - etc/default_skills/pwn/ai/agent/tools/binary_triage/SKILL.md
4938
4940
  - etc/default_skills/pwn/ai/agent/tools/cron/SKILL.md
4939
4941
  - etc/default_skills/pwn/ai/agent/tools/curriculum/SKILL.md
4942
+ - etc/default_skills/pwn/ai/agent/tools/decompile/SKILL.md
4943
+ - etc/default_skills/pwn/ai/agent/tools/exploitdev/SKILL.md
4940
4944
  - etc/default_skills/pwn/ai/agent/tools/extrospection/SKILL.md
4941
4945
  - etc/default_skills/pwn/ai/agent/tools/extrospection/references/urls.md
4946
+ - etc/default_skills/pwn/ai/agent/tools/finding_record/SKILL.md
4947
+ - etc/default_skills/pwn/ai/agent/tools/fuzz_campaign/SKILL.md
4948
+ - etc/default_skills/pwn/ai/agent/tools/intel_lookup/SKILL.md
4949
+ - etc/default_skills/pwn/ai/agent/tools/job_run/SKILL.md
4942
4950
  - etc/default_skills/pwn/ai/agent/tools/learning/SKILL.md
4943
4951
  - etc/default_skills/pwn/ai/agent/tools/memory/SKILL.md
4944
4952
  - etc/default_skills/pwn/ai/agent/tools/metrics/SKILL.md
4945
4953
  - etc/default_skills/pwn/ai/agent/tools/mistakes/SKILL.md
4946
4954
  - etc/default_skills/pwn/ai/agent/tools/policy/SKILL.md
4955
+ - etc/default_skills/pwn/ai/agent/tools/pty_session/SKILL.md
4947
4956
  - etc/default_skills/pwn/ai/agent/tools/reward/SKILL.md
4948
4957
  - etc/default_skills/pwn/ai/agent/tools/ruby_eval/SKILL.md
4949
4958
  - etc/default_skills/pwn/ai/agent/tools/ruby_eval/references/urls.md
4959
+ - etc/default_skills/pwn/ai/agent/tools/session_export/SKILL.md
4950
4960
  - etc/default_skills/pwn/ai/agent/tools/sessions/SKILL.md
4951
4961
  - etc/default_skills/pwn/ai/agent/tools/shell/SKILL.md
4952
4962
  - etc/default_skills/pwn/ai/agent/tools/skills/SKILL.md
4953
4963
  - etc/default_skills/pwn/ai/agent/tools/skills/references/urls.md
4954
4964
  - etc/default_skills/pwn/ai/agent/tools/swarm/SKILL.md
4965
+ - etc/default_skills/pwn/ai/agent/tools/swarm_map/SKILL.md
4955
4966
  - etc/default_skills/pwn/ai/agent/transparent_browser/SKILL.md
4956
4967
  - etc/default_skills/pwn/ai/agent/turn_finalizer/SKILL.md
4957
4968
  - etc/default_skills/pwn/ai/agent/vuln_gen/SKILL.md
@@ -5198,9 +5209,11 @@ files:
5198
5209
  - etc/default_skills/pwn/plugins/exploit_db/SKILL.md
5199
5210
  - etc/default_skills/pwn/plugins/exploit_dev/SKILL.md
5200
5211
  - etc/default_skills/pwn/plugins/file_fu/SKILL.md
5212
+ - etc/default_skills/pwn/plugins/findings/SKILL.md
5201
5213
  - etc/default_skills/pwn/plugins/frida/SKILL.md
5202
5214
  - etc/default_skills/pwn/plugins/fuzz/SKILL.md
5203
5215
  - etc/default_skills/pwn/plugins/gdb/SKILL.md
5216
+ - etc/default_skills/pwn/plugins/ghidra/SKILL.md
5204
5217
  - etc/default_skills/pwn/plugins/git/SKILL.md
5205
5218
  - etc/default_skills/pwn/plugins/github/SKILL.md
5206
5219
  - etc/default_skills/pwn/plugins/github/references/urls.md
@@ -5532,6 +5545,7 @@ files:
5532
5545
  - etc/default_skills/social-engineering/SKILL.md
5533
5546
  - etc/default_skills/vulnerability-research-fundamentals/SKILL.md
5534
5547
  - etc/default_skills/web-application-penetration-testing/SKILL.md
5548
+ - etc/intel/files_exploits.csv
5535
5549
  - etc/osint/social_sites.json
5536
5550
  - etc/systemd/msfrpcd.service
5537
5551
  - etc/systemd/openvas.service
@@ -5869,20 +5883,31 @@ files:
5869
5883
  - lib/pwn/ai/agent/swarm.rb
5870
5884
  - lib/pwn/ai/agent/task_summarizer.rb
5871
5885
  - lib/pwn/ai/agent/tool_guard.rb
5886
+ - lib/pwn/ai/agent/tools/artifacts.rb
5887
+ - lib/pwn/ai/agent/tools/binary_triage.rb
5872
5888
  - lib/pwn/ai/agent/tools/cron.rb
5873
5889
  - lib/pwn/ai/agent/tools/curriculum.rb
5890
+ - lib/pwn/ai/agent/tools/decompile.rb
5891
+ - lib/pwn/ai/agent/tools/exploitdev.rb
5874
5892
  - lib/pwn/ai/agent/tools/extrospection.rb
5893
+ - lib/pwn/ai/agent/tools/finding_record.rb
5894
+ - lib/pwn/ai/agent/tools/fuzz_campaign.rb
5895
+ - lib/pwn/ai/agent/tools/intel_lookup.rb
5896
+ - lib/pwn/ai/agent/tools/job_run.rb
5875
5897
  - lib/pwn/ai/agent/tools/learning.rb
5876
5898
  - lib/pwn/ai/agent/tools/memory.rb
5877
5899
  - lib/pwn/ai/agent/tools/metrics.rb
5878
5900
  - lib/pwn/ai/agent/tools/mistakes.rb
5879
5901
  - lib/pwn/ai/agent/tools/policy.rb
5902
+ - lib/pwn/ai/agent/tools/pty_session.rb
5880
5903
  - lib/pwn/ai/agent/tools/reward.rb
5881
5904
  - lib/pwn/ai/agent/tools/ruby_eval.rb
5905
+ - lib/pwn/ai/agent/tools/session_export.rb
5882
5906
  - lib/pwn/ai/agent/tools/sessions.rb
5883
5907
  - lib/pwn/ai/agent/tools/shell.rb
5884
5908
  - lib/pwn/ai/agent/tools/skills.rb
5885
5909
  - lib/pwn/ai/agent/tools/swarm.rb
5910
+ - lib/pwn/ai/agent/tools/swarm_map.rb
5886
5911
  - lib/pwn/ai/agent/transparent_browser.rb
5887
5912
  - lib/pwn/ai/agent/turn_finalizer.rb
5888
5913
  - lib/pwn/ai/agent/vuln_gen.rb
@@ -6067,9 +6092,11 @@ files:
6067
6092
  - lib/pwn/plugins/exploit_db.rb
6068
6093
  - lib/pwn/plugins/exploit_dev.rb
6069
6094
  - lib/pwn/plugins/file_fu.rb
6095
+ - lib/pwn/plugins/findings.rb
6070
6096
  - lib/pwn/plugins/frida.rb
6071
6097
  - lib/pwn/plugins/fuzz.rb
6072
6098
  - lib/pwn/plugins/gdb.rb
6099
+ - lib/pwn/plugins/ghidra.rb
6073
6100
  - lib/pwn/plugins/git.rb
6074
6101
  - lib/pwn/plugins/github.rb
6075
6102
  - lib/pwn/plugins/google_workspace.rb
@@ -6357,6 +6384,7 @@ files:
6357
6384
  - spec/lib/pwn/ai/agent/extrospection/osint/bridges_spec.rb
6358
6385
  - spec/lib/pwn/ai/agent/extrospection/osint/social_spec.rb
6359
6386
  - spec/lib/pwn/ai/agent/extrospection_spec.rb
6387
+ - spec/lib/pwn/ai/agent/fixtures/error_class_docker.json
6360
6388
  - spec/lib/pwn/ai/agent/gqrx_spec.rb
6361
6389
  - spec/lib/pwn/ai/agent/hacker_one_spec.rb
6362
6390
  - spec/lib/pwn/ai/agent/injection_guard_spec.rb
@@ -6379,19 +6407,30 @@ files:
6379
6407
  - spec/lib/pwn/ai/agent/swarm_spec.rb
6380
6408
  - spec/lib/pwn/ai/agent/task_summarizer_spec.rb
6381
6409
  - spec/lib/pwn/ai/agent/tool_guard_spec.rb
6410
+ - spec/lib/pwn/ai/agent/tools/artifacts_spec.rb
6411
+ - spec/lib/pwn/ai/agent/tools/binary_triage_spec.rb
6382
6412
  - spec/lib/pwn/ai/agent/tools/cron_spec.rb
6383
6413
  - spec/lib/pwn/ai/agent/tools/curriculum_spec.rb
6414
+ - spec/lib/pwn/ai/agent/tools/decompile_spec.rb
6415
+ - spec/lib/pwn/ai/agent/tools/exploitdev_spec.rb
6384
6416
  - spec/lib/pwn/ai/agent/tools/extrospection_spec.rb
6417
+ - spec/lib/pwn/ai/agent/tools/finding_record_spec.rb
6418
+ - spec/lib/pwn/ai/agent/tools/fuzz_campaign_spec.rb
6419
+ - spec/lib/pwn/ai/agent/tools/intel_lookup_spec.rb
6420
+ - spec/lib/pwn/ai/agent/tools/job_run_spec.rb
6385
6421
  - spec/lib/pwn/ai/agent/tools/learning_spec.rb
6386
6422
  - spec/lib/pwn/ai/agent/tools/memory_spec.rb
6387
6423
  - spec/lib/pwn/ai/agent/tools/metrics_spec.rb
6388
6424
  - spec/lib/pwn/ai/agent/tools/mistakes_spec.rb
6389
6425
  - spec/lib/pwn/ai/agent/tools/policy_spec.rb
6426
+ - spec/lib/pwn/ai/agent/tools/pty_session_spec.rb
6390
6427
  - spec/lib/pwn/ai/agent/tools/reward_spec.rb
6391
6428
  - spec/lib/pwn/ai/agent/tools/ruby_eval_spec.rb
6429
+ - spec/lib/pwn/ai/agent/tools/session_export_spec.rb
6392
6430
  - spec/lib/pwn/ai/agent/tools/sessions_spec.rb
6393
6431
  - spec/lib/pwn/ai/agent/tools/shell_spec.rb
6394
6432
  - spec/lib/pwn/ai/agent/tools/skills_spec.rb
6433
+ - spec/lib/pwn/ai/agent/tools/swarm_map_spec.rb
6395
6434
  - spec/lib/pwn/ai/agent/tools/swarm_spec.rb
6396
6435
  - spec/lib/pwn/ai/agent/transparent_browser_spec.rb
6397
6436
  - spec/lib/pwn/ai/agent/turn_finalizer_spec.rb
@@ -6578,9 +6617,11 @@ files:
6578
6617
  - spec/lib/pwn/plugins/exploit_db_spec.rb
6579
6618
  - spec/lib/pwn/plugins/exploit_dev_spec.rb
6580
6619
  - spec/lib/pwn/plugins/file_fu_spec.rb
6620
+ - spec/lib/pwn/plugins/findings_spec.rb
6581
6621
  - spec/lib/pwn/plugins/frida_spec.rb
6582
6622
  - spec/lib/pwn/plugins/fuzz_spec.rb
6583
6623
  - spec/lib/pwn/plugins/gdb_spec.rb
6624
+ - spec/lib/pwn/plugins/ghidra_spec.rb
6584
6625
  - spec/lib/pwn/plugins/git_spec.rb
6585
6626
  - spec/lib/pwn/plugins/github_spec.rb
6586
6627
  - spec/lib/pwn/plugins/google_workspace_spec.rb
@@ -6656,7 +6697,6 @@ files:
6656
6697
  - spec/lib/pwn/reports/uri_buster_spec.rb
6657
6698
  - spec/lib/pwn/reports/xml_spec.rb
6658
6699
  - spec/lib/pwn/reports_spec.rb
6659
- - spec/lib/pwn/req_queue_spec.rb
6660
6700
  - spec/lib/pwn/sast/amqp_connect_as_guest_spec.rb
6661
6701
  - spec/lib/pwn/sast/apache_file_system_util_api_spec.rb
6662
6702
  - spec/lib/pwn/sast/aws_spec.rb
@@ -6771,7 +6811,6 @@ files:
6771
6811
  - third_party/pwn_rdoc.jsonl
6772
6812
  - third_party/r2-pwn-layout
6773
6813
  - third_party/terminator/pwn_shift_enter.py
6774
- - tmp_pwn_critic_skills_flaw.txt
6775
6814
  - upgrade_Gemfile_gems.sh
6776
6815
  - upgrade_pwn.sh
6777
6816
  - upgrade_ruby.sh
@@ -1,168 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
- require 'socket'
5
- require 'tmpdir'
6
-
7
- describe 'pwn_debug REQ queue remaining surface' do
8
- describe PWN::Plugins::ExploitDev do
9
- it 'catalogs per-arch execve_bin_sh shellcode as opcodes' do
10
- sc = described_class.shellcode(arch: 'x86_64', kind: 'execve_bin_sh')
11
- expect(sc.to_s).not_to be_empty
12
- expect(sc.to_s).not_to eq("\x90")
13
- end
14
-
15
- it 'one_gadget returns a structured miss when the binary is absent' do
16
- allow(PWN::Plugins::PreflightChecker).to receive(:bin?).and_call_original
17
- allow(PWN::Plugins::PreflightChecker).to receive(:bin?).with(name: 'one_gadget').and_return(false)
18
- row = described_class.one_gadget(path: '/lib/x86_64-linux-gnu/libc.so.6')
19
- expect(row).to be_a(Hash)
20
- expect(row[:error].to_s).to match(/one_gadget/i)
21
- end
22
-
23
- it 'libc_offsets extracts named symbols from an ELF' do
24
- path = %w[/bin/ls /usr/bin/ls /bin/true /usr/bin/true].find { |p| File.file?(p) }
25
- skip 'no ELF on host' unless path
26
-
27
- row = described_class.libc_offsets(path: path)
28
- expect(row).to include(:path)
29
- expect(row[:symbols]).to be_a(Hash)
30
- end
31
- end
32
-
33
- describe PWN::Plugins::GDB do
34
- it 'core raises without a core path' do
35
- expect { described_class.core(core: '') }.to raise_error(/core is required/)
36
- end
37
-
38
- it 'breakpoints includes break commands in the gdb batch' do
39
- allow(Open3).to receive(:capture3).and_return(['ok', '', instance_double(Process::Status, exitstatus: 0)])
40
- described_class.breakpoints(binary: '/bin/true', breakpoints: ['main', '*0x401000'])
41
- expect(Open3).to have_received(:capture3) do |*argv|
42
- joined = argv.flatten.join(' ')
43
- expect(joined).to include('break main')
44
- expect(joined).to include('break *0x401000')
45
- end
46
- end
47
- end
48
-
49
- describe PWN::Plugins::ProcessTube do
50
- it 'connect uses the same write_line/recvuntil API over TCP' do
51
- server = TCPServer.new('127.0.0.1', 0)
52
- port = server.addr[1]
53
- thr = Thread.new do
54
- sock = server.accept
55
- sock.write("banner\n")
56
- sock.flush
57
- line = sock.gets
58
- sock.write("ack #{line}")
59
- sock.close
60
- end
61
- tube = described_class.connect(host: '127.0.0.1', port: port)
62
- described_class.recvuntil(id: tube[:id], until: "\n", timeout: 2)
63
- described_class.write_line(id: tube[:id], line: 'hi')
64
- out = described_class.recvuntil(id: tube[:id], until: 'hi', timeout: 2)
65
- expect(out).to include('ack')
66
- ensure
67
- described_class.close(id: tube[:id]) if tube
68
- thr&.kill
69
- server&.close
70
- end
71
- end
72
-
73
- describe PWN::Setup do
74
- it 're profile includes pwndbg, ropper, and rizin' do
75
- bins = PWN::Setup::PROFILES[:re][:bins]
76
- expect(bins).to include('pwndbg', 'ropper', 'rizin')
77
- end
78
- end
79
-
80
- describe PWN::Plugins::PreflightChecker do
81
- it 'check includes missing_services' do
82
- row = described_class.check.find { |r| r[:plugin].to_s.include?('Packet') }
83
- expect(row).to include(:missing_services)
84
- end
85
-
86
- it 'service? is false for a missing unix socket' do
87
- expect(described_class.service?(name: 'no-such-pwn-svc', path: '/tmp/pwn-no-such.sock')).to be false
88
- end
89
- end
90
-
91
- describe PWN::Plugins::Sock do
92
- it 'protocol :raw demands CAP_NET_RAW' do
93
- allow(PWN::Plugins::PreflightChecker).to receive(:cap_net_raw?).and_return(false)
94
- expect do
95
- described_class.connect(target: '127.0.0.1', port: 9, protocol: :raw)
96
- end.to raise_error(PWN::Plugins::PreflightChecker::MissingCapability)
97
- end
98
- end
99
-
100
- describe PWN::Plugins::Nuclei do
101
- it 'to_findings maps JSONL rows into report-shaped hashes' do
102
- rows = [{ 'info' => { 'name' => 'xss', 'severity' => 'high' }, 'matched-at' => 'https://x/' }]
103
- out = described_class.to_findings(rows: rows)
104
- expect(out.first).to include(:title, :severity, :url)
105
- end
106
- end
107
-
108
- describe PWN::Plugins::Fuzz do
109
- it 'http mutates a request with dictionary payloads' do
110
- reqs = described_class.http(
111
- request: "GET /FUZZ HTTP/1.1\r\nHost: x\r\n\r\n",
112
- dictionary: %w[admin ../]
113
- )
114
- expect(reqs.length).to eq(2)
115
- expect(reqs.first).to include('admin')
116
- end
117
-
118
- it 'file_format mutates a seed with dictionary blobs' do
119
- Dir.mktmpdir do |dir|
120
- seed = File.join(dir, 'seed.bin')
121
- File.binwrite(seed, 'AAAA')
122
- out = described_class.file_format(path: seed, dictionary: ["\xff\xff"])
123
- expect(out).to be_an(Array)
124
- expect(out.first).to be_a(String)
125
- end
126
- end
127
- end
128
-
129
- describe PWN::Plugins::ArtifactRegistry do
130
- it 'lists artifacts for a session id' do
131
- Dir.mktmpdir do |dir|
132
- stub_const('PWN::Plugins::ArtifactRegistry::ROOT', dir)
133
- src = File.join(dir, 'loot.txt')
134
- File.write(src, 'x')
135
- described_class.register(session_id: 'sess1', path: src, kind: 'loot')
136
- rows = described_class.list(session_id: 'sess1')
137
- expect(rows.first[:kind]).to eq('loot')
138
- end
139
- end
140
- end
141
-
142
- describe PWN::Plugins::Frida do
143
- it 'ssl_pinning_script returns injectable javascript' do
144
- js = described_class.ssl_pinning_script
145
- expect(js).to match(/SSL_CTX|TrustManager|pinning/i)
146
- end
147
- end
148
-
149
- describe PWN::Plugins::Semgrep do
150
- it 'responds to scan' do
151
- expect(described_class).to respond_to(:scan)
152
- end
153
- end
154
-
155
- describe PWN::Plugins::ExploitDB do
156
- it 'responds to search and cve_for_cpe' do
157
- expect(described_class).to respond_to(:search)
158
- expect(described_class).to respond_to(:cve_for_cpe)
159
- end
160
- end
161
-
162
- describe PWN::Plugins::K8s do
163
- it 'responds to trivy and kube_hunter' do
164
- expect(described_class).to respond_to(:trivy)
165
- expect(described_class).to respond_to(:kube_hunter)
166
- end
167
- end
168
- end
@@ -1,9 +0,0 @@
1
- pwn_critic swarm 20260819_214041_e6ff4d
2
- REQUEST: what skills are available?
3
- LIVE INDEX: /home/ninp0/.pwn/skills
4
- LIVE COUNT: 103
5
- CANDIDATE CLAIM: 103 skills, complete A-Z list
6
- CANDIDATE LISTED: 24 names, last item truncated at "document-to-action-items -- Extract cited obligations, deadli"
7
- MISSING COUNT: 79
8
- VERDICT: FLAW
9
- ONE LINE: Claims 103 skills from the live SKILLS index but the list stops at item 24 mid-word; 79 skills are omitted.