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/ai/agent/sast.rb
CHANGED
|
@@ -37,12 +37,15 @@ module PWN
|
|
|
37
37
|
|
|
38
38
|
public_class_method def self.help
|
|
39
39
|
puts "USAGE:
|
|
40
|
-
|
|
40
|
+
# Run analyze and return its result
|
|
41
|
+
#{self}.analyze(
|
|
41
42
|
request: 'required - A string containing the source code snippet to be analyzed for SAST antipatterns and vulnerabilities.'
|
|
42
43
|
)
|
|
43
44
|
|
|
45
|
+
# Print the AUTHOR(S) string for this module.
|
|
44
46
|
#{self}.authors
|
|
45
47
|
"
|
|
48
|
+
constants.sort
|
|
46
49
|
end
|
|
47
50
|
end
|
|
48
51
|
end
|
data/lib/pwn/ai/agent/swarm.rb
CHANGED
|
@@ -396,42 +396,78 @@ module PWN
|
|
|
396
396
|
# Display Usage for this Module
|
|
397
397
|
|
|
398
398
|
public_class_method def self.help
|
|
399
|
-
puts
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
399
|
+
puts "USAGE:
|
|
400
|
+
# Persona registry (~/.pwn/agents.yml)
|
|
401
|
+
#{self}.personas
|
|
402
|
+
|
|
403
|
+
# Run spawn and return its result
|
|
404
|
+
#{self}.spawn(
|
|
405
|
+
name: 'required - persona name (snake_case)',
|
|
406
|
+
role: 'required - system_role_content overlay for this persona',
|
|
407
|
+
toolsets: 'optional - Array of Registry toolset names',
|
|
408
|
+
engine: 'optional - :openai / :anthropic / :grok / :gemini / :ollama / :openwebui',
|
|
409
|
+
max_iters: 'optional - per-turn iteration cap for this persona'
|
|
410
|
+
)
|
|
411
|
+
|
|
412
|
+
# Run retire and return its result
|
|
413
|
+
#{self}.retire(
|
|
414
|
+
name: 'optional - binary or identifier name'
|
|
415
|
+
)
|
|
416
|
+
|
|
417
|
+
# Swarm lifecycle & bus
|
|
418
|
+
#{self}.create(
|
|
419
|
+
topic: 'optional - topic value consumed by #create'
|
|
420
|
+
)
|
|
421
|
+
|
|
422
|
+
# Run list and return its result
|
|
423
|
+
#{self}.list
|
|
424
|
+
|
|
425
|
+
# Run bus append and return its result
|
|
426
|
+
#{self}.bus_append(
|
|
427
|
+
swarm_id: 'required - required, from: required, content: required',
|
|
428
|
+
to: 'optional - optional (default :all)',
|
|
429
|
+
from: 'optional - sender account or address to bind as operator',
|
|
430
|
+
content: 'optional - content value consumed by #bus_append'
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
# Run bus tail and return its result
|
|
434
|
+
#{self}.bus_tail(
|
|
435
|
+
swarm_id: 'optional - swarm id value consumed by #bus_tail',
|
|
436
|
+
limit: 'optional - limit value consumed by #bus_tail'
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
# Core: run a single persona turn under Loop.run
|
|
440
|
+
#{self}.ask(
|
|
441
|
+
name: 'required - persona name from ~/.pwn/agents.yml',
|
|
442
|
+
request: 'required - what to ask/instruct the persona',
|
|
443
|
+
swarm_id: 'optional - join an existing swarm (created if omitted)',
|
|
444
|
+
to: 'optional - addressee recorded on the bus (default :all)',
|
|
445
|
+
on_tool: 'optional - ->(name, args, result) live-UI callback',
|
|
446
|
+
from: 'optional - sender account or address to bind as operator (defaults to caller_label)',
|
|
447
|
+
text_only: 'required - text only value consumed by #ask'
|
|
448
|
+
)
|
|
449
|
+
|
|
450
|
+
# Run debate and return its result
|
|
451
|
+
#{self}.debate(
|
|
452
|
+
names: 'required - Array of persona names, order = speaking order',
|
|
453
|
+
topic: 'required - opening question / claim',
|
|
454
|
+
rounds: 'optional - full passes over names (default 2)',
|
|
455
|
+
swarm_id: 'optional - join an existing swarm',
|
|
456
|
+
on_tool: 'optional - ->(name, args, result) live-UI callback'
|
|
457
|
+
)
|
|
458
|
+
|
|
459
|
+
# Run broadcast and return its result
|
|
460
|
+
#{self}.broadcast(
|
|
461
|
+
request: 'required - required, names: optional - default all personas',
|
|
462
|
+
swarm_id: 'optional - swarm id value consumed by #broadcast',
|
|
463
|
+
names: 'required - Array names value consumed by #broadcast',
|
|
464
|
+
on_tool: 'optional - on tool value consumed by #broadcast'
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
# Print the AUTHOR(S) string for this module.
|
|
468
|
+
#{self}.authors
|
|
469
|
+
"
|
|
470
|
+
constants.sort
|
|
435
471
|
end
|
|
436
472
|
end
|
|
437
473
|
end
|
|
@@ -1808,42 +1808,171 @@ module PWN
|
|
|
1808
1808
|
# Display Usage for this Module
|
|
1809
1809
|
|
|
1810
1810
|
public_class_method def self.help
|
|
1811
|
-
puts
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
|
|
1818
|
-
|
|
1819
|
-
|
|
1820
|
-
|
|
1821
|
-
|
|
1822
|
-
|
|
1823
|
-
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
|
|
1845
|
-
|
|
1846
|
-
|
|
1811
|
+
puts "USAGE:
|
|
1812
|
+
# Run enabled and return its result
|
|
1813
|
+
#{self}.enabled?
|
|
1814
|
+
|
|
1815
|
+
# Run verbose and return its result
|
|
1816
|
+
#{self}.verbose?
|
|
1817
|
+
|
|
1818
|
+
# LLM plan generation is on by default. Set
|
|
1819
|
+
#{self}.llm_plan_enabled?
|
|
1820
|
+
|
|
1821
|
+
# Run every n and return its result
|
|
1822
|
+
#{self}.every_n
|
|
1823
|
+
|
|
1824
|
+
# Run interval s and return its result
|
|
1825
|
+
#{self}.interval_s
|
|
1826
|
+
|
|
1827
|
+
# Per-run state (also safe for nested/swarm if callers keep their own hash)
|
|
1828
|
+
#{self}.fresh(
|
|
1829
|
+
request: 'optional - original user goal string'
|
|
1830
|
+
)
|
|
1831
|
+
|
|
1832
|
+
# Every request gets a task compass. There is no request type
|
|
1833
|
+
#{self}.needs_task_breakdown?
|
|
1834
|
+
|
|
1835
|
+
# Request → ordered tangible tasks (each may map to many tools)
|
|
1836
|
+
#{self}.plan(
|
|
1837
|
+
request: 'required - user goal string',
|
|
1838
|
+
state: 'optional - fresh() hash to mutate',
|
|
1839
|
+
tasks: 'optional - Array injected plan array (tests)',
|
|
1840
|
+
llm_tasks: 'optional - injected LLM task array (tests)'
|
|
1841
|
+
)
|
|
1842
|
+
|
|
1843
|
+
# Format the full plan as the task-summary body (shown in entirety)
|
|
1844
|
+
#{self}.format_plan(
|
|
1845
|
+
tasks: 'required - Array of task strings',
|
|
1846
|
+
request: 'optional - goal string'
|
|
1847
|
+
)
|
|
1848
|
+
|
|
1849
|
+
# Run emit plan and return its result
|
|
1850
|
+
#{self}.emit_plan!(
|
|
1851
|
+
state: 'required - state value consumed by #emit_plan!',
|
|
1852
|
+
request: 'required - request value consumed by #emit_plan!'
|
|
1853
|
+
)
|
|
1854
|
+
|
|
1855
|
+
# Prefer Reflect when module_reflection is on (teacher engine / gated)
|
|
1856
|
+
#{self}.chat_for_plan(
|
|
1857
|
+
request: 'required - user goal to decompose'
|
|
1858
|
+
)
|
|
1859
|
+
|
|
1860
|
+
# Parse JSON array, fenced JSON, or numbered/bulleted plain text
|
|
1861
|
+
#{self}.parse_llm_tasks(
|
|
1862
|
+
raw: 'required - raw LLM response text'
|
|
1863
|
+
)
|
|
1864
|
+
|
|
1865
|
+
# Thin offline fallback when the LLM is disabled or unavailable
|
|
1866
|
+
#{self}.fallback_decompose(
|
|
1867
|
+
goal: 'required - user goal string'
|
|
1868
|
+
)
|
|
1869
|
+
|
|
1870
|
+
# Back-compat alias used by older call sites / specs
|
|
1871
|
+
#{self}.heuristic_decompose(
|
|
1872
|
+
goal: 'required - user goal string'
|
|
1873
|
+
)
|
|
1874
|
+
|
|
1875
|
+
# High-level brief for a collection of impending tool calls
|
|
1876
|
+
#{self}.about_to(
|
|
1877
|
+
tools: 'optional - array of {name:, args:} or bare names',
|
|
1878
|
+
name: 'optional - single tool name (legacy one-tool path)',
|
|
1879
|
+
args: 'optional - single tool args (ignored for brief content)',
|
|
1880
|
+
request: 'optional - goal text',
|
|
1881
|
+
state: 'optional - fresh() hash'
|
|
1882
|
+
)
|
|
1883
|
+
|
|
1884
|
+
# Active plain-English plan item (and index/n) for Loop / model steering
|
|
1885
|
+
#{self}.active_task(
|
|
1886
|
+
state: 'required - fresh() hash',
|
|
1887
|
+
messages: 'optional - messages value consumed by #active_task'
|
|
1888
|
+
)
|
|
1889
|
+
|
|
1890
|
+
# Remaining English work units that lack tool-result evidence
|
|
1891
|
+
#{self}.unfinished_tasks(
|
|
1892
|
+
state: 'required - fresh() hash',
|
|
1893
|
+
messages: 'optional - Loop message array for extra coverage'
|
|
1894
|
+
)
|
|
1895
|
+
|
|
1896
|
+
# True while a multi-step English plan still has uncovered work
|
|
1897
|
+
#{self}.plan_open?(
|
|
1898
|
+
state: 'required - fresh() hash',
|
|
1899
|
+
messages: 'optional - Loop message array'
|
|
1900
|
+
)
|
|
1901
|
+
|
|
1902
|
+
# Short block for engine messages: full plan + focus on active English task
|
|
1903
|
+
#{self}.plan_context(
|
|
1904
|
+
state: 'required - fresh() hash'
|
|
1905
|
+
)
|
|
1906
|
+
|
|
1907
|
+
# Build a Registry/tool-router relevance string from English tasks
|
|
1908
|
+
#{self}.relevance_query(
|
|
1909
|
+
state: 'optional - fresh() hash',
|
|
1910
|
+
request: 'optional - original user goal fallback'
|
|
1911
|
+
)
|
|
1912
|
+
|
|
1913
|
+
# Inject / refresh the active-task focus into Loop messages when plan_idx changes
|
|
1914
|
+
#{self}.active_task_prompt(
|
|
1915
|
+
state: 'required - fresh() hash',
|
|
1916
|
+
force: 'optional - Boolean re-emit even if idx unchanged',
|
|
1917
|
+
messages: 'optional - messages value consumed by #active_task_prompt',
|
|
1918
|
+
request: 'optional - request value consumed by #active_task_prompt'
|
|
1919
|
+
)
|
|
1920
|
+
|
|
1921
|
+
# Pull the operators original ask out of curriculum / critic / GOAL+PLAN
|
|
1922
|
+
#{self}.canonical_request(
|
|
1923
|
+
request: 'required - raw user or wrapper string'
|
|
1924
|
+
)
|
|
1925
|
+
|
|
1926
|
+
# True when a candidate plan item is tool jargon (e.g. `shell`,
|
|
1927
|
+
#{self}.tool_jargon_task?(
|
|
1928
|
+
item: 'required - candidate task string'
|
|
1929
|
+
)
|
|
1930
|
+
|
|
1931
|
+
# Parse a plan_first / red_team surviving outline into tangible tasks
|
|
1932
|
+
#{self}.parse_outline_tasks(
|
|
1933
|
+
outline: 'required - free-text plan outline'
|
|
1934
|
+
)
|
|
1935
|
+
|
|
1936
|
+
# After S4 red_team / plan_first: optionally rewrite ts_state[:plan]
|
|
1937
|
+
#{self}.unify_plan!(
|
|
1938
|
+
state: 'required - fresh() hash',
|
|
1939
|
+
outline: 'required - plan_first text and/or red_team hint',
|
|
1940
|
+
source: 'optional - :plan_first|:red_team|:merged (default :merged)'
|
|
1941
|
+
)
|
|
1942
|
+
|
|
1943
|
+
# Advance or hold plan_idx from an R2 step batch
|
|
1944
|
+
#{self}.apply_prm_advancement!(
|
|
1945
|
+
state: 'required - fresh() hash',
|
|
1946
|
+
rewards: 'required - Array of -1|0|1 (batch order)',
|
|
1947
|
+
intents: 'optional - Array of intent verb strings for the batch',
|
|
1948
|
+
names: 'optional - Array tool names in the batch',
|
|
1949
|
+
result: 'optional - latest tool result string',
|
|
1950
|
+
mistake: 'optional - truthy when a mistake fingerprint hit this batch'
|
|
1951
|
+
)
|
|
1952
|
+
|
|
1953
|
+
# Record a completed tool. Does NOT emit task lines with results
|
|
1954
|
+
#{self}.record!(
|
|
1955
|
+
state: 'required - fresh() hash',
|
|
1956
|
+
name: 'required - tool name',
|
|
1957
|
+
args: 'optional - tool args',
|
|
1958
|
+
result: 'optional - tool result string'
|
|
1959
|
+
)
|
|
1960
|
+
|
|
1961
|
+
# Optional progress / done line (verbose or flush). Still plain English;
|
|
1962
|
+
#{self}.emit!(
|
|
1963
|
+
state: 'required - fresh() hash',
|
|
1964
|
+
final: 'optional - Boolean closing brief (default: false)'
|
|
1965
|
+
)
|
|
1966
|
+
|
|
1967
|
+
# Run flush and return its result
|
|
1968
|
+
#{self}.flush!(
|
|
1969
|
+
state: 'required - fresh() hash'
|
|
1970
|
+
)
|
|
1971
|
+
|
|
1972
|
+
# Print the AUTHOR(S) string for this module.
|
|
1973
|
+
#{self}.authors
|
|
1974
|
+
"
|
|
1975
|
+
constants.sort
|
|
1847
1976
|
end
|
|
1848
1977
|
end
|
|
1849
1978
|
end
|
|
@@ -357,12 +357,111 @@ module PWN
|
|
|
357
357
|
end
|
|
358
358
|
|
|
359
359
|
public_class_method def self.help
|
|
360
|
-
puts
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
360
|
+
puts "USAGE:
|
|
361
|
+
# Run present and return its result
|
|
362
|
+
#{self}.present?(
|
|
363
|
+
value: 'required - integer or string to pack/encode'
|
|
364
|
+
)
|
|
365
|
+
|
|
366
|
+
# Run placeholder and return its result
|
|
367
|
+
#{self}.placeholder?(
|
|
368
|
+
text: 'optional - text value consumed by #placeholder?'
|
|
369
|
+
)
|
|
370
|
+
|
|
371
|
+
# Run bashism and return its result
|
|
372
|
+
#{self}.bashism?(
|
|
373
|
+
text: 'optional - text value consumed by #bashism?'
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
# Run shell bash and return its result
|
|
377
|
+
#{self}.shell_bash?
|
|
378
|
+
|
|
379
|
+
# Run shell name and return its result
|
|
380
|
+
#{self}.shell_name
|
|
381
|
+
|
|
382
|
+
# Run protect http and return its result
|
|
383
|
+
#{self}.protect_http!
|
|
384
|
+
|
|
385
|
+
# Run protect core constants and return its result
|
|
386
|
+
#{self}.protect_core_constants!
|
|
387
|
+
|
|
388
|
+
# Coerce common wrong keys onto the first required schema field
|
|
389
|
+
#{self}.coerce_args(
|
|
390
|
+
args: 'optional - args value consumed by #coerce_args',
|
|
391
|
+
required: 'optional - Array required value consumed by #coerce_args'
|
|
392
|
+
)
|
|
393
|
+
|
|
394
|
+
# Run invalid payload and return its result
|
|
395
|
+
#{self}.invalid_payload(
|
|
396
|
+
hint: 'optional - hint value consumed by #invalid_payload',
|
|
397
|
+
shell: 'optional - shell value consumed by #invalid_payload (defaults to shell_name)'
|
|
398
|
+
)
|
|
399
|
+
|
|
400
|
+
# Run host load and return its result
|
|
401
|
+
#{self}.host_load
|
|
402
|
+
|
|
403
|
+
# Conservative wall-clock seconds for shell / pwn_eval
|
|
404
|
+
#{self}.deadline_s(
|
|
405
|
+
kind: 'optional - kind value consumed by #deadline_s',
|
|
406
|
+
timeout: 'optional - seconds to wait before giving up (defaults to opts[:timeout_s])',
|
|
407
|
+
timeout_s: 'optional - timeout s value consumed by #deadline_s'
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
# Run reset timeout budget and return its result
|
|
411
|
+
#{self}.reset_timeout_budget
|
|
412
|
+
|
|
413
|
+
# Run reset timeout budget and return its result
|
|
414
|
+
#{self}.reset_timeout_budget!
|
|
415
|
+
|
|
416
|
+
# Run mutation count and return its result
|
|
417
|
+
#{self}.mutation_count
|
|
418
|
+
|
|
419
|
+
# Run payload spent and return its result
|
|
420
|
+
#{self}.payload_spent
|
|
421
|
+
|
|
422
|
+
# Run note timeout and return its result
|
|
423
|
+
#{self}.note_timeout!(
|
|
424
|
+
timeout: 'optional - seconds to wait before giving up'
|
|
425
|
+
)
|
|
426
|
+
|
|
427
|
+
# Run next timeout and return its result
|
|
428
|
+
#{self}.next_timeout(
|
|
429
|
+
timeout: 'optional - seconds to wait before giving up',
|
|
430
|
+
spent: 'optional - spent value consumed by #next_timeout'
|
|
431
|
+
)
|
|
432
|
+
|
|
433
|
+
# Timeout policy (loop-law, not a skill):
|
|
434
|
+
#{self}.timeout_lesson(
|
|
435
|
+
tool: 'required - tool value consumed by #timeout_lesson',
|
|
436
|
+
timeout: 'required - seconds to wait before giving up'
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
# Run timeout result and return its result
|
|
440
|
+
#{self}.timeout_result(
|
|
441
|
+
timeout: 'required - seconds to wait before giving up',
|
|
442
|
+
tool: 'optional - tool value consumed by #timeout_result',
|
|
443
|
+
payload: 'optional - payload value consumed by #timeout_result',
|
|
444
|
+
task: 'optional - task value consumed by #timeout_result',
|
|
445
|
+
stdout: 'optional - stdout value consumed by #timeout_result',
|
|
446
|
+
stderr: 'optional - stderr value consumed by #timeout_result',
|
|
447
|
+
shell: 'required - shell value consumed by #timeout_result (defaults to shell_name)'
|
|
448
|
+
)
|
|
449
|
+
|
|
450
|
+
# Run timeout prior count and return its result
|
|
451
|
+
#{self}.timeout_prior_count(
|
|
452
|
+
tool: 'optional - tool value consumed by #timeout_prior_count'
|
|
453
|
+
)
|
|
454
|
+
|
|
455
|
+
# Run refuse copied persist and return its result
|
|
456
|
+
#{self}.refuse_copied_persist?(
|
|
457
|
+
name: 'optional - binary or identifier name',
|
|
458
|
+
args: 'optional - args value consumed by #refuse_copied_persist?'
|
|
459
|
+
)
|
|
460
|
+
|
|
461
|
+
# Print the AUTHOR(S) string for this module.
|
|
462
|
+
#{self}.authors
|
|
463
|
+
"
|
|
464
|
+
constants.sort
|
|
366
465
|
end
|
|
367
466
|
end
|
|
368
467
|
end
|
|
@@ -31,7 +31,14 @@ PWN::AI::Agent::Registry.register(
|
|
|
31
31
|
limit: args[:limit] || 12,
|
|
32
32
|
exclude_session_id: exclude,
|
|
33
33
|
include_current: args[:include_current] == true
|
|
34
|
-
)
|
|
34
|
+
).tap do |hits|
|
|
35
|
+
sid = exclude.to_s
|
|
36
|
+
next if sid.empty? || !defined?(PWN::Plugins::ArtifactRegistry)
|
|
37
|
+
|
|
38
|
+
artifacts = PWN::Plugins::ArtifactRegistry.list(session_id: sid)
|
|
39
|
+
hits[:artifacts] = artifacts if hits.is_a?(Hash)
|
|
40
|
+
hits << { artifacts: artifacts } if hits.is_a?(Array) && artifacts.any?
|
|
41
|
+
end
|
|
35
42
|
}
|
|
36
43
|
)
|
|
37
44
|
|
|
@@ -41,13 +41,16 @@ module PWN
|
|
|
41
41
|
|
|
42
42
|
public_class_method def self.help
|
|
43
43
|
puts "USAGE:
|
|
44
|
-
|
|
44
|
+
# Run analyze and return its result
|
|
45
|
+
#{self}.analyze(
|
|
45
46
|
request: 'required - current step in the JavaScript debugging session to analyze',
|
|
46
47
|
source_to_review: 'required - the block of JavaScript code in which the current step resides'
|
|
47
48
|
)
|
|
48
49
|
|
|
50
|
+
# Print the AUTHOR(S) string for this module.
|
|
49
51
|
#{self}.authors
|
|
50
52
|
"
|
|
53
|
+
constants.sort
|
|
51
54
|
end
|
|
52
55
|
end
|
|
53
56
|
end
|
|
@@ -180,27 +180,47 @@ module PWN
|
|
|
180
180
|
end
|
|
181
181
|
|
|
182
182
|
public_class_method def self.help
|
|
183
|
-
puts
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
183
|
+
puts "USAGE:
|
|
184
|
+
# Run enter user path and return its result
|
|
185
|
+
#{self}.enter_user_path!
|
|
186
|
+
|
|
187
|
+
# Run leave user path and return its result
|
|
188
|
+
#{self}.leave_user_path!
|
|
189
|
+
|
|
190
|
+
# Run user path and return its result
|
|
191
|
+
#{self}.user_path?
|
|
192
|
+
|
|
193
|
+
# Run should defer and return its result
|
|
194
|
+
#{self}.should_defer?
|
|
195
|
+
|
|
196
|
+
# Run defer and return its result
|
|
197
|
+
#{self}.defer(
|
|
198
|
+
session_id: 'required - PWN::Sessions id',
|
|
199
|
+
request: 'optional - original user request',
|
|
200
|
+
final: 'optional - user-visible final answer',
|
|
201
|
+
predicted: 'optional - W3 predicted score',
|
|
202
|
+
plan: 'optional - tangible-task plan',
|
|
203
|
+
ts_state: 'optional - TaskSummarizer state'
|
|
204
|
+
)
|
|
205
|
+
|
|
206
|
+
# Run finalize and return its result
|
|
207
|
+
#{self}.finalize(
|
|
208
|
+
session_id: 'optional - request:, final:, predicted:, plan:, ts_state:',
|
|
209
|
+
should: 'optional - should value consumed by #finalize'
|
|
210
|
+
)
|
|
211
|
+
|
|
212
|
+
# Run join all and return its result
|
|
213
|
+
#{self}.join_all!(
|
|
214
|
+
timeout: 'optional - seconds to wait before giving up'
|
|
215
|
+
)
|
|
216
|
+
|
|
217
|
+
# Run pending and return its result
|
|
218
|
+
#{self}.pending
|
|
219
|
+
|
|
220
|
+
# Print the AUTHOR(S) string for this module.
|
|
221
|
+
#{self}.authors
|
|
222
|
+
"
|
|
223
|
+
constants.sort
|
|
204
224
|
end
|
|
205
225
|
|
|
206
226
|
private_class_method def self.track(opts = {})
|
|
@@ -89,14 +89,17 @@ module PWN
|
|
|
89
89
|
|
|
90
90
|
public_class_method def self.help
|
|
91
91
|
puts "USAGE:
|
|
92
|
-
|
|
93
|
-
|
|
92
|
+
# Run analyze and return its result
|
|
93
|
+
#{self}.analyze(
|
|
94
|
+
request: 'required - high level description of vulnerability discovered (e.g. Discovered a SQLi vulnerability in /login',
|
|
94
95
|
markup_type: 'optional - specify the type of markup to generate :jira|:markdown|:html|:confluence|:xml (default: :jira)',
|
|
95
|
-
output_path: 'optional -
|
|
96
|
+
output_path: 'optional - path to save the generated markdown report'
|
|
96
97
|
)
|
|
97
98
|
|
|
99
|
+
# Print the AUTHOR(S) string for this module.
|
|
98
100
|
#{self}.authors
|
|
99
101
|
"
|
|
102
|
+
constants.sort
|
|
100
103
|
end
|
|
101
104
|
end
|
|
102
105
|
end
|