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
|
@@ -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
|
|
@@ -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
|
data/lib/pwn/ai/agent.rb
CHANGED
data/lib/pwn/ai/anthropic.rb
CHANGED
|
@@ -862,25 +862,59 @@ module PWN
|
|
|
862
862
|
|
|
863
863
|
public_class_method def self.help
|
|
864
864
|
puts "USAGE:
|
|
865
|
-
|
|
865
|
+
# Run refresh oauth bearer token and return its result
|
|
866
|
+
#{self}.refresh_oauth_bearer_token(
|
|
867
|
+
refresh_token: 'required - Anthropic OAuth refresh_token',
|
|
868
|
+
client_id: 'optional - defaults to Claude Code public client',
|
|
869
|
+
token_uri: 'optional - defaults to platform.claude.com token endpoint',
|
|
870
|
+
bearer_token: 'optional - bearer token value consumed by #refresh_oauth_bearer_token',
|
|
871
|
+
expires_at: 'optional - expires at value consumed by #refresh_oauth_bearer_token'
|
|
872
|
+
)
|
|
873
|
+
|
|
874
|
+
# Run obtain oauth bearer token and return its result
|
|
875
|
+
#{self}.obtain_oauth_bearer_token(
|
|
876
|
+
client_id: 'optional - Claude Code public client id',
|
|
877
|
+
scope: 'optional - space-delimited scopes',
|
|
878
|
+
redirect_uri: 'optional - must match registered callback',
|
|
879
|
+
authorize_uri: 'optional - claude.ai authorize endpoint',
|
|
880
|
+
token_uri: 'optional - platform.claude.com token endpoint',
|
|
881
|
+
bearer_token: 'optional - bearer token value consumed by #obtain_oauth_bearer_token',
|
|
882
|
+
refresh_token: 'optional - refresh token value consumed by #obtain_oauth_bearer_token',
|
|
883
|
+
expires_at: 'optional - expires at value consumed by #obtain_oauth_bearer_token'
|
|
884
|
+
)
|
|
866
885
|
|
|
867
|
-
#
|
|
868
|
-
|
|
869
|
-
|
|
886
|
+
# Run get models and return its result
|
|
887
|
+
#{self}.get_models
|
|
888
|
+
|
|
889
|
+
# Native tool-calling adapter for PWN::AI::Agent::Loop
|
|
890
|
+
#{self}.chat_with_tools(
|
|
891
|
+
assistant_message: 'optional - <same hash> }',
|
|
892
|
+
messages: 'required - OpenAI-format messages array (system/user/assistant/tool)',
|
|
893
|
+
tools: 'optional - OpenAI tools array [{type:function, function:{...}}]',
|
|
894
|
+
tool_choice: 'optional - auto | none | required | {type:function, function:{name:..}}',
|
|
895
|
+
model: 'optional - overrides PWN::Env[:ai][:anthropic][:model]',
|
|
896
|
+
temp: 'optional - temperature (defaults to PWN::Env[:ai][:anthropic][:temp] || 1)',
|
|
897
|
+
max_tokens: 'optional - defaults to PWN::Env[:ai][:anthropic][:max_tokens] || 128_000',
|
|
898
|
+
timeout: 'optional - seconds (default 900)',
|
|
899
|
+
spinner: 'optional - display spinner (default false)'
|
|
900
|
+
)
|
|
870
901
|
|
|
871
|
-
|
|
902
|
+
# Run chat and return its result
|
|
903
|
+
#{self}.chat(
|
|
872
904
|
request: 'required - message to Anthropic',
|
|
873
905
|
model: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:anthropic][:model])',
|
|
874
906
|
temp: 'optional - creative response float (defaults to PWN::Env[:ai][:anthropic][:temp])',
|
|
875
907
|
system_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:anthropic][:system_role_content])',
|
|
876
908
|
response_history: 'optional - pass response back in to have a conversation',
|
|
877
|
-
speak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
878
|
-
timeout: 'optional - timeout in seconds (defaults to 900)',
|
|
909
|
+
speak_answer: 'optional - optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
910
|
+
timeout: 'optional - optional timeout in seconds (defaults to 900)',
|
|
879
911
|
spinner: 'optional - display spinner (defaults to false)'
|
|
880
912
|
)
|
|
881
913
|
|
|
914
|
+
# Print the AUTHOR(S) string for this module.
|
|
882
915
|
#{self}.authors
|
|
883
916
|
"
|
|
917
|
+
constants.sort
|
|
884
918
|
end
|
|
885
919
|
end
|
|
886
920
|
end
|
data/lib/pwn/ai/gemini.rb
CHANGED
|
@@ -454,28 +454,38 @@ module PWN
|
|
|
454
454
|
|
|
455
455
|
public_class_method def self.help
|
|
456
456
|
puts "USAGE:
|
|
457
|
-
models
|
|
457
|
+
# Run get models and return its result
|
|
458
|
+
#{self}.get_models
|
|
459
|
+
|
|
460
|
+
# Native tool-calling adapter for PWN::AI::Agent::Loop
|
|
461
|
+
#{self}.chat_with_tools(
|
|
462
|
+
assistant_message: 'optional - <same hash> }',
|
|
463
|
+
messages: 'required - OpenAI-format messages array (system/user/assistant/tool)',
|
|
464
|
+
tools: 'optional - OpenAI tools array [{type:function, function:{...}}]',
|
|
465
|
+
tool_choice: 'optional - auto | none | required | {type:function, function:{name:..}}',
|
|
466
|
+
model: 'optional - overrides PWN::Env[:ai][:gemini][:model]',
|
|
467
|
+
temp: 'optional - temperature (defaults to PWN::Env[:ai][:gemini][:temp] || 1)',
|
|
468
|
+
max_tokens: 'optional - maxOutputTokens (defaults to 8192)',
|
|
469
|
+
timeout: 'optional - seconds (default 900)',
|
|
470
|
+
spinner: 'optional - display spinner (default false)'
|
|
471
|
+
)
|
|
458
472
|
|
|
459
|
-
|
|
473
|
+
# Run chat and return its result
|
|
474
|
+
#{self}.chat(
|
|
460
475
|
request: 'required - message to Gemini',
|
|
461
476
|
model: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:gemini][:model])',
|
|
462
477
|
temp: 'optional - creative response float (defaults to PWN::Env[:ai][:gemini][:temp])',
|
|
463
478
|
system_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:gemini][:system_role_content])',
|
|
464
479
|
response_history: 'optional - pass response back in to have a conversation',
|
|
465
|
-
speak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
466
|
-
timeout: 'optional - timeout in seconds (defaults to 900)',
|
|
480
|
+
speak_answer: 'optional - optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
481
|
+
timeout: 'optional - optional timeout in seconds (defaults to 900)',
|
|
467
482
|
spinner: 'optional - display spinner (defaults to false)'
|
|
468
483
|
)
|
|
469
484
|
|
|
470
|
-
|
|
471
|
-
messages: 'required - OpenAI-format messages array',
|
|
472
|
-
tools: 'optional - OpenAI tools array',
|
|
473
|
-
tool_choice: 'optional - auto | none | required | {function:{name:..}}',
|
|
474
|
-
model: 'optional - overrides PWN::Env[:ai][:gemini][:model]'
|
|
475
|
-
)
|
|
476
|
-
|
|
485
|
+
# Print the AUTHOR(S) string for this module.
|
|
477
486
|
#{self}.authors
|
|
478
487
|
"
|
|
488
|
+
constants.sort
|
|
479
489
|
end
|
|
480
490
|
end
|
|
481
491
|
end
|
data/lib/pwn/ai/grok.rb
CHANGED
|
@@ -705,21 +705,59 @@ module PWN
|
|
|
705
705
|
|
|
706
706
|
public_class_method def self.help
|
|
707
707
|
puts "USAGE:
|
|
708
|
-
|
|
708
|
+
# Run refresh oauth bearer token and return its result
|
|
709
|
+
#{self}.refresh_oauth_bearer_token(
|
|
710
|
+
refresh_token: 'required - xAI OAuth refresh_token',
|
|
711
|
+
client_id: 'optional - defaults to public Grok-CLI client',
|
|
712
|
+
token_uri: 'optional - defaults to https://auth.x.ai/oauth2/token',
|
|
713
|
+
bearer_token: 'optional - bearer token value consumed by #refresh_oauth_bearer_token',
|
|
714
|
+
expires_at: 'optional - expires at value consumed by #refresh_oauth_bearer_token'
|
|
715
|
+
)
|
|
716
|
+
|
|
717
|
+
# Run obtain oauth bearer token and return its result
|
|
718
|
+
#{self}.obtain_oauth_bearer_token(
|
|
719
|
+
client_id: 'optional - xAI OAuth Client ID (defaults to public Grok-CLI client)',
|
|
720
|
+
scope: 'optional - space-delimited scopes (defaults to XAI_OAUTH_SCOPE)',
|
|
721
|
+
timeout: 'optional - seconds to wait for user consent (default 300)',
|
|
722
|
+
api: 'optional - access at consent time.',
|
|
723
|
+
token_uri: 'optional - token uri value consumed by #obtain_oauth_bearer_token',
|
|
724
|
+
bearer_token: 'optional - bearer token value consumed by #obtain_oauth_bearer_token',
|
|
725
|
+
refresh_token: 'optional - refresh token value consumed by #obtain_oauth_bearer_token',
|
|
726
|
+
expires_at: 'optional - expires at value consumed by #obtain_oauth_bearer_token'
|
|
727
|
+
)
|
|
728
|
+
|
|
729
|
+
# Run get models and return its result
|
|
730
|
+
#{self}.get_models
|
|
731
|
+
|
|
732
|
+
# Run chat with tools and return its result
|
|
733
|
+
#{self}.chat_with_tools(
|
|
734
|
+
messages: 'required - full OpenAI-format messages array (system/user/assistant/tool)',
|
|
735
|
+
tools: 'optional - OpenAI tools array [{type:function, function:{...}}]',
|
|
736
|
+
tool_choice: 'optional - auto | none | required | {type:function, function:{name:..}}',
|
|
737
|
+
model: 'optional - overrides PWN::Env[:ai][:grok][:model]',
|
|
738
|
+
temp: 'optional - temperature (defaults to PWN::Env[:ai][:grok][:temp] || 1)',
|
|
739
|
+
timeout: 'optional - seconds (default 180)',
|
|
740
|
+
spinner: 'optional - display spinner (default false)',
|
|
741
|
+
quiet: 'optional - quiet value consumed by #chat_with_tools'
|
|
742
|
+
)
|
|
709
743
|
|
|
710
|
-
|
|
744
|
+
# Run chat and return its result
|
|
745
|
+
#{self}.chat(
|
|
711
746
|
request: 'required - message to Grok',
|
|
712
747
|
model: 'optional - model to use for text generation (defaults to PWN::Env[:ai][:grok][:model])',
|
|
713
|
-
temp: 'optional - creative response float (
|
|
748
|
+
temp: 'optional - creative response float (deafults to PWN::Env[:ai][:grok][:temp])',
|
|
714
749
|
system_role_content: 'optional - context to set up the model behavior for conversation (Default: PWN::Env[:ai][:grok][:system_role_content])',
|
|
715
750
|
response_history: 'optional - pass response back in to have a conversation',
|
|
716
|
-
speak_answer: 'optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
717
|
-
timeout: 'optional - timeout in seconds (defaults to 900)'
|
|
718
|
-
spinner: 'optional - display spinner (defaults to false)'
|
|
751
|
+
speak_answer: 'optional - optional speak answer using PWN::Plugins::Voice.text_to_speech (Default: nil)',
|
|
752
|
+
timeout: 'optional - optional timeout in seconds (defaults to 900)',
|
|
753
|
+
spinner: 'optional - display spinner (defaults to false)',
|
|
754
|
+
quiet: 'optional - quiet value consumed by #chat'
|
|
719
755
|
)
|
|
720
756
|
|
|
757
|
+
# Print the AUTHOR(S) string for this module.
|
|
721
758
|
#{self}.authors
|
|
722
759
|
"
|
|
760
|
+
constants.sort
|
|
723
761
|
end
|
|
724
762
|
end
|
|
725
763
|
end
|