pwn 0.5.725 → 0.5.728
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/bin/pwn-capd +11 -2
- data/documentation/Capability-Broker-Sandbox.md +49 -10
- data/documentation/LoRaPHY-LICENSE.txt +25 -0
- data/documentation/SDR-Decoder-Coverage.md +550 -0
- data/etc/default_skills/pwn/ffi/dsp_native/SKILL.md +51 -0
- data/etc/default_skills/pwn/ffi/hack_rf/SKILL.md +1 -1
- data/etc/default_skills/pwn/plugins/capability_broker/daemon/SKILL.md +50 -0
- data/etc/default_skills/pwn/plugins/sandbox/driver/SKILL.md +53 -0
- data/etc/default_skills/pwn/sdr/decoder/adsb/SKILL.md +4 -1
- data/etc/default_skills/pwn/sdr/decoder/apt/SKILL.md +4 -3
- data/etc/default_skills/pwn/sdr/decoder/base/SKILL.md +1 -1
- data/etc/default_skills/pwn/sdr/decoder/bluetooth/SKILL.md +5 -3
- data/etc/default_skills/pwn/sdr/decoder/dect/SKILL.md +9 -3
- data/etc/default_skills/pwn/sdr/decoder/dect/references/urls.md +3 -0
- data/etc/default_skills/pwn/sdr/decoder/dsp/SKILL.md +2 -1
- data/etc/default_skills/pwn/sdr/decoder/flex/SKILL.md +2 -1
- data/etc/default_skills/pwn/sdr/decoder/gps/SKILL.md +7 -3
- data/etc/default_skills/pwn/sdr/decoder/gsm/SKILL.md +3 -1
- data/etc/default_skills/pwn/sdr/decoder/iridium/SKILL.md +5 -3
- data/etc/default_skills/pwn/sdr/decoder/lora/SKILL.md +2 -1
- data/etc/default_skills/pwn/sdr/decoder/lte/SKILL.md +2 -1
- data/etc/default_skills/pwn/sdr/decoder/morse/SKILL.md +3 -2
- data/etc/default_skills/pwn/sdr/decoder/p25/SKILL.md +9 -3
- data/etc/default_skills/pwn/sdr/decoder/p25/references/urls.md +3 -0
- data/etc/default_skills/pwn/sdr/decoder/pager/SKILL.md +3 -2
- data/etc/default_skills/pwn/sdr/decoder/pocsag/SKILL.md +6 -2
- data/etc/default_skills/pwn/sdr/decoder/rds/SKILL.md +2 -1
- data/etc/default_skills/pwn/sdr/decoder/rfid/SKILL.md +9 -3
- data/etc/default_skills/pwn/sdr/decoder/rfid/references/urls.md +4 -0
- data/etc/default_skills/pwn/sdr/decoder/rtl433/SKILL.md +9 -3
- data/etc/default_skills/pwn/sdr/decoder/rtl433/references/urls.md +4 -0
- data/etc/default_skills/pwn/sdr/decoder/rtty/SKILL.md +3 -2
- data/etc/default_skills/pwn/sdr/decoder/tempest/SKILL.md +51 -0
- data/etc/default_skills/pwn/sdr/decoder/wifi/SKILL.md +10 -3
- data/etc/default_skills/pwn/sdr/decoder/wifi/references/urls.md +3 -0
- data/etc/default_skills/pwn/sdr/decoder/zigbee/SKILL.md +13 -3
- data/etc/default_skills/pwn/sdr/decoder/zigbee/references/urls.md +3 -0
- data/ext/pwn_dsp/.gitignore +4 -0
- data/ext/pwn_dsp/README.md +81 -0
- data/ext/pwn_dsp/benchmark-results.json +321 -0
- data/ext/pwn_dsp/benchmark.rb +38 -0
- data/ext/pwn_dsp/build.rb +19 -0
- data/ext/pwn_dsp/pwn_dsp.c +72 -0
- data/ext/pwn_gsm/.gitignore +4 -0
- data/ext/pwn_gsm/README.md +61 -0
- data/ext/pwn_gsm/benchmark-results.json +24 -0
- data/ext/pwn_gsm/benchmark.rb +44 -0
- data/ext/pwn_gsm/build.rb +7 -0
- data/ext/pwn_gsm/fixtures/generate.py +41 -0
- data/ext/pwn_gsm/pwn_gsm.c +40 -0
- data/ext/pwn_lte/.gitignore +3 -0
- data/ext/pwn_lte/README.md +108 -0
- data/ext/pwn_lte/benchmark-results.json +19 -0
- data/ext/pwn_lte/benchmark.rb +52 -0
- data/ext/pwn_lte/build.rb +13 -0
- data/ext/pwn_lte/pwn_lte.c +101 -0
- data/ext/pwn_rds/.gitignore +2 -0
- data/ext/pwn_rds/README.md +17 -0
- data/ext/pwn_rds/build.rb +15 -0
- data/ext/pwn_rds/stream_verify.rb +53 -0
- data/ext/pwn_rds/verify.rb +24 -0
- data/lib/pwn/ai/agent/loop.rb +13 -11
- data/lib/pwn/ai/agent/swarm.rb +11 -2
- data/lib/pwn/ffi/adalm_pluto.rb +20 -14
- data/lib/pwn/ffi/dsp_native.rb +121 -0
- data/lib/pwn/ffi/hack_rf.rb +43 -19
- data/lib/pwn/ffi/rtl_sdr.rb +7 -1
- data/lib/pwn/ffi/soapy_sdr.rb +23 -7
- data/lib/pwn/ffi.rb +1 -0
- data/lib/pwn/plugins/capability_broker/daemon.rb +284 -0
- data/lib/pwn/plugins/capability_broker.rb +6 -1
- data/lib/pwn/plugins/sandbox/Dockerfile +2 -2
- data/lib/pwn/plugins/sandbox/driver.rb +251 -0
- data/lib/pwn/plugins/sandbox.rb +2 -5
- data/lib/pwn/sdr/decoder/adsb.rb +240 -21
- data/lib/pwn/sdr/decoder/apt.rb +119 -63
- data/lib/pwn/sdr/decoder/base.rb +362 -305
- data/lib/pwn/sdr/decoder/bluetooth.rb +282 -46
- data/lib/pwn/sdr/decoder/dect.rb +155 -28
- data/lib/pwn/sdr/decoder/dsp.rb +126 -23
- data/lib/pwn/sdr/decoder/flex.rb +118 -16
- data/lib/pwn/sdr/decoder/gps.rb +320 -16
- data/lib/pwn/sdr/decoder/gsm.rb +230 -55
- data/lib/pwn/sdr/decoder/iridium.rb +221 -26
- data/lib/pwn/sdr/decoder/lora.rb +349 -6
- data/lib/pwn/sdr/decoder/lte.rb +201 -55
- data/lib/pwn/sdr/decoder/morse.rb +37 -3
- data/lib/pwn/sdr/decoder/p25.rb +282 -12
- data/lib/pwn/sdr/decoder/pager.rb +34 -3
- data/lib/pwn/sdr/decoder/pocsag.rb +162 -29
- data/lib/pwn/sdr/decoder/rds.rb +167 -77
- data/lib/pwn/sdr/decoder/rfid.rb +226 -25
- data/lib/pwn/sdr/decoder/rtl433.rb +245 -25
- data/lib/pwn/sdr/decoder/rtty.rb +39 -10
- data/lib/pwn/sdr/decoder/tempest.rb +318 -0
- data/lib/pwn/sdr/decoder/wifi.rb +333 -25
- data/lib/pwn/sdr/decoder/zigbee.rb +326 -54
- data/lib/pwn/sdr/decoder.rb +2 -0
- data/lib/pwn/sdr/gqrx.rb +13 -3
- data/lib/pwn/version.rb +1 -1
- data/spec/conventions_spec.rb +1 -1
- data/spec/fixtures/sdr/gps/README.md +77 -0
- data/spec/fixtures/sdr/gps/cttc-lnav.json +33 -0
- data/spec/fixtures/sdr/gsm/README.md +40 -0
- data/spec/fixtures/sdr/gsm/bad-crc.cs16 +0 -0
- data/spec/fixtures/sdr/gsm/sch.cs16 +0 -0
- data/spec/fixtures/sdr/gsm/vectors.json +16 -0
- data/spec/fixtures/sdr/iridium/README.md +115 -0
- data/spec/fixtures/sdr/iridium/TOOLKIT-LICENSE.txt +28 -0
- data/spec/fixtures/sdr/iridium/ira-row-19.cf32 +0 -0
- data/spec/fixtures/sdr/iridium/ira-row-19.cs16 +0 -0
- data/spec/fixtures/sdr/iridium/ira-row-43.cf32 +0 -0
- data/spec/fixtures/sdr/iridium/ira-row-43.cs16 +3 -0
- data/spec/fixtures/sdr/iridium/ira-row-5.cf32 +0 -0
- data/spec/fixtures/sdr/iridium/ira-row-5.cs16 +0 -0
- data/spec/fixtures/sdr/iridium/source-rows.tsv +3 -0
- data/spec/fixtures/sdr/iridium/vectors.json +50 -0
- data/spec/fixtures/sdr/lora/README.md +125 -0
- data/spec/fixtures/sdr/lora/benchmark-results.json +142 -0
- data/spec/fixtures/sdr/lora/benchmark.txt +20 -0
- data/spec/fixtures/sdr/lora/generate.txt +31 -0
- data/spec/fixtures/sdr/lora/generate_modes.txt +47 -0
- data/spec/fixtures/sdr/lora/mode-0.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-1.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-10.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-11.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-12.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-13.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-2.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-3.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-4.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-5.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-6.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-7.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-8.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/mode-9.cf32.gz +0 -0
- data/spec/fixtures/sdr/lora/modes.json +637 -0
- data/spec/fixtures/sdr/lora/sf7-cr1.cf32 +0 -0
- data/spec/fixtures/sdr/lora/sf7-cr4.cf32 +0 -0
- data/spec/fixtures/sdr/lora/sf8-cr2.cf32 +0 -0
- data/spec/fixtures/sdr/lora/sf8-cr3.cf32 +0 -0
- data/spec/fixtures/sdr/lora/vectors.json +189 -0
- data/spec/fixtures/sdr/lte/SRSRAN-LICENSE +661 -0
- data/spec/fixtures/sdr/lte/signal.1.92M.dat +0 -0
- data/spec/fixtures/sdr/p25/README.md +24 -0
- data/spec/fixtures/sdr/p25/tsdu3.bin +1 -0
- data/spec/fixtures/sdr/p25/updu.bin +2 -0
- data/spec/fixtures/sdr/rds/LICENSE +18 -0
- data/spec/fixtures/sdr/rds/README.md +10 -0
- data/spec/fixtures/sdr/rds/mpx-testfile-yksi.flac +0 -0
- data/spec/fixtures/sdr/rfid/LICENSE.txt +674 -0
- data/spec/fixtures/sdr/rfid/README.md +30 -0
- data/spec/fixtures/sdr/rfid/fdxb_animal.pm3 +10000 -0
- data/spec/fixtures/sdr/rfid/fdxb_extended.pm3 +10000 -0
- data/spec/fixtures/sdr/rtl433/README.md +81 -0
- data/spec/fixtures/sdr/rtl433/acurite_th_609_001.cu8 +118 -0
- data/spec/fixtures/sdr/rtl433/acurite_th_609_001.json +6 -0
- data/spec/fixtures/sdr/rtl433/toyota.cu8 +9 -0
- data/spec/fixtures/sdr/rtl433/toyota.json +1 -0
- data/spec/fixtures/sdr/rtl433/wh31.cu8 +66 -0
- data/spec/fixtures/sdr/rtl433/wh31.json +2 -0
- data/spec/integration/native_ruby_helpers_spec.rb +23 -0
- data/spec/lib/pwn/ai/agent/loop_spec.rb +42 -0
- data/spec/lib/pwn/ai/agent/swarm_spec.rb +15 -0
- data/spec/lib/pwn/ffi/adalm_pluto_spec.rb +47 -0
- data/spec/lib/pwn/ffi/dsp_native_spec.rb +53 -0
- data/spec/lib/pwn/ffi/hack_rf_spec.rb +36 -0
- data/spec/lib/pwn/ffi/rtl_sdr_spec.rb +16 -0
- data/spec/lib/pwn/ffi/soapy_sdr_spec.rb +24 -0
- data/spec/lib/pwn/plugins/capability_broker/daemon_spec.rb +241 -0
- data/spec/lib/pwn/plugins/capability_broker_spec.rb +7 -0
- data/spec/lib/pwn/plugins/sandbox/driver_spec.rb +37 -0
- data/spec/lib/pwn/plugins/sandbox_spec.rb +107 -0
- data/spec/lib/pwn/sdr/decoder/adsb_spec.rb +262 -4
- data/spec/lib/pwn/sdr/decoder/apt_spec.rb +124 -0
- data/spec/lib/pwn/sdr/decoder/base_iq_spec.rb +3 -11
- data/spec/lib/pwn/sdr/decoder/base_spec.rb +457 -6
- data/spec/lib/pwn/sdr/decoder/bluetooth_spec.rb +213 -0
- data/spec/lib/pwn/sdr/decoder/dect_spec.rb +138 -0
- data/spec/lib/pwn/sdr/decoder/dsp_native_spec.rb +105 -0
- data/spec/lib/pwn/sdr/decoder/flex_spec.rb +206 -0
- data/spec/lib/pwn/sdr/decoder/gps_spec.rb +154 -0
- data/spec/lib/pwn/sdr/decoder/gsm_spec.rb +161 -0
- data/spec/lib/pwn/sdr/decoder/iridium_spec.rb +131 -0
- data/spec/lib/pwn/sdr/decoder/lora_spec.rb +291 -0
- data/spec/lib/pwn/sdr/decoder/lte_spec.rb +199 -0
- data/spec/lib/pwn/sdr/decoder/morse_spec.rb +41 -0
- data/spec/lib/pwn/sdr/decoder/p25_spec.rb +170 -0
- data/spec/lib/pwn/sdr/decoder/pager_spec.rb +26 -0
- data/spec/lib/pwn/sdr/decoder/pocsag_spec.rb +87 -0
- data/spec/lib/pwn/sdr/decoder/rds_spec.rb +92 -0
- data/spec/lib/pwn/sdr/decoder/rfid_spec.rb +94 -0
- data/spec/lib/pwn/sdr/decoder/rtl433_spec.rb +79 -0
- data/spec/lib/pwn/sdr/decoder/rtty_spec.rb +54 -0
- data/spec/lib/pwn/sdr/decoder/tempest_spec.rb +192 -0
- data/spec/lib/pwn/sdr/decoder/wifi_spec.rb +208 -0
- data/spec/lib/pwn/sdr/decoder/zigbee_spec.rb +169 -0
- data/spec/lib/pwn/sdr/gqrx_spec.rb +126 -0
- data/spec/lib/pwn/setup_spec.rb +17 -0
- data/third_party/pwn_rdoc.jsonl +174 -38
- metadata +109 -7
- data/lib/pwn/plugins/capability_broker/daemon.py +0 -145
- data/lib/pwn/plugins/sandbox/driver.py +0 -187
- data/spec/lib/pwn/plugins/capd_test.py +0 -27
- data/spec/lib/pwn/plugins/sandbox_test.py +0 -47
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: '0018be9794020a4b996e0d67a076e2741ca124d475f1439a047a77ecc0667d9d'
|
|
4
|
+
data.tar.gz: 46eae2746ab67af7ace35e7dc4caa6e09897a187ec7295a6fe5b103a33262722
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dd8e061914bb0941234e210a8ea346d4f11dbd0babcd5137e93fe529b094826459b469f6cfb5d2e8cabdc306bbb8471df5703275035a9e8d27fc36352b50ec84
|
|
7
|
+
data.tar.gz: 4f361334ec04c20998333623be5c2d5b97ab27189dc52f1d4fda470ff40e743c38f58b1ae37b85244557a1f7eaf93954abd3baafdcb96c8bc8d57eb4fc71ff98
|
data/Gemfile
CHANGED
|
@@ -88,7 +88,7 @@ gem 'ruby-audio', '1.6.1'
|
|
|
88
88
|
gem 'ruby-nmap', '1.0.3'
|
|
89
89
|
gem 'ruby-saml', '1.18.1'
|
|
90
90
|
gem 'rvm', '1.11.3.9'
|
|
91
|
-
gem 'savon', '2.17.
|
|
91
|
+
gem 'savon', '2.17.5'
|
|
92
92
|
gem 'selenium-devtools', '0.153.0'
|
|
93
93
|
gem 'selenium-webdriver', '4.49.0'
|
|
94
94
|
gem 'slack-ruby-client', '3.2.0'
|
data/bin/pwn-capd
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
# frozen_string_literal: true
|
|
3
3
|
|
|
4
|
-
#
|
|
5
|
-
|
|
4
|
+
# Deploy the reviewed Ruby library tree with this executable, never setcap Ruby.
|
|
5
|
+
$LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
|
|
6
|
+
require 'pwn'
|
|
7
|
+
require 'pwn/plugins/capability_broker/daemon'
|
|
8
|
+
|
|
9
|
+
begin
|
|
10
|
+
PWN::Plugins::CapabilityBroker::Daemon.main(argv: ARGV)
|
|
11
|
+
rescue StandardError => e
|
|
12
|
+
warn "pwn-capd: #{e.message}"
|
|
13
|
+
exit 1
|
|
14
|
+
end
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## pwn-capd (P8)
|
|
4
4
|
|
|
5
|
-
The
|
|
5
|
+
The native Ruby helper speaks one bounded JSON request per Unix connection.
|
|
6
|
+
Ruby `Socket` and `pack` implement AF_PACKET send/capture and pcap encoding;
|
|
7
|
+
the existing `ffi` gem calls Linux libc `prctl`, `capget` and `capset`.
|
|
8
|
+
There is no Python runtime or fallback. Read-only ARP/ND queries retain the
|
|
9
|
+
`/usr/sbin/ip` (iproute2) dependency, executed as an argument vector with a
|
|
10
|
+
clean environment, bounded output and a five-second deadline.
|
|
6
11
|
Linux SO_PEERCRED authenticates the configured caller UID; the client also
|
|
7
12
|
checks the daemon UID. The socket is mode 0600. Only explicitly configured
|
|
8
13
|
interfaces are accepted. Operations: `status`, `raw_send` (base64 Ethernet
|
|
@@ -11,10 +16,32 @@ neighbor-cache queries). There is no command endpoint, arbitrary privileged
|
|
|
11
16
|
output path, firewall mutation, or implicit sudo. ARP/ND currently query cache;
|
|
12
17
|
they do not actively solicit neighbors or mutate entries.
|
|
13
18
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
19
|
+
Requests are limited to 100,000 bytes including the newline; each connection
|
|
20
|
+
has a 35-second total deadline. Ethernet sends accept 14..65,535 decoded bytes.
|
|
21
|
+
Captures accept 1..128 packets, at most 30 seconds, and 4,096 bytes per packet.
|
|
22
|
+
The helper sets `no_new_privs`, intersects effective/permitted capabilities
|
|
23
|
+
with CAP_NET_RAW/CAP_NET_ADMIN, and clears both inheritable words before
|
|
24
|
+
handling requests. It never adds a capability. Existing socket paths (including
|
|
25
|
+
symlinks) and writable or foreign-owned socket directories are refused.
|
|
26
|
+
|
|
27
|
+
Unprivileged protocol and native-executable smoke (no raw packets or privilege grants):
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
bundle exec rspec spec/lib/pwn/plugins/capability_broker_spec.rb spec/lib/pwn/plugins/capability_broker/daemon_spec.rb
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Operator installation (NOT executed by the application): install the reviewed
|
|
34
|
+
PWN Ruby package and its dependencies root-owned, including `bin/pwn-capd`,
|
|
35
|
+
`lib/pwn/plugins/capability_broker.rb` and
|
|
36
|
+
`lib/pwn/plugins/capability_broker/daemon.rb`. Keep the package's `bin/` and
|
|
37
|
+
`lib/` layout intact; point the service ExecStart at that package's
|
|
38
|
+
`bin/pwn-capd`. A root-managed installed-gem executable may also be exposed
|
|
39
|
+
as `/usr/local/libexec/pwn-capd` (mode 0755). The executable, library tree,
|
|
40
|
+
Ruby interpreter, gems and all ancestor directories must be administrator
|
|
41
|
+
controlled and non-writable by clients. Clear user-controlled `RUBYOPT`,
|
|
42
|
+
`RUBYLIB`, `GEM_HOME`, `GEM_PATH` and Bundler environment settings in the
|
|
43
|
+
service; use only the reviewed installation's dependency paths.
|
|
44
|
+
Do **not** setcap the shared Ruby interpreter
|
|
18
45
|
or this script: Linux ignores script file capabilities, and granting a shared
|
|
19
46
|
interpreter network privileges exposes every script. Use a dedicated systemd
|
|
20
47
|
service with `User=<operator>`, `AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN`,
|
|
@@ -60,7 +87,9 @@ PWN::Plugins::Sandbox.rollback(snapshot: s[:snapshot], backend: 'bwrap')
|
|
|
60
87
|
```
|
|
61
88
|
|
|
62
89
|
Docker is default, image `pwn-sandbox:local`; it must be provisioned locally,
|
|
63
|
-
with `/usr/bin/
|
|
90
|
+
with `/usr/bin/ruby`, strace, GDB, and target runtime libraries. The controller
|
|
91
|
+
and isolated worker use Ruby stdlib only; no Python interpreter is launched by
|
|
92
|
+
the sandbox driver (GDB itself may include Python support). No implicit
|
|
64
93
|
pull, installation, daemon startup or host-execution fallback occurs. Use the
|
|
65
94
|
included `lib/pwn/plugins/sandbox/Dockerfile` to build explicitly. Network none,
|
|
66
95
|
read-only root/artifacts, unprivileged UID, all caps dropped, no-new-privileges,
|
|
@@ -84,13 +113,23 @@ Fuzzing is bounded seeded bit-flip stdin mutation, not coverage-guided AFL.
|
|
|
84
113
|
Tools register via `require 'pwn/ai/agent/tools/sandbox'`: `sandbox_run` and
|
|
85
114
|
`sandbox_fuzz`; normal Registry discovery finds that file.
|
|
86
115
|
|
|
87
|
-
|
|
116
|
+
Sandbox verification (safe bwrap fixtures require working unprivileged namespaces):
|
|
88
117
|
```
|
|
89
|
-
bundle exec rspec spec/lib/pwn/plugins/
|
|
90
|
-
python3 spec/lib/pwn/plugins/capd_test.py
|
|
91
|
-
python3 spec/lib/pwn/plugins/sandbox_test.py
|
|
118
|
+
bundle exec rspec spec/lib/pwn/plugins/sandbox_spec.rb spec/lib/pwn/plugins/sandbox/driver_spec.rb
|
|
92
119
|
```
|
|
93
120
|
|
|
121
|
+
The tests exercise `/bin/true`, read-only mounts, namespace isolation without
|
|
122
|
+
network requests, timeouts, resource limits, SIGSEGV/GDB/strace replay,
|
|
123
|
+
byte-exact stdin mutation and snapshot integrity. Docker command/cleanup unit
|
|
124
|
+
checks are not evidence of a running Docker backend. The GDB fixture requests
|
|
125
|
+
1024 MiB: this host's GDB can exhaust the default 256 MiB address-space budget.
|
|
126
|
+
Instrumentation failures retain raw output and an unknown classification.
|
|
127
|
+
|
|
128
|
+
Fuzz seeds are reproducible within this Ruby implementation, not bit-for-bit
|
|
129
|
+
compatible with Python's PRNG sequence. Each iteration retains the execution
|
|
130
|
+
and replay budget plus bounded backend startup/cleanup overhead; the minutes
|
|
131
|
+
budget stops starting new iterations, rather than preempting cleanup.
|
|
132
|
+
|
|
94
133
|
Safe real Docker smoke after explicit provisioning:
|
|
95
134
|
```
|
|
96
135
|
bundle exec ruby -Ilib -rpwn/plugins/sandbox -e 'p PWN::Plugins::Sandbox.run(binary: "/bin/true")'
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
LoRa PHY coding equations in lib/pwn/sdr/decoder/lora.rb are adapted from
|
|
2
|
+
https://github.com/jkadbear/LoRaPHY/blob/4fddd9a7b47682781c663608bfc4f196e4bf656d/LoRaPHY.m
|
|
3
|
+
|
|
4
|
+
The MIT License (MIT)
|
|
5
|
+
|
|
6
|
+
Copyright (C) 2020-2022 jkadbear, jkadbear@gmail.com
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
9
|
+
a copy of this software and associated documentation files (the
|
|
10
|
+
"Software"), to deal in the Software without restriction, including
|
|
11
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
12
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
13
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
14
|
+
the following conditions:
|
|
15
|
+
|
|
16
|
+
The above copyright notice and this permission notice shall be
|
|
17
|
+
included in all copies or substantial portions of the Software.
|
|
18
|
+
|
|
19
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
20
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
21
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
22
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
23
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
24
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
25
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|