pwn 0.5.708 → 0.5.710
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 +2 -2
- data/documentation/Installation.md +1 -0
- data/etc/default_skills/exploitdev/SKILL.md +38 -0
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/bridges/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/references/urls.md +1 -1
- data/etc/default_skills/pwn/ai/agent/extrospection/references/urls.md +0 -1
- data/etc/default_skills/pwn/memory_index/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/android/SKILL.md +1 -0
- data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +54 -0
- data/etc/default_skills/pwn/plugins/credential_attack/SKILL.md +58 -0
- data/etc/default_skills/pwn/plugins/credential_attack/references/urls.md +3 -0
- data/etc/default_skills/pwn/plugins/exploit_db/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +63 -0
- data/etc/default_skills/pwn/plugins/frida/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/fuzz/SKILL.md +2 -0
- data/etc/default_skills/pwn/plugins/gdb/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/k8s/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +50 -0
- data/etc/default_skills/pwn/plugins/preflight_checker/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/recon/SKILL.md +57 -0
- data/etc/default_skills/pwn/plugins/recon/references/urls.md +6 -0
- data/etc/default_skills/pwn/plugins/semgrep/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/sqlmap/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/volatility/SKILL.md +49 -0
- data/lib/pwn/ai/agent/assembly.rb +4 -1
- data/lib/pwn/ai/agent/btc.rb +4 -1
- data/lib/pwn/ai/agent/burp_suite.rb +5 -2
- data/lib/pwn/ai/agent/curriculum.rb +89 -30
- data/lib/pwn/ai/agent/dispatch.rb +27 -16
- data/lib/pwn/ai/agent/extrospection/osint/bridges.rb +9 -18
- data/lib/pwn/ai/agent/extrospection/osint/social.rb +9 -18
- data/lib/pwn/ai/agent/extrospection.rb +185 -60
- data/lib/pwn/ai/agent/gqrx.rb +4 -1
- data/lib/pwn/ai/agent/hacker_one.rb +5 -2
- data/lib/pwn/ai/agent/learning.rb +142 -25
- data/lib/pwn/ai/agent/loop.rb +53 -46
- data/lib/pwn/ai/agent/metrics.rb +133 -23
- data/lib/pwn/ai/agent/mistakes.rb +126 -17
- data/lib/pwn/ai/agent/open_goal.rb +25 -9
- data/lib/pwn/ai/agent/policy.rb +158 -18
- data/lib/pwn/ai/agent/prompt_builder.rb +21 -11
- data/lib/pwn/ai/agent/prompt_cache.rb +44 -13
- data/lib/pwn/ai/agent/reflect.rb +9 -5
- data/lib/pwn/ai/agent/registry.rb +65 -12
- data/lib/pwn/ai/agent/result.rb +19 -10
- data/lib/pwn/ai/agent/reward.rb +150 -32
- data/lib/pwn/ai/agent/sast.rb +4 -1
- data/lib/pwn/ai/agent/swarm.rb +72 -36
- data/lib/pwn/ai/agent/task_summarizer.rb +165 -36
- data/lib/pwn/ai/agent/tool_guard.rb +105 -6
- data/lib/pwn/ai/agent/tools/sessions.rb +8 -1
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -1
- data/lib/pwn/ai/agent/turn_finalizer.rb +41 -21
- data/lib/pwn/ai/agent/vuln_gen.rb +6 -3
- data/lib/pwn/ai/agent.rb +4 -0
- data/lib/pwn/ai/anthropic.rb +41 -7
- data/lib/pwn/ai/gemini.rb +21 -11
- data/lib/pwn/ai/grok.rb +44 -6
- data/lib/pwn/ai/http_retry.rb +40 -12
- data/lib/pwn/ai/ollama.rb +19 -10
- data/lib/pwn/ai/open_ai.rb +81 -30
- data/lib/pwn/ai/open_web_ui.rb +20 -14
- data/lib/pwn/ai/red_team/agent_protocol_abuse.rb +7 -1
- data/lib/pwn/ai/red_team/data_and_model_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/excessive_agency.rb +7 -1
- data/lib/pwn/ai/red_team/hidden_context_exposure.rb +7 -1
- data/lib/pwn/ai/red_team/insecure_output_handling.rb +7 -1
- data/lib/pwn/ai/red_team/jailbreak.rb +7 -1
- data/lib/pwn/ai/red_team/memory_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/multimodal_injection.rb +7 -1
- data/lib/pwn/ai/red_team/overreliance.rb +7 -1
- data/lib/pwn/ai/red_team/payload_splitting.rb +7 -1
- data/lib/pwn/ai/red_team/prompt_injection.rb +7 -1
- data/lib/pwn/ai/red_team/rag_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/sensitive_information_disclosure.rb +7 -1
- data/lib/pwn/ai/red_team/supply_chain.rb +7 -1
- data/lib/pwn/ai/red_team/system_prompt_extraction.rb +7 -1
- data/lib/pwn/ai/red_team/test_case_engine.rb +12 -9
- data/lib/pwn/ai/red_team/token_smuggling.rb +7 -1
- data/lib/pwn/ai/red_team/unbounded_consumption.rb +7 -1
- data/lib/pwn/ai/red_team/vector_and_embedding_weaknesses.rb +7 -1
- data/lib/pwn/ai/red_team.rb +4 -0
- data/lib/pwn/ai.rb +4 -0
- data/lib/pwn/aws/acm.rb +5 -2
- data/lib/pwn/aws/api_gateway.rb +10 -7
- data/lib/pwn/aws/app_stream.rb +5 -2
- data/lib/pwn/aws/application_auto_scaling.rb +5 -2
- data/lib/pwn/aws/application_discovery_service.rb +5 -2
- data/lib/pwn/aws/auto_scaling.rb +5 -2
- data/lib/pwn/aws/batch.rb +5 -2
- data/lib/pwn/aws/budgets.rb +5 -2
- data/lib/pwn/aws/cloud_formation.rb +5 -2
- data/lib/pwn/aws/cloud_front.rb +7 -4
- data/lib/pwn/aws/cloud_hsm.rb +5 -2
- data/lib/pwn/aws/cloud_search.rb +5 -2
- data/lib/pwn/aws/cloud_search_domain.rb +5 -2
- data/lib/pwn/aws/cloud_trail.rb +5 -2
- data/lib/pwn/aws/cloud_watch.rb +5 -2
- data/lib/pwn/aws/cloud_watch_events.rb +5 -2
- data/lib/pwn/aws/cloud_watch_logs.rb +5 -2
- data/lib/pwn/aws/code_build.rb +5 -2
- data/lib/pwn/aws/code_commit.rb +5 -2
- data/lib/pwn/aws/code_deploy.rb +5 -2
- data/lib/pwn/aws/code_pipeline.rb +5 -2
- data/lib/pwn/aws/cognito_identity.rb +5 -2
- data/lib/pwn/aws/cognito_identity_provider.rb +5 -2
- data/lib/pwn/aws/cognito_sync.rb +5 -2
- data/lib/pwn/aws/config_service.rb +5 -2
- data/lib/pwn/aws/data_pipleline.rb +5 -2
- data/lib/pwn/aws/database_migration_service.rb +5 -2
- data/lib/pwn/aws/device_farm.rb +5 -2
- data/lib/pwn/aws/direct_connect.rb +5 -2
- data/lib/pwn/aws/directory_service.rb +5 -2
- data/lib/pwn/aws/dynamo_db.rb +5 -2
- data/lib/pwn/aws/dynamo_db_streams.rb +5 -2
- data/lib/pwn/aws/ec2.rb +5 -2
- data/lib/pwn/aws/ecr.rb +5 -2
- data/lib/pwn/aws/ecs.rb +5 -2
- data/lib/pwn/aws/efs.rb +5 -2
- data/lib/pwn/aws/elasti_cache.rb +5 -2
- data/lib/pwn/aws/elastic_beanstalk.rb +8 -5
- data/lib/pwn/aws/elastic_load_balancing.rb +5 -2
- data/lib/pwn/aws/elastic_load_balancing_v2.rb +6 -3
- data/lib/pwn/aws/elastic_transcoder.rb +5 -2
- data/lib/pwn/aws/elasticsearch_service.rb +5 -2
- data/lib/pwn/aws/emr.rb +5 -2
- data/lib/pwn/aws/firehose.rb +5 -2
- data/lib/pwn/aws/game_lift.rb +5 -2
- data/lib/pwn/aws/glacier.rb +6 -3
- data/lib/pwn/aws/health.rb +5 -2
- data/lib/pwn/aws/iam.rb +10 -4
- data/lib/pwn/aws/import_export.rb +5 -2
- data/lib/pwn/aws/inspector.rb +5 -2
- data/lib/pwn/aws/iot.rb +5 -2
- data/lib/pwn/aws/iot_data_plane.rb +5 -2
- data/lib/pwn/aws/kinesis.rb +5 -2
- data/lib/pwn/aws/kinesis_analytics.rb +5 -2
- data/lib/pwn/aws/kms.rb +5 -2
- data/lib/pwn/aws/lambda.rb +5 -2
- data/lib/pwn/aws/lambda_preview.rb +5 -2
- data/lib/pwn/aws/lex.rb +5 -2
- data/lib/pwn/aws/lightsail.rb +5 -2
- data/lib/pwn/aws/machine_learning.rb +5 -2
- data/lib/pwn/aws/marketplace_commerce_analytics.rb +5 -2
- data/lib/pwn/aws/marketplace_metering.rb +5 -2
- data/lib/pwn/aws/ops_works.rb +5 -2
- data/lib/pwn/aws/ops_works_cm.rb +5 -2
- data/lib/pwn/aws/pinpoint.rb +5 -2
- data/lib/pwn/aws/polly.rb +5 -2
- data/lib/pwn/aws/rds.rb +5 -2
- data/lib/pwn/aws/redshift.rb +5 -2
- data/lib/pwn/aws/rekognition.rb +5 -2
- data/lib/pwn/aws/route53.rb +5 -2
- data/lib/pwn/aws/route53_domains.rb +5 -2
- data/lib/pwn/aws/s3.rb +5 -2
- data/lib/pwn/aws/service_catalog.rb +5 -2
- data/lib/pwn/aws/ses.rb +5 -2
- data/lib/pwn/aws/shield.rb +5 -2
- data/lib/pwn/aws/simple_db.rb +5 -2
- data/lib/pwn/aws/sms.rb +5 -2
- data/lib/pwn/aws/snowball.rb +5 -2
- data/lib/pwn/aws/sns.rb +5 -2
- data/lib/pwn/aws/sqs.rb +5 -2
- data/lib/pwn/aws/ssm.rb +5 -2
- data/lib/pwn/aws/states.rb +5 -2
- data/lib/pwn/aws/storage_gateway.rb +5 -2
- data/lib/pwn/aws/sts.rb +4 -1
- data/lib/pwn/aws/support.rb +5 -2
- data/lib/pwn/aws/swf.rb +5 -2
- data/lib/pwn/aws/waf.rb +5 -2
- data/lib/pwn/aws/waf_regional.rb +5 -2
- data/lib/pwn/aws/workspaces.rb +5 -2
- data/lib/pwn/aws/x_ray.rb +5 -2
- data/lib/pwn/aws.rb +4 -0
- data/lib/pwn/banner/anon.rb +3 -0
- data/lib/pwn/banner/bubble.rb +3 -0
- data/lib/pwn/banner/cheshire.rb +3 -0
- data/lib/pwn/banner/code_cave.rb +3 -0
- data/lib/pwn/banner/dont_panic.rb +3 -0
- data/lib/pwn/banner/f_society.rb +3 -0
- data/lib/pwn/banner/fork_bomb.rb +3 -0
- data/lib/pwn/banner/jmp_esp.rb +3 -0
- data/lib/pwn/banner/matrix.rb +5 -1
- data/lib/pwn/banner/ninja.rb +3 -0
- data/lib/pwn/banner/off_the_air.rb +3 -0
- data/lib/pwn/banner/pirate.rb +3 -0
- data/lib/pwn/banner/radare2.rb +3 -0
- data/lib/pwn/banner/radare2_ai.rb +3 -0
- data/lib/pwn/banner/white_rabbit.rb +3 -0
- data/lib/pwn/banner.rb +6 -2
- data/lib/pwn/blockchain/btc.rb +8 -3
- data/lib/pwn/blockchain/eth.rb +10 -3
- data/lib/pwn/blockchain.rb +4 -0
- data/lib/pwn/bounty/lifecycle_authz_replay.rb +46 -27
- data/lib/pwn/bounty.rb +4 -0
- data/lib/pwn/config.rb +79 -13
- data/lib/pwn/cron.rb +297 -20
- data/lib/pwn/driver.rb +2 -18
- data/lib/pwn/ffi/adalm_pluto.rb +65 -11
- data/lib/pwn/ffi/fftw.rb +31 -6
- data/lib/pwn/ffi/hack_rf.rb +59 -8
- data/lib/pwn/ffi/liquid.rb +63 -10
- data/lib/pwn/ffi/rtl_sdr.rb +35 -5
- data/lib/pwn/ffi/soapy_sdr.rb +60 -10
- data/lib/pwn/ffi/stdio.rb +7 -8
- data/lib/pwn/ffi/volk.rb +36 -7
- data/lib/pwn/ffi.rb +12 -0
- data/lib/pwn/memory.rb +136 -16
- data/lib/pwn/memory_index.rb +34 -19
- data/lib/pwn/migrate.rb +34 -24
- data/lib/pwn/module_skills.rb +39 -8
- data/lib/pwn/plugins/aflplusplus.rb +72 -0
- data/lib/pwn/plugins/android.rb +71 -245
- data/lib/pwn/plugins/artifact_registry.rb +71 -0
- data/lib/pwn/plugins/assembly.rb +9 -4
- data/lib/pwn/plugins/authentication_helper.rb +8 -5
- data/lib/pwn/plugins/baresip.rb +59 -12
- data/lib/pwn/plugins/basic_auth.rb +9 -3
- data/lib/pwn/plugins/beef.rb +28 -18
- data/lib/pwn/plugins/binary_parser.rb +133 -0
- data/lib/pwn/plugins/black_duck_binary_analysis.rb +63 -39
- data/lib/pwn/plugins/burp_suite.rb +98 -68
- data/lib/pwn/plugins/bus_pirate.rb +15 -8
- data/lib/pwn/plugins/char.rb +33 -3
- data/lib/pwn/plugins/credential_attack.rb +158 -0
- data/lib/pwn/plugins/credit_card.rb +6 -1
- data/lib/pwn/plugins/dao_ldap.rb +19 -13
- data/lib/pwn/plugins/dao_mongo.rb +11 -5
- data/lib/pwn/plugins/dao_postgres.rb +28 -19
- data/lib/pwn/plugins/dao_sqlite3.rb +15 -6
- data/lib/pwn/plugins/defect_dojo.rb +38 -22
- data/lib/pwn/plugins/detect_os.rb +5 -0
- data/lib/pwn/plugins/ein.rb +3 -0
- data/lib/pwn/plugins/exploit_db.rb +69 -0
- data/lib/pwn/plugins/exploit_dev.rb +330 -0
- data/lib/pwn/plugins/file_fu.rb +11 -8
- data/lib/pwn/plugins/frida.rb +112 -0
- data/lib/pwn/plugins/fuzz.rb +42 -6
- data/lib/pwn/plugins/gdb.rb +115 -0
- data/lib/pwn/plugins/git.rb +19 -14
- data/lib/pwn/plugins/github.rb +38 -15
- data/lib/pwn/plugins/google_workspace.rb +188 -45
- data/lib/pwn/plugins/hacker_one.rb +159 -35
- data/lib/pwn/plugins/hunter.rb +6 -3
- data/lib/pwn/plugins/ip_info.rb +9 -4
- data/lib/pwn/plugins/irc.rb +28 -15
- data/lib/pwn/plugins/jenkins.rb +65 -57
- data/lib/pwn/plugins/jira_data_center.rb +30 -22
- data/lib/pwn/plugins/jobs.rb +110 -0
- data/lib/pwn/plugins/json_pathify.rb +9 -5
- data/lib/pwn/plugins/k8s.rb +73 -0
- data/lib/pwn/plugins/log.rb +113 -13
- data/lib/pwn/plugins/mail_agent.rb +87 -79
- data/lib/pwn/plugins/metasploit.rb +11 -6
- data/lib/pwn/plugins/monkey_patch.rb +3 -0
- data/lib/pwn/plugins/msr206.rb +42 -28
- data/lib/pwn/plugins/nessus_cloud.rb +44 -4
- data/lib/pwn/plugins/nexpose_vuln_scan.rb +40 -24
- data/lib/pwn/plugins/nmap_it.rb +14 -34
- data/lib/pwn/plugins/nuclei.rb +90 -0
- data/lib/pwn/plugins/oauth2.rb +11 -5
- data/lib/pwn/plugins/ocr.rb +3 -0
- data/lib/pwn/plugins/open_api.rb +5 -2
- data/lib/pwn/plugins/openvas.rb +33 -25
- data/lib/pwn/plugins/packet.rb +152 -31
- data/lib/pwn/plugins/pdf_parse.rb +5 -2
- data/lib/pwn/plugins/pony.rb +86 -1
- data/lib/pwn/plugins/preflight_checker.rb +166 -0
- data/lib/pwn/plugins/process_tube.rb +139 -0
- data/lib/pwn/plugins/ps.rb +7 -1
- data/lib/pwn/plugins/pwn_logger.rb +6 -2
- data/lib/pwn/plugins/rabbit_mq.rb +12 -7
- data/lib/pwn/plugins/radare2.rb +253 -0
- data/lib/pwn/plugins/recon.rb +196 -0
- data/lib/pwn/plugins/repl.rb +122 -1
- data/lib/pwn/plugins/scannable_codes.rb +5 -1
- data/lib/pwn/plugins/semgrep.rb +61 -0
- data/lib/pwn/plugins/serial.rb +24 -14
- data/lib/pwn/plugins/shodan.rb +54 -35
- data/lib/pwn/plugins/slack_client.rb +11 -6
- data/lib/pwn/plugins/sock.rb +17 -8
- data/lib/pwn/plugins/spider.rb +5 -2
- data/lib/pwn/plugins/sqlmap.rb +49 -0
- data/lib/pwn/plugins/ssn.rb +3 -0
- data/lib/pwn/plugins/thread_pool.rb +6 -9
- data/lib/pwn/plugins/tor.rb +9 -4
- data/lib/pwn/plugins/transparent_browser.rb +62 -107
- data/lib/pwn/plugins/tty_spinner.rb +16 -2
- data/lib/pwn/plugins/twitter_api.rb +6 -2
- data/lib/pwn/plugins/uri_scheme.rb +4 -1
- data/lib/pwn/plugins/vault.rb +12 -3
- data/lib/pwn/plugins/vin.rb +24 -12
- data/lib/pwn/plugins/voice.rb +7 -2
- data/lib/pwn/plugins/volatility.rb +67 -0
- data/lib/pwn/plugins/vsphere.rb +9 -5
- data/lib/pwn/plugins/xxd.rb +12 -43
- data/lib/pwn/plugins/zaproxy.rb +30 -16
- data/lib/pwn/plugins.rb +22 -0
- data/lib/pwn/reports/ai_red_team.rb +6 -2
- data/lib/pwn/reports/csv.rb +8 -1
- data/lib/pwn/reports/fuzz.rb +5 -2
- data/lib/pwn/reports/html.rb +8 -1
- data/lib/pwn/reports/html_footer.rb +4 -3
- data/lib/pwn/reports/html_header.rb +6 -2
- data/lib/pwn/reports/json.rb +8 -1
- data/lib/pwn/reports/markdown.rb +8 -1
- data/lib/pwn/reports/pdf.rb +8 -1
- data/lib/pwn/reports/phone.rb +5 -2
- data/lib/pwn/reports/sast.rb +6 -2
- data/lib/pwn/reports/uri_buster.rb +5 -2
- data/lib/pwn/reports/xml.rb +8 -1
- data/lib/pwn/reports.rb +19 -0
- data/lib/pwn/sast/amqp_connect_as_guest.rb +9 -3
- data/lib/pwn/sast/apache_file_system_util_api.rb +9 -3
- data/lib/pwn/sast/aws.rb +9 -3
- data/lib/pwn/sast/banned_function_calls_c.rb +9 -3
- data/lib/pwn/sast/base64.rb +9 -3
- data/lib/pwn/sast/beef_hook.rb +9 -3
- data/lib/pwn/sast/cmd_execution_go_lang.rb +9 -3
- data/lib/pwn/sast/cmd_execution_java.rb +9 -3
- data/lib/pwn/sast/cmd_execution_python.rb +9 -3
- data/lib/pwn/sast/cmd_execution_ruby.rb +9 -3
- data/lib/pwn/sast/cmd_execution_scala.rb +9 -3
- data/lib/pwn/sast/csrf.rb +9 -3
- data/lib/pwn/sast/deserial_java.rb +9 -3
- data/lib/pwn/sast/emoticon.rb +9 -3
- data/lib/pwn/sast/eval.rb +9 -3
- data/lib/pwn/sast/factory.rb +9 -3
- data/lib/pwn/sast/http_authorization_header.rb +9 -3
- data/lib/pwn/sast/inner_html.rb +9 -3
- data/lib/pwn/sast/keystore.rb +9 -3
- data/lib/pwn/sast/local_storage.rb +9 -3
- data/lib/pwn/sast/location_hash.rb +9 -3
- data/lib/pwn/sast/log4j.rb +9 -3
- data/lib/pwn/sast/logger.rb +9 -3
- data/lib/pwn/sast/md5.rb +9 -3
- data/lib/pwn/sast/outer_html.rb +9 -3
- data/lib/pwn/sast/padding_oracle.rb +9 -3
- data/lib/pwn/sast/password.rb +9 -3
- data/lib/pwn/sast/php_input_mechanisms.rb +9 -3
- data/lib/pwn/sast/php_type_juggling.rb +9 -3
- data/lib/pwn/sast/pom_version.rb +9 -3
- data/lib/pwn/sast/port.rb +9 -3
- data/lib/pwn/sast/post_message.rb +9 -3
- data/lib/pwn/sast/private_key.rb +9 -3
- data/lib/pwn/sast/redirect.rb +9 -3
- data/lib/pwn/sast/redos.rb +9 -3
- data/lib/pwn/sast/shell.rb +9 -3
- data/lib/pwn/sast/signature.rb +9 -3
- data/lib/pwn/sast/sql.rb +9 -3
- data/lib/pwn/sast/ssl.rb +9 -3
- data/lib/pwn/sast/sudo.rb +9 -3
- data/lib/pwn/sast/task_tag.rb +9 -3
- data/lib/pwn/sast/test_case_engine.rb +11 -7
- data/lib/pwn/sast/throw_errors.rb +9 -3
- data/lib/pwn/sast/token.rb +9 -3
- data/lib/pwn/sast/type_script_type_juggling.rb +9 -3
- data/lib/pwn/sast/use_after_free.rb +9 -3
- data/lib/pwn/sast/version.rb +9 -3
- data/lib/pwn/sast/window_location_hash.rb +9 -3
- data/lib/pwn/sast.rb +4 -0
- data/lib/pwn/sdr/decoder/adsb.rb +36 -5
- data/lib/pwn/sdr/decoder/apt.rb +9 -6
- data/lib/pwn/sdr/decoder/base.rb +74 -22
- data/lib/pwn/sdr/decoder/bluetooth.rb +17 -5
- data/lib/pwn/sdr/decoder/dect.rb +12 -3
- data/lib/pwn/sdr/decoder/dsp.rb +229 -39
- data/lib/pwn/sdr/decoder/flex.rb +59 -11
- data/lib/pwn/sdr/decoder/gps.rb +12 -3
- data/lib/pwn/sdr/decoder/gsm.rb +24 -4
- data/lib/pwn/sdr/decoder/iridium.rb +12 -3
- data/lib/pwn/sdr/decoder/lora.rb +13 -4
- data/lib/pwn/sdr/decoder/lte.rb +27 -3
- data/lib/pwn/sdr/decoder/morse.rb +12 -3
- data/lib/pwn/sdr/decoder/p25.rb +12 -3
- data/lib/pwn/sdr/decoder/pager.rb +8 -5
- data/lib/pwn/sdr/decoder/pocsag.rb +29 -9
- data/lib/pwn/sdr/decoder/rds.rb +14 -8
- data/lib/pwn/sdr/decoder/rfid.rb +12 -3
- data/lib/pwn/sdr/decoder/rtl433.rb +12 -3
- data/lib/pwn/sdr/decoder/rtty.rb +8 -5
- data/lib/pwn/sdr/decoder/wifi.rb +12 -3
- data/lib/pwn/sdr/decoder/zigbee.rb +12 -3
- data/lib/pwn/sdr/decoder.rb +9 -0
- data/lib/pwn/sdr/flipper_zero.rb +17 -10
- data/lib/pwn/sdr/frequency_allocation.rb +4 -1
- data/lib/pwn/sdr/gqrx.rb +178 -119
- data/lib/pwn/sdr/rfidler.rb +4 -1
- data/lib/pwn/sdr/son_micro_rfid.rb +37 -24
- data/lib/pwn/sdr.rb +14 -0
- data/lib/pwn/sessions.rb +86 -16
- data/lib/pwn/setup.rb +106 -37
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/app_cobalt_io.rb +11 -5
- data/lib/pwn/www/bing.rb +10 -5
- data/lib/pwn/www/bug_crowd.rb +11 -5
- data/lib/pwn/www/checkip.rb +8 -4
- data/lib/pwn/www/coinbase_pro.rb +11 -5
- data/lib/pwn/www/duckduckgo.rb +12 -6
- data/lib/pwn/www/facebook.rb +11 -5
- data/lib/pwn/www/github.rb +11 -5
- data/lib/pwn/www/google.rb +11 -5
- data/lib/pwn/www/hacker_one.rb +20 -9
- data/lib/pwn/www/linkedin.rb +11 -5
- data/lib/pwn/www/pandora.rb +11 -5
- data/lib/pwn/www/pastebin.rb +9 -4
- data/lib/pwn/www/paypal.rb +19 -11
- data/lib/pwn/www/synack.rb +11 -5
- data/lib/pwn/www/torch.rb +13 -8
- data/lib/pwn/www/trading_view.rb +11 -5
- data/lib/pwn/www/twitter.rb +11 -5
- data/lib/pwn/www/uber.rb +11 -5
- data/lib/pwn/www/upwork.rb +11 -5
- data/lib/pwn/www/wayback_machine.rb +12 -6
- data/lib/pwn/www/youtube.rb +10 -5
- data/lib/pwn/www.rb +4 -0
- data/spec/conventions_spec.rb +118 -2
- data/spec/integration/help_contract_spec.rb +2 -0
- data/spec/lib/pwn/ai/agent/reward_spec.rb +9 -0
- data/spec/lib/pwn/plugins/aflplusplus_spec.rb +13 -0
- data/spec/lib/pwn/plugins/artifact_registry_spec.rb +13 -0
- data/spec/lib/pwn/plugins/binary_parser_spec.rb +21 -0
- data/spec/lib/pwn/plugins/credential_attack_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_db_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
- data/spec/lib/pwn/plugins/frida_spec.rb +13 -0
- data/spec/lib/pwn/plugins/gdb_spec.rb +13 -0
- data/spec/lib/pwn/plugins/jobs_spec.rb +13 -0
- data/spec/lib/pwn/plugins/k8s_spec.rb +13 -0
- data/spec/lib/pwn/plugins/nuclei_spec.rb +13 -0
- data/spec/lib/pwn/plugins/preflight_checker_spec.rb +23 -0
- data/spec/lib/pwn/plugins/process_tube_spec.rb +13 -0
- data/spec/lib/pwn/plugins/radare2_spec.rb +13 -0
- data/spec/lib/pwn/plugins/recon_spec.rb +26 -0
- data/spec/lib/pwn/plugins/semgrep_spec.rb +13 -0
- data/spec/lib/pwn/plugins/sqlmap_spec.rb +13 -0
- data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
- data/spec/lib/pwn/req_queue_spec.rb +168 -0
- data/third_party/pwn_rdoc.jsonl +160 -5
- metadata +63 -7
- data/etc/default_skills/pwn/memory_index/references/urls.md +0 -4
- data/etc/default_skills/pwn/plugins/transparent_browser/references/urls.md +0 -3
data/lib/pwn/sdr/decoder/base.rb
CHANGED
|
@@ -626,38 +626,90 @@ module PWN
|
|
|
626
626
|
# Display Usage for this Module
|
|
627
627
|
|
|
628
628
|
public_class_method def self.help
|
|
629
|
-
puts "USAGE
|
|
629
|
+
puts "USAGE:
|
|
630
|
+
# Run run native and return its result
|
|
630
631
|
#{self}.run_native(
|
|
631
|
-
freq_obj: 'required - freq_obj from PWN::SDR::GQRX.init_freq',
|
|
632
|
-
protocol: 'required - short
|
|
633
|
-
demod:
|
|
634
|
-
rate:
|
|
632
|
+
freq_obj: 'required - freq_obj Hash from PWN::SDR::GQRX.init_freq',
|
|
633
|
+
protocol: 'required - short name for banner / log filename (defaults to SIGNAL)',
|
|
634
|
+
demod: 'required - object responding to #feed(samples,&emit)',
|
|
635
|
+
rate: 'optional - assumed UDP sample rate (default 48000)'
|
|
635
636
|
)
|
|
636
637
|
|
|
637
|
-
#
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
fm_demod: 'optional - FM-demod then #feed (default false)',
|
|
645
|
-
fallback: 'optional - :detector|:raise|:silent (default :detector)'
|
|
638
|
+
# Run run detector and return its result
|
|
639
|
+
#{self}.run_detector(
|
|
640
|
+
freq_obj: 'required - freq_obj Hash from PWN::SDR::GQRX.init_freq',
|
|
641
|
+
protocol: 'required - short name for banner / log filename (defaults to SIGNAL)',
|
|
642
|
+
note: 'optional - one-line explanation shown once',
|
|
643
|
+
threshold: 'optional - dBFS above rolling floor to call a burst (default 8.0)',
|
|
644
|
+
describe: 'optional - Proc.new { |burst_hash| Hash } extra fields'
|
|
646
645
|
)
|
|
647
646
|
|
|
648
|
-
#
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
647
|
+
# Run match line and return its result
|
|
648
|
+
#{self}.match_line?(
|
|
649
|
+
line: 'optional - line value consumed by #match_line?',
|
|
650
|
+
matcher: 'optional - matcher value consumed by #match_line?'
|
|
651
|
+
)
|
|
652
|
+
|
|
653
|
+
# Run resolve iq source and return its result
|
|
654
|
+
#{self}.resolve_iq_source(
|
|
655
|
+
freq_obj: 'required - freq obj value consumed by #resolve_iq_source',
|
|
656
|
+
source: 'optional - :auto|:rtlsdr|:hackrf|:adalm_pluto|:soapy|:file',
|
|
657
|
+
sample_rate: 'optional - desired rate Hz',
|
|
658
|
+
file: 'optional - path to .cu8/.cs16/.iq capture (defaults to freq_obj[:iq_file])',
|
|
659
|
+
iq_format: 'optional - iq format value consumed by #resolve_iq_source (defaults to freq_obj[:iq_format])',
|
|
660
|
+
index: 'optional - index value consumed by #resolve_iq_source',
|
|
661
|
+
gain_db: 'optional - gain db value consumed by #resolve_iq_source (defaults to freq_obj[:gain_db])',
|
|
662
|
+
ppm: 'optional - ppm value consumed by #resolve_iq_source',
|
|
663
|
+
serial: 'optional - serial value consumed by #resolve_iq_source',
|
|
664
|
+
lna_gain: 'optional - lna gain value consumed by #resolve_iq_source (defaults to 16)',
|
|
665
|
+
vga_gain: 'optional - vga gain value consumed by #resolve_iq_source (defaults to 20)',
|
|
666
|
+
amp: 'optional - amp value consumed by #resolve_iq_source',
|
|
667
|
+
uri: 'optional - URI or URL string',
|
|
668
|
+
chunk_samples: 'optional - chunk samples value consumed by #resolve_iq_source',
|
|
669
|
+
soapy_args: 'optional - soapy args value consumed by #resolve_iq_source (defaults to freq_obj[:soapy_args])',
|
|
670
|
+
channel: 'optional - channel value consumed by #resolve_iq_source (defaults to 0)'
|
|
671
|
+
)
|
|
672
|
+
|
|
673
|
+
# Run read iq chunk and return its result
|
|
674
|
+
#{self}.read_iq_chunk(
|
|
675
|
+
source: 'required - source value consumed by #read_iq_chunk',
|
|
676
|
+
bytes: 'optional - bytes value consumed by #read_iq_chunk'
|
|
654
677
|
)
|
|
655
678
|
|
|
656
|
-
#
|
|
657
|
-
#{self}.
|
|
679
|
+
# Run unpack iq and return its result
|
|
680
|
+
#{self}.unpack_iq(
|
|
681
|
+
source: 'optional - source value consumed by #unpack_iq',
|
|
682
|
+
data: 'optional - data value consumed by #unpack_iq'
|
|
683
|
+
)
|
|
684
|
+
|
|
685
|
+
# Run close iq source and return its result
|
|
686
|
+
#{self}.close_iq_source(
|
|
687
|
+
source: 'optional - source value consumed by #close_iq_source'
|
|
688
|
+
)
|
|
689
|
+
|
|
690
|
+
# OR #feed(samples, &emit) when fm_demod:true,
|
|
691
|
+
#{self}.run_iq(
|
|
692
|
+
freq_obj: 'required - freq_obj Hash',
|
|
693
|
+
protocol: 'required - short name (defaults to SIGNAL)',
|
|
694
|
+
demod: 'required - object with #feed_iq(iq, rate:, &emit',
|
|
695
|
+
sample_rate: 'optional - Hz (default 2_048_000)',
|
|
696
|
+
source: 'optional - :auto|:rtlsdr|:hackrf|:adalm_pluto|:soapy|:file',
|
|
697
|
+
file: 'optional - path to capture',
|
|
698
|
+
fm_demod: 'optional - FM-demod I/Q→audio then #feed (default false)',
|
|
699
|
+
chunk_bytes: 'optional - bytes per read (default 262144)',
|
|
700
|
+
fallback: 'optional - :detector|:raise|:silent (default :detector)',
|
|
701
|
+
note: 'optional - shown once when falling back',
|
|
702
|
+
describe: 'optional - Proc for detector fallback',
|
|
703
|
+
gain_db: 'optional - gain db value consumed by #run_iq',
|
|
704
|
+
uri: 'optional - URI or URL string',
|
|
705
|
+
index: 'optional - index value consumed by #run_iq',
|
|
706
|
+
threshold: 'optional - threshold value consumed by #run_iq'
|
|
707
|
+
)
|
|
658
708
|
|
|
709
|
+
# Print the AUTHOR(S) string for this module.
|
|
659
710
|
#{self}.authors
|
|
660
711
|
"
|
|
712
|
+
constants.sort
|
|
661
713
|
end
|
|
662
714
|
end
|
|
663
715
|
end
|
|
@@ -191,18 +191,30 @@ module PWN
|
|
|
191
191
|
end
|
|
192
192
|
|
|
193
193
|
public_class_method def self.help
|
|
194
|
-
puts "USAGE
|
|
194
|
+
puts "USAGE:
|
|
195
|
+
# Run ble crc24 and return its result
|
|
196
|
+
#{self}.ble_crc24(
|
|
197
|
+
bytes: 'optional - bytes value consumed by #ble_crc24 (defaults to [])'
|
|
198
|
+
)
|
|
199
|
+
|
|
200
|
+
# Run decode and return its result
|
|
195
201
|
#{self}.decode(
|
|
196
202
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
203
|
+
channel: 'optional - channel value consumed by #decode',
|
|
204
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
205
|
+
source: 'optional - source value consumed by #decode',
|
|
206
|
+
file: 'optional - filesystem path'
|
|
200
207
|
)
|
|
201
208
|
|
|
202
|
-
#
|
|
209
|
+
# Run parse line and return its result
|
|
210
|
+
#{self}.parse_line(
|
|
211
|
+
line: 'optional - line value consumed by #parse_line'
|
|
212
|
+
)
|
|
203
213
|
|
|
214
|
+
# Print the AUTHOR(S) string for this module.
|
|
204
215
|
#{self}.authors
|
|
205
216
|
"
|
|
217
|
+
constants.sort
|
|
206
218
|
end
|
|
207
219
|
end
|
|
208
220
|
end
|
data/lib/pwn/sdr/decoder/dect.rb
CHANGED
|
@@ -138,15 +138,24 @@ module PWN
|
|
|
138
138
|
end
|
|
139
139
|
|
|
140
140
|
public_class_method def self.help
|
|
141
|
-
puts "USAGE
|
|
141
|
+
puts "USAGE:
|
|
142
|
+
# Run decode and return its result
|
|
142
143
|
#{self}.decode(
|
|
143
144
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
146
|
+
source: 'optional - source value consumed by #decode',
|
|
147
|
+
file: 'optional - filesystem path'
|
|
146
148
|
)
|
|
147
149
|
|
|
150
|
+
# Run parse line and return its result
|
|
151
|
+
#{self}.parse_line(
|
|
152
|
+
line: 'optional - line value consumed by #parse_line'
|
|
153
|
+
)
|
|
154
|
+
|
|
155
|
+
# Print the AUTHOR(S) string for this module.
|
|
148
156
|
#{self}.authors
|
|
149
157
|
"
|
|
158
|
+
constants.sort
|
|
150
159
|
end
|
|
151
160
|
end
|
|
152
161
|
end
|
data/lib/pwn/sdr/decoder/dsp.rb
CHANGED
|
@@ -1005,47 +1005,237 @@ module PWN
|
|
|
1005
1005
|
# Display Usage for this Module
|
|
1006
1006
|
|
|
1007
1007
|
public_class_method def self.help
|
|
1008
|
-
puts "USAGE
|
|
1009
|
-
#
|
|
1010
|
-
#{self}.unpack_s16le(
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
#
|
|
1015
|
-
#{self}.
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
#
|
|
1022
|
-
#{self}.
|
|
1023
|
-
|
|
1024
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
#
|
|
1029
|
-
#{self}.
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
#
|
|
1035
|
-
#{self}.
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
#
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1008
|
+
puts "USAGE:
|
|
1009
|
+
# Run unpack s16le and return its result
|
|
1010
|
+
#{self}.unpack_s16le(
|
|
1011
|
+
data: 'required - raw String of little-endian signed 16-bit PCM'
|
|
1012
|
+
)
|
|
1013
|
+
|
|
1014
|
+
# Run resample and return its result
|
|
1015
|
+
#{self}.resample(
|
|
1016
|
+
samples: 'required - samples value consumed by #resample',
|
|
1017
|
+
src_rate: 'required - input sample rate (Hz)',
|
|
1018
|
+
dst_rate: 'required - output sample rate (Hz)'
|
|
1019
|
+
)
|
|
1020
|
+
|
|
1021
|
+
# Run goertzel and return its result
|
|
1022
|
+
#{self}.goertzel(
|
|
1023
|
+
samples: 'required - samples value consumed by #goertzel',
|
|
1024
|
+
rate: 'required - sample rate (Hz)',
|
|
1025
|
+
freq: 'required - target tone frequency (Hz)'
|
|
1026
|
+
)
|
|
1027
|
+
|
|
1028
|
+
# Run envelope and return its result
|
|
1029
|
+
#{self}.envelope(
|
|
1030
|
+
samples: 'required - samples value consumed by #envelope',
|
|
1031
|
+
window: 'optional - moving-average window in samples (default 32)'
|
|
1032
|
+
)
|
|
1033
|
+
|
|
1034
|
+
# Run dc block and return its result
|
|
1035
|
+
#{self}.dc_block(
|
|
1036
|
+
samples: 'required - samples value consumed by #dc_block',
|
|
1037
|
+
alpha: 'optional - pole (default 0.995)',
|
|
1038
|
+
m: 'optional - m value consumed by #dc_block',
|
|
1039
|
+
as_db: 'optional - as db value consumed by #dc_block (defaults to 60.0)'
|
|
1040
|
+
)
|
|
1041
|
+
|
|
1042
|
+
# Run nrz slice and return its result
|
|
1043
|
+
#{self}.nrz_slice(
|
|
1044
|
+
samples: 'required - Array<Float> (post-FM-discriminator baseband)',
|
|
1045
|
+
rate: 'required - sample rate (Hz)',
|
|
1046
|
+
baud: 'required - symbol rate',
|
|
1047
|
+
invert: 'optional - flip bit polarity (default false)'
|
|
1048
|
+
)
|
|
1049
|
+
|
|
1050
|
+
# Signed moving average (like envelope but keeps sign)
|
|
1051
|
+
#{self}.envelope_signed(
|
|
1052
|
+
samples: 'optional - samples value consumed by #envelope_signed',
|
|
1053
|
+
window: 'optional - window value consumed by #envelope_signed'
|
|
1054
|
+
)
|
|
1055
|
+
|
|
1056
|
+
# Run fsk slice and return its result
|
|
1057
|
+
#{self}.fsk_slice(
|
|
1058
|
+
samples: 'required - samples value consumed by #fsk_slice',
|
|
1059
|
+
rate: 'required - sample rate (Hz)',
|
|
1060
|
+
baud: 'required - symbol rate',
|
|
1061
|
+
mark_hz: 'required - mark tone (bit=1)',
|
|
1062
|
+
space_hz: 'required - space tone (bit=0)'
|
|
1063
|
+
)
|
|
1064
|
+
|
|
1065
|
+
# Run find sync and return its result
|
|
1066
|
+
#{self}.find_sync(
|
|
1067
|
+
bits: 'required - bits value consumed by #find_sync',
|
|
1068
|
+
pattern: 'required - Array<0|1> or Integer (MSB-first)',
|
|
1069
|
+
width: 'optional - bit-width when pattern is Integer',
|
|
1070
|
+
max_err: 'optional - allowed bit errors (default 0)',
|
|
1071
|
+
from: 'optional - start index (default 0)'
|
|
1072
|
+
)
|
|
1073
|
+
|
|
1074
|
+
# Run bits to int and return its result
|
|
1075
|
+
#{self}.bits_to_int(
|
|
1076
|
+
bits: 'optional - bits value consumed by #bits_to_int'
|
|
1077
|
+
)
|
|
1078
|
+
|
|
1079
|
+
# Run even parity ok and return its result
|
|
1080
|
+
#{self}.even_parity_ok?(
|
|
1081
|
+
word: 'optional - word value consumed by #even_parity_ok?',
|
|
1082
|
+
width: 'optional - cyclic de Bruijn sequence width in bytes'
|
|
1083
|
+
)
|
|
1084
|
+
|
|
1085
|
+
# BCH(31,21) syndrome — generator poly 0b11101101001 (0x769)
|
|
1086
|
+
#{self}.bch_31_21_syndrome(
|
|
1087
|
+
word: 'optional - word value consumed by #bch_31_21_syndrome'
|
|
1088
|
+
)
|
|
1089
|
+
|
|
1090
|
+
# Run baudot decode and return its result
|
|
1091
|
+
#{self}.baudot_decode(
|
|
1092
|
+
bits: 'optional - bits value consumed by #baudot_decode'
|
|
1093
|
+
)
|
|
1094
|
+
|
|
1095
|
+
# Run rms dbfs and return its result
|
|
1096
|
+
#{self}.rms_dbfs(
|
|
1097
|
+
samples: 'required - samples value consumed by #rms_dbfs'
|
|
1098
|
+
)
|
|
1099
|
+
|
|
1100
|
+
# ── True-air I/Q primitives (used by Base.run_iq) ─────────────────
|
|
1101
|
+
#{self}.unpack_cs16le(
|
|
1102
|
+
data: 'required - raw String of interleaved little-endian s16 I/Q'
|
|
1103
|
+
)
|
|
1104
|
+
|
|
1105
|
+
# Run unpack cu8 and return its result
|
|
1106
|
+
#{self}.unpack_cu8(
|
|
1107
|
+
data: 'required - raw String of interleaved u8 I/Q (RTL-SDR)'
|
|
1108
|
+
)
|
|
1109
|
+
|
|
1110
|
+
# Run mag sq and return its result
|
|
1111
|
+
#{self}.mag_sq(
|
|
1112
|
+
iq: 'required - interleaved Array<Float> [I0,Q0,I1,Q1,…]'
|
|
1113
|
+
)
|
|
1114
|
+
|
|
1115
|
+
# Run fm demod iq and return its result
|
|
1116
|
+
#{self}.fm_demod_iq(
|
|
1117
|
+
iq: 'required - interleaved Array<Float> [I0,Q0,…]',
|
|
1118
|
+
kf: 'optional - modulation index scale (default 1.0)'
|
|
1119
|
+
)
|
|
1120
|
+
|
|
1121
|
+
# Run iq rms dbfs and return its result
|
|
1122
|
+
#{self}.iq_rms_dbfs(
|
|
1123
|
+
iq: 'required - interleaved Array<Float> [I0,Q0,…]'
|
|
1124
|
+
)
|
|
1125
|
+
|
|
1126
|
+
# Correlate a real template against magnitude-squared energy for
|
|
1127
|
+
#{self}.correlate(
|
|
1128
|
+
samples: 'required - samples value consumed by #correlate',
|
|
1129
|
+
template: 'required - Array<Float> (same units)'
|
|
1130
|
+
)
|
|
1131
|
+
|
|
1132
|
+
# ── True-air I/Q chain (all Decoder::* modules) ──────────────────
|
|
1133
|
+
#{self}.resample_iq(
|
|
1134
|
+
iq: 'required - interleaved [I0,Q0,…] Array<Float>',
|
|
1135
|
+
src_rate: 'required - Hz, dst_rate: required - Hz',
|
|
1136
|
+
dst_rate: 'optional - dst rate value consumed by #resample_iq'
|
|
1137
|
+
)
|
|
1138
|
+
|
|
1139
|
+
# Run mix iq and return its result
|
|
1140
|
+
#{self}.mix_iq(
|
|
1141
|
+
iq: 'required - interleaved I/Q, rate: required - Hz',
|
|
1142
|
+
freq: 'required - offset Hz to shift DOWN by',
|
|
1143
|
+
rate: 'optional - rate value consumed by #mix_iq'
|
|
1144
|
+
)
|
|
1145
|
+
|
|
1146
|
+
# Run gfsk slice and return its result
|
|
1147
|
+
#{self}.gfsk_slice(
|
|
1148
|
+
iq: 'required - interleaved I/Q, rate:, baud:',
|
|
1149
|
+
bt: 'optional - Gaussian BT (default 0.35), invert: false',
|
|
1150
|
+
rate: 'optional - rate value consumed by #gfsk_slice',
|
|
1151
|
+
baud: 'optional - baud value consumed by #gfsk_slice',
|
|
1152
|
+
invert: 'optional - invert value consumed by #gfsk_slice'
|
|
1153
|
+
)
|
|
1154
|
+
|
|
1155
|
+
# Run slice 4fsk and return its result
|
|
1156
|
+
#{self}.slice_4fsk(
|
|
1157
|
+
samples: 'required - real FM-discriminator baseband',
|
|
1158
|
+
rate: 'optional - rate value consumed by #slice_4fsk',
|
|
1159
|
+
baud: 'optional - baud value consumed by #slice_4fsk'
|
|
1160
|
+
)
|
|
1161
|
+
|
|
1162
|
+
# Run manchester decode and return its result
|
|
1163
|
+
#{self}.manchester_decode(
|
|
1164
|
+
bits: 'required - Array<0|1> at 2×data rate',
|
|
1165
|
+
ieee: 'optional - true = 01→1 10→0 (IEEE 802.3), else 10→1 01→0'
|
|
1166
|
+
)
|
|
1167
|
+
|
|
1168
|
+
# Run diff decode and return its result
|
|
1169
|
+
#{self}.diff_decode(
|
|
1170
|
+
bits: 'optional - bits value consumed by #diff_decode'
|
|
1171
|
+
)
|
|
1172
|
+
|
|
1173
|
+
# Run bytes from bits and return its result
|
|
1174
|
+
#{self}.bytes_from_bits(
|
|
1175
|
+
bits: 'optional - Array<0|1>, lsb_first: false',
|
|
1176
|
+
lsb_first: 'optional - lsb first value consumed by #bytes_from_bits'
|
|
1177
|
+
)
|
|
1178
|
+
|
|
1179
|
+
# Run crc16 and return its result
|
|
1180
|
+
#{self}.crc16(
|
|
1181
|
+
bytes: 'optional - Array<Integer>, poly: 0x1021, init: 0xFFFF',
|
|
1182
|
+
refin: 'optional - false, refout: false, xorout: 0x0000',
|
|
1183
|
+
poly: 'optional - poly value consumed by #crc16',
|
|
1184
|
+
init: 'optional - init value consumed by #crc16',
|
|
1185
|
+
refout: 'optional - refout value consumed by #crc16',
|
|
1186
|
+
xorout: 'optional - xorout value consumed by #crc16'
|
|
1187
|
+
)
|
|
1188
|
+
|
|
1189
|
+
# Run whiten lfsr and return its result
|
|
1190
|
+
#{self}.whiten_lfsr(
|
|
1191
|
+
bytes: 'optional - Array<Integer>, poly: Integer, init: Integer, width: 7',
|
|
1192
|
+
poly: 'optional - poly value consumed by #whiten_lfsr',
|
|
1193
|
+
init: 'optional - init value consumed by #whiten_lfsr',
|
|
1194
|
+
width: 'optional - cyclic de Bruijn sequence width in bytes'
|
|
1195
|
+
)
|
|
1196
|
+
|
|
1197
|
+
# Run ook pulses and return its result
|
|
1198
|
+
#{self}.ook_pulses(
|
|
1199
|
+
iq: 'required - interleaved I/Q, rate:',
|
|
1200
|
+
min_us: 'optional - drop shorter pulses (default 20)',
|
|
1201
|
+
rate: 'optional - rate value consumed by #ook_pulses'
|
|
1202
|
+
)
|
|
1203
|
+
|
|
1204
|
+
# Run cfft mag and return its result
|
|
1205
|
+
#{self}.cfft_mag(
|
|
1206
|
+
iq: 'required - interleaved I/Q, n: optional - FFT size',
|
|
1207
|
+
shift: 'optional - fftshift so DC is centred (default true)',
|
|
1208
|
+
n: 'optional - count, width, or size'
|
|
1209
|
+
)
|
|
1210
|
+
|
|
1211
|
+
# Naive O(n²) complex DFT — pure-Ruby fallback for small n
|
|
1212
|
+
#{self}.dft_naive(
|
|
1213
|
+
iq: 'optional - iq value consumed by #dft_naive',
|
|
1214
|
+
n: 'optional - count, width, or size'
|
|
1215
|
+
)
|
|
1216
|
+
|
|
1217
|
+
# Run zadoff chu and return its result
|
|
1218
|
+
#{self}.zadoff_chu(
|
|
1219
|
+
root: 'optional - root value consumed by #zadoff_chu',
|
|
1220
|
+
n: 'optional - count, width, or size'
|
|
1221
|
+
)
|
|
1222
|
+
|
|
1223
|
+
# Run ca code and return its result
|
|
1224
|
+
#{self}.ca_code(
|
|
1225
|
+
prn: 'required - prn value consumed by #ca_code'
|
|
1226
|
+
)
|
|
1227
|
+
|
|
1228
|
+
# Run cmul and return its result
|
|
1229
|
+
#{self}.cmul(
|
|
1230
|
+
a: 'optional - a value consumed by #cmul',
|
|
1231
|
+
b: 'optional - b value consumed by #cmul',
|
|
1232
|
+
conj_b: 'optional - conj b value consumed by #cmul'
|
|
1233
|
+
)
|
|
1234
|
+
|
|
1235
|
+
# Print the AUTHOR(S) string for this module.
|
|
1047
1236
|
#{self}.authors
|
|
1048
1237
|
"
|
|
1238
|
+
constants.sort
|
|
1049
1239
|
end
|
|
1050
1240
|
end
|
|
1051
1241
|
end
|
data/lib/pwn/sdr/decoder/flex.rb
CHANGED
|
@@ -473,24 +473,72 @@ module PWN
|
|
|
473
473
|
# Display Usage for this Module
|
|
474
474
|
|
|
475
475
|
public_class_method def self.help
|
|
476
|
-
puts "USAGE
|
|
477
|
-
#
|
|
478
|
-
|
|
476
|
+
puts "USAGE:
|
|
477
|
+
# Run sync check and return its result
|
|
478
|
+
#{self}.sync_check(
|
|
479
|
+
buf: 'optional - buf value consumed by #sync_check'
|
|
479
480
|
)
|
|
480
481
|
|
|
481
|
-
|
|
482
|
-
|
|
482
|
+
# Run popcnt and return its result
|
|
483
|
+
#{self}.popcnt(
|
|
484
|
+
val: 'optional - val value consumed by #popcnt'
|
|
485
|
+
)
|
|
483
486
|
|
|
484
|
-
#
|
|
485
|
-
#{self}.
|
|
486
|
-
|
|
487
|
+
# Run even parity and return its result
|
|
488
|
+
#{self}.even_parity?(
|
|
489
|
+
word: 'optional - word value consumed by #even_parity?'
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
# Run bch syn and return its result
|
|
493
|
+
#{self}.bch_syn(
|
|
494
|
+
word: 'optional - word value consumed by #bch_syn'
|
|
495
|
+
)
|
|
496
|
+
|
|
497
|
+
# Run bch fix and return its result
|
|
498
|
+
#{self}.bch_fix(
|
|
499
|
+
word: 'optional - word value consumed by #bch_fix'
|
|
500
|
+
)
|
|
501
|
+
|
|
502
|
+
# ) { |msg| ... }
|
|
503
|
+
#{self}.emit_phase(
|
|
504
|
+
words: 'optional - phase:, cycle:, frame:, mode:, sync_cw: (defaults to [])',
|
|
505
|
+
phase: 'optional - phase value consumed by #emit_phase',
|
|
506
|
+
cycle: 'optional - cycle value consumed by #emit_phase',
|
|
507
|
+
frame: 'optional - frame value consumed by #emit_phase',
|
|
508
|
+
mode: 'optional - mode value consumed by #emit_phase'
|
|
509
|
+
)
|
|
487
510
|
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
511
|
+
# Run alpha decode and return its result
|
|
512
|
+
#{self}.alpha_decode(
|
|
513
|
+
words: 'optional - words value consumed by #alpha_decode (defaults to [])',
|
|
514
|
+
mw1: 'optional - mw1 value consumed by #alpha_decode',
|
|
515
|
+
mw2: 'optional - mw2 value consumed by #alpha_decode'
|
|
516
|
+
)
|
|
517
|
+
|
|
518
|
+
# Run numeric decode and return its result
|
|
519
|
+
#{self}.numeric_decode(
|
|
520
|
+
words: 'optional - words value consumed by #numeric_decode (defaults to [])',
|
|
521
|
+
mw1: 'optional - mw1 value consumed by #numeric_decode',
|
|
522
|
+
mw2: 'optional - mw2 value consumed by #numeric_decode'
|
|
523
|
+
)
|
|
524
|
+
|
|
525
|
+
# Run hex decode and return its result
|
|
526
|
+
#{self}.hex_decode(
|
|
527
|
+
words: 'optional - words value consumed by #hex_decode (defaults to [])'
|
|
528
|
+
)
|
|
529
|
+
|
|
530
|
+
# Run decode and return its result
|
|
531
|
+
#{self}.decode(
|
|
532
|
+
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
533
|
+
source: 'optional - source value consumed by #decode',
|
|
534
|
+
file: 'optional - filesystem path',
|
|
535
|
+
sample_rate: 'optional - sample rate value consumed by #decode'
|
|
536
|
+
)
|
|
491
537
|
|
|
538
|
+
# Print the AUTHOR(S) string for this module.
|
|
492
539
|
#{self}.authors
|
|
493
540
|
"
|
|
541
|
+
constants.sort
|
|
494
542
|
end
|
|
495
543
|
end
|
|
496
544
|
end
|
data/lib/pwn/sdr/decoder/gps.rb
CHANGED
|
@@ -140,15 +140,24 @@ module PWN
|
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
public_class_method def self.help
|
|
143
|
-
puts "USAGE
|
|
143
|
+
puts "USAGE:
|
|
144
|
+
# Run decode and return its result
|
|
144
145
|
#{self}.decode(
|
|
145
146
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
146
|
-
|
|
147
|
-
|
|
147
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
148
|
+
source: 'optional - source value consumed by #decode',
|
|
149
|
+
file: 'optional - filesystem path'
|
|
148
150
|
)
|
|
149
151
|
|
|
152
|
+
# Run parse line and return its result
|
|
153
|
+
#{self}.parse_line(
|
|
154
|
+
line: 'optional - line value consumed by #parse_line'
|
|
155
|
+
)
|
|
156
|
+
|
|
157
|
+
# Print the AUTHOR(S) string for this module.
|
|
150
158
|
#{self}.authors
|
|
151
159
|
"
|
|
160
|
+
constants.sort
|
|
152
161
|
end
|
|
153
162
|
end
|
|
154
163
|
end
|
data/lib/pwn/sdr/decoder/gsm.rb
CHANGED
|
@@ -229,17 +229,37 @@ module PWN
|
|
|
229
229
|
end
|
|
230
230
|
|
|
231
231
|
public_class_method def self.help
|
|
232
|
-
puts "USAGE
|
|
232
|
+
puts "USAGE:
|
|
233
|
+
# Run viterbi decode and return its result
|
|
234
|
+
#{self}.viterbi_decode(
|
|
235
|
+
bits: 'required - Array<0|1> soft/hard coded bits (rate-1/2)',
|
|
236
|
+
k: 'optional - 5, g0: 0o23, g1: 0o33',
|
|
237
|
+
g0: 'optional - g0 value consumed by #viterbi_decode',
|
|
238
|
+
g1: 'optional - g1 value consumed by #viterbi_decode'
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
# Run parity and return its result
|
|
242
|
+
#{self}.parity(
|
|
243
|
+
parity: 'optional - parity value consumed by #parity'
|
|
244
|
+
)
|
|
245
|
+
|
|
246
|
+
# Run decode and return its result
|
|
233
247
|
#{self}.decode(
|
|
234
248
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
235
|
-
|
|
236
|
-
|
|
249
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
250
|
+
source: 'optional - source value consumed by #decode',
|
|
251
|
+
file: 'optional - filesystem path'
|
|
237
252
|
)
|
|
238
253
|
|
|
239
|
-
#
|
|
254
|
+
# Run parse line and return its result
|
|
255
|
+
#{self}.parse_line(
|
|
256
|
+
line: 'optional - line value consumed by #parse_line'
|
|
257
|
+
)
|
|
240
258
|
|
|
259
|
+
# Print the AUTHOR(S) string for this module.
|
|
241
260
|
#{self}.authors
|
|
242
261
|
"
|
|
262
|
+
constants.sort
|
|
243
263
|
end
|
|
244
264
|
end
|
|
245
265
|
end
|
|
@@ -112,15 +112,24 @@ module PWN
|
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
public_class_method def self.help
|
|
115
|
-
puts "USAGE
|
|
115
|
+
puts "USAGE:
|
|
116
|
+
# Run decode and return its result
|
|
116
117
|
#{self}.decode(
|
|
117
118
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
118
|
-
|
|
119
|
-
|
|
119
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
120
|
+
source: 'optional - source value consumed by #decode',
|
|
121
|
+
file: 'optional - filesystem path'
|
|
120
122
|
)
|
|
121
123
|
|
|
124
|
+
# Run parse line and return its result
|
|
125
|
+
#{self}.parse_line(
|
|
126
|
+
line: 'optional - line value consumed by #parse_line'
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
# Print the AUTHOR(S) string for this module.
|
|
122
130
|
#{self}.authors
|
|
123
131
|
"
|
|
132
|
+
constants.sort
|
|
124
133
|
end
|
|
125
134
|
end
|
|
126
135
|
end
|