pwn 0.5.708 → 0.5.709
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/documentation/Installation.md +1 -0
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/bridges/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/SKILL.md +30 -8
- data/etc/default_skills/pwn/ai/agent/extrospection/osint/social/references/urls.md +1 -1
- data/etc/default_skills/pwn/ai/agent/extrospection/references/urls.md +0 -1
- data/etc/default_skills/pwn/memory_index/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/aflplusplus/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/android/SKILL.md +1 -0
- data/etc/default_skills/pwn/plugins/artifact_registry/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/binary_parser/SKILL.md +54 -0
- data/etc/default_skills/pwn/plugins/credential_attack/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/doctor/SKILL.md +57 -0
- data/etc/default_skills/pwn/plugins/exploit_dev/SKILL.md +61 -0
- data/etc/default_skills/pwn/plugins/frida/SKILL.md +49 -0
- data/etc/default_skills/pwn/plugins/gdb/SKILL.md +52 -0
- data/etc/default_skills/pwn/plugins/jobs/SKILL.md +51 -0
- data/etc/default_skills/pwn/plugins/nuclei/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/process_tube/SKILL.md +52 -0
- data/etc/default_skills/pwn/plugins/radare2/SKILL.md +59 -0
- data/etc/default_skills/pwn/plugins/recon/SKILL.md +55 -0
- data/etc/default_skills/pwn/plugins/recon/references/urls.md +5 -0
- data/etc/default_skills/pwn/plugins/sqlmap/SKILL.md +48 -0
- data/etc/default_skills/pwn/plugins/transparent_browser/SKILL.md +0 -4
- data/etc/default_skills/pwn/plugins/volatility/SKILL.md +48 -0
- data/lib/pwn/ai/agent/assembly.rb +4 -1
- data/lib/pwn/ai/agent/btc.rb +4 -1
- data/lib/pwn/ai/agent/burp_suite.rb +5 -2
- data/lib/pwn/ai/agent/curriculum.rb +89 -30
- data/lib/pwn/ai/agent/dispatch.rb +27 -16
- data/lib/pwn/ai/agent/extrospection/osint/bridges.rb +9 -18
- data/lib/pwn/ai/agent/extrospection/osint/social.rb +9 -18
- data/lib/pwn/ai/agent/extrospection.rb +185 -60
- data/lib/pwn/ai/agent/gqrx.rb +4 -1
- data/lib/pwn/ai/agent/hacker_one.rb +5 -2
- data/lib/pwn/ai/agent/learning.rb +142 -25
- data/lib/pwn/ai/agent/loop.rb +53 -46
- data/lib/pwn/ai/agent/metrics.rb +133 -23
- data/lib/pwn/ai/agent/mistakes.rb +126 -17
- data/lib/pwn/ai/agent/open_goal.rb +25 -9
- data/lib/pwn/ai/agent/policy.rb +158 -18
- data/lib/pwn/ai/agent/prompt_builder.rb +21 -11
- data/lib/pwn/ai/agent/prompt_cache.rb +44 -13
- data/lib/pwn/ai/agent/reflect.rb +9 -5
- data/lib/pwn/ai/agent/registry.rb +65 -12
- data/lib/pwn/ai/agent/result.rb +19 -10
- data/lib/pwn/ai/agent/reward.rb +150 -32
- data/lib/pwn/ai/agent/sast.rb +4 -1
- data/lib/pwn/ai/agent/swarm.rb +72 -36
- data/lib/pwn/ai/agent/task_summarizer.rb +165 -36
- data/lib/pwn/ai/agent/tool_guard.rb +105 -6
- data/lib/pwn/ai/agent/transparent_browser.rb +4 -1
- data/lib/pwn/ai/agent/turn_finalizer.rb +41 -21
- data/lib/pwn/ai/agent/vuln_gen.rb +6 -3
- data/lib/pwn/ai/agent.rb +4 -0
- data/lib/pwn/ai/anthropic.rb +41 -7
- data/lib/pwn/ai/gemini.rb +21 -11
- data/lib/pwn/ai/grok.rb +44 -6
- data/lib/pwn/ai/http_retry.rb +40 -12
- data/lib/pwn/ai/ollama.rb +19 -10
- data/lib/pwn/ai/open_ai.rb +81 -30
- data/lib/pwn/ai/open_web_ui.rb +20 -14
- data/lib/pwn/ai/red_team/agent_protocol_abuse.rb +7 -1
- data/lib/pwn/ai/red_team/data_and_model_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/excessive_agency.rb +7 -1
- data/lib/pwn/ai/red_team/hidden_context_exposure.rb +7 -1
- data/lib/pwn/ai/red_team/insecure_output_handling.rb +7 -1
- data/lib/pwn/ai/red_team/jailbreak.rb +7 -1
- data/lib/pwn/ai/red_team/memory_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/multimodal_injection.rb +7 -1
- data/lib/pwn/ai/red_team/overreliance.rb +7 -1
- data/lib/pwn/ai/red_team/payload_splitting.rb +7 -1
- data/lib/pwn/ai/red_team/prompt_injection.rb +7 -1
- data/lib/pwn/ai/red_team/rag_poisoning.rb +7 -1
- data/lib/pwn/ai/red_team/sensitive_information_disclosure.rb +7 -1
- data/lib/pwn/ai/red_team/supply_chain.rb +7 -1
- data/lib/pwn/ai/red_team/system_prompt_extraction.rb +7 -1
- data/lib/pwn/ai/red_team/test_case_engine.rb +12 -9
- data/lib/pwn/ai/red_team/token_smuggling.rb +7 -1
- data/lib/pwn/ai/red_team/unbounded_consumption.rb +7 -1
- data/lib/pwn/ai/red_team/vector_and_embedding_weaknesses.rb +7 -1
- data/lib/pwn/ai/red_team.rb +4 -0
- data/lib/pwn/ai.rb +4 -0
- data/lib/pwn/aws/acm.rb +5 -2
- data/lib/pwn/aws/api_gateway.rb +10 -7
- data/lib/pwn/aws/app_stream.rb +5 -2
- data/lib/pwn/aws/application_auto_scaling.rb +5 -2
- data/lib/pwn/aws/application_discovery_service.rb +5 -2
- data/lib/pwn/aws/auto_scaling.rb +5 -2
- data/lib/pwn/aws/batch.rb +5 -2
- data/lib/pwn/aws/budgets.rb +5 -2
- data/lib/pwn/aws/cloud_formation.rb +5 -2
- data/lib/pwn/aws/cloud_front.rb +7 -4
- data/lib/pwn/aws/cloud_hsm.rb +5 -2
- data/lib/pwn/aws/cloud_search.rb +5 -2
- data/lib/pwn/aws/cloud_search_domain.rb +5 -2
- data/lib/pwn/aws/cloud_trail.rb +5 -2
- data/lib/pwn/aws/cloud_watch.rb +5 -2
- data/lib/pwn/aws/cloud_watch_events.rb +5 -2
- data/lib/pwn/aws/cloud_watch_logs.rb +5 -2
- data/lib/pwn/aws/code_build.rb +5 -2
- data/lib/pwn/aws/code_commit.rb +5 -2
- data/lib/pwn/aws/code_deploy.rb +5 -2
- data/lib/pwn/aws/code_pipeline.rb +5 -2
- data/lib/pwn/aws/cognito_identity.rb +5 -2
- data/lib/pwn/aws/cognito_identity_provider.rb +5 -2
- data/lib/pwn/aws/cognito_sync.rb +5 -2
- data/lib/pwn/aws/config_service.rb +5 -2
- data/lib/pwn/aws/data_pipleline.rb +5 -2
- data/lib/pwn/aws/database_migration_service.rb +5 -2
- data/lib/pwn/aws/device_farm.rb +5 -2
- data/lib/pwn/aws/direct_connect.rb +5 -2
- data/lib/pwn/aws/directory_service.rb +5 -2
- data/lib/pwn/aws/dynamo_db.rb +5 -2
- data/lib/pwn/aws/dynamo_db_streams.rb +5 -2
- data/lib/pwn/aws/ec2.rb +5 -2
- data/lib/pwn/aws/ecr.rb +5 -2
- data/lib/pwn/aws/ecs.rb +5 -2
- data/lib/pwn/aws/efs.rb +5 -2
- data/lib/pwn/aws/elasti_cache.rb +5 -2
- data/lib/pwn/aws/elastic_beanstalk.rb +8 -5
- data/lib/pwn/aws/elastic_load_balancing.rb +5 -2
- data/lib/pwn/aws/elastic_load_balancing_v2.rb +6 -3
- data/lib/pwn/aws/elastic_transcoder.rb +5 -2
- data/lib/pwn/aws/elasticsearch_service.rb +5 -2
- data/lib/pwn/aws/emr.rb +5 -2
- data/lib/pwn/aws/firehose.rb +5 -2
- data/lib/pwn/aws/game_lift.rb +5 -2
- data/lib/pwn/aws/glacier.rb +6 -3
- data/lib/pwn/aws/health.rb +5 -2
- data/lib/pwn/aws/iam.rb +10 -4
- data/lib/pwn/aws/import_export.rb +5 -2
- data/lib/pwn/aws/inspector.rb +5 -2
- data/lib/pwn/aws/iot.rb +5 -2
- data/lib/pwn/aws/iot_data_plane.rb +5 -2
- data/lib/pwn/aws/kinesis.rb +5 -2
- data/lib/pwn/aws/kinesis_analytics.rb +5 -2
- data/lib/pwn/aws/kms.rb +5 -2
- data/lib/pwn/aws/lambda.rb +5 -2
- data/lib/pwn/aws/lambda_preview.rb +5 -2
- data/lib/pwn/aws/lex.rb +5 -2
- data/lib/pwn/aws/lightsail.rb +5 -2
- data/lib/pwn/aws/machine_learning.rb +5 -2
- data/lib/pwn/aws/marketplace_commerce_analytics.rb +5 -2
- data/lib/pwn/aws/marketplace_metering.rb +5 -2
- data/lib/pwn/aws/ops_works.rb +5 -2
- data/lib/pwn/aws/ops_works_cm.rb +5 -2
- data/lib/pwn/aws/pinpoint.rb +5 -2
- data/lib/pwn/aws/polly.rb +5 -2
- data/lib/pwn/aws/rds.rb +5 -2
- data/lib/pwn/aws/redshift.rb +5 -2
- data/lib/pwn/aws/rekognition.rb +5 -2
- data/lib/pwn/aws/route53.rb +5 -2
- data/lib/pwn/aws/route53_domains.rb +5 -2
- data/lib/pwn/aws/s3.rb +5 -2
- data/lib/pwn/aws/service_catalog.rb +5 -2
- data/lib/pwn/aws/ses.rb +5 -2
- data/lib/pwn/aws/shield.rb +5 -2
- data/lib/pwn/aws/simple_db.rb +5 -2
- data/lib/pwn/aws/sms.rb +5 -2
- data/lib/pwn/aws/snowball.rb +5 -2
- data/lib/pwn/aws/sns.rb +5 -2
- data/lib/pwn/aws/sqs.rb +5 -2
- data/lib/pwn/aws/ssm.rb +5 -2
- data/lib/pwn/aws/states.rb +5 -2
- data/lib/pwn/aws/storage_gateway.rb +5 -2
- data/lib/pwn/aws/sts.rb +4 -1
- data/lib/pwn/aws/support.rb +5 -2
- data/lib/pwn/aws/swf.rb +5 -2
- data/lib/pwn/aws/waf.rb +5 -2
- data/lib/pwn/aws/waf_regional.rb +5 -2
- data/lib/pwn/aws/workspaces.rb +5 -2
- data/lib/pwn/aws/x_ray.rb +5 -2
- data/lib/pwn/aws.rb +4 -0
- data/lib/pwn/banner/anon.rb +3 -0
- data/lib/pwn/banner/bubble.rb +3 -0
- data/lib/pwn/banner/cheshire.rb +3 -0
- data/lib/pwn/banner/code_cave.rb +3 -0
- data/lib/pwn/banner/dont_panic.rb +3 -0
- data/lib/pwn/banner/f_society.rb +3 -0
- data/lib/pwn/banner/fork_bomb.rb +3 -0
- data/lib/pwn/banner/jmp_esp.rb +3 -0
- data/lib/pwn/banner/matrix.rb +5 -1
- data/lib/pwn/banner/ninja.rb +3 -0
- data/lib/pwn/banner/off_the_air.rb +3 -0
- data/lib/pwn/banner/pirate.rb +3 -0
- data/lib/pwn/banner/radare2.rb +3 -0
- data/lib/pwn/banner/radare2_ai.rb +3 -0
- data/lib/pwn/banner/white_rabbit.rb +3 -0
- data/lib/pwn/banner.rb +6 -2
- data/lib/pwn/blockchain/btc.rb +8 -3
- data/lib/pwn/blockchain/eth.rb +10 -3
- data/lib/pwn/blockchain.rb +4 -0
- data/lib/pwn/bounty/lifecycle_authz_replay.rb +46 -27
- data/lib/pwn/bounty.rb +4 -0
- data/lib/pwn/config.rb +79 -13
- data/lib/pwn/cron.rb +297 -20
- data/lib/pwn/driver.rb +2 -18
- data/lib/pwn/ffi/adalm_pluto.rb +65 -11
- data/lib/pwn/ffi/fftw.rb +31 -6
- data/lib/pwn/ffi/hack_rf.rb +59 -8
- data/lib/pwn/ffi/liquid.rb +63 -10
- data/lib/pwn/ffi/rtl_sdr.rb +35 -5
- data/lib/pwn/ffi/soapy_sdr.rb +60 -10
- data/lib/pwn/ffi/stdio.rb +5 -8
- data/lib/pwn/ffi/volk.rb +36 -7
- data/lib/pwn/ffi.rb +12 -0
- data/lib/pwn/memory.rb +136 -16
- data/lib/pwn/memory_index.rb +34 -19
- data/lib/pwn/migrate.rb +34 -24
- data/lib/pwn/module_skills.rb +39 -8
- data/lib/pwn/plugins/aflplusplus.rb +52 -0
- data/lib/pwn/plugins/android.rb +65 -245
- data/lib/pwn/plugins/artifact_registry.rb +71 -0
- data/lib/pwn/plugins/assembly.rb +9 -4
- data/lib/pwn/plugins/authentication_helper.rb +8 -5
- data/lib/pwn/plugins/baresip.rb +59 -12
- data/lib/pwn/plugins/basic_auth.rb +9 -3
- data/lib/pwn/plugins/beef.rb +28 -18
- data/lib/pwn/plugins/binary_parser.rb +133 -0
- data/lib/pwn/plugins/black_duck_binary_analysis.rb +63 -39
- data/lib/pwn/plugins/burp_suite.rb +98 -68
- data/lib/pwn/plugins/bus_pirate.rb +15 -8
- data/lib/pwn/plugins/char.rb +33 -3
- data/lib/pwn/plugins/credential_attack.rb +99 -0
- data/lib/pwn/plugins/credit_card.rb +6 -1
- data/lib/pwn/plugins/dao_ldap.rb +19 -13
- data/lib/pwn/plugins/dao_mongo.rb +11 -5
- data/lib/pwn/plugins/dao_postgres.rb +28 -19
- data/lib/pwn/plugins/dao_sqlite3.rb +15 -6
- data/lib/pwn/plugins/defect_dojo.rb +38 -22
- data/lib/pwn/plugins/detect_os.rb +5 -0
- data/lib/pwn/plugins/doctor.rb +149 -0
- data/lib/pwn/plugins/ein.rb +3 -0
- data/lib/pwn/plugins/exploit_dev.rb +264 -0
- data/lib/pwn/plugins/file_fu.rb +11 -8
- data/lib/pwn/plugins/frida.rb +61 -0
- data/lib/pwn/plugins/fuzz.rb +9 -6
- data/lib/pwn/plugins/gdb.rb +95 -0
- data/lib/pwn/plugins/git.rb +19 -14
- data/lib/pwn/plugins/github.rb +38 -15
- data/lib/pwn/plugins/google_workspace.rb +188 -45
- data/lib/pwn/plugins/hacker_one.rb +159 -35
- data/lib/pwn/plugins/hunter.rb +6 -3
- data/lib/pwn/plugins/ip_info.rb +9 -4
- data/lib/pwn/plugins/irc.rb +28 -15
- data/lib/pwn/plugins/jenkins.rb +65 -57
- data/lib/pwn/plugins/jira_data_center.rb +30 -22
- data/lib/pwn/plugins/jobs.rb +109 -0
- data/lib/pwn/plugins/json_pathify.rb +9 -5
- data/lib/pwn/plugins/log.rb +113 -13
- data/lib/pwn/plugins/mail_agent.rb +87 -79
- data/lib/pwn/plugins/metasploit.rb +11 -6
- data/lib/pwn/plugins/monkey_patch.rb +3 -0
- data/lib/pwn/plugins/msr206.rb +42 -28
- data/lib/pwn/plugins/nessus_cloud.rb +44 -4
- data/lib/pwn/plugins/nexpose_vuln_scan.rb +40 -24
- data/lib/pwn/plugins/nmap_it.rb +14 -34
- data/lib/pwn/plugins/nuclei.rb +57 -0
- data/lib/pwn/plugins/oauth2.rb +11 -5
- data/lib/pwn/plugins/ocr.rb +3 -0
- data/lib/pwn/plugins/open_api.rb +5 -2
- data/lib/pwn/plugins/openvas.rb +33 -25
- data/lib/pwn/plugins/packet.rb +152 -31
- data/lib/pwn/plugins/pdf_parse.rb +5 -2
- data/lib/pwn/plugins/pony.rb +86 -1
- data/lib/pwn/plugins/process_tube.rb +120 -0
- data/lib/pwn/plugins/ps.rb +7 -1
- data/lib/pwn/plugins/pwn_logger.rb +6 -2
- data/lib/pwn/plugins/rabbit_mq.rb +12 -7
- data/lib/pwn/plugins/radare2.rb +253 -0
- data/lib/pwn/plugins/recon.rb +161 -0
- data/lib/pwn/plugins/repl.rb +122 -1
- data/lib/pwn/plugins/scannable_codes.rb +5 -1
- data/lib/pwn/plugins/serial.rb +24 -14
- data/lib/pwn/plugins/shodan.rb +54 -35
- data/lib/pwn/plugins/slack_client.rb +11 -6
- data/lib/pwn/plugins/sock.rb +16 -8
- data/lib/pwn/plugins/spider.rb +5 -2
- data/lib/pwn/plugins/sqlmap.rb +49 -0
- data/lib/pwn/plugins/ssn.rb +3 -0
- data/lib/pwn/plugins/thread_pool.rb +6 -9
- data/lib/pwn/plugins/tor.rb +9 -4
- data/lib/pwn/plugins/transparent_browser.rb +62 -107
- data/lib/pwn/plugins/tty_spinner.rb +16 -2
- data/lib/pwn/plugins/twitter_api.rb +6 -2
- data/lib/pwn/plugins/uri_scheme.rb +4 -1
- data/lib/pwn/plugins/vault.rb +12 -3
- data/lib/pwn/plugins/vin.rb +24 -12
- data/lib/pwn/plugins/voice.rb +7 -2
- data/lib/pwn/plugins/volatility.rb +48 -0
- data/lib/pwn/plugins/vsphere.rb +9 -5
- data/lib/pwn/plugins/xxd.rb +12 -43
- data/lib/pwn/plugins/zaproxy.rb +30 -16
- data/lib/pwn/plugins.rb +19 -0
- data/lib/pwn/reports/ai_red_team.rb +6 -2
- data/lib/pwn/reports/csv.rb +8 -1
- data/lib/pwn/reports/fuzz.rb +5 -2
- data/lib/pwn/reports/html.rb +8 -1
- data/lib/pwn/reports/html_footer.rb +4 -3
- data/lib/pwn/reports/html_header.rb +6 -2
- data/lib/pwn/reports/json.rb +8 -1
- data/lib/pwn/reports/markdown.rb +8 -1
- data/lib/pwn/reports/pdf.rb +8 -1
- data/lib/pwn/reports/phone.rb +5 -2
- data/lib/pwn/reports/sast.rb +6 -2
- data/lib/pwn/reports/uri_buster.rb +5 -2
- data/lib/pwn/reports/xml.rb +8 -1
- data/lib/pwn/reports.rb +19 -0
- data/lib/pwn/sast/amqp_connect_as_guest.rb +9 -3
- data/lib/pwn/sast/apache_file_system_util_api.rb +9 -3
- data/lib/pwn/sast/aws.rb +9 -3
- data/lib/pwn/sast/banned_function_calls_c.rb +9 -3
- data/lib/pwn/sast/base64.rb +9 -3
- data/lib/pwn/sast/beef_hook.rb +9 -3
- data/lib/pwn/sast/cmd_execution_go_lang.rb +9 -3
- data/lib/pwn/sast/cmd_execution_java.rb +9 -3
- data/lib/pwn/sast/cmd_execution_python.rb +9 -3
- data/lib/pwn/sast/cmd_execution_ruby.rb +9 -3
- data/lib/pwn/sast/cmd_execution_scala.rb +9 -3
- data/lib/pwn/sast/csrf.rb +9 -3
- data/lib/pwn/sast/deserial_java.rb +9 -3
- data/lib/pwn/sast/emoticon.rb +9 -3
- data/lib/pwn/sast/eval.rb +9 -3
- data/lib/pwn/sast/factory.rb +9 -3
- data/lib/pwn/sast/http_authorization_header.rb +9 -3
- data/lib/pwn/sast/inner_html.rb +9 -3
- data/lib/pwn/sast/keystore.rb +9 -3
- data/lib/pwn/sast/local_storage.rb +9 -3
- data/lib/pwn/sast/location_hash.rb +9 -3
- data/lib/pwn/sast/log4j.rb +9 -3
- data/lib/pwn/sast/logger.rb +9 -3
- data/lib/pwn/sast/md5.rb +9 -3
- data/lib/pwn/sast/outer_html.rb +9 -3
- data/lib/pwn/sast/padding_oracle.rb +9 -3
- data/lib/pwn/sast/password.rb +9 -3
- data/lib/pwn/sast/php_input_mechanisms.rb +9 -3
- data/lib/pwn/sast/php_type_juggling.rb +9 -3
- data/lib/pwn/sast/pom_version.rb +9 -3
- data/lib/pwn/sast/port.rb +9 -3
- data/lib/pwn/sast/post_message.rb +9 -3
- data/lib/pwn/sast/private_key.rb +9 -3
- data/lib/pwn/sast/redirect.rb +9 -3
- data/lib/pwn/sast/redos.rb +9 -3
- data/lib/pwn/sast/shell.rb +9 -3
- data/lib/pwn/sast/signature.rb +9 -3
- data/lib/pwn/sast/sql.rb +9 -3
- data/lib/pwn/sast/ssl.rb +9 -3
- data/lib/pwn/sast/sudo.rb +9 -3
- data/lib/pwn/sast/task_tag.rb +9 -3
- data/lib/pwn/sast/test_case_engine.rb +11 -7
- data/lib/pwn/sast/throw_errors.rb +9 -3
- data/lib/pwn/sast/token.rb +9 -3
- data/lib/pwn/sast/type_script_type_juggling.rb +9 -3
- data/lib/pwn/sast/use_after_free.rb +9 -3
- data/lib/pwn/sast/version.rb +9 -3
- data/lib/pwn/sast/window_location_hash.rb +9 -3
- data/lib/pwn/sast.rb +4 -0
- data/lib/pwn/sdr/decoder/adsb.rb +36 -5
- data/lib/pwn/sdr/decoder/apt.rb +9 -6
- data/lib/pwn/sdr/decoder/base.rb +74 -22
- data/lib/pwn/sdr/decoder/bluetooth.rb +17 -5
- data/lib/pwn/sdr/decoder/dect.rb +12 -3
- data/lib/pwn/sdr/decoder/dsp.rb +229 -39
- data/lib/pwn/sdr/decoder/flex.rb +59 -11
- data/lib/pwn/sdr/decoder/gps.rb +12 -3
- data/lib/pwn/sdr/decoder/gsm.rb +24 -4
- data/lib/pwn/sdr/decoder/iridium.rb +12 -3
- data/lib/pwn/sdr/decoder/lora.rb +13 -4
- data/lib/pwn/sdr/decoder/lte.rb +27 -3
- data/lib/pwn/sdr/decoder/morse.rb +12 -3
- data/lib/pwn/sdr/decoder/p25.rb +12 -3
- data/lib/pwn/sdr/decoder/pager.rb +8 -5
- data/lib/pwn/sdr/decoder/pocsag.rb +29 -9
- data/lib/pwn/sdr/decoder/rds.rb +14 -8
- data/lib/pwn/sdr/decoder/rfid.rb +12 -3
- data/lib/pwn/sdr/decoder/rtl433.rb +12 -3
- data/lib/pwn/sdr/decoder/rtty.rb +8 -5
- data/lib/pwn/sdr/decoder/wifi.rb +12 -3
- data/lib/pwn/sdr/decoder/zigbee.rb +12 -3
- data/lib/pwn/sdr/decoder.rb +9 -0
- data/lib/pwn/sdr/flipper_zero.rb +17 -10
- data/lib/pwn/sdr/frequency_allocation.rb +4 -1
- data/lib/pwn/sdr/gqrx.rb +178 -119
- data/lib/pwn/sdr/rfidler.rb +4 -1
- data/lib/pwn/sdr/son_micro_rfid.rb +37 -24
- data/lib/pwn/sdr.rb +14 -0
- data/lib/pwn/sessions.rb +86 -16
- data/lib/pwn/setup.rb +94 -37
- data/lib/pwn/version.rb +1 -1
- data/lib/pwn/www/app_cobalt_io.rb +11 -5
- data/lib/pwn/www/bing.rb +10 -5
- data/lib/pwn/www/bug_crowd.rb +11 -5
- data/lib/pwn/www/checkip.rb +8 -4
- data/lib/pwn/www/coinbase_pro.rb +11 -5
- data/lib/pwn/www/duckduckgo.rb +12 -6
- data/lib/pwn/www/facebook.rb +11 -5
- data/lib/pwn/www/github.rb +11 -5
- data/lib/pwn/www/google.rb +11 -5
- data/lib/pwn/www/hacker_one.rb +20 -9
- data/lib/pwn/www/linkedin.rb +11 -5
- data/lib/pwn/www/pandora.rb +11 -5
- data/lib/pwn/www/pastebin.rb +9 -4
- data/lib/pwn/www/paypal.rb +19 -11
- data/lib/pwn/www/synack.rb +11 -5
- data/lib/pwn/www/torch.rb +13 -8
- data/lib/pwn/www/trading_view.rb +11 -5
- data/lib/pwn/www/twitter.rb +11 -5
- data/lib/pwn/www/uber.rb +11 -5
- data/lib/pwn/www/upwork.rb +11 -5
- data/lib/pwn/www/wayback_machine.rb +12 -6
- data/lib/pwn/www/youtube.rb +10 -5
- data/lib/pwn/www.rb +4 -0
- data/spec/conventions_spec.rb +118 -2
- data/spec/lib/pwn/ai/agent/reward_spec.rb +9 -0
- data/spec/lib/pwn/plugins/aflplusplus_spec.rb +13 -0
- data/spec/lib/pwn/plugins/artifact_registry_spec.rb +13 -0
- data/spec/lib/pwn/plugins/binary_parser_spec.rb +21 -0
- data/spec/lib/pwn/plugins/credential_attack_spec.rb +13 -0
- data/spec/lib/pwn/plugins/doctor_spec.rb +23 -0
- data/spec/lib/pwn/plugins/exploit_dev_spec.rb +23 -0
- data/spec/lib/pwn/plugins/frida_spec.rb +13 -0
- data/spec/lib/pwn/plugins/gdb_spec.rb +13 -0
- data/spec/lib/pwn/plugins/jobs_spec.rb +13 -0
- data/spec/lib/pwn/plugins/nuclei_spec.rb +13 -0
- data/spec/lib/pwn/plugins/process_tube_spec.rb +13 -0
- data/spec/lib/pwn/plugins/radare2_spec.rb +13 -0
- data/spec/lib/pwn/plugins/recon_spec.rb +26 -0
- data/spec/lib/pwn/plugins/sqlmap_spec.rb +13 -0
- data/spec/lib/pwn/plugins/volatility_spec.rb +13 -0
- data/third_party/pwn_rdoc.jsonl +126 -5
- metadata +47 -3
- data/etc/default_skills/pwn/memory_index/references/urls.md +0 -4
- data/etc/default_skills/pwn/plugins/transparent_browser/references/urls.md +0 -3
data/lib/pwn/plugins/beef.rb
CHANGED
|
@@ -266,46 +266,56 @@ module PWN
|
|
|
266
266
|
|
|
267
267
|
public_class_method def self.help
|
|
268
268
|
puts "USAGE:
|
|
269
|
-
|
|
270
|
-
|
|
269
|
+
# Run login and return its result
|
|
270
|
+
#{self}.login(
|
|
271
|
+
beef_ip: 'required - host/ip of BeEF Server',
|
|
271
272
|
beef_port: 'optional - port of BeEF server (defaults to 3000)',
|
|
272
|
-
username: 'required username',
|
|
273
|
-
password: 'optional password (will prompt if nil)'
|
|
273
|
+
username: 'required - username value consumed by #login',
|
|
274
|
+
password: 'optional - password (will prompt if nil)'
|
|
274
275
|
)
|
|
275
276
|
|
|
276
|
-
hooks
|
|
277
|
-
|
|
277
|
+
# Run hooks and return its result
|
|
278
|
+
#{self}.hooks(
|
|
279
|
+
beef_obj: 'required - required beef_obj returned from #login method'
|
|
278
280
|
)
|
|
279
281
|
|
|
280
|
-
|
|
281
|
-
|
|
282
|
+
# Run hooked browser info and return its result
|
|
283
|
+
#{self}.hooked_browser_info(
|
|
284
|
+
beef_obj: 'required - required beef_obj returned from #login method',
|
|
282
285
|
browser_session: 'required - browser session id returned from #hooks method'
|
|
283
286
|
)
|
|
284
287
|
|
|
285
|
-
logs
|
|
286
|
-
|
|
288
|
+
# Run logs and return its result
|
|
289
|
+
#{self}.logs(
|
|
290
|
+
beef_obj: 'required - required beef_obj returned from #login method'
|
|
287
291
|
)
|
|
288
292
|
|
|
289
|
-
|
|
290
|
-
|
|
293
|
+
# Run hooked browser logs and return its result
|
|
294
|
+
#{self}.hooked_browser_logs(
|
|
295
|
+
beef_obj: 'required - required beef_obj returned from #login method',
|
|
291
296
|
browser_session: 'required - browser session id returned from #hooks method'
|
|
292
297
|
)
|
|
293
298
|
|
|
294
|
-
modules
|
|
295
|
-
|
|
299
|
+
# Run modules and return its result
|
|
300
|
+
#{self}.modules(
|
|
301
|
+
beef_obj: 'required - required beef_obj returned from #login method'
|
|
296
302
|
)
|
|
297
303
|
|
|
298
|
-
|
|
299
|
-
|
|
304
|
+
# Run module info and return its result
|
|
305
|
+
#{self}.module_info(
|
|
306
|
+
beef_obj: 'required - required beef_obj returned from #login method',
|
|
300
307
|
module_id: 'required - module id returned from #modules method'
|
|
301
308
|
)
|
|
302
309
|
|
|
303
|
-
|
|
304
|
-
|
|
310
|
+
# Run logout and return its result
|
|
311
|
+
#{self}.logout(
|
|
312
|
+
beef_obj: 'required - required beef_obj returned from #login method'
|
|
305
313
|
)
|
|
306
314
|
|
|
315
|
+
# Print the AUTHOR(S) string for this module.
|
|
307
316
|
#{self}.authors
|
|
308
317
|
"
|
|
318
|
+
constants.sort
|
|
309
319
|
end
|
|
310
320
|
end
|
|
311
321
|
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'metasm'
|
|
4
|
+
|
|
5
|
+
module PWN
|
|
6
|
+
module Plugins
|
|
7
|
+
# ELF/PE/Mach-O headers, sections, symbols, imports/exports, relocations
|
|
8
|
+
# via Metasm loaders.
|
|
9
|
+
module BinaryParser
|
|
10
|
+
public_class_method def self.required_bins
|
|
11
|
+
[]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
public_class_method def self.load_exe(opts = {})
|
|
15
|
+
path = opts[:path].to_s
|
|
16
|
+
raise 'ERROR: path is required' if path.empty?
|
|
17
|
+
raise "ERROR: file not found: #{path}" unless File.file?(path)
|
|
18
|
+
|
|
19
|
+
Metasm::AutoExe.decode_file(path)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
public_class_method def self.info(opts = {})
|
|
23
|
+
exe = load_exe(opts)
|
|
24
|
+
{
|
|
25
|
+
class: exe.class.name,
|
|
26
|
+
cpu: exe.cpu.class.name,
|
|
27
|
+
entrypoint: (exe.optheader.entrypoint if exe.respond_to?(:optheader) && exe.optheader.respond_to?(:entrypoint)),
|
|
28
|
+
format: format_name(exe: exe)
|
|
29
|
+
}
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
public_class_method def self.sections(opts = {})
|
|
33
|
+
exe = load_exe(opts)
|
|
34
|
+
Array(exe.sections).map do |sec|
|
|
35
|
+
{
|
|
36
|
+
name: (sec.name if sec.respond_to?(:name)),
|
|
37
|
+
size: (sec.size if sec.respond_to?(:size)),
|
|
38
|
+
virtaddr: (sec.virtaddr if sec.respond_to?(:virtaddr))
|
|
39
|
+
}
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
public_class_method def self.symbols(opts = {})
|
|
44
|
+
exe = load_exe(opts)
|
|
45
|
+
return [] unless exe.respond_to?(:symbols)
|
|
46
|
+
|
|
47
|
+
Array(exe.symbols).first((opts[:limit] || 200).to_i).map do |sym|
|
|
48
|
+
{ name: (sym.name if sym.respond_to?(:name)), value: (sym.value if sym.respond_to?(:value)) }
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
public_class_method def self.imports(opts = {})
|
|
53
|
+
exe = load_exe(opts)
|
|
54
|
+
if exe.respond_to?(:imports)
|
|
55
|
+
Array(exe.imports).map(&:to_s)
|
|
56
|
+
else
|
|
57
|
+
symbols(opts).map { |s| s[:name].to_s }.grep(/plt|imp/i).first(100)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
public_class_method def self.exports(opts = {})
|
|
62
|
+
exe = load_exe(opts)
|
|
63
|
+
if exe.respond_to?(:export)
|
|
64
|
+
Array(exe.export&.exports).map { |e| e.respond_to?(:name) ? e.name : e.to_s }
|
|
65
|
+
else
|
|
66
|
+
[]
|
|
67
|
+
end
|
|
68
|
+
rescue StandardError
|
|
69
|
+
[]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
public_class_method def self.relocations(opts = {})
|
|
73
|
+
exe = load_exe(opts)
|
|
74
|
+
return [] unless exe.respond_to?(:relocations)
|
|
75
|
+
|
|
76
|
+
Array(exe.relocations).first((opts[:limit] || 100).to_i).map(&:to_s)
|
|
77
|
+
rescue StandardError
|
|
78
|
+
[]
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
public_class_method def self.authors
|
|
82
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
public_class_method def self.help
|
|
86
|
+
puts "USAGE:
|
|
87
|
+
# List host binaries this module expects to be installed.
|
|
88
|
+
#{self}.required_bins
|
|
89
|
+
|
|
90
|
+
# Run load exe and return its result
|
|
91
|
+
#{self}.load_exe(
|
|
92
|
+
path: 'required - filesystem path to read or write'
|
|
93
|
+
)
|
|
94
|
+
|
|
95
|
+
# Run info and return its result
|
|
96
|
+
#{self}.info
|
|
97
|
+
|
|
98
|
+
# Run sections and return its result
|
|
99
|
+
#{self}.sections
|
|
100
|
+
|
|
101
|
+
# Run symbols and return its result
|
|
102
|
+
#{self}.symbols(
|
|
103
|
+
limit: 'optional - limit value consumed by #symbols'
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
# Run imports and return its result
|
|
107
|
+
#{self}.imports
|
|
108
|
+
|
|
109
|
+
# Run exports and return its result
|
|
110
|
+
#{self}.exports
|
|
111
|
+
|
|
112
|
+
# Run relocations and return its result
|
|
113
|
+
#{self}.relocations(
|
|
114
|
+
limit: 'optional - limit value consumed by #relocations'
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
# Print the AUTHOR(S) string for this module.
|
|
118
|
+
#{self}.authors
|
|
119
|
+
"
|
|
120
|
+
constants.sort
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
private_class_method def self.format_name(opts = {})
|
|
124
|
+
exe = opts[:exe]
|
|
125
|
+
return 'elf' if exe.class.name.to_s.include?('ELF')
|
|
126
|
+
return 'pe' if exe.class.name.to_s.include?('PE')
|
|
127
|
+
return 'macho' if exe.class.name.to_s.include?('MachO') || exe.class.name.to_s.include?('Mach')
|
|
128
|
+
|
|
129
|
+
exe.class.name
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|
|
@@ -658,63 +658,72 @@ module PWN
|
|
|
658
658
|
|
|
659
659
|
public_class_method def self.help
|
|
660
660
|
puts "USAGE:
|
|
661
|
-
|
|
661
|
+
# Run get apps and return its result
|
|
662
|
+
#{self}.get_apps(
|
|
662
663
|
token: 'required - Bearer token'
|
|
663
664
|
)
|
|
664
665
|
|
|
665
|
-
|
|
666
|
+
# Run get apps by group and return its result
|
|
667
|
+
#{self}.get_apps_by_group(
|
|
668
|
+
token: 'required - Bearer token',
|
|
669
|
+
group_id: 'required - group id value consumed by #get_apps_by_group'
|
|
670
|
+
)
|
|
671
|
+
|
|
672
|
+
# Run upload file and return its result
|
|
673
|
+
#{self}.upload_file(
|
|
666
674
|
token: 'required - Bearer token',
|
|
667
675
|
file: 'required - path of file to upload',
|
|
668
|
-
group_id: 'optional - group id',
|
|
676
|
+
group_id: 'optional - group id value consumed by #upload_file',
|
|
669
677
|
delete_binary: 'optional - delete binary after upload (defaults to false)',
|
|
670
678
|
force_scan: 'optional - force scan (defaults to false)',
|
|
671
|
-
callback_url: 'optional - callback url',
|
|
679
|
+
callback_url: 'optional - callback url value consumed by #upload_file',
|
|
672
680
|
scan_infoleak: 'optional - scan infoleak (defaults to true)',
|
|
673
681
|
code_analysis: 'optional - code analysis (defaults to true)',
|
|
674
|
-
scan_code_familiarity: 'optional - scan code familiarity (defaults to
|
|
675
|
-
version: 'optional - version',
|
|
676
|
-
product_id: 'optional - product id'
|
|
682
|
+
scan_code_familiarity: 'optional - scan code familiarity (defaults to false)',
|
|
683
|
+
version: 'optional - version value consumed by #upload_file',
|
|
684
|
+
product_id: 'optional - product id value consumed by #upload_file'
|
|
677
685
|
)
|
|
678
686
|
|
|
679
|
-
|
|
687
|
+
# Run get product and return its result
|
|
688
|
+
#{self}.get_product(
|
|
680
689
|
token: 'required - Bearer token',
|
|
681
|
-
product_id: 'required - product id'
|
|
690
|
+
product_id: 'required - product id value consumed by #get_product'
|
|
682
691
|
)
|
|
683
692
|
|
|
684
|
-
|
|
693
|
+
# Run abort product scan and return its result
|
|
694
|
+
#{self}.abort_product_scan(
|
|
685
695
|
token: 'required - Bearer token',
|
|
686
|
-
product_id: 'required - product id'
|
|
696
|
+
product_id: 'required - product id value consumed by #abort_product_scan'
|
|
687
697
|
)
|
|
688
698
|
|
|
689
|
-
|
|
699
|
+
# Run generate product report and return its result
|
|
700
|
+
#{self}.generate_product_report(
|
|
690
701
|
token: 'required - Bearer token',
|
|
691
|
-
product_id: 'required - product id',
|
|
702
|
+
product_id: 'required - product id value consumed by #generate_product_report',
|
|
692
703
|
output_path: 'required - path to output file',
|
|
693
704
|
type: 'optional - report type csv_libs||csv_vulns|pdf|spdx (Defaults to csv_vulns)'
|
|
694
705
|
)
|
|
695
706
|
|
|
696
|
-
|
|
707
|
+
# Run get tasks and return its result
|
|
708
|
+
#{self}.get_tasks(
|
|
697
709
|
token: 'required - Bearer token'
|
|
698
710
|
)
|
|
699
711
|
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
group_id: 'required - group id'
|
|
703
|
-
)
|
|
704
|
-
|
|
705
|
-
response = #{self}.get_groups(
|
|
712
|
+
# Run get groups and return its result
|
|
713
|
+
#{self}.get_groups(
|
|
706
714
|
token: 'required - Bearer token'
|
|
707
715
|
)
|
|
708
716
|
|
|
709
|
-
|
|
717
|
+
# Run create group and return its result
|
|
718
|
+
#{self}.create_group(
|
|
710
719
|
token: 'required - Bearer token',
|
|
711
720
|
name: 'required - group name',
|
|
712
721
|
desc: 'optional - group description',
|
|
713
|
-
parent_id: 'optional -
|
|
722
|
+
parent_id: 'optional - parent group id',
|
|
714
723
|
delete_binary: 'optional - delete binary after analysis C|Y|N (Default: C== company default)',
|
|
715
724
|
binary_cleanup_age: 'optional - after how long the binary will be deleted in seconds (Default: 2_592_000 / 30 days)',
|
|
716
725
|
product_cleanup_age: 'optional - after how long the product will be deleted in seconds (Default: 2_592_000 / 30 days)',
|
|
717
|
-
file_download_enabled: 'optional - allow download of uploaded binaries from group (Default: false
|
|
726
|
+
file_download_enabled: 'optional - allow download of uploaded binaries from group (Default: false',
|
|
718
727
|
low_risk_tolerance: 'optional - low risk tolerance nil|true|false (Default: nil == company default)',
|
|
719
728
|
include_historical_vulns: 'optional - include historical vulns nil|true|false (Default: nil == company default)',
|
|
720
729
|
cvss3_fallback: 'optional - cvss3 fallback nil|true|false (Default: nil == company default)',
|
|
@@ -725,63 +734,78 @@ module PWN
|
|
|
725
734
|
scan_code_similarity: 'optional - scan code similarity nil|true|false (Default: nil == company default)'
|
|
726
735
|
)
|
|
727
736
|
|
|
728
|
-
|
|
737
|
+
# Run get group details and return its result
|
|
738
|
+
#{self}.get_group_details(
|
|
729
739
|
token: 'required - Bearer token',
|
|
730
|
-
group_id: 'required - group id'
|
|
740
|
+
group_id: 'required - group id value consumed by #get_group_details'
|
|
731
741
|
)
|
|
732
742
|
|
|
733
|
-
|
|
743
|
+
# Run get group statistics and return its result
|
|
744
|
+
#{self}.get_group_statistics(
|
|
734
745
|
token: 'required - Bearer token',
|
|
735
|
-
group_id: 'required - group id'
|
|
746
|
+
group_id: 'required - group id value consumed by #get_group_statistics'
|
|
736
747
|
)
|
|
737
748
|
|
|
738
|
-
|
|
749
|
+
# Run delete group and return its result
|
|
750
|
+
#{self}.delete_group(
|
|
739
751
|
token: 'required - Bearer token',
|
|
740
|
-
group_id: 'required - group id'
|
|
752
|
+
group_id: 'required - group id value consumed by #delete_group'
|
|
741
753
|
)
|
|
742
754
|
|
|
743
|
-
|
|
755
|
+
# Run get licenses and return its result
|
|
756
|
+
#{self}.get_licenses(
|
|
744
757
|
token: 'required - Bearer token'
|
|
745
758
|
)
|
|
746
759
|
|
|
747
|
-
|
|
760
|
+
# Run get component licenses and return its result
|
|
761
|
+
#{self}.get_component_licenses(
|
|
748
762
|
token: 'required - Bearer token'
|
|
749
763
|
)
|
|
750
764
|
|
|
751
|
-
|
|
765
|
+
# Run get tags and return its result
|
|
766
|
+
#{self}.get_tags(
|
|
752
767
|
token: 'required - Bearer token'
|
|
753
768
|
)
|
|
754
769
|
|
|
755
|
-
|
|
770
|
+
# Run get vulnerabilities and return its result
|
|
771
|
+
#{self}.get_vulnerabilities(
|
|
756
772
|
token: 'required - Bearer token'
|
|
757
773
|
)
|
|
758
774
|
|
|
759
|
-
|
|
775
|
+
# Run get components and return its result
|
|
776
|
+
#{self}.get_components(
|
|
760
777
|
token: 'required - Bearer token'
|
|
761
778
|
)
|
|
762
779
|
|
|
763
|
-
|
|
780
|
+
# Run get vendor vulns and return its result
|
|
781
|
+
#{self}.get_vendor_vulns(
|
|
764
782
|
token: 'required - Bearer token'
|
|
765
783
|
)
|
|
766
784
|
|
|
767
|
-
|
|
785
|
+
# Run get audit trail and return its result
|
|
786
|
+
#{self}.get_audit_trail(
|
|
768
787
|
token: 'required - Bearer token'
|
|
769
788
|
)
|
|
770
789
|
|
|
771
|
-
|
|
790
|
+
# Run get status and return its result
|
|
791
|
+
#{self}.get_status(
|
|
772
792
|
token: 'required - Bearer token'
|
|
773
793
|
)
|
|
774
794
|
|
|
775
|
-
|
|
795
|
+
# Run get service info and return its result
|
|
796
|
+
#{self}.get_service_info(
|
|
776
797
|
token: 'required - Bearer token'
|
|
777
798
|
)
|
|
778
799
|
|
|
779
|
-
|
|
800
|
+
# Run get service version and return its result
|
|
801
|
+
#{self}.get_service_version(
|
|
780
802
|
token: 'required - Bearer token'
|
|
781
803
|
)
|
|
782
804
|
|
|
805
|
+
# Print the AUTHOR(S) string for this module.
|
|
783
806
|
#{self}.authors
|
|
784
807
|
"
|
|
808
|
+
constants.sort
|
|
785
809
|
end
|
|
786
810
|
end
|
|
787
811
|
end
|