pwn 0.5.708 → 0.5.710
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/documentation/Installation.md +1 -0
- data/etc/default_skills/exploitdev/SKILL.md +38 -0
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/bridges/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/references/urls.md +1 -1
- data/etc/default_skills/pwn/ai/agent/extrospection/references/urls.md +0 -1
- data/etc/default_skills/pwn/memory_index/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/android/SKILL.md +1 -0
- data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +54 -0
- data/etc/default_skills/pwn/plugins/credential_attack/SKILL.md +58 -0
- data/etc/default_skills/pwn/plugins/credential_attack/references/urls.md +3 -0
- data/etc/default_skills/pwn/plugins/exploit_db/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +63 -0
- data/etc/default_skills/pwn/plugins/frida/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/fuzz/SKILL.md +2 -0
- data/etc/default_skills/pwn/plugins/gdb/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/k8s/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +50 -0
- data/etc/default_skills/pwn/plugins/preflight_checker/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +53 -0
- data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/recon/SKILL.md +57 -0
- data/etc/default_skills/pwn/plugins/recon/references/urls.md +6 -0
- data/etc/default_skills/pwn/plugins/semgrep/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/sqlmap/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/volatility/SKILL.md +49 -0
- data/lib/pwn/ai/agent/assembly.rb +4 -1
- data/lib/pwn/ai/agent/btc.rb +4 -1
- data/lib/pwn/ai/agent/burp_suite.rb +5 -2
- data/lib/pwn/ai/agent/curriculum.rb +89 -30
- data/lib/pwn/ai/agent/dispatch.rb +27 -16
- data/lib/pwn/ai/agent/extrospection/osint/bridges.rb +9 -18
- data/lib/pwn/ai/agent/extrospection/osint/social.rb +9 -18
- data/lib/pwn/ai/agent/extrospection.rb +185 -60
- data/lib/pwn/ai/agent/gqrx.rb +4 -1
- data/lib/pwn/ai/agent/hacker_one.rb +5 -2
- data/lib/pwn/ai/agent/learning.rb +142 -25
- data/lib/pwn/ai/agent/loop.rb +53 -46
- data/lib/pwn/ai/agent/metrics.rb +133 -23
- data/lib/pwn/ai/agent/mistakes.rb +126 -17
- data/lib/pwn/ai/agent/open_goal.rb +25 -9
- data/lib/pwn/ai/agent/policy.rb +158 -18
- data/lib/pwn/ai/agent/prompt_builder.rb +21 -11
- data/lib/pwn/ai/agent/prompt_cache.rb +44 -13
- data/lib/pwn/ai/agent/reflect.rb +9 -5
- data/lib/pwn/ai/agent/registry.rb +65 -12
- data/lib/pwn/ai/agent/result.rb +19 -10
- data/lib/pwn/ai/agent/reward.rb +150 -32
- data/lib/pwn/ai/agent/sast.rb +4 -1
- data/lib/pwn/ai/agent/swarm.rb +72 -36
- data/lib/pwn/ai/agent/task_summarizer.rb +165 -36
- data/lib/pwn/ai/agent/tool_guard.rb +105 -6
- data/lib/pwn/ai/agent/tools/sessions.rb +8 -1
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -1
- data/lib/pwn/ai/agent/turn_finalizer.rb +41 -21
- data/lib/pwn/ai/agent/vuln_gen.rb +6 -3
- data/lib/pwn/ai/agent.rb +4 -0
- data/lib/pwn/ai/anthropic.rb +41 -7
- data/lib/pwn/ai/gemini.rb +21 -11
- data/lib/pwn/ai/grok.rb +44 -6
- data/lib/pwn/ai/http_retry.rb +40 -12
- data/lib/pwn/ai/ollama.rb +19 -10
- data/lib/pwn/ai/open_ai.rb +81 -30
- data/lib/pwn/ai/open_web_ui.rb +20 -14
- data/lib/pwn/ai/red_team/agent_protocol_abuse.rb +7 -1
- data/lib/pwn/ai/red_team/data_and_model_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/excessive_agency.rb +7 -1
- data/lib/pwn/ai/red_team/hidden_context_exposure.rb +7 -1
- data/lib/pwn/ai/red_team/insecure_output_handling.rb +7 -1
- data/lib/pwn/ai/red_team/jailbreak.rb +7 -1
- data/lib/pwn/ai/red_team/memory_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/multimodal_injection.rb +7 -1
- data/lib/pwn/ai/red_team/overreliance.rb +7 -1
- data/lib/pwn/ai/red_team/payload_splitting.rb +7 -1
- data/lib/pwn/ai/red_team/prompt_injection.rb +7 -1
- data/lib/pwn/ai/red_team/rag_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/sensitive_information_disclosure.rb +7 -1
- data/lib/pwn/ai/red_team/supply_chain.rb +7 -1
- data/lib/pwn/ai/red_team/system_prompt_extraction.rb +7 -1
- data/lib/pwn/ai/red_team/test_case_engine.rb +12 -9
- data/lib/pwn/ai/red_team/token_smuggling.rb +7 -1
- data/lib/pwn/ai/red_team/unbounded_consumption.rb +7 -1
- data/lib/pwn/ai/red_team/vector_and_embedding_weaknesses.rb +7 -1
- data/lib/pwn/ai/red_team.rb +4 -0
- data/lib/pwn/ai.rb +4 -0
- data/lib/pwn/aws/acm.rb +5 -2
- data/lib/pwn/aws/api_gateway.rb +10 -7
- data/lib/pwn/aws/app_stream.rb +5 -2
- data/lib/pwn/aws/application_auto_scaling.rb +5 -2
- data/lib/pwn/aws/application_discovery_service.rb +5 -2
- data/lib/pwn/aws/auto_scaling.rb +5 -2
- data/lib/pwn/aws/batch.rb +5 -2
- data/lib/pwn/aws/budgets.rb +5 -2
- data/lib/pwn/aws/cloud_formation.rb +5 -2
- data/lib/pwn/aws/cloud_front.rb +7 -4
- data/lib/pwn/aws/cloud_hsm.rb +5 -2
- data/lib/pwn/aws/cloud_search.rb +5 -2
- data/lib/pwn/aws/cloud_search_domain.rb +5 -2
- data/lib/pwn/aws/cloud_trail.rb +5 -2
- data/lib/pwn/aws/cloud_watch.rb +5 -2
- data/lib/pwn/aws/cloud_watch_events.rb +5 -2
- data/lib/pwn/aws/cloud_watch_logs.rb +5 -2
- data/lib/pwn/aws/code_build.rb +5 -2
- data/lib/pwn/aws/code_commit.rb +5 -2
- data/lib/pwn/aws/code_deploy.rb +5 -2
- data/lib/pwn/aws/code_pipeline.rb +5 -2
- data/lib/pwn/aws/cognito_identity.rb +5 -2
- data/lib/pwn/aws/cognito_identity_provider.rb +5 -2
- data/lib/pwn/aws/cognito_sync.rb +5 -2
- data/lib/pwn/aws/config_service.rb +5 -2
- data/lib/pwn/aws/data_pipleline.rb +5 -2
- data/lib/pwn/aws/database_migration_service.rb +5 -2
- data/lib/pwn/aws/device_farm.rb +5 -2
- data/lib/pwn/aws/direct_connect.rb +5 -2
- data/lib/pwn/aws/directory_service.rb +5 -2
- data/lib/pwn/aws/dynamo_db.rb +5 -2
- data/lib/pwn/aws/dynamo_db_streams.rb +5 -2
- data/lib/pwn/aws/ec2.rb +5 -2
- data/lib/pwn/aws/ecr.rb +5 -2
- data/lib/pwn/aws/ecs.rb +5 -2
- data/lib/pwn/aws/efs.rb +5 -2
- data/lib/pwn/aws/elasti_cache.rb +5 -2
- data/lib/pwn/aws/elastic_beanstalk.rb +8 -5
- data/lib/pwn/aws/elastic_load_balancing.rb +5 -2
- data/lib/pwn/aws/elastic_load_balancing_v2.rb +6 -3
- data/lib/pwn/aws/elastic_transcoder.rb +5 -2
- data/lib/pwn/aws/elasticsearch_service.rb +5 -2
- data/lib/pwn/aws/emr.rb +5 -2
- data/lib/pwn/aws/firehose.rb +5 -2
- data/lib/pwn/aws/game_lift.rb +5 -2
- data/lib/pwn/aws/glacier.rb +6 -3
- data/lib/pwn/aws/health.rb +5 -2
- data/lib/pwn/aws/iam.rb +10 -4
- data/lib/pwn/aws/import_export.rb +5 -2
- data/lib/pwn/aws/inspector.rb +5 -2
- data/lib/pwn/aws/iot.rb +5 -2
- data/lib/pwn/aws/iot_data_plane.rb +5 -2
- data/lib/pwn/aws/kinesis.rb +5 -2
- data/lib/pwn/aws/kinesis_analytics.rb +5 -2
- data/lib/pwn/aws/kms.rb +5 -2
- data/lib/pwn/aws/lambda.rb +5 -2
- data/lib/pwn/aws/lambda_preview.rb +5 -2
- data/lib/pwn/aws/lex.rb +5 -2
- data/lib/pwn/aws/lightsail.rb +5 -2
- data/lib/pwn/aws/machine_learning.rb +5 -2
- data/lib/pwn/aws/marketplace_commerce_analytics.rb +5 -2
- data/lib/pwn/aws/marketplace_metering.rb +5 -2
- data/lib/pwn/aws/ops_works.rb +5 -2
- data/lib/pwn/aws/ops_works_cm.rb +5 -2
- data/lib/pwn/aws/pinpoint.rb +5 -2
- data/lib/pwn/aws/polly.rb +5 -2
- data/lib/pwn/aws/rds.rb +5 -2
- data/lib/pwn/aws/redshift.rb +5 -2
- data/lib/pwn/aws/rekognition.rb +5 -2
- data/lib/pwn/aws/route53.rb +5 -2
- data/lib/pwn/aws/route53_domains.rb +5 -2
- data/lib/pwn/aws/s3.rb +5 -2
- data/lib/pwn/aws/service_catalog.rb +5 -2
- data/lib/pwn/aws/ses.rb +5 -2
- data/lib/pwn/aws/shield.rb +5 -2
- data/lib/pwn/aws/simple_db.rb +5 -2
- data/lib/pwn/aws/sms.rb +5 -2
- data/lib/pwn/aws/snowball.rb +5 -2
- data/lib/pwn/aws/sns.rb +5 -2
- data/lib/pwn/aws/sqs.rb +5 -2
- data/lib/pwn/aws/ssm.rb +5 -2
- data/lib/pwn/aws/states.rb +5 -2
- data/lib/pwn/aws/storage_gateway.rb +5 -2
- data/lib/pwn/aws/sts.rb +4 -1
- data/lib/pwn/aws/support.rb +5 -2
- data/lib/pwn/aws/swf.rb +5 -2
- data/lib/pwn/aws/waf.rb +5 -2
- data/lib/pwn/aws/waf_regional.rb +5 -2
- data/lib/pwn/aws/workspaces.rb +5 -2
- data/lib/pwn/aws/x_ray.rb +5 -2
- data/lib/pwn/aws.rb +4 -0
- data/lib/pwn/banner/anon.rb +3 -0
- data/lib/pwn/banner/bubble.rb +3 -0
- data/lib/pwn/banner/cheshire.rb +3 -0
- data/lib/pwn/banner/code_cave.rb +3 -0
- data/lib/pwn/banner/dont_panic.rb +3 -0
- data/lib/pwn/banner/f_society.rb +3 -0
- data/lib/pwn/banner/fork_bomb.rb +3 -0
- data/lib/pwn/banner/jmp_esp.rb +3 -0
- data/lib/pwn/banner/matrix.rb +5 -1
- data/lib/pwn/banner/ninja.rb +3 -0
- data/lib/pwn/banner/off_the_air.rb +3 -0
- data/lib/pwn/banner/pirate.rb +3 -0
- data/lib/pwn/banner/radare2.rb +3 -0
- data/lib/pwn/banner/radare2_ai.rb +3 -0
- data/lib/pwn/banner/white_rabbit.rb +3 -0
- data/lib/pwn/banner.rb +6 -2
- data/lib/pwn/blockchain/btc.rb +8 -3
- data/lib/pwn/blockchain/eth.rb +10 -3
- data/lib/pwn/blockchain.rb +4 -0
- data/lib/pwn/bounty/lifecycle_authz_replay.rb +46 -27
- data/lib/pwn/bounty.rb +4 -0
- data/lib/pwn/config.rb +79 -13
- data/lib/pwn/cron.rb +297 -20
- data/lib/pwn/driver.rb +2 -18
- data/lib/pwn/ffi/adalm_pluto.rb +65 -11
- data/lib/pwn/ffi/fftw.rb +31 -6
- data/lib/pwn/ffi/hack_rf.rb +59 -8
- data/lib/pwn/ffi/liquid.rb +63 -10
- data/lib/pwn/ffi/rtl_sdr.rb +35 -5
- data/lib/pwn/ffi/soapy_sdr.rb +60 -10
- data/lib/pwn/ffi/stdio.rb +7 -8
- data/lib/pwn/ffi/volk.rb +36 -7
- data/lib/pwn/ffi.rb +12 -0
- data/lib/pwn/memory.rb +136 -16
- data/lib/pwn/memory_index.rb +34 -19
- data/lib/pwn/migrate.rb +34 -24
- data/lib/pwn/module_skills.rb +39 -8
- data/lib/pwn/plugins/aflplusplus.rb +72 -0
- data/lib/pwn/plugins/android.rb +71 -245
- data/lib/pwn/plugins/artifact_registry.rb +71 -0
- data/lib/pwn/plugins/assembly.rb +9 -4
- data/lib/pwn/plugins/authentication_helper.rb +8 -5
- data/lib/pwn/plugins/baresip.rb +59 -12
- data/lib/pwn/plugins/basic_auth.rb +9 -3
- data/lib/pwn/plugins/beef.rb +28 -18
- data/lib/pwn/plugins/binary_parser.rb +133 -0
- data/lib/pwn/plugins/black_duck_binary_analysis.rb +63 -39
- data/lib/pwn/plugins/burp_suite.rb +98 -68
- data/lib/pwn/plugins/bus_pirate.rb +15 -8
- data/lib/pwn/plugins/char.rb +33 -3
- data/lib/pwn/plugins/credential_attack.rb +158 -0
- data/lib/pwn/plugins/credit_card.rb +6 -1
- data/lib/pwn/plugins/dao_ldap.rb +19 -13
- data/lib/pwn/plugins/dao_mongo.rb +11 -5
- data/lib/pwn/plugins/dao_postgres.rb +28 -19
- data/lib/pwn/plugins/dao_sqlite3.rb +15 -6
- data/lib/pwn/plugins/defect_dojo.rb +38 -22
- data/lib/pwn/plugins/detect_os.rb +5 -0
- data/lib/pwn/plugins/ein.rb +3 -0
- data/lib/pwn/plugins/exploit_db.rb +69 -0
- data/lib/pwn/plugins/exploit_dev.rb +330 -0
- data/lib/pwn/plugins/file_fu.rb +11 -8
- data/lib/pwn/plugins/frida.rb +112 -0
- data/lib/pwn/plugins/fuzz.rb +42 -6
- data/lib/pwn/plugins/gdb.rb +115 -0
- data/lib/pwn/plugins/git.rb +19 -14
- data/lib/pwn/plugins/github.rb +38 -15
- data/lib/pwn/plugins/google_workspace.rb +188 -45
- data/lib/pwn/plugins/hacker_one.rb +159 -35
- data/lib/pwn/plugins/hunter.rb +6 -3
- data/lib/pwn/plugins/ip_info.rb +9 -4
- data/lib/pwn/plugins/irc.rb +28 -15
- data/lib/pwn/plugins/jenkins.rb +65 -57
- data/lib/pwn/plugins/jira_data_center.rb +30 -22
- data/lib/pwn/plugins/jobs.rb +110 -0
- data/lib/pwn/plugins/json_pathify.rb +9 -5
- data/lib/pwn/plugins/k8s.rb +73 -0
- data/lib/pwn/plugins/log.rb +113 -13
- data/lib/pwn/plugins/mail_agent.rb +87 -79
- data/lib/pwn/plugins/metasploit.rb +11 -6
- data/lib/pwn/plugins/monkey_patch.rb +3 -0
- data/lib/pwn/plugins/msr206.rb +42 -28
- data/lib/pwn/plugins/nessus_cloud.rb +44 -4
- data/lib/pwn/plugins/nexpose_vuln_scan.rb +40 -24
- data/lib/pwn/plugins/nmap_it.rb +14 -34
- data/lib/pwn/plugins/nuclei.rb +90 -0
- data/lib/pwn/plugins/oauth2.rb +11 -5
- data/lib/pwn/plugins/ocr.rb +3 -0
- data/lib/pwn/plugins/open_api.rb +5 -2
- data/lib/pwn/plugins/openvas.rb +33 -25
- data/lib/pwn/plugins/packet.rb +152 -31
- data/lib/pwn/plugins/pdf_parse.rb +5 -2
- data/lib/pwn/plugins/pony.rb +86 -1
- data/lib/pwn/plugins/preflight_checker.rb +166 -0
- data/lib/pwn/plugins/process_tube.rb +139 -0
- data/lib/pwn/plugins/ps.rb +7 -1
- data/lib/pwn/plugins/pwn_logger.rb +6 -2
- data/lib/pwn/plugins/rabbit_mq.rb +12 -7
- data/lib/pwn/plugins/radare2.rb +253 -0
- data/lib/pwn/plugins/recon.rb +196 -0
- data/lib/pwn/plugins/repl.rb +122 -1
- data/lib/pwn/plugins/scannable_codes.rb +5 -1
- data/lib/pwn/plugins/semgrep.rb +61 -0
- data/lib/pwn/plugins/serial.rb +24 -14
- data/lib/pwn/plugins/shodan.rb +54 -35
- data/lib/pwn/plugins/slack_client.rb +11 -6
- data/lib/pwn/plugins/sock.rb +17 -8
- data/lib/pwn/plugins/spider.rb +5 -2
- data/lib/pwn/plugins/sqlmap.rb +49 -0
- data/lib/pwn/plugins/ssn.rb +3 -0
- data/lib/pwn/plugins/thread_pool.rb +6 -9
- data/lib/pwn/plugins/tor.rb +9 -4
- data/lib/pwn/plugins/transparent_browser.rb +62 -107
- data/lib/pwn/plugins/tty_spinner.rb +16 -2
- data/lib/pwn/plugins/twitter_api.rb +6 -2
- data/lib/pwn/plugins/uri_scheme.rb +4 -1
- data/lib/pwn/plugins/vault.rb +12 -3
- data/lib/pwn/plugins/vin.rb +24 -12
- data/lib/pwn/plugins/voice.rb +7 -2
- data/lib/pwn/plugins/volatility.rb +67 -0
- data/lib/pwn/plugins/vsphere.rb +9 -5
- data/lib/pwn/plugins/xxd.rb +12 -43
- data/lib/pwn/plugins/zaproxy.rb +30 -16
- data/lib/pwn/plugins.rb +22 -0
- data/lib/pwn/reports/ai_red_team.rb +6 -2
- data/lib/pwn/reports/csv.rb +8 -1
- data/lib/pwn/reports/fuzz.rb +5 -2
- data/lib/pwn/reports/html.rb +8 -1
- data/lib/pwn/reports/html_footer.rb +4 -3
- data/lib/pwn/reports/html_header.rb +6 -2
- data/lib/pwn/reports/json.rb +8 -1
- data/lib/pwn/reports/markdown.rb +8 -1
- data/lib/pwn/reports/pdf.rb +8 -1
- data/lib/pwn/reports/phone.rb +5 -2
- data/lib/pwn/reports/sast.rb +6 -2
- data/lib/pwn/reports/uri_buster.rb +5 -2
- data/lib/pwn/reports/xml.rb +8 -1
- data/lib/pwn/reports.rb +19 -0
- data/lib/pwn/sast/amqp_connect_as_guest.rb +9 -3
- data/lib/pwn/sast/apache_file_system_util_api.rb +9 -3
- data/lib/pwn/sast/aws.rb +9 -3
- data/lib/pwn/sast/banned_function_calls_c.rb +9 -3
- data/lib/pwn/sast/base64.rb +9 -3
- data/lib/pwn/sast/beef_hook.rb +9 -3
- data/lib/pwn/sast/cmd_execution_go_lang.rb +9 -3
- data/lib/pwn/sast/cmd_execution_java.rb +9 -3
- data/lib/pwn/sast/cmd_execution_python.rb +9 -3
- data/lib/pwn/sast/cmd_execution_ruby.rb +9 -3
- data/lib/pwn/sast/cmd_execution_scala.rb +9 -3
- data/lib/pwn/sast/csrf.rb +9 -3
- data/lib/pwn/sast/deserial_java.rb +9 -3
- data/lib/pwn/sast/emoticon.rb +9 -3
- data/lib/pwn/sast/eval.rb +9 -3
- data/lib/pwn/sast/factory.rb +9 -3
- data/lib/pwn/sast/http_authorization_header.rb +9 -3
- data/lib/pwn/sast/inner_html.rb +9 -3
- data/lib/pwn/sast/keystore.rb +9 -3
- data/lib/pwn/sast/local_storage.rb +9 -3
- data/lib/pwn/sast/location_hash.rb +9 -3
- data/lib/pwn/sast/log4j.rb +9 -3
- data/lib/pwn/sast/logger.rb +9 -3
- data/lib/pwn/sast/md5.rb +9 -3
- data/lib/pwn/sast/outer_html.rb +9 -3
- data/lib/pwn/sast/padding_oracle.rb +9 -3
- data/lib/pwn/sast/password.rb +9 -3
- data/lib/pwn/sast/php_input_mechanisms.rb +9 -3
- data/lib/pwn/sast/php_type_juggling.rb +9 -3
- data/lib/pwn/sast/pom_version.rb +9 -3
- data/lib/pwn/sast/port.rb +9 -3
- data/lib/pwn/sast/post_message.rb +9 -3
- data/lib/pwn/sast/private_key.rb +9 -3
- data/lib/pwn/sast/redirect.rb +9 -3
- data/lib/pwn/sast/redos.rb +9 -3
- data/lib/pwn/sast/shell.rb +9 -3
- data/lib/pwn/sast/signature.rb +9 -3
- data/lib/pwn/sast/sql.rb +9 -3
- data/lib/pwn/sast/ssl.rb +9 -3
- data/lib/pwn/sast/sudo.rb +9 -3
- data/lib/pwn/sast/task_tag.rb +9 -3
- data/lib/pwn/sast/test_case_engine.rb +11 -7
- data/lib/pwn/sast/throw_errors.rb +9 -3
- data/lib/pwn/sast/token.rb +9 -3
- data/lib/pwn/sast/type_script_type_juggling.rb +9 -3
- data/lib/pwn/sast/use_after_free.rb +9 -3
- data/lib/pwn/sast/version.rb +9 -3
- data/lib/pwn/sast/window_location_hash.rb +9 -3
- data/lib/pwn/sast.rb +4 -0
- data/lib/pwn/sdr/decoder/adsb.rb +36 -5
- data/lib/pwn/sdr/decoder/apt.rb +9 -6
- data/lib/pwn/sdr/decoder/base.rb +74 -22
- data/lib/pwn/sdr/decoder/bluetooth.rb +17 -5
- data/lib/pwn/sdr/decoder/dect.rb +12 -3
- data/lib/pwn/sdr/decoder/dsp.rb +229 -39
- data/lib/pwn/sdr/decoder/flex.rb +59 -11
- data/lib/pwn/sdr/decoder/gps.rb +12 -3
- data/lib/pwn/sdr/decoder/gsm.rb +24 -4
- data/lib/pwn/sdr/decoder/iridium.rb +12 -3
- data/lib/pwn/sdr/decoder/lora.rb +13 -4
- data/lib/pwn/sdr/decoder/lte.rb +27 -3
- data/lib/pwn/sdr/decoder/morse.rb +12 -3
- data/lib/pwn/sdr/decoder/p25.rb +12 -3
- data/lib/pwn/sdr/decoder/pager.rb +8 -5
- data/lib/pwn/sdr/decoder/pocsag.rb +29 -9
- data/lib/pwn/sdr/decoder/rds.rb +14 -8
- data/lib/pwn/sdr/decoder/rfid.rb +12 -3
- data/lib/pwn/sdr/decoder/rtl433.rb +12 -3
- data/lib/pwn/sdr/decoder/rtty.rb +8 -5
- data/lib/pwn/sdr/decoder/wifi.rb +12 -3
- data/lib/pwn/sdr/decoder/zigbee.rb +12 -3
- data/lib/pwn/sdr/decoder.rb +9 -0
- data/lib/pwn/sdr/flipper_zero.rb +17 -10
- data/lib/pwn/sdr/frequency_allocation.rb +4 -1
- data/lib/pwn/sdr/gqrx.rb +178 -119
- data/lib/pwn/sdr/rfidler.rb +4 -1
- data/lib/pwn/sdr/son_micro_rfid.rb +37 -24
- data/lib/pwn/sdr.rb +14 -0
- data/lib/pwn/sessions.rb +86 -16
- data/lib/pwn/setup.rb +106 -37
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/app_cobalt_io.rb +11 -5
- data/lib/pwn/www/bing.rb +10 -5
- data/lib/pwn/www/bug_crowd.rb +11 -5
- data/lib/pwn/www/checkip.rb +8 -4
- data/lib/pwn/www/coinbase_pro.rb +11 -5
- data/lib/pwn/www/duckduckgo.rb +12 -6
- data/lib/pwn/www/facebook.rb +11 -5
- data/lib/pwn/www/github.rb +11 -5
- data/lib/pwn/www/google.rb +11 -5
- data/lib/pwn/www/hacker_one.rb +20 -9
- data/lib/pwn/www/linkedin.rb +11 -5
- data/lib/pwn/www/pandora.rb +11 -5
- data/lib/pwn/www/pastebin.rb +9 -4
- data/lib/pwn/www/paypal.rb +19 -11
- data/lib/pwn/www/synack.rb +11 -5
- data/lib/pwn/www/torch.rb +13 -8
- data/lib/pwn/www/trading_view.rb +11 -5
- data/lib/pwn/www/twitter.rb +11 -5
- data/lib/pwn/www/uber.rb +11 -5
- data/lib/pwn/www/upwork.rb +11 -5
- data/lib/pwn/www/wayback_machine.rb +12 -6
- data/lib/pwn/www/youtube.rb +10 -5
- data/lib/pwn/www.rb +4 -0
- data/spec/conventions_spec.rb +118 -2
- data/spec/integration/help_contract_spec.rb +2 -0
- data/spec/lib/pwn/ai/agent/reward_spec.rb +9 -0
- data/spec/lib/pwn/plugins/aflplusplus_spec.rb +13 -0
- data/spec/lib/pwn/plugins/artifact_registry_spec.rb +13 -0
- data/spec/lib/pwn/plugins/binary_parser_spec.rb +21 -0
- data/spec/lib/pwn/plugins/credential_attack_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_db_spec.rb +13 -0
- data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
- data/spec/lib/pwn/plugins/frida_spec.rb +13 -0
- data/spec/lib/pwn/plugins/gdb_spec.rb +13 -0
- data/spec/lib/pwn/plugins/jobs_spec.rb +13 -0
- data/spec/lib/pwn/plugins/k8s_spec.rb +13 -0
- data/spec/lib/pwn/plugins/nuclei_spec.rb +13 -0
- data/spec/lib/pwn/plugins/preflight_checker_spec.rb +23 -0
- data/spec/lib/pwn/plugins/process_tube_spec.rb +13 -0
- data/spec/lib/pwn/plugins/radare2_spec.rb +13 -0
- data/spec/lib/pwn/plugins/recon_spec.rb +26 -0
- data/spec/lib/pwn/plugins/semgrep_spec.rb +13 -0
- data/spec/lib/pwn/plugins/sqlmap_spec.rb +13 -0
- data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
- data/spec/lib/pwn/req_queue_spec.rb +168 -0
- data/third_party/pwn_rdoc.jsonl +160 -5
- metadata +63 -7
- data/etc/default_skills/pwn/memory_index/references/urls.md +0 -4
- data/etc/default_skills/pwn/plugins/transparent_browser/references/urls.md +0 -3
data/lib/pwn/plugins/git.rb
CHANGED
|
@@ -132,27 +132,32 @@ module PWN
|
|
|
132
132
|
# Display Usage for this Module
|
|
133
133
|
|
|
134
134
|
public_class_method def self.help
|
|
135
|
-
puts
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
135
|
+
puts "USAGE:
|
|
136
|
+
# Run gen html diff and return its result
|
|
137
|
+
#{self}.gen_html_diff(
|
|
138
|
+
repo: 'required - required git repo name',
|
|
139
|
+
branch: 'required - required git repo branch (e.g. master, develop, etc)',
|
|
140
|
+
since: 'optional - optional date, otherwise default to last pull'
|
|
140
141
|
)
|
|
141
142
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
to_line: 'required line number to stop in range',
|
|
146
|
-
target_file: 'required file in which line range is queried'
|
|
147
|
-
entry_beautified: 'required boolean'
|
|
143
|
+
# Run dump all repo branches and return its result
|
|
144
|
+
#{self}.dump_all_repo_branches(
|
|
145
|
+
git_url: 'required - required git repo url'
|
|
148
146
|
)
|
|
149
147
|
|
|
150
|
-
|
|
151
|
-
|
|
148
|
+
# Run get author and return its result
|
|
149
|
+
#{self}.get_author(
|
|
150
|
+
repo_root: 'optional - repo root value consumed by #get_author',
|
|
151
|
+
from_line: 'optional - from line value consumed by #get_author',
|
|
152
|
+
to_line: 'optional - to line value consumed by #get_author',
|
|
153
|
+
target_file: 'optional - target file value consumed by #get_author',
|
|
154
|
+
entry_beautified: 'optional - entry beautified value consumed by #get_author'
|
|
152
155
|
)
|
|
153
156
|
|
|
157
|
+
# Print the AUTHOR(S) string for this module.
|
|
154
158
|
#{self}.authors
|
|
155
|
-
|
|
159
|
+
"
|
|
160
|
+
constants.sort
|
|
156
161
|
end
|
|
157
162
|
end
|
|
158
163
|
end
|
data/lib/pwn/plugins/github.rb
CHANGED
|
@@ -235,6 +235,7 @@ module PWN
|
|
|
235
235
|
gh_bin = ENV['PATH'].to_s.split(File::PATH_SEPARATOR)
|
|
236
236
|
.map { |d| File.join(d, 'gh') }
|
|
237
237
|
.find { |f| File.executable?(f) }
|
|
238
|
+
# Run api and return its result
|
|
238
239
|
raise "ERROR: gh CLI not found on PATH - use #{self}.api(path:) instead, or install gh (https://cli.github.com)" unless gh_bin
|
|
239
240
|
|
|
240
241
|
token = resolve_token(opts)
|
|
@@ -259,36 +260,58 @@ module PWN
|
|
|
259
260
|
|
|
260
261
|
public_class_method def self.help
|
|
261
262
|
puts "USAGE:
|
|
262
|
-
|
|
263
|
-
|
|
263
|
+
# Run download all gists and return its result
|
|
264
|
+
#{self}.download_all_gists(
|
|
265
|
+
username: 'optional - username of gists to backup (default PWN::Env[:plugins][:github][:username])',
|
|
264
266
|
target_dir: 'required - target directory to save respective gists'
|
|
265
267
|
)
|
|
266
268
|
|
|
267
|
-
runs
|
|
268
|
-
|
|
269
|
+
# Run workflow runs and return its result
|
|
270
|
+
#{self}.workflow_runs(
|
|
271
|
+
owner: 'required - repo owner (default PWN::Env[:plugins][:github][:username])',
|
|
269
272
|
repo: 'required - repo name',
|
|
270
|
-
workflow: 'optional - e.g. install-matrix.yml',
|
|
271
|
-
params: 'optional - {branch:, status:, per_page:}'
|
|
273
|
+
workflow: 'optional - workflow file name or id (e.g. install-matrix.yml). Omit for all runs.',
|
|
274
|
+
params: 'optional - {branch:, status:, per_page:, page:}',
|
|
275
|
+
token: 'optional - token value consumed by #workflow_runs'
|
|
272
276
|
)
|
|
273
277
|
|
|
274
|
-
jobs
|
|
275
|
-
|
|
278
|
+
# Run workflow run jobs and return its result
|
|
279
|
+
#{self}.workflow_run_jobs(
|
|
280
|
+
owner: 'required - repo owner (default PWN::Env[:plugins][:github][:username])',
|
|
281
|
+
repo: 'required - repo name',
|
|
282
|
+
run_id: 'required - workflow run id',
|
|
283
|
+
params: 'optional - params value consumed by #workflow_run_jobs',
|
|
284
|
+
token: 'optional - token value consumed by #workflow_run_jobs'
|
|
276
285
|
)
|
|
277
286
|
|
|
278
|
-
log
|
|
279
|
-
|
|
287
|
+
# Run job log and return its result
|
|
288
|
+
#{self}.job_log(
|
|
289
|
+
owner: 'required - repo owner (default PWN::Env[:plugins][:github][:username])',
|
|
290
|
+
repo: 'required - repo name',
|
|
291
|
+
job_id: 'required - job id from workflow_run_jobs',
|
|
292
|
+
token: 'optional - token value consumed by #job_log'
|
|
280
293
|
)
|
|
281
294
|
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
295
|
+
# Run api and return its result
|
|
296
|
+
#{self}.api(
|
|
297
|
+
path: 'required - REST path relative to https://api.github.com (e.g. repos/0dayinc/pwn/releases/latest)',
|
|
298
|
+
method: 'optional - :get|:post|:put|:patch|:delete (default :get)',
|
|
299
|
+
params: 'optional - query params Hash',
|
|
300
|
+
body: 'optional - request body Hash/Array/String for POST/PUT/PATCH',
|
|
301
|
+
token: 'optional - PAT (default PWN::Env[:plugins][:github][:personal_access_token])',
|
|
302
|
+
raw: 'optional - return raw RestClient::Response instead of parsed JSON (default false)'
|
|
286
303
|
)
|
|
287
304
|
|
|
288
|
-
#
|
|
305
|
+
# Thin wrapper around the `gh` CLI with GH_TOKEN injected from PWN::Env so
|
|
306
|
+
#{self}.gh(
|
|
307
|
+
cmd: 'required - gh subcommand string, e.g. run list -R 0dayinc/pwn -L 5 --json databaseId,status',
|
|
308
|
+
token: 'optional - PAT (default PWN::Env[:plugins][:github][:personal_access_token])'
|
|
309
|
+
)
|
|
289
310
|
|
|
311
|
+
# Print the AUTHOR(S) string for this module.
|
|
290
312
|
#{self}.authors
|
|
291
313
|
"
|
|
314
|
+
constants.sort
|
|
292
315
|
end
|
|
293
316
|
end
|
|
294
317
|
end
|
|
@@ -876,51 +876,194 @@ module PWN
|
|
|
876
876
|
end
|
|
877
877
|
|
|
878
878
|
public_class_method def self.help
|
|
879
|
-
puts
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
#
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
#
|
|
907
|
-
|
|
908
|
-
#
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
879
|
+
puts "USAGE:
|
|
880
|
+
# Run scopes and return its result
|
|
881
|
+
#{self}.scopes(
|
|
882
|
+
scope: 'optional - scope value consumed by #scopes',
|
|
883
|
+
services: 'optional - services value consumed by #scopes'
|
|
884
|
+
)
|
|
885
|
+
|
|
886
|
+
# Run parse oauth code and return its result
|
|
887
|
+
#{self}.parse_oauth_code(
|
|
888
|
+
code: 'optional - code value consumed by #parse_oauth_code'
|
|
889
|
+
)
|
|
890
|
+
|
|
891
|
+
# Run obtain oauth auth url and return its result
|
|
892
|
+
#{self}.obtain_oauth_auth_url(
|
|
893
|
+
wait: 'optional - wait value consumed by #obtain_oauth_auth_url',
|
|
894
|
+
timeout: 'optional - seconds to wait before giving up',
|
|
895
|
+
probe: 'optional - probe value consumed by #obtain_oauth_auth_url'
|
|
896
|
+
)
|
|
897
|
+
|
|
898
|
+
# Run exchange oauth code and return its result
|
|
899
|
+
#{self}.exchange_oauth_code(
|
|
900
|
+
code: 'required - code value consumed by #exchange_oauth_code',
|
|
901
|
+
code_verifier: 'optional - code verifier value consumed by #exchange_oauth_code (defaults to pending[:verifier])'
|
|
902
|
+
)
|
|
903
|
+
|
|
904
|
+
# Run refresh oauth bearer token and return its result
|
|
905
|
+
#{self}.refresh_oauth_bearer_token(
|
|
906
|
+
refresh_token: 'required - refresh token value consumed by #refresh_oauth_bearer_token (defaults to c[:refresh_token])',
|
|
907
|
+
client_id: 'required - client id value consumed by #refresh_oauth_bearer_token (defaults to c[:client_id])',
|
|
908
|
+
client_secret: 'required - client secret value consumed by #refresh_oauth_bearer_token (defaults to c[:client_secret])'
|
|
909
|
+
)
|
|
910
|
+
|
|
911
|
+
# Run bearer token and return its result
|
|
912
|
+
#{self}.bearer_token
|
|
913
|
+
|
|
914
|
+
# Run authenticated and return its result
|
|
915
|
+
#{self}.authenticated?
|
|
916
|
+
|
|
917
|
+
# Run revoke and return its result
|
|
918
|
+
#{self}.revoke
|
|
919
|
+
|
|
920
|
+
# ── Gmail ──────────────────────────────────────────────────────────
|
|
921
|
+
#{self}.gmail_search(
|
|
922
|
+
query: 'optional - search query string',
|
|
923
|
+
max: 'optional - max value consumed by #gmail_search'
|
|
924
|
+
)
|
|
925
|
+
|
|
926
|
+
# Run gmail get and return its result
|
|
927
|
+
#{self}.gmail_get(
|
|
928
|
+
id: 'required - id value consumed by #gmail_get',
|
|
929
|
+
format: 'optional - format value consumed by #gmail_get (defaults to full)'
|
|
930
|
+
)
|
|
931
|
+
|
|
932
|
+
# Run gmail send and return its result
|
|
933
|
+
#{self}.gmail_send(
|
|
934
|
+
to: 'required - to value consumed by #gmail_send'
|
|
935
|
+
)
|
|
936
|
+
|
|
937
|
+
# Run gmail reply and return its result
|
|
938
|
+
#{self}.gmail_reply(
|
|
939
|
+
id: 'required - id value consumed by #gmail_reply'
|
|
940
|
+
)
|
|
941
|
+
|
|
942
|
+
# Run gmail labels and return its result
|
|
943
|
+
#{self}.gmail_labels
|
|
944
|
+
|
|
945
|
+
# Run gmail modify and return its result
|
|
946
|
+
#{self}.gmail_modify(
|
|
947
|
+
id: 'required - id value consumed by #gmail_modify',
|
|
948
|
+
add_labels: 'optional - add labels value consumed by #gmail_modify',
|
|
949
|
+
add: 'required - add value consumed by #gmail_modify',
|
|
950
|
+
remove_labels: 'optional - remove labels value consumed by #gmail_modify',
|
|
951
|
+
remove: 'required - remove value consumed by #gmail_modify'
|
|
952
|
+
)
|
|
953
|
+
|
|
954
|
+
# ── Calendar ───────────────────────────────────────────────────────
|
|
955
|
+
#{self}.calendar_list(
|
|
956
|
+
calendar_id: 'optional - calendar id value consumed by #calendar_list',
|
|
957
|
+
start: 'optional - start value consumed by #calendar_list',
|
|
958
|
+
end: 'optional - end value consumed by #calendar_list',
|
|
959
|
+
max: 'optional - max value consumed by #calendar_list'
|
|
960
|
+
)
|
|
961
|
+
|
|
962
|
+
# Run calendar create and return its result
|
|
963
|
+
#{self}.calendar_create(
|
|
964
|
+
calendar_id: 'optional - calendar id value consumed by #calendar_create'
|
|
965
|
+
)
|
|
966
|
+
|
|
967
|
+
# Run calendar update and return its result
|
|
968
|
+
#{self}.calendar_update(
|
|
969
|
+
id: 'required - id value consumed by #calendar_update',
|
|
970
|
+
calendar_id: 'optional - calendar id value consumed by #calendar_update'
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
# Run calendar delete and return its result
|
|
974
|
+
#{self}.calendar_delete(
|
|
975
|
+
id: 'required - id value consumed by #calendar_delete',
|
|
976
|
+
calendar_id: 'optional - calendar id value consumed by #calendar_delete'
|
|
977
|
+
)
|
|
978
|
+
|
|
979
|
+
# ── Drive ──────────────────────────────────────────────────────────
|
|
980
|
+
#{self}.drive_search(
|
|
981
|
+
query: 'optional - search query string',
|
|
982
|
+
raw_query: 'optional - raw query value consumed by #drive_search',
|
|
983
|
+
max: 'optional - max value consumed by #drive_search'
|
|
984
|
+
)
|
|
985
|
+
|
|
986
|
+
# Run drive get and return its result
|
|
987
|
+
#{self}.drive_get(
|
|
988
|
+
id: 'required - id value consumed by #drive_get'
|
|
989
|
+
)
|
|
990
|
+
|
|
991
|
+
# Run drive upload and return its result
|
|
992
|
+
#{self}.drive_upload(
|
|
993
|
+
path: 'required - filesystem path to read or write',
|
|
994
|
+
name: 'required - binary or identifier name',
|
|
995
|
+
parent: 'optional - parent value consumed by #drive_upload',
|
|
996
|
+
mime: 'optional - mime value consumed by #drive_upload'
|
|
997
|
+
)
|
|
998
|
+
|
|
999
|
+
# Run drive download and return its result
|
|
1000
|
+
#{self}.drive_download(
|
|
1001
|
+
id: 'required - id value consumed by #drive_download',
|
|
1002
|
+
export_mime: 'optional - export mime value consumed by #drive_download (defaults to EXPORT_MIME[meta[:mimeType])',
|
|
1003
|
+
output: 'optional - output value consumed by #drive_download'
|
|
1004
|
+
)
|
|
1005
|
+
|
|
1006
|
+
# Run drive create folder and return its result
|
|
1007
|
+
#{self}.drive_create_folder(
|
|
1008
|
+
name: 'required - binary or identifier name',
|
|
1009
|
+
parent: 'optional - parent value consumed by #drive_create_folder'
|
|
1010
|
+
)
|
|
1011
|
+
|
|
1012
|
+
# Run drive share and return its result
|
|
1013
|
+
#{self}.drive_share(
|
|
1014
|
+
id: 'required - id value consumed by #drive_share',
|
|
1015
|
+
role: 'optional - role value consumed by #drive_share',
|
|
1016
|
+
type: 'optional - type value consumed by #drive_share',
|
|
1017
|
+
email: 'optional - email value consumed by #drive_share',
|
|
1018
|
+
domain: 'optional - FQDN to query (e.g. example.com)',
|
|
1019
|
+
notify: 'optional - notify value consumed by #drive_share'
|
|
1020
|
+
)
|
|
1021
|
+
|
|
1022
|
+
# Run drive delete and return its result
|
|
1023
|
+
#{self}.drive_delete(
|
|
1024
|
+
id: 'required - id value consumed by #drive_delete',
|
|
1025
|
+
permanent: 'optional - permanent value consumed by #drive_delete'
|
|
1026
|
+
)
|
|
1027
|
+
|
|
1028
|
+
# ── Docs ───────────────────────────────────────────────────────────
|
|
1029
|
+
#{self}.docs_get(
|
|
1030
|
+
id: 'required - id value consumed by #docs_get'
|
|
1031
|
+
)
|
|
1032
|
+
|
|
1033
|
+
# Run docs create and return its result
|
|
1034
|
+
#{self}.docs_create(
|
|
1035
|
+
title: 'required - title value consumed by #docs_create',
|
|
1036
|
+
body: 'optional - body value consumed by #docs_create'
|
|
1037
|
+
)
|
|
1038
|
+
|
|
1039
|
+
# Run docs append and return its result
|
|
1040
|
+
#{self}.docs_append(
|
|
1041
|
+
id: 'required - id value consumed by #docs_append',
|
|
1042
|
+
text: 'optional - text value consumed by #docs_append'
|
|
1043
|
+
)
|
|
1044
|
+
|
|
1045
|
+
# ── Sheets ─────────────────────────────────────────────────────────
|
|
1046
|
+
#{self}.sheets_create(
|
|
1047
|
+
title: 'required - title value consumed by #sheets_create',
|
|
1048
|
+
sheet_name: 'optional - sheet name value consumed by #sheets_create'
|
|
1049
|
+
)
|
|
1050
|
+
|
|
1051
|
+
# Run sheets get and return its result
|
|
1052
|
+
#{self}.sheets_get(
|
|
1053
|
+
id: 'required - id value consumed by #sheets_get',
|
|
1054
|
+
range: 'required - range value consumed by #sheets_get'
|
|
1055
|
+
)
|
|
1056
|
+
|
|
1057
|
+
# Run sheets update and return its result
|
|
1058
|
+
#{self}.sheets_update
|
|
1059
|
+
|
|
1060
|
+
# Run sheets append and return its result
|
|
1061
|
+
#{self}.sheets_append
|
|
1062
|
+
|
|
1063
|
+
# Print the AUTHOR(S) string for this module.
|
|
1064
|
+
#{self}.authors
|
|
1065
|
+
"
|
|
1066
|
+
constants.sort
|
|
924
1067
|
end
|
|
925
1068
|
end
|
|
926
1069
|
end
|
|
@@ -658,49 +658,173 @@ module PWN
|
|
|
658
658
|
|
|
659
659
|
public_class_method def self.help
|
|
660
660
|
puts "USAGE:
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
661
|
+
# Run login and return its result
|
|
662
|
+
#{self}.login(
|
|
663
|
+
username: 'optional - username (default PWN::Env[:plugins][:hackerone][:username])',
|
|
664
|
+
api_key: 'optional - api token (default PWN::Env; will prompt if still nil)',
|
|
665
|
+
token: 'optional - alias for api_key'
|
|
664
666
|
)
|
|
665
667
|
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
668
|
+
# Run api and return its result
|
|
669
|
+
#{self}.api(
|
|
670
|
+
path: 'required - path relative to /v1/hackers (e.g. me/reports)',
|
|
671
|
+
method: 'optional - :get|:post|:put|:patch|:delete (default :get)',
|
|
672
|
+
params: 'optional - query params Hash',
|
|
673
|
+
body: 'optional - request body Hash/Array/String (defaults to opts[:http_body])',
|
|
674
|
+
username: 'optional - username value consumed by #api',
|
|
675
|
+
api_key: 'optional - api key value consumed by #api',
|
|
676
|
+
h1_obj: 'optional - session from #login (supplies username/api_key)',
|
|
677
|
+
raw: 'optional - return raw response (default false)',
|
|
678
|
+
http_method: 'optional - http method value consumed by #api (defaults to :get)',
|
|
679
|
+
http_body: 'optional - http body value consumed by #api'
|
|
672
680
|
)
|
|
673
681
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
programs = #{self}.get_programs
|
|
679
|
-
program = #{self}.get_program(handle: 'security')
|
|
680
|
-
scopes = #{self}.get_structured_scopes(handle: 'security')
|
|
681
|
-
excl = #{self}.get_scope_exclusions(handle: 'security')
|
|
682
|
-
weak = #{self}.get_weaknesses(handle: 'security')
|
|
683
|
-
|
|
684
|
-
items = #{self}.get_hacktivity
|
|
685
|
-
|
|
686
|
-
intents = #{self}.get_report_intents
|
|
687
|
-
intent = #{self}.get_report_intent(id: 1)
|
|
688
|
-
intent = #{self}.create_report_intent(body: { data: { type: 'report-intent', attributes: {} } })
|
|
689
|
-
intent = #{self}.update_report_intent(id: 1, body: { data: { type: 'report-intent', attributes: {} } })
|
|
690
|
-
#{self}.submit_report_intent(id: 1)
|
|
691
|
-
#{self}.delete_report_intent(id: 1)
|
|
692
|
-
atts = #{self}.get_report_intent_attachments(report_intent_id: 1)
|
|
693
|
-
#{self}.delete_report_intent_attachment(report_intent_id: 1, id: 2)
|
|
694
|
-
|
|
695
|
-
json = #{self}.api(
|
|
696
|
-
path: 'me/reports',
|
|
697
|
-
method: :get,
|
|
698
|
-
params: { page: { number: 1 } }
|
|
682
|
+
# ---- Reports -------------------------------------------------------
|
|
683
|
+
#{self}.get_me_reports(
|
|
684
|
+
params: 'optional - query params Hash (e.g. page/filter)',
|
|
685
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
699
686
|
)
|
|
700
687
|
|
|
701
|
-
#
|
|
688
|
+
# Run get report and return its result
|
|
689
|
+
#{self}.get_report(
|
|
690
|
+
id: 'required - report id',
|
|
691
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
692
|
+
params: 'optional - params value consumed by #get_report'
|
|
693
|
+
)
|
|
694
|
+
|
|
695
|
+
# Run create report and return its result
|
|
696
|
+
#{self}.create_report(
|
|
697
|
+
team_handle: 'required - program handle',
|
|
698
|
+
title: 'required - report title',
|
|
699
|
+
vulnerability_information: 'required - detailed description',
|
|
700
|
+
impact: 'optional - impact text',
|
|
701
|
+
severity_rating: 'optional - none|low|medium|high|critical',
|
|
702
|
+
weakness_id: 'optional - weakness id integer',
|
|
703
|
+
structured_scope_id: 'optional - structured scope id value consumed by #create_report',
|
|
704
|
+
body: 'optional - full JSON:API body Hash (overrides attribute kwargs)',
|
|
705
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
706
|
+
)
|
|
707
|
+
|
|
708
|
+
# ---- Payments ------------------------------------------------------
|
|
709
|
+
#{self}.get_balance(
|
|
710
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
# Run get earnings and return its result
|
|
714
|
+
#{self}.get_earnings(
|
|
715
|
+
params: 'optional - query params Hash',
|
|
716
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
717
|
+
)
|
|
718
|
+
|
|
719
|
+
# Run get payouts and return its result
|
|
720
|
+
#{self}.get_payouts(
|
|
721
|
+
params: 'optional - query params Hash',
|
|
722
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
723
|
+
)
|
|
724
|
+
|
|
725
|
+
# ---- Programs -------------------------------------------------------
|
|
726
|
+
#{self}.get_programs(
|
|
727
|
+
params: 'optional - query params Hash',
|
|
728
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
# Run get program and return its result
|
|
732
|
+
#{self}.get_program(
|
|
733
|
+
handle: 'required - program handle',
|
|
734
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
735
|
+
params: 'optional - params value consumed by #get_program'
|
|
736
|
+
)
|
|
737
|
+
|
|
738
|
+
# Run get structured scopes and return its result
|
|
739
|
+
#{self}.get_structured_scopes(
|
|
740
|
+
handle: 'required - program handle',
|
|
741
|
+
params: 'optional - params value consumed by #get_structured_scopes',
|
|
742
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
743
|
+
)
|
|
744
|
+
|
|
745
|
+
# Run get scope exclusions and return its result
|
|
746
|
+
#{self}.get_scope_exclusions(
|
|
747
|
+
handle: 'required - program handle',
|
|
748
|
+
params: 'optional - params value consumed by #get_scope_exclusions',
|
|
749
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
750
|
+
)
|
|
751
|
+
|
|
752
|
+
# Run get weaknesses and return its result
|
|
753
|
+
#{self}.get_weaknesses(
|
|
754
|
+
handle: 'required - program handle',
|
|
755
|
+
params: 'optional - params value consumed by #get_weaknesses',
|
|
756
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
757
|
+
)
|
|
758
|
+
|
|
759
|
+
# ---- Hacktivity -----------------------------------------------------
|
|
760
|
+
#{self}.get_hacktivity(
|
|
761
|
+
params: 'optional - query params Hash',
|
|
762
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
763
|
+
)
|
|
764
|
+
|
|
765
|
+
# ---- Report Intents ------------------------------------------------
|
|
766
|
+
#{self}.get_report_intents(
|
|
767
|
+
params: 'optional - params value consumed by #get_report_intents',
|
|
768
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
769
|
+
)
|
|
770
|
+
|
|
771
|
+
# Run get report intent and return its result
|
|
772
|
+
#{self}.get_report_intent(
|
|
773
|
+
id: 'required - report intent id',
|
|
774
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
775
|
+
params: 'optional - params value consumed by #get_report_intent'
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
# Run create report intent and return its result
|
|
779
|
+
#{self}.create_report_intent(
|
|
780
|
+
body: 'required - full JSON:API body Hash',
|
|
781
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
782
|
+
)
|
|
783
|
+
|
|
784
|
+
# Run update report intent and return its result
|
|
785
|
+
#{self}.update_report_intent(
|
|
786
|
+
id: 'required - report intent id',
|
|
787
|
+
body: 'required - full JSON:API body Hash',
|
|
788
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
# Run delete report intent and return its result
|
|
792
|
+
#{self}.delete_report_intent(
|
|
793
|
+
id: 'required - report intent id',
|
|
794
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
795
|
+
)
|
|
796
|
+
|
|
797
|
+
# Run submit report intent and return its result
|
|
798
|
+
#{self}.submit_report_intent(
|
|
799
|
+
id: 'required - report intent id',
|
|
800
|
+
body: 'optional - JSON:API body Hash',
|
|
801
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
802
|
+
)
|
|
803
|
+
|
|
804
|
+
# Run get report intent attachments and return its result
|
|
805
|
+
#{self}.get_report_intent_attachments(
|
|
806
|
+
report_intent_id: 'required - report intent id value consumed by #get_report_intent_attachments (defaults to opts[:id])',
|
|
807
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
808
|
+
id: 'required - id value consumed by #get_report_intent_attachments',
|
|
809
|
+
params: 'optional - params value consumed by #get_report_intent_attachments'
|
|
810
|
+
)
|
|
811
|
+
|
|
812
|
+
# Run delete report intent attachment and return its result
|
|
813
|
+
#{self}.delete_report_intent_attachment(
|
|
814
|
+
report_intent_id: 'required - report intent id value consumed by #delete_report_intent_attachment',
|
|
815
|
+
id: 'required - attachment id',
|
|
816
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
817
|
+
)
|
|
818
|
+
|
|
819
|
+
# Clears the session hash in-place (no server-side session to destroy)
|
|
820
|
+
#{self}.logout(
|
|
821
|
+
h1_obj: 'required - required h1_obj returned from #login method'
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
# Print the AUTHOR(S) string for this module.
|
|
702
825
|
#{self}.authors
|
|
703
826
|
"
|
|
827
|
+
constants.sort
|
|
704
828
|
end
|
|
705
829
|
end
|
|
706
830
|
end
|
data/lib/pwn/plugins/hunter.rb
CHANGED
|
@@ -142,18 +142,21 @@ module PWN
|
|
|
142
142
|
|
|
143
143
|
public_class_method def self.help
|
|
144
144
|
puts "USAGE:
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
# Run a search using the open session.
|
|
146
|
+
#{self}.search(
|
|
147
|
+
api_key: 'required - required hunter api key',
|
|
147
148
|
query: 'required - hunter search query',
|
|
148
149
|
start_time: 'required - start date for the search (format is yyyy-mm-dd)',
|
|
149
150
|
end_time: 'required - end date for the search (format is yyyy-mm-dd)',
|
|
150
151
|
start_page: 'optional - starting page number for pagination (default is 1)',
|
|
151
152
|
page_size: 'optional - number of results per page (default is 10)',
|
|
152
|
-
fields: 'optional - comma-separated list of fields
|
|
153
|
+
fields: 'optional - comma-separated list of fields product,transport_protocol,protocol,banner,country,province,city,asn,org,web,updated_at (default is nil)'
|
|
153
154
|
)
|
|
154
155
|
|
|
156
|
+
# Print the AUTHOR(S) string for this module.
|
|
155
157
|
#{self}.authors
|
|
156
158
|
"
|
|
159
|
+
constants.sort
|
|
157
160
|
end
|
|
158
161
|
end
|
|
159
162
|
end
|
data/lib/pwn/plugins/ip_info.rb
CHANGED
|
@@ -235,29 +235,34 @@ module PWN
|
|
|
235
235
|
|
|
236
236
|
public_class_method def self.help
|
|
237
237
|
puts "USAGE:
|
|
238
|
-
|
|
238
|
+
# Run check rfc1918 and return its result
|
|
239
|
+
#{self}.check_rfc1918(
|
|
239
240
|
ip: 'required - IP to check'
|
|
240
241
|
)
|
|
241
242
|
|
|
242
|
-
|
|
243
|
+
# Run get and return its result
|
|
244
|
+
#{self}.get(
|
|
243
245
|
target: 'required - IP or Host to lookup',
|
|
244
246
|
proxy: 'optional - use a proxy',
|
|
245
|
-
tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
247
|
+
tls_port: 'optional - optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
246
248
|
skip_api: 'optional - skip the API call',
|
|
247
249
|
dns_server: 'optional - DNS server to use for lookup (default: your default DNS server)'
|
|
248
250
|
)
|
|
249
251
|
|
|
252
|
+
# Run bruteforce subdomains and return its result
|
|
250
253
|
#{self}.bruteforce_subdomains(
|
|
251
254
|
parent_domain: 'required - Parent Domain to brute force',
|
|
252
255
|
dictionary: 'required - Dictionary to use for subdomain brute force',
|
|
253
256
|
max_threads: 'optional - Maximum number of threads to use (default: 9)',
|
|
254
257
|
proxy: 'optional - use a proxy',
|
|
255
|
-
tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
258
|
+
tls_port: 'optional - optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
256
259
|
results_file: 'optional - File to write results to (default: /tmp/parent_domain-timestamp-pwn_bruteforce_subdomains.txt)'
|
|
257
260
|
)
|
|
258
261
|
|
|
262
|
+
# Print the AUTHOR(S) string for this module.
|
|
259
263
|
#{self}.authors
|
|
260
264
|
"
|
|
265
|
+
constants.sort
|
|
261
266
|
end
|
|
262
267
|
end
|
|
263
268
|
end
|