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/plugins/tor.rb
CHANGED
|
@@ -248,25 +248,30 @@ module PWN
|
|
|
248
248
|
|
|
249
249
|
public_class_method def self.help
|
|
250
250
|
puts "USAGE:
|
|
251
|
-
|
|
251
|
+
# Run start and return its result
|
|
252
|
+
#{self}.start(
|
|
252
253
|
ip: 'optional - IP address to listen (default: 127.0.0.1)',
|
|
253
|
-
port: 'optional - socks port to listen (default:
|
|
254
|
-
ctrl_port: 'optional - tor control port to listen (default:
|
|
255
|
-
net: 'optional - CIDR notation to accept connections (default: 127.0.0.1/32)',
|
|
254
|
+
port: 'optional - socks port to listen (default: 1024-65535)',
|
|
255
|
+
ctrl_port: 'optional - tor control port to listen (default: 1024-65535)',
|
|
256
|
+
net: 'optional - CIDR notation to accept connections (default: 127.0.0.0.1/32)',
|
|
256
257
|
data_dir: 'optional - directory to keep tor session data (default: /tmp/tor_pwn-TIMESTAMP)'
|
|
257
258
|
)
|
|
258
259
|
|
|
260
|
+
# Run switch exit node and return its result
|
|
259
261
|
#{self}.switch_exit_node(
|
|
260
262
|
tor_obj: 'required - tor_obj returned from #start method',
|
|
261
263
|
response_timeout: 'optional - float in seconds to timeout (default: 3.0)'
|
|
262
264
|
)
|
|
263
265
|
|
|
266
|
+
# Run stop and return its result
|
|
264
267
|
#{self}.stop(
|
|
265
268
|
tor_obj: 'required - tor_obj returned from #start method'
|
|
266
269
|
)
|
|
267
270
|
|
|
271
|
+
# Print the AUTHOR(S) string for this module.
|
|
268
272
|
#{self}.authors
|
|
269
273
|
"
|
|
274
|
+
constants.sort
|
|
270
275
|
end
|
|
271
276
|
end
|
|
272
277
|
end
|
|
@@ -1561,188 +1561,143 @@ module PWN
|
|
|
1561
1561
|
|
|
1562
1562
|
public_class_method def self.help
|
|
1563
1563
|
puts "USAGE:
|
|
1564
|
-
|
|
1564
|
+
# Open a session or connection and return a handle.
|
|
1565
|
+
#{self}.open(
|
|
1565
1566
|
browser_type: 'optional - :firefox|:chrome|:headless|:rest|:websocket (defaults to :chrome)',
|
|
1566
|
-
proxy: 'optional scheme://proxy_host:port || tor (defaults to nil)',
|
|
1567
|
+
proxy: 'optional - scheme://proxy_host:port || tor (defaults to nil)',
|
|
1567
1568
|
devtools: 'optional - boolean (defaults to false)'
|
|
1568
1569
|
)
|
|
1569
|
-
browser = browser_obj1[:browser]
|
|
1570
|
-
puts browser.public_methods
|
|
1571
|
-
|
|
1572
|
-
********************************************************
|
|
1573
|
-
* DevTools Interaction
|
|
1574
|
-
* All DevTools Commands can be found here:
|
|
1575
|
-
* https://chromedevtools.github.io/devtools-protocol/
|
|
1576
|
-
* Examples
|
|
1577
|
-
devtools = browser_obj1[:devtools]
|
|
1578
|
-
puts devtools.public_methods
|
|
1579
|
-
puts devtools.instance_variables
|
|
1580
|
-
puts devtools.instance_variable_get('@session_id')
|
|
1581
|
-
|
|
1582
|
-
websocket = devtools.instance_variable_get('@ws')
|
|
1583
|
-
puts websocket.public_methods
|
|
1584
|
-
puts websocket.instance_variables
|
|
1585
|
-
puts websocket.instance_variable_get('@messages')
|
|
1586
|
-
|
|
1587
|
-
* Tracing
|
|
1588
|
-
devtools.send_cmd('Tracing.start')
|
|
1589
|
-
devtools.send_cmd('Tracing.requestMemoryDump')
|
|
1590
|
-
devtools.send_cmd('Tracing.end')
|
|
1591
|
-
puts devtools.instance_variable_get('@messages')
|
|
1592
|
-
|
|
1593
|
-
* Network
|
|
1594
|
-
devtools.send_cmd('Network.enable')
|
|
1595
|
-
last_ws_resp = devtools.instance_variable_get('@messages').last if devtools.instance_variable_get('@messages').last['method'] == 'Network.webSocketFrameReceived'
|
|
1596
|
-
puts last_ws_resp
|
|
1597
|
-
devtools.send_cmd('Network.disable')
|
|
1598
|
-
|
|
1599
|
-
* Debugging DOM and Sending JavaScript to Console
|
|
1600
|
-
devtools.send_cmd('Runtime.enable')
|
|
1601
|
-
devtools.send_cmd('Console.enable')
|
|
1602
|
-
devtools.send_cmd('DOM.enable')
|
|
1603
|
-
devtools.send_cmd('Page.enable')
|
|
1604
|
-
devtools.send_cmd('Log.enable')
|
|
1605
|
-
devtools.send_cmd('Debugger.enable')
|
|
1606
|
-
devtools.send_cmd('Debugger.pause')
|
|
1607
|
-
step = 1
|
|
1608
|
-
next_step = 60
|
|
1609
|
-
loop do
|
|
1610
|
-
devtools.send_cmd('Console.clearMessages')
|
|
1611
|
-
devtools.send_cmd('Log.clear')
|
|
1612
|
-
console_events = []
|
|
1613
|
-
browser.driver.on_log_event(:console) { |event| console_events.push(event) }
|
|
1614
|
-
|
|
1615
|
-
devtools.send_cmd('Debugger.stepInto')
|
|
1616
|
-
puts \"Step: \#{step}\"
|
|
1617
|
-
|
|
1618
|
-
this_document = devtools.send_cmd('DOM.getDocument')
|
|
1619
|
-
puts \"This #document:\\n\#{this_document}\\n\\n\\n\"
|
|
1620
|
-
|
|
1621
|
-
console_cmd = {
|
|
1622
|
-
expression: 'for(var pop_var in window) { if (window.hasOwnProperty(pop_var) && window[pop_var] != null) console.log(pop_var + \" = \" + window[pop_var]); }'
|
|
1623
|
-
}
|
|
1624
|
-
puts devtools.send_cmd('Runtime.evaluate', **console_cmd)
|
|
1625
|
-
|
|
1626
|
-
print '-' * 180
|
|
1627
|
-
print \"\\n\"
|
|
1628
|
-
console_events.each do |event|
|
|
1629
|
-
puts event.args
|
|
1630
|
-
end
|
|
1631
|
-
puts \"Console Response Length: \#{console_events.length}\"
|
|
1632
|
-
console_events_digest = OpenSSL::Digest::SHA256.hexdigest(
|
|
1633
|
-
console_events.inspect
|
|
1634
|
-
)
|
|
1635
|
-
puts \"Console Events Array SHA256 Digest: \#{console_events_digest}\"
|
|
1636
|
-
print '-' * 180
|
|
1637
|
-
puts \"\\n\\n\\n\"
|
|
1638
|
-
|
|
1639
|
-
print \"Next Step in \"
|
|
1640
|
-
next_step.downto(1) {|n| print \"\#{n} \"; sleep 1 }
|
|
1641
|
-
puts 'READY!'
|
|
1642
|
-
step += 1
|
|
1643
|
-
end
|
|
1644
|
-
|
|
1645
|
-
devtools.send_cmd('Debugger.disable')
|
|
1646
|
-
devtools.send_cmd('Log.disable')
|
|
1647
|
-
devtools.send_cmd('Page.disable')
|
|
1648
|
-
devtools.send_cmd('DOM.disable')
|
|
1649
|
-
devtools.send_cmd('Console.disable')
|
|
1650
|
-
devtools.send_cmd('Runtime.disable')
|
|
1651
|
-
* End of DevTools Examples
|
|
1652
|
-
********************************************************
|
|
1653
1570
|
|
|
1654
|
-
|
|
1655
|
-
|
|
1571
|
+
# Run dump links and return its result
|
|
1572
|
+
#{self}.dump_links(
|
|
1573
|
+
browser_obj: 'optional - browser object returned from #open'
|
|
1656
1574
|
)
|
|
1657
1575
|
|
|
1658
|
-
|
|
1659
|
-
|
|
1576
|
+
# Run find elements by text and return its result
|
|
1577
|
+
#{self}.find_elements_by_text(
|
|
1578
|
+
browser_obj: 'optional - browser object returned from #open',
|
|
1660
1579
|
text: 'required - text to search for in the DOM'
|
|
1661
1580
|
)
|
|
1662
1581
|
|
|
1582
|
+
# Run type as human and return its result
|
|
1663
1583
|
#{self}.type_as_human(
|
|
1664
1584
|
string: 'required - string to type as human',
|
|
1665
1585
|
rand_sleep_float: 'optional - float timing in between keypress (defaults to 0.09)'
|
|
1666
|
-
)
|
|
1586
|
+
)
|
|
1667
1587
|
|
|
1668
|
-
|
|
1669
|
-
|
|
1588
|
+
# Run console and return its result
|
|
1589
|
+
#{self}.console(
|
|
1590
|
+
browser_obj: 'optional - browser object returned from #open',
|
|
1670
1591
|
js: 'required - JavaScript expression to evaluate',
|
|
1671
1592
|
return_to: 'optional - return to :console or :stdout (defaults to :console)'
|
|
1672
1593
|
)
|
|
1673
1594
|
|
|
1674
|
-
|
|
1675
|
-
|
|
1595
|
+
# Run view dom mutations and return its result
|
|
1596
|
+
#{self}.view_dom_mutations(
|
|
1597
|
+
browser_obj: 'required - browser_obj returned from #open method',
|
|
1676
1598
|
index: 'optional - index of tab to switch to (defaults to active tab)',
|
|
1677
|
-
target: 'optional - target JavaScript node to observe (defaults to document.body)'
|
|
1599
|
+
target: 'optional - target JavaScript node to observe (defaults to document.body)',
|
|
1600
|
+
observe_clobbering: 'optional - boolean to enable DOM Clobbering detection (defaults to true)',
|
|
1601
|
+
observe_redirects: 'optional - boolean to enable Insecure Redirect detection (defaults to true)',
|
|
1602
|
+
observe_resources: 'optional - boolean to enable resource load monitoring (defaults to true)'
|
|
1678
1603
|
)
|
|
1679
1604
|
|
|
1680
|
-
|
|
1681
|
-
|
|
1605
|
+
# Run hide dom mutations and return its result
|
|
1606
|
+
#{self}.hide_dom_mutations(
|
|
1607
|
+
browser_obj: 'optional - browser object returned from #open',
|
|
1682
1608
|
index: 'optional - index of tab to switch to (defaults to active tab)'
|
|
1683
1609
|
)
|
|
1684
1610
|
|
|
1611
|
+
# Run update about config and return its result
|
|
1685
1612
|
#{self}.update_about_config(
|
|
1686
|
-
browser_obj: '
|
|
1613
|
+
browser_obj: 'optional - browser object returned from #open',
|
|
1687
1614
|
key: 'required - key to update in about:config',
|
|
1688
1615
|
value: 'required - value to set for key in about:config'
|
|
1689
1616
|
)
|
|
1690
1617
|
|
|
1691
|
-
tabs
|
|
1618
|
+
# Run list tabs and return its result
|
|
1619
|
+
#{self}.list_tabs(
|
|
1692
1620
|
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1693
1621
|
)
|
|
1694
1622
|
|
|
1695
|
-
tab
|
|
1623
|
+
# Run jmp tab and return its result
|
|
1624
|
+
#{self}.jmp_tab(
|
|
1696
1625
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1697
1626
|
index: 'optional - index of tab to switch to (defaults to switching to next tab)',
|
|
1698
|
-
keyword: 'optional - keyword in title or url used to switch tabs (defaults to switching to next tab)'
|
|
1627
|
+
keyword: 'optional - keyword in title or url used to switch tabs (defaults to switching to next tab)'
|
|
1699
1628
|
)
|
|
1700
1629
|
|
|
1701
|
-
tab
|
|
1630
|
+
# Run new tab and return its result
|
|
1631
|
+
#{self}.new_tab(
|
|
1702
1632
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1703
1633
|
url: 'optional - URL to open in new tab'
|
|
1704
1634
|
)
|
|
1705
1635
|
|
|
1706
|
-
tab
|
|
1636
|
+
# Run close tab and return its result
|
|
1637
|
+
#{self}.close_tab(
|
|
1707
1638
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1708
1639
|
index: 'optional - index of tab to close (defaults to closing active tab)',
|
|
1709
1640
|
keyword: 'optional - keyword in title or url used to close tabs (defaults to closing active tab)'
|
|
1710
1641
|
)
|
|
1711
1642
|
|
|
1712
|
-
|
|
1643
|
+
# Run dom and return its result
|
|
1644
|
+
#{self}.dom(
|
|
1645
|
+
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1646
|
+
)
|
|
1647
|
+
|
|
1648
|
+
# Run get page state and return its result
|
|
1649
|
+
#{self}.get_page_state(
|
|
1713
1650
|
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1714
1651
|
)
|
|
1715
1652
|
|
|
1716
|
-
|
|
1653
|
+
# Run devtools websocket messages and return its result
|
|
1654
|
+
#{self}.devtools_websocket_messages(
|
|
1717
1655
|
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1718
1656
|
)
|
|
1719
1657
|
|
|
1658
|
+
# Run debugger and return its result
|
|
1720
1659
|
#{self}.debugger(
|
|
1721
1660
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1722
1661
|
action: 'optional - action to take :enable|:pause|:resume|:disable (Defaults to :enable)'
|
|
1723
1662
|
)
|
|
1724
1663
|
|
|
1664
|
+
# Run get targets and return its result
|
|
1665
|
+
#{self}.get_targets(
|
|
1666
|
+
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1667
|
+
)
|
|
1668
|
+
|
|
1669
|
+
# Run breakpoint locations and return its result
|
|
1670
|
+
#{self}.breakpoint_locations(
|
|
1671
|
+
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1672
|
+
)
|
|
1673
|
+
|
|
1674
|
+
# Run step and return its result
|
|
1725
1675
|
#{self}.step(
|
|
1726
1676
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1727
1677
|
action: 'optional - action to take :into|:out|:over (Defaults to :into)',
|
|
1728
1678
|
steps: 'optional - number of steps taken (Defaults to 1)'
|
|
1729
1679
|
)
|
|
1730
1680
|
|
|
1681
|
+
# Run toggle devtools and return its result
|
|
1731
1682
|
#{self}.toggle_devtools(
|
|
1732
1683
|
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1733
1684
|
)
|
|
1734
1685
|
|
|
1686
|
+
# Run jmp devtools panel and return its result
|
|
1735
1687
|
#{self}.jmp_devtools_panel(
|
|
1736
1688
|
browser_obj: 'required - browser_obj returned from #open method)',
|
|
1737
1689
|
panel: 'optional - panel to switch to :elements|:inspector|:console|:debugger|:sources|:network'
|
|
1738
1690
|
)
|
|
1739
1691
|
|
|
1740
|
-
|
|
1692
|
+
# Close a session previously returned by #open.
|
|
1693
|
+
#{self}.close(
|
|
1741
1694
|
browser_obj: 'required - browser_obj returned from #open method)'
|
|
1742
1695
|
)
|
|
1743
1696
|
|
|
1697
|
+
# Print the AUTHOR(S) string for this module.
|
|
1744
1698
|
#{self}.authors
|
|
1745
1699
|
"
|
|
1700
|
+
constants.sort
|
|
1746
1701
|
end
|
|
1747
1702
|
end
|
|
1748
1703
|
end
|
|
@@ -163,10 +163,24 @@ module PWN
|
|
|
163
163
|
|
|
164
164
|
public_class_method def self.help
|
|
165
165
|
puts "USAGE:
|
|
166
|
-
|
|
167
|
-
#{self}.
|
|
166
|
+
# Run start and return its result
|
|
167
|
+
#{self}.start(
|
|
168
|
+
format: 'optional - TTY::Spinner format (defaults to :dots)',
|
|
169
|
+
output: 'optional - IO to draw on (defaults to $stderr)'
|
|
170
|
+
)
|
|
171
|
+
|
|
172
|
+
# Run stop and return its result
|
|
173
|
+
#{self}.stop(
|
|
174
|
+
spin: 'optional - TTY::Spinner from #start (no-op if nil)'
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
# Run halt all and return its result
|
|
168
178
|
#{self}.halt_all!
|
|
179
|
+
|
|
180
|
+
# Print the AUTHOR(S) string for this module.
|
|
181
|
+
#{self}.authors
|
|
169
182
|
"
|
|
183
|
+
constants.sort
|
|
170
184
|
end
|
|
171
185
|
end
|
|
172
186
|
end
|
|
@@ -134,17 +134,21 @@ module PWN
|
|
|
134
134
|
|
|
135
135
|
public_class_method def self.help
|
|
136
136
|
puts "USAGE:
|
|
137
|
-
|
|
137
|
+
# Run app only login and return its result
|
|
138
|
+
#{self}.app_only_login(
|
|
138
139
|
consumer_key: 'required - consumer key for app-only authentication',
|
|
139
140
|
consumer_secret: 'optional - consumer secret (will prompt if nil)'
|
|
140
141
|
)
|
|
141
142
|
|
|
143
|
+
# Run app only logout and return its result
|
|
142
144
|
#{self}.app_only_logout(
|
|
143
|
-
bearer_token: 'required bearer_token returned from #app_only_login method'
|
|
145
|
+
bearer_token: 'required - required bearer_token returned from #app_only_login method'
|
|
144
146
|
)
|
|
145
147
|
|
|
148
|
+
# Print the AUTHOR(S) string for this module.
|
|
146
149
|
#{self}.authors
|
|
147
150
|
"
|
|
151
|
+
constants.sort
|
|
148
152
|
end
|
|
149
153
|
end
|
|
150
154
|
end
|
|
@@ -318,10 +318,13 @@ module PWN
|
|
|
318
318
|
|
|
319
319
|
public_class_method def self.help
|
|
320
320
|
puts "USAGE:
|
|
321
|
-
|
|
321
|
+
# Run list all known and return its result
|
|
322
|
+
#{self}.list_all_known
|
|
322
323
|
|
|
324
|
+
# Print the AUTHOR(S) string for this module.
|
|
323
325
|
#{self}.authors
|
|
324
326
|
"
|
|
327
|
+
constants.sort
|
|
325
328
|
end
|
|
326
329
|
end
|
|
327
330
|
end
|
data/lib/pwn/plugins/vault.rb
CHANGED
|
@@ -256,49 +256,58 @@ module PWN
|
|
|
256
256
|
|
|
257
257
|
public_class_method def self.help
|
|
258
258
|
puts "USAGE:
|
|
259
|
+
# Run refresh encryption secrets and return its result
|
|
259
260
|
#{self}.refresh_encryption_secrets(
|
|
260
261
|
file: 'required - file to encrypt with new key and iv',
|
|
261
262
|
key: 'required - key to decrypt',
|
|
262
263
|
iv: 'required - iv to decrypt'
|
|
263
264
|
)
|
|
264
265
|
|
|
266
|
+
# Run create and return its result
|
|
265
267
|
#{self}.create(
|
|
266
|
-
file: 'required - file to
|
|
268
|
+
file: 'required - encrypted file to create',
|
|
267
269
|
decryptor_file: 'optional - file to save the key && iv values'
|
|
268
270
|
)
|
|
269
271
|
|
|
272
|
+
# Run decrypt and return its result
|
|
270
273
|
#{self}.decrypt(
|
|
271
274
|
file: 'required - file to decrypt',
|
|
272
275
|
key: 'required - key to decrypt',
|
|
273
276
|
iv: 'required - iv to decrypt'
|
|
274
277
|
)
|
|
275
278
|
|
|
279
|
+
# Run dump and return its result
|
|
276
280
|
#{self}.dump(
|
|
277
281
|
file: 'required - file to dump',
|
|
278
282
|
key: 'required - key to decrypt',
|
|
279
283
|
iv: 'required - iv to decrypt',
|
|
280
|
-
|
|
284
|
+
yaml: 'optional - dump as parsed yaml hash (default: true)'
|
|
281
285
|
)
|
|
282
286
|
|
|
287
|
+
# Run edit and return its result
|
|
283
288
|
#{self}.edit(
|
|
284
289
|
file: 'required - file to edit',
|
|
285
290
|
key: 'required - key to decrypt',
|
|
286
291
|
iv: 'required - iv to decrypt',
|
|
287
|
-
editor: 'optional - editor to use (default:
|
|
292
|
+
editor: 'optional - editor to use (default: /usr/bin/vim)'
|
|
288
293
|
)
|
|
289
294
|
|
|
295
|
+
# Run encrypt and return its result
|
|
290
296
|
#{self}.encrypt(
|
|
291
297
|
file: 'required - file to encrypt',
|
|
292
298
|
key: 'required - key to decrypt',
|
|
293
299
|
iv: 'required - iv to decrypt'
|
|
294
300
|
)
|
|
295
301
|
|
|
302
|
+
# Run file encrypted and return its result
|
|
296
303
|
#{self}.file_encrypted?(
|
|
297
304
|
file: 'required - file to check if encrypted'
|
|
298
305
|
)
|
|
299
306
|
|
|
307
|
+
# Print the AUTHOR(S) string for this module.
|
|
300
308
|
#{self}.authors
|
|
301
309
|
"
|
|
310
|
+
constants.sort
|
|
302
311
|
end
|
|
303
312
|
end
|
|
304
313
|
end
|
data/lib/pwn/plugins/vin.rb
CHANGED
|
@@ -317,46 +317,58 @@ module PWN
|
|
|
317
317
|
# Display Usage for this Module
|
|
318
318
|
public_class_method def self.help
|
|
319
319
|
puts "USAGE:
|
|
320
|
-
manufacturers
|
|
320
|
+
# Run get all manufacturers and return its result
|
|
321
|
+
#{self}.get_all_manufacturers
|
|
321
322
|
|
|
322
|
-
makes
|
|
323
|
+
# Run get all makes and return its result
|
|
324
|
+
#{self}.get_all_makes
|
|
323
325
|
|
|
324
|
-
wmis
|
|
326
|
+
# Run get wmis for manufacturer and return its result
|
|
327
|
+
#{self}.get_wmis_for_manufacturer(
|
|
325
328
|
mfr: 'required - Mfr_CommonName returned from #get_all_manufacturers method'
|
|
326
329
|
)
|
|
327
330
|
|
|
328
|
-
|
|
329
|
-
|
|
331
|
+
# Run decode wmi and return its result
|
|
332
|
+
#{self}.decode_wmi(
|
|
333
|
+
wmi: 'required - WMI to decode (e.g. 1FD)'
|
|
330
334
|
)
|
|
331
335
|
|
|
332
|
-
|
|
336
|
+
# Run decode vin and return its result
|
|
337
|
+
#{self}.decode_vin(
|
|
333
338
|
vin: 'required - 17 character VIN to decode'
|
|
334
339
|
)
|
|
335
340
|
|
|
336
|
-
models
|
|
341
|
+
# Run get models for make and return its result
|
|
342
|
+
#{self}.get_models_for_make(
|
|
337
343
|
make: 'required - Make_Name returned from get_all_makes'
|
|
338
344
|
)
|
|
339
345
|
|
|
340
|
-
models
|
|
346
|
+
# Run get models for make year and return its result
|
|
347
|
+
#{self}.get_models_for_make_year(
|
|
341
348
|
make: 'required - Make_Name returned from get_all_makes',
|
|
342
349
|
year: 'optional - e.g. 2023 (defaults to current year)'
|
|
343
350
|
)
|
|
344
351
|
|
|
345
|
-
|
|
352
|
+
# Run get vehicle types for make and return its result
|
|
353
|
+
#{self}.get_vehicle_types_for_make(
|
|
346
354
|
make: 'required - Make_Name returned from get_all_makes'
|
|
347
355
|
)
|
|
348
356
|
|
|
349
|
-
details
|
|
357
|
+
# Run get manufacturer details and return its result
|
|
358
|
+
#{self}.get_manufacturer_details(
|
|
350
359
|
mfr: 'required - Mfr_Name returned from get_all_manufacturers'
|
|
351
360
|
)
|
|
352
361
|
|
|
353
|
-
vin
|
|
354
|
-
|
|
362
|
+
# Run generate vin and return its result
|
|
363
|
+
#{self}.generate_vin(
|
|
364
|
+
mfr: 'required - manufacturer name (i.e. Mfr_CommonName from #get_all_manufacturers)',
|
|
355
365
|
year: 'optional - year of the vehicle (defaults to current year)'
|
|
356
366
|
)
|
|
357
367
|
|
|
368
|
+
# Print the AUTHOR(S) string for this module.
|
|
358
369
|
#{self}.authors
|
|
359
370
|
"
|
|
371
|
+
constants.sort
|
|
360
372
|
end
|
|
361
373
|
end
|
|
362
374
|
end
|
data/lib/pwn/plugins/voice.rb
CHANGED
|
@@ -119,26 +119,31 @@ module PWN
|
|
|
119
119
|
|
|
120
120
|
public_class_method def self.help
|
|
121
121
|
puts "USAGE:
|
|
122
|
+
# Run mutate and return its result
|
|
122
123
|
#{self}.mutate(
|
|
123
124
|
sox_path: 'optional - path to sox application (defaults to /usr/bin/sox)',
|
|
124
125
|
pitch: 'optional - integer to alter voice input (defaults to -300)'
|
|
125
126
|
)
|
|
126
127
|
|
|
127
|
-
|
|
128
|
+
# Run speech to text and return its result
|
|
129
|
+
#{self}.speech_to_text(
|
|
128
130
|
audio_file_path: 'required - path to audio file',
|
|
129
131
|
whisper_path: 'optional - path to OpenAI whisper application (defaults to /usr/local/bin/whisper)',
|
|
130
132
|
model: 'optional - transcribe model to use (defaults to tiny)',
|
|
131
133
|
output_dir: 'optional - directory to output results (defaults to .)'
|
|
132
134
|
)
|
|
133
135
|
|
|
136
|
+
# Run text to speech and return its result
|
|
134
137
|
#{self}.text_to_speech(
|
|
135
138
|
text_path: 'required - path to text file to speak',
|
|
136
139
|
festival_path: 'optional - path to festival (defaults to /usr/bin/festival)',
|
|
137
|
-
voice: 'optional - voice to use (defaults to cmu_us_slt_arctic_hts)'
|
|
140
|
+
voice: 'optional - voice to use (defaults to cmu_us_slt_arctic_hts)'
|
|
138
141
|
)
|
|
139
142
|
|
|
143
|
+
# Print the AUTHOR(S) string for this module.
|
|
140
144
|
#{self}.authors
|
|
141
145
|
"
|
|
146
|
+
constants.sort
|
|
142
147
|
end
|
|
143
148
|
end
|
|
144
149
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'open3'
|
|
4
|
+
|
|
5
|
+
module PWN
|
|
6
|
+
module Plugins
|
|
7
|
+
# volatility3 wrapper.
|
|
8
|
+
module Volatility
|
|
9
|
+
public_class_method def self.required_bins
|
|
10
|
+
%w[vol]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
public_class_method def self.run(opts = {})
|
|
14
|
+
bin = %w[vol volatility3 vol3].find { |b| PWN::Plugins::PreflightChecker.bin?(name: b) }
|
|
15
|
+
raise PWN::Plugins::PreflightChecker::MissingBinary, 'ERROR: volatility3 (vol) missing' unless bin
|
|
16
|
+
|
|
17
|
+
memory = opts[:memory] || opts[:file]
|
|
18
|
+
plugin = opts[:plugin] || 'windows.pslist'
|
|
19
|
+
raise 'ERROR: memory is required' if memory.to_s.empty?
|
|
20
|
+
|
|
21
|
+
stdout, stderr, status = Open3.capture3(bin, '-f', memory.to_s, plugin.to_s)
|
|
22
|
+
{ stdout: stdout, stderr: stderr, exit: status.exitstatus }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
public_class_method def self.yara(opts = {})
|
|
26
|
+
PWN::Plugins::PreflightChecker.require_bin!(name: 'yara')
|
|
27
|
+
rules = opts[:rules] || opts[:rule]
|
|
28
|
+
target = opts[:memory] || opts[:file] || opts[:path]
|
|
29
|
+
raise 'ERROR: rules and memory/file are required' if rules.to_s.empty? || target.to_s.empty?
|
|
30
|
+
|
|
31
|
+
stdout, stderr, status = Open3.capture3('yara', rules.to_s, target.to_s)
|
|
32
|
+
{ stdout: stdout, stderr: stderr, exit: status.exitstatus }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
public_class_method def self.authors
|
|
36
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
public_class_method def self.help
|
|
40
|
+
puts "USAGE:
|
|
41
|
+
# List host binaries this module expects to be installed.
|
|
42
|
+
#{self}.required_bins
|
|
43
|
+
|
|
44
|
+
# Run run and return its result
|
|
45
|
+
#{self}.run(
|
|
46
|
+
memory: 'required - memory value consumed by #run (defaults to opts[:file])',
|
|
47
|
+
file: 'optional - filesystem path',
|
|
48
|
+
plugin: 'required - plugin value consumed by #run (defaults to windows.pslist)'
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
# Scan a memory image with a yara rules file.
|
|
52
|
+
#{self}.yara(
|
|
53
|
+
rules: 'required - path to a .yar rules file',
|
|
54
|
+
rule: 'optional - alias for rules',
|
|
55
|
+
memory: 'required - memory image path',
|
|
56
|
+
file: 'optional - alias for memory',
|
|
57
|
+
path: 'optional - alias for memory'
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
# Print the AUTHOR(S) string for this module.
|
|
61
|
+
#{self}.authors
|
|
62
|
+
"
|
|
63
|
+
constants.sort
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
data/lib/pwn/plugins/vsphere.rb
CHANGED
|
@@ -62,19 +62,23 @@ module PWN
|
|
|
62
62
|
|
|
63
63
|
public_class_method def self.help
|
|
64
64
|
puts "USAGE:
|
|
65
|
-
|
|
65
|
+
# Run login and return its result
|
|
66
|
+
#{self}.login(
|
|
66
67
|
host: 'required - vsphere host or ip',
|
|
67
|
-
username: 'required - username',
|
|
68
|
+
username: 'required - username value consumed by #login',
|
|
68
69
|
password: 'optional - password (will prompt if nil)',
|
|
69
|
-
insecure: 'optional - ignore ssl checks (defaults to false
|
|
70
|
+
insecure: 'optional - ignore ssl checks (defaults to false'
|
|
70
71
|
)
|
|
71
72
|
|
|
72
|
-
|
|
73
|
-
|
|
73
|
+
# Run logout and return its result
|
|
74
|
+
#{self}.logout(
|
|
75
|
+
vsphere_obj: 'required - required vsphere_obj returned from #login method'
|
|
74
76
|
)
|
|
75
77
|
|
|
78
|
+
# Print the AUTHOR(S) string for this module.
|
|
76
79
|
#{self}.authors
|
|
77
80
|
"
|
|
81
|
+
constants.sort
|
|
78
82
|
end
|
|
79
83
|
end
|
|
80
84
|
end
|