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/plugins/android.rb
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require 'yaml'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
require 'tmpdir'
|
|
4
6
|
module PWN
|
|
5
7
|
module Plugins
|
|
6
8
|
# PWN module used to interact w/ Android Devices
|
|
@@ -1275,6 +1277,27 @@ module PWN
|
|
|
1275
1277
|
raise e
|
|
1276
1278
|
end
|
|
1277
1279
|
|
|
1280
|
+
public_class_method def self.apk_pipeline(opts = {})
|
|
1281
|
+
apk = opts[:apk].to_s
|
|
1282
|
+
raise 'ERROR: apk is required' if apk.empty?
|
|
1283
|
+
|
|
1284
|
+
out = opts[:out_dir] || File.join(Dir.tmpdir, "pwn-apk-#{Process.pid}")
|
|
1285
|
+
FileUtils.mkdir_p(out)
|
|
1286
|
+
decoded = File.join(out, 'apktool')
|
|
1287
|
+
jadx_out = File.join(out, 'jadx')
|
|
1288
|
+
steps = []
|
|
1289
|
+
if PWN::Plugins::Doctor.bin?(name: 'apktool')
|
|
1290
|
+
system('apktool', 'd', '-f', '-o', decoded, apk)
|
|
1291
|
+
steps << :apktool
|
|
1292
|
+
end
|
|
1293
|
+
if PWN::Plugins::Doctor.bin?(name: 'jadx')
|
|
1294
|
+
FileUtils.mkdir_p(jadx_out)
|
|
1295
|
+
system('jadx', '-d', jadx_out, apk)
|
|
1296
|
+
steps << :jadx
|
|
1297
|
+
end
|
|
1298
|
+
{ out_dir: out, steps: steps, apk: apk }
|
|
1299
|
+
end
|
|
1300
|
+
|
|
1278
1301
|
# Author(s):: 0day Inc. <support@0dayinc.com>
|
|
1279
1302
|
|
|
1280
1303
|
public_class_method def self.authors
|
|
@@ -1287,330 +1310,127 @@ module PWN
|
|
|
1287
1310
|
|
|
1288
1311
|
public_class_method def self.help
|
|
1289
1312
|
puts "USAGE:
|
|
1290
|
-
|
|
1313
|
+
# Run adb net connect and return its result
|
|
1291
1314
|
#{self}.adb_net_connect(
|
|
1292
1315
|
adb_path: 'required - path to adb binary',
|
|
1293
1316
|
target: 'required - target host or IP to connect',
|
|
1294
1317
|
port: 'optional - defaults to tcp 5555'
|
|
1295
1318
|
)
|
|
1296
1319
|
|
|
1297
|
-
|
|
1320
|
+
# Run adb sh and return its result
|
|
1321
|
+
#{self}.adb_sh(
|
|
1298
1322
|
adb_path: 'required - path to adb binary',
|
|
1299
|
-
command: 'adb command to execute'
|
|
1300
|
-
as_root: 'optional - boolean (defaults to false)'
|
|
1323
|
+
command: 'required - adb command to execute',
|
|
1324
|
+
as_root: 'optional - boolean (defaults to false)'
|
|
1301
1325
|
)
|
|
1302
1326
|
|
|
1327
|
+
# Run adb push and return its result
|
|
1303
1328
|
#{self}.adb_push(
|
|
1304
1329
|
adb_path: 'required - path to adb binary',
|
|
1305
1330
|
file: 'required - source file to push',
|
|
1306
|
-
dest: 'required - destination path to
|
|
1307
|
-
as_root: 'optional - boolean (defaults to false)'
|
|
1331
|
+
dest: 'required - destination path to save pushed file',
|
|
1332
|
+
as_root: 'optional - boolean (defaults to false)'
|
|
1308
1333
|
)
|
|
1309
1334
|
|
|
1335
|
+
# Run adb pull and return its result
|
|
1310
1336
|
#{self}.adb_pull(
|
|
1311
1337
|
adb_path: 'required - path to adb binary',
|
|
1312
1338
|
file: 'required - source file to pull',
|
|
1313
|
-
dest: 'required - destination path to
|
|
1314
|
-
as_root: 'optional - boolean (defaults to false)'
|
|
1339
|
+
dest: 'required - destination path to save pulled file',
|
|
1340
|
+
as_root: 'optional - boolean (defaults to false)'
|
|
1315
1341
|
)
|
|
1316
1342
|
|
|
1343
|
+
# Run take screenshot and return its result
|
|
1317
1344
|
#{self}.take_screenshot(
|
|
1318
1345
|
adb_path: 'required - path to adb binary',
|
|
1319
1346
|
dest: 'optional - destination path to save screenshot file (defaults to /sdcard/screen.png)',
|
|
1320
1347
|
as_root: 'optional - boolean (defaults to true)'
|
|
1321
1348
|
)
|
|
1322
1349
|
|
|
1350
|
+
# Run screen record and return its result
|
|
1323
1351
|
#{self}.screen_record(
|
|
1324
1352
|
adb_path: 'required - path to adb binary',
|
|
1325
1353
|
dest: 'optional - destination path to save screen record file (defaults to /sdcard/screen.mp4)',
|
|
1326
1354
|
as_root: 'optional - boolean (defaults to true)'
|
|
1327
1355
|
)
|
|
1328
1356
|
|
|
1329
|
-
|
|
1357
|
+
# Run list installed apps and return its result
|
|
1358
|
+
#{self}.list_installed_apps(
|
|
1330
1359
|
adb_path: 'required - path to adb binary',
|
|
1331
|
-
as_root: 'optional - boolean (defaults to false)'
|
|
1360
|
+
as_root: 'optional - boolean (defaults to false)'
|
|
1332
1361
|
)
|
|
1333
1362
|
|
|
1334
|
-
|
|
1363
|
+
# Run dumpsys and return its result
|
|
1364
|
+
#{self}.dumpsys(
|
|
1335
1365
|
adb_path: 'required - path to adb binary',
|
|
1336
1366
|
app: 'optional - application app to detail otherwise display all (i.e. display info from an android app returned from #list_install_apps method)',
|
|
1337
|
-
as_root: 'optional - boolean (defaults to false)'
|
|
1367
|
+
as_root: 'optional - boolean (defaults to false)'
|
|
1338
1368
|
)
|
|
1339
1369
|
|
|
1340
|
-
|
|
1370
|
+
# Run open app and return its result
|
|
1371
|
+
#{self}.open_app(
|
|
1341
1372
|
adb_path: 'required - path to adb binary',
|
|
1342
1373
|
app: 'required - application app to run (i.e. open an android app returned from #list_install_apps method)',
|
|
1343
1374
|
as_root: 'optional - boolean (defaults to false)'
|
|
1344
1375
|
)
|
|
1345
1376
|
|
|
1377
|
+
# Run find hidden codes and return its result
|
|
1346
1378
|
#{self}.find_hidden_codes(
|
|
1347
1379
|
adb_path: 'required - path to adb binary',
|
|
1348
|
-
from: 'required - start at keycode #'
|
|
1380
|
+
from: 'required - start at keycode #',
|
|
1349
1381
|
to: 'required - end at keycode #',
|
|
1350
1382
|
interact: 'optional - defaults to false'
|
|
1351
1383
|
)
|
|
1352
1384
|
|
|
1385
|
+
# Run swipe and return its result
|
|
1353
1386
|
#{self}.swipe(
|
|
1354
1387
|
adb_path: 'required - path to adb binary',
|
|
1355
1388
|
direction: 'required - direction to swipe (:up|:down|:left|:right)'
|
|
1356
1389
|
)
|
|
1357
1390
|
|
|
1391
|
+
# Run input and return its result
|
|
1358
1392
|
#{self}.input(
|
|
1359
1393
|
adb_path: 'required - path to adb binary',
|
|
1360
1394
|
string: 'required - string to type'
|
|
1361
1395
|
)
|
|
1362
1396
|
|
|
1397
|
+
# see https://developer.android.com/reference/android/view/KeyEvent.html for more info
|
|
1363
1398
|
#{self}.input_special(
|
|
1364
1399
|
adb_path: 'required - path to adb binary',
|
|
1365
|
-
event: 'required - special event to invoke (
|
|
1366
|
-
:zoom_in|
|
|
1367
|
-
:zoom_out|
|
|
1368
|
-
:zenkaku_hankaku|
|
|
1369
|
-
:yen|
|
|
1370
|
-
:window|
|
|
1371
|
-
:wakeup|
|
|
1372
|
-
:voice_assist|
|
|
1373
|
-
:tv_zoom_mode|
|
|
1374
|
-
:tv_timer_programming|
|
|
1375
|
-
:tv_terrestrial_digital|
|
|
1376
|
-
:tv_terrestrial_analog|
|
|
1377
|
-
:tv_satellite_teletext|
|
|
1378
|
-
:tv_satellite_service|
|
|
1379
|
-
:tv_satellite|
|
|
1380
|
-
:tv_satellite_bs|
|
|
1381
|
-
:tv_satellite_cs|
|
|
1382
|
-
:tv_radio_service|
|
|
1383
|
-
:tv_power|
|
|
1384
|
-
:tv_number_entry|
|
|
1385
|
-
:tv_network|
|
|
1386
|
-
:tv_media_context_menu|
|
|
1387
|
-
:tv_input_vga1|
|
|
1388
|
-
:tv_input_hdmi1|
|
|
1389
|
-
:tv_input_hdmi2|
|
|
1390
|
-
:tv_input_hdmi3|
|
|
1391
|
-
:tv_input_hdmi4|
|
|
1392
|
-
:tv_input_composite1|
|
|
1393
|
-
:tv_input_composite2|
|
|
1394
|
-
:tv_input_component1|
|
|
1395
|
-
:tv_input_component2|
|
|
1396
|
-
:tv_input|
|
|
1397
|
-
:tv_data_service|
|
|
1398
|
-
:tv_contents_menu|
|
|
1399
|
-
:tv_audio_desc|
|
|
1400
|
-
:tv_audio_desc_mix_up|
|
|
1401
|
-
:tv_audio_desc_mix_down|
|
|
1402
|
-
:tv_antenna_cable|
|
|
1403
|
-
:tv|
|
|
1404
|
-
:sysrq|
|
|
1405
|
-
:switch_charset|
|
|
1406
|
-
:stem_primary|
|
|
1407
|
-
:stem1|
|
|
1408
|
-
:stem2|
|
|
1409
|
-
:stem3|
|
|
1410
|
-
:stb_power|
|
|
1411
|
-
:stb_input|
|
|
1412
|
-
:sleep|
|
|
1413
|
-
:settings|
|
|
1414
|
-
:scroll_lock|
|
|
1415
|
-
:ro|
|
|
1416
|
-
:prog_blue|
|
|
1417
|
-
:prog_green|
|
|
1418
|
-
:prog_red|
|
|
1419
|
-
:prog_yellow|
|
|
1420
|
-
:pairing|
|
|
1421
|
-
:num_lock|
|
|
1422
|
-
:numpad_subtract|
|
|
1423
|
-
:numpad_multiply|
|
|
1424
|
-
:numpad_left_paren|
|
|
1425
|
-
:numpad_right_paren|
|
|
1426
|
-
:numpad_equals|
|
|
1427
|
-
:numpad_enter|
|
|
1428
|
-
:numpad_dot|
|
|
1429
|
-
:numpad_comma|
|
|
1430
|
-
:numpad_add|
|
|
1431
|
-
:numpad0|
|
|
1432
|
-
:numpad1|
|
|
1433
|
-
:numpad2|
|
|
1434
|
-
:numpad3|
|
|
1435
|
-
:numpad4|
|
|
1436
|
-
:numpad5|
|
|
1437
|
-
:numpad6|
|
|
1438
|
-
:numpad7|
|
|
1439
|
-
:numpad8|
|
|
1440
|
-
:numpad9|
|
|
1441
|
-
:num|
|
|
1442
|
-
:nav_in|
|
|
1443
|
-
:nav_next|
|
|
1444
|
-
:nav_out|
|
|
1445
|
-
:nav_previous|
|
|
1446
|
-
:music|
|
|
1447
|
-
:muhenkan|
|
|
1448
|
-
:meta_left|
|
|
1449
|
-
:meta_right|
|
|
1450
|
-
:media_top_menu|
|
|
1451
|
-
:media_step_forward|
|
|
1452
|
-
:media_step_back|
|
|
1453
|
-
:media_skip_forward|
|
|
1454
|
-
:media_skip_back|
|
|
1455
|
-
:media_record|
|
|
1456
|
-
:media_play|
|
|
1457
|
-
:media_eject|
|
|
1458
|
-
:media_close|
|
|
1459
|
-
:media_audio_track|
|
|
1460
|
-
:manner_mode|
|
|
1461
|
-
:last_channel|
|
|
1462
|
-
:language_switch|
|
|
1463
|
-
:katakana_hiragana|
|
|
1464
|
-
:kana|
|
|
1465
|
-
:insert|
|
|
1466
|
-
:info|
|
|
1467
|
-
:henkan|
|
|
1468
|
-
:help|
|
|
1469
|
-
:guide|
|
|
1470
|
-
:del|
|
|
1471
|
-
:f1|
|
|
1472
|
-
:f2|
|
|
1473
|
-
:f3|
|
|
1474
|
-
:f4|
|
|
1475
|
-
:f5|
|
|
1476
|
-
:f6|
|
|
1477
|
-
:f7|
|
|
1478
|
-
:f8|
|
|
1479
|
-
:f9|
|
|
1480
|
-
:f10|
|
|
1481
|
-
:f11|
|
|
1482
|
-
:f12|
|
|
1483
|
-
:escape|
|
|
1484
|
-
:eisu|
|
|
1485
|
-
:dvr|
|
|
1486
|
-
:ctrl_left|
|
|
1487
|
-
:ctrl_right|
|
|
1488
|
-
:cut|
|
|
1489
|
-
:copy|
|
|
1490
|
-
:paste|
|
|
1491
|
-
:contacts|
|
|
1492
|
-
:chan_down|
|
|
1493
|
-
:chan_up|
|
|
1494
|
-
:captions|
|
|
1495
|
-
:caps_lock|
|
|
1496
|
-
:calendar|
|
|
1497
|
-
:calculator|
|
|
1498
|
-
:gamepad1|
|
|
1499
|
-
:gamepad2|
|
|
1500
|
-
:gamepad3|
|
|
1501
|
-
:gamepad4|
|
|
1502
|
-
:gamepad5|
|
|
1503
|
-
:gamepad6|
|
|
1504
|
-
:gamepad7|
|
|
1505
|
-
:gamepad8|
|
|
1506
|
-
:gamepad9|
|
|
1507
|
-
:gamepad10|
|
|
1508
|
-
:gamepad11|
|
|
1509
|
-
:gamepad12|
|
|
1510
|
-
:gamepad13|
|
|
1511
|
-
:gamepad14|
|
|
1512
|
-
:gamepad15|
|
|
1513
|
-
:gamepad16|
|
|
1514
|
-
:gamepad_a|
|
|
1515
|
-
:gamepad_b|
|
|
1516
|
-
:gamepad_c|
|
|
1517
|
-
:gamepad_l1|
|
|
1518
|
-
:gamepad_l2|
|
|
1519
|
-
:gamepad_mode|
|
|
1520
|
-
:gamepad_r1|
|
|
1521
|
-
:gamepad_r2|
|
|
1522
|
-
:gamepad_select|
|
|
1523
|
-
:gamepad_start|
|
|
1524
|
-
:gamepad_thumbl|
|
|
1525
|
-
:gamepad_thumbr|
|
|
1526
|
-
:gamepad_x|
|
|
1527
|
-
:gamepad_y|
|
|
1528
|
-
:gamepad_z|
|
|
1529
|
-
:brightness_up|
|
|
1530
|
-
:brightness_down|
|
|
1531
|
-
:break|
|
|
1532
|
-
:bookmark|
|
|
1533
|
-
:avr_power|
|
|
1534
|
-
:avr_input|
|
|
1535
|
-
:assist|
|
|
1536
|
-
:app_switch|
|
|
1537
|
-
:threeDmode|
|
|
1538
|
-
:eleven|
|
|
1539
|
-
:twelve|
|
|
1540
|
-
:unknown|
|
|
1541
|
-
:soft_left|
|
|
1542
|
-
:soft_right|
|
|
1543
|
-
:soft_sleep|
|
|
1544
|
-
:home|
|
|
1545
|
-
:forward|
|
|
1546
|
-
:back|
|
|
1547
|
-
:call|
|
|
1548
|
-
:endcall|
|
|
1549
|
-
:dpad_up|
|
|
1550
|
-
:dpad_down|
|
|
1551
|
-
:dpad_left|
|
|
1552
|
-
:dpad_right|
|
|
1553
|
-
:dpad_down_left|
|
|
1554
|
-
:dpad_down_right|
|
|
1555
|
-
:dpad_up_left|
|
|
1556
|
-
:dpad_up_right|
|
|
1557
|
-
:dpad_center|
|
|
1558
|
-
:volume_up|
|
|
1559
|
-
:volume_down|
|
|
1560
|
-
:power|
|
|
1561
|
-
:camera|
|
|
1562
|
-
:clear|
|
|
1563
|
-
:alt_left|
|
|
1564
|
-
:alt_right|
|
|
1565
|
-
:shift_left|
|
|
1566
|
-
:shift_right|
|
|
1567
|
-
:tab|
|
|
1568
|
-
:sym|
|
|
1569
|
-
:explorer|
|
|
1570
|
-
:envelope|
|
|
1571
|
-
:enter|
|
|
1572
|
-
:backspace|
|
|
1573
|
-
:headsethook|
|
|
1574
|
-
:focus|
|
|
1575
|
-
:menu|
|
|
1576
|
-
:top_menu|
|
|
1577
|
-
:notification|
|
|
1578
|
-
:search|
|
|
1579
|
-
:media_play_pause|
|
|
1580
|
-
:media_stop|
|
|
1581
|
-
:media_next|
|
|
1582
|
-
:media_previous|
|
|
1583
|
-
:media_rewind|
|
|
1584
|
-
:media_fast_forward|
|
|
1585
|
-
:mute|
|
|
1586
|
-
:page_up|
|
|
1587
|
-
:page_down|
|
|
1588
|
-
:pictsymbols|
|
|
1589
|
-
:move_home|
|
|
1590
|
-
:move_end
|
|
1591
|
-
)
|
|
1592
|
-
see https://developer.android.com/reference/android/view/KeyEvent.html for more info'
|
|
1400
|
+
event: 'required - special event to invoke ('
|
|
1593
1401
|
)
|
|
1594
1402
|
|
|
1595
|
-
|
|
1403
|
+
# Run close app and return its result
|
|
1404
|
+
#{self}.close_app(
|
|
1596
1405
|
adb_path: 'required - path to adb binary',
|
|
1597
|
-
app: 'required - application app to
|
|
1406
|
+
app: 'required - application app to close (i.e. open an android app returned from #list_install_apps method)',
|
|
1598
1407
|
as_root: 'optional - boolean (defaults to false)'
|
|
1599
1408
|
)
|
|
1600
1409
|
|
|
1410
|
+
# Run invoke event listener and return its result
|
|
1601
1411
|
#{self}.invoke_event_listener(
|
|
1602
1412
|
adb_path: 'required - path to adb binary',
|
|
1603
1413
|
as_root: 'optional - boolean (defaults to false)',
|
|
1414
|
+
app: 'optional - app value consumed by #invoke_event_listener'
|
|
1604
1415
|
)
|
|
1605
1416
|
|
|
1417
|
+
# Run adb net disconnect and return its result
|
|
1606
1418
|
#{self}.adb_net_disconnect(
|
|
1607
1419
|
adb_path: 'required - path to adb binary',
|
|
1608
|
-
target: 'required - target host or IP to
|
|
1420
|
+
target: 'required - target host or IP to disconnect',
|
|
1609
1421
|
port: 'optional - defaults to tcp 5555'
|
|
1610
1422
|
)
|
|
1611
1423
|
|
|
1424
|
+
# Run apk pipeline and return its result
|
|
1425
|
+
#{self}.apk_pipeline(
|
|
1426
|
+
apk: 'required - apk value consumed by #apk_pipeline',
|
|
1427
|
+
out_dir: 'optional - out dir value consumed by #apk_pipeline'
|
|
1428
|
+
)
|
|
1429
|
+
|
|
1430
|
+
# Print the AUTHOR(S) string for this module.
|
|
1612
1431
|
#{self}.authors
|
|
1613
1432
|
"
|
|
1433
|
+
constants.sort
|
|
1614
1434
|
end
|
|
1615
1435
|
end
|
|
1616
1436
|
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'json'
|
|
5
|
+
|
|
6
|
+
module PWN
|
|
7
|
+
module Plugins
|
|
8
|
+
# ~/.pwn/artifacts/<session>/ loot index for session_recall.
|
|
9
|
+
module ArtifactRegistry
|
|
10
|
+
ROOT = File.join(Dir.home, '.pwn', 'artifacts')
|
|
11
|
+
|
|
12
|
+
public_class_method def self.required_bins
|
|
13
|
+
[]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
public_class_method def self.register(opts = {})
|
|
17
|
+
sid = (opts[:session_id] || 'default').to_s
|
|
18
|
+
src = opts[:path].to_s
|
|
19
|
+
raise 'ERROR: path is required' if src.empty?
|
|
20
|
+
raise "ERROR: file not found: #{src}" unless File.file?(src)
|
|
21
|
+
|
|
22
|
+
dir = File.join(ROOT, sid)
|
|
23
|
+
FileUtils.mkdir_p(dir)
|
|
24
|
+
dest = File.join(dir, File.basename(src))
|
|
25
|
+
FileUtils.cp(src, dest)
|
|
26
|
+
meta = File.join(dir, 'index.jsonl')
|
|
27
|
+
File.open(meta, 'a') { |f| f.puts(JSON.generate(path: dest, kind: opts[:kind], src: src, at: Time.now.utc.iso8601)) }
|
|
28
|
+
dest
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
public_class_method def self.list(opts = {})
|
|
32
|
+
sid = (opts[:session_id] || 'default').to_s
|
|
33
|
+
meta = File.join(ROOT, sid, 'index.jsonl')
|
|
34
|
+
return [] unless File.file?(meta)
|
|
35
|
+
|
|
36
|
+
File.readlines(meta).filter_map do |ln|
|
|
37
|
+
JSON.parse(ln, symbolize_names: true)
|
|
38
|
+
rescue JSON::ParserError
|
|
39
|
+
nil
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
public_class_method def self.authors
|
|
44
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
public_class_method def self.help
|
|
48
|
+
puts "USAGE:
|
|
49
|
+
# List host binaries this module expects to be installed.
|
|
50
|
+
#{self}.required_bins
|
|
51
|
+
|
|
52
|
+
# Run register and return its result
|
|
53
|
+
#{self}.register(
|
|
54
|
+
session_id: 'optional - session id value consumed by #register',
|
|
55
|
+
path: 'required - filesystem path to read or write',
|
|
56
|
+
kind: 'optional - kind value consumed by #register'
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
# Run list and return its result
|
|
60
|
+
#{self}.list(
|
|
61
|
+
session_id: 'optional - session id value consumed by #list'
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
# Print the AUTHOR(S) string for this module.
|
|
65
|
+
#{self}.authors
|
|
66
|
+
"
|
|
67
|
+
constants.sort
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
data/lib/pwn/plugins/assembly.rb
CHANGED
|
@@ -252,23 +252,28 @@ module PWN
|
|
|
252
252
|
|
|
253
253
|
public_class_method def self.help
|
|
254
254
|
puts "USAGE:
|
|
255
|
+
# Run opcodes to asm and return its result
|
|
255
256
|
#{self}.opcodes_to_asm(
|
|
256
|
-
opcodes: 'required - hex escaped opcode(s) (e.g.
|
|
257
|
+
opcodes: 'required - hex escaped opcode(s) (e.g. \\x90\\x90\\x90)',
|
|
257
258
|
opcodes_always_string_obj: 'optional - always interpret opcodes passed in as a string object (defaults to false)',
|
|
258
259
|
arch: 'optional - architecture returned from objdump --info (defaults to PWN::Plugins::DetectOS.arch)',
|
|
259
|
-
endian: 'optional - endianess :big|:little (defaults to system endianess)'
|
|
260
|
+
endian: 'optional - endianess :big|:little (defaults to current system endianess)'
|
|
260
261
|
)
|
|
261
262
|
|
|
263
|
+
# Run asm to opcodes and return its result
|
|
262
264
|
#{self}.asm_to_opcodes(
|
|
263
|
-
asm: 'required - assembly instruction(s) (e.g.
|
|
265
|
+
asm: 'required - assembly instruction(s) (e.g. nop\\nnop\\nnop\\njmp rsp\\n)',
|
|
264
266
|
arch: 'optional - architecture returned from objdump --info (defaults to PWN::Plugins::DetectOS.arch)',
|
|
265
|
-
endian: 'optional - endianess :big|:little (defaults to system endianess)'
|
|
267
|
+
endian: 'optional - endianess :big|:little (defaults to current system endianess)'
|
|
266
268
|
)
|
|
267
269
|
|
|
270
|
+
# Run list supported archs and return its result
|
|
268
271
|
#{self}.list_supported_archs
|
|
269
272
|
|
|
273
|
+
# Print the AUTHOR(S) string for this module.
|
|
270
274
|
#{self}.authors
|
|
271
275
|
"
|
|
276
|
+
constants.sort
|
|
272
277
|
end
|
|
273
278
|
end
|
|
274
279
|
end
|
|
@@ -66,20 +66,23 @@ module PWN
|
|
|
66
66
|
|
|
67
67
|
public_class_method def self.help
|
|
68
68
|
puts "USAGE:
|
|
69
|
-
#
|
|
70
|
-
|
|
71
|
-
)
|
|
69
|
+
# Run username and return its result
|
|
70
|
+
#{self}.username
|
|
72
71
|
|
|
72
|
+
# Run mask password and return its result
|
|
73
73
|
#{self}.mask_password(
|
|
74
|
-
prompt: 'optional - string to display at prompt'
|
|
74
|
+
prompt: 'optional - string to display at prompt (Default: Password)'
|
|
75
75
|
)
|
|
76
76
|
|
|
77
|
+
# Run mfa and return its result
|
|
77
78
|
#{self}.mfa(
|
|
78
|
-
prompt: 'optional - string to display at prompt'
|
|
79
|
+
prompt: 'optional - string to display at prompt (Default: MFA Token)'
|
|
79
80
|
)
|
|
80
81
|
|
|
82
|
+
# Print the AUTHOR(S) string for this module.
|
|
81
83
|
#{self}.authors
|
|
82
84
|
"
|
|
85
|
+
constants.sort
|
|
83
86
|
end
|
|
84
87
|
end
|
|
85
88
|
end
|
data/lib/pwn/plugins/baresip.rb
CHANGED
|
@@ -682,26 +682,73 @@ module PWN
|
|
|
682
682
|
|
|
683
683
|
public_class_method def self.help
|
|
684
684
|
puts "USAGE:
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
685
|
+
# Run start and return its result
|
|
686
|
+
#{self}.start(
|
|
687
|
+
src_num: 'optional - Optional source phone number displayed',
|
|
688
|
+
baresip_bin: 'optional - Optional path of baresip binary (Defaults to /usr/bin/baresip)',
|
|
689
|
+
config_root: 'optional - Optional dir of baresip config (Defaults to ~/.baresip)',
|
|
690
|
+
session_root: 'optional - Optional dir of baresip session (Defaults to Dir.pwd)',
|
|
691
|
+
screenlog_path: 'optional - Optional path of screenlog file (Defaults to screenlog.txt)',
|
|
692
|
+
screen_session: 'optional - Optional name of screen session (Defaults baresip)'
|
|
692
693
|
)
|
|
693
694
|
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
695
|
+
# Run baresip exec and return its result
|
|
696
|
+
#{self}.baresip_exec(
|
|
697
|
+
baresip_obj: 'required - baresip obj returned from #start method',
|
|
698
|
+
cmd: 'required - command to send to baresip HTTP daemon'
|
|
697
699
|
)
|
|
698
700
|
|
|
699
|
-
|
|
700
|
-
|
|
701
|
+
# Run stop and return its result
|
|
702
|
+
#{self}.stop(
|
|
703
|
+
screen_session: 'required - screen session to stop',
|
|
704
|
+
baresip_obj: 'optional - baresip obj value consumed by #stop'
|
|
701
705
|
)
|
|
702
706
|
|
|
707
|
+
# Run parse target file and return its result
|
|
708
|
+
#{self}.parse_target_file(
|
|
709
|
+
target_file: 'required - txt file containing phone numbers to dial',
|
|
710
|
+
randomize: 'optional - randomize list of phone numbers to dial (Defaults to false)'
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
# Run apply src num rules and return its result
|
|
714
|
+
#{self}.apply_src_num_rules(
|
|
715
|
+
target_num: 'required - destination number to derive source number',
|
|
716
|
+
src_num_rules: 'optional - Comma-delimited list of rules for src_num format (i.e. XXXXXXXXXX, self, same_country, same_area, and/or same_prefix [Defaults to random src_num w/ same length as target_num])',
|
|
717
|
+
config_root: 'optional - config root value consumed by #apply_src_num_rules'
|
|
718
|
+
)
|
|
719
|
+
|
|
720
|
+
# Run dial target in list and return its result
|
|
721
|
+
#{self}.dial_target_in_list(
|
|
722
|
+
baresip_bin: 'optional - baresip bin value consumed by #dial_target_in_list',
|
|
723
|
+
target_num: 'optional - target num value consumed by #dial_target_in_list',
|
|
724
|
+
config_root: 'optional - config root value consumed by #dial_target_in_list',
|
|
725
|
+
session_root: 'optional - session root value consumed by #dial_target_in_list',
|
|
726
|
+
randomize: 'optional - randomize value consumed by #dial_target_in_list',
|
|
727
|
+
src_num_rules: 'optional - src num rules value consumed by #dial_target_in_list',
|
|
728
|
+
seconds_to_record: 'optional - seconds to record value consumed by #dial_target_in_list',
|
|
729
|
+
sox_bin: 'optional - sox bin value consumed by #dial_target_in_list',
|
|
730
|
+
speech_to_text: 'optional - speech to text value consumed by #dial_target_in_list'
|
|
731
|
+
)
|
|
732
|
+
|
|
733
|
+
# Run recon and return its result
|
|
734
|
+
#{self}.recon(
|
|
735
|
+
baresip_bin: 'optional - baresip bin value consumed by #recon',
|
|
736
|
+
config_root: 'optional - config root value consumed by #recon',
|
|
737
|
+
session_root: 'optional - session root value consumed by #recon',
|
|
738
|
+
target_file: 'optional - target file value consumed by #recon',
|
|
739
|
+
randomize: 'optional - randomize value consumed by #recon',
|
|
740
|
+
src_num_rules: 'optional - src num rules value consumed by #recon',
|
|
741
|
+
max_threads: 'optional - max threads value consumed by #recon',
|
|
742
|
+
seconds_to_record: 'optional - seconds to record value consumed by #recon',
|
|
743
|
+
sox_bin: 'optional - sox bin value consumed by #recon',
|
|
744
|
+
speech_to_text: 'optional - speech to text value consumed by #recon',
|
|
745
|
+
report_name: 'optional - report name value consumed by #recon'
|
|
746
|
+
)
|
|
747
|
+
|
|
748
|
+
# Print the AUTHOR(S) string for this module.
|
|
703
749
|
#{self}.authors
|
|
704
750
|
"
|
|
751
|
+
constants.sort
|
|
705
752
|
end
|
|
706
753
|
end
|
|
707
754
|
end
|
|
@@ -48,15 +48,21 @@ module PWN
|
|
|
48
48
|
|
|
49
49
|
public_class_method def self.help
|
|
50
50
|
puts "USAGE:
|
|
51
|
+
# Run encode and return its result
|
|
51
52
|
#{self}.encode(
|
|
52
|
-
username: 'optional username',
|
|
53
|
-
password: 'optional password'
|
|
53
|
+
username: 'optional - optional username',
|
|
54
|
+
password: 'optional - optional password'
|
|
54
55
|
)
|
|
55
56
|
|
|
56
|
-
#
|
|
57
|
+
# Run decode and return its result
|
|
58
|
+
#{self}.decode(
|
|
59
|
+
base64_str: 'required - required base64 encoded string'
|
|
60
|
+
)
|
|
57
61
|
|
|
62
|
+
# Print the AUTHOR(S) string for this module.
|
|
58
63
|
#{self}.authors
|
|
59
64
|
"
|
|
65
|
+
constants.sort
|
|
60
66
|
end
|
|
61
67
|
end
|
|
62
68
|
end
|