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/packet.rb
CHANGED
|
@@ -1085,6 +1085,7 @@ module PWN
|
|
|
1085
1085
|
# )
|
|
1086
1086
|
|
|
1087
1087
|
public_class_method def self.send(opts = {})
|
|
1088
|
+
PWN::Plugins::Doctor.require_cap_net_raw! if defined?(PWN::Plugins::Doctor)
|
|
1088
1089
|
pkt = opts[:pkt]
|
|
1089
1090
|
|
|
1090
1091
|
if opts[:iface]
|
|
@@ -1205,108 +1206,228 @@ module PWN
|
|
|
1205
1206
|
|
|
1206
1207
|
public_class_method def self.help
|
|
1207
1208
|
puts "USAGE:
|
|
1208
|
-
pcap
|
|
1209
|
+
# Run open pcap file and return its result
|
|
1210
|
+
#{self}.open_pcap_file(
|
|
1209
1211
|
path: 'required - path to packet capture file'
|
|
1210
1212
|
)
|
|
1211
|
-
pcap[0].public_methods
|
|
1212
|
-
pcap.each do |p|
|
|
1213
|
-
print \"IP ID: \#{p.ip_id_readable} \"
|
|
1214
|
-
print \"IP Sum: \#{p.ip_sum_readable} \"
|
|
1215
|
-
print \"SRC IP: \#{p.ip_src_readable} \"
|
|
1216
|
-
print \"SRC MAC: (\#{p.eth_src_readable}) \"
|
|
1217
|
-
print \"TCP SRC PORT: \#{p.tcp_sport} => \"
|
|
1218
|
-
print \"DST IP: \#{p.ip_dst_readable} \"
|
|
1219
|
-
print \"DST MAC: (\#{p.eth_dst_readable}) \"
|
|
1220
|
-
print \"TCP DST PORT: \#{p.tcp_dport} \"
|
|
1221
|
-
print \"ETH PROTO: \#{p.eth_proto_readable} \"
|
|
1222
|
-
print \"TCP FLAGS: \#{p.tcp_flags_readable} \"
|
|
1223
|
-
print \"TCP ACK: \#{p.tcp_ack_readable} \"
|
|
1224
|
-
print \"TCP SEQ: \#{p.tcp_seq_readable} \"
|
|
1225
|
-
print \"TCP SUM: \#{p.tcp_sum_readable} \"
|
|
1226
|
-
print \"TCP OPTS: \#{p.tcp_opts_readable} \"
|
|
1227
|
-
puts \"BODY: \#{p.hexify(p.payload)}\"
|
|
1228
|
-
puts \"\\n\\n\\n\"
|
|
1229
|
-
end
|
|
1230
1213
|
|
|
1231
|
-
|
|
1214
|
+
# Run construct arp and return its result
|
|
1215
|
+
#{self}.construct_arp(
|
|
1232
1216
|
ip_saddr: 'required - source ip of packet',
|
|
1233
1217
|
ip_daddr: 'required - destination ip to send packet',
|
|
1234
1218
|
payload: 'optional - packet payload defaults to empty string',
|
|
1235
1219
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1236
1220
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1221
|
+
eth_src: 'optional - eth src value consumed by #construct_arp',
|
|
1222
|
+
eth_dst: 'optional - eth dst value consumed by #construct_arp',
|
|
1223
|
+
eth_proto: 'optional - eth proto value consumed by #construct_arp',
|
|
1224
|
+
arp_hw: 'optional - arp hw value consumed by #construct_arp',
|
|
1225
|
+
arp_proto: 'optional - arp proto value consumed by #construct_arp',
|
|
1226
|
+
arp_hw_len: 'optional - arp hw len value consumed by #construct_arp',
|
|
1227
|
+
arp_proto_len: 'optional - arp proto len value consumed by #construct_arp',
|
|
1228
|
+
arp_opcode: 'optional - arp opcode value consumed by #construct_arp',
|
|
1229
|
+
arp_src_mac: 'optional - arp src mac value consumed by #construct_arp',
|
|
1230
|
+
arp_dst_mac: 'optional - arp dst mac value consumed by #construct_arp'
|
|
1237
1231
|
)
|
|
1238
1232
|
|
|
1239
|
-
|
|
1233
|
+
# Run construct eth and return its result
|
|
1234
|
+
#{self}.construct_eth(
|
|
1240
1235
|
ip_saddr: 'required - source ip of packet',
|
|
1241
1236
|
ip_daddr: 'required - destination ip to send packet',
|
|
1242
1237
|
payload: 'optional - packet payload defaults to empty string',
|
|
1243
1238
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1244
1239
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1240
|
+
eth_src: 'optional - eth src value consumed by #construct_eth',
|
|
1241
|
+
eth_dst: 'optional - eth dst value consumed by #construct_eth',
|
|
1242
|
+
eth_proto: 'optional - eth proto value consumed by #construct_eth'
|
|
1245
1243
|
)
|
|
1246
1244
|
|
|
1247
|
-
|
|
1245
|
+
# Run construct hsrp and return its result
|
|
1246
|
+
#{self}.construct_hsrp(
|
|
1248
1247
|
ip_saddr: 'required - source ip of packet',
|
|
1249
1248
|
ip_daddr: 'required - destination ip to send packet',
|
|
1250
1249
|
payload: 'optional - packet payload defaults to empty string',
|
|
1251
1250
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1252
1251
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1252
|
+
eth_src: 'optional - eth src value consumed by #construct_hsrp',
|
|
1253
|
+
eth_dst: 'optional - eth dst value consumed by #construct_hsrp',
|
|
1254
|
+
eth_proto: 'optional - eth proto value consumed by #construct_hsrp',
|
|
1255
|
+
ip_v: 'optional - ip v value consumed by #construct_hsrp',
|
|
1256
|
+
ip_hl: 'optional - ip hl value consumed by #construct_hsrp',
|
|
1257
|
+
ip_tos: 'optional - ip tos value consumed by #construct_hsrp',
|
|
1258
|
+
ip_len: 'optional - ip len value consumed by #construct_hsrp',
|
|
1259
|
+
ip_frag: 'optional - ip frag value consumed by #construct_hsrp',
|
|
1260
|
+
ip_ttl: 'optional - ip ttl value consumed by #construct_hsrp',
|
|
1261
|
+
ip_proto: 'optional - ip proto value consumed by #construct_hsrp',
|
|
1262
|
+
ip_sum: 'optional - ip sum value consumed by #construct_hsrp',
|
|
1263
|
+
udp_src_port: 'optional - udp src port value consumed by #construct_hsrp',
|
|
1264
|
+
udp_dst_port: 'optional - udp dst port value consumed by #construct_hsrp',
|
|
1265
|
+
udp_len: 'optional - udp len value consumed by #construct_hsrp',
|
|
1266
|
+
udp_sum: 'optional - udp sum value consumed by #construct_hsrp',
|
|
1267
|
+
hsrp_version: 'optional - hsrp version value consumed by #construct_hsrp',
|
|
1268
|
+
hsrp_opcode: 'optional - hsrp opcode value consumed by #construct_hsrp',
|
|
1269
|
+
hsrp_state: 'optional - hsrp state value consumed by #construct_hsrp',
|
|
1270
|
+
hsrp_hellotime: 'optional - hsrp hellotime value consumed by #construct_hsrp',
|
|
1271
|
+
hsrp_holdtime: 'optional - hsrp holdtime value consumed by #construct_hsrp',
|
|
1272
|
+
hsrp_priority: 'optional - hsrp priority value consumed by #construct_hsrp',
|
|
1273
|
+
hsrp_group: 'optional - hsrp group value consumed by #construct_hsrp',
|
|
1274
|
+
hsrp_reserved: 'optional - hsrp reserved value consumed by #construct_hsrp',
|
|
1275
|
+
hsrp_password: 'optional - hsrp password value consumed by #construct_hsrp',
|
|
1276
|
+
hsrp_addr: 'optional - hsrp addr value consumed by #construct_hsrp'
|
|
1253
1277
|
)
|
|
1254
1278
|
|
|
1255
|
-
|
|
1279
|
+
# Run construct icmp and return its result
|
|
1280
|
+
#{self}.construct_icmp(
|
|
1256
1281
|
ip_saddr: 'required - source ip of packet',
|
|
1257
1282
|
ip_daddr: 'required - destination ip to send packet',
|
|
1258
|
-
payload: 'optional - packet payload defaults to
|
|
1283
|
+
payload: 'optional - packet payload defaults to *ping*',
|
|
1259
1284
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1260
1285
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1286
|
+
eth_src: 'optional - eth src value consumed by #construct_icmp',
|
|
1287
|
+
eth_dst: 'optional - eth dst value consumed by #construct_icmp',
|
|
1288
|
+
eth_proto: 'optional - eth proto value consumed by #construct_icmp',
|
|
1289
|
+
ip_v: 'optional - ip v value consumed by #construct_icmp',
|
|
1290
|
+
ip_hl: 'optional - ip hl value consumed by #construct_icmp',
|
|
1291
|
+
ip_tos: 'optional - ip tos value consumed by #construct_icmp',
|
|
1292
|
+
ip_len: 'optional - ip len value consumed by #construct_icmp',
|
|
1293
|
+
ip_frag: 'optional - ip frag value consumed by #construct_icmp',
|
|
1294
|
+
ip_ttl: 'optional - ip ttl value consumed by #construct_icmp',
|
|
1295
|
+
ip_proto: 'optional - ip proto value consumed by #construct_icmp',
|
|
1296
|
+
ip_sum: 'optional - ip sum value consumed by #construct_icmp',
|
|
1297
|
+
icmp_type: 'optional - icmp type value consumed by #construct_icmp',
|
|
1298
|
+
icmp_code: 'optional - icmp code value consumed by #construct_icmp',
|
|
1299
|
+
icmp_sum: 'optional - icmp sum value consumed by #construct_icmp'
|
|
1261
1300
|
)
|
|
1262
1301
|
|
|
1263
|
-
|
|
1302
|
+
# Run construct icmpv6 and return its result
|
|
1303
|
+
#{self}.construct_icmpv6(
|
|
1264
1304
|
ip_saddr: 'required - source ip of packet',
|
|
1265
1305
|
ip_daddr: 'required - destination ip to send packet',
|
|
1266
1306
|
payload: 'optional - packet payload defaults to empty string',
|
|
1267
1307
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1268
1308
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1309
|
+
eth_src: 'optional - eth src value consumed by #construct_icmpv6',
|
|
1310
|
+
eth_dst: 'optional - eth dst value consumed by #construct_icmpv6',
|
|
1311
|
+
eth_proto: 'optional - eth proto value consumed by #construct_icmpv6',
|
|
1312
|
+
ipv6_v: 'optional - ipv6 v value consumed by #construct_icmpv6',
|
|
1313
|
+
ipv6_class: 'optional - ipv6 class value consumed by #construct_icmpv6',
|
|
1314
|
+
ipv6_label: 'optional - ipv6 label value consumed by #construct_icmpv6',
|
|
1315
|
+
ipv6_len: 'optional - ipv6 len value consumed by #construct_icmpv6',
|
|
1316
|
+
ipv6_next: 'optional - ipv6 next value consumed by #construct_icmpv6',
|
|
1317
|
+
ipv6_hop: 'optional - ipv6 hop value consumed by #construct_icmpv6',
|
|
1318
|
+
ipv6_saddr: 'optional - ipv6 saddr value consumed by #construct_icmpv6',
|
|
1319
|
+
ipv6_daddr: 'optional - ipv6 daddr value consumed by #construct_icmpv6',
|
|
1320
|
+
icmpv6_type: 'optional - icmpv6 type value consumed by #construct_icmpv6',
|
|
1321
|
+
icmpv6_code: 'optional - icmpv6 code value consumed by #construct_icmpv6',
|
|
1322
|
+
icmpv6_sum: 'optional - icmpv6 sum value consumed by #construct_icmpv6'
|
|
1269
1323
|
)
|
|
1270
1324
|
|
|
1271
|
-
|
|
1325
|
+
# Run construct ip and return its result
|
|
1326
|
+
#{self}.construct_ip(
|
|
1272
1327
|
ip_saddr: 'required - source ip of packet',
|
|
1273
1328
|
ip_daddr: 'required - destination ip to send packet',
|
|
1274
1329
|
payload: 'optional - packet payload defaults to empty string',
|
|
1275
1330
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1276
1331
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1332
|
+
eth_src: 'optional - eth src value consumed by #construct_ip',
|
|
1333
|
+
eth_dst: 'optional - eth dst value consumed by #construct_ip',
|
|
1334
|
+
eth_proto: 'optional - eth proto value consumed by #construct_ip',
|
|
1335
|
+
ip_v: 'optional - ip v value consumed by #construct_ip',
|
|
1336
|
+
ip_hl: 'optional - ip hl value consumed by #construct_ip',
|
|
1337
|
+
ip_tos: 'optional - ip tos value consumed by #construct_ip',
|
|
1338
|
+
ip_len: 'optional - ip len value consumed by #construct_ip',
|
|
1339
|
+
ip_frag: 'optional - ip frag value consumed by #construct_ip',
|
|
1340
|
+
ip_ttl: 'optional - ip ttl value consumed by #construct_ip',
|
|
1341
|
+
ip_proto: 'optional - ip proto value consumed by #construct_ip',
|
|
1342
|
+
ip_sum: 'optional - ip sum value consumed by #construct_ip'
|
|
1277
1343
|
)
|
|
1278
1344
|
|
|
1279
|
-
|
|
1345
|
+
# Run construct ipv6 and return its result
|
|
1346
|
+
#{self}.construct_ipv6(
|
|
1280
1347
|
ip_saddr: 'required - source ip of packet',
|
|
1281
1348
|
ip_daddr: 'required - destination ip to send packet',
|
|
1282
1349
|
payload: 'optional - packet payload defaults to empty string',
|
|
1283
1350
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1284
1351
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1352
|
+
eth_src: 'optional - eth src value consumed by #construct_ipv6',
|
|
1353
|
+
eth_dst: 'optional - eth dst value consumed by #construct_ipv6',
|
|
1354
|
+
eth_proto: 'optional - eth proto value consumed by #construct_ipv6',
|
|
1355
|
+
ipv6_v: 'optional - ipv6 v value consumed by #construct_ipv6',
|
|
1356
|
+
ipv6_class: 'optional - ipv6 class value consumed by #construct_ipv6',
|
|
1357
|
+
ipv6_label: 'optional - ipv6 label value consumed by #construct_ipv6',
|
|
1358
|
+
ipv6_len: 'optional - ipv6 len value consumed by #construct_ipv6',
|
|
1359
|
+
ipv6_next: 'optional - ipv6 next value consumed by #construct_ipv6',
|
|
1360
|
+
ipv6_hop: 'optional - ipv6 hop value consumed by #construct_ipv6',
|
|
1361
|
+
ipv6_saddr: 'optional - ipv6 saddr value consumed by #construct_ipv6',
|
|
1362
|
+
ipv6_daddr: 'optional - ipv6 daddr value consumed by #construct_ipv6'
|
|
1285
1363
|
)
|
|
1286
1364
|
|
|
1287
|
-
|
|
1365
|
+
# Run construct tcp and return its result
|
|
1366
|
+
#{self}.construct_tcp(
|
|
1288
1367
|
ip_saddr: 'required - source ip of packet',
|
|
1289
1368
|
ip_daddr: 'required - destination ip to send packet',
|
|
1290
1369
|
payload: 'optional - packet payload defaults to empty string',
|
|
1291
1370
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1292
1371
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1372
|
+
eth_src: 'optional - eth src value consumed by #construct_tcp',
|
|
1373
|
+
eth_dst: 'optional - eth dst value consumed by #construct_tcp',
|
|
1374
|
+
eth_proto: 'optional - eth proto value consumed by #construct_tcp',
|
|
1375
|
+
ip_v: 'optional - ip v value consumed by #construct_tcp',
|
|
1376
|
+
ip_hl: 'optional - ip hl value consumed by #construct_tcp',
|
|
1377
|
+
ip_tos: 'optional - ip tos value consumed by #construct_tcp',
|
|
1378
|
+
ip_len: 'optional - ip len value consumed by #construct_tcp',
|
|
1379
|
+
ip_frag: 'optional - ip frag value consumed by #construct_tcp',
|
|
1380
|
+
ip_ttl: 'optional - ip ttl value consumed by #construct_tcp',
|
|
1381
|
+
ip_proto: 'optional - ip proto value consumed by #construct_tcp',
|
|
1382
|
+
ip_sum: 'optional - ip sum value consumed by #construct_tcp',
|
|
1383
|
+
tcp_src_port: 'optional - tcp src port value consumed by #construct_tcp',
|
|
1384
|
+
tcp_dst_port: 'optional - tcp dst port value consumed by #construct_tcp',
|
|
1385
|
+
tcp_seq: 'optional - tcp seq value consumed by #construct_tcp',
|
|
1386
|
+
tcp_ack: 'optional - tcp ack value consumed by #construct_tcp',
|
|
1387
|
+
tcp_hlen: 'optional - tcp hlen value consumed by #construct_tcp',
|
|
1388
|
+
tcp_reserved: 'optional - tcp reserved value consumed by #construct_tcp',
|
|
1389
|
+
tcp_ecn: 'optional - tcp ecn value consumed by #construct_tcp',
|
|
1390
|
+
tcp_flags: 'optional - tcp flags value consumed by #construct_tcp',
|
|
1391
|
+
tcp_win: 'optional - tcp win value consumed by #construct_tcp',
|
|
1392
|
+
tcp_sum: 'optional - tcp sum value consumed by #construct_tcp',
|
|
1393
|
+
tcp_urg: 'optional - tcp urg value consumed by #construct_tcp',
|
|
1394
|
+
tcp_opts: 'optional - tcp opts value consumed by #construct_tcp'
|
|
1293
1395
|
)
|
|
1294
1396
|
|
|
1295
|
-
|
|
1397
|
+
# Run construct udp and return its result
|
|
1398
|
+
#{self}.construct_udp(
|
|
1296
1399
|
ip_saddr: 'required - source ip of packet',
|
|
1297
1400
|
ip_daddr: 'required - destination ip to send packet',
|
|
1298
1401
|
payload: 'optional - packet payload defaults to empty string',
|
|
1299
1402
|
ip_id: 'optional - defaults to 0xfeed',
|
|
1300
1403
|
iface: 'optional - interface to send packet (defaults to eth0)',
|
|
1404
|
+
eth_src: 'optional - eth src value consumed by #construct_udp',
|
|
1405
|
+
eth_dst: 'optional - eth dst value consumed by #construct_udp',
|
|
1406
|
+
eth_proto: 'optional - eth proto value consumed by #construct_udp',
|
|
1407
|
+
ip_v: 'optional - ip v value consumed by #construct_udp',
|
|
1408
|
+
ip_hl: 'optional - ip hl value consumed by #construct_udp',
|
|
1409
|
+
ip_tos: 'optional - ip tos value consumed by #construct_udp',
|
|
1410
|
+
ip_len: 'optional - ip len value consumed by #construct_udp',
|
|
1411
|
+
ip_frag: 'optional - ip frag value consumed by #construct_udp',
|
|
1412
|
+
ip_ttl: 'optional - ip ttl value consumed by #construct_udp',
|
|
1413
|
+
ip_proto: 'optional - ip proto value consumed by #construct_udp',
|
|
1414
|
+
ip_sum: 'optional - ip sum value consumed by #construct_udp',
|
|
1415
|
+
udp_src_port: 'optional - udp src port value consumed by #construct_udp',
|
|
1416
|
+
udp_dst_port: 'optional - udp dst port value consumed by #construct_udp',
|
|
1417
|
+
udp_len: 'optional - udp len value consumed by #construct_udp',
|
|
1418
|
+
udp_sum: 'optional - udp sum value consumed by #construct_udp'
|
|
1301
1419
|
)
|
|
1302
1420
|
|
|
1421
|
+
# Run send and return its result
|
|
1303
1422
|
#{self}.send(
|
|
1304
1423
|
pkt: 'required - pkt returned from other #construct_<type> methods',
|
|
1305
|
-
iface: 'optional - interface to send packet (defaults to eth0)'
|
|
1424
|
+
iface: 'optional - interface to send packet (defaults to eth0)'
|
|
1306
1425
|
)
|
|
1307
1426
|
|
|
1427
|
+
# Print the AUTHOR(S) string for this module.
|
|
1308
1428
|
#{self}.authors
|
|
1309
1429
|
"
|
|
1430
|
+
constants.sort
|
|
1310
1431
|
end
|
|
1311
1432
|
end
|
|
1312
1433
|
end
|
|
@@ -41,12 +41,15 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
# Run read text and return its result
|
|
45
|
+
#{self}.read_text(
|
|
46
|
+
pdf_path: 'optional - optional path to dir defaults to .'
|
|
46
47
|
)
|
|
47
48
|
|
|
49
|
+
# Print the AUTHOR(S) string for this module.
|
|
48
50
|
#{self}.authors
|
|
49
51
|
"
|
|
52
|
+
constants.sort
|
|
50
53
|
end
|
|
51
54
|
end
|
|
52
55
|
end
|
data/lib/pwn/plugins/pony.rb
CHANGED
|
@@ -276,9 +276,94 @@ module PWN
|
|
|
276
276
|
|
|
277
277
|
public_class_method def self.help
|
|
278
278
|
puts "USAGE:
|
|
279
|
-
|
|
279
|
+
# Default options can be set so that they dont have to be repeated
|
|
280
|
+
#{self}.options
|
|
281
|
+
|
|
282
|
+
# Method usage N/A
|
|
283
|
+
#{self}.options
|
|
284
|
+
|
|
285
|
+
# Method usage N/A
|
|
286
|
+
#{self}.override_options
|
|
287
|
+
|
|
288
|
+
# Method usage N/A
|
|
289
|
+
#{self}.override_options
|
|
290
|
+
|
|
291
|
+
# Method usage N/A
|
|
292
|
+
#{self}.subject_prefix(
|
|
293
|
+
value: 'optional - integer or string to pack/encode'
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
# Method usage N/A
|
|
297
|
+
#{self}.append_inputs
|
|
298
|
+
|
|
299
|
+
# Send an email
|
|
300
|
+
#{self}.mail(
|
|
301
|
+
body: 'optional - body value consumed by #mail',
|
|
302
|
+
subject: 'optional - subject value consumed by #mail',
|
|
303
|
+
to: 'required - to value consumed by #mail',
|
|
304
|
+
via: 'optional - via value consumed by #mail',
|
|
305
|
+
via_options: 'optional - via options value consumed by #mail'
|
|
306
|
+
)
|
|
307
|
+
|
|
308
|
+
# Method usage N/A
|
|
309
|
+
#{self}.permissable_options
|
|
310
|
+
|
|
311
|
+
# Method usage N/A
|
|
312
|
+
#{self}.default_delivery_method
|
|
313
|
+
|
|
314
|
+
# Method usage N/A
|
|
315
|
+
#{self}.standard_options
|
|
316
|
+
|
|
317
|
+
# Method usage N/A
|
|
318
|
+
#{self}.non_standard_options
|
|
319
|
+
|
|
320
|
+
# Method usage N/A
|
|
321
|
+
#{self}.build_mail(
|
|
322
|
+
date: 'optional - date value consumed by #build_mail',
|
|
323
|
+
from: 'optional - sender account or address to bind as operator',
|
|
324
|
+
via_options: 'optional - via options value consumed by #build_mail',
|
|
325
|
+
attachments: 'optional - attachments value consumed by #build_mail',
|
|
326
|
+
html_body: 'optional - html body value consumed by #build_mail (defaults to opts[:attachments])',
|
|
327
|
+
body: 'optional - body value consumed by #build_mail',
|
|
328
|
+
via: 'optional - via value consumed by #build_mail',
|
|
329
|
+
headers: 'optional - headers value consumed by #build_mail',
|
|
330
|
+
charset: 'optional - charset value consumed by #build_mail',
|
|
331
|
+
text_part_charset: 'optional - text part charset value consumed by #build_mail',
|
|
332
|
+
content_type: 'optional - content type value consumed by #build_mail'
|
|
333
|
+
)
|
|
334
|
+
|
|
335
|
+
# Method usage N/A
|
|
336
|
+
#{self}.build_html_part(
|
|
337
|
+
html_body: 'optional - html body value consumed by #build_html_part',
|
|
338
|
+
html_body_part_header: 'optional - html body part header value consumed by #build_html_part'
|
|
339
|
+
)
|
|
340
|
+
|
|
341
|
+
# Method usage N/A
|
|
342
|
+
#{self}.build_text_part(
|
|
343
|
+
charset: 'optional - charset value consumed by #build_text_part',
|
|
344
|
+
body: 'optional - body value consumed by #build_text_part',
|
|
345
|
+
body_part_header: 'optional - body part header value consumed by #build_text_part'
|
|
346
|
+
)
|
|
347
|
+
|
|
348
|
+
# Method usage N/A
|
|
349
|
+
#{self}.set_content_type(
|
|
350
|
+
mail: 'optional - mail value consumed by #set_content_type',
|
|
351
|
+
user_content_type: 'optional - user content type value consumed by #set_content_type'
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
# Method usage N/A
|
|
355
|
+
#{self}.add_attachments(
|
|
356
|
+
mail: 'optional - mail value consumed by #add_attachments',
|
|
357
|
+
attachments: 'optional - attachments value consumed by #add_attachments'
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
# Method usage N/A
|
|
361
|
+
#{self}.sendmail_binary
|
|
362
|
+
|
|
363
|
+
# Print the AUTHOR(S) string for this module.
|
|
280
364
|
#{self}.authors
|
|
281
365
|
"
|
|
366
|
+
constants.sort
|
|
282
367
|
end
|
|
283
368
|
end
|
|
284
369
|
end
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'pty'
|
|
4
|
+
require 'timeout'
|
|
5
|
+
|
|
6
|
+
module PWN
|
|
7
|
+
module Plugins
|
|
8
|
+
# PTY.spawn tube: sendline/recvuntil/recvline, persisted across pwn_eval.
|
|
9
|
+
module ProcessTube
|
|
10
|
+
@tubes = {}
|
|
11
|
+
|
|
12
|
+
public_class_method def self.required_bins
|
|
13
|
+
[]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
public_class_method def self.spawn(opts = {})
|
|
17
|
+
cmd = opts[:cmd] || opts[:command]
|
|
18
|
+
raise 'ERROR: cmd is required' if cmd.to_s.empty?
|
|
19
|
+
|
|
20
|
+
argv = cmd.is_a?(Array) ? cmd.map(&:to_s) : ['bash', '-lc', cmd.to_s]
|
|
21
|
+
r, w, pid = PTY.spawn(*argv)
|
|
22
|
+
id = "tube_#{pid}"
|
|
23
|
+
@tubes[id] = { r: r, w: w, pid: pid, buf: +'' }
|
|
24
|
+
{ id: id, pid: pid }
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
public_class_method def self.write_line(opts = {})
|
|
28
|
+
t = tube!(opts)
|
|
29
|
+
line = opts[:line] || opts[:data] || ''
|
|
30
|
+
t[:w].write("#{line}\n")
|
|
31
|
+
t[:w].flush
|
|
32
|
+
line.to_s
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
public_class_method def self.recvuntil(opts = {})
|
|
36
|
+
t = tube!(opts)
|
|
37
|
+
needle = opts[:until].to_s
|
|
38
|
+
raise 'ERROR: until is required' if needle.empty?
|
|
39
|
+
|
|
40
|
+
timeout = (opts[:timeout] || 5).to_f
|
|
41
|
+
Timeout.timeout(timeout) do
|
|
42
|
+
loop do
|
|
43
|
+
return t[:buf] if t[:buf].include?(needle)
|
|
44
|
+
|
|
45
|
+
ch = t[:r].read_nonblock(4_096)
|
|
46
|
+
t[:buf] << ch
|
|
47
|
+
rescue IO::WaitReadable
|
|
48
|
+
t[:r].wait_readable(0.2)
|
|
49
|
+
retry
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
public_class_method def self.recvline(opts = {})
|
|
55
|
+
recvuntil(opts.merge(until: "\n"))
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
public_class_method def self.close(opts = {})
|
|
59
|
+
t = tube!(opts)
|
|
60
|
+
t[:w].close
|
|
61
|
+
t[:r].close
|
|
62
|
+
Process.kill('TERM', t[:pid])
|
|
63
|
+
@tubes.delete(opts[:id].to_s)
|
|
64
|
+
true
|
|
65
|
+
rescue StandardError
|
|
66
|
+
@tubes.delete(opts[:id].to_s)
|
|
67
|
+
false
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
public_class_method def self.authors
|
|
71
|
+
"AUTHOR(S):\n 0day Inc. <support@0dayinc.com>\n"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
public_class_method def self.help
|
|
75
|
+
puts "USAGE:
|
|
76
|
+
# List host binaries this module expects to be installed.
|
|
77
|
+
#{self}.required_bins
|
|
78
|
+
|
|
79
|
+
# Run spawn and return its result
|
|
80
|
+
#{self}.spawn(
|
|
81
|
+
cmd: 'required - command string to run (defaults to opts[:command])',
|
|
82
|
+
command: 'optional - command value consumed by #spawn'
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
# Run write line and return its result
|
|
86
|
+
#{self}.write_line(
|
|
87
|
+
line: 'optional - line value consumed by #write_line',
|
|
88
|
+
data: 'optional - data value consumed by #write_line'
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Run recvuntil and return its result
|
|
92
|
+
#{self}.recvuntil(
|
|
93
|
+
until: 'required - until value consumed by #recvuntil',
|
|
94
|
+
timeout: 'optional - seconds to wait before giving up'
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
# Run recvline and return its result
|
|
98
|
+
#{self}.recvline
|
|
99
|
+
|
|
100
|
+
# Close a session previously returned by #open.
|
|
101
|
+
#{self}.close(
|
|
102
|
+
id: 'optional - id value consumed by #close'
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
# Print the AUTHOR(S) string for this module.
|
|
106
|
+
#{self}.authors
|
|
107
|
+
"
|
|
108
|
+
constants.sort
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
private_class_method def self.tube!(opts = {})
|
|
112
|
+
id = opts[:id].to_s
|
|
113
|
+
t = @tubes[id]
|
|
114
|
+
raise 'ERROR: id is required / unknown tube' unless t
|
|
115
|
+
|
|
116
|
+
t
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
end
|
data/lib/pwn/plugins/ps.rb
CHANGED
|
@@ -76,14 +76,20 @@ module PWN
|
|
|
76
76
|
|
|
77
77
|
public_class_method def self.help
|
|
78
78
|
puts "USAGE:
|
|
79
|
-
|
|
79
|
+
# Run list and return its result
|
|
80
|
+
#{self}.list(
|
|
81
|
+
pid: 'optional - pid value consumed by #list'
|
|
82
|
+
)
|
|
80
83
|
|
|
84
|
+
# Run cleanup pids and return its result
|
|
81
85
|
#{self}.cleanup_pids(
|
|
82
86
|
pids_arr: 'required - array of pids to kill'
|
|
83
87
|
)
|
|
84
88
|
|
|
89
|
+
# Print the AUTHOR(S) string for this module.
|
|
85
90
|
#{self}.authors
|
|
86
91
|
"
|
|
92
|
+
constants.sort
|
|
87
93
|
end
|
|
88
94
|
end
|
|
89
95
|
end
|
|
@@ -53,11 +53,15 @@ module PWN
|
|
|
53
53
|
|
|
54
54
|
public_class_method def self.help
|
|
55
55
|
puts "USAGE:
|
|
56
|
-
|
|
57
|
-
|
|
56
|
+
# Run create and return its result
|
|
57
|
+
#{self}.create(
|
|
58
|
+
level: 'optional - level value consumed by #create'
|
|
58
59
|
)
|
|
60
|
+
|
|
61
|
+
# Print the AUTHOR(S) string for this module.
|
|
59
62
|
#{self}.authors
|
|
60
63
|
"
|
|
64
|
+
constants.sort
|
|
61
65
|
end
|
|
62
66
|
end
|
|
63
67
|
end
|
|
@@ -50,20 +50,25 @@ module PWN
|
|
|
50
50
|
# Display Usage for this Module
|
|
51
51
|
|
|
52
52
|
public_class_method def self.help
|
|
53
|
-
puts
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
puts "USAGE:
|
|
54
|
+
# Open a session or connection and return a handle.
|
|
55
|
+
#{self}.open(
|
|
56
|
+
hostname: 'required - hostname value consumed by #open',
|
|
56
57
|
port: 'optional - defaults to 5672',
|
|
57
|
-
username: 'optional',
|
|
58
|
-
password: 'optional'
|
|
58
|
+
username: 'optional - username value consumed by #open',
|
|
59
|
+
password: 'optional - password value consumed by #open'
|
|
59
60
|
)
|
|
60
61
|
|
|
62
|
+
# Close a session previously returned by #open.
|
|
61
63
|
#{self}.close(
|
|
62
|
-
amqp_oject:
|
|
64
|
+
amqp_oject: 'optional - amqp oject value consumed by #close',
|
|
65
|
+
amqp_obj: 'optional - amqp obj value consumed by #close'
|
|
63
66
|
)
|
|
64
67
|
|
|
68
|
+
# Print the AUTHOR(S) string for this module.
|
|
65
69
|
#{self}.authors
|
|
66
|
-
|
|
70
|
+
"
|
|
71
|
+
constants.sort
|
|
67
72
|
end
|
|
68
73
|
end
|
|
69
74
|
end
|