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
|
@@ -658,49 +658,173 @@ module PWN
|
|
|
658
658
|
|
|
659
659
|
public_class_method def self.help
|
|
660
660
|
puts "USAGE:
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
661
|
+
# Run login and return its result
|
|
662
|
+
#{self}.login(
|
|
663
|
+
username: 'optional - username (default PWN::Env[:plugins][:hackerone][:username])',
|
|
664
|
+
api_key: 'optional - api token (default PWN::Env; will prompt if still nil)',
|
|
665
|
+
token: 'optional - alias for api_key'
|
|
664
666
|
)
|
|
665
667
|
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
668
|
+
# Run api and return its result
|
|
669
|
+
#{self}.api(
|
|
670
|
+
path: 'required - path relative to /v1/hackers (e.g. me/reports)',
|
|
671
|
+
method: 'optional - :get|:post|:put|:patch|:delete (default :get)',
|
|
672
|
+
params: 'optional - query params Hash',
|
|
673
|
+
body: 'optional - request body Hash/Array/String (defaults to opts[:http_body])',
|
|
674
|
+
username: 'optional - username value consumed by #api',
|
|
675
|
+
api_key: 'optional - api key value consumed by #api',
|
|
676
|
+
h1_obj: 'optional - session from #login (supplies username/api_key)',
|
|
677
|
+
raw: 'optional - return raw response (default false)',
|
|
678
|
+
http_method: 'optional - http method value consumed by #api (defaults to :get)',
|
|
679
|
+
http_body: 'optional - http body value consumed by #api'
|
|
672
680
|
)
|
|
673
681
|
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
programs = #{self}.get_programs
|
|
679
|
-
program = #{self}.get_program(handle: 'security')
|
|
680
|
-
scopes = #{self}.get_structured_scopes(handle: 'security')
|
|
681
|
-
excl = #{self}.get_scope_exclusions(handle: 'security')
|
|
682
|
-
weak = #{self}.get_weaknesses(handle: 'security')
|
|
683
|
-
|
|
684
|
-
items = #{self}.get_hacktivity
|
|
685
|
-
|
|
686
|
-
intents = #{self}.get_report_intents
|
|
687
|
-
intent = #{self}.get_report_intent(id: 1)
|
|
688
|
-
intent = #{self}.create_report_intent(body: { data: { type: 'report-intent', attributes: {} } })
|
|
689
|
-
intent = #{self}.update_report_intent(id: 1, body: { data: { type: 'report-intent', attributes: {} } })
|
|
690
|
-
#{self}.submit_report_intent(id: 1)
|
|
691
|
-
#{self}.delete_report_intent(id: 1)
|
|
692
|
-
atts = #{self}.get_report_intent_attachments(report_intent_id: 1)
|
|
693
|
-
#{self}.delete_report_intent_attachment(report_intent_id: 1, id: 2)
|
|
694
|
-
|
|
695
|
-
json = #{self}.api(
|
|
696
|
-
path: 'me/reports',
|
|
697
|
-
method: :get,
|
|
698
|
-
params: { page: { number: 1 } }
|
|
682
|
+
# ---- Reports -------------------------------------------------------
|
|
683
|
+
#{self}.get_me_reports(
|
|
684
|
+
params: 'optional - query params Hash (e.g. page/filter)',
|
|
685
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
699
686
|
)
|
|
700
687
|
|
|
701
|
-
#
|
|
688
|
+
# Run get report and return its result
|
|
689
|
+
#{self}.get_report(
|
|
690
|
+
id: 'required - report id',
|
|
691
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
692
|
+
params: 'optional - params value consumed by #get_report'
|
|
693
|
+
)
|
|
694
|
+
|
|
695
|
+
# Run create report and return its result
|
|
696
|
+
#{self}.create_report(
|
|
697
|
+
team_handle: 'required - program handle',
|
|
698
|
+
title: 'required - report title',
|
|
699
|
+
vulnerability_information: 'required - detailed description',
|
|
700
|
+
impact: 'optional - impact text',
|
|
701
|
+
severity_rating: 'optional - none|low|medium|high|critical',
|
|
702
|
+
weakness_id: 'optional - weakness id integer',
|
|
703
|
+
structured_scope_id: 'optional - structured scope id value consumed by #create_report',
|
|
704
|
+
body: 'optional - full JSON:API body Hash (overrides attribute kwargs)',
|
|
705
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
706
|
+
)
|
|
707
|
+
|
|
708
|
+
# ---- Payments ------------------------------------------------------
|
|
709
|
+
#{self}.get_balance(
|
|
710
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
# Run get earnings and return its result
|
|
714
|
+
#{self}.get_earnings(
|
|
715
|
+
params: 'optional - query params Hash',
|
|
716
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
717
|
+
)
|
|
718
|
+
|
|
719
|
+
# Run get payouts and return its result
|
|
720
|
+
#{self}.get_payouts(
|
|
721
|
+
params: 'optional - query params Hash',
|
|
722
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
723
|
+
)
|
|
724
|
+
|
|
725
|
+
# ---- Programs -------------------------------------------------------
|
|
726
|
+
#{self}.get_programs(
|
|
727
|
+
params: 'optional - query params Hash',
|
|
728
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
729
|
+
)
|
|
730
|
+
|
|
731
|
+
# Run get program and return its result
|
|
732
|
+
#{self}.get_program(
|
|
733
|
+
handle: 'required - program handle',
|
|
734
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
735
|
+
params: 'optional - params value consumed by #get_program'
|
|
736
|
+
)
|
|
737
|
+
|
|
738
|
+
# Run get structured scopes and return its result
|
|
739
|
+
#{self}.get_structured_scopes(
|
|
740
|
+
handle: 'required - program handle',
|
|
741
|
+
params: 'optional - params value consumed by #get_structured_scopes',
|
|
742
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
743
|
+
)
|
|
744
|
+
|
|
745
|
+
# Run get scope exclusions and return its result
|
|
746
|
+
#{self}.get_scope_exclusions(
|
|
747
|
+
handle: 'required - program handle',
|
|
748
|
+
params: 'optional - params value consumed by #get_scope_exclusions',
|
|
749
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
750
|
+
)
|
|
751
|
+
|
|
752
|
+
# Run get weaknesses and return its result
|
|
753
|
+
#{self}.get_weaknesses(
|
|
754
|
+
handle: 'required - program handle',
|
|
755
|
+
params: 'optional - params value consumed by #get_weaknesses',
|
|
756
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
757
|
+
)
|
|
758
|
+
|
|
759
|
+
# ---- Hacktivity -----------------------------------------------------
|
|
760
|
+
#{self}.get_hacktivity(
|
|
761
|
+
params: 'optional - query params Hash',
|
|
762
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
763
|
+
)
|
|
764
|
+
|
|
765
|
+
# ---- Report Intents ------------------------------------------------
|
|
766
|
+
#{self}.get_report_intents(
|
|
767
|
+
params: 'optional - params value consumed by #get_report_intents',
|
|
768
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
769
|
+
)
|
|
770
|
+
|
|
771
|
+
# Run get report intent and return its result
|
|
772
|
+
#{self}.get_report_intent(
|
|
773
|
+
id: 'required - report intent id',
|
|
774
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
775
|
+
params: 'optional - params value consumed by #get_report_intent'
|
|
776
|
+
)
|
|
777
|
+
|
|
778
|
+
# Run create report intent and return its result
|
|
779
|
+
#{self}.create_report_intent(
|
|
780
|
+
body: 'required - full JSON:API body Hash',
|
|
781
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
782
|
+
)
|
|
783
|
+
|
|
784
|
+
# Run update report intent and return its result
|
|
785
|
+
#{self}.update_report_intent(
|
|
786
|
+
id: 'required - report intent id',
|
|
787
|
+
body: 'required - full JSON:API body Hash',
|
|
788
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
789
|
+
)
|
|
790
|
+
|
|
791
|
+
# Run delete report intent and return its result
|
|
792
|
+
#{self}.delete_report_intent(
|
|
793
|
+
id: 'required - report intent id',
|
|
794
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
795
|
+
)
|
|
796
|
+
|
|
797
|
+
# Run submit report intent and return its result
|
|
798
|
+
#{self}.submit_report_intent(
|
|
799
|
+
id: 'required - report intent id',
|
|
800
|
+
body: 'optional - JSON:API body Hash',
|
|
801
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
802
|
+
)
|
|
803
|
+
|
|
804
|
+
# Run get report intent attachments and return its result
|
|
805
|
+
#{self}.get_report_intent_attachments(
|
|
806
|
+
report_intent_id: 'required - report intent id value consumed by #get_report_intent_attachments (defaults to opts[:id])',
|
|
807
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional',
|
|
808
|
+
id: 'required - id value consumed by #get_report_intent_attachments',
|
|
809
|
+
params: 'optional - params value consumed by #get_report_intent_attachments'
|
|
810
|
+
)
|
|
811
|
+
|
|
812
|
+
# Run delete report intent attachment and return its result
|
|
813
|
+
#{self}.delete_report_intent_attachment(
|
|
814
|
+
report_intent_id: 'required - report intent id value consumed by #delete_report_intent_attachment',
|
|
815
|
+
id: 'required - attachment id',
|
|
816
|
+
username: 'optional - optional, api_key: optional, h1_obj: optional'
|
|
817
|
+
)
|
|
818
|
+
|
|
819
|
+
# Clears the session hash in-place (no server-side session to destroy)
|
|
820
|
+
#{self}.logout(
|
|
821
|
+
h1_obj: 'required - required h1_obj returned from #login method'
|
|
822
|
+
)
|
|
823
|
+
|
|
824
|
+
# Print the AUTHOR(S) string for this module.
|
|
702
825
|
#{self}.authors
|
|
703
826
|
"
|
|
827
|
+
constants.sort
|
|
704
828
|
end
|
|
705
829
|
end
|
|
706
830
|
end
|
data/lib/pwn/plugins/hunter.rb
CHANGED
|
@@ -142,18 +142,21 @@ module PWN
|
|
|
142
142
|
|
|
143
143
|
public_class_method def self.help
|
|
144
144
|
puts "USAGE:
|
|
145
|
-
|
|
146
|
-
|
|
145
|
+
# Run a search using the open session.
|
|
146
|
+
#{self}.search(
|
|
147
|
+
api_key: 'required - required hunter api key',
|
|
147
148
|
query: 'required - hunter search query',
|
|
148
149
|
start_time: 'required - start date for the search (format is yyyy-mm-dd)',
|
|
149
150
|
end_time: 'required - end date for the search (format is yyyy-mm-dd)',
|
|
150
151
|
start_page: 'optional - starting page number for pagination (default is 1)',
|
|
151
152
|
page_size: 'optional - number of results per page (default is 10)',
|
|
152
|
-
fields: 'optional - comma-separated list of fields
|
|
153
|
+
fields: 'optional - comma-separated list of fields product,transport_protocol,protocol,banner,country,province,city,asn,org,web,updated_at (default is nil)'
|
|
153
154
|
)
|
|
154
155
|
|
|
156
|
+
# Print the AUTHOR(S) string for this module.
|
|
155
157
|
#{self}.authors
|
|
156
158
|
"
|
|
159
|
+
constants.sort
|
|
157
160
|
end
|
|
158
161
|
end
|
|
159
162
|
end
|
data/lib/pwn/plugins/ip_info.rb
CHANGED
|
@@ -235,29 +235,34 @@ module PWN
|
|
|
235
235
|
|
|
236
236
|
public_class_method def self.help
|
|
237
237
|
puts "USAGE:
|
|
238
|
-
|
|
238
|
+
# Run check rfc1918 and return its result
|
|
239
|
+
#{self}.check_rfc1918(
|
|
239
240
|
ip: 'required - IP to check'
|
|
240
241
|
)
|
|
241
242
|
|
|
242
|
-
|
|
243
|
+
# Run get and return its result
|
|
244
|
+
#{self}.get(
|
|
243
245
|
target: 'required - IP or Host to lookup',
|
|
244
246
|
proxy: 'optional - use a proxy',
|
|
245
|
-
tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
247
|
+
tls_port: 'optional - optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
246
248
|
skip_api: 'optional - skip the API call',
|
|
247
249
|
dns_server: 'optional - DNS server to use for lookup (default: your default DNS server)'
|
|
248
250
|
)
|
|
249
251
|
|
|
252
|
+
# Run bruteforce subdomains and return its result
|
|
250
253
|
#{self}.bruteforce_subdomains(
|
|
251
254
|
parent_domain: 'required - Parent Domain to brute force',
|
|
252
255
|
dictionary: 'required - Dictionary to use for subdomain brute force',
|
|
253
256
|
max_threads: 'optional - Maximum number of threads to use (default: 9)',
|
|
254
257
|
proxy: 'optional - use a proxy',
|
|
255
|
-
tls_port: 'optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
258
|
+
tls_port: 'optional - optional port to check cert for Domain Name (default: 443). Will not execute if proxy parameter is set.',
|
|
256
259
|
results_file: 'optional - File to write results to (default: /tmp/parent_domain-timestamp-pwn_bruteforce_subdomains.txt)'
|
|
257
260
|
)
|
|
258
261
|
|
|
262
|
+
# Print the AUTHOR(S) string for this module.
|
|
259
263
|
#{self}.authors
|
|
260
264
|
"
|
|
265
|
+
constants.sort
|
|
261
266
|
end
|
|
262
267
|
end
|
|
263
268
|
end
|
data/lib/pwn/plugins/irc.rb
CHANGED
|
@@ -249,63 +249,76 @@ module PWN
|
|
|
249
249
|
|
|
250
250
|
public_class_method def self.help
|
|
251
251
|
puts "USAGE:
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
252
|
+
# Run connect and return its result
|
|
253
|
+
#{self}.connect(
|
|
254
|
+
host: 'required - host or ip (defaults to 127.0.0.1)',
|
|
255
|
+
port: 'required - host port (defaults to 6667)',
|
|
256
|
+
nick: 'required - nick value consumed by #connect',
|
|
256
257
|
real: 'optional - real name (defaults to value of nick)',
|
|
257
258
|
tls: 'optional - boolean connect to host socket using TLS (defaults to false)'
|
|
258
259
|
)
|
|
259
260
|
|
|
260
|
-
#
|
|
261
|
+
# Run join and return its result
|
|
262
|
+
#{self}.join(
|
|
261
263
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
262
|
-
|
|
264
|
+
nick: 'required - nick value consumed by #join',
|
|
265
|
+
chan: 'required - channel to join'
|
|
263
266
|
)
|
|
264
267
|
|
|
265
|
-
#
|
|
268
|
+
# Run names and return its result
|
|
269
|
+
#{self}.names(
|
|
266
270
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
267
|
-
|
|
271
|
+
chan: 'required - channel to list names'
|
|
268
272
|
)
|
|
269
273
|
|
|
274
|
+
# Run privmsg and return its result
|
|
270
275
|
#{self}.privmsg(
|
|
271
276
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
272
277
|
chan: 'required - channel to send message',
|
|
273
|
-
message: 'required - message to send'
|
|
278
|
+
message: 'required - message to send',
|
|
279
|
+
nick: 'optional - nick value consumed by #privmsg'
|
|
274
280
|
)
|
|
275
281
|
|
|
276
|
-
#
|
|
282
|
+
# Run ping and return its result
|
|
283
|
+
#{self}.ping(
|
|
277
284
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
278
|
-
|
|
279
|
-
chan: 'required - channel to join'
|
|
285
|
+
message: 'required - message to send'
|
|
280
286
|
)
|
|
281
287
|
|
|
282
|
-
#
|
|
288
|
+
# Run pong and return its result
|
|
289
|
+
#{self}.pong(
|
|
283
290
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
284
|
-
|
|
291
|
+
message: 'required - message to send'
|
|
285
292
|
)
|
|
286
293
|
|
|
294
|
+
# Run part and return its result
|
|
287
295
|
#{self}.part(
|
|
288
296
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
289
297
|
chan: 'required - channel to part',
|
|
290
298
|
message: 'optional - message to send when parting'
|
|
291
299
|
)
|
|
292
300
|
|
|
301
|
+
# Run quit and return its result
|
|
293
302
|
#{self}.quit(
|
|
294
303
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
295
304
|
message: 'optional - message to send when quitting'
|
|
296
305
|
)
|
|
297
306
|
|
|
307
|
+
# Run listen and return its result
|
|
298
308
|
#{self}.listen(
|
|
299
309
|
irc_obj: 'required - irc_obj returned from #connect method',
|
|
300
310
|
verbose: 'optional - boolean to enable verbose output (defaults to false)'
|
|
301
311
|
)
|
|
302
312
|
|
|
303
|
-
|
|
313
|
+
# Run disconnect and return its result
|
|
314
|
+
#{self}.disconnect(
|
|
304
315
|
irc_obj: 'required - irc_obj returned from #connect method'
|
|
305
316
|
)
|
|
306
317
|
|
|
318
|
+
# Print the AUTHOR(S) string for this module.
|
|
307
319
|
#{self}.authors
|
|
308
320
|
"
|
|
321
|
+
constants.sort
|
|
309
322
|
end
|
|
310
323
|
end
|
|
311
324
|
end
|
data/lib/pwn/plugins/jenkins.rb
CHANGED
|
@@ -442,95 +442,103 @@ module PWN
|
|
|
442
442
|
# Display Usage for this Module
|
|
443
443
|
|
|
444
444
|
public_class_method def self.help
|
|
445
|
-
puts
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
445
|
+
puts "USAGE:
|
|
446
|
+
# Run connect and return its result
|
|
447
|
+
#{self}.connect(
|
|
448
|
+
ip: 'required - required host/ip of Jenkins Server',
|
|
449
|
+
port: 'optional - optional tcp port (defaults to 8080',
|
|
450
|
+
username: 'optional - optional username (functionality will be limited if ommitted)',
|
|
451
|
+
api_key: 'optional - optional api_key (functionality will be limited if ommitted)',
|
|
452
|
+
identity_file: 'optional - optional ssh private key path to AuthN w/ Jenkins PREFERRED over username/api_key',
|
|
453
|
+
ssl: 'optional - optional connect over TLS (defaults to true',
|
|
454
|
+
proxy: 'optional - optional debug proxy rest api requests to jenkins (e.g. http://127.0.0.1:8080)'
|
|
454
455
|
)
|
|
455
|
-
puts jenkins_obj.public_methods
|
|
456
456
|
|
|
457
|
+
# Run create user and return its result
|
|
457
458
|
#{self}.create_user(
|
|
458
|
-
jenkins_obj: '
|
|
459
|
-
username: '
|
|
460
|
-
password: 'optional - password
|
|
461
|
-
fullname: '
|
|
462
|
-
email: '
|
|
459
|
+
jenkins_obj: 'optional - jenkins obj value consumed by #create_user',
|
|
460
|
+
username: 'optional - username value consumed by #create_user',
|
|
461
|
+
password: 'optional - password value consumed by #create_user',
|
|
462
|
+
fullname: 'optional - fullname value consumed by #create_user',
|
|
463
|
+
email: 'optional - email value consumed by #create_user'
|
|
463
464
|
)
|
|
464
465
|
|
|
466
|
+
# Run create ssh credential and return its result
|
|
465
467
|
#{self}.create_ssh_credential(
|
|
466
|
-
jenkins_obj: '
|
|
467
|
-
username: '
|
|
468
|
-
private_key_path: '
|
|
469
|
-
key_passphrase: 'optional -
|
|
470
|
-
credential_id: 'optional
|
|
471
|
-
description: 'optional - description
|
|
472
|
-
domain: 'optional -
|
|
473
|
-
scope: 'optional -
|
|
468
|
+
jenkins_obj: 'optional - jenkins obj value consumed by #create_ssh_credential',
|
|
469
|
+
username: 'optional - username value consumed by #create_ssh_credential',
|
|
470
|
+
private_key_path: 'optional - private key path value consumed by #create_ssh_credential',
|
|
471
|
+
key_passphrase: 'optional - key passphrase value consumed by #create_ssh_credential',
|
|
472
|
+
credential_id: 'optional - credential id value consumed by #create_ssh_credential',
|
|
473
|
+
description: 'optional - description value consumed by #create_ssh_credential',
|
|
474
|
+
domain: 'optional - FQDN to query (e.g. example.com)',
|
|
475
|
+
scope: 'optional - scope value consumed by #create_ssh_credential'
|
|
474
476
|
)
|
|
475
477
|
|
|
476
|
-
|
|
477
|
-
|
|
478
|
+
# Run get all job git repos and return its result
|
|
479
|
+
#{self}.get_all_job_git_repos(
|
|
480
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method'
|
|
478
481
|
)
|
|
479
482
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
483
|
+
# Run list nested jobs and return its result
|
|
484
|
+
#{self}.list_nested_jobs(
|
|
485
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
486
|
+
view_path: 'required - required view path to list jobs'
|
|
484
487
|
)
|
|
485
488
|
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
+
# Run list nested views and return its result
|
|
490
|
+
#{self}.list_nested_views(
|
|
491
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
492
|
+
view_path: 'required - required view path list sub-views'
|
|
489
493
|
)
|
|
490
494
|
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
495
|
+
# Run create nested view and return its result
|
|
496
|
+
#{self}.create_nested_view(
|
|
497
|
+
jenkins_obj: 'optional - jenkins obj value consumed by #create_nested_view',
|
|
498
|
+
view_name: 'optional - view name value consumed by #create_nested_view',
|
|
499
|
+
create_in_view_path: 'optional - create in view path value consumed by #create_nested_view'
|
|
494
500
|
)
|
|
495
501
|
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
502
|
+
# Run add job to nested view and return its result
|
|
503
|
+
#{self}.add_job_to_nested_view(
|
|
504
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
505
|
+
view_path: 'required - required view path associate job',
|
|
506
|
+
job_name: 'required - required view path attach to a view'
|
|
500
507
|
)
|
|
501
508
|
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
copy_job_resp = #{self}.copy_job_no_fail_on_exist(
|
|
509
|
-
jenkins_obj: 'required jenkins_obj returned from #connect method',
|
|
510
|
-
existing_job_name: 'required existing job to copt to new job',
|
|
511
|
-
new_job_name: 'required name of new job'
|
|
509
|
+
# Run copy job no fail on exist and return its result
|
|
510
|
+
#{self}.copy_job_no_fail_on_exist(
|
|
511
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
512
|
+
existing_job_name: 'required - required existing job to copt to new job',
|
|
513
|
+
new_job_name: 'required - required name of new job'
|
|
512
514
|
)
|
|
513
515
|
|
|
516
|
+
# Run disable jobs by regex and return its result
|
|
514
517
|
#{self}.disable_jobs_by_regex(
|
|
515
|
-
jenkins_obj: 'required jenkins_obj returned from #connect method',
|
|
516
|
-
regex: 'required regex pattern for matching jobs to disable e.g. :regex =>
|
|
518
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
519
|
+
regex: 'required - required regex pattern for matching jobs to disable e.g. :regex => ^M[0-9]'
|
|
517
520
|
)
|
|
518
521
|
|
|
519
|
-
#
|
|
520
|
-
|
|
521
|
-
|
|
522
|
+
# Run delete jobs by regex and return its result
|
|
523
|
+
#{self}.delete_jobs_by_regex(
|
|
524
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method',
|
|
525
|
+
regex: 'required - required regex pattern for matching jobs to disable e.g. :regex => ^M[0-9]'
|
|
522
526
|
)
|
|
523
527
|
|
|
528
|
+
# Run clear build queue and return its result
|
|
524
529
|
#{self}.clear_build_queue(
|
|
525
|
-
jenkins_obj: 'required jenkins_obj returned from #connect method'
|
|
530
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method'
|
|
526
531
|
)
|
|
527
532
|
|
|
533
|
+
# Run disconnect and return its result
|
|
528
534
|
#{self}.disconnect(
|
|
529
|
-
jenkins_obj: 'required jenkins_obj returned from connect method'
|
|
535
|
+
jenkins_obj: 'required - required jenkins_obj returned from #connect method'
|
|
530
536
|
)
|
|
531
537
|
|
|
538
|
+
# Print the AUTHOR(S) string for this module.
|
|
532
539
|
#{self}.authors
|
|
533
|
-
|
|
540
|
+
"
|
|
541
|
+
constants.sort
|
|
534
542
|
end
|
|
535
543
|
end
|
|
536
544
|
end
|
|
@@ -607,67 +607,75 @@ module PWN
|
|
|
607
607
|
|
|
608
608
|
public_class_method def self.help
|
|
609
609
|
puts "USAGE:
|
|
610
|
-
|
|
610
|
+
# Run get all fields and return its result
|
|
611
|
+
#{self}.get_all_fields
|
|
611
612
|
|
|
612
|
-
user
|
|
613
|
-
|
|
613
|
+
# Run get user and return its result
|
|
614
|
+
#{self}.get_user(
|
|
615
|
+
username: 'required - username to lookup (e.g. jane.doe) (defaults to PWN::Plugins::AuthenticationHelper.username)',
|
|
614
616
|
params: 'optional - additional parameters to pass in the URI (e.g. expand, etc.)'
|
|
615
617
|
)
|
|
616
618
|
|
|
617
|
-
|
|
619
|
+
# Run get issue and return its result
|
|
620
|
+
#{self}.get_issue(
|
|
618
621
|
issue: 'required - issue to lookup (e.g. Bug, Issue, Story, or Epic ID)',
|
|
619
622
|
params: 'optional - additional parameters to pass in the URI (e.g. fields, expand, etc.)'
|
|
620
623
|
)
|
|
621
624
|
|
|
622
|
-
|
|
625
|
+
# Run create issue and return its result
|
|
626
|
+
#{self}.create_issue(
|
|
623
627
|
project_key: 'required - project key (e.g. PWN)',
|
|
624
628
|
summary: 'required - summary of the issue (e.g. Epic for PWN-1337)',
|
|
625
629
|
issue_type: 'required - issue type (e.g. :epic, :story, :bug)',
|
|
626
630
|
description: 'optional - description of the issue',
|
|
627
631
|
epic_name: 'optional - name of the epic',
|
|
628
632
|
additional_fields: 'optional - additional fields to set in the issue (e.g. labels, components, custom fields, etc.)',
|
|
629
|
-
attachments: 'optional - array of attachment paths to upload to the issue (e.g. [
|
|
630
|
-
comment: 'optional - comment to add to the issue (e.g.
|
|
633
|
+
attachments: 'optional - array of attachment paths to upload to the issue (e.g. [/tmp/file1.txt, /tmp/file2.txt])',
|
|
634
|
+
comment: 'optional - comment to add to the issue (e.g. This is a comment)'
|
|
631
635
|
)
|
|
632
636
|
|
|
633
|
-
|
|
634
|
-
|
|
637
|
+
# Run update issue and return its result
|
|
638
|
+
#{self}.update_issue(
|
|
635
639
|
fields: 'required - fields to update in the issue (e.g. summary, description, labels, components, custom fields, etc.)',
|
|
636
|
-
attachments: 'optional - array of attachment paths to upload to the issue (e.g. [
|
|
640
|
+
attachments: 'optional - array of attachment paths to upload to the issue (e.g. [/tmp/file1.txt, /tmp/file2.txt])',
|
|
641
|
+
issue: 'required - issue value consumed by #update_issue'
|
|
637
642
|
)
|
|
638
643
|
|
|
639
|
-
|
|
640
|
-
|
|
644
|
+
# Run issue comment and return its result
|
|
645
|
+
#{self}.issue_comment(
|
|
646
|
+
issue: 'required - issue to delete (e.g. Bug, Issue, Story, or Epic ID)',
|
|
641
647
|
comment_action: 'required - action to perform on the issue comment (e.g. :delete, :add, :update - Defaults to :add)',
|
|
642
648
|
comment_id: 'optional - comment ID to delete or update (e.g. 10000)',
|
|
643
|
-
author: 'optional - author of the comment (e.g.
|
|
644
|
-
comment: 'optional - comment to add or update in the issue (e.g.
|
|
649
|
+
author: 'optional - author of the comment (e.g. jane.doe)',
|
|
650
|
+
comment: 'optional - comment to add or update in the issue (e.g. This is a comment)'
|
|
645
651
|
)
|
|
646
652
|
|
|
647
|
-
|
|
653
|
+
# Run get issue type metadata and return its result
|
|
654
|
+
#{self}.get_issue_type_metadata(
|
|
648
655
|
project_key: 'required - project key (e.g. PWN)',
|
|
649
656
|
issue_type_id: 'required - issue type ID (e.g. issue[:fields][:issuetype][:id] from #get_issue method)'
|
|
650
657
|
)
|
|
651
658
|
|
|
652
|
-
|
|
659
|
+
# Run clone issue and return its result
|
|
660
|
+
#{self}.clone_issue(
|
|
653
661
|
issue: 'required - issue to clone (e.g. Bug, Issue, Story, or Epic ID)',
|
|
654
662
|
copy_attachments: 'optional - boolean to indicate whether to copy attachments (Defaults to false)'
|
|
655
663
|
)
|
|
656
664
|
|
|
657
|
-
|
|
665
|
+
# Run delete issue and return its result
|
|
666
|
+
#{self}.delete_issue(
|
|
658
667
|
issue: 'required - issue to delete (e.g. Bug, Issue, Story, or Epic ID)'
|
|
659
668
|
)
|
|
660
669
|
|
|
661
|
-
|
|
670
|
+
# Run delete attachment and return its result
|
|
671
|
+
#{self}.delete_attachment(
|
|
662
672
|
id: 'required - attachment ID to delete (e.g. 10000) found in #get_issue method'
|
|
663
673
|
)
|
|
664
674
|
|
|
665
|
-
|
|
666
|
-
* For more information on the Jira Server REST API, see:
|
|
667
|
-
* https://developer.atlassian.com/server/jira/platform/rest-apis/
|
|
668
|
-
|
|
675
|
+
# Print the AUTHOR(S) string for this module.
|
|
669
676
|
#{self}.authors
|
|
670
677
|
"
|
|
678
|
+
constants.sort
|
|
671
679
|
end
|
|
672
680
|
end
|
|
673
681
|
end
|