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
|
@@ -1704,6 +1704,7 @@ module PWN
|
|
|
1704
1704
|
uri: json_uri
|
|
1705
1705
|
)
|
|
1706
1706
|
|
|
1707
|
+
# Run help and return its result
|
|
1707
1708
|
puts "Skipping #{json_uri} - not in scope. Check out #{self}.help >> #add_to_scope method" unless uri_in_scope
|
|
1708
1709
|
next unless uri_in_scope
|
|
1709
1710
|
|
|
@@ -2066,188 +2067,217 @@ module PWN
|
|
|
2066
2067
|
|
|
2067
2068
|
public_class_method def self.help
|
|
2068
2069
|
puts "USAGE:
|
|
2069
|
-
|
|
2070
|
+
# Run start and return its result
|
|
2071
|
+
#{self}.start(
|
|
2070
2072
|
burp_jar_path: 'optional - path of burp suite pro jar file (defaults to /opt/burpsuite/burpsuite_pro.jar)',
|
|
2071
|
-
headless: 'optional - run headless if set to true',
|
|
2072
|
-
browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types'
|
|
2073
|
+
headless: 'optional - run burp headless if set to true (defaults to false)',
|
|
2074
|
+
browser_type: 'optional - defaults to :firefox. See PWN::Plugins::TransparentBrowser.help for a list of types',
|
|
2075
|
+
burp_ip: 'optional - IP address for the Burp proxy (defaults to 127.0.0.1)',
|
|
2076
|
+
burp_port: 'optional - port for the Burp proxy (defaults to a random unused port)',
|
|
2077
|
+
pwn_burp_ip: 'optional - IP address for the PWN Burp API (defaults to 127.0.0.1)',
|
|
2078
|
+
pwn_burp_port: 'optional - port for the PWN Burp API (defaults to a random unused port)'
|
|
2073
2079
|
)
|
|
2074
2080
|
|
|
2075
|
-
|
|
2081
|
+
# Run in scope and return its result
|
|
2082
|
+
#{self}.in_scope(
|
|
2076
2083
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2077
2084
|
uri: 'required - URI to determine if in scope'
|
|
2078
2085
|
)
|
|
2079
2086
|
|
|
2080
|
-
|
|
2087
|
+
# Run add to scope and return its result
|
|
2088
|
+
#{self}.add_to_scope(
|
|
2081
2089
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2082
2090
|
target_url: 'required - target url to add to scope'
|
|
2083
2091
|
)
|
|
2084
2092
|
|
|
2085
|
-
|
|
2093
|
+
# Run spider and return its result
|
|
2094
|
+
#{self}.spider(
|
|
2086
2095
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2087
|
-
target_url: 'required - target url to
|
|
2096
|
+
target_url: 'required - target url to add to crawl / spider'
|
|
2088
2097
|
)
|
|
2089
2098
|
|
|
2099
|
+
# Run enable proxy and return its result
|
|
2090
2100
|
#{self}.enable_proxy(
|
|
2091
2101
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2092
2102
|
)
|
|
2093
2103
|
|
|
2104
|
+
# Run disable proxy and return its result
|
|
2094
2105
|
#{self}.disable_proxy(
|
|
2095
2106
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2096
2107
|
)
|
|
2097
2108
|
|
|
2109
|
+
# Run get proxy listeners and return its result
|
|
2098
2110
|
#{self}.get_proxy_listeners(
|
|
2099
2111
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2100
2112
|
)
|
|
2101
2113
|
|
|
2102
|
-
|
|
2114
|
+
# Run add proxy listener and return its result
|
|
2115
|
+
#{self}.add_proxy_listener(
|
|
2103
2116
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2104
|
-
bindAddress: 'required - bind address for the proxy listener (e.g., \"127.0.0.1\")',
|
|
2105
2117
|
port: 'required - port for the proxy listener (e.g., 8081)',
|
|
2106
|
-
enabled: 'optional - enable the listener (defaults to true)'
|
|
2118
|
+
enabled: 'optional - enable the listener (defaults to true)',
|
|
2119
|
+
bindAddress: 'required - bindAddress value consumed by #add_proxy_listener'
|
|
2107
2120
|
)
|
|
2108
2121
|
|
|
2109
|
-
|
|
2122
|
+
# Run update proxy listener and return its result
|
|
2123
|
+
#{self}.update_proxy_listener(
|
|
2110
2124
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2111
2125
|
id: 'optional - ID of the proxy listener (defaults to 0)',
|
|
2112
|
-
bindAddress: 'optional - bind address for the proxy listener (defaults to value of existing listener)',
|
|
2113
2126
|
port: 'optional - port for the proxy listener (defaults to value of existing listener)',
|
|
2114
|
-
enabled: 'optional - enable the listener (defaults to value of existing listener)'
|
|
2127
|
+
enabled: 'optional - enable or disable the listener (defaults to value of existing listener)',
|
|
2128
|
+
bindAddress: 'optional - bindAddress value consumed by #update_proxy_listener'
|
|
2115
2129
|
)
|
|
2116
2130
|
|
|
2131
|
+
# Run delete proxy listener and return its result
|
|
2117
2132
|
#{self}.delete_proxy_listener(
|
|
2118
2133
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2119
2134
|
id: 'optional - ID of the proxy listener (defaults to 0)'
|
|
2120
2135
|
)
|
|
2121
2136
|
|
|
2122
|
-
|
|
2137
|
+
# Run get proxy history and return its result
|
|
2138
|
+
#{self}.get_proxy_history(
|
|
2123
2139
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2124
|
-
limit: 'optional -
|
|
2125
|
-
offset: 'optional -
|
|
2126
|
-
uri: 'optional -
|
|
2127
|
-
highlight: 'optional - highlight color to filter proxy history results (default:
|
|
2128
|
-
keyword: 'optional - keyword to filter proxy history
|
|
2140
|
+
limit: 'optional - number of proxy history entries to return (default: 200)',
|
|
2141
|
+
offset: 'optional - offset for pagination of proxy history entries (default: 0)',
|
|
2142
|
+
uri: 'optional - filter proxy history entries by URI (default: nil)',
|
|
2143
|
+
highlight: 'optional - highlight color to filter proxy history results (default: NONE)',
|
|
2144
|
+
keyword: 'optional - keyword to filter proxy history entries (default: nil)',
|
|
2129
2145
|
return_as: 'optional - :base64 or :har (defaults to :base64)'
|
|
2130
2146
|
)
|
|
2131
2147
|
|
|
2132
|
-
|
|
2148
|
+
# Run update proxy history and return its result
|
|
2149
|
+
#{self}.update_proxy_history(
|
|
2133
2150
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2134
|
-
entry: 'required - proxy history entry
|
|
2151
|
+
entry: 'required - hash of the proxy history entry to update'
|
|
2135
2152
|
)
|
|
2136
2153
|
|
|
2137
|
-
|
|
2154
|
+
# Run get websocket history and return its result
|
|
2155
|
+
#{self}.get_websocket_history(
|
|
2138
2156
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2139
|
-
limit: 'optional -
|
|
2140
|
-
offset: 'optional -
|
|
2141
|
-
highlight: 'optional - highlight color to filter
|
|
2142
|
-
keyword: 'optional - keyword to filter websocket history
|
|
2157
|
+
limit: 'optional - number of websocket history entries to return (default: 200)',
|
|
2158
|
+
offset: 'optional - offset for pagination of websocket history entries (default: 0)',
|
|
2159
|
+
highlight: 'optional - highlight color to filter websocket history results (default: NONE)',
|
|
2160
|
+
keyword: 'optional - keyword to filter websocket history entries (default: nil)'
|
|
2143
2161
|
)
|
|
2144
2162
|
|
|
2145
|
-
|
|
2163
|
+
# Run update websocket history and return its result
|
|
2164
|
+
#{self}.update_websocket_history(
|
|
2146
2165
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2147
|
-
entry: 'required - websocket history entry
|
|
2166
|
+
entry: 'required - hash of the websocket history entry to update'
|
|
2148
2167
|
)
|
|
2149
2168
|
|
|
2150
|
-
|
|
2169
|
+
# Run get sitemap and return its result
|
|
2170
|
+
#{self}.get_sitemap(
|
|
2151
2171
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2152
|
-
limit: 'optional -
|
|
2153
|
-
offset: 'optional -
|
|
2154
|
-
uri: 'optional - URI to filter sitemap
|
|
2155
|
-
highlight: 'optional - highlight color to filter proxy history results (default:
|
|
2156
|
-
keyword: 'optional - keyword to filter sitemap
|
|
2172
|
+
limit: 'optional - number of sitemap entries to return (default: 200)',
|
|
2173
|
+
offset: 'optional - offset for pagination of sitemap entries (default: 0)',
|
|
2174
|
+
uri: 'optional - URI to filter sitemap entries (default: nil)',
|
|
2175
|
+
highlight: 'optional - highlight color to filter proxy history results (default: NONE)',
|
|
2176
|
+
keyword: 'optional - keyword to filter sitemap entries (default: nil)',
|
|
2157
2177
|
return_as: 'optional - :base64 or :har (defaults to :base64)'
|
|
2158
2178
|
)
|
|
2159
2179
|
|
|
2160
|
-
|
|
2180
|
+
# Run add to sitemap and return its result
|
|
2181
|
+
#{self}.add_to_sitemap(
|
|
2161
2182
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2162
2183
|
sitemap: 'required - sitemap hash to add',
|
|
2163
|
-
debug: 'optional - boolean to enable sitemap debugging (default: false)'
|
|
2184
|
+
debug: 'optional - boolean to enable sitemap debugging (default: false)',
|
|
2185
|
+
request: 'optional - base64_encoded_request_string',
|
|
2186
|
+
response: 'optional - base64_encoded_response_string',
|
|
2187
|
+
highlight: 'optional - NONE||RED||ORANGE||YELLOW||GREEN||CYAN||BLUE||PINK||MAGENTA||GRAY',
|
|
2188
|
+
comment: 'optional - optional comment for the sitemap entry',
|
|
2189
|
+
http_service: 'optional - http service value consumed by #add_to_sitemap',
|
|
2190
|
+
host: 'optional - hostname or IP address',
|
|
2191
|
+
port: 'optional - TCP/UDP port number',
|
|
2192
|
+
protocol: 'optional - protocol value consumed by #add_to_sitemap'
|
|
2164
2193
|
)
|
|
2165
2194
|
|
|
2166
|
-
|
|
2167
|
-
|
|
2195
|
+
# Run update sitemap and return its result
|
|
2196
|
+
#{self}.update_sitemap(
|
|
2168
2197
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2169
|
-
|
|
2170
|
-
request: 'base64_encoded_request_string',
|
|
2171
|
-
response: 'base64_encoded_response_string',
|
|
2172
|
-
highlight: 'NONE'||'RED'||'ORANGE'||'YELLOW'||'GREEN'||'CYAN'||'BLUE'||'PINK'||'MAGENTA'||'GRAY',
|
|
2173
|
-
comment: 'optional comment for the sitemap entry',
|
|
2174
|
-
http_service: {
|
|
2175
|
-
host: 'example.com',
|
|
2176
|
-
port: 80,
|
|
2177
|
-
protocol: 'http'
|
|
2178
|
-
}
|
|
2179
|
-
}
|
|
2198
|
+
entry: 'required - hash of the sitemap entry to update'
|
|
2180
2199
|
)
|
|
2181
2200
|
|
|
2182
|
-
|
|
2183
|
-
|
|
2184
|
-
entry: 'required - sitemap entry hash to update'
|
|
2185
|
-
)
|
|
2186
|
-
|
|
2187
|
-
json_sitemap = #{self}.import_openapi_to_sitemap(
|
|
2201
|
+
# Run import openapi to sitemap and return its result
|
|
2202
|
+
#{self}.import_openapi_to_sitemap(
|
|
2188
2203
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2189
2204
|
openapi_spec: 'required - path to OpenAPI JSON or YAML specification file',
|
|
2190
2205
|
additional_http_headers: 'optional - hash of additional HTTP headers to include in requests (default: {})',
|
|
2191
|
-
|
|
2192
|
-
|
|
2193
|
-
|
|
2206
|
+
highlight: 'optional - highlight color for the sitemap entry (default: NONE)',
|
|
2207
|
+
comment: 'optional - comment for the sitemap entry (default: )',
|
|
2208
|
+
debug: 'optional - boolean to enable debug logging (default: false)'
|
|
2194
2209
|
)
|
|
2195
2210
|
|
|
2196
|
-
|
|
2211
|
+
# Run active scan and return its result
|
|
2212
|
+
#{self}.active_scan(
|
|
2197
2213
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2198
2214
|
target_url: 'required - target url to scan in sitemap (should be loaded & authenticated w/ burp_obj[:mitm_browser])',
|
|
2199
2215
|
exclude_paths: 'optional - array of paths to exclude from active scan (default: [])'
|
|
2200
2216
|
)
|
|
2201
2217
|
|
|
2202
|
-
|
|
2218
|
+
# Run get scan issues and return its result
|
|
2219
|
+
#{self}.get_scan_issues(
|
|
2203
2220
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2204
|
-
)
|
|
2221
|
+
)
|
|
2205
2222
|
|
|
2206
|
-
|
|
2223
|
+
# Run add repeater tab and return its result
|
|
2224
|
+
#{self}.add_repeater_tab(
|
|
2207
2225
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2208
2226
|
name: 'required - name of the repeater tab (max 30 characters)',
|
|
2209
2227
|
request: 'optional - base64 encoded HTTP request string'
|
|
2210
2228
|
)
|
|
2211
2229
|
|
|
2212
|
-
|
|
2230
|
+
# Run get all repeater tabs and return its result
|
|
2231
|
+
#{self}.get_all_repeater_tabs(
|
|
2213
2232
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2214
2233
|
)
|
|
2215
2234
|
|
|
2216
|
-
|
|
2235
|
+
# Run get repeater tab and return its result
|
|
2236
|
+
#{self}.get_repeater_tab(
|
|
2217
2237
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2218
2238
|
id: 'required - id of the repeater tab to get'
|
|
2219
2239
|
)
|
|
2220
2240
|
|
|
2221
|
-
|
|
2241
|
+
# Run send repeater request and return its result
|
|
2242
|
+
#{self}.send_repeater_request(
|
|
2222
2243
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2223
2244
|
id: 'required - id of the repeater tab to send'
|
|
2224
2245
|
)
|
|
2225
2246
|
|
|
2226
|
-
|
|
2247
|
+
# Run update repeater tab and return its result
|
|
2248
|
+
#{self}.update_repeater_tab(
|
|
2227
2249
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2228
2250
|
id: 'required - id of the repeater tab to update',
|
|
2229
2251
|
name: 'required - name of the repeater tab (max 30 characters)',
|
|
2230
2252
|
request: 'required - base64 encoded HTTP request string'
|
|
2231
2253
|
)
|
|
2232
2254
|
|
|
2233
|
-
|
|
2255
|
+
# Run delete repeater tab and return its result
|
|
2256
|
+
#{self}.delete_repeater_tab(
|
|
2234
2257
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2235
2258
|
id: 'required - id of the repeater tab to delete'
|
|
2236
2259
|
)
|
|
2237
2260
|
|
|
2261
|
+
# Run generate scan report and return its result
|
|
2238
2262
|
#{self}.generate_scan_report(
|
|
2239
2263
|
burp_obj: 'required - burp_obj returned by #start method',
|
|
2240
2264
|
target_url: 'required - target_url passed to #active_scan method',
|
|
2241
2265
|
output_dir: 'required - directory to save the report',
|
|
2242
|
-
report_type: 'required -
|
|
2266
|
+
report_type: 'required - report type value consumed by #generate_scan_report'
|
|
2243
2267
|
)
|
|
2244
2268
|
|
|
2269
|
+
# Run update burp jar and return its result
|
|
2270
|
+
#{self}.update_burp_jar
|
|
2271
|
+
|
|
2272
|
+
# Run stop and return its result
|
|
2245
2273
|
#{self}.stop(
|
|
2246
2274
|
burp_obj: 'required - burp_obj returned by #start method'
|
|
2247
2275
|
)
|
|
2248
2276
|
|
|
2277
|
+
# Print the AUTHOR(S) string for this module.
|
|
2249
2278
|
#{self}.authors
|
|
2250
2279
|
"
|
|
2280
|
+
constants.sort
|
|
2251
2281
|
end
|
|
2252
2282
|
end
|
|
2253
2283
|
end
|
|
@@ -118,29 +118,36 @@ module PWN
|
|
|
118
118
|
|
|
119
119
|
public_class_method def self.help
|
|
120
120
|
puts "USAGE:
|
|
121
|
+
# Run connect via screen and return its result
|
|
121
122
|
#{self}.connect_via_screen(
|
|
122
|
-
block_dev: 'optional serial block device path (defaults to /dev/ttyUSB0)'
|
|
123
|
+
block_dev: 'optional - serial block device path (defaults to /dev/ttyUSB0)'
|
|
123
124
|
)
|
|
124
125
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
126
|
+
# Run connect and return its result
|
|
127
|
+
#{self}.connect(
|
|
128
|
+
block_dev: 'optional - optional serial block device path (defaults to /dev/ttyUSB0)',
|
|
129
|
+
baud: 'optional - optional (defaults to 9600)',
|
|
130
|
+
data_bits: 'optional - optional (defaults to 8)',
|
|
131
|
+
stop_bits: 'optional - optional (defaults to 1)',
|
|
132
|
+
parity: 'optional - optional (defaults to SerialPort::NONE)',
|
|
133
|
+
flow_control: 'optional - optional (defaults to SerialPort::HARD) SerialPort::NONE|SerialPort::SOFT|SerialPort::HARD'
|
|
131
134
|
)
|
|
132
135
|
|
|
136
|
+
# Run init mode and return its result
|
|
133
137
|
#{self}.init_mode(
|
|
134
|
-
bus_pirate_obj: 'required - bus_pirate_obj returned from #connect method'
|
|
138
|
+
bus_pirate_obj: 'required - bus_pirate_obj returned from #connect method',
|
|
135
139
|
mode: 'required - bus pirate mode to invoke'
|
|
136
140
|
)
|
|
137
141
|
|
|
142
|
+
# Run disconnect and return its result
|
|
138
143
|
#{self}.disconnect(
|
|
139
144
|
bus_pirate_obj: 'required - bus_pirate_obj returned from #connect method'
|
|
140
145
|
)
|
|
141
146
|
|
|
147
|
+
# Print the AUTHOR(S) string for this module.
|
|
142
148
|
#{self}.authors
|
|
143
149
|
"
|
|
150
|
+
constants.sort
|
|
144
151
|
end
|
|
145
152
|
end
|
|
146
153
|
end
|
data/lib/pwn/plugins/char.rb
CHANGED
|
@@ -412,63 +412,93 @@ module PWN
|
|
|
412
412
|
|
|
413
413
|
public_class_method def self.help
|
|
414
414
|
puts "USAGE:
|
|
415
|
-
|
|
415
|
+
# Run force utf8 and return its result
|
|
416
|
+
#{self}.force_utf8(
|
|
417
|
+
obj: 'required - object to force to UTF-8'
|
|
418
|
+
)
|
|
419
|
+
|
|
420
|
+
# Run generate by range and return its result
|
|
421
|
+
#{self}.generate_by_range(
|
|
416
422
|
from: 'required - integer to start from',
|
|
417
|
-
to: 'required - integer to end
|
|
423
|
+
to: 'required - integer to end UTF-8 generation'
|
|
418
424
|
)
|
|
419
425
|
|
|
426
|
+
# Run c0 controls latin basic and return its result
|
|
420
427
|
#{self}.c0_controls_latin_basic
|
|
421
428
|
|
|
429
|
+
# Run c1 controls latin supplement and return its result
|
|
422
430
|
#{self}.c1_controls_latin_supplement
|
|
423
431
|
|
|
432
|
+
# Run latin extended a and return its result
|
|
424
433
|
#{self}.latin_extended_a
|
|
425
434
|
|
|
435
|
+
# Run latin extended b and return its result
|
|
426
436
|
#{self}.latin_extended_b
|
|
427
437
|
|
|
438
|
+
# Run spacing modifiers and return its result
|
|
428
439
|
#{self}.spacing_modifiers
|
|
429
440
|
|
|
441
|
+
# Run diacritical marks and return its result
|
|
430
442
|
#{self}.diacritical_marks
|
|
431
443
|
|
|
444
|
+
# Run greek coptic and return its result
|
|
432
445
|
#{self}.greek_coptic
|
|
433
446
|
|
|
447
|
+
# Run cyrillic basic and return its result
|
|
434
448
|
#{self}.cyrillic_basic
|
|
435
449
|
|
|
450
|
+
# Run cyrillic supplement and return its result
|
|
436
451
|
#{self}.cyrillic_supplement
|
|
437
452
|
|
|
453
|
+
# Run punctuation and return its result
|
|
438
454
|
#{self}.punctuation
|
|
439
455
|
|
|
456
|
+
# Run currency symbols and return its result
|
|
440
457
|
#{self}.currency_symbols
|
|
441
458
|
|
|
459
|
+
# Run letterlike symbols and return its result
|
|
442
460
|
#{self}.letterlike_symbols
|
|
443
461
|
|
|
462
|
+
# Run arrows and return its result
|
|
444
463
|
#{self}.arrows
|
|
445
464
|
|
|
465
|
+
# Run math operators and return its result
|
|
446
466
|
#{self}.math_operators
|
|
447
467
|
|
|
468
|
+
# Run box drawings and return its result
|
|
448
469
|
#{self}.box_drawings
|
|
449
470
|
|
|
471
|
+
# Run block elements and return its result
|
|
450
472
|
#{self}.block_elements
|
|
451
473
|
|
|
474
|
+
# Run geometric shapes and return its result
|
|
452
475
|
#{self}.geometric_shapes
|
|
453
476
|
|
|
477
|
+
# Run misc symbols and return its result
|
|
454
478
|
#{self}.misc_symbols
|
|
455
479
|
|
|
480
|
+
# Run dingbats and return its result
|
|
456
481
|
#{self}.dingbats
|
|
457
482
|
|
|
483
|
+
# Run bubble ip and return its result
|
|
458
484
|
#{self}.bubble_ip(
|
|
459
485
|
ip: 'required - ip address to transform'
|
|
460
486
|
)
|
|
461
487
|
|
|
462
|
-
|
|
488
|
+
# Run list encoders and return its result
|
|
489
|
+
#{self}.list_encoders
|
|
463
490
|
|
|
491
|
+
# Run generate encoded files and return its result
|
|
464
492
|
#{self}.generate_encoded_files(
|
|
465
493
|
from: 'required - integer to start from',
|
|
466
494
|
to: 'required - integer to end UTF-8 generation',
|
|
467
495
|
output_dir: 'required - folder to create files'
|
|
468
496
|
)
|
|
469
497
|
|
|
498
|
+
# Print the AUTHOR(S) string for this module.
|
|
470
499
|
#{self}.authors
|
|
471
500
|
"
|
|
501
|
+
constants.sort
|
|
472
502
|
end
|
|
473
503
|
end
|
|
474
504
|
end
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'fileutils'
|
|
4
|
+
require 'open3'
|
|
5
|
+
|
|
6
|
+
module PWN
|
|
7
|
+
module Plugins
|
|
8
|
+
# hydra/john/hashcat wrappers and ~/.pwn/wordlists convention.
|
|
9
|
+
module CredentialAttack
|
|
10
|
+
WORDLISTS = File.join(Dir.home, '.pwn', 'wordlists')
|
|
11
|
+
|
|
12
|
+
public_class_method def self.required_bins
|
|
13
|
+
[]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
public_class_method def self.wordlist_dir(opts = {})
|
|
17
|
+
FileUtils.mkdir_p(WORDLISTS) if opts[:ensure] != false
|
|
18
|
+
WORDLISTS
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
public_class_method def self.hydra(opts = {})
|
|
22
|
+
PWN::Plugins::Doctor.require_bin!(name: 'hydra')
|
|
23
|
+
target = opts[:target].to_s
|
|
24
|
+
service = (opts[:service] || 'ssh').to_s
|
|
25
|
+
user = opts[:user] || opts[:login]
|
|
26
|
+
wordlist = opts[:wordlist] || File.join(WORDLISTS, 'rockyou.txt')
|
|
27
|
+
extra = Array(opts[:extra])
|
|
28
|
+
cmd = ['hydra', '-l', user.to_s, '-P', wordlist, '-t', (opts[:tasks] || 4).to_s]
|
|
29
|
+
cmd += extra
|
|
30
|
+
cmd += [target, service]
|
|
31
|
+
stdout, stderr, status = Open3.capture3(*cmd)
|
|
32
|
+
{ stdout: stdout, stderr: stderr, exit: status.exitstatus }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
public_class_method def self.john(opts = {})
|
|
36
|
+
PWN::Plugins::Doctor.require_bin!(name: 'john')
|
|
37
|
+
hashfile = opts[:hashfile] || opts[:file]
|
|
38
|
+
raise 'ERROR: hashfile is required' if hashfile.to_s.empty?
|
|
39
|
+
|
|
40
|
+
stdout, stderr, status = Open3.capture3('john', hashfile.to_s)
|
|
41
|
+
{ stdout: stdout, stderr: stderr, exit: status.exitstatus }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
public_class_method def self.hashcat(opts = {})
|
|
45
|
+
PWN::Plugins::Doctor.require_bin!(name: 'hashcat')
|
|
46
|
+
hashfile = opts[:hashfile] || opts[:file]
|
|
47
|
+
mode = (opts[:mode] || 0).to_i
|
|
48
|
+
wordlist = opts[:wordlist] || File.join(WORDLISTS, 'rockyou.txt')
|
|
49
|
+
stdout, stderr, status = Open3.capture3('hashcat', '-m', mode.to_s, hashfile.to_s, wordlist)
|
|
50
|
+
{ stdout: stdout, stderr: stderr, exit: status.exitstatus }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
public_class_method def self.authors
|
|
54
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
public_class_method def self.help
|
|
58
|
+
puts "USAGE:
|
|
59
|
+
# List host binaries this module expects to be installed.
|
|
60
|
+
#{self}.required_bins
|
|
61
|
+
|
|
62
|
+
# Run wordlist dir and return its result
|
|
63
|
+
#{self}.wordlist_dir(
|
|
64
|
+
ensure: 'optional - ensure value consumed by #wordlist_dir'
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Run hydra and return its result
|
|
68
|
+
#{self}.hydra(
|
|
69
|
+
target: 'optional - hostname, IP, or CIDR to scan',
|
|
70
|
+
service: 'optional - service value consumed by #hydra',
|
|
71
|
+
user: 'optional - user value consumed by #hydra (defaults to opts[:login])',
|
|
72
|
+
login: 'optional - login value consumed by #hydra',
|
|
73
|
+
wordlist: 'optional - wordlist value consumed by #hydra',
|
|
74
|
+
extra: 'optional - Array extra value consumed by #hydra',
|
|
75
|
+
tasks: 'optional - tasks value consumed by #hydra'
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# Run john and return its result
|
|
79
|
+
#{self}.john(
|
|
80
|
+
hashfile: 'required - hashfile value consumed by #john (defaults to opts[:file])',
|
|
81
|
+
file: 'required - filesystem path'
|
|
82
|
+
)
|
|
83
|
+
|
|
84
|
+
# Run hashcat and return its result
|
|
85
|
+
#{self}.hashcat(
|
|
86
|
+
hashfile: 'optional - hashfile value consumed by #hashcat (defaults to opts[:file])',
|
|
87
|
+
file: 'optional - filesystem path',
|
|
88
|
+
mode: 'optional - mode value consumed by #hashcat',
|
|
89
|
+
wordlist: 'optional - wordlist value consumed by #hashcat'
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
# Print the AUTHOR(S) string for this module.
|
|
93
|
+
#{self}.authors
|
|
94
|
+
"
|
|
95
|
+
constants.sort
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
end
|
|
@@ -86,19 +86,24 @@ module PWN
|
|
|
86
86
|
|
|
87
87
|
public_class_method def self.help
|
|
88
88
|
puts "USAGE:
|
|
89
|
+
# Run list types and return its result
|
|
89
90
|
#{self}.list_types
|
|
90
91
|
|
|
92
|
+
# Run generate and return its result
|
|
91
93
|
#{self}.generate(
|
|
92
|
-
type: '
|
|
94
|
+
type: 'optional - card type from #list_types method to generate (defaults to :random)',
|
|
93
95
|
count: 'optional - number of numbers to generate (defaults to 1)'
|
|
94
96
|
)
|
|
95
97
|
|
|
98
|
+
# Run type and return its result
|
|
96
99
|
#{self}.type(
|
|
97
100
|
cc: 'required - e.g. XXXX XXXX XXXX XXXX'
|
|
98
101
|
)
|
|
99
102
|
|
|
103
|
+
# Print the AUTHOR(S) string for this module.
|
|
100
104
|
#{self}.authors
|
|
101
105
|
"
|
|
106
|
+
constants.sort
|
|
102
107
|
end
|
|
103
108
|
end
|
|
104
109
|
end
|
data/lib/pwn/plugins/dao_ldap.rb
CHANGED
|
@@ -105,26 +105,32 @@ module PWN
|
|
|
105
105
|
|
|
106
106
|
public_class_method def self.help
|
|
107
107
|
puts "USAGE:
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
108
|
+
# Run connect and return its result
|
|
109
|
+
#{self}.connect(
|
|
110
|
+
host: 'required - required host or IP',
|
|
111
|
+
port: 'optional - optional port (defaults to 636)',
|
|
112
|
+
base: 'required - required ldap base to search from (e.g. dc=domain,dc=com)',
|
|
113
|
+
encryption: 'optional - optional parameter to protect communication in transit, :simple_tls OR :start_tls',
|
|
114
|
+
auth_method: 'required - required ldap auth bind method, :simple, :sasl, OR :gss_spnego',
|
|
115
|
+
username: 'required - required username (e.g. support@0dayinc.com)',
|
|
116
|
+
password: 'optional - optional (prompts if left blank)'
|
|
116
117
|
)
|
|
117
118
|
|
|
118
|
-
employee
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
# Run get employee by username and return its result
|
|
120
|
+
#{self}.get_employee_by_username(
|
|
121
|
+
ldap_obj: 'required - required ldap_obj returned from #connect method',
|
|
122
|
+
username: 'required - required username of employee to retrieve from LDAP server'
|
|
121
123
|
)
|
|
122
|
-
puts employee[0][:dn]
|
|
123
124
|
|
|
124
|
-
#
|
|
125
|
+
# Run disconnect and return its result
|
|
126
|
+
#{self}.disconnect(
|
|
127
|
+
ldap_obj: 'optional - ldap obj value consumed by #disconnect'
|
|
128
|
+
)
|
|
125
129
|
|
|
130
|
+
# Print the AUTHOR(S) string for this module.
|
|
126
131
|
#{self}.authors
|
|
127
132
|
"
|
|
133
|
+
constants.sort
|
|
128
134
|
end
|
|
129
135
|
end
|
|
130
136
|
end
|
|
@@ -80,16 +80,22 @@ module PWN
|
|
|
80
80
|
|
|
81
81
|
public_class_method def self.help
|
|
82
82
|
puts "USAGE:
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
83
|
+
# Run connect and return its result
|
|
84
|
+
#{self}.connect(
|
|
85
|
+
host: 'optional - optional host or IP defaults to 127.0.0.1',
|
|
86
|
+
port: 'optional - optional port defaults to 27017',
|
|
87
|
+
database: 'optional - optional database name'
|
|
87
88
|
)
|
|
88
89
|
|
|
89
|
-
#
|
|
90
|
+
# Run disconnect and return its result
|
|
91
|
+
#{self}.disconnect(
|
|
92
|
+
mongo_conn: 'optional - mongo conn value consumed by #disconnect'
|
|
93
|
+
)
|
|
90
94
|
|
|
95
|
+
# Print the AUTHOR(S) string for this module.
|
|
91
96
|
#{self}.authors
|
|
92
97
|
"
|
|
98
|
+
constants.sort
|
|
93
99
|
end
|
|
94
100
|
end
|
|
95
101
|
end
|