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
|
@@ -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,48 @@
|
|
|
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::Doctor.bin?(name: b) }
|
|
15
|
+
raise PWN::Plugins::Doctor::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.authors
|
|
26
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
public_class_method def self.help
|
|
30
|
+
puts "USAGE:
|
|
31
|
+
# List host binaries this module expects to be installed.
|
|
32
|
+
#{self}.required_bins
|
|
33
|
+
|
|
34
|
+
# Run run and return its result
|
|
35
|
+
#{self}.run(
|
|
36
|
+
memory: 'required - memory value consumed by #run (defaults to opts[:file])',
|
|
37
|
+
file: 'optional - filesystem path',
|
|
38
|
+
plugin: 'required - plugin value consumed by #run (defaults to windows.pslist)'
|
|
39
|
+
)
|
|
40
|
+
|
|
41
|
+
# Print the AUTHOR(S) string for this module.
|
|
42
|
+
#{self}.authors
|
|
43
|
+
"
|
|
44
|
+
constants.sort
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
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
|
data/lib/pwn/plugins/xxd.rb
CHANGED
|
@@ -95,6 +95,7 @@ module PWN
|
|
|
95
95
|
# start_addr: 'required - start address to evaluate',
|
|
96
96
|
# target_addr: 'required - memory address to set breakpoint'
|
|
97
97
|
# )
|
|
98
|
+
# Run calc addr offset and return its result
|
|
98
99
|
# ^^^ Instructions for #{self}.calc_addr_offset:
|
|
99
100
|
# This is useful for calculating address offsets of known functions in debuggers
|
|
100
101
|
# to set breakpoints of instructions that are not known at runtime.
|
|
@@ -247,75 +248,43 @@ module PWN
|
|
|
247
248
|
|
|
248
249
|
public_class_method def self.help
|
|
249
250
|
puts "USAGE:
|
|
250
|
-
|
|
251
|
+
# Run dump and return its result
|
|
252
|
+
#{self}.dump(
|
|
251
253
|
file: 'required - path to binary file to dump',
|
|
252
254
|
hashed: 'optional - return hexdump as hash instead of string (default: false)'
|
|
253
255
|
)
|
|
254
256
|
|
|
255
|
-
|
|
257
|
+
# Run fill range w byte and return its result
|
|
258
|
+
#{self}.fill_range_w_byte(
|
|
256
259
|
hexdump: 'required - hexdump returned from #dump method',
|
|
257
260
|
start_addr: 'required - start address to fill with byte',
|
|
258
261
|
end_addr: 'required - end address to fill with byte',
|
|
259
262
|
byte: 'required - byte to fill range with'
|
|
260
263
|
)
|
|
261
264
|
|
|
262
|
-
|
|
265
|
+
# Run calc addr offset and return its result
|
|
266
|
+
#{self}.calc_addr_offset(
|
|
263
267
|
start_addr: 'required - start address to evaluate',
|
|
264
268
|
target_addr: 'required - memory address to set breakpoint'
|
|
265
269
|
)
|
|
266
270
|
|
|
267
|
-
#
|
|
268
|
-
# This is useful for calculating address offsets of known functions in debuggers
|
|
269
|
-
# to set breakpoints of instructions that are not known at runtime.
|
|
270
|
-
# 1. Set a breakpoint at main and record its address - this is the start_addr.
|
|
271
|
-
# For example in r2:
|
|
272
|
-
# ```
|
|
273
|
-
# [0x00001050]> db main
|
|
274
|
-
# [0x00001050]> ood
|
|
275
|
-
# [0x7fd16122b360]> dc
|
|
276
|
-
# INFO: hit breakpoint at: 0x562e8547d139
|
|
277
|
-
# [0x562e8547d139]> db
|
|
278
|
-
# ```
|
|
279
|
-
# 2. Populate start_addr w/ address (i.e. '0x562e8547d139') of a known function (i.e. main)
|
|
280
|
-
# 3. Step down to the instruction where you want to set a breakpoint. Record its address...
|
|
281
|
-
# this is the target_addr.
|
|
282
|
-
# ```
|
|
283
|
-
# [0x562e8547d139]> v
|
|
284
|
-
# <step through to the target instruction via F7/F8>
|
|
285
|
-
# ```
|
|
286
|
-
# 4. Get the hex offset value by calling #{self}.calc_addr_offset method
|
|
287
|
-
# 5. Future breakpoints can be calculated by adding the hex offset to the
|
|
288
|
-
# updated start_addr (which changes every time the binary is executed).
|
|
289
|
-
# If the offset returned is `0x00000ec2`, a breakpoint for the target
|
|
290
|
-
# instruction can be set in r2 via:
|
|
291
|
-
# ```
|
|
292
|
-
# [0x00001050]> ood
|
|
293
|
-
# [0x7f1a45bea360]> db main
|
|
294
|
-
# [0x7f1a45bea360]> db (main)+0x00000ec2
|
|
295
|
-
# [0x7f1a45bea360]> db
|
|
296
|
-
# 0x558eebd75139 - 0x558eebd7513a 1 --x sw break enabled valid ...
|
|
297
|
-
# 0x558eebd75ffb - 0x558eebd75ffc 1 --x sw break enabled valid ...
|
|
298
|
-
# [0x7f1a45bea360]> dc
|
|
299
|
-
# INFO: hit breakpoint at: 0x55ee0a0e5139
|
|
300
|
-
# [0x55ee0a0e5139]> dc
|
|
301
|
-
# INFO: hit breakpoint at: 0x5558c3101ffb
|
|
302
|
-
# [0x5558c3101ffb]> v
|
|
303
|
-
# <step through via F7, F8, F9, etc. to get to desired instruction>
|
|
304
|
-
# ```
|
|
305
|
-
|
|
271
|
+
# Run reverse hex string and return its result
|
|
306
272
|
#{self}.reverse_hex_string(
|
|
307
|
-
string: 'required - continuous hex string to reverse (i.e.
|
|
273
|
+
string: 'required - continuous hex string to reverse (i.e. 68656c6c6f)',
|
|
308
274
|
file: 'required - path to binary file to dump'
|
|
309
275
|
)
|
|
310
276
|
|
|
277
|
+
# Run reverse dump and return its result
|
|
311
278
|
#{self}.reverse_dump(
|
|
312
279
|
hexdump: 'required - hexdump returned from #dump method',
|
|
313
280
|
file: 'required - path to binary file to dump',
|
|
314
281
|
byte_chunks: 'optional - if set, will write n byte chunks of hexdump to multiple files'
|
|
315
282
|
)
|
|
316
283
|
|
|
284
|
+
# Print the AUTHOR(S) string for this module.
|
|
317
285
|
#{self}.authors
|
|
318
286
|
"
|
|
287
|
+
constants.sort
|
|
319
288
|
end
|
|
320
289
|
end
|
|
321
290
|
end
|
data/lib/pwn/plugins/zaproxy.rb
CHANGED
|
@@ -749,18 +749,18 @@ module PWN
|
|
|
749
749
|
|
|
750
750
|
public_class_method def self.help
|
|
751
751
|
puts "USAGE:
|
|
752
|
-
|
|
752
|
+
# Run start and return its result
|
|
753
|
+
#{self}.start(
|
|
753
754
|
api_key: 'required - api key for API authorization',
|
|
754
755
|
zap_bin_path: 'optional - path to zap.sh file',
|
|
755
|
-
headless: 'optional - run zap headless if set to true',
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
zap_obj: 'required - zap_obj returned from #open method',
|
|
761
|
-
target_url: 'required - url to spider'
|
|
756
|
+
headless: 'optional - run zap headless if set to true (defaults to false)',
|
|
757
|
+
browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',
|
|
758
|
+
proxy: 'optional - change local zap proxy listener (defaults to http://127.0.0.1:<Random 1024-65535>)',
|
|
759
|
+
zap_ip: 'optional - zap ip value consumed by #start',
|
|
760
|
+
zap_port: 'optional - zap port value consumed by #start'
|
|
762
761
|
)
|
|
763
762
|
|
|
763
|
+
# Run import openapi to sitemap and return its result
|
|
764
764
|
#{self}.import_openapi_to_sitemap(
|
|
765
765
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
766
766
|
openapi_spec: 'required - path to OpenAPI JSON or YAML spec file',
|
|
@@ -768,52 +768,62 @@ module PWN
|
|
|
768
768
|
target_regex: 'optional - url regex to inject additional_http_headers into (e.g. https://test.domain.local.*)'
|
|
769
769
|
)
|
|
770
770
|
|
|
771
|
+
# Run get sitemap and return its result
|
|
771
772
|
#{self}.get_sitemap(
|
|
772
773
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
773
774
|
keyword: 'optional - string to search for in the sitemap entries (defaults to nil)',
|
|
774
775
|
return_as: 'optional - :base64 or :har (defaults to :base64)'
|
|
775
776
|
)
|
|
776
777
|
|
|
778
|
+
# Run add to scope and return its result
|
|
777
779
|
#{self}.add_to_scope(
|
|
778
780
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
779
781
|
target_regex: 'required - url regex to add to scope (e.g. https://test.domain.local.*)',
|
|
780
782
|
context_name: 'optional - context name to add target_regex to (defaults to Default Context)'
|
|
781
783
|
)
|
|
782
784
|
|
|
785
|
+
# Run requester and return its result
|
|
783
786
|
#{self}.requester(
|
|
784
787
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
785
788
|
har_entry: 'required - har entry (e.g. from #get_sitemap method method)',
|
|
786
|
-
redirect: 'optional - follow redirects if set to true (defaults to
|
|
789
|
+
redirect: 'optional - follow redirects if set to true (defaults to false)'
|
|
787
790
|
)
|
|
788
791
|
|
|
789
|
-
|
|
790
|
-
|
|
792
|
+
# Run spider and return its result
|
|
793
|
+
#{self}.spider(
|
|
794
|
+
zap_obj: 'required - zap_obj returned from #open method',
|
|
795
|
+
target_url: 'required - url to spider'
|
|
791
796
|
)
|
|
792
797
|
|
|
798
|
+
# Run inject additional http headers and return its result
|
|
793
799
|
#{self}.inject_additional_http_headers(
|
|
794
800
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
795
801
|
target_regex: 'required - url regex to inject headers into (e.g. https://test.domain.local.*)',
|
|
796
802
|
headers: 'required - hash of additional headers to inject into each request'
|
|
797
803
|
)
|
|
798
804
|
|
|
805
|
+
# Run active scan and return its result
|
|
799
806
|
#{self}.active_scan(
|
|
800
|
-
zap_obj: 'required - zap_obj returned from #open method'
|
|
807
|
+
zap_obj: 'required - zap_obj returned from #open method',
|
|
801
808
|
target_url: 'required - url to scan',
|
|
802
809
|
exclude_paths: 'optional - array of paths to exclude from scan (default: [])',
|
|
803
810
|
scan_policy: 'optional - scan policy to use (defaults to Default Policy)'
|
|
804
811
|
)
|
|
805
812
|
|
|
806
|
-
|
|
807
|
-
|
|
813
|
+
# Run get alerts and return its result
|
|
814
|
+
#{self}.get_alerts(
|
|
815
|
+
zap_obj: 'required - zap_obj returned from #open method',
|
|
808
816
|
target_url: 'required - base url to return alerts'
|
|
809
817
|
)
|
|
810
818
|
|
|
811
|
-
|
|
819
|
+
# Run generate scan report and return its result
|
|
820
|
+
#{self}.generate_scan_report(
|
|
812
821
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
813
822
|
output_dir: 'required - directory to save report',
|
|
814
823
|
report_type: 'required - <:html|:markdown|:xml>'
|
|
815
824
|
)
|
|
816
825
|
|
|
826
|
+
# Run breakpoint and return its result
|
|
817
827
|
#{self}.breakpoint(
|
|
818
828
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
819
829
|
regex_type: 'required - :url, :request_header, :request_body, :response_header or :response_body',
|
|
@@ -821,18 +831,22 @@ module PWN
|
|
|
821
831
|
enabled: 'optional - boolean (defaults to true)'
|
|
822
832
|
)
|
|
823
833
|
|
|
834
|
+
# Run tamper and return its result
|
|
824
835
|
#{self}.tamper(
|
|
825
836
|
zap_obj: 'required - zap_obj returned from #open method',
|
|
826
837
|
domain: 'required - FQDN to tamper (e.g. test.domain.local)',
|
|
827
838
|
enabled: 'optional - boolean (defaults to true)'
|
|
828
839
|
)
|
|
829
840
|
|
|
841
|
+
# Run stop and return its result
|
|
830
842
|
#{self}.stop(
|
|
831
|
-
zap_obj: 'required - zap_obj returned from #
|
|
843
|
+
zap_obj: 'required - zap_obj returned from #open method'
|
|
832
844
|
)
|
|
833
845
|
|
|
846
|
+
# Print the AUTHOR(S) string for this module.
|
|
834
847
|
#{self}.authors
|
|
835
848
|
"
|
|
849
|
+
constants.sort
|
|
836
850
|
end
|
|
837
851
|
end
|
|
838
852
|
end
|
data/lib/pwn/plugins.rb
CHANGED
|
@@ -6,7 +6,10 @@ module PWN
|
|
|
6
6
|
# http://www.rubyinside.com/ruby-techniques-revealed-autoload-1652.html
|
|
7
7
|
module Plugins
|
|
8
8
|
autoload :Android, 'pwn/plugins/android'
|
|
9
|
+
autoload :AFLplusplus, 'pwn/plugins/aflplusplus'
|
|
10
|
+
autoload :ArtifactRegistry, 'pwn/plugins/artifact_registry'
|
|
9
11
|
autoload :Assembly, 'pwn/plugins/assembly'
|
|
12
|
+
autoload :BinaryParser, 'pwn/plugins/binary_parser'
|
|
10
13
|
autoload :AuthenticationHelper, 'pwn/plugins/authentication_helper'
|
|
11
14
|
autoload :BareSIP, 'pwn/plugins/baresip'
|
|
12
15
|
autoload :BasicAuth, 'pwn/plugins/basic_auth'
|
|
@@ -16,6 +19,8 @@ module PWN
|
|
|
16
19
|
autoload :BusPirate, 'pwn/plugins/bus_pirate'
|
|
17
20
|
autoload :Char, 'pwn/plugins/char'
|
|
18
21
|
autoload :CreditCard, 'pwn/plugins/credit_card'
|
|
22
|
+
autoload :CredentialAttack, 'pwn/plugins/credential_attack'
|
|
23
|
+
autoload :Doctor, 'pwn/plugins/doctor'
|
|
19
24
|
autoload :PWNLogger, 'pwn/plugins/pwn_logger'
|
|
20
25
|
autoload :DAOLDAP, 'pwn/plugins/dao_ldap'
|
|
21
26
|
autoload :DAOMongo, 'pwn/plugins/dao_mongo'
|
|
@@ -26,7 +31,10 @@ module PWN
|
|
|
26
31
|
autoload :EIN, 'pwn/plugins/ein'
|
|
27
32
|
autoload :FileFu, 'pwn/plugins/file_fu'
|
|
28
33
|
autoload :Fuzz, 'pwn/plugins/fuzz'
|
|
34
|
+
autoload :Frida, 'pwn/plugins/frida'
|
|
35
|
+
autoload :ExploitDev, 'pwn/plugins/exploit_dev'
|
|
29
36
|
autoload :Git, 'pwn/plugins/git'
|
|
37
|
+
autoload :GDB, 'pwn/plugins/gdb'
|
|
30
38
|
autoload :Github, 'pwn/plugins/github'
|
|
31
39
|
autoload :GoogleWorkspace, 'pwn/plugins/google_workspace'
|
|
32
40
|
autoload :HackerOne, 'pwn/plugins/hacker_one'
|
|
@@ -35,6 +43,7 @@ module PWN
|
|
|
35
43
|
autoload :IRC, 'pwn/plugins/irc'
|
|
36
44
|
autoload :Jenkins, 'pwn/plugins/jenkins'
|
|
37
45
|
autoload :JiraDataCenter, 'pwn/plugins/jira_data_center'
|
|
46
|
+
autoload :Jobs, 'pwn/plugins/jobs'
|
|
38
47
|
autoload :JSONPathify, 'pwn/plugins/json_pathify'
|
|
39
48
|
autoload :Log, 'pwn/plugins/log'
|
|
40
49
|
autoload :MailAgent, 'pwn/plugins/mail_agent'
|
|
@@ -44,6 +53,7 @@ module PWN
|
|
|
44
53
|
autoload :NessusCloud, 'pwn/plugins/nessus_cloud'
|
|
45
54
|
autoload :NexposeVulnScan, 'pwn/plugins/nexpose_vuln_scan'
|
|
46
55
|
autoload :NmapIt, 'pwn/plugins/nmap_it'
|
|
56
|
+
autoload :Nuclei, 'pwn/plugins/nuclei'
|
|
47
57
|
autoload :OAuth2, 'pwn/plugins/oauth2'
|
|
48
58
|
autoload :OCR, 'pwn/plugins/ocr'
|
|
49
59
|
autoload :OpenAPI, 'pwn/plugins/open_api'
|
|
@@ -52,7 +62,10 @@ module PWN
|
|
|
52
62
|
autoload :PDFParse, 'pwn/plugins/pdf_parse'
|
|
53
63
|
autoload :Pony, 'pwn/plugins/pony'
|
|
54
64
|
autoload :PS, 'pwn/plugins/ps'
|
|
65
|
+
autoload :ProcessTube, 'pwn/plugins/process_tube'
|
|
55
66
|
autoload :RabbitMQ, 'pwn/plugins/rabbit_mq'
|
|
67
|
+
autoload :Radare2, 'pwn/plugins/radare2'
|
|
68
|
+
autoload :Recon, 'pwn/plugins/recon'
|
|
56
69
|
autoload :REPL, 'pwn/plugins/repl'
|
|
57
70
|
autoload :ScannableCodes, 'pwn/plugins/scannable_codes'
|
|
58
71
|
autoload :Serial, 'pwn/plugins/serial'
|
|
@@ -61,6 +74,7 @@ module PWN
|
|
|
61
74
|
autoload :Sock, 'pwn/plugins/sock'
|
|
62
75
|
autoload :Spider, 'pwn/plugins/spider'
|
|
63
76
|
autoload :SSN, 'pwn/plugins/ssn'
|
|
77
|
+
autoload :Sqlmap, 'pwn/plugins/sqlmap'
|
|
64
78
|
autoload :ThreadPool, 'pwn/plugins/thread_pool'
|
|
65
79
|
autoload :Tor, 'pwn/plugins/tor'
|
|
66
80
|
autoload :TransparentBrowser, 'pwn/plugins/transparent_browser'
|
|
@@ -70,6 +84,7 @@ module PWN
|
|
|
70
84
|
autoload :Vault, 'pwn/plugins/vault'
|
|
71
85
|
autoload :VIN, 'pwn/plugins/vin'
|
|
72
86
|
autoload :Voice, 'pwn/plugins/voice'
|
|
87
|
+
autoload :Volatility, 'pwn/plugins/volatility'
|
|
73
88
|
autoload :Vsphere, 'pwn/plugins/vsphere'
|
|
74
89
|
autoload :XXD, 'pwn/plugins/xxd'
|
|
75
90
|
autoload :Zaproxy, 'pwn/plugins/zaproxy'
|
|
@@ -83,6 +98,10 @@ module PWN
|
|
|
83
98
|
end
|
|
84
99
|
|
|
85
100
|
public_class_method def self.help
|
|
101
|
+
puts "USAGE:
|
|
102
|
+
# Display a List of Every PWN::Plugins Module
|
|
103
|
+
#{self}.authors
|
|
104
|
+
"
|
|
86
105
|
constants.sort
|
|
87
106
|
end
|
|
88
107
|
end
|
|
@@ -415,13 +415,17 @@ module PWN
|
|
|
415
415
|
|
|
416
416
|
public_class_method def self.help
|
|
417
417
|
puts "USAGE:
|
|
418
|
+
# Run generate and return its result
|
|
418
419
|
#{self}.generate(
|
|
419
|
-
dir_path:
|
|
420
|
-
results_hash:
|
|
420
|
+
dir_path: 'optional - Directory path to save the report (defaults to .)',
|
|
421
|
+
results_hash: 'optional - Hash containing the results of the AI RedTeam analysis (defaults to empty hash structure)',
|
|
422
|
+
report_name: 'optional - Name of the report file (defaults to current directory name)'
|
|
421
423
|
)
|
|
422
424
|
|
|
425
|
+
# Print the AUTHOR(S) string for this module.
|
|
423
426
|
#{self}.authors
|
|
424
427
|
"
|
|
428
|
+
constants.sort
|
|
425
429
|
end
|
|
426
430
|
end
|
|
427
431
|
end
|
data/lib/pwn/reports/csv.rb
CHANGED
|
@@ -31,7 +31,14 @@ module PWN
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
public_class_method def self.help
|
|
34
|
-
puts "USAGE
|
|
34
|
+
puts "USAGE:
|
|
35
|
+
# Run generate and return its result
|
|
36
|
+
#{self}.generate
|
|
37
|
+
|
|
38
|
+
# Print the AUTHOR(S) string for this module.
|
|
39
|
+
#{self}.authors
|
|
40
|
+
"
|
|
41
|
+
constants.sort
|
|
35
42
|
end
|
|
36
43
|
end
|
|
37
44
|
end
|