pwn 0.5.708 → 0.5.709
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/documentation/Installation.md +1 -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 +48 -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 +51 -0
- data/etc/default_skills/pwn/plugins/doctor/SKILL.md +57 -0
- data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +61 -0
- data/etc/default_skills/pwn/plugins/frida/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/gdb/SKILL.md +52 -0
- data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +52 -0
- data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/recon/SKILL.md +55 -0
- data/etc/default_skills/pwn/plugins/recon/references/urls.md +5 -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 +48 -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/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 +5 -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 +52 -0
- data/lib/pwn/plugins/android.rb +65 -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 +99 -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/doctor.rb +149 -0
- data/lib/pwn/plugins/ein.rb +3 -0
- data/lib/pwn/plugins/exploit_dev.rb +264 -0
- data/lib/pwn/plugins/file_fu.rb +11 -8
- data/lib/pwn/plugins/frida.rb +61 -0
- data/lib/pwn/plugins/fuzz.rb +9 -6
- data/lib/pwn/plugins/gdb.rb +95 -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 +109 -0
- data/lib/pwn/plugins/json_pathify.rb +9 -5
- 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 +57 -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/process_tube.rb +120 -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 +161 -0
- data/lib/pwn/plugins/repl.rb +122 -1
- data/lib/pwn/plugins/scannable_codes.rb +5 -1
- 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 +16 -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 +48 -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 +19 -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 +94 -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/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/doctor_spec.rb +23 -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/nuclei_spec.rb +13 -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/sqlmap_spec.rb +13 -0
- data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
- data/third_party/pwn_rdoc.jsonl +126 -5
- metadata +47 -3
- 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/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
|
data/lib/pwn/sdr/decoder/lora.rb
CHANGED
|
@@ -172,16 +172,25 @@ module PWN
|
|
|
172
172
|
end
|
|
173
173
|
|
|
174
174
|
public_class_method def self.help
|
|
175
|
-
puts "USAGE
|
|
175
|
+
puts "USAGE:
|
|
176
|
+
# Run decode and return its result
|
|
176
177
|
#{self}.decode(
|
|
177
178
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
179
|
+
bw: 'optional - bw value consumed by #decode',
|
|
180
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
181
|
+
source: 'optional - source value consumed by #decode',
|
|
182
|
+
file: 'optional - filesystem path'
|
|
181
183
|
)
|
|
182
184
|
|
|
185
|
+
# Run parse line and return its result
|
|
186
|
+
#{self}.parse_line(
|
|
187
|
+
line: 'optional - line value consumed by #parse_line'
|
|
188
|
+
)
|
|
189
|
+
|
|
190
|
+
# Print the AUTHOR(S) string for this module.
|
|
183
191
|
#{self}.authors
|
|
184
192
|
"
|
|
193
|
+
constants.sort
|
|
185
194
|
end
|
|
186
195
|
end
|
|
187
196
|
end
|
data/lib/pwn/sdr/decoder/lte.rb
CHANGED
|
@@ -236,15 +236,39 @@ module PWN
|
|
|
236
236
|
end
|
|
237
237
|
|
|
238
238
|
public_class_method def self.help
|
|
239
|
-
puts "USAGE
|
|
239
|
+
puts "USAGE:
|
|
240
|
+
# SSS helper: (m0, m1) pair for a given N_ID_1 per TS 36.211 §6.11.2
|
|
241
|
+
#{self}.sss_indices(
|
|
242
|
+
nid1: 'optional - nid1 value consumed by #sss_indices'
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
# Length-31 m-sequence x^5+x^2+1, cyclic-shifted by `shift`, as ±1
|
|
246
|
+
#{self}.mseq(
|
|
247
|
+
shift: 'optional - shift value consumed by #mseq'
|
|
248
|
+
)
|
|
249
|
+
|
|
250
|
+
# Scrambling sequence c0 (x^5+x^3+1) tied to N_ID_2, ±1
|
|
251
|
+
#{self}.cseq(
|
|
252
|
+
nid2: 'optional - nid2 value consumed by #cseq'
|
|
253
|
+
)
|
|
254
|
+
|
|
255
|
+
# Run decode and return its result
|
|
240
256
|
#{self}.decode(
|
|
241
257
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
242
|
-
|
|
243
|
-
|
|
258
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
259
|
+
source: 'optional - source value consumed by #decode',
|
|
260
|
+
file: 'optional - filesystem path'
|
|
261
|
+
)
|
|
262
|
+
|
|
263
|
+
# Run parse line and return its result
|
|
264
|
+
#{self}.parse_line(
|
|
265
|
+
line: 'optional - line value consumed by #parse_line'
|
|
244
266
|
)
|
|
245
267
|
|
|
268
|
+
# Print the AUTHOR(S) string for this module.
|
|
246
269
|
#{self}.authors
|
|
247
270
|
"
|
|
271
|
+
constants.sort
|
|
248
272
|
end
|
|
249
273
|
end
|
|
250
274
|
end
|
|
@@ -139,15 +139,24 @@ module PWN
|
|
|
139
139
|
# Display Usage for this Module
|
|
140
140
|
|
|
141
141
|
public_class_method def self.help
|
|
142
|
-
puts "USAGE
|
|
142
|
+
puts "USAGE:
|
|
143
|
+
# Run decode and return its result
|
|
143
144
|
#{self}.decode(
|
|
144
|
-
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
145
|
+
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
146
|
+
source: 'optional - source value consumed by #decode',
|
|
147
|
+
file: 'optional - filesystem path',
|
|
148
|
+
sample_rate: 'optional - sample rate value consumed by #decode'
|
|
145
149
|
)
|
|
146
150
|
|
|
147
|
-
#
|
|
151
|
+
# Run decode string and return its result
|
|
152
|
+
#{self}.decode_string(
|
|
153
|
+
pattern: 'optional - pattern value consumed by #decode_string'
|
|
154
|
+
)
|
|
148
155
|
|
|
156
|
+
# Print the AUTHOR(S) string for this module.
|
|
149
157
|
#{self}.authors
|
|
150
158
|
"
|
|
159
|
+
constants.sort
|
|
151
160
|
end
|
|
152
161
|
end
|
|
153
162
|
end
|
data/lib/pwn/sdr/decoder/p25.rb
CHANGED
|
@@ -133,15 +133,24 @@ module PWN
|
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
public_class_method def self.help
|
|
136
|
-
puts "USAGE
|
|
136
|
+
puts "USAGE:
|
|
137
|
+
# Run decode and return its result
|
|
137
138
|
#{self}.decode(
|
|
138
139
|
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
139
|
-
|
|
140
|
-
|
|
140
|
+
sample_rate: 'optional - sample rate value consumed by #decode',
|
|
141
|
+
source: 'optional - source value consumed by #decode',
|
|
142
|
+
file: 'optional - filesystem path'
|
|
141
143
|
)
|
|
142
144
|
|
|
145
|
+
# Run parse line and return its result
|
|
146
|
+
#{self}.parse_line(
|
|
147
|
+
line: 'optional - line value consumed by #parse_line'
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
# Print the AUTHOR(S) string for this module.
|
|
143
151
|
#{self}.authors
|
|
144
152
|
"
|
|
153
|
+
constants.sort
|
|
145
154
|
end
|
|
146
155
|
end
|
|
147
156
|
end
|
|
@@ -61,16 +61,19 @@ module PWN
|
|
|
61
61
|
# Display Usage for this Module
|
|
62
62
|
|
|
63
63
|
public_class_method def self.help
|
|
64
|
-
puts "USAGE
|
|
64
|
+
puts "USAGE:
|
|
65
|
+
# Run decode and return its result
|
|
65
66
|
#{self}.decode(
|
|
66
|
-
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq'
|
|
67
|
+
freq_obj: 'required - freq_obj returned from PWN::SDR::GQRX.init_freq',
|
|
68
|
+
source: 'optional - source value consumed by #decode',
|
|
69
|
+
file: 'optional - filesystem path',
|
|
70
|
+
sample_rate: 'optional - sample rate value consumed by #decode'
|
|
67
71
|
)
|
|
68
72
|
|
|
69
|
-
|
|
70
|
-
demodulators in parallel on the same GQRX NBFM audio tap.
|
|
71
|
-
|
|
73
|
+
# Print the AUTHOR(S) string for this module.
|
|
72
74
|
#{self}.authors
|
|
73
75
|
"
|
|
76
|
+
constants.sort
|
|
74
77
|
end
|
|
75
78
|
end
|
|
76
79
|
end
|