[{"data":1,"prerenderedAt":7346},["ShallowReactive",2],{"docs-data":3},[4,356,518,1216,1415,1730,1914,2155,2314,2487,2625,2810,3120,3371,3535,3988,4211,4352,4521,4923,5184,5386,5699,6145,6351,6660,6866,7173],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":8,"slug":10,"category":11,"order":12,"body":13,"_type":350,"_id":351,"_source":352,"_file":353,"_stem":354,"_extension":355},"/docs/advanced_examples","docs",false,"","Advanced Scenarios","advanced_examples","General",2,{"type":14,"children":15,"toc":340},"root",[16,34,41,55,62,67,89,101,113,133,141,150,163,176,184,193,199,212,228,237,243,255,271,280,286,291,306,315,331],{"type":17,"tag":18,"props":19,"children":20},"element","blockquote",{},[21],{"type":17,"tag":22,"props":23,"children":24},"p",{},[25,32],{"type":17,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":30,"value":31},"text","Summary:",{"type":30,"value":33}," Showcases advanced techniques and creative ways to use pwnity beyond the standard workflow.",{"type":17,"tag":35,"props":36,"children":38},"h1",{"id":37},"advanced-examples-creative-uses",[39],{"type":30,"value":40},"Advanced Examples & Creative Uses",{"type":17,"tag":22,"props":42,"children":43},{},[44,46,53],{"type":30,"value":45},"This page showcases advanced techniques and creative ways to use ",{"type":17,"tag":47,"props":48,"children":50},"code",{"className":49},[],[51],{"type":30,"value":52},"pwnity",{"type":30,"value":54}," beyond the standard workflow. These examples demonstrate how to leverage the framework's flexibility for complex automation and out-of-the-box tasks.",{"type":17,"tag":56,"props":57,"children":59},"h2",{"id":58},"using-standard-linux-commands-as-tools",[60],{"type":30,"value":61},"Using Standard Linux Commands as Tools",{"type":17,"tag":22,"props":63,"children":64},{},[65],{"type":30,"value":66},"You can wrap any command-line utility, not just security tools. This is useful for quick diagnostics or integrating system commands into your workflow.",{"type":17,"tag":22,"props":68,"children":69},{},[70],{"type":17,"tag":26,"props":71,"children":72},{},[73,75,81,83],{"type":30,"value":74},"Example: Wrapping ",{"type":17,"tag":47,"props":76,"children":78},{"className":77},[],[79],{"type":30,"value":80},"ping",{"type":30,"value":82}," and ",{"type":17,"tag":47,"props":84,"children":86},{"className":85},[],[87],{"type":30,"value":88},"curl",{"type":17,"tag":90,"props":91,"children":96},"pre",{"className":92,"code":94,"language":95,"meta":8},[93],"language-bash","# Create a simple 'ping' tool\ntool add ping\ntool update ping command check\ntool update ping check param \"-c 4 $target.ip\"\n\n# Run it\ntarget load my-server\ntool load ping\npwn check now\n\n# Create a 'curl' tool to grab HTTP headers\ntool add curl\ntool update curl command get-headers\ntool update curl get-headers param \"-I -s $target.url\"\n\n# Run it\ntool load curl\npwn get-headers now\n","bash",[97],{"type":17,"tag":47,"props":98,"children":99},{"__ignoreMap":8},[100],{"type":30,"value":94},{"type":17,"tag":56,"props":102,"children":104},{"id":103},"dynamic-wordlist-generation-with-crunch",[105,107],{"type":30,"value":106},"Dynamic Wordlist Generation with ",{"type":17,"tag":47,"props":108,"children":110},{"className":109},[],[111],{"type":30,"value":112},"crunch",{"type":17,"tag":22,"props":114,"children":115},{},[116,118,124,126,131],{"type":30,"value":117},"A ",{"type":17,"tag":47,"props":119,"children":121},{"className":120},[],[122],{"type":30,"value":123},"wordlist",{"type":30,"value":125}," object doesn't have to point to a file. You can use it to store parameters for a wordlist generator like ",{"type":17,"tag":47,"props":127,"children":129},{"className":128},[],[130],{"type":30,"value":112},{"type":30,"value":132},".",{"type":17,"tag":22,"props":134,"children":135},{},[136],{"type":17,"tag":26,"props":137,"children":138},{},[139],{"type":30,"value":140},"Example: Generating an 8-digit numeric list",{"type":17,"tag":90,"props":142,"children":145},{"className":143,"code":144,"language":95,"meta":8},[93],"# 1. Create a 'wordlist' to hold the parameters\nwordlist add 8-digit-numeric\nwordlist update 8-digit-numeric min 8\nwordlist update 8-digit-numeric max 8\nwordlist update 8-digit-numeric charset \"0123456789\"\n\n# 2. Create a 'crunch' tool that uses these parameters\ntool add crunch\ntool update crunch command generate\ntool update crunch generate param \"$wordlist.min $wordlist.max $wordlist.charset\"\n\n# 3. Load the parameter-wordlist and run the generator\nwordlist load 8-digit-numeric\ntool load crunch\npwn generate now # This will run 'crunch 8 8 0123456789'\n",[146],{"type":17,"tag":47,"props":147,"children":148},{"__ignoreMap":8},[149],{"type":30,"value":144},{"type":17,"tag":56,"props":151,"children":153},{"id":152},"using-pwnity-as-a-dynamic-checklist-manager",[154,156,161],{"type":30,"value":155},"Using ",{"type":17,"tag":47,"props":157,"children":159},{"className":158},[],[160],{"type":30,"value":52},{"type":30,"value":162}," as a Dynamic Checklist Manager",{"type":17,"tag":22,"props":164,"children":165},{},[166,168,174],{"type":30,"value":167},"By wrapping the ",{"type":17,"tag":47,"props":169,"children":171},{"className":170},[],[172],{"type":30,"value":173},"echo",{"type":30,"value":175}," command, you can turn a tool into a dynamic checklist generator that uses placeholders from your target.",{"type":17,"tag":22,"props":177,"children":178},{},[179],{"type":17,"tag":26,"props":180,"children":181},{},[182],{"type":30,"value":183},"Example: A web-app recon checklist",{"type":17,"tag":90,"props":185,"children":188},{"className":186,"code":187,"language":95,"meta":8},[93],"# Use /bin/echo as the tool's executable\ntool add checklist\ntool update checklist path /bin/echo\n\n# Create a command with each step as a parameter\ntool update checklist command web-recon\ntool update checklist web-recon execute_per_param true # Set to run 'echo' for each param\ntool update checklist web-recon param \"== Recon Checklist for $target.name ==\"\ntool update checklist web-recon param \"1. Check robots.txt -> $target.base_url/robots.txt\"\ntool update checklist web-recon param \"2. Check for sitemap -> $target.base_url/sitemap.xml\"\ntool update checklist web-recon param \"3. Review HTTP headers for $target.hostname\"\n\n# Load a target and run the 'pwn' command to display the checklist\ntarget load my-webapp\ntool load checklist\npwn web-recon now\n",[189],{"type":17,"tag":47,"props":190,"children":191},{"__ignoreMap":8},[192],{"type":30,"value":187},{"type":17,"tag":56,"props":194,"children":196},{"id":195},"api-integration-via-the-global-profile",[197],{"type":30,"value":198},"API Integration via the Global Profile",{"type":17,"tag":22,"props":200,"children":201},{},[202,204,210],{"type":30,"value":203},"The ",{"type":17,"tag":47,"props":205,"children":207},{"className":206},[],[208],{"type":30,"value":209},"profile",{"type":30,"value":211}," is perfect for storing API keys that can be used by tools.",{"type":17,"tag":22,"props":213,"children":214},{},[215],{"type":17,"tag":26,"props":216,"children":217},{},[218,220,226],{"type":30,"value":219},"Example: Integrating ",{"type":17,"tag":47,"props":221,"children":223},{"className":222},[],[224],{"type":30,"value":225},"whatweb",{"type":30,"value":227}," with an API key",{"type":17,"tag":90,"props":229,"children":232},{"className":230,"code":231,"language":95,"meta":8},[93],"# 1. Store your API key in the global profile\nprofile update whatweb_apikey YOUR_API_KEY_HERE\n\n# 2. Create a 'whatweb' tool that uses the key\ntool add whatweb\ntool update whatweb command deep-scan\ntool update whatweb deep-scan param \"-a 3\"\ntool update whatweb deep-scan param \"--api-key=$profile.whatweb_apikey\"\ntool update whatweb deep-scan param \"$target.url\"\n\n# 3. Run the scan\ntarget load my-webapp\ntool load whatweb\npwn deep-scan now\n",[233],{"type":17,"tag":47,"props":234,"children":235},{"__ignoreMap":8},[236],{"type":30,"value":231},{"type":17,"tag":56,"props":238,"children":240},{"id":239},"chaining-tools-for-automated-target-discovery",[241],{"type":30,"value":242},"Chaining Tools for Automated Target Discovery",{"type":17,"tag":22,"props":244,"children":245},{},[246,248,253],{"type":30,"value":247},"You can use one tool to discover assets and then pipe the results into ",{"type":17,"tag":47,"props":249,"children":251},{"className":250},[],[252],{"type":30,"value":52},{"type":30,"value":254}," to create new targets automatically.",{"type":17,"tag":22,"props":256,"children":257},{},[258],{"type":17,"tag":26,"props":259,"children":260},{},[261,263,269],{"type":30,"value":262},"Example: Using ",{"type":17,"tag":47,"props":264,"children":266},{"className":265},[],[267],{"type":30,"value":268},"subfinder",{"type":30,"value":270}," to create new targets",{"type":17,"tag":90,"props":272,"children":275},{"className":273,"code":274,"language":95,"meta":8},[93],"# 1. In pwnity, configure a subfinder tool\ntool add subfinder\ntool update subfinder command find\ntool update subfinder find param \"-d $target.domain -o /tmp/subs.txt\"\ntarget load example.com\npwn find now\n\n# 2. Use the built-in 'shell' command to process the output file without leaving pwnity\n# This command reads each subdomain from the file and creates a pwnity script.\nshell \"while read sub; do echo \\\"target add $sub; target update $sub url https://$sub\\\"; done \u003C /tmp/subs.txt > create_targets.pwn\"\n\n# 3. Back in pwnity, run the generated script\nrun_script create_targets.pwn\ntarget list # You will now see all the discovered subdomains as new targets\n",[276],{"type":17,"tag":47,"props":277,"children":278},{"__ignoreMap":8},[279],{"type":30,"value":274},{"type":17,"tag":56,"props":281,"children":283},{"id":282},"using-placeholder-functions-for-data-transformation",[284],{"type":30,"value":285},"Using Placeholder Functions for Data Transformation",{"type":17,"tag":22,"props":287,"children":288},{},[289],{"type":30,"value":290},"The placeholder system supports functions to encode, decode, or hash data on the fly. This is extremely powerful for preparing payloads.",{"type":17,"tag":22,"props":292,"children":293},{},[294],{"type":17,"tag":26,"props":295,"children":296},{},[297,299,304],{"type":30,"value":298},"Example: Base64-encoding a value for a ",{"type":17,"tag":47,"props":300,"children":302},{"className":301},[],[303],{"type":30,"value":88},{"type":30,"value":305}," header",{"type":17,"tag":90,"props":307,"children":310},{"className":308,"code":309,"language":95,"meta":8},[93],"# Suppose a target requires a Base64-encoded 'Authorization' header.\n# The value is composed of a username from the profile and a static string.\nprofile update username pentester\n\ntool add curl\ntool update curl command auth-test\ntool update curl auth-test param \"-H 'Authorization: Basic b64encode($profile.username:secret-token)'\"\ntool update curl auth-test param \"$target.url\"\n\n# The 'pwn' command will resolve this to:\n# curl -H 'Authorization: Basic cGVudGVzdGVyOnNlY3JldC10b2tlbg==' http://...\n",[311],{"type":17,"tag":47,"props":312,"children":313},{"__ignoreMap":8},[314],{"type":30,"value":309},{"type":17,"tag":22,"props":316,"children":317},{},[318],{"type":17,"tag":26,"props":319,"children":320},{},[321,323,329],{"type":30,"value":322},"Example: Testing the functions with the ",{"type":17,"tag":47,"props":324,"children":326},{"className":325},[],[327],{"type":30,"value":328},"print",{"type":30,"value":330}," command",{"type":17,"tag":90,"props":332,"children":335},{"className":333,"code":334,"language":95,"meta":8},[93],"print b64encode($target.name)\nprint md5('test-string')\n",[336],{"type":17,"tag":47,"props":337,"children":338},{"__ignoreMap":8},[339],{"type":30,"value":334},{"title":8,"searchDepth":12,"depth":12,"links":341},[342,343,345,347,348,349],{"id":58,"depth":12,"text":61},{"id":103,"depth":12,"text":344},"Dynamic Wordlist Generation with crunch",{"id":152,"depth":12,"text":346},"Using pwnity as a Dynamic Checklist Manager",{"id":195,"depth":12,"text":198},{"id":239,"depth":12,"text":242},{"id":282,"depth":12,"text":285},"markdown","content:docs:advanced_examples.md","content","docs/advanced_examples.md","docs/advanced_examples","md",{"_path":357,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":358,"description":8,"slug":359,"category":360,"order":361,"body":362,"_type":350,"_id":515,"_source":352,"_file":516,"_stem":517,"_extension":355},"/docs/aliases","Custom Aliases","aliases","Utilities",1,{"type":14,"children":363,"toc":510},[364,376,382,394,400,413,421,430,443,449,476,482],{"type":17,"tag":18,"props":365,"children":366},{},[367],{"type":17,"tag":22,"props":368,"children":369},{},[370,374],{"type":17,"tag":26,"props":371,"children":372},{},[373],{"type":30,"value":31},{"type":30,"value":375}," Create and manage custom shortcuts for longer pwnity commands.",{"type":17,"tag":35,"props":377,"children":379},{"id":378},"using-aliases",[380],{"type":30,"value":381},"Using Aliases",{"type":17,"tag":22,"props":383,"children":384},{},[385,387,392],{"type":30,"value":386},"Aliases are custom shortcuts for longer ",{"type":17,"tag":47,"props":388,"children":390},{"className":389},[],[391],{"type":30,"value":52},{"type":30,"value":393}," commands. They are useful for frequently used command sequences.",{"type":17,"tag":56,"props":395,"children":397},{"id":396},"creating-an-alias",[398],{"type":30,"value":399},"Creating an Alias",{"type":17,"tag":22,"props":401,"children":402},{},[403,405,411],{"type":30,"value":404},"You can create an alias using the ",{"type":17,"tag":47,"props":406,"children":408},{"className":407},[],[409],{"type":30,"value":410},"alias create",{"type":30,"value":412}," command. The value of the alias must be enclosed in single or double quotes.",{"type":17,"tag":22,"props":414,"children":415},{},[416],{"type":17,"tag":26,"props":417,"children":418},{},[419],{"type":30,"value":420},"Example:",{"type":17,"tag":90,"props":422,"children":425},{"className":423,"code":424,"language":95,"meta":8},[93],"alias create nmap-full 'pwn full-scan now'\nalias create show-target 'target show $target.name'\n",[426],{"type":17,"tag":47,"props":427,"children":428},{"__ignoreMap":8},[429],{"type":30,"value":424},{"type":17,"tag":22,"props":431,"children":432},{},[433,435,441],{"type":30,"value":434},"Now, you can simply type ",{"type":17,"tag":47,"props":436,"children":438},{"className":437},[],[439],{"type":30,"value":440},"nmap-full",{"type":30,"value":442}," to execute the full nmap scan.",{"type":17,"tag":56,"props":444,"children":446},{"id":445},"managing-aliases",[447],{"type":30,"value":448},"Managing Aliases",{"type":17,"tag":450,"props":451,"children":452},"ul",{},[453,465],{"type":17,"tag":454,"props":455,"children":456},"li",{},[457,463],{"type":17,"tag":47,"props":458,"children":460},{"className":459},[],[461],{"type":30,"value":462},"alias list",{"type":30,"value":464},": Shows all currently defined aliases.",{"type":17,"tag":454,"props":466,"children":467},{},[468,474],{"type":17,"tag":47,"props":469,"children":471},{"className":470},[],[472],{"type":30,"value":473},"alias delete \u003Cname>",{"type":30,"value":475},": Deletes a specific alias.",{"type":17,"tag":56,"props":477,"children":479},{"id":478},"automatic-saving",[480],{"type":30,"value":481},"Automatic Saving",{"type":17,"tag":22,"props":483,"children":484},{},[485,487,493,495,501,503,508],{"type":30,"value":486},"Aliases are automatically saved to the file specified in ",{"type":17,"tag":47,"props":488,"children":490},{"className":489},[],[491],{"type":30,"value":492},"etc/config.json",{"type":30,"value":494}," (by default, ",{"type":17,"tag":47,"props":496,"children":498},{"className":497},[],[499],{"type":30,"value":500},"etc/aliases.txt",{"type":30,"value":502},") whenever you create, update, or delete one. They are loaded automatically when ",{"type":17,"tag":47,"props":504,"children":506},{"className":505},[],[507],{"type":30,"value":52},{"type":30,"value":509}," starts.",{"title":8,"searchDepth":12,"depth":12,"links":511},[512,513,514],{"id":396,"depth":12,"text":399},{"id":445,"depth":12,"text":448},{"id":478,"depth":12,"text":481},"content:docs:aliases.md","docs/aliases.md","docs/aliases",{"_path":519,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":520,"description":521,"category":11,"order":522,"body":523,"_type":350,"_id":1213,"_source":352,"_file":1214,"_stem":1215,"_extension":355},"/docs/commands","Command Reference","A complete reference of all available pwnity CLI commands.",99,{"type":14,"children":524,"toc":1177},[525,530,535,557,563,568,578,583,592,601,613,622,630,635,644,664,669,678,684,689,698,703,712,721,726,735,744,749,758,767,772,781,790,795,804,813,818,827,833,838,847,852,861,870,875,884,893,898,907,916,921,930,939,944,953,962,967,976,985,990,999,1007,1012,1021,1030,1035,1044,1050,1055,1064,1069,1078,1086,1091,1100,1109,1114,1123,1132,1137,1146,1155,1168],{"type":17,"tag":35,"props":526,"children":528},{"id":527},"command-reference",[529],{"type":30,"value":520},{"type":17,"tag":22,"props":531,"children":532},{},[533],{"type":30,"value":534},"A comprehensive list of all available commands in the pwnity CLI, organized by category.",{"type":17,"tag":18,"props":536,"children":537},{},[538],{"type":17,"tag":22,"props":539,"children":540},{},[541,547,549,555],{"type":17,"tag":542,"props":543,"children":544},"span",{},[545],{"type":30,"value":546},"!TIP",{"type":30,"value":548},"\nYou can always type ",{"type":17,"tag":47,"props":550,"children":552},{"className":551},[],[553],{"type":30,"value":554},"help \u003Ccommand>",{"type":30,"value":556}," inside the CLI to get interactive help for any specific command.",{"type":17,"tag":56,"props":558,"children":560},{"id":559},"core-workflow",[561],{"type":30,"value":562},"Core Workflow",{"type":17,"tag":22,"props":564,"children":565},{},[566],{"type":30,"value":567},"Commands central to the offensive workflow: defining targets, configuring tools, and executing attacks.",{"type":17,"tag":569,"props":570,"children":572},"h3",{"id":571},"target",[573],{"type":17,"tag":47,"props":574,"children":576},{"className":575},[],[577],{"type":30,"value":571},{"type":17,"tag":22,"props":579,"children":580},{},[581],{"type":30,"value":582},"Manages targets, which store all relevant information like URLs, IPs, and gathered data.",{"type":17,"tag":90,"props":584,"children":587},{"className":585,"code":586,"language":95,"meta":8},[93],"target add \u003Cname>                  # Create a new, empty target.\ntarget update \u003Cname> url \u003Curl>     # Set the URL (parsing IP/domain).\ntarget gather \u003Cname> all           # Actively gather DNS, WHOIS, HTTP info.\ntarget load \u003Cname>                 # Load target into the current session.\ntarget unload                      # Unload active target.\ntarget export \u003Cname>               # Generate commands to recreate the target.\n",[588],{"type":17,"tag":47,"props":589,"children":590},{"__ignoreMap":8},[591],{"type":30,"value":586},{"type":17,"tag":569,"props":593,"children":595},{"id":594},"tool",[596],{"type":17,"tag":47,"props":597,"children":599},{"className":598},[],[600],{"type":30,"value":594},{"type":17,"tag":22,"props":602,"children":603},{},[604,606,611],{"type":30,"value":605},"Configures external command-line tools. You define how a tool is called, and ",{"type":17,"tag":47,"props":607,"children":609},{"className":608},[],[610],{"type":30,"value":52},{"type":30,"value":612}," assembles the command with dynamic placeholders.",{"type":17,"tag":90,"props":614,"children":617},{"className":615,"code":616,"language":95,"meta":8},[93],"tool add \u003Cname>                    # Create a new tool (e.g., 'nmap').\ntool update \u003Cname> command \u003Ccmd>   # Add a subcommand.\ntool update \u003Cname> \u003Ccmd> param \u003Cp> # Add a parameter with placeholders.\ntool load \u003Cname>                   # Load tool into the current session.\ntool show \u003Cname>                   # Display the tool's configuration.\n",[618],{"type":17,"tag":47,"props":619,"children":620},{"__ignoreMap":8},[621],{"type":30,"value":616},{"type":17,"tag":569,"props":623,"children":624},{"id":123},[625],{"type":17,"tag":47,"props":626,"children":628},{"className":627},[],[629],{"type":30,"value":123},{"type":17,"tag":22,"props":631,"children":632},{},[633],{"type":30,"value":634},"Manages references to wordlist files used for fuzzing, brute-forcing, etc.",{"type":17,"tag":90,"props":636,"children":639},{"className":637,"code":638,"language":95,"meta":8},[93],"wordlist add \u003Cname>                # Create a new wordlist reference.\nwordlist update \u003Cname> path \u003Cpath> # Set the path to the wordlist file.\nwordlist load \u003Cname>               # Load wordlist into the current session.\nwordlist list                      # List all available wordlists.\n",[640],{"type":17,"tag":47,"props":641,"children":642},{"__ignoreMap":8},[643],{"type":30,"value":638},{"type":17,"tag":569,"props":645,"children":647},{"id":646},"pwn-alias-run",[648,654,656,662],{"type":17,"tag":47,"props":649,"children":651},{"className":650},[],[652],{"type":30,"value":653},"pwn",{"type":30,"value":655}," (alias: ",{"type":17,"tag":47,"props":657,"children":659},{"className":658},[],[660],{"type":30,"value":661},"run",{"type":30,"value":663},")",{"type":17,"tag":22,"props":665,"children":666},{},[667],{"type":30,"value":668},"Builds and executes the command for the currently loaded tool, resolving all placeholders.",{"type":17,"tag":90,"props":670,"children":673},{"className":671,"code":672,"language":95,"meta":8},[93],"pwn \u003Ccommand>                      # Show a preview of the assembled command.\npwn \u003Ccommand> now                  # Execute in the foreground.\npwn \u003Ccommand> bg                   # Execute in the background (job).\npwn \u003Ccommand> -- -v                # Add temporary parameters.\n",[674],{"type":17,"tag":47,"props":675,"children":676},{"__ignoreMap":8},[677],{"type":30,"value":672},{"type":17,"tag":56,"props":679,"children":681},{"id":680},"session-state",[682],{"type":30,"value":683},"Session & State",{"type":17,"tag":22,"props":685,"children":686},{},[687],{"type":30,"value":688},"Commands for managing your workspace and tracking activity.",{"type":17,"tag":569,"props":690,"children":692},{"id":691},"session",[693],{"type":17,"tag":47,"props":694,"children":696},{"className":695},[],[697],{"type":30,"value":691},{"type":17,"tag":22,"props":699,"children":700},{},[701],{"type":30,"value":702},"Manages sessions—workspaces that remember your loaded target, tool, wordlist, and report.",{"type":17,"tag":90,"props":704,"children":707},{"className":705,"code":706,"language":95,"meta":8},[93],"session new \u003Cname>                 # Create a new session.\nsession switch \u003Cname>              # Switch to an existing session.\nsession list                       # List all sessions.\nsession show                       # Show what is currently loaded.\n",[708],{"type":17,"tag":47,"props":709,"children":710},{"__ignoreMap":8},[711],{"type":30,"value":706},{"type":17,"tag":569,"props":713,"children":715},{"id":714},"preset",[716],{"type":17,"tag":47,"props":717,"children":719},{"className":718},[],[720],{"type":30,"value":714},{"type":17,"tag":22,"props":722,"children":723},{},[724],{"type":30,"value":725},"Manages presets, which are saved sessions (target, tool, wordlist, report, proxy) for quick and repeatable scans.",{"type":17,"tag":90,"props":727,"children":730},{"className":728,"code":729,"language":95,"meta":8},[93],"preset save \u003Cname>                 # Save current session as a preset.\npreset load \u003Cname>                 # Load a preset into a new session.\npreset list                        # List available presets.\n",[731],{"type":17,"tag":47,"props":732,"children":733},{"__ignoreMap":8},[734],{"type":30,"value":729},{"type":17,"tag":569,"props":736,"children":738},{"id":737},"overview",[739],{"type":17,"tag":47,"props":740,"children":742},{"className":741},[],[743],{"type":30,"value":737},{"type":17,"tag":22,"props":745,"children":746},{},[747],{"type":30,"value":748},"Displays a comprehensive dashboard of the current session.",{"type":17,"tag":90,"props":750,"children":753},{"className":751,"code":752,"language":95,"meta":8},[93],"overview                           # Show detailed dashboard.\noverview --short                   # Show compact summary.\n",[754],{"type":17,"tag":47,"props":755,"children":756},{"__ignoreMap":8},[757],{"type":30,"value":752},{"type":17,"tag":569,"props":759,"children":761},{"id":760},"jobs",[762],{"type":17,"tag":47,"props":763,"children":765},{"className":764},[],[766],{"type":30,"value":760},{"type":17,"tag":22,"props":768,"children":769},{},[770],{"type":30,"value":771},"Brings background processes under control.",{"type":17,"tag":90,"props":773,"children":776},{"className":774,"code":775,"language":95,"meta":8},[93],"jobs list                          # List running/finished jobs.\njobs show \u003Cid>                     # Show output of a job.\njobs kill \u003Cid>                     # Terminate a running job.\n",[777],{"type":17,"tag":47,"props":778,"children":779},{"__ignoreMap":8},[780],{"type":30,"value":775},{"type":17,"tag":569,"props":782,"children":784},{"id":783},"heartbeat",[785],{"type":17,"tag":47,"props":786,"children":788},{"className":787},[],[789],{"type":30,"value":783},{"type":17,"tag":22,"props":791,"children":792},{},[793],{"type":30,"value":794},"Monitors a target's \"vital signs\" (latency, status) over time.",{"type":17,"tag":90,"props":796,"children":799},{"className":797,"code":798,"language":95,"meta":8},[93],"heartbeat start                    # Start monitoring loaded target.\nheartbeat show \u003Cname>              # Show live dashboard.\nheartbeat stop [name]              # Stop monitoring.\n",[800],{"type":17,"tag":47,"props":801,"children":802},{"__ignoreMap":8},[803],{"type":30,"value":798},{"type":17,"tag":569,"props":805,"children":807},{"id":806},"logbook",[808],{"type":17,"tag":47,"props":809,"children":811},{"className":810},[],[812],{"type":30,"value":806},{"type":17,"tag":22,"props":814,"children":815},{},[816],{"type":30,"value":817},"Manages the immutable logs of previous command executions.",{"type":17,"tag":90,"props":819,"children":822},{"className":820,"code":821,"language":95,"meta":8},[93],"logbook list -n 10                 # Show last 10 execution logs.\nlogbook show \u003Cid>                  # Display full output for an entry.\nlogbook filter target \u003Cname>       # Filter logs by target.\n",[823],{"type":17,"tag":47,"props":824,"children":825},{"__ignoreMap":8},[826],{"type":30,"value":821},{"type":17,"tag":56,"props":828,"children":830},{"id":829},"data-management",[831],{"type":30,"value":832},"Data Management",{"type":17,"tag":22,"props":834,"children":835},{},[836],{"type":30,"value":837},"Commands for handling data collected during your operations.",{"type":17,"tag":569,"props":839,"children":841},{"id":840},"report",[842],{"type":17,"tag":47,"props":843,"children":845},{"className":844},[],[846],{"type":30,"value":840},{"type":17,"tag":22,"props":848,"children":849},{},[850],{"type":30,"value":851},"Manages reports, the central containers for all collected data (findings, notes, loot).",{"type":17,"tag":90,"props":853,"children":856},{"className":854,"code":855,"language":95,"meta":8},[93],"report add \u003Cname>                  # Create a new report.\nreport load \u003Cname>                 # Load report to start collecting data.\nreport render \u003Cname>               # Save human-readable summary to file.\nreport export \u003Cname>               # Export as recreation commands.\n",[857],{"type":17,"tag":47,"props":858,"children":859},{"__ignoreMap":8},[860],{"type":30,"value":855},{"type":17,"tag":569,"props":862,"children":864},{"id":863},"identify",[865],{"type":17,"tag":47,"props":866,"children":868},{"className":867},[],[869],{"type":30,"value":863},{"type":17,"tag":22,"props":871,"children":872},{},[873],{"type":30,"value":874},"Analyzes a string to guess its hash type or format.",{"type":17,"tag":90,"props":876,"children":879},{"className":877,"code":878,"language":95,"meta":8},[93],"identify \u003Chash_string>             # Identify raw hash string.\nidentify \"$loot.0.value\"           # Identify a stored loot value.\n",[880],{"type":17,"tag":47,"props":881,"children":882},{"__ignoreMap":8},[883],{"type":30,"value":878},{"type":17,"tag":569,"props":885,"children":887},{"id":886},"note",[888],{"type":17,"tag":47,"props":889,"children":891},{"className":890},[],[892],{"type":30,"value":886},{"type":17,"tag":22,"props":894,"children":895},{},[896],{"type":30,"value":897},"Manages timestamped notes saved to the loaded report.",{"type":17,"tag":90,"props":899,"children":902},{"className":900,"code":901,"language":95,"meta":8},[93],"note add \u003Ctext...>                 # Add a new note.\nnote list                          # List all notes.\nnote delete \u003Cid>                   # Delete a note.\n",[903],{"type":17,"tag":47,"props":904,"children":905},{"__ignoreMap":8},[906],{"type":30,"value":901},{"type":17,"tag":569,"props":908,"children":910},{"id":909},"loot",[911],{"type":17,"tag":47,"props":912,"children":914},{"className":913},[],[915],{"type":30,"value":909},{"type":17,"tag":22,"props":917,"children":918},{},[919],{"type":30,"value":920},"Manages found treasures (credentials, keys, flags).",{"type":17,"tag":90,"props":922,"children":925},{"className":923,"code":924,"language":95,"meta":8},[93],"loot add credential \u003Cuser:pass>    # Add a loot item.\nloot list                          # List collected loot.\nloot delete \u003Cid>                   # Delete a loot item.\n",[926],{"type":17,"tag":47,"props":927,"children":928},{"__ignoreMap":8},[929],{"type":30,"value":924},{"type":17,"tag":569,"props":931,"children":933},{"id":932},"parser",[934],{"type":17,"tag":47,"props":935,"children":937},{"className":936},[],[938],{"type":30,"value":932},{"type":17,"tag":22,"props":940,"children":941},{},[942],{"type":30,"value":943},"Manages regex-based parsers to extract findings from command output.",{"type":17,"tag":90,"props":945,"children":948},{"className":946,"code":947,"language":95,"meta":8},[93],"parser list                        # List available parsers.\nparser apply \u003Cname> \u003Clog_id>       # Parse a log entry and save findings.\nparser show \u003Cname>                 # Show rules for a parser.\n",[949],{"type":17,"tag":47,"props":950,"children":951},{"__ignoreMap":8},[952],{"type":30,"value":947},{"type":17,"tag":569,"props":954,"children":956},{"id":955},"revshell",[957],{"type":17,"tag":47,"props":958,"children":960},{"className":959},[],[961],{"type":30,"value":955},{"type":17,"tag":22,"props":963,"children":964},{},[965],{"type":30,"value":966},"Generates reverse shell one-liners using profile settings.",{"type":17,"tag":90,"props":968,"children":971},{"className":969,"code":970,"language":95,"meta":8},[93],"revshell php                       # Generate PHP payload.\nrevshell python3 \u003Cip> \u003Cport>       # Generate Python payload with args.\n",[972],{"type":17,"tag":47,"props":973,"children":974},{"__ignoreMap":8},[975],{"type":30,"value":970},{"type":17,"tag":569,"props":977,"children":979},{"id":978},"placeholders",[980],{"type":17,"tag":47,"props":981,"children":983},{"className":982},[],[984],{"type":30,"value":978},{"type":17,"tag":22,"props":986,"children":987},{},[988],{"type":30,"value":989},"Inspects available placeholders and their current resolved values.",{"type":17,"tag":90,"props":991,"children":994},{"className":992,"code":993,"language":95,"meta":8},[93],"placeholders all                   # Show all available placeholders.\nplaceholders target                # Show target-specific placeholders.\n",[995],{"type":17,"tag":47,"props":996,"children":997},{"__ignoreMap":8},[998],{"type":30,"value":993},{"type":17,"tag":569,"props":1000,"children":1001},{"id":209},[1002],{"type":17,"tag":47,"props":1003,"children":1005},{"className":1004},[],[1006],{"type":30,"value":209},{"type":17,"tag":22,"props":1008,"children":1009},{},[1010],{"type":30,"value":1011},"Manages global key-value settings (e.g., API keys, default interfaces).",{"type":17,"tag":90,"props":1013,"children":1016},{"className":1014,"code":1015,"language":95,"meta":8},[93],"profile update user_agent \u003Cua>     # Set global User-Agent.\nprofile show                       # Show all profile settings.\n",[1017],{"type":17,"tag":47,"props":1018,"children":1019},{"__ignoreMap":8},[1020],{"type":30,"value":1015},{"type":17,"tag":569,"props":1022,"children":1024},{"id":1023},"library",[1025],{"type":17,"tag":47,"props":1026,"children":1028},{"className":1027},[],[1029],{"type":30,"value":1023},{"type":17,"tag":22,"props":1031,"children":1032},{},[1033],{"type":30,"value":1034},"Manages a library of useful links and resources (Cheatsheets, Lists).",{"type":17,"tag":90,"props":1036,"children":1039},{"className":1037,"code":1038,"language":95,"meta":8},[93],"library add \u003Cname>                 # Create a new entry.\nlibrary open \u003Cname>                # Open URL in browser.\nlibrary list                       # List all entries.\n",[1040],{"type":17,"tag":47,"props":1041,"children":1042},{"__ignoreMap":8},[1043],{"type":30,"value":1038},{"type":17,"tag":56,"props":1045,"children":1047},{"id":1046},"configuration-utilities",[1048],{"type":30,"value":1049},"Configuration & Utilities",{"type":17,"tag":22,"props":1051,"children":1052},{},[1053],{"type":30,"value":1054},"System-level commands and helpers.",{"type":17,"tag":569,"props":1056,"children":1058},{"id":1057},"config",[1059],{"type":17,"tag":47,"props":1060,"children":1062},{"className":1061},[],[1063],{"type":30,"value":1057},{"type":17,"tag":22,"props":1065,"children":1066},{},[1067],{"type":30,"value":1068},"Manages application configuration (colors, paths, defaults).",{"type":17,"tag":90,"props":1070,"children":1073},{"className":1071,"code":1072,"language":95,"meta":8},[93],"config list                        # Display full config.\nconfig set \u003CKEY> \u003CVALUE>           # Set a config value.\n",[1074],{"type":17,"tag":47,"props":1075,"children":1076},{"__ignoreMap":8},[1077],{"type":30,"value":1072},{"type":17,"tag":569,"props":1079,"children":1080},{"id":328},[1081],{"type":17,"tag":47,"props":1082,"children":1084},{"className":1083},[],[1085],{"type":30,"value":328},{"type":17,"tag":22,"props":1087,"children":1088},{},[1089],{"type":30,"value":1090},"Resolves placeholders and applies functions without executing shell commands.",{"type":17,"tag":90,"props":1092,"children":1095},{"className":1093,"code":1094,"language":95,"meta":8},[93],"print $target.ip                 # Print resolved target IP.\nprint b64encode(test)            # Encode string to Base64.\n",[1096],{"type":17,"tag":47,"props":1097,"children":1098},{"__ignoreMap":8},[1099],{"type":30,"value":1094},{"type":17,"tag":569,"props":1101,"children":1103},{"id":1102},"proxy",[1104],{"type":17,"tag":47,"props":1105,"children":1107},{"className":1106},[],[1108],{"type":30,"value":1102},{"type":17,"tag":22,"props":1110,"children":1111},{},[1112],{"type":30,"value":1113},"Manages proxy settings for the current session.",{"type":17,"tag":90,"props":1115,"children":1118},{"className":1116,"code":1117,"language":95,"meta":8},[93],"proxy on                           # Enable proxy.\nproxy set host \u003Cip>                # Set proxy host.\nproxy reset host                   # Reset to global default.\n",[1119],{"type":17,"tag":47,"props":1120,"children":1121},{"__ignoreMap":8},[1122],{"type":30,"value":1117},{"type":17,"tag":569,"props":1124,"children":1126},{"id":1125},"alias",[1127],{"type":17,"tag":47,"props":1128,"children":1130},{"className":1129},[],[1131],{"type":30,"value":1125},{"type":17,"tag":22,"props":1133,"children":1134},{},[1135],{"type":30,"value":1136},"Create shortcuts for frequently used commands.",{"type":17,"tag":90,"props":1138,"children":1141},{"className":1139,"code":1140,"language":95,"meta":8},[93],"alias create \u003Cname> \u003Ccommand>      # Create a new alias.\n",[1142],{"type":17,"tag":47,"props":1143,"children":1144},{"__ignoreMap":8},[1145],{"type":30,"value":1140},{"type":17,"tag":569,"props":1147,"children":1149},{"id":1148},"run_script",[1150],{"type":17,"tag":47,"props":1151,"children":1153},{"className":1152},[],[1154],{"type":30,"value":1148},{"type":17,"tag":22,"props":1156,"children":1157},{},[1158,1160,1166],{"type":30,"value":1159},"Executes a pwnity script file (",{"type":17,"tag":47,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":30,"value":1165},".pwn",{"type":30,"value":1167},").",{"type":17,"tag":90,"props":1169,"children":1172},{"className":1170,"code":1171,"language":95,"meta":8},[93],"run_script \u003Cpath/to/script.pwn>    # Run a script.\n",[1173],{"type":17,"tag":47,"props":1174,"children":1175},{"__ignoreMap":8},[1176],{"type":30,"value":1171},{"title":8,"searchDepth":12,"depth":12,"links":1178},[1179,1187,1195,1206],{"id":559,"depth":12,"text":562,"children":1180},[1181,1183,1184,1185],{"id":571,"depth":1182,"text":571},3,{"id":594,"depth":1182,"text":594},{"id":123,"depth":1182,"text":123},{"id":646,"depth":1182,"text":1186},"pwn (alias: run)",{"id":680,"depth":12,"text":683,"children":1188},[1189,1190,1191,1192,1193,1194],{"id":691,"depth":1182,"text":691},{"id":714,"depth":1182,"text":714},{"id":737,"depth":1182,"text":737},{"id":760,"depth":1182,"text":760},{"id":783,"depth":1182,"text":783},{"id":806,"depth":1182,"text":806},{"id":829,"depth":12,"text":832,"children":1196},[1197,1198,1199,1200,1201,1202,1203,1204,1205],{"id":840,"depth":1182,"text":840},{"id":863,"depth":1182,"text":863},{"id":886,"depth":1182,"text":886},{"id":909,"depth":1182,"text":909},{"id":932,"depth":1182,"text":932},{"id":955,"depth":1182,"text":955},{"id":978,"depth":1182,"text":978},{"id":209,"depth":1182,"text":209},{"id":1023,"depth":1182,"text":1023},{"id":1046,"depth":12,"text":1049,"children":1207},[1208,1209,1210,1211,1212],{"id":1057,"depth":1182,"text":1057},{"id":328,"depth":1182,"text":328},{"id":1102,"depth":1182,"text":1102},{"id":1125,"depth":1182,"text":1125},{"id":1148,"depth":1182,"text":1148},"content:docs:commands.md","docs/commands.md","docs/commands",{"_path":1217,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1218,"description":8,"slug":1219,"category":1220,"order":1182,"body":1221,"_type":350,"_id":1412,"_source":352,"_file":1413,"_stem":1414,"_extension":355},"/docs/concepts","Core Concepts","concepts","Basics",{"type":14,"children":1222,"toc":1402},[1223,1235,1240,1250,1256,1261,1274,1280,1301,1307,1312,1330,1336,1341,1347,1352,1358,1363,1367,1373,1378],{"type":17,"tag":18,"props":1224,"children":1225},{},[1226],{"type":17,"tag":22,"props":1227,"children":1228},{},[1229,1233],{"type":17,"tag":26,"props":1230,"children":1231},{},[1232],{"type":30,"value":31},{"type":30,"value":1234}," An explanation of the core ideas behind pwnity: Targets, Tools, Wordlists, and Sessions.",{"type":17,"tag":35,"props":1236,"children":1238},{"id":1237},"core-concepts",[1239],{"type":30,"value":1218},{"type":17,"tag":22,"props":1241,"children":1242},{},[1243,1248],{"type":17,"tag":47,"props":1244,"children":1246},{"className":1245},[],[1247],{"type":30,"value":52},{"type":30,"value":1249}," is built around a few core ideas. Understanding them is key to using the tool effectively.",{"type":17,"tag":56,"props":1251,"children":1253},{"id":1252},"targets-the-what",[1254],{"type":30,"value":1255},"Targets: The \"What\"",{"type":17,"tag":22,"props":1257,"children":1258},{},[1259],{"type":30,"value":1260},"A Target represents the entity you are testing (e.g., an IP address, a domain, a web application). It acts as a container for all related information:",{"type":17,"tag":450,"props":1262,"children":1263},{},[1264,1269],{"type":17,"tag":454,"props":1265,"children":1266},{},[1267],{"type":30,"value":1268},"Network details (IP, hostname, port)",{"type":17,"tag":454,"props":1270,"children":1271},{},[1272],{"type":30,"value":1273},"Automatically gathered data (DNS, WHOIS, HTTP Headers)",{"type":17,"tag":56,"props":1275,"children":1277},{"id":1276},"tools-the-how",[1278],{"type":30,"value":1279},"Tools: The \"How\"",{"type":17,"tag":22,"props":1281,"children":1282},{},[1283,1285,1291,1293,1299],{"type":30,"value":1284},"A Tool is a template for an external command-line program you want to run (e.g., ",{"type":17,"tag":47,"props":1286,"children":1288},{"className":1287},[],[1289],{"type":30,"value":1290},"nmap",{"type":30,"value":1292},", ",{"type":17,"tag":47,"props":1294,"children":1296},{"className":1295},[],[1297],{"type":30,"value":1298},"gobuster",{"type":30,"value":1300},"). You define how the tool is called, including its subcommands and parameters. The real power comes from using placeholders in the parameters.",{"type":17,"tag":56,"props":1302,"children":1304},{"id":1303},"reports-the-findings",[1305],{"type":30,"value":1306},"Reports: The \"Findings\"",{"type":17,"tag":22,"props":1308,"children":1309},{},[1310],{"type":30,"value":1311},"A Report is the central container for all your analytical findings for an engagement. It stores:",{"type":17,"tag":450,"props":1313,"children":1314},{},[1315,1320,1325],{"type":17,"tag":454,"props":1316,"children":1317},{},[1318],{"type":30,"value":1319},"Your personal notes.",{"type":17,"tag":454,"props":1321,"children":1322},{},[1323],{"type":30,"value":1324},"Discovered credentials or flags (Loot).",{"type":17,"tag":454,"props":1326,"children":1327},{},[1328],{"type":30,"value":1329},"Structured findings extracted by Parsers.",{"type":17,"tag":56,"props":1331,"children":1333},{"id":1332},"wordlists-the-with-what",[1334],{"type":30,"value":1335},"Wordlists: The \"With What\"",{"type":17,"tag":22,"props":1337,"children":1338},{},[1339],{"type":30,"value":1340},"A Wordlist is a simple reference to a file on your system containing a list of words, typically used for fuzzing, directory busting, or password cracking.",{"type":17,"tag":56,"props":1342,"children":1344},{"id":1343},"sessions-the-workspace",[1345],{"type":30,"value":1346},"Sessions: The \"Workspace\"",{"type":17,"tag":22,"props":1348,"children":1349},{},[1350],{"type":30,"value":1351},"A Session is your current working context. It \"remembers\" which Target, Tool, and Wordlist you have loaded. This allows you to switch between different projects without re-configuring everything. The prompt always shows you what's loaded in the active session.",{"type":17,"tag":56,"props":1353,"children":1355},{"id":1354},"presets-the-shortcut",[1356],{"type":30,"value":1357},"Presets: The \"Shortcut\"",{"type":17,"tag":22,"props":1359,"children":1360},{},[1361],{"type":30,"value":1362},"A Preset is a saved session. If you often use the same combination of a tool and wordlist for a certain type of target, you can save it as a preset and load it with a single command.",{"type":17,"tag":1364,"props":1365,"children":1366},"hr",{},[],{"type":17,"tag":569,"props":1368,"children":1370},{"id":1369},"the-no-database-philosophy",[1371],{"type":30,"value":1372},"The \"No Database\" Philosophy",{"type":17,"tag":22,"props":1374,"children":1375},{},[1376],{"type":30,"value":1377},"Pwnity does not use a database. No SQL dumps, no migrations, and no service dependencies.",{"type":17,"tag":450,"props":1379,"children":1380},{},[1381,1392,1397],{"type":17,"tag":454,"props":1382,"children":1383},{},[1384,1386,1391],{"type":30,"value":1385},"All objects (Targets, Tools, Wordlists) are stored as simple ",{"type":17,"tag":26,"props":1387,"children":1388},{},[1389],{"type":30,"value":1390},"JSON files",{"type":30,"value":132},{"type":17,"tag":454,"props":1393,"children":1394},{},[1395],{"type":30,"value":1396},"Reports are portable Markdown or JSON files.",{"type":17,"tag":454,"props":1398,"children":1399},{},[1400],{"type":30,"value":1401},"Portability is built-in: copy your project folder, and you have the entire engagement history.",{"title":8,"searchDepth":12,"depth":12,"links":1403},[1404,1405,1406,1407,1408,1409],{"id":1252,"depth":12,"text":1255},{"id":1276,"depth":12,"text":1279},{"id":1303,"depth":12,"text":1306},{"id":1332,"depth":12,"text":1335},{"id":1343,"depth":12,"text":1346},{"id":1354,"depth":12,"text":1357,"children":1410},[1411],{"id":1369,"depth":1182,"text":1372},"content:docs:concepts.md","docs/concepts.md","docs/concepts",{"_path":1416,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1417,"description":1418,"slug":1419,"category":1220,"order":1420,"body":1421,"_type":350,"_id":1727,"_source":352,"_file":1728,"_stem":1729,"_extension":355},"/docs/configuration","Configuration Guide","Pwnity uses a local-first, session-based configuration. All settings are stored in etc/config.json. This approach follows our \"No database, no dumps, no pain\" philosophy.","configuration",5,{"type":14,"children":1422,"toc":1720},[1423,1428,1447,1453,1465,1508,1514,1519,1566,1572,1584,1609,1615,1628,1678,1684,1697,1700],{"type":17,"tag":35,"props":1424,"children":1425},{"id":1419},[1426],{"type":30,"value":1427},"Configuration",{"type":17,"tag":22,"props":1429,"children":1430},{},[1431,1433,1438,1440,1445],{"type":30,"value":1432},"Pwnity uses a local-first, session-based configuration. All settings are stored in ",{"type":17,"tag":47,"props":1434,"children":1436},{"className":1435},[],[1437],{"type":30,"value":492},{"type":30,"value":1439},". This approach follows our ",{"type":17,"tag":26,"props":1441,"children":1442},{},[1443],{"type":30,"value":1444},"\"No database, no dumps, no pain\"",{"type":30,"value":1446}," philosophy.",{"type":17,"tag":56,"props":1448,"children":1450},{"id":1449},"global-settings",[1451],{"type":30,"value":1452},"Global Settings",{"type":17,"tag":22,"props":1454,"children":1455},{},[1456,1457,1463],{"type":30,"value":203},{"type":17,"tag":47,"props":1458,"children":1460},{"className":1459},[],[1461],{"type":30,"value":1462},"GLOBAL",{"type":30,"value":1464}," section manages core application behavior.",{"type":17,"tag":450,"props":1466,"children":1467},{},[1468,1479,1490],{"type":17,"tag":454,"props":1469,"children":1470},{},[1471,1477],{"type":17,"tag":47,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":30,"value":1476},"DEBUG_LEVEL",{"type":30,"value":1478},": Controls log verbosity (DEBUG, INFO, WARNING, ERROR).",{"type":17,"tag":454,"props":1480,"children":1481},{},[1482,1488],{"type":17,"tag":47,"props":1483,"children":1485},{"className":1484},[],[1486],{"type":30,"value":1487},"HISTORY_FILE",{"type":30,"value":1489},": Path to your CLI command history.",{"type":17,"tag":454,"props":1491,"children":1492},{},[1493,1499,1501,1506],{"type":17,"tag":47,"props":1494,"children":1496},{"className":1495},[],[1497],{"type":30,"value":1498},"LOOT_TYPES",{"type":30,"value":1500},": Defines valid categories for the ",{"type":17,"tag":47,"props":1502,"children":1504},{"className":1503},[],[1505],{"type":30,"value":909},{"type":30,"value":1507}," command (e.g., credentials, tokens, artifacts).",{"type":17,"tag":56,"props":1509,"children":1511},{"id":1510},"directory-structure-dirs",[1512],{"type":30,"value":1513},"Directory Structure (DIRS)",{"type":17,"tag":22,"props":1515,"children":1516},{},[1517],{"type":30,"value":1518},"Pwnity is ultra-portable because it maps all its logical objects to local directories.",{"type":17,"tag":450,"props":1520,"children":1521},{},[1522,1533,1544,1555],{"type":17,"tag":454,"props":1523,"children":1524},{},[1525,1531],{"type":17,"tag":47,"props":1526,"children":1528},{"className":1527},[],[1529],{"type":30,"value":1530},"PRESETS",{"type":30,"value":1532},": Saved session templates.",{"type":17,"tag":454,"props":1534,"children":1535},{},[1536,1542],{"type":17,"tag":47,"props":1537,"children":1539},{"className":1538},[],[1540],{"type":30,"value":1541},"TARGETS",{"type":30,"value":1543},": JSON objects containing target metadata and scan results.",{"type":17,"tag":454,"props":1545,"children":1546},{},[1547,1553],{"type":17,"tag":47,"props":1548,"children":1550},{"className":1549},[],[1551],{"type":30,"value":1552},"WORDLISTS",{"type":30,"value":1554},": References to your local wordlist files.",{"type":17,"tag":454,"props":1556,"children":1557},{},[1558,1564],{"type":17,"tag":47,"props":1559,"children":1561},{"className":1560},[],[1562],{"type":30,"value":1563},"REPORTS",{"type":30,"value":1565},": The central storage for all notes and findings.",{"type":17,"tag":56,"props":1567,"children":1569},{"id":1568},"heartbeat-stability",[1570],{"type":30,"value":1571},"Heartbeat & Stability",{"type":17,"tag":22,"props":1573,"children":1574},{},[1575,1576,1582],{"type":30,"value":203},{"type":17,"tag":47,"props":1577,"children":1579},{"className":1578},[],[1580],{"type":30,"value":1581},"HEARTBEAT",{"type":30,"value":1583}," section controls how Pwnity monitors background jobs and target responsiveness.",{"type":17,"tag":450,"props":1585,"children":1586},{},[1587,1598],{"type":17,"tag":454,"props":1588,"children":1589},{},[1590,1596],{"type":17,"tag":47,"props":1591,"children":1593},{"className":1592},[],[1594],{"type":30,"value":1595},"MIN_DELAY_SECONDS",{"type":30,"value":1597},": The minimum interval for health checks.",{"type":17,"tag":454,"props":1599,"children":1600},{},[1601,1607],{"type":17,"tag":47,"props":1602,"children":1604},{"className":1603},[],[1605],{"type":30,"value":1606},"MAX_DELAY_SECONDS",{"type":30,"value":1608},": The maximum interval for jittered health checks.",{"type":17,"tag":56,"props":1610,"children":1612},{"id":1611},"proxy-configuration",[1613],{"type":30,"value":1614},"Proxy Configuration",{"type":17,"tag":22,"props":1616,"children":1617},{},[1618,1620,1626],{"type":30,"value":1619},"Pwnity supports per-session proxy settings, often using ",{"type":17,"tag":47,"props":1621,"children":1623},{"className":1622},[],[1624],{"type":30,"value":1625},"proxychains",{"type":30,"value":1627}," as a wrapper.",{"type":17,"tag":450,"props":1629,"children":1630},{},[1631,1642,1659],{"type":17,"tag":454,"props":1632,"children":1633},{},[1634,1640],{"type":17,"tag":47,"props":1635,"children":1637},{"className":1636},[],[1638],{"type":30,"value":1639},"ENABLED",{"type":30,"value":1641},": Global toggle for proxy support.",{"type":17,"tag":454,"props":1643,"children":1644},{},[1645,1651,1653,1658],{"type":17,"tag":47,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":30,"value":1650},"WRAPPER_COMMAND",{"type":30,"value":1652},": The binary used to wrap tool execution (e.g., ",{"type":17,"tag":47,"props":1654,"children":1656},{"className":1655},[],[1657],{"type":30,"value":1625},{"type":30,"value":1167},{"type":17,"tag":454,"props":1660,"children":1661},{},[1662,1668,1670,1676],{"type":17,"tag":47,"props":1663,"children":1665},{"className":1664},[],[1666],{"type":30,"value":1667},"WRAPPER_NEEDS_SUDO",{"type":30,"value":1669},": Set to ",{"type":17,"tag":47,"props":1671,"children":1673},{"className":1672},[],[1674],{"type":30,"value":1675},"true",{"type":30,"value":1677}," if your proxy wrapper requires elevated privileges.",{"type":17,"tag":56,"props":1679,"children":1681},{"id":1680},"customization-colors",[1682],{"type":30,"value":1683},"Customization (COLORS)",{"type":17,"tag":22,"props":1685,"children":1686},{},[1687,1689,1695],{"type":30,"value":1688},"You can customize the CLI's visual output by modifying the ANSI color codes in the ",{"type":17,"tag":47,"props":1690,"children":1692},{"className":1691},[],[1693],{"type":30,"value":1694},"COLORS",{"type":30,"value":1696}," section of the config file.",{"type":17,"tag":1364,"props":1698,"children":1699},{},[],{"type":17,"tag":18,"props":1701,"children":1702},{},[1703],{"type":17,"tag":22,"props":1704,"children":1705},{},[1706,1710,1712,1718],{"type":17,"tag":542,"props":1707,"children":1708},{},[1709],{"type":30,"value":546},{"type":30,"value":1711},"\nSince Pwnity stores everything in JSON, you can easily sync your ",{"type":17,"tag":47,"props":1713,"children":1715},{"className":1714},[],[1716],{"type":30,"value":1717},"etc/",{"type":30,"value":1719}," and data directories with any backup tool or git repository for instant cross-device portability.",{"title":8,"searchDepth":12,"depth":12,"links":1721},[1722,1723,1724,1725,1726],{"id":1449,"depth":12,"text":1452},{"id":1510,"depth":12,"text":1513},{"id":1568,"depth":12,"text":1571},{"id":1611,"depth":12,"text":1614},{"id":1680,"depth":12,"text":1683},"content:docs:configuration.md","docs/configuration.md","docs/configuration",{"_path":1731,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1732,"description":8,"slug":1733,"category":11,"order":361,"body":1734,"_type":350,"_id":1911,"_source":352,"_file":1912,"_stem":1913,"_extension":355},"/docs/examples","Command Cookbook","examples",{"type":14,"children":1735,"toc":1900},[1736,1748,1754,1765,1771,1780,1786,1795,1801,1810,1816,1825,1831,1840,1846,1855,1861,1870,1876,1885,1891],{"type":17,"tag":18,"props":1737,"children":1738},{},[1739],{"type":17,"tag":22,"props":1740,"children":1741},{},[1742,1746],{"type":17,"tag":26,"props":1743,"children":1744},{},[1745],{"type":30,"value":31},{"type":30,"value":1747}," A cookbook of common command patterns for various tasks in pwnity.",{"type":17,"tag":35,"props":1749,"children":1751},{"id":1750},"command-examples-cookbook",[1752],{"type":30,"value":1753},"Command Examples Cookbook",{"type":17,"tag":22,"props":1755,"children":1756},{},[1757,1759,1764],{"type":30,"value":1758},"This page provides a quick reference and \"cookbook\" of common command patterns for various tasks in ",{"type":17,"tag":47,"props":1760,"children":1762},{"className":1761},[],[1763],{"type":30,"value":52},{"type":30,"value":132},{"type":17,"tag":56,"props":1766,"children":1768},{"id":1767},"setting-up-a-simple-web-target",[1769],{"type":30,"value":1770},"Setting up a simple Web Target",{"type":17,"tag":90,"props":1772,"children":1775},{"className":1773,"code":1774,"language":95,"meta":8},[93],"target add my-webapp\ntarget update my-webapp url https://example.com/login.php\ntarget gather my-webapp http\ntarget show my-webapp\n",[1776],{"type":17,"tag":47,"props":1777,"children":1778},{"__ignoreMap":8},[1779],{"type":30,"value":1774},{"type":17,"tag":56,"props":1781,"children":1783},{"id":1782},"configuring-a-simple-tool-nmap",[1784],{"type":30,"value":1785},"Configuring a simple Tool (nmap)",{"type":17,"tag":90,"props":1787,"children":1790},{"className":1788,"code":1789,"language":95,"meta":8},[93],"tool add nmap\ntool update nmap command quick # Add a command named 'quick'\ntool update nmap quick param \"-sV\" # Add parameters individually for more flexibility\ntool update nmap quick param \"-T4\"\ntool update nmap quick param \"$target.ip\"\ntool update nmap sudo true\n",[1791],{"type":17,"tag":47,"props":1792,"children":1793},{"__ignoreMap":8},[1794],{"type":30,"value":1789},{"type":17,"tag":56,"props":1796,"children":1798},{"id":1797},"configuring-a-tool-with-placeholders-gobuster",[1799],{"type":30,"value":1800},"Configuring a Tool with Placeholders (gobuster)",{"type":17,"tag":90,"props":1802,"children":1805},{"className":1803,"code":1804,"language":95,"meta":8},[93],"tool add gobuster\ntool update gobuster command vhost\ntool update gobuster vhost param \"vhost\"\ntool update gobuster vhost param \"-u $target.base_url\"\ntool update gobuster vhost param \"-w $wordlist.path\"\ntool update gobuster vhost param \"--append-domain -d $target.domain\"\n",[1806],{"type":17,"tag":47,"props":1807,"children":1808},{"__ignoreMap":8},[1809],{"type":30,"value":1804},{"type":17,"tag":56,"props":1811,"children":1813},{"id":1812},"running-a-scan",[1814],{"type":30,"value":1815},"Running a Scan",{"type":17,"tag":90,"props":1817,"children":1820},{"className":1818,"code":1819,"language":95,"meta":8},[93],"target load my-webapp\ntool load nmap\npwn quick         # Preview the command\npwn quick now     # Run in foreground\npwn quick bg      # Run in background\n",[1821],{"type":17,"tag":47,"props":1822,"children":1823},{"__ignoreMap":8},[1824],{"type":30,"value":1819},{"type":17,"tag":56,"props":1826,"children":1828},{"id":1827},"reordering-tool-parameters",[1829],{"type":30,"value":1830},"Reordering Tool Parameters",{"type":17,"tag":90,"props":1832,"children":1835},{"className":1833,"code":1834,"language":95,"meta":8},[93],"# The nmap 'quick' command now has params: 1=\"-sV\", 2=\"-T4\", 3=\"$target.ip\"\n# Let's move the IP address to the front.\ntool reorder nmap quick 3 1\n# The command will now be assembled as 'nmap $target.ip -sV -T4'\n",[1836],{"type":17,"tag":47,"props":1837,"children":1838},{"__ignoreMap":8},[1839],{"type":30,"value":1834},{"type":17,"tag":56,"props":1841,"children":1843},{"id":1842},"documenting-findings",[1844],{"type":30,"value":1845},"Documenting Findings",{"type":17,"tag":90,"props":1847,"children":1850},{"className":1848,"code":1849,"language":95,"meta":8},[93],"report add my-webapp-report\nreport load my-webapp-report\nnote add \"The login page seems to have a default password policy.\"\nloot add credential admin:admin\nloot add flag FLAG{...}\n",[1851],{"type":17,"tag":47,"props":1852,"children":1853},{"__ignoreMap":8},[1854],{"type":30,"value":1849},{"type":17,"tag":56,"props":1856,"children":1858},{"id":1857},"using-the-proxy-with-placeholders",[1859],{"type":30,"value":1860},"Using the Proxy with Placeholders",{"type":17,"tag":90,"props":1862,"children":1865},{"className":1863,"code":1864,"language":95,"meta":8},[93],"proxy set host 127.0.0.1\nproxy set port 8080\nproxy on\ntool update ffuf fuzz param \"--proxy http://$proxy.host:$proxy.port\"\n",[1866],{"type":17,"tag":47,"props":1867,"children":1868},{"__ignoreMap":8},[1869],{"type":30,"value":1864},{"type":17,"tag":56,"props":1871,"children":1873},{"id":1872},"backing-up-a-target",[1874],{"type":30,"value":1875},"Backing up a Target",{"type":17,"tag":90,"props":1877,"children":1880},{"className":1878,"code":1879,"language":95,"meta":8},[93],"target export my-webapp\n",[1881],{"type":17,"tag":47,"props":1882,"children":1883},{"__ignoreMap":8},[1884],{"type":30,"value":1879},{"type":17,"tag":56,"props":1886,"children":1888},{"id":1887},"using-a-preset-for-repetitive-tasks",[1889],{"type":30,"value":1890},"Using a Preset for Repetitive Tasks",{"type":17,"tag":90,"props":1892,"children":1895},{"className":1893,"code":1894,"language":95,"meta":8},[93],"tool load gobuster\nwordlist load directory-list-2.3-medium\npreset save gobuster-medium\n# Later, in a new shell...\npreset load gobuster-medium\n# This creates a new session with the tool and wordlist pre-loaded.\n",[1896],{"type":17,"tag":47,"props":1897,"children":1898},{"__ignoreMap":8},[1899],{"type":30,"value":1894},{"title":8,"searchDepth":12,"depth":12,"links":1901},[1902,1903,1904,1905,1906,1907,1908,1909,1910],{"id":1767,"depth":12,"text":1770},{"id":1782,"depth":12,"text":1785},{"id":1797,"depth":12,"text":1800},{"id":1812,"depth":12,"text":1815},{"id":1827,"depth":12,"text":1830},{"id":1842,"depth":12,"text":1845},{"id":1857,"depth":12,"text":1860},{"id":1872,"depth":12,"text":1875},{"id":1887,"depth":12,"text":1890},"content:docs:examples.md","docs/examples.md","docs/examples",{"_path":1915,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":1916,"description":8,"slug":1917,"category":360,"order":12,"body":1918,"_type":350,"_id":2152,"_source":352,"_file":2153,"_stem":2154,"_extension":355},"/docs/exporting","Exporting Objects","exporting",{"type":14,"children":1919,"toc":2148},[1920,1932,1937,1964,1970,2003,2009,2042,2050,2103,2110,2119,2139],{"type":17,"tag":18,"props":1921,"children":1922},{},[1923],{"type":17,"tag":22,"props":1924,"children":1925},{},[1926,1930],{"type":17,"tag":26,"props":1927,"children":1928},{},[1929],{"type":30,"value":31},{"type":30,"value":1931}," Generate pwnity commands to back up, share, or version-control your configurations.",{"type":17,"tag":35,"props":1933,"children":1935},{"id":1934},"exporting-objects",[1936],{"type":30,"value":1916},{"type":17,"tag":22,"props":1938,"children":1939},{},[1940,1941,1947,1949,1955,1957,1962],{"type":30,"value":203},{"type":17,"tag":47,"props":1942,"children":1944},{"className":1943},[],[1945],{"type":30,"value":1946},"export",{"type":30,"value":1948}," command (aliased as ",{"type":17,"tag":47,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":30,"value":1954},"reverse",{"type":30,"value":1956},") is a powerful feature for backing up, sharing, or version-controlling your configurations. It generates a series of ",{"type":17,"tag":47,"props":1958,"children":1960},{"className":1959},[],[1961],{"type":30,"value":52},{"type":30,"value":1963}," commands that can be used to perfectly reconstruct an object.",{"type":17,"tag":56,"props":1965,"children":1967},{"id":1966},"use-cases",[1968],{"type":30,"value":1969},"Use Cases",{"type":17,"tag":450,"props":1971,"children":1972},{},[1973,1983,1993],{"type":17,"tag":454,"props":1974,"children":1975},{},[1976,1981],{"type":17,"tag":26,"props":1977,"children":1978},{},[1979],{"type":30,"value":1980},"Backup:",{"type":30,"value":1982}," Save the output to a script file for easy restoration.",{"type":17,"tag":454,"props":1984,"children":1985},{},[1986,1991],{"type":17,"tag":26,"props":1987,"children":1988},{},[1989],{"type":30,"value":1990},"Sharing:",{"type":30,"value":1992}," Send the output to a teammate so they can quickly replicate your setup.",{"type":17,"tag":454,"props":1994,"children":1995},{},[1996,2001],{"type":17,"tag":26,"props":1997,"children":1998},{},[1999],{"type":30,"value":2000},"Version Control:",{"type":30,"value":2002}," Commit the exported scripts to a Git repository to track changes to your tools and targets over time.",{"type":17,"tag":56,"props":2004,"children":2006},{"id":2005},"how-it-works",[2007],{"type":30,"value":2008},"How it Works",{"type":17,"tag":22,"props":2010,"children":2011},{},[2012,2013,2018,2020,2025,2027,2033,2034,2040],{"type":30,"value":203},{"type":17,"tag":47,"props":2014,"children":2016},{"className":2015},[],[2017],{"type":30,"value":1946},{"type":30,"value":2019}," command is context-aware and intelligent. For a ",{"type":17,"tag":47,"props":2021,"children":2023},{"className":2022},[],[2024],{"type":30,"value":571},{"type":30,"value":2026},", it will prioritize using the ",{"type":17,"tag":47,"props":2028,"children":2030},{"className":2029},[],[2031],{"type":30,"value":2032},"url",{"type":30,"value":82},{"type":17,"tag":47,"props":2035,"children":2037},{"className":2036},[],[2038],{"type":30,"value":2039},"gather",{"type":30,"value":2041}," commands to reconstruct derived data, rather than setting each field manually.",{"type":17,"tag":22,"props":2043,"children":2044},{},[2045],{"type":17,"tag":26,"props":2046,"children":2047},{},[2048],{"type":30,"value":2049},"Available on:",{"type":17,"tag":450,"props":2051,"children":2052},{},[2053,2063,2071,2079,2087,2095],{"type":17,"tag":454,"props":2054,"children":2055},{},[2056,2061],{"type":17,"tag":47,"props":2057,"children":2059},{"className":2058},[],[2060],{"type":30,"value":571},{"type":30,"value":2062}," (exports technical data like IP, domain, etc.)",{"type":17,"tag":454,"props":2064,"children":2065},{},[2066],{"type":17,"tag":47,"props":2067,"children":2069},{"className":2068},[],[2070],{"type":30,"value":594},{"type":17,"tag":454,"props":2072,"children":2073},{},[2074],{"type":17,"tag":47,"props":2075,"children":2077},{"className":2076},[],[2078],{"type":30,"value":123},{"type":17,"tag":454,"props":2080,"children":2081},{},[2082],{"type":17,"tag":47,"props":2083,"children":2085},{"className":2084},[],[2086],{"type":30,"value":714},{"type":17,"tag":454,"props":2088,"children":2089},{},[2090],{"type":17,"tag":47,"props":2091,"children":2093},{"className":2092},[],[2094],{"type":30,"value":840},{"type":17,"tag":454,"props":2096,"children":2097},{},[2098],{"type":17,"tag":47,"props":2099,"children":2101},{"className":2100},[],[2102],{"type":30,"value":691},{"type":17,"tag":22,"props":2104,"children":2105},{},[2106],{"type":17,"tag":26,"props":2107,"children":2108},{},[2109],{"type":30,"value":420},{"type":17,"tag":90,"props":2111,"children":2114},{"className":2112,"code":2113,"language":95,"meta":8},[93],"target export my-server\n# The commands to recreate the target will be printed to the console.\n# You can copy this output and save it to a file (e.g., 'my-backup.pwn').\n",[2115],{"type":17,"tag":47,"props":2116,"children":2117},{"__ignoreMap":8},[2118],{"type":30,"value":2113},{"type":17,"tag":22,"props":2120,"children":2121},{},[2122,2124,2129,2131,2137],{"type":30,"value":2123},"You can then run this script in a new ",{"type":17,"tag":47,"props":2125,"children":2127},{"className":2126},[],[2128],{"type":30,"value":52},{"type":30,"value":2130}," instance to recreate the ",{"type":17,"tag":47,"props":2132,"children":2134},{"className":2133},[],[2135],{"type":30,"value":2136},"my-server",{"type":30,"value":2138}," target.",{"type":17,"tag":90,"props":2140,"children":2143},{"className":2141,"code":2142,"language":95,"meta":8},[93],"run_script my-backup.pwn\n",[2144],{"type":17,"tag":47,"props":2145,"children":2146},{"__ignoreMap":8},[2147],{"type":30,"value":2142},{"title":8,"searchDepth":12,"depth":12,"links":2149},[2150,2151],{"id":1966,"depth":12,"text":1969},{"id":2005,"depth":12,"text":2008},"content:docs:exporting.md","docs/exporting.md","docs/exporting",{"_path":2156,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2157,"description":8,"slug":2158,"category":1220,"order":361,"body":2159,"_type":350,"_id":2311,"_source":352,"_file":2312,"_stem":2313,"_extension":355},"/docs/getting-started","Getting Started","getting-started",{"type":14,"children":2160,"toc":2306},[2161,2173,2177,2182,2188,2193,2202,2208,2219,2228,2234],{"type":17,"tag":18,"props":2162,"children":2163},{},[2164],{"type":17,"tag":22,"props":2165,"children":2166},{},[2167,2171],{"type":17,"tag":26,"props":2168,"children":2169},{},[2170],{"type":30,"value":31},{"type":30,"value":2172}," Installation and first steps with the Pwnity command-line interface.",{"type":17,"tag":35,"props":2174,"children":2175},{"id":2158},[2176],{"type":30,"value":2157},{"type":17,"tag":22,"props":2178,"children":2179},{},[2180],{"type":30,"value":2181},"Pwnity is designed for high-performance security assessments. The CLI is your main control center.",{"type":17,"tag":56,"props":2183,"children":2185},{"id":2184},"installation",[2186],{"type":30,"value":2187},"Installation",{"type":17,"tag":22,"props":2189,"children":2190},{},[2191],{"type":30,"value":2192},"Pwnity is currently in development and can be installed via Git. Ensure you have Python 3.8+ installed on your system.",{"type":17,"tag":90,"props":2194,"children":2197},{"className":2195,"code":2196,"language":95,"meta":8},[93],"# Clone the repository\ngit clone https://github.com/pwnity/pwnity-cli.git\ncd pwnity-cli\n\n# Setup a virtual environment\npython -m venv venv\nsource venv/bin/activate\n\n# Install dependencies\npip install -r requirements.txt\n\n# Start Pwnity\n./pwnity\n",[2198],{"type":17,"tag":47,"props":2199,"children":2200},{"__ignoreMap":8},[2201],{"type":30,"value":2196},{"type":17,"tag":56,"props":2203,"children":2205},{"id":2204},"your-first-session",[2206],{"type":30,"value":2207},"Your First Session",{"type":17,"tag":22,"props":2209,"children":2210},{},[2211,2213],{"type":30,"value":2212},"To start an interactive shell, simply type:\n",{"type":17,"tag":47,"props":2214,"children":2216},{"className":2215},[],[2217],{"type":30,"value":2218},"./pwnity",{"type":17,"tag":22,"props":2220,"children":2221},{},[2222],{"type":17,"tag":2223,"props":2224,"children":2227},"img",{"alt":2225,"src":2226},"Installation Process","/assets/docs/installation/install.gif#terminal",[],{"type":17,"tag":56,"props":2229,"children":2231},{"id":2230},"basic-workflow",[2232],{"type":30,"value":2233},"Basic Workflow",{"type":17,"tag":2235,"props":2236,"children":2237},"ol",{},[2238,2255,2272,2289],{"type":17,"tag":454,"props":2239,"children":2240},{},[2241,2246,2248,2254],{"type":17,"tag":26,"props":2242,"children":2243},{},[2244],{"type":30,"value":2245},"Add a Target",{"type":30,"value":2247},": Add what you want to test (",{"type":17,"tag":47,"props":2249,"children":2251},{"className":2250},[],[2252],{"type":30,"value":2253},"target add your_target",{"type":30,"value":1167},{"type":17,"tag":454,"props":2256,"children":2257},{},[2258,2263,2265,2271],{"type":17,"tag":26,"props":2259,"children":2260},{},[2261],{"type":30,"value":2262},"Load Target",{"type":30,"value":2264},": Load it into your session (",{"type":17,"tag":47,"props":2266,"children":2268},{"className":2267},[],[2269],{"type":30,"value":2270},"target load your_target",{"type":30,"value":1167},{"type":17,"tag":454,"props":2273,"children":2274},{},[2275,2280,2282,2288],{"type":17,"tag":26,"props":2276,"children":2277},{},[2278],{"type":30,"value":2279},"Tool",{"type":30,"value":2281},": Load nmap (",{"type":17,"tag":47,"props":2283,"children":2285},{"className":2284},[],[2286],{"type":30,"value":2287},"tool load nmap",{"type":30,"value":1167},{"type":17,"tag":454,"props":2290,"children":2291},{},[2292,2297,2299,2305],{"type":17,"tag":26,"props":2293,"children":2294},{},[2295],{"type":30,"value":2296},"Execute",{"type":30,"value":2298},": Run the command (",{"type":17,"tag":47,"props":2300,"children":2302},{"className":2301},[],[2303],{"type":30,"value":2304},"pwn quick now",{"type":30,"value":1167},{"title":8,"searchDepth":12,"depth":12,"links":2307},[2308,2309,2310],{"id":2184,"depth":12,"text":2187},{"id":2204,"depth":12,"text":2207},{"id":2230,"depth":12,"text":2233},"content:docs:getting-started.md","docs/getting-started.md","docs/getting-started",{"_path":2315,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2316,"description":8,"slug":783,"category":2317,"order":1420,"body":2318,"_type":350,"_id":2484,"_source":352,"_file":2485,"_stem":2486,"_extension":355},"/docs/heartbeat","Monitoring Heartbeat","Features",{"type":14,"children":2319,"toc":2476},[2320,2332,2338,2349,2353,2396,2402,2408,2420,2429,2435,2447,2456,2462,2467],{"type":17,"tag":18,"props":2321,"children":2322},{},[2323],{"type":17,"tag":22,"props":2324,"children":2325},{},[2326,2330],{"type":17,"tag":26,"props":2327,"children":2328},{},[2329],{"type":30,"value":31},{"type":30,"value":2331}," Monitor a target's health and responsiveness over time.",{"type":17,"tag":35,"props":2333,"children":2335},{"id":2334},"monitoring-with-heartbeat",[2336],{"type":30,"value":2337},"Monitoring with Heartbeat",{"type":17,"tag":22,"props":2339,"children":2340},{},[2341,2342,2347],{"type":30,"value":203},{"type":17,"tag":47,"props":2343,"children":2345},{"className":2344},[],[2346],{"type":30,"value":783},{"type":30,"value":2348}," command is a powerful monitoring utility that continuously checks a target's \"vital signs\". It runs in the background, collecting data on latency, HTTP status codes, and content changes.",{"type":17,"tag":56,"props":2350,"children":2351},{"id":1966},[2352],{"type":30,"value":1969},{"type":17,"tag":450,"props":2354,"children":2355},{},[2356,2366,2376,2386],{"type":17,"tag":454,"props":2357,"children":2358},{},[2359,2364],{"type":17,"tag":26,"props":2360,"children":2361},{},[2362],{"type":30,"value":2363},"Establish a Baseline:",{"type":30,"value":2365}," Run a heartbeat before a scan to understand the target's normal performance.",{"type":17,"tag":454,"props":2367,"children":2368},{},[2369,2374],{"type":17,"tag":26,"props":2370,"children":2371},{},[2372],{"type":30,"value":2373},"Detect Impact:",{"type":30,"value":2375}," Observe the heartbeat while running an aggressive scan to see if you are degrading the server's performance or triggering a WAF.",{"type":17,"tag":454,"props":2377,"children":2378},{},[2379,2384],{"type":17,"tag":26,"props":2380,"children":2381},{},[2382],{"type":30,"value":2383},"Identify Dynamic Content:",{"type":30,"value":2385}," See if the page content hash changes over time.",{"type":17,"tag":454,"props":2387,"children":2388},{},[2389,2394],{"type":17,"tag":26,"props":2390,"children":2391},{},[2392],{"type":30,"value":2393},"Discover Load Balancing:",{"type":30,"value":2395}," See if the resolved IP address changes between requests.",{"type":17,"tag":56,"props":2397,"children":2399},{"id":2398},"core-commands",[2400],{"type":30,"value":2401},"Core Commands",{"type":17,"tag":569,"props":2403,"children":2405},{"id":2404},"starting-and-stopping",[2406],{"type":30,"value":2407},"Starting and Stopping",{"type":17,"tag":22,"props":2409,"children":2410},{},[2411,2413,2418],{"type":30,"value":2412},"The heartbeat runs as a background thread within ",{"type":17,"tag":47,"props":2414,"children":2416},{"className":2415},[],[2417],{"type":30,"value":52},{"type":30,"value":2419}," and automatically uses the currently loaded target.",{"type":17,"tag":90,"props":2421,"children":2424},{"className":2422,"code":2423,"language":95,"meta":8},[93],"heartbeat start\n# Starts monitoring the loaded target with a default random delay.\n\nheartbeat start delaymin 1 delaymax 5 timelimit 300\n# Overrides defaults: uses a 1-5s delay and stops after 5 minutes.\n\nheartbeat stop [target_name]\n# Stops the heartbeat for the specified or loaded target.\n",[2425],{"type":17,"tag":47,"props":2426,"children":2427},{"__ignoreMap":8},[2428],{"type":30,"value":2423},{"type":17,"tag":569,"props":2430,"children":2432},{"id":2431},"viewing-data",[2433],{"type":30,"value":2434},"Viewing Data",{"type":17,"tag":22,"props":2436,"children":2437},{},[2438,2439,2445],{"type":30,"value":203},{"type":17,"tag":47,"props":2440,"children":2442},{"className":2441},[],[2443],{"type":30,"value":2444},"show",{"type":30,"value":2446}," command provides a dashboard view. If the heartbeat is running, the dashboard will update live.",{"type":17,"tag":90,"props":2448,"children":2451},{"className":2449,"code":2450,"language":95,"meta":8},[93],"heartbeat show my-webapp\n",[2452],{"type":17,"tag":47,"props":2453,"children":2454},{"__ignoreMap":8},[2455],{"type":30,"value":2450},{"type":17,"tag":569,"props":2457,"children":2459},{"id":2458},"listing-heartbeats",[2460],{"type":30,"value":2461},"Listing Heartbeats",{"type":17,"tag":22,"props":2463,"children":2464},{},[2465],{"type":30,"value":2466},"You can see all running and previously saved heartbeats.",{"type":17,"tag":90,"props":2468,"children":2471},{"className":2469,"code":2470,"language":95,"meta":8},[93],"heartbeat list\n",[2472],{"type":17,"tag":47,"props":2473,"children":2474},{"__ignoreMap":8},[2475],{"type":30,"value":2470},{"title":8,"searchDepth":12,"depth":12,"links":2477},[2478,2479],{"id":1966,"depth":12,"text":1969},{"id":2398,"depth":12,"text":2401,"children":2480},[2481,2482,2483],{"id":2404,"depth":1182,"text":2407},{"id":2431,"depth":1182,"text":2434},{"id":2458,"depth":1182,"text":2461},"content:docs:heartbeat.md","docs/heartbeat.md","docs/heartbeat",{"_path":2488,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2489,"description":8,"slug":863,"category":2317,"order":2490,"body":2491,"_type":350,"_id":2622,"_source":352,"_file":2623,"_stem":2624,"_extension":355},"/docs/identify","Identify Hash",8,{"type":14,"children":2492,"toc":2615},[2493,2505,2517,2528,2534,2539,2557,2563,2586,2592,2601,2606],{"type":17,"tag":18,"props":2494,"children":2495},{},[2496],{"type":17,"tag":22,"props":2497,"children":2498},{},[2499,2503],{"type":17,"tag":26,"props":2500,"children":2501},{},[2502],{"type":30,"value":31},{"type":30,"value":2504}," A utility to quickly determine the possible type of a given cryptographic hash string.",{"type":17,"tag":35,"props":2506,"children":2508},{"id":2507},"the-identify-command",[2509,2510,2515],{"type":30,"value":203},{"type":17,"tag":47,"props":2511,"children":2513},{"className":2512},[],[2514],{"type":30,"value":863},{"type":30,"value":2516}," Command",{"type":17,"tag":22,"props":2518,"children":2519},{},[2520,2521,2526],{"type":30,"value":203},{"type":17,"tag":47,"props":2522,"children":2524},{"className":2523},[],[2525],{"type":30,"value":863},{"type":30,"value":2527}," command is a utility to quickly determine the possible type of a given cryptographic hash string. It analyzes the string's length and character set to match it against common hash formats.",{"type":17,"tag":56,"props":2529,"children":2531},{"id":2530},"supported-formats",[2532],{"type":30,"value":2533},"Supported Formats",{"type":17,"tag":22,"props":2535,"children":2536},{},[2537],{"type":30,"value":2538},"The command can identify a variety of common hash types, including:",{"type":17,"tag":450,"props":2540,"children":2541},{},[2542,2547,2552],{"type":17,"tag":454,"props":2543,"children":2544},{},[2545],{"type":30,"value":2546},"Standard hashes like MD5, NTLM, SHA1, SHA256, and SHA512.",{"type":17,"tag":454,"props":2548,"children":2549},{},[2550],{"type":30,"value":2551},"Common Linux password hashes like bcrypt, md5crypt, sha256crypt, and sha512crypt.",{"type":17,"tag":454,"props":2553,"children":2554},{},[2555],{"type":30,"value":2556},"Hashes from specific applications like MySQL5.",{"type":17,"tag":56,"props":2558,"children":2560},{"id":2559},"core-use-cases",[2561],{"type":30,"value":2562},"Core Use Cases",{"type":17,"tag":450,"props":2564,"children":2565},{},[2566,2576],{"type":17,"tag":454,"props":2567,"children":2568},{},[2569,2574],{"type":17,"tag":26,"props":2570,"children":2571},{},[2572],{"type":30,"value":2573},"Hash Identification:",{"type":30,"value":2575}," Quickly check if a found string is a known hash type like MD5, SHA1, or SHA256.",{"type":17,"tag":454,"props":2577,"children":2578},{},[2579,2584],{"type":17,"tag":26,"props":2580,"children":2581},{},[2582],{"type":30,"value":2583},"Placeholder Integration:",{"type":30,"value":2585}," Directly identify hashes stored as loot or in notes without copy-pasting.",{"type":17,"tag":569,"props":2587,"children":2589},{"id":2588},"syntax",[2590],{"type":30,"value":2591},"Syntax",{"type":17,"tag":90,"props":2593,"children":2596},{"className":2594,"code":2595,"language":95,"meta":8},[93],"identify \u003Chash_string_or_placeholder>\n",[2597],{"type":17,"tag":47,"props":2598,"children":2599},{"__ignoreMap":8},[2600],{"type":30,"value":2595},{"type":17,"tag":569,"props":2602,"children":2603},{"id":1733},[2604],{"type":30,"value":2605},"Examples:",{"type":17,"tag":90,"props":2607,"children":2610},{"className":2608,"code":2609,"language":95,"meta":8},[93],"# Identify a raw hash string\nidentify 5f4dcc3b5aa765d61d8327deb882cf99\n\n# Identify a hash that was previously saved as loot\nloot add hash 5f4dcc3b5aa765d61d8327deb882cf99\nidentify $loot.0.value\n",[2611],{"type":17,"tag":47,"props":2612,"children":2613},{"__ignoreMap":8},[2614],{"type":30,"value":2609},{"title":8,"searchDepth":12,"depth":12,"links":2616},[2617,2618],{"id":2530,"depth":12,"text":2533},{"id":2559,"depth":12,"text":2562,"children":2619},[2620,2621],{"id":2588,"depth":1182,"text":2591},{"id":1733,"depth":1182,"text":2605},"content:docs:identify.md","docs/identify.md","docs/identify",{"_path":2626,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2627,"description":8,"slug":760,"category":2628,"order":12,"body":2629,"_type":350,"_id":2807,"_source":352,"_file":2808,"_stem":2809,"_extension":355},"/docs/jobs","Background Jobs","Automation",{"type":14,"children":2630,"toc":2802},[2631,2650,2655,2667,2673,2700,2707,2716,2726,2732,2744,2791,2797],{"type":17,"tag":18,"props":2632,"children":2633},{},[2634],{"type":17,"tag":22,"props":2635,"children":2636},{},[2637,2641,2643,2648],{"type":17,"tag":26,"props":2638,"children":2639},{},[2640],{"type":30,"value":31},{"type":30,"value":2642}," Run long-running scans in the background and manage them with the ",{"type":17,"tag":47,"props":2644,"children":2646},{"className":2645},[],[2647],{"type":30,"value":760},{"type":30,"value":2649}," command.",{"type":17,"tag":35,"props":2651,"children":2653},{"id":2652},"background-jobs",[2654],{"type":30,"value":2627},{"type":17,"tag":22,"props":2656,"children":2657},{},[2658,2660,2665],{"type":30,"value":2659},"Long-running scans or commands can be executed in the background, allowing you to continue using the ",{"type":17,"tag":47,"props":2661,"children":2663},{"className":2662},[],[2664],{"type":30,"value":52},{"type":30,"value":2666}," shell without interruption.",{"type":17,"tag":56,"props":2668,"children":2670},{"id":2669},"starting-a-background-job",[2671],{"type":30,"value":2672},"Starting a Background Job",{"type":17,"tag":22,"props":2674,"children":2675},{},[2676,2678,2684,2686,2691,2693,2699],{"type":30,"value":2677},"To start a command as a background job, simply append ",{"type":17,"tag":47,"props":2679,"children":2681},{"className":2680},[],[2682],{"type":30,"value":2683},"bg",{"type":30,"value":2685}," to your ",{"type":17,"tag":47,"props":2687,"children":2689},{"className":2688},[],[2690],{"type":30,"value":653},{"type":30,"value":2692}," command instead of ",{"type":17,"tag":47,"props":2694,"children":2696},{"className":2695},[],[2697],{"type":30,"value":2698},"now",{"type":30,"value":132},{"type":17,"tag":22,"props":2701,"children":2702},{},[2703],{"type":17,"tag":26,"props":2704,"children":2705},{},[2706],{"type":30,"value":420},{"type":17,"tag":90,"props":2708,"children":2711},{"className":2709,"code":2710,"language":95,"meta":8},[93],"pwn full-scan bg\n",[2712],{"type":17,"tag":47,"props":2713,"children":2714},{"__ignoreMap":8},[2715],{"type":30,"value":2710},{"type":17,"tag":22,"props":2717,"children":2718},{},[2719,2724],{"type":17,"tag":47,"props":2720,"children":2722},{"className":2721},[],[2723],{"type":30,"value":52},{"type":30,"value":2725}," will immediately return the prompt to you, and the job will run in the background.",{"type":17,"tag":56,"props":2727,"children":2729},{"id":2728},"managing-jobs",[2730],{"type":30,"value":2731},"Managing Jobs",{"type":17,"tag":22,"props":2733,"children":2734},{},[2735,2737,2742],{"type":30,"value":2736},"You can manage your background jobs with the ",{"type":17,"tag":47,"props":2738,"children":2740},{"className":2739},[],[2741],{"type":30,"value":760},{"type":30,"value":2743}," command:",{"type":17,"tag":450,"props":2745,"children":2746},{},[2747,2758,2769,2780],{"type":17,"tag":454,"props":2748,"children":2749},{},[2750,2756],{"type":17,"tag":47,"props":2751,"children":2753},{"className":2752},[],[2754],{"type":30,"value":2755},"jobs list",{"type":30,"value":2757},": Shows a table of all running and finished jobs with their ID, status, and duration.",{"type":17,"tag":454,"props":2759,"children":2760},{},[2761,2767],{"type":17,"tag":47,"props":2762,"children":2764},{"className":2763},[],[2765],{"type":30,"value":2766},"jobs show \u003Cid>",{"type":30,"value":2768},": Displays the complete output of a specific job.",{"type":17,"tag":454,"props":2770,"children":2771},{},[2772,2778],{"type":17,"tag":47,"props":2773,"children":2775},{"className":2774},[],[2776],{"type":30,"value":2777},"jobs kill \u003Cid>",{"type":30,"value":2779},": Terminates a job that is currently running.",{"type":17,"tag":454,"props":2781,"children":2782},{},[2783,2789],{"type":17,"tag":47,"props":2784,"children":2786},{"className":2785},[],[2787],{"type":30,"value":2788},"jobs clear",{"type":30,"value":2790},": Removes all finished, failed, or killed jobs from the list to keep it clean.",{"type":17,"tag":56,"props":2792,"children":2794},{"id":2793},"completion-notifications",[2795],{"type":30,"value":2796},"Completion Notifications",{"type":17,"tag":22,"props":2798,"children":2799},{},[2800],{"type":30,"value":2801},"When a background job finishes, fails, or is killed, a summary panel will automatically be displayed in the console, informing you of the outcome. This ensures you never miss when a long task is complete.",{"title":8,"searchDepth":12,"depth":12,"links":2803},[2804,2805,2806],{"id":2669,"depth":12,"text":2672},{"id":2728,"depth":12,"text":2731},{"id":2793,"depth":12,"text":2796},"content:docs:jobs.md","docs/jobs.md","docs/jobs",{"_path":2811,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":2812,"description":2813,"slug":1023,"category":360,"order":1182,"body":2814,"_type":350,"_id":3117,"_source":352,"_file":3118,"_stem":3119,"_extension":355},"/docs/library","Library Manager","The library command is used to manage a personal collection of useful links and resources, like cheat sheets, online tools, or documentation pages. It acts as a simple bookmark manager within pwnity.",{"type":14,"children":2815,"toc":3112},[2816,2821,2832,2837,2884,2890,2903,2912,2924,2933,2945,2954,2967,2976,2988,2997,3003],{"type":17,"tag":35,"props":2817,"children":2819},{"id":2818},"library-manager",[2820],{"type":30,"value":2812},{"type":17,"tag":22,"props":2822,"children":2823},{},[2824,2825,2830],{"type":30,"value":203},{"type":17,"tag":47,"props":2826,"children":2828},{"className":2827},[],[2829],{"type":30,"value":1023},{"type":30,"value":2831}," command is used to manage a personal collection of useful links and resources, like cheat sheets, online tools, or documentation pages. It acts as a simple bookmark manager within pwnity.",{"type":17,"tag":56,"props":2833,"children":2834},{"id":1219},[2835],{"type":30,"value":2836},"Concepts",{"type":17,"tag":450,"props":2838,"children":2839},{},[2840,2857,2867],{"type":17,"tag":454,"props":2841,"children":2842},{},[2843,2848,2850,2856],{"type":17,"tag":26,"props":2844,"children":2845},{},[2846],{"type":30,"value":2847},"Library Entry",{"type":30,"value":2849},": A single item in your library, identified by a unique name (e.g., ",{"type":17,"tag":47,"props":2851,"children":2853},{"className":2852},[],[2854],{"type":30,"value":2855},"gtfobins",{"type":30,"value":1167},{"type":17,"tag":454,"props":2858,"children":2859},{},[2860,2865],{"type":17,"tag":26,"props":2861,"children":2862},{},[2863],{"type":30,"value":2864},"URL",{"type":30,"value":2866},": The web address for the resource.",{"type":17,"tag":454,"props":2868,"children":2869},{},[2870,2875,2877,2882],{"type":17,"tag":26,"props":2871,"children":2872},{},[2873],{"type":30,"value":2874},"Fields",{"type":30,"value":2876},": Each entry is a collection of key-value pairs. The ",{"type":17,"tag":47,"props":2878,"children":2880},{"className":2879},[],[2881],{"type":30,"value":2032},{"type":30,"value":2883}," field is special, but you can add any other fields you find useful.",{"type":17,"tag":56,"props":2885,"children":2887},{"id":2886},"common-workflow",[2888],{"type":30,"value":2889},"Common Workflow",{"type":17,"tag":2235,"props":2891,"children":2892},{},[2893],{"type":17,"tag":454,"props":2894,"children":2895},{},[2896,2901],{"type":17,"tag":26,"props":2897,"children":2898},{},[2899],{"type":30,"value":2900},"Add a new entry",{"type":30,"value":2902},":",{"type":17,"tag":90,"props":2904,"children":2907},{"className":2905,"code":2906,"language":95,"meta":8},[93],"library add gtfobins\n",[2908],{"type":17,"tag":47,"props":2909,"children":2910},{"__ignoreMap":8},[2911],{"type":30,"value":2906},{"type":17,"tag":2235,"props":2913,"children":2914},{"start":12},[2915],{"type":17,"tag":454,"props":2916,"children":2917},{},[2918,2923],{"type":17,"tag":26,"props":2919,"children":2920},{},[2921],{"type":30,"value":2922},"Add a URL and other details",{"type":30,"value":2902},{"type":17,"tag":90,"props":2925,"children":2928},{"className":2926,"code":2927,"language":95,"meta":8},[93],"library update gtfobins url https://gtfobins.github.io/\nlibrary update gtfobins comment \"Curated list of Unix binaries for living off the land.\"\n",[2929],{"type":17,"tag":47,"props":2930,"children":2931},{"__ignoreMap":8},[2932],{"type":30,"value":2927},{"type":17,"tag":2235,"props":2934,"children":2935},{"start":1182},[2936],{"type":17,"tag":454,"props":2937,"children":2938},{},[2939,2944],{"type":17,"tag":26,"props":2940,"children":2941},{},[2942],{"type":30,"value":2943},"List all entries",{"type":30,"value":2902},{"type":17,"tag":90,"props":2946,"children":2949},{"className":2947,"code":2948,"language":95,"meta":8},[93],"library list\n",[2950],{"type":17,"tag":47,"props":2951,"children":2952},{"__ignoreMap":8},[2953],{"type":30,"value":2948},{"type":17,"tag":2235,"props":2955,"children":2957},{"start":2956},4,[2958],{"type":17,"tag":454,"props":2959,"children":2960},{},[2961,2966],{"type":17,"tag":26,"props":2962,"children":2963},{},[2964],{"type":30,"value":2965},"View details of an entry",{"type":30,"value":2902},{"type":17,"tag":90,"props":2968,"children":2971},{"className":2969,"code":2970,"language":95,"meta":8},[93],"library show gtfobins\n",[2972],{"type":17,"tag":47,"props":2973,"children":2974},{"__ignoreMap":8},[2975],{"type":30,"value":2970},{"type":17,"tag":2235,"props":2977,"children":2978},{"start":1420},[2979],{"type":17,"tag":454,"props":2980,"children":2981},{},[2982,2987],{"type":17,"tag":26,"props":2983,"children":2984},{},[2985],{"type":30,"value":2986},"Open the URL in a browser",{"type":30,"value":2902},{"type":17,"tag":90,"props":2989,"children":2992},{"className":2990,"code":2991,"language":95,"meta":8},[93],"library open gtfobins\n",[2993],{"type":17,"tag":47,"props":2994,"children":2995},{"__ignoreMap":8},[2996],{"type":30,"value":2991},{"type":17,"tag":56,"props":2998,"children":3000},{"id":2999},"subcommands",[3001],{"type":30,"value":3002},"Subcommands",{"type":17,"tag":450,"props":3004,"children":3005},{},[3006,3017,3028,3039,3050,3061,3072,3083,3094],{"type":17,"tag":454,"props":3007,"children":3008},{},[3009,3015],{"type":17,"tag":47,"props":3010,"children":3012},{"className":3011},[],[3013],{"type":30,"value":3014},"add \u003Cname>",{"type":30,"value":3016},": Creates a new, empty library entry.",{"type":17,"tag":454,"props":3018,"children":3019},{},[3020,3026],{"type":17,"tag":47,"props":3021,"children":3023},{"className":3022},[],[3024],{"type":30,"value":3025},"list",{"type":30,"value":3027},": Lists the names of all saved library entries.",{"type":17,"tag":454,"props":3029,"children":3030},{},[3031,3037],{"type":17,"tag":47,"props":3032,"children":3034},{"className":3033},[],[3035],{"type":30,"value":3036},"show \u003Cname>",{"type":30,"value":3038},": Displays all details for a specific entry.",{"type":17,"tag":454,"props":3040,"children":3041},{},[3042,3048],{"type":17,"tag":47,"props":3043,"children":3045},{"className":3044},[],[3046],{"type":30,"value":3047},"update \u003Cname> \u003Cfield> \u003Cvalue>",{"type":30,"value":3049},": Adds or changes a field for an entry.",{"type":17,"tag":454,"props":3051,"children":3052},{},[3053,3059],{"type":17,"tag":47,"props":3054,"children":3056},{"className":3055},[],[3057],{"type":30,"value":3058},"open \u003Cname>",{"type":30,"value":3060},": Opens the entry's URL in your default web browser.",{"type":17,"tag":454,"props":3062,"children":3063},{},[3064,3070],{"type":17,"tag":47,"props":3065,"children":3067},{"className":3066},[],[3068],{"type":30,"value":3069},"rename \u003Cold_name> \u003Cnew_name>",{"type":30,"value":3071},": Renames an entry.",{"type":17,"tag":454,"props":3073,"children":3074},{},[3075,3081],{"type":17,"tag":47,"props":3076,"children":3078},{"className":3077},[],[3079],{"type":30,"value":3080},"delete \u003Cname> [field]",{"type":30,"value":3082},": Deletes a specific field or the entire entry.",{"type":17,"tag":454,"props":3084,"children":3085},{},[3086,3092],{"type":17,"tag":47,"props":3087,"children":3089},{"className":3088},[],[3090],{"type":30,"value":3091},"destroy \u003Cname>",{"type":30,"value":3093},": Permanently deletes an entry and its file.",{"type":17,"tag":454,"props":3095,"children":3096},{},[3097,3103,3105,3110],{"type":17,"tag":47,"props":3098,"children":3100},{"className":3099},[],[3101],{"type":30,"value":3102},"export \u003Cname>",{"type":30,"value":3104},": Generates the ",{"type":17,"tag":47,"props":3106,"children":3108},{"className":3107},[],[3109],{"type":30,"value":1023},{"type":30,"value":3111}," commands needed to recreate an entry.",{"title":8,"searchDepth":12,"depth":12,"links":3113},[3114,3115,3116],{"id":1219,"depth":12,"text":2836},{"id":2886,"depth":12,"text":2889},{"id":2999,"depth":12,"text":3002},"content:docs:library.md","docs/library.md","docs/library",{"_path":3121,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3122,"description":8,"slug":3123,"category":2317,"order":361,"body":3124,"_type":350,"_id":3368,"_source":352,"_file":3369,"_stem":3370,"_extension":355},"/docs/loot_and_notes","Notes & Loot","loot_and_notes",{"type":14,"children":3125,"toc":3358},[3126,3138,3144,3162,3182,3188,3193,3199,3235,3240,3249,3255,3298,3303,3339,3344,3353],{"type":17,"tag":18,"props":3127,"children":3128},{},[3129],{"type":17,"tag":22,"props":3130,"children":3131},{},[3132,3136],{"type":17,"tag":26,"props":3133,"children":3134},{},[3135],{"type":30,"value":31},{"type":30,"value":3137}," Document findings using notes for general observations and loot for structured data like credentials or flags.",{"type":17,"tag":35,"props":3139,"children":3141},{"id":3140},"documenting-findings-notes-loot",[3142],{"type":30,"value":3143},"Documenting Findings: Notes & Loot",{"type":17,"tag":22,"props":3145,"children":3146},{},[3147,3149,3154,3156,3161],{"type":30,"value":3148},"A crucial part of any engagement is documenting your findings. ",{"type":17,"tag":47,"props":3150,"children":3152},{"className":3151},[],[3153],{"type":30,"value":52},{"type":30,"value":3155}," provides two mechanisms for this, both of which are stored in the currently loaded ",{"type":17,"tag":47,"props":3157,"children":3159},{"className":3158},[],[3160],{"type":30,"value":840},{"type":30,"value":132},{"type":17,"tag":18,"props":3163,"children":3164},{},[3165],{"type":17,"tag":22,"props":3166,"children":3167},{},[3168,3173,3175,3180],{"type":17,"tag":542,"props":3169,"children":3170},{},[3171],{"type":30,"value":3172},"!IMPORTANT",{"type":30,"value":3174},"\nYou must create and load a ",{"type":17,"tag":47,"props":3176,"children":3178},{"className":3177},[],[3179],{"type":30,"value":840},{"type":30,"value":3181}," before you can add notes or loot.",{"type":17,"tag":56,"props":3183,"children":3185},{"id":3184},"notes-general-observations",[3186],{"type":30,"value":3187},"Notes: General Observations",{"type":17,"tag":22,"props":3189,"children":3190},{},[3191],{"type":30,"value":3192},"Notes are for general-purpose, timestamped observations. They are perfect for keeping a running log of your thoughts, actions, and discoveries.",{"type":17,"tag":569,"props":3194,"children":3196},{"id":3195},"commands",[3197],{"type":30,"value":3198},"Commands:",{"type":17,"tag":450,"props":3200,"children":3201},{},[3202,3213,3224],{"type":17,"tag":454,"props":3203,"children":3204},{},[3205,3211],{"type":17,"tag":47,"props":3206,"children":3208},{"className":3207},[],[3209],{"type":30,"value":3210},"note add \u003Ctext...>",{"type":30,"value":3212},": Adds a new note.",{"type":17,"tag":454,"props":3214,"children":3215},{},[3216,3222],{"type":17,"tag":47,"props":3217,"children":3219},{"className":3218},[],[3220],{"type":30,"value":3221},"note list",{"type":30,"value":3223},": Displays all notes for the current target.",{"type":17,"tag":454,"props":3225,"children":3226},{},[3227,3233],{"type":17,"tag":47,"props":3228,"children":3230},{"className":3229},[],[3231],{"type":30,"value":3232},"note delete \u003Cindex>",{"type":30,"value":3234},": Deletes a note by its number from the list.",{"type":17,"tag":569,"props":3236,"children":3238},{"id":3237},"example",[3239],{"type":30,"value":420},{"type":17,"tag":90,"props":3241,"children":3244},{"className":3242,"code":3243,"language":95,"meta":8},[93],"report load my-project-report\nnote add \"Found a potential XSS vulnerability on the login page.\"\nnote add \"The server seems to be running an outdated version of Apache.\"\n",[3245],{"type":17,"tag":47,"props":3246,"children":3247},{"__ignoreMap":8},[3248],{"type":30,"value":3243},{"type":17,"tag":56,"props":3250,"children":3252},{"id":3251},"loot-structured-findings",[3253],{"type":30,"value":3254},"Loot: Structured Findings",{"type":17,"tag":22,"props":3256,"children":3257},{},[3258,3260,3266,3268,3274,3276,3281,3283,3289,3291,3296],{"type":30,"value":3259},"Loot is for structured, high-value findings like credentials, API keys, or flags. Each loot item has a ",{"type":17,"tag":47,"props":3261,"children":3263},{"className":3262},[],[3264],{"type":30,"value":3265},"type",{"type":30,"value":3267}," and a ",{"type":17,"tag":47,"props":3269,"children":3271},{"className":3270},[],[3272],{"type":30,"value":3273},"value",{"type":30,"value":3275},". The available types are defined as a comma-separated list in the ",{"type":17,"tag":47,"props":3277,"children":3279},{"className":3278},[],[3280],{"type":30,"value":1498},{"type":30,"value":3282}," key under the ",{"type":17,"tag":47,"props":3284,"children":3286},{"className":3285},[],[3287],{"type":30,"value":3288},"[GLOBAL]",{"type":30,"value":3290}," section of your ",{"type":17,"tag":47,"props":3292,"children":3294},{"className":3293},[],[3295],{"type":30,"value":492},{"type":30,"value":3297}," file. This allows for consistent and easy data entry with autocompletion.",{"type":17,"tag":569,"props":3299,"children":3301},{"id":3300},"commands-1",[3302],{"type":30,"value":3198},{"type":17,"tag":450,"props":3304,"children":3305},{},[3306,3317,3328],{"type":17,"tag":454,"props":3307,"children":3308},{},[3309,3315],{"type":17,"tag":47,"props":3310,"children":3312},{"className":3311},[],[3313],{"type":30,"value":3314},"loot add \u003Ctype> \u003Cvalue...>",{"type":30,"value":3316},": Adds a new loot item using one of the predefined types.",{"type":17,"tag":454,"props":3318,"children":3319},{},[3320,3326],{"type":17,"tag":47,"props":3321,"children":3323},{"className":3322},[],[3324],{"type":30,"value":3325},"loot list",{"type":30,"value":3327},": Displays all loot for the current target.",{"type":17,"tag":454,"props":3329,"children":3330},{},[3331,3337],{"type":17,"tag":47,"props":3332,"children":3334},{"className":3333},[],[3335],{"type":30,"value":3336},"loot delete \u003Cindex>",{"type":30,"value":3338},": Deletes a loot item by its number from the list.",{"type":17,"tag":569,"props":3340,"children":3342},{"id":3341},"example-1",[3343],{"type":30,"value":420},{"type":17,"tag":90,"props":3345,"children":3348},{"className":3346,"code":3347,"language":95,"meta":8},[93],"report load my-project-report\nloot add credential admin:password123\nloot add key A_VERY_SECRET_API_KEY_XYZ\nloot add flag THM{y0u_f0und_m3}\n",[3349],{"type":17,"tag":47,"props":3350,"children":3351},{"__ignoreMap":8},[3352],{"type":30,"value":3347},{"type":17,"tag":22,"props":3354,"children":3355},{},[3356],{"type":30,"value":3357},"By storing notes and loot in a report, all your findings for an engagement are kept organized in one place.",{"title":8,"searchDepth":12,"depth":12,"links":3359},[3360,3364],{"id":3184,"depth":12,"text":3187,"children":3361},[3362,3363],{"id":3195,"depth":1182,"text":3198},{"id":3237,"depth":1182,"text":420},{"id":3251,"depth":12,"text":3254,"children":3365},[3366,3367],{"id":3300,"depth":1182,"text":3198},{"id":3341,"depth":1182,"text":420},"content:docs:loot_and_notes.md","docs/loot_and_notes.md","docs/loot_and_notes",{"_path":3372,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3373,"description":8,"slug":737,"category":1220,"order":12,"body":3374,"_type":350,"_id":3532,"_source":352,"_file":3533,"_stem":3534,"_extension":355},"/docs/overview","Overview",{"type":14,"children":3375,"toc":3528},[3376,3395,3401,3412,3421,3427,3432,3495,3501,3514,3523],{"type":17,"tag":18,"props":3377,"children":3378},{},[3379],{"type":17,"tag":22,"props":3380,"children":3381},{},[3382,3386,3388,3393],{"type":17,"tag":26,"props":3383,"children":3384},{},[3385],{"type":30,"value":31},{"type":30,"value":3387}," Use the ",{"type":17,"tag":47,"props":3389,"children":3391},{"className":3390},[],[3392],{"type":30,"value":737},{"type":30,"value":3394}," command to display a comprehensive dashboard of your current session's state.",{"type":17,"tag":35,"props":3396,"children":3398},{"id":3397},"the-overview-command",[3399],{"type":30,"value":3400},"The Overview Command",{"type":17,"tag":22,"props":3402,"children":3403},{},[3404,3405,3410],{"type":30,"value":203},{"type":17,"tag":47,"props":3406,"children":3408},{"className":3407},[],[3409],{"type":30,"value":737},{"type":30,"value":3411}," command provides a comprehensive dashboard of your current session's state. It is one of the most useful commands for quickly understanding your current context.",{"type":17,"tag":90,"props":3413,"children":3416},{"className":3414,"code":3415,"language":95,"meta":8},[93],"┌──(pwnity ㉿ (default))\n└─$ overview\n",[3417],{"type":17,"tag":47,"props":3418,"children":3419},{"__ignoreMap":8},[3420],{"type":30,"value":3415},{"type":17,"tag":56,"props":3422,"children":3424},{"id":3423},"what-it-shows",[3425],{"type":30,"value":3426},"What it Shows",{"type":17,"tag":22,"props":3428,"children":3429},{},[3430],{"type":30,"value":3431},"The overview displays several panels:",{"type":17,"tag":450,"props":3433,"children":3434},{},[3435,3445,3455,3465,3475,3485],{"type":17,"tag":454,"props":3436,"children":3437},{},[3438,3443],{"type":17,"tag":26,"props":3439,"children":3440},{},[3441],{"type":30,"value":3442},"Target:",{"type":30,"value":3444}," Shows all data for the loaded target, with placeholders resolved to their current values.",{"type":17,"tag":454,"props":3446,"children":3447},{},[3448,3453],{"type":17,"tag":26,"props":3449,"children":3450},{},[3451],{"type":30,"value":3452},"Report:",{"type":30,"value":3454}," If a report is loaded, this shows its contents, including notes, loot, and other findings.",{"type":17,"tag":454,"props":3456,"children":3457},{},[3458,3463],{"type":17,"tag":26,"props":3459,"children":3460},{},[3461],{"type":30,"value":3462},"Tool:",{"type":30,"value":3464}," Displays the configuration of the loaded tool, with placeholders resolved.",{"type":17,"tag":454,"props":3466,"children":3467},{},[3468,3473],{"type":17,"tag":26,"props":3469,"children":3470},{},[3471],{"type":30,"value":3472},"Wordlist:",{"type":30,"value":3474}," Shows the path of the loaded wordlist.",{"type":17,"tag":454,"props":3476,"children":3477},{},[3478,3483],{"type":17,"tag":26,"props":3479,"children":3480},{},[3481],{"type":30,"value":3482},"Profile:",{"type":30,"value":3484}," Lists your global profile settings.",{"type":17,"tag":454,"props":3486,"children":3487},{},[3488,3493],{"type":17,"tag":26,"props":3489,"children":3490},{},[3491],{"type":30,"value":3492},"Proxy:",{"type":30,"value":3494}," Shows the current status and configuration of the proxy.",{"type":17,"tag":56,"props":3496,"children":3498},{"id":3497},"compact-view",[3499],{"type":30,"value":3500},"Compact View",{"type":17,"tag":22,"props":3502,"children":3503},{},[3504,3506,3512],{"type":30,"value":3505},"For a less detailed, more compact summary, you can use the ",{"type":17,"tag":47,"props":3507,"children":3509},{"className":3508},[],[3510],{"type":30,"value":3511},"--short",{"type":30,"value":3513}," flag.",{"type":17,"tag":90,"props":3515,"children":3518},{"className":3516,"code":3517,"language":95,"meta":8},[93],"┌──(pwnity ㉿ (default))\n└─$ overview --short\n",[3519],{"type":17,"tag":47,"props":3520,"children":3521},{"__ignoreMap":8},[3522],{"type":30,"value":3517},{"type":17,"tag":22,"props":3524,"children":3525},{},[3526],{"type":30,"value":3527},"This is useful for getting a quick glance at what's loaded without filling the screen.",{"title":8,"searchDepth":12,"depth":12,"links":3529},[3530,3531],{"id":3423,"depth":12,"text":3426},{"id":3497,"depth":12,"text":3500},"content:docs:overview.md","docs/overview.md","docs/overview",{"_path":3536,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3537,"description":8,"slug":932,"category":2317,"order":12,"body":3538,"_type":350,"_id":3985,"_source":352,"_file":3986,"_stem":3987,"_extension":355},"/docs/parser","Using Parsers",{"type":14,"children":3539,"toc":3966},[3540,3552,3557,3574,3578,3651,3655,3661,3666,3675,3681,3694,3703,3728,3734,3739,3745,3750,3759,3765,3769,3827,3833,3845,3851,3863,3872,3878,3890,3899,3905,3910,3919,3925,3930,3939,3945,3957],{"type":17,"tag":18,"props":3541,"children":3542},{},[3543],{"type":17,"tag":22,"props":3544,"children":3545},{},[3546,3550],{"type":17,"tag":26,"props":3547,"children":3548},{},[3549],{"type":30,"value":31},{"type":30,"value":3551}," Manage and apply regex-based parsers to extract structured information from tool output.",{"type":17,"tag":35,"props":3553,"children":3555},{"id":3554},"using-parsers",[3556],{"type":30,"value":3537},{"type":17,"tag":22,"props":3558,"children":3559},{},[3560,3561,3566,3568,3573],{"type":30,"value":203},{"type":17,"tag":47,"props":3562,"children":3564},{"className":3563},[],[3565],{"type":30,"value":932},{"type":30,"value":3567}," command manages and applies regex-based parsers to extract structured information (called \"findings\") from unstructured text, such as the output of a tool. These findings are then saved to the currently loaded ",{"type":17,"tag":47,"props":3569,"children":3571},{"className":3570},[],[3572],{"type":30,"value":840},{"type":30,"value":132},{"type":17,"tag":56,"props":3575,"children":3576},{"id":1237},[3577],{"type":30,"value":1218},{"type":17,"tag":450,"props":3579,"children":3580},{},[3581,3598,3615,3641],{"type":17,"tag":454,"props":3582,"children":3583},{},[3584,3589,3591,3597],{"type":17,"tag":26,"props":3585,"children":3586},{},[3587],{"type":30,"value":3588},"Parser:",{"type":30,"value":3590}," A collection of rules stored in a JSON file (e.g., ",{"type":17,"tag":47,"props":3592,"children":3594},{"className":3593},[],[3595],{"type":30,"value":3596},"data/parsers/common.json",{"type":30,"value":1167},{"type":17,"tag":454,"props":3599,"children":3600},{},[3601,3606,3608,3614],{"type":17,"tag":26,"props":3602,"children":3603},{},[3604],{"type":30,"value":3605},"Rule:",{"type":30,"value":3607}," A single regex pattern within a parser, identified by a name (e.g., ",{"type":17,"tag":47,"props":3609,"children":3611},{"className":3610},[],[3612],{"type":30,"value":3613},"ipv4_address",{"type":30,"value":1167},{"type":17,"tag":454,"props":3616,"children":3617},{},[3618,3623,3625,3631,3633,3639],{"type":17,"tag":26,"props":3619,"children":3620},{},[3621],{"type":30,"value":3622},"Logbook Entry:",{"type":30,"value":3624}," The source of the text to be parsed. Every command run via ",{"type":17,"tag":47,"props":3626,"children":3628},{"className":3627},[],[3629],{"type":30,"value":3630},"pwn ... now",{"type":30,"value":3632}," or ",{"type":17,"tag":47,"props":3634,"children":3636},{"className":3635},[],[3637],{"type":30,"value":3638},"pwn ... bg",{"type":30,"value":3640}," creates a logbook entry with a unique ID.",{"type":17,"tag":454,"props":3642,"children":3643},{},[3644,3649],{"type":17,"tag":26,"props":3645,"children":3646},{},[3647],{"type":30,"value":3648},"Finding:",{"type":30,"value":3650}," A piece of information (a match) extracted by a rule, which is then stored in the loaded report.",{"type":17,"tag":56,"props":3652,"children":3653},{"id":2886},[3654],{"type":30,"value":2889},{"type":17,"tag":569,"props":3656,"children":3658},{"id":3657},"_1-run-a-tool-and-generate-output",[3659],{"type":30,"value":3660},"1. Run a tool and generate output",{"type":17,"tag":22,"props":3662,"children":3663},{},[3664],{"type":30,"value":3665},"The output of every command is automatically saved to the logbook.",{"type":17,"tag":90,"props":3667,"children":3670},{"className":3668,"code":3669,"language":95,"meta":8},[93],"pwn web-scan now\n# Let's assume this produced a Logbook Entry with ID 3a8f...\n",[3671],{"type":17,"tag":47,"props":3672,"children":3673},{"__ignoreMap":8},[3674],{"type":30,"value":3669},{"type":17,"tag":569,"props":3676,"children":3678},{"id":3677},"_2-apply-a-parser-to-the-output",[3679],{"type":30,"value":3680},"2. Apply a parser to the output",{"type":17,"tag":22,"props":3682,"children":3683},{},[3684,3686,3692],{"type":30,"value":3685},"Use ",{"type":17,"tag":47,"props":3687,"children":3689},{"className":3688},[],[3690],{"type":30,"value":3691},"parser apply",{"type":30,"value":3693}," with the name of the parser and the ID of the logbook entry.",{"type":17,"tag":90,"props":3695,"children":3698},{"className":3696,"code":3697,"language":95,"meta":8},[93],"report load my-project-report\nparser apply common 3a8f\n",[3699],{"type":17,"tag":47,"props":3700,"children":3701},{"__ignoreMap":8},[3702],{"type":30,"value":3697},{"type":17,"tag":22,"props":3704,"children":3705},{},[3706,3711,3713,3719,3721,3727],{"type":17,"tag":47,"props":3707,"children":3709},{"className":3708},[],[3710],{"type":30,"value":52},{"type":30,"value":3712}," will then run all regex rules from the ",{"type":17,"tag":47,"props":3714,"children":3716},{"className":3715},[],[3717],{"type":30,"value":3718},"common",{"type":30,"value":3720}," parser against the output of log entry ",{"type":17,"tag":47,"props":3722,"children":3724},{"className":3723},[],[3725],{"type":30,"value":3726},"3a8f...",{"type":30,"value":132},{"type":17,"tag":569,"props":3729,"children":3731},{"id":3730},"_3-review-and-save-findings",[3732],{"type":30,"value":3733},"3. Review and Save Findings",{"type":17,"tag":22,"props":3735,"children":3736},{},[3737],{"type":30,"value":3738},"If matches are found, you will be presented with an interactive checklist allowing you to select which findings to save to the currently loaded report.",{"type":17,"tag":569,"props":3740,"children":3742},{"id":3741},"_4-view-the-report",[3743],{"type":30,"value":3744},"4. View the Report",{"type":17,"tag":22,"props":3746,"children":3747},{},[3748],{"type":30,"value":3749},"The new findings will now appear in the \"Parser Findings\" section of your report.",{"type":17,"tag":90,"props":3751,"children":3754},{"className":3752,"code":3753,"language":95,"meta":8},[93],"report show\n",[3755],{"type":17,"tag":47,"props":3756,"children":3757},{"__ignoreMap":8},[3758],{"type":30,"value":3753},{"type":17,"tag":56,"props":3760,"children":3762},{"id":3761},"managing-parsers",[3763],{"type":30,"value":3764},"Managing Parsers",{"type":17,"tag":569,"props":3766,"children":3767},{"id":3195},[3768],{"type":30,"value":3198},{"type":17,"tag":450,"props":3770,"children":3771},{},[3772,3783,3794,3805,3816],{"type":17,"tag":454,"props":3773,"children":3774},{},[3775,3781],{"type":17,"tag":47,"props":3776,"children":3778},{"className":3777},[],[3779],{"type":30,"value":3780},"parser list",{"type":30,"value":3782},": Shows all available parsers.",{"type":17,"tag":454,"props":3784,"children":3785},{},[3786,3792],{"type":17,"tag":47,"props":3787,"children":3789},{"className":3788},[],[3790],{"type":30,"value":3791},"parser show \u003Cname>",{"type":30,"value":3793},": Displays the rules for a specific parser.",{"type":17,"tag":454,"props":3795,"children":3796},{},[3797,3803],{"type":17,"tag":47,"props":3798,"children":3800},{"className":3799},[],[3801],{"type":30,"value":3802},"parser add \u003Cname>",{"type":30,"value":3804},": Creates a new, empty parser file.",{"type":17,"tag":454,"props":3806,"children":3807},{},[3808,3814],{"type":17,"tag":47,"props":3809,"children":3811},{"className":3810},[],[3812],{"type":30,"value":3813},"parser update \u003Cname> ...",{"type":30,"value":3815},": Adds or modifies rules and their regex patterns.",{"type":17,"tag":454,"props":3817,"children":3818},{},[3819,3825],{"type":17,"tag":47,"props":3820,"children":3822},{"className":3821},[],[3823],{"type":30,"value":3824},"parser destroy \u003Cname>",{"type":30,"value":3826},": Deletes a parser file.",{"type":17,"tag":56,"props":3828,"children":3830},{"id":3829},"defining-a-custom-parser",[3831],{"type":30,"value":3832},"Defining a Custom Parser",{"type":17,"tag":22,"props":3834,"children":3835},{},[3836,3838,3843],{"type":30,"value":3837},"While ",{"type":17,"tag":47,"props":3839,"children":3841},{"className":3840},[],[3842],{"type":30,"value":52},{"type":30,"value":3844}," comes with some common parsers, the real power lies in creating your own. Here’s how to create a simple parser to extract IP addresses.",{"type":17,"tag":569,"props":3846,"children":3848},{"id":3847},"_1-create-the-parser",[3849],{"type":30,"value":3850},"1. Create the Parser",{"type":17,"tag":22,"props":3852,"children":3853},{},[3854,3856,3862],{"type":30,"value":3855},"This creates the JSON file in ",{"type":17,"tag":47,"props":3857,"children":3859},{"className":3858},[],[3860],{"type":30,"value":3861},"data/parsers/",{"type":30,"value":132},{"type":17,"tag":90,"props":3864,"children":3867},{"className":3865,"code":3866,"language":95,"meta":8},[93],"parser add custom-ips\n",[3868],{"type":17,"tag":47,"props":3869,"children":3870},{"__ignoreMap":8},[3871],{"type":30,"value":3866},{"type":17,"tag":569,"props":3873,"children":3875},{"id":3874},"_2-add-a-rule",[3876],{"type":30,"value":3877},"2. Add a Rule",{"type":17,"tag":22,"props":3879,"children":3880},{},[3881,3883,3889],{"type":30,"value":3882},"A parser is a collection of rules. Let's add one called ",{"type":17,"tag":47,"props":3884,"children":3886},{"className":3885},[],[3887],{"type":30,"value":3888},"ipv4",{"type":30,"value":132},{"type":17,"tag":90,"props":3891,"children":3894},{"className":3892,"code":3893,"language":95,"meta":8},[93],"parser update custom-ips add-rule ipv4\n",[3895],{"type":17,"tag":47,"props":3896,"children":3897},{"__ignoreMap":8},[3898],{"type":30,"value":3893},{"type":17,"tag":569,"props":3900,"children":3902},{"id":3901},"_3-define-the-regex-pattern",[3903],{"type":30,"value":3904},"3. Define the Regex Pattern",{"type":17,"tag":22,"props":3906,"children":3907},{},[3908],{"type":30,"value":3909},"Now, assign the regular expression that will find the data.",{"type":17,"tag":90,"props":3911,"children":3914},{"className":3912,"code":3913,"language":95,"meta":8},[93],"parser update custom-ips ipv4 regex \"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\b\"\n",[3915],{"type":17,"tag":47,"props":3916,"children":3917},{"__ignoreMap":8},[3918],{"type":30,"value":3913},{"type":17,"tag":569,"props":3920,"children":3922},{"id":3921},"_4-optional-add-exclusion-patterns",[3923],{"type":30,"value":3924},"4. (Optional) Add Exclusion Patterns",{"type":17,"tag":22,"props":3926,"children":3927},{},[3928],{"type":30,"value":3929},"You can add patterns to exclude certain matches. For example, to ignore the loopback address.",{"type":17,"tag":90,"props":3931,"children":3934},{"className":3932,"code":3933,"language":95,"meta":8},[93],"parser update custom-ips ipv4 exclude \"^127\\.0\\.0\\.1$\"\n",[3935],{"type":17,"tag":47,"props":3936,"children":3937},{"__ignoreMap":8},[3938],{"type":30,"value":3933},{"type":17,"tag":569,"props":3940,"children":3942},{"id":3941},"_5-view-your-parser",[3943],{"type":30,"value":3944},"5. View Your Parser",{"type":17,"tag":22,"props":3946,"children":3947},{},[3948,3949,3955],{"type":30,"value":3685},{"type":17,"tag":47,"props":3950,"children":3952},{"className":3951},[],[3953],{"type":30,"value":3954},"parser show",{"type":30,"value":3956}," to see the complete result.",{"type":17,"tag":90,"props":3958,"children":3961},{"className":3959,"code":3960,"language":95,"meta":8},[93],"parser show custom-ips\n",[3962],{"type":17,"tag":47,"props":3963,"children":3964},{"__ignoreMap":8},[3965],{"type":30,"value":3960},{"title":8,"searchDepth":12,"depth":12,"links":3967},[3968,3969,3975,3978],{"id":1237,"depth":12,"text":1218},{"id":2886,"depth":12,"text":2889,"children":3970},[3971,3972,3973,3974],{"id":3657,"depth":1182,"text":3660},{"id":3677,"depth":1182,"text":3680},{"id":3730,"depth":1182,"text":3733},{"id":3741,"depth":1182,"text":3744},{"id":3761,"depth":12,"text":3764,"children":3976},[3977],{"id":3195,"depth":1182,"text":3198},{"id":3829,"depth":12,"text":3832,"children":3979},[3980,3981,3982,3983,3984],{"id":3847,"depth":1182,"text":3850},{"id":3874,"depth":1182,"text":3877},{"id":3901,"depth":1182,"text":3904},{"id":3921,"depth":1182,"text":3924},{"id":3941,"depth":1182,"text":3944},"content:docs:parser.md","docs/parser.md","docs/parser",{"_path":3989,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":3990,"description":8,"slug":978,"category":2317,"order":1182,"body":3991,"_type":350,"_id":4208,"_source":352,"_file":4209,"_stem":4210,"_extension":355},"/docs/placeholders","Placeholder System",{"type":14,"children":3992,"toc":4202},[3993,4005,4011,4023,4027,4036,4042,4047,4100,4106,4111,4128,4175,4181,4193],{"type":17,"tag":18,"props":3994,"children":3995},{},[3996],{"type":17,"tag":22,"props":3997,"children":3998},{},[3999,4003],{"type":17,"tag":26,"props":4000,"children":4001},{},[4002],{"type":30,"value":31},{"type":30,"value":4004}," Define command templates that are dynamically filled with data from your current session.",{"type":17,"tag":35,"props":4006,"children":4008},{"id":4007},"the-placeholder-system",[4009],{"type":30,"value":4010},"The Placeholder System",{"type":17,"tag":22,"props":4012,"children":4013},{},[4014,4016,4021],{"type":30,"value":4015},"Placeholders are the core of ",{"type":17,"tag":47,"props":4017,"children":4019},{"className":4018},[],[4020],{"type":30,"value":52},{"type":30,"value":4022},"'s flexibility. They allow you to define command templates that are dynamically filled with data from your current session at runtime.",{"type":17,"tag":569,"props":4024,"children":4025},{"id":2588},[4026],{"type":30,"value":2591},{"type":17,"tag":22,"props":4028,"children":4029},{},[4030],{"type":17,"tag":47,"props":4031,"children":4033},{"className":4032},[],[4034],{"type":30,"value":4035},"$entity.path.to.value",{"type":17,"tag":56,"props":4037,"children":4039},{"id":4038},"entities",[4040],{"type":30,"value":4041},"Entities",{"type":17,"tag":22,"props":4043,"children":4044},{},[4045],{"type":30,"value":4046},"The available entities are:",{"type":17,"tag":450,"props":4048,"children":4049},{},[4050,4060,4070,4080,4090],{"type":17,"tag":454,"props":4051,"children":4052},{},[4053,4058],{"type":17,"tag":47,"props":4054,"children":4056},{"className":4055},[],[4057],{"type":30,"value":571},{"type":30,"value":4059},": The currently loaded target.",{"type":17,"tag":454,"props":4061,"children":4062},{},[4063,4068],{"type":17,"tag":47,"props":4064,"children":4066},{"className":4065},[],[4067],{"type":30,"value":594},{"type":30,"value":4069},": The currently loaded tool.",{"type":17,"tag":454,"props":4071,"children":4072},{},[4073,4078],{"type":17,"tag":47,"props":4074,"children":4076},{"className":4075},[],[4077],{"type":30,"value":123},{"type":30,"value":4079},": The currently loaded wordlist.",{"type":17,"tag":454,"props":4081,"children":4082},{},[4083,4088],{"type":17,"tag":47,"props":4084,"children":4086},{"className":4085},[],[4087],{"type":30,"value":209},{"type":30,"value":4089},": Global key-value pairs you define.",{"type":17,"tag":454,"props":4091,"children":4092},{},[4093,4098],{"type":17,"tag":47,"props":4094,"children":4096},{"className":4095},[],[4097],{"type":30,"value":1102},{"type":30,"value":4099},": The current effective proxy configuration.",{"type":17,"tag":56,"props":4101,"children":4103},{"id":4102},"path-navigation",[4104],{"type":30,"value":4105},"Path Navigation",{"type":17,"tag":22,"props":4107,"children":4108},{},[4109],{"type":30,"value":4110},"You can access nested data using dot notation.",{"type":17,"tag":22,"props":4112,"children":4113},{},[4114,4118,4120,4126],{"type":17,"tag":26,"props":4115,"children":4116},{},[4117],{"type":30,"value":420},{"type":30,"value":4119},"\nIf a target has been updated with ",{"type":17,"tag":47,"props":4121,"children":4123},{"className":4122},[],[4124],{"type":30,"value":4125},"target update my-server url \"https://api.example.com/v1?user=test\"",{"type":30,"value":4127},", you can access:",{"type":17,"tag":450,"props":4129,"children":4130},{},[4131,4142,4159],{"type":17,"tag":454,"props":4132,"children":4133},{},[4134,4140],{"type":17,"tag":47,"props":4135,"children":4137},{"className":4136},[],[4138],{"type":30,"value":4139},"$target.ip",{"type":30,"value":4141}," → (the resolved IP of api.example.com)",{"type":17,"tag":454,"props":4143,"children":4144},{},[4145,4151,4153],{"type":17,"tag":47,"props":4146,"children":4148},{"className":4147},[],[4149],{"type":30,"value":4150},"$target.port",{"type":30,"value":4152}," → ",{"type":17,"tag":47,"props":4154,"children":4156},{"className":4155},[],[4157],{"type":30,"value":4158},"443",{"type":17,"tag":454,"props":4160,"children":4161},{},[4162,4168,4169],{"type":17,"tag":47,"props":4163,"children":4165},{"className":4164},[],[4166],{"type":30,"value":4167},"$target.query_values.user.0",{"type":30,"value":4152},{"type":17,"tag":47,"props":4170,"children":4172},{"className":4171},[],[4173],{"type":30,"value":4174},"test",{"type":17,"tag":56,"props":4176,"children":4178},{"id":4177},"inspecting-placeholders",[4179],{"type":30,"value":4180},"Inspecting Placeholders",{"type":17,"tag":22,"props":4182,"children":4183},{},[4184,4186,4191],{"type":30,"value":4185},"Use the ",{"type":17,"tag":47,"props":4187,"children":4189},{"className":4188},[],[4190],{"type":30,"value":978},{"type":30,"value":4192}," command to see all available placeholders and their current resolved values for the loaded entities.",{"type":17,"tag":90,"props":4194,"children":4197},{"className":4195,"code":4196,"language":95,"meta":8},[93],"placeholders target\nplaceholders all\n",[4198],{"type":17,"tag":47,"props":4199,"children":4200},{"__ignoreMap":8},[4201],{"type":30,"value":4196},{"title":8,"searchDepth":12,"depth":12,"links":4203},[4204,4205,4206,4207],{"id":2588,"depth":1182,"text":2591},{"id":4038,"depth":12,"text":4041},{"id":4102,"depth":12,"text":4105},{"id":4177,"depth":12,"text":4180},"content:docs:placeholders.md","docs/placeholders.md","docs/placeholders",{"_path":4212,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4213,"description":8,"slug":328,"category":360,"order":2956,"body":4214,"_type":350,"_id":4349,"_source":352,"_file":4350,"_stem":4351,"_extension":355},"/docs/print","Print & Debug",{"type":14,"children":4215,"toc":4342},[4216,4228,4239,4250,4254,4287,4291,4302,4308,4313,4322,4328,4333],{"type":17,"tag":18,"props":4217,"children":4218},{},[4219],{"type":17,"tag":22,"props":4220,"children":4221},{},[4222,4226],{"type":17,"tag":26,"props":4223,"children":4224},{},[4225],{"type":30,"value":31},{"type":30,"value":4227}," A utility for testing and debugging placeholders and functions.",{"type":17,"tag":35,"props":4229,"children":4231},{"id":4230},"the-print-command",[4232,4233,4238],{"type":30,"value":203},{"type":17,"tag":47,"props":4234,"children":4236},{"className":4235},[],[4237],{"type":30,"value":328},{"type":30,"value":2516},{"type":17,"tag":22,"props":4240,"children":4241},{},[4242,4243,4248],{"type":30,"value":203},{"type":17,"tag":47,"props":4244,"children":4246},{"className":4245},[],[4247],{"type":30,"value":328},{"type":30,"value":4249}," command is a simple yet powerful utility for testing and debugging placeholders and functions. It takes a string, resolves any placeholders or functions within it, and prints the final result to the console.",{"type":17,"tag":56,"props":4251,"children":4252},{"id":2559},[4253],{"type":30,"value":2562},{"type":17,"tag":450,"props":4255,"children":4256},{},[4257,4267,4277],{"type":17,"tag":454,"props":4258,"children":4259},{},[4260,4265],{"type":17,"tag":26,"props":4261,"children":4262},{},[4263],{"type":30,"value":4264},"Testing Placeholders:",{"type":30,"value":4266}," Quickly check the value of a placeholder before using it in a complex tool command.",{"type":17,"tag":454,"props":4268,"children":4269},{},[4270,4275],{"type":17,"tag":26,"props":4271,"children":4272},{},[4273],{"type":30,"value":4274},"Transforming Data:",{"type":30,"value":4276}," Use placeholder functions to encode, decode, or hash data on the fly.",{"type":17,"tag":454,"props":4278,"children":4279},{},[4280,4285],{"type":17,"tag":26,"props":4281,"children":4282},{},[4283],{"type":30,"value":4284},"Debugging:",{"type":30,"value":4286}," Verify that complex, nested placeholders are being resolved as you expect.",{"type":17,"tag":56,"props":4288,"children":4289},{"id":2588},[4290],{"type":30,"value":2591},{"type":17,"tag":22,"props":4292,"children":4293},{},[4294,4295,4300],{"type":30,"value":203},{"type":17,"tag":47,"props":4296,"children":4298},{"className":4297},[],[4299],{"type":30,"value":328},{"type":30,"value":4301}," command supports two main syntaxes:",{"type":17,"tag":569,"props":4303,"children":4305},{"id":4304},"_1-simple-function-syntax",[4306],{"type":30,"value":4307},"1. Simple Function Syntax",{"type":17,"tag":22,"props":4309,"children":4310},{},[4311],{"type":30,"value":4312},"This is the most common and readable way to use functions.",{"type":17,"tag":90,"props":4314,"children":4317},{"className":4315,"code":4316,"language":95,"meta":8},[93],"print b64encode(some text to encode)\nprint md5($target.name)\n",[4318],{"type":17,"tag":47,"props":4319,"children":4320},{"__ignoreMap":8},[4321],{"type":30,"value":4316},{"type":17,"tag":569,"props":4323,"children":4325},{"id":4324},"_2-bracket-and-placeholder-syntax",[4326],{"type":30,"value":4327},"2. Bracket and Placeholder Syntax",{"type":17,"tag":22,"props":4329,"children":4330},{},[4331],{"type":30,"value":4332},"This syntax is used for resolving complex strings containing multiple placeholders or nested functions.",{"type":17,"tag":90,"props":4334,"children":4337},{"className":4335,"code":4336,"language":95,"meta":8},[93],"print \"The target is $target.name at $target.ip\"\nprint b64encode(urlencode($target.name))\nprint $logbook.1 # Prints the entire logbook entry as JSON\n",[4338],{"type":17,"tag":47,"props":4339,"children":4340},{"__ignoreMap":8},[4341],{"type":30,"value":4336},{"title":8,"searchDepth":12,"depth":12,"links":4343},[4344,4345],{"id":2559,"depth":12,"text":2562},{"id":2588,"depth":12,"text":2591,"children":4346},[4347,4348],{"id":4304,"depth":1182,"text":4307},{"id":4324,"depth":1182,"text":4327},"content:docs:print.md","docs/print.md","docs/print",{"_path":4353,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4354,"description":8,"slug":209,"category":360,"order":1420,"body":4355,"_type":350,"_id":4518,"_source":352,"_file":4519,"_stem":4520,"_extension":355},"/docs/profile","Global Profile",{"type":14,"children":4356,"toc":4511},[4357,4369,4375,4380,4384,4407,4413,4417,4453,4460,4469,4475,4488,4502],{"type":17,"tag":18,"props":4358,"children":4359},{},[4360],{"type":17,"tag":22,"props":4361,"children":4362},{},[4363,4367],{"type":17,"tag":26,"props":4364,"children":4365},{},[4366],{"type":30,"value":31},{"type":30,"value":4368}," Use a global, persistent key-value store for data available across all sessions, like API keys or a User-Agent.",{"type":17,"tag":35,"props":4370,"children":4372},{"id":4371},"the-global-profile",[4373],{"type":30,"value":4374},"The Global Profile",{"type":17,"tag":22,"props":4376,"children":4377},{},[4378],{"type":30,"value":4379},"The Profile is a global, persistent key-value store for data that you want to be available across all your sessions and targets. It's perfect for information that doesn't belong to a specific target.",{"type":17,"tag":56,"props":4381,"children":4382},{"id":1966},[4383],{"type":30,"value":1969},{"type":17,"tag":450,"props":4385,"children":4386},{},[4387,4392,4397,4402],{"type":17,"tag":454,"props":4388,"children":4389},{},[4390],{"type":30,"value":4391},"Storing a custom User-Agent string.",{"type":17,"tag":454,"props":4393,"children":4394},{},[4395],{"type":30,"value":4396},"Keeping a global session cookie for a web application.",{"type":17,"tag":454,"props":4398,"children":4399},{},[4400],{"type":30,"value":4401},"Storing API keys for services like Shodan or Hunter.io.",{"type":17,"tag":454,"props":4403,"children":4404},{},[4405],{"type":30,"value":4406},"Defining your name or handle for report templates.",{"type":17,"tag":56,"props":4408,"children":4410},{"id":4409},"managing-the-profile",[4411],{"type":30,"value":4412},"Managing the Profile",{"type":17,"tag":569,"props":4414,"children":4415},{"id":3195},[4416],{"type":30,"value":3198},{"type":17,"tag":450,"props":4418,"children":4419},{},[4420,4431,4442],{"type":17,"tag":454,"props":4421,"children":4422},{},[4423,4429],{"type":17,"tag":47,"props":4424,"children":4426},{"className":4425},[],[4427],{"type":30,"value":4428},"profile update \u003Ckey> \u003Cvalue...>",{"type":30,"value":4430},": Adds or updates a setting.",{"type":17,"tag":454,"props":4432,"children":4433},{},[4434,4440],{"type":17,"tag":47,"props":4435,"children":4437},{"className":4436},[],[4438],{"type":30,"value":4439},"profile show",{"type":30,"value":4441},": Displays all settings in the profile.",{"type":17,"tag":454,"props":4443,"children":4444},{},[4445,4451],{"type":17,"tag":47,"props":4446,"children":4448},{"className":4447},[],[4449],{"type":30,"value":4450},"profile delete \u003Ckey>",{"type":30,"value":4452},": Removes a setting.",{"type":17,"tag":22,"props":4454,"children":4455},{},[4456],{"type":17,"tag":26,"props":4457,"children":4458},{},[4459],{"type":30,"value":420},{"type":17,"tag":90,"props":4461,"children":4464},{"className":4462,"code":4463,"language":95,"meta":8},[93],"profile update user_agent \"MyCustomPentestBrowser/1.0\"\nprofile update cookie \"session=a1b2c3d4e5f6; tracking=false\"\n",[4465],{"type":17,"tag":47,"props":4466,"children":4467},{"__ignoreMap":8},[4468],{"type":30,"value":4463},{"type":17,"tag":56,"props":4470,"children":4472},{"id":4471},"using-profile-placeholders",[4473],{"type":30,"value":4474},"Using Profile Placeholders",{"type":17,"tag":22,"props":4476,"children":4477},{},[4478,4480,4486],{"type":30,"value":4479},"You can access profile data in your tool commands using the ",{"type":17,"tag":47,"props":4481,"children":4483},{"className":4482},[],[4484],{"type":30,"value":4485},"$profile",{"type":30,"value":4487}," placeholder.",{"type":17,"tag":22,"props":4489,"children":4490},{},[4491],{"type":17,"tag":26,"props":4492,"children":4493},{},[4494,4496,4501],{"type":30,"value":4495},"Example with ",{"type":17,"tag":47,"props":4497,"children":4499},{"className":4498},[],[4500],{"type":30,"value":88},{"type":30,"value":2902},{"type":17,"tag":90,"props":4503,"children":4506},{"className":4504,"code":4505,"language":95,"meta":8},[93],"tool add curl\ntool update curl command get\ntool update curl get param \"-H 'User-Agent: $profile.user_agent'\"\ntool update curl get param \"-H 'Cookie: $profile.cookie'\"\ntool update curl get param \"$target.url\"\n",[4507],{"type":17,"tag":47,"props":4508,"children":4509},{"__ignoreMap":8},[4510],{"type":30,"value":4505},{"title":8,"searchDepth":12,"depth":12,"links":4512},[4513,4514,4517],{"id":1966,"depth":12,"text":1969},{"id":4409,"depth":12,"text":4412,"children":4515},[4516],{"id":3195,"depth":1182,"text":3198},{"id":4471,"depth":12,"text":4474},"content:docs:profile.md","docs/profile.md","docs/profile",{"_path":4522,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4523,"description":8,"slug":1102,"category":2317,"order":4524,"body":4525,"_type":350,"_id":4920,"_source":352,"_file":4921,"_stem":4922,"_extension":355},"/docs/proxy","Proxy Integration",6,{"type":14,"children":4526,"toc":4911},[4527,4539,4544,4561,4574,4606,4612,4654,4669,4678,4696,4732,4738,4763,4775,4779,4798,4806,4815,4834,4840,4852,4861,4867,4902],{"type":17,"tag":18,"props":4528,"children":4529},{},[4530],{"type":17,"tag":22,"props":4531,"children":4532},{},[4533,4537],{"type":17,"tag":26,"props":4534,"children":4535},{},[4536],{"type":30,"value":31},{"type":30,"value":4538}," Route tool commands through a proxy using either a wrapper command or tool-specific placeholders.",{"type":17,"tag":35,"props":4540,"children":4542},{"id":4541},"proxy-integration",[4543],{"type":30,"value":4523},{"type":17,"tag":22,"props":4545,"children":4546},{},[4547,4552,4554,4559],{"type":17,"tag":47,"props":4548,"children":4550},{"className":4549},[],[4551],{"type":30,"value":52},{"type":30,"value":4553}," can route tool commands through a proxy. There are two main methods to achieve this. Proxy settings are ",{"type":17,"tag":26,"props":4555,"children":4556},{},[4557],{"type":30,"value":4558},"session-specific",{"type":30,"value":4560},", meaning you can have different proxy configurations for different projects.",{"type":17,"tag":56,"props":4562,"children":4564},{"id":4563},"method-1-wrapper-command-eg-proxychains-ng",[4565,4567,4573],{"type":30,"value":4566},"Method 1: Wrapper Command (e.g., ",{"type":17,"tag":47,"props":4568,"children":4570},{"className":4569},[],[4571],{"type":30,"value":4572},"proxychains-ng",{"type":30,"value":663},{"type":17,"tag":22,"props":4575,"children":4576},{},[4577,4579,4584,4586,4591,4593,4598,4600,4605],{"type":30,"value":4578},"This method forces ",{"type":17,"tag":26,"props":4580,"children":4581},{},[4582],{"type":30,"value":4583},"all",{"type":30,"value":4585}," network traffic from a tool through the proxy. When the proxy is enabled, ",{"type":17,"tag":47,"props":4587,"children":4589},{"className":4588},[],[4590],{"type":30,"value":52},{"type":30,"value":4592}," prepends a \"wrapper command\" (defined in ",{"type":17,"tag":47,"props":4594,"children":4596},{"className":4595},[],[4597],{"type":30,"value":492},{"type":30,"value":4599},") to your tool command. The default is ",{"type":17,"tag":47,"props":4601,"children":4603},{"className":4602},[],[4604],{"type":30,"value":4572},{"type":30,"value":132},{"type":17,"tag":56,"props":4607,"children":4609},{"id":4608},"method-2-placeholders-for-tool-specific-flags",[4610],{"type":30,"value":4611},"Method 2: Placeholders for Tool-Specific Flags",{"type":17,"tag":22,"props":4613,"children":4614},{},[4615,4617,4622,4623,4629,4630,4636,4638,4644,4646,4652],{"type":30,"value":4616},"Many tools (like ",{"type":17,"tag":47,"props":4618,"children":4620},{"className":4619},[],[4621],{"type":30,"value":88},{"type":30,"value":1292},{"type":17,"tag":47,"props":4624,"children":4626},{"className":4625},[],[4627],{"type":30,"value":4628},"sqlmap",{"type":30,"value":1292},{"type":17,"tag":47,"props":4631,"children":4633},{"className":4632},[],[4634],{"type":30,"value":4635},"ffuf",{"type":30,"value":4637},") have their own flags to specify a proxy (e.g., ",{"type":17,"tag":47,"props":4639,"children":4641},{"className":4640},[],[4642],{"type":30,"value":4643},"--proxy",{"type":30,"value":4645},"). This is the most flexible method. You can use ",{"type":17,"tag":47,"props":4647,"children":4649},{"className":4648},[],[4650],{"type":30,"value":4651},"$proxy",{"type":30,"value":4653}," placeholders in your tool definition.",{"type":17,"tag":22,"props":4655,"children":4656},{},[4657],{"type":17,"tag":26,"props":4658,"children":4659},{},[4660,4662,4667],{"type":30,"value":4661},"Example: Configuring ",{"type":17,"tag":47,"props":4663,"children":4665},{"className":4664},[],[4666],{"type":30,"value":4635},{"type":30,"value":4668}," to use the proxy",{"type":17,"tag":90,"props":4670,"children":4673},{"className":4671,"code":4672,"language":95,"meta":8},[93],"tool update ffuf fuzz param \"--proxy $proxy.type://$proxy.username:$proxy.password@$proxy.host:$proxy.port\"\n",[4674],{"type":17,"tag":47,"props":4675,"children":4676},{"__ignoreMap":8},[4677],{"type":30,"value":4672},{"type":17,"tag":22,"props":4679,"children":4680},{},[4681,4683,4688,4689,4694],{"type":30,"value":4682},"When you run ",{"type":17,"tag":47,"props":4684,"children":4686},{"className":4685},[],[4687],{"type":30,"value":4635},{"type":30,"value":1292},{"type":17,"tag":47,"props":4690,"children":4692},{"className":4691},[],[4693],{"type":30,"value":52},{"type":30,"value":4695}," will substitute the placeholders with the currently active proxy settings.",{"type":17,"tag":18,"props":4697,"children":4698},{},[4699],{"type":17,"tag":22,"props":4700,"children":4701},{},[4702,4707,4709,4715,4716,4722,4724,4730],{"type":17,"tag":542,"props":4703,"children":4704},{},[4705],{"type":30,"value":4706},"!NOTE",{"type":30,"value":4708},"\nIf ",{"type":17,"tag":47,"props":4710,"children":4712},{"className":4711},[],[4713],{"type":30,"value":4714},"username",{"type":30,"value":3632},{"type":17,"tag":47,"props":4717,"children":4719},{"className":4718},[],[4720],{"type":30,"value":4721},"password",{"type":30,"value":4723}," are not set, they will be replaced with an empty string. Most tools handle URLs like ",{"type":17,"tag":47,"props":4725,"children":4727},{"className":4726},[],[4728],{"type":30,"value":4729},"http://:@host:port",{"type":30,"value":4731}," correctly, but some may not.",{"type":17,"tag":56,"props":4733,"children":4735},{"id":4734},"enabling-and-disabling-the-proxy",[4736],{"type":30,"value":4737},"Enabling and Disabling the Proxy",{"type":17,"tag":450,"props":4739,"children":4740},{},[4741,4752],{"type":17,"tag":454,"props":4742,"children":4743},{},[4744,4750],{"type":17,"tag":47,"props":4745,"children":4747},{"className":4746},[],[4748],{"type":30,"value":4749},"proxy on",{"type":30,"value":4751},": Enables the proxy for the current session.",{"type":17,"tag":454,"props":4753,"children":4754},{},[4755,4761],{"type":17,"tag":47,"props":4756,"children":4758},{"className":4757},[],[4759],{"type":30,"value":4760},"proxy off",{"type":30,"value":4762},": Disables the proxy for the current session.",{"type":17,"tag":22,"props":4764,"children":4765},{},[4766,4768,4773],{"type":30,"value":4767},"When the proxy is on, the ",{"type":17,"tag":26,"props":4769,"children":4770},{},[4771],{"type":30,"value":4772},"㉿",{"type":30,"value":4774}," symbol in your prompt will turn green.",{"type":17,"tag":56,"props":4776,"children":4777},{"id":1419},[4778],{"type":30,"value":1427},{"type":17,"tag":22,"props":4780,"children":4781},{},[4782,4784,4789,4791,4797],{"type":30,"value":4783},"You can set global defaults in ",{"type":17,"tag":47,"props":4785,"children":4787},{"className":4786},[],[4788],{"type":30,"value":492},{"type":30,"value":4790},". To override these for the current session, use the ",{"type":17,"tag":47,"props":4792,"children":4794},{"className":4793},[],[4795],{"type":30,"value":4796},"proxy set",{"type":30,"value":2649},{"type":17,"tag":22,"props":4799,"children":4800},{},[4801],{"type":17,"tag":26,"props":4802,"children":4803},{},[4804],{"type":30,"value":4805},"Example: Setting up a Burp Suite proxy",{"type":17,"tag":90,"props":4807,"children":4810},{"className":4808,"code":4809,"language":95,"meta":8},[93],"proxy set host 127.0.0.1\nproxy set port 8080\nproxy on\n",[4811],{"type":17,"tag":47,"props":4812,"children":4813},{"__ignoreMap":8},[4814],{"type":30,"value":4809},{"type":17,"tag":22,"props":4816,"children":4817},{},[4818,4820,4825,4827,4833],{"type":30,"value":4819},"After this, you can use Method 1 (if ",{"type":17,"tag":47,"props":4821,"children":4823},{"className":4822},[],[4824],{"type":30,"value":4572},{"type":30,"value":4826}," is configured for Burp) or Method 2 with placeholders like ",{"type":17,"tag":47,"props":4828,"children":4830},{"className":4829},[],[4831],{"type":30,"value":4832},"$proxy.host",{"type":30,"value":132},{"type":17,"tag":56,"props":4835,"children":4837},{"id":4836},"resetting-configuration",[4838],{"type":30,"value":4839},"Resetting Configuration",{"type":17,"tag":22,"props":4841,"children":4842},{},[4843,4845,4851],{"type":30,"value":4844},"To revert a session-specific setting back to the global default, use ",{"type":17,"tag":47,"props":4846,"children":4848},{"className":4847},[],[4849],{"type":30,"value":4850},"proxy reset",{"type":30,"value":132},{"type":17,"tag":90,"props":4853,"children":4856},{"className":4854,"code":4855,"language":95,"meta":8},[93],"proxy reset host\nproxy reset all\n",[4857],{"type":17,"tag":47,"props":4858,"children":4859},{"__ignoreMap":8},[4860],{"type":30,"value":4855},{"type":17,"tag":56,"props":4862,"children":4864},{"id":4863},"sudo-and-proxy-wrappers",[4865],{"type":30,"value":4866},"Sudo and Proxy Wrappers",{"type":17,"tag":22,"props":4868,"children":4869},{},[4870,4872,4878,4880,4885,4887,4892,4894,4900],{"type":30,"value":4871},"If your wrapper command (Method 1) needs root privileges, set ",{"type":17,"tag":47,"props":4873,"children":4875},{"className":4874},[],[4876],{"type":30,"value":4877},"wrapper_needs_sudo",{"type":30,"value":4879}," to ",{"type":17,"tag":47,"props":4881,"children":4883},{"className":4882},[],[4884],{"type":30,"value":1675},{"type":30,"value":4886},". ",{"type":17,"tag":47,"props":4888,"children":4890},{"className":4889},[],[4891],{"type":30,"value":52},{"type":30,"value":4893}," will handle the ",{"type":17,"tag":47,"props":4895,"children":4897},{"className":4896},[],[4898],{"type":30,"value":4899},"sudo",{"type":30,"value":4901}," prompt automatically.",{"type":17,"tag":90,"props":4903,"children":4906},{"className":4904,"code":4905,"language":95,"meta":8},[93],"proxy set wrapper_needs_sudo true\n",[4907],{"type":17,"tag":47,"props":4908,"children":4909},{"__ignoreMap":8},[4910],{"type":30,"value":4905},{"title":8,"searchDepth":12,"depth":12,"links":4912},[4913,4915,4916,4917,4918,4919],{"id":4563,"depth":12,"text":4914},"Method 1: Wrapper Command (e.g., proxychains-ng)",{"id":4608,"depth":12,"text":4611},{"id":4734,"depth":12,"text":4737},{"id":1419,"depth":12,"text":1427},{"id":4836,"depth":12,"text":4839},{"id":4863,"depth":12,"text":4866},"content:docs:proxy.md","docs/proxy.md","docs/proxy",{"_path":4924,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":4925,"description":8,"slug":840,"category":4926,"order":2956,"body":4927,"_type":350,"_id":5181,"_source":352,"_file":5182,"_stem":5183,"_extension":355},"/docs/report","Managing Reports","Core Entities",{"type":14,"children":4928,"toc":5170},[4929,4941,4946,4957,4989,4995,5034,5038,5044,5049,5058,5064,5069,5078,5084,5093,5099,5108,5114,5133,5142,5148,5161],{"type":17,"tag":18,"props":4930,"children":4931},{},[4932],{"type":17,"tag":22,"props":4933,"children":4934},{},[4935,4939],{"type":17,"tag":26,"props":4936,"children":4937},{},[4938],{"type":30,"value":31},{"type":30,"value":4940}," Manage reports, the central containers for all collected data like notes, loot, and parser findings.",{"type":17,"tag":35,"props":4942,"children":4944},{"id":4943},"managing-reports",[4945],{"type":30,"value":4925},{"type":17,"tag":22,"props":4947,"children":4948},{},[4949,4950,4955],{"type":30,"value":117},{"type":17,"tag":47,"props":4951,"children":4953},{"className":4952},[],[4954],{"type":30,"value":840},{"type":30,"value":4956}," is the central container for all your analytical findings for an engagement. It is designed to store everything you discover, keeping your notes, credentials, and automated parser results organized in one place.",{"type":17,"tag":18,"props":4958,"children":4959},{},[4960],{"type":17,"tag":22,"props":4961,"children":4962},{},[4963,4967,4969,4974,4975,4980,4982,4987],{"type":17,"tag":542,"props":4964,"children":4965},{},[4966],{"type":30,"value":3172},{"type":30,"value":4968},"\nYou must create and load a report before you can use the ",{"type":17,"tag":47,"props":4970,"children":4972},{"className":4971},[],[4973],{"type":30,"value":886},{"type":30,"value":1292},{"type":17,"tag":47,"props":4976,"children":4978},{"className":4977},[],[4979],{"type":30,"value":909},{"type":30,"value":4981},", or ",{"type":17,"tag":47,"props":4983,"children":4985},{"className":4984},[],[4986],{"type":30,"value":3691},{"type":30,"value":4988}," commands.",{"type":17,"tag":56,"props":4990,"children":4992},{"id":4991},"what-a-report-stores",[4993],{"type":30,"value":4994},"What a Report Stores",{"type":17,"tag":450,"props":4996,"children":4997},{},[4998,5008,5018],{"type":17,"tag":454,"props":4999,"children":5000},{},[5001,5006],{"type":17,"tag":26,"props":5002,"children":5003},{},[5004],{"type":30,"value":5005},"Notes:",{"type":30,"value":5007}," Your timestamped, free-form observations.",{"type":17,"tag":454,"props":5009,"children":5010},{},[5011,5016],{"type":17,"tag":26,"props":5012,"children":5013},{},[5014],{"type":30,"value":5015},"Loot:",{"type":30,"value":5017}," Structured findings like credentials, keys, and flags.",{"type":17,"tag":454,"props":5019,"children":5020},{},[5021,5026,5028,5033],{"type":17,"tag":26,"props":5022,"children":5023},{},[5024],{"type":30,"value":5025},"Parser Findings:",{"type":30,"value":5027}," Structured data extracted from tool output by the ",{"type":17,"tag":47,"props":5029,"children":5031},{"className":5030},[],[5032],{"type":30,"value":932},{"type":30,"value":2649},{"type":17,"tag":56,"props":5035,"children":5036},{"id":2398},[5037],{"type":30,"value":2401},{"type":17,"tag":569,"props":5039,"children":5041},{"id":5040},"creating-and-loading",[5042],{"type":30,"value":5043},"Creating and Loading",{"type":17,"tag":22,"props":5045,"children":5046},{},[5047],{"type":30,"value":5048},"You start by creating a report for your project and then loading it into your session.",{"type":17,"tag":90,"props":5050,"children":5053},{"className":5051,"code":5052,"language":95,"meta":8},[93],"report add my-project-report\nreport load my-project-report\n# The prompt will now show '[my-project-report]' to indicate it's loaded.\n",[5054],{"type":17,"tag":47,"props":5055,"children":5056},{"__ignoreMap":8},[5057],{"type":30,"value":5052},{"type":17,"tag":569,"props":5059,"children":5061},{"id":5060},"viewing-a-report",[5062],{"type":30,"value":5063},"Viewing a Report",{"type":17,"tag":22,"props":5065,"children":5066},{},[5067],{"type":30,"value":5068},"You can view the contents of any report, or the currently loaded one.",{"type":17,"tag":90,"props":5070,"children":5073},{"className":5071,"code":5072,"language":95,"meta":8},[93],"report show my-project-report\nreport show # Shows the currently loaded report\n",[5074],{"type":17,"tag":47,"props":5075,"children":5076},{"__ignoreMap":8},[5077],{"type":30,"value":5072},{"type":17,"tag":569,"props":5079,"children":5081},{"id":5080},"listing-and-unloading",[5082],{"type":30,"value":5083},"Listing and Unloading",{"type":17,"tag":90,"props":5085,"children":5088},{"className":5086,"code":5087,"language":95,"meta":8},[93],"report list # Shows all available reports\nreport unload # Unloads the report from the current session\n",[5089],{"type":17,"tag":47,"props":5090,"children":5091},{"__ignoreMap":8},[5092],{"type":30,"value":5087},{"type":17,"tag":569,"props":5094,"children":5096},{"id":5095},"renaming-and-deleting",[5097],{"type":30,"value":5098},"Renaming and Deleting",{"type":17,"tag":90,"props":5100,"children":5103},{"className":5101,"code":5102,"language":95,"meta":8},[93],"report rename my-project-report new-name\nreport destroy new-name # This permanently deletes the report file\n",[5104],{"type":17,"tag":47,"props":5105,"children":5106},{"__ignoreMap":8},[5107],{"type":30,"value":5102},{"type":17,"tag":569,"props":5109,"children":5111},{"id":5110},"exporting-a-report",[5112],{"type":30,"value":5113},"Exporting a Report",{"type":17,"tag":22,"props":5115,"children":5116},{},[5117,5119,5124,5126,5131],{"type":30,"value":5118},"To back up, share, or version-control a report, use the ",{"type":17,"tag":47,"props":5120,"children":5122},{"className":5121},[],[5123],{"type":30,"value":1946},{"type":30,"value":5125}," command. It generates a script of ",{"type":17,"tag":47,"props":5127,"children":5129},{"className":5128},[],[5130],{"type":30,"value":52},{"type":30,"value":5132}," commands that can perfectly reconstruct the report, including all notes and loot.",{"type":17,"tag":90,"props":5134,"children":5137},{"className":5135,"code":5136,"language":95,"meta":8},[93],"report export my-project-report\n# This will print the commands to the console. You can copy this output\n# and save it to a file (e.g., 'my-backup.pwn') to be run with 'run_script'.\n",[5138],{"type":17,"tag":47,"props":5139,"children":5140},{"__ignoreMap":8},[5141],{"type":30,"value":5136},{"type":17,"tag":569,"props":5143,"children":5145},{"id":5144},"rendering-a-report-to-a-file",[5146],{"type":30,"value":5147},"Rendering a Report to a File",{"type":17,"tag":22,"props":5149,"children":5150},{},[5151,5153,5159],{"type":30,"value":5152},"To create a clean, human-readable summary of a report for documentation or sharing, use the ",{"type":17,"tag":47,"props":5154,"children":5156},{"className":5155},[],[5157],{"type":30,"value":5158},"render",{"type":30,"value":5160}," command. It saves the output as a Markdown file.",{"type":17,"tag":90,"props":5162,"children":5165},{"className":5163,"code":5164,"language":95,"meta":8},[93],"report render my-project-report\n# Saves a summary to 'exports/reports/my-project-report.md'\n\nreport render my-project-report final_summary.md\n# Saves the summary to 'exports/reports/final_summary.md'\n",[5166],{"type":17,"tag":47,"props":5167,"children":5168},{"__ignoreMap":8},[5169],{"type":30,"value":5164},{"title":8,"searchDepth":12,"depth":12,"links":5171},[5172,5173],{"id":4991,"depth":12,"text":4994},{"id":2398,"depth":12,"text":2401,"children":5174},[5175,5176,5177,5178,5179,5180],{"id":5040,"depth":1182,"text":5043},{"id":5060,"depth":1182,"text":5063},{"id":5080,"depth":1182,"text":5083},{"id":5095,"depth":1182,"text":5098},{"id":5110,"depth":1182,"text":5113},{"id":5144,"depth":1182,"text":5147},"content:docs:report.md","docs/report.md","docs/report",{"_path":5185,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5186,"description":8,"slug":955,"category":2317,"order":5187,"body":5188,"_type":350,"_id":5383,"_source":352,"_file":5384,"_stem":5385,"_extension":355},"/docs/revshell","Reverse Shells",7,{"type":14,"children":5189,"toc":5375},[5190,5202,5208,5219,5224,5229,5235,5240,5309,5314,5322,5331,5335,5341,5346,5355,5361,5366],{"type":17,"tag":18,"props":5191,"children":5192},{},[5193],{"type":17,"tag":22,"props":5194,"children":5195},{},[5196,5200],{"type":17,"tag":26,"props":5197,"children":5198},{},[5199],{"type":30,"value":31},{"type":30,"value":5201}," Generate reverse shell one-liners for various languages.",{"type":17,"tag":35,"props":5203,"children":5205},{"id":5204},"generating-reverse-shells",[5206],{"type":30,"value":5207},"Generating Reverse Shells",{"type":17,"tag":22,"props":5209,"children":5210},{},[5211,5212,5217],{"type":30,"value":203},{"type":17,"tag":47,"props":5213,"children":5215},{"className":5214},[],[5216],{"type":30,"value":955},{"type":30,"value":5218}," command is a powerful utility that generates reverse shell one-liners for various languages. It helps you quickly create payloads for command execution vulnerabilities.",{"type":17,"tag":56,"props":5220,"children":5221},{"id":2005},[5222],{"type":30,"value":5223},"How It Works",{"type":17,"tag":22,"props":5225,"children":5226},{},[5227],{"type":30,"value":5228},"The command generates a clean, copy-pasteable payload string that you can use on a remote target.",{"type":17,"tag":56,"props":5230,"children":5232},{"id":5231},"default-ip-and-port",[5233],{"type":30,"value":5234},"Default IP and Port",{"type":17,"tag":22,"props":5236,"children":5237},{},[5238],{"type":30,"value":5239},"The command uses the following logic to determine the listener IP and port:",{"type":17,"tag":2235,"props":5241,"children":5242},{},[5243,5255,5275,5293],{"type":17,"tag":454,"props":5244,"children":5245},{},[5246,5248,5254],{"type":30,"value":5247},"It uses the IP and port if you provide them directly (e.g., ",{"type":17,"tag":47,"props":5249,"children":5251},{"className":5250},[],[5252],{"type":30,"value":5253},"revshell php 10.0.0.1 9001",{"type":30,"value":1167},{"type":17,"tag":454,"props":5256,"children":5257},{},[5258,5260,5266,5267,5273],{"type":30,"value":5259},"If not provided, it looks for ",{"type":17,"tag":47,"props":5261,"children":5263},{"className":5262},[],[5264],{"type":30,"value":5265},"$profile.lhost",{"type":30,"value":82},{"type":17,"tag":47,"props":5268,"children":5270},{"className":5269},[],[5271],{"type":30,"value":5272},"$profile.lport",{"type":30,"value":5274}," in your global profile.",{"type":17,"tag":454,"props":5276,"children":5277},{},[5278,5280,5285,5287,5292],{"type":30,"value":5279},"If ",{"type":17,"tag":47,"props":5281,"children":5283},{"className":5282},[],[5284],{"type":30,"value":5265},{"type":30,"value":5286}," is not set, it will ",{"type":17,"tag":26,"props":5288,"children":5289},{},[5290],{"type":30,"value":5291},"attempt to auto-detect your local IP address",{"type":30,"value":132},{"type":17,"tag":454,"props":5294,"children":5295},{},[5296,5297,5302,5303,5308],{"type":30,"value":5279},{"type":17,"tag":47,"props":5298,"children":5300},{"className":5299},[],[5301],{"type":30,"value":5272},{"type":30,"value":5286},{"type":17,"tag":26,"props":5304,"children":5305},{},[5306],{"type":30,"value":5307},"default to port 1337",{"type":30,"value":132},{"type":17,"tag":22,"props":5310,"children":5311},{},[5312],{"type":30,"value":5313},"It is still highly recommended to set these in your global profile for consistency.",{"type":17,"tag":22,"props":5315,"children":5316},{},[5317],{"type":17,"tag":26,"props":5318,"children":5319},{},[5320],{"type":30,"value":5321},"Example: Setting up your profile",{"type":17,"tag":90,"props":5323,"children":5326},{"className":5324,"code":5325,"language":95,"meta":8},[93],"profile update lhost 192.168.49.128\nprofile update lport 4444\n",[5327],{"type":17,"tag":47,"props":5328,"children":5329},{"__ignoreMap":8},[5330],{"type":30,"value":5325},{"type":17,"tag":56,"props":5332,"children":5333},{"id":2398},[5334],{"type":30,"value":2401},{"type":17,"tag":569,"props":5336,"children":5338},{"id":5337},"generating-a-payload",[5339],{"type":30,"value":5340},"Generating a Payload",{"type":17,"tag":22,"props":5342,"children":5343},{},[5344],{"type":30,"value":5345},"Simply specify the language. The command will use your profile settings.",{"type":17,"tag":90,"props":5347,"children":5350},{"className":5348,"code":5349,"language":95,"meta":8},[93],"revshell python3\n",[5351],{"type":17,"tag":47,"props":5352,"children":5353},{"__ignoreMap":8},[5354],{"type":30,"value":5349},{"type":17,"tag":569,"props":5356,"children":5358},{"id":5357},"specifying-ip-and-port-manually",[5359],{"type":30,"value":5360},"Specifying IP and Port Manually",{"type":17,"tag":22,"props":5362,"children":5363},{},[5364],{"type":30,"value":5365},"You can override the profile settings by providing the IP and port directly.",{"type":17,"tag":90,"props":5367,"children":5370},{"className":5368,"code":5369,"language":95,"meta":8},[93],"revshell php 10.10.14.2 9001\n",[5371],{"type":17,"tag":47,"props":5372,"children":5373},{"__ignoreMap":8},[5374],{"type":30,"value":5369},{"title":8,"searchDepth":12,"depth":12,"links":5376},[5377,5378,5379],{"id":2005,"depth":12,"text":5223},{"id":5231,"depth":12,"text":5234},{"id":2398,"depth":12,"text":2401,"children":5380},[5381,5382],{"id":5337,"depth":1182,"text":5340},{"id":5357,"depth":1182,"text":5360},"content:docs:revshell.md","docs/revshell.md","docs/revshell",{"_path":5387,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5388,"description":8,"slug":5389,"category":4926,"order":1420,"body":5390,"_type":350,"_id":5696,"_source":352,"_file":5697,"_stem":5698,"_extension":355},"/docs/sessions_and_presets","Sessions & Presets","sessions_and_presets",{"type":14,"children":5391,"toc":5687},[5392,5404,5409,5419,5425,5457,5469,5473,5531,5537,5549,5574,5578,5625,5629,5638,5650,5659],{"type":17,"tag":18,"props":5393,"children":5394},{},[5395],{"type":17,"tag":22,"props":5396,"children":5397},{},[5398,5402],{"type":17,"tag":26,"props":5399,"children":5400},{},[5401],{"type":30,"value":31},{"type":30,"value":5403}," Organize your work with sessions (workspaces) and presets (saved session templates).",{"type":17,"tag":35,"props":5405,"children":5407},{"id":5406},"sessions-presets",[5408],{"type":30,"value":5388},{"type":17,"tag":22,"props":5410,"children":5411},{},[5412,5417],{"type":17,"tag":47,"props":5413,"children":5415},{"className":5414},[],[5416],{"type":30,"value":52},{"type":30,"value":5418}," uses Sessions and Presets to help you organize your work and automate repetitive setups.",{"type":17,"tag":56,"props":5420,"children":5422},{"id":5421},"sessions-your-workspace",[5423],{"type":30,"value":5424},"Sessions: Your Workspace",{"type":17,"tag":22,"props":5426,"children":5427},{},[5428,5430,5435,5436,5441,5443,5448,5450,5455],{"type":30,"value":5429},"A Session is your current, live workspace. It \"remembers\" which ",{"type":17,"tag":47,"props":5431,"children":5433},{"className":5432},[],[5434],{"type":30,"value":571},{"type":30,"value":1292},{"type":17,"tag":47,"props":5437,"children":5439},{"className":5438},[],[5440],{"type":30,"value":594},{"type":30,"value":5442},", and ",{"type":17,"tag":47,"props":5444,"children":5446},{"className":5445},[],[5447],{"type":30,"value":123},{"type":30,"value":5449}," you have loaded, as well as any session-specific ",{"type":17,"tag":47,"props":5451,"children":5453},{"className":5452},[],[5454],{"type":30,"value":1102},{"type":30,"value":5456}," settings.",{"type":17,"tag":22,"props":5458,"children":5459},{},[5460,5462,5468],{"type":30,"value":5461},"The prompt always shows you the name of the active session, e.g., ",{"type":17,"tag":47,"props":5463,"children":5465},{"className":5464},[],[5466],{"type":30,"value":5467},"(project-x)",{"type":30,"value":132},{"type":17,"tag":569,"props":5470,"children":5471},{"id":3195},[5472],{"type":30,"value":3198},{"type":17,"tag":450,"props":5474,"children":5475},{},[5476,5487,5498,5509,5520],{"type":17,"tag":454,"props":5477,"children":5478},{},[5479,5485],{"type":17,"tag":47,"props":5480,"children":5482},{"className":5481},[],[5483],{"type":30,"value":5484},"session new \u003Cname>",{"type":30,"value":5486},": Creates a new, empty session and switches to it.",{"type":17,"tag":454,"props":5488,"children":5489},{},[5490,5496],{"type":17,"tag":47,"props":5491,"children":5493},{"className":5492},[],[5494],{"type":30,"value":5495},"session switch \u003Cname>",{"type":30,"value":5497},": Switches to an existing session, restoring its context.",{"type":17,"tag":454,"props":5499,"children":5500},{},[5501,5507],{"type":17,"tag":47,"props":5502,"children":5504},{"className":5503},[],[5505],{"type":30,"value":5506},"session list",{"type":30,"value":5508},": Shows all available sessions.",{"type":17,"tag":454,"props":5510,"children":5511},{},[5512,5518],{"type":17,"tag":47,"props":5513,"children":5515},{"className":5514},[],[5516],{"type":30,"value":5517},"session show",{"type":30,"value":5519},": Displays what is currently loaded in the active session.",{"type":17,"tag":454,"props":5521,"children":5522},{},[5523,5529],{"type":17,"tag":47,"props":5524,"children":5526},{"className":5525},[],[5527],{"type":30,"value":5528},"session destroy \u003Cname>",{"type":30,"value":5530},": Deletes a session (but not the targets or tools themselves).",{"type":17,"tag":56,"props":5532,"children":5534},{"id":5533},"presets-your-templates",[5535],{"type":30,"value":5536},"Presets: Your Templates",{"type":17,"tag":22,"props":5538,"children":5539},{},[5540,5542,5547],{"type":30,"value":5541},"A Preset is a ",{"type":17,"tag":26,"props":5543,"children":5544},{},[5545],{"type":30,"value":5546},"saved session configuration",{"type":30,"value":5548},". It's a template for a common task.",{"type":17,"tag":22,"props":5550,"children":5551},{},[5552,5557,5559,5564,5566,5572],{"type":17,"tag":26,"props":5553,"children":5554},{},[5555],{"type":30,"value":5556},"Use Case:",{"type":30,"value":5558},"\nImagine you always use ",{"type":17,"tag":47,"props":5560,"children":5562},{"className":5561},[],[5563],{"type":30,"value":1298},{"type":30,"value":5565}," with the ",{"type":17,"tag":47,"props":5567,"children":5569},{"className":5568},[],[5570],{"type":30,"value":5571},"directory-list-2.3-medium.txt",{"type":30,"value":5573}," wordlist to scan web servers. You can save this combination as a preset.",{"type":17,"tag":569,"props":5575,"children":5576},{"id":3300},[5577],{"type":30,"value":3198},{"type":17,"tag":450,"props":5579,"children":5580},{},[5581,5592,5603,5614],{"type":17,"tag":454,"props":5582,"children":5583},{},[5584,5590],{"type":17,"tag":47,"props":5585,"children":5587},{"className":5586},[],[5588],{"type":30,"value":5589},"preset save \u003Cname>",{"type":30,"value":5591},": Saves the currently loaded items as a preset.",{"type":17,"tag":454,"props":5593,"children":5594},{},[5595,5601],{"type":17,"tag":47,"props":5596,"children":5598},{"className":5597},[],[5599],{"type":30,"value":5600},"preset load \u003Cname>",{"type":30,"value":5602},": Loads a preset. This creates a new session with the same name as the preset and loads all the saved items into it.",{"type":17,"tag":454,"props":5604,"children":5605},{},[5606,5612],{"type":17,"tag":47,"props":5607,"children":5609},{"className":5608},[],[5610],{"type":30,"value":5611},"preset list",{"type":30,"value":5613},": Shows all available presets.",{"type":17,"tag":454,"props":5615,"children":5616},{},[5617,5623],{"type":17,"tag":47,"props":5618,"children":5620},{"className":5619},[],[5621],{"type":30,"value":5622},"preset show \u003Cname>",{"type":30,"value":5624},": Displays the configuration of a preset.",{"type":17,"tag":569,"props":5626,"children":5627},{"id":3237},[5628],{"type":30,"value":420},{"type":17,"tag":90,"props":5630,"children":5633},{"className":5631,"code":5632,"language":95,"meta":8},[93],"tool load gobuster\nwordlist load common-dirs\npreset save gobuster-common\n",[5634],{"type":17,"tag":47,"props":5635,"children":5636},{"__ignoreMap":8},[5637],{"type":30,"value":5632},{"type":17,"tag":22,"props":5639,"children":5640},{},[5641,5643,5648],{"type":30,"value":5642},"Later, in a new ",{"type":17,"tag":47,"props":5644,"children":5646},{"className":5645},[],[5647],{"type":30,"value":52},{"type":30,"value":5649}," instance:",{"type":17,"tag":90,"props":5651,"children":5654},{"className":5652,"code":5653,"language":95,"meta":8},[93],"preset load gobuster-common\n",[5655],{"type":17,"tag":47,"props":5656,"children":5657},{"__ignoreMap":8},[5658],{"type":30,"value":5653},{"type":17,"tag":22,"props":5660,"children":5661},{},[5662,5664,5670,5672,5677,5679,5685],{"type":30,"value":5663},"This will create a new session named ",{"type":17,"tag":47,"props":5665,"children":5667},{"className":5666},[],[5668],{"type":30,"value":5669},"gobuster-common",{"type":30,"value":5671}," and automatically load the ",{"type":17,"tag":47,"props":5673,"children":5675},{"className":5674},[],[5676],{"type":30,"value":1298},{"type":30,"value":5678}," tool and ",{"type":17,"tag":47,"props":5680,"children":5682},{"className":5681},[],[5683],{"type":30,"value":5684},"common-dirs",{"type":30,"value":5686}," wordlist.",{"title":8,"searchDepth":12,"depth":12,"links":5688},[5689,5692],{"id":5421,"depth":12,"text":5424,"children":5690},[5691],{"id":3195,"depth":1182,"text":3198},{"id":5533,"depth":12,"text":5536,"children":5693},[5694,5695],{"id":3300,"depth":1182,"text":3198},{"id":3237,"depth":1182,"text":420},"content:docs:sessions_and_presets.md","docs/sessions_and_presets.md","docs/sessions_and_presets",{"_path":5700,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":5701,"description":8,"slug":5702,"category":2317,"order":2956,"body":5703,"_type":350,"_id":6142,"_source":352,"_file":6143,"_stem":6144,"_extension":355},"/docs/special_fields","Special Fields","special_fields",{"type":14,"children":5704,"toc":6129},[5705,5717,5723,5736,5749,5767,5891,5898,5907,5912,5924,5943,5952,5971,5983,6001,6009,6020,6032,6045,6056,6093,6100,6109],{"type":17,"tag":18,"props":5706,"children":5707},{},[5708],{"type":17,"tag":22,"props":5709,"children":5710},{},[5711,5715],{"type":17,"tag":26,"props":5712,"children":5713},{},[5714],{"type":30,"value":31},{"type":30,"value":5716}," Learn about special fields like 'target.url' that trigger automatic actions and data parsing.",{"type":17,"tag":35,"props":5718,"children":5720},{"id":5719},"special-fields-magic-actions",[5721],{"type":30,"value":5722},"Special Fields & Magic Actions",{"type":17,"tag":22,"props":5724,"children":5725},{},[5726,5728,5734],{"type":30,"value":5727},"Certain fields, when used with the ",{"type":17,"tag":47,"props":5729,"children":5731},{"className":5730},[],[5732],{"type":30,"value":5733},"update",{"type":30,"value":5735}," command, trigger special actions or have unique behaviors beyond simply storing a value.",{"type":17,"tag":56,"props":5737,"children":5739},{"id":5738},"target-the-url-field",[5740,5742,5747],{"type":30,"value":5741},"Target: The ",{"type":17,"tag":47,"props":5743,"children":5745},{"className":5744},[],[5746],{"type":30,"value":2032},{"type":30,"value":5748}," Field",{"type":17,"tag":22,"props":5750,"children":5751},{},[5752,5754,5759,5760,5765],{"type":30,"value":5753},"This is the most powerful special field. When you update a target's ",{"type":17,"tag":47,"props":5755,"children":5757},{"className":5756},[],[5758],{"type":30,"value":2032},{"type":30,"value":1292},{"type":17,"tag":47,"props":5761,"children":5763},{"className":5762},[],[5764],{"type":30,"value":52},{"type":30,"value":5766}," doesn't just store the string; it performs a comprehensive analysis:",{"type":17,"tag":450,"props":5768,"children":5769},{},[5770,5780,5826,5865],{"type":17,"tag":454,"props":5771,"children":5772},{},[5773,5778],{"type":17,"tag":26,"props":5774,"children":5775},{},[5776],{"type":30,"value":5777},"Resolution:",{"type":30,"value":5779}," It resolves the hostname to an IP address.",{"type":17,"tag":454,"props":5781,"children":5782},{},[5783,5788,5790,5796,5797,5803,5804,5810,5811,5817,5818,5824],{"type":17,"tag":26,"props":5784,"children":5785},{},[5786],{"type":30,"value":5787},"Parsing:",{"type":30,"value":5789}," It breaks the URL into its components: ",{"type":17,"tag":47,"props":5791,"children":5793},{"className":5792},[],[5794],{"type":30,"value":5795},"protocol",{"type":30,"value":1292},{"type":17,"tag":47,"props":5798,"children":5800},{"className":5799},[],[5801],{"type":30,"value":5802},"hostname",{"type":30,"value":1292},{"type":17,"tag":47,"props":5805,"children":5807},{"className":5806},[],[5808],{"type":30,"value":5809},"port",{"type":30,"value":1292},{"type":17,"tag":47,"props":5812,"children":5814},{"className":5813},[],[5815],{"type":30,"value":5816},"uri",{"type":30,"value":1292},{"type":17,"tag":47,"props":5819,"children":5821},{"className":5820},[],[5822],{"type":30,"value":5823},"query_params",{"type":30,"value":5825},", etc.",{"type":17,"tag":454,"props":5827,"children":5828},{},[5829,5834,5836,5842,5844,5850,5851,5857,5858,5864],{"type":17,"tag":26,"props":5830,"children":5831},{},[5832],{"type":30,"value":5833},"Domain Analysis:",{"type":30,"value":5835}," It uses ",{"type":17,"tag":47,"props":5837,"children":5839},{"className":5838},[],[5840],{"type":30,"value":5841},"tldextract",{"type":30,"value":5843}," to identify the ",{"type":17,"tag":47,"props":5845,"children":5847},{"className":5846},[],[5848],{"type":30,"value":5849},"subdomains",{"type":30,"value":1292},{"type":17,"tag":47,"props":5852,"children":5854},{"className":5853},[],[5855],{"type":30,"value":5856},"domain",{"type":30,"value":5442},{"type":17,"tag":47,"props":5859,"children":5861},{"className":5860},[],[5862],{"type":30,"value":5863},"tld",{"type":30,"value":132},{"type":17,"tag":454,"props":5866,"children":5867},{},[5868,5873,5875,5881,5883,5889],{"type":17,"tag":26,"props":5869,"children":5870},{},[5871],{"type":30,"value":5872},"Base URL:",{"type":30,"value":5874}," It constructs a ",{"type":17,"tag":47,"props":5876,"children":5878},{"className":5877},[],[5879],{"type":30,"value":5880},"base_url",{"type":30,"value":5882}," (e.g., ",{"type":17,"tag":47,"props":5884,"children":5886},{"className":5885},[],[5887],{"type":30,"value":5888},"https://example.com:8443",{"type":30,"value":5890},") for convenience.",{"type":17,"tag":22,"props":5892,"children":5893},{},[5894],{"type":17,"tag":26,"props":5895,"children":5896},{},[5897],{"type":30,"value":420},{"type":17,"tag":90,"props":5899,"children":5902},{"className":5900,"code":5901,"language":95,"meta":8},[93],"target update my-server url \"https://api.example.com/v1?user=test\"\n",[5903],{"type":17,"tag":47,"props":5904,"children":5905},{"__ignoreMap":8},[5906],{"type":30,"value":5901},{"type":17,"tag":22,"props":5908,"children":5909},{},[5910],{"type":30,"value":5911},"This single command populates over a dozen fields, making a vast number of placeholders instantly available.",{"type":17,"tag":56,"props":5913,"children":5915},{"id":5914},"tool-the-sudo-field",[5916,5918,5923],{"type":30,"value":5917},"Tool: The ",{"type":17,"tag":47,"props":5919,"children":5921},{"className":5920},[],[5922],{"type":30,"value":4899},{"type":30,"value":5748},{"type":17,"tag":22,"props":5925,"children":5926},{},[5927,5929,5934,5936,5941],{"type":30,"value":5928},"Setting the ",{"type":17,"tag":47,"props":5930,"children":5932},{"className":5931},[],[5933],{"type":30,"value":4899},{"type":30,"value":5935}," field to ",{"type":17,"tag":47,"props":5937,"children":5939},{"className":5938},[],[5940],{"type":30,"value":1675},{"type":30,"value":5942}," marks a tool as requiring root privileges.",{"type":17,"tag":90,"props":5944,"children":5947},{"className":5945,"code":5946,"language":95,"meta":8},[93],"tool update nmap sudo true\n",[5948],{"type":17,"tag":47,"props":5949,"children":5950},{"__ignoreMap":8},[5951],{"type":30,"value":5946},{"type":17,"tag":22,"props":5953,"children":5954},{},[5955,5957,5962,5964,5969],{"type":30,"value":5956},"When you run this tool, ",{"type":17,"tag":47,"props":5958,"children":5960},{"className":5959},[],[5961],{"type":30,"value":52},{"type":30,"value":5963}," will automatically prepend ",{"type":17,"tag":47,"props":5965,"children":5967},{"className":5966},[],[5968],{"type":30,"value":4899},{"type":30,"value":5970}," to the command and handle the password prompt if necessary.",{"type":17,"tag":56,"props":5972,"children":5974},{"id":5973},"proxy-the-wrapper_needs_sudo-field",[5975,5977,5982],{"type":30,"value":5976},"Proxy: The ",{"type":17,"tag":47,"props":5978,"children":5980},{"className":5979},[],[5981],{"type":30,"value":4877},{"type":30,"value":5748},{"type":17,"tag":22,"props":5984,"children":5985},{},[5986,5988,5993,5995,6000],{"type":30,"value":5987},"This is similar to the tool's ",{"type":17,"tag":47,"props":5989,"children":5991},{"className":5990},[],[5992],{"type":30,"value":4899},{"type":30,"value":5994}," field but applies specifically to the proxy wrapper command (like ",{"type":17,"tag":47,"props":5996,"children":5998},{"className":5997},[],[5999],{"type":30,"value":4572},{"type":30,"value":1167},{"type":17,"tag":90,"props":6002,"children":6004},{"className":6003,"code":4905,"language":95,"meta":8},[93],[6005],{"type":17,"tag":47,"props":6006,"children":6007},{"__ignoreMap":8},[6008],{"type":30,"value":4905},{"type":17,"tag":22,"props":6010,"children":6011},{},[6012,6014,6019],{"type":30,"value":6013},"If the proxy is enabled and this flag is set, the entire command (including the wrapper) will be executed with ",{"type":17,"tag":47,"props":6015,"children":6017},{"className":6016},[],[6018],{"type":30,"value":4899},{"type":30,"value":132},{"type":17,"tag":56,"props":6021,"children":6023},{"id":6022},"tool-the-execute_per_param-field",[6024,6025,6031],{"type":30,"value":5917},{"type":17,"tag":47,"props":6026,"children":6028},{"className":6027},[],[6029],{"type":30,"value":6030},"execute_per_param",{"type":30,"value":5748},{"type":17,"tag":22,"props":6033,"children":6034},{},[6035,6037,6043],{"type":30,"value":6036},"This boolean field, set on a tool's command, changes how the final command is built and run. By default (",{"type":17,"tag":47,"props":6038,"children":6040},{"className":6039},[],[6041],{"type":30,"value":6042},"false",{"type":30,"value":6044},"), all parameters are joined into a single command line.",{"type":17,"tag":569,"props":6046,"children":6048},{"id":6047},"value-true",[6049,6051],{"type":30,"value":6050},"Value: ",{"type":17,"tag":47,"props":6052,"children":6054},{"className":6053},[],[6055],{"type":30,"value":1675},{"type":17,"tag":22,"props":6057,"children":6058},{},[6059,6061,6066,6067,6072,6073,6078,6080,6085,6087,6092],{"type":30,"value":6060},"If you set ",{"type":17,"tag":47,"props":6062,"children":6064},{"className":6063},[],[6065],{"type":30,"value":6030},{"type":30,"value":4879},{"type":17,"tag":47,"props":6068,"children":6070},{"className":6069},[],[6071],{"type":30,"value":1675},{"type":30,"value":1292},{"type":17,"tag":47,"props":6074,"children":6076},{"className":6075},[],[6077],{"type":30,"value":52},{"type":30,"value":6079}," will execute the tool's command ",{"type":17,"tag":26,"props":6081,"children":6082},{},[6083],{"type":30,"value":6084},"once for each parameter",{"type":30,"value":6086}," in the list. This is perfect for creating dynamic checklists with ",{"type":17,"tag":47,"props":6088,"children":6090},{"className":6089},[],[6091],{"type":30,"value":173},{"type":30,"value":132},{"type":17,"tag":22,"props":6094,"children":6095},{},[6096],{"type":17,"tag":26,"props":6097,"children":6098},{},[6099],{"type":30,"value":420},{"type":17,"tag":90,"props":6101,"children":6104},{"className":6102,"code":6103,"language":95,"meta":8},[93],"tool update checklist web-recon execute_per_param true\n",[6105],{"type":17,"tag":47,"props":6106,"children":6107},{"__ignoreMap":8},[6108],{"type":30,"value":6103},{"type":17,"tag":22,"props":6110,"children":6111},{},[6112,6114,6120,6122,6127],{"type":30,"value":6113},"Now, when ",{"type":17,"tag":47,"props":6115,"children":6117},{"className":6116},[],[6118],{"type":30,"value":6119},"pwn web-recon now",{"type":30,"value":6121}," is run, it will execute ",{"type":17,"tag":47,"props":6123,"children":6125},{"className":6124},[],[6126],{"type":30,"value":173},{"type":30,"value":6128}," for each line of the checklist, producing a clean, multi-line output.",{"title":8,"searchDepth":12,"depth":12,"links":6130},[6131,6133,6135,6137],{"id":5738,"depth":12,"text":6132},"Target: The url Field",{"id":5914,"depth":12,"text":6134},"Tool: The sudo Field",{"id":5973,"depth":12,"text":6136},"Proxy: The wrapper_needs_sudo Field",{"id":6022,"depth":12,"text":6138,"children":6139},"Tool: The execute_per_param Field",[6140],{"id":6047,"depth":1182,"text":6141},"Value: true","content:docs:special_fields.md","docs/special_fields.md","docs/special_fields",{"_path":6146,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":6147,"description":8,"slug":6148,"category":4926,"order":361,"body":6149,"_type":350,"_id":6348,"_source":352,"_file":6349,"_stem":6350,"_extension":355},"/docs/targets","Managing Targets","targets",{"type":14,"children":6150,"toc":6343},[6151,6163,6168,6180,6199,6211,6231,6312,6317,6323,6334],{"type":17,"tag":18,"props":6152,"children":6153},{},[6154],{"type":17,"tag":22,"props":6155,"children":6156},{},[6157,6161],{"type":17,"tag":26,"props":6158,"children":6159},{},[6160],{"type":30,"value":31},{"type":30,"value":6162}," Manage targets, the central objects for an engagement that hold all discovered information.",{"type":17,"tag":35,"props":6164,"children":6166},{"id":6165},"managing-targets",[6167],{"type":30,"value":6147},{"type":17,"tag":22,"props":6169,"children":6170},{},[6171,6173,6178],{"type":30,"value":6172},"A Target is the central object for an engagement. It holds all the ",{"type":17,"tag":26,"props":6174,"children":6175},{},[6176],{"type":30,"value":6177},"technical information",{"type":30,"value":6179}," you discover about a specific asset (like an IP address or domain).",{"type":17,"tag":18,"props":6181,"children":6182},{},[6183],{"type":17,"tag":22,"props":6184,"children":6185},{},[6186,6190,6192,6197],{"type":17,"tag":542,"props":6187,"children":6188},{},[6189],{"type":30,"value":4706},{"type":30,"value":6191},"\nAnalytical findings like your personal notes and discovered loot (credentials, flags) are stored in a separate ",{"type":17,"tag":47,"props":6193,"children":6195},{"className":6194},[],[6196],{"type":30,"value":840},{"type":30,"value":6198}," object, not in the target itself.",{"type":17,"tag":56,"props":6200,"children":6202},{"id":6201},"the-power-of-the-url-field",[6203,6205,6210],{"type":30,"value":6204},"The Power of the ",{"type":17,"tag":47,"props":6206,"children":6208},{"className":6207},[],[6209],{"type":30,"value":2032},{"type":30,"value":5748},{"type":17,"tag":22,"props":6212,"children":6213},{},[6214,6216,6222,6224,6229],{"type":30,"value":6215},"The most important command is ",{"type":17,"tag":47,"props":6217,"children":6219},{"className":6218},[],[6220],{"type":30,"value":6221},"target update \u003Cname> url \u003Curl>",{"type":30,"value":6223},". When you provide a URL, ",{"type":17,"tag":47,"props":6225,"children":6227},{"className":6226},[],[6228],{"type":30,"value":52},{"type":30,"value":6230}," automatically parses it and populates numerous fields for you:",{"type":17,"tag":450,"props":6232,"children":6233},{},[6234,6245,6273,6295],{"type":17,"tag":454,"props":6235,"children":6236},{},[6237,6243],{"type":17,"tag":47,"props":6238,"children":6240},{"className":6239},[],[6241],{"type":30,"value":6242},"ip",{"type":30,"value":6244},": Resolves the hostname to an IP address.",{"type":17,"tag":454,"props":6246,"children":6247},{},[6248,6253,6254,6259,6260,6265,6266,6271],{"type":17,"tag":47,"props":6249,"children":6251},{"className":6250},[],[6252],{"type":30,"value":5802},{"type":30,"value":1292},{"type":17,"tag":47,"props":6255,"children":6257},{"className":6256},[],[6258],{"type":30,"value":5809},{"type":30,"value":1292},{"type":17,"tag":47,"props":6261,"children":6263},{"className":6262},[],[6264],{"type":30,"value":5795},{"type":30,"value":1292},{"type":17,"tag":47,"props":6267,"children":6269},{"className":6268},[],[6270],{"type":30,"value":5816},{"type":30,"value":6272},": Basic URL components.",{"type":17,"tag":454,"props":6274,"children":6275},{},[6276,6281,6282,6287,6288,6293],{"type":17,"tag":47,"props":6277,"children":6279},{"className":6278},[],[6280],{"type":30,"value":5856},{"type":30,"value":1292},{"type":17,"tag":47,"props":6283,"children":6285},{"className":6284},[],[6286],{"type":30,"value":5863},{"type":30,"value":1292},{"type":17,"tag":47,"props":6289,"children":6291},{"className":6290},[],[6292],{"type":30,"value":5849},{"type":30,"value":6294},": Detailed domain information.",{"type":17,"tag":454,"props":6296,"children":6297},{},[6298,6303,6304,6310],{"type":17,"tag":47,"props":6299,"children":6301},{"className":6300},[],[6302],{"type":30,"value":5823},{"type":30,"value":1292},{"type":17,"tag":47,"props":6305,"children":6307},{"className":6306},[],[6308],{"type":30,"value":6309},"query_values",{"type":30,"value":6311},": Parsed query string parameters.",{"type":17,"tag":22,"props":6313,"children":6314},{},[6315],{"type":30,"value":6316},"This means you only need to set the URL, and dozens of useful placeholders become available instantly.",{"type":17,"tag":56,"props":6318,"children":6320},{"id":6319},"active-information-gathering",[6321],{"type":30,"value":6322},"Active Information Gathering",{"type":17,"tag":22,"props":6324,"children":6325},{},[6326,6328,6333],{"type":30,"value":6327},"Beyond parsing, you can actively gather information with the ",{"type":17,"tag":47,"props":6329,"children":6331},{"className":6330},[],[6332],{"type":30,"value":2039},{"type":30,"value":2649},{"type":17,"tag":90,"props":6335,"children":6338},{"className":6336,"code":6337,"language":95,"meta":8},[93],"target gather my-server dns     # Gets A, AAAA, CNAME, MX, NS, TXT records\ntarget gather my-server whois   # Performs a WHOIS lookup on the main domain\ntarget gather my-server http    # Retrieves HTTP headers and the SSL certificate\ntarget gather my-server geo     # Retrieves Geo-IP information for the target's IP\ntarget gather my-server all     # Does all of the above\n",[6339],{"type":17,"tag":47,"props":6340,"children":6341},{"__ignoreMap":8},[6342],{"type":30,"value":6337},{"title":8,"searchDepth":12,"depth":12,"links":6344},[6345,6347],{"id":6201,"depth":12,"text":6346},"The Power of the url Field",{"id":6319,"depth":12,"text":6322},"content:docs:targets.md","docs/targets.md","docs/targets",{"_path":6352,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":6353,"description":8,"slug":6354,"category":4926,"order":12,"body":6355,"_type":350,"_id":6657,"_source":352,"_file":6658,"_stem":6659,"_extension":355},"/docs/tools","Configuring Tools","tools",{"type":14,"children":6356,"toc":6645},[6357,6369,6374,6391,6397,6408,6420,6431,6440,6451,6460,6471,6480,6492,6498,6518,6529,6538,6550,6556,6561,6584,6593,6612,6618,6637],{"type":17,"tag":18,"props":6358,"children":6359},{},[6360],{"type":17,"tag":22,"props":6361,"children":6362},{},[6363,6367],{"type":17,"tag":26,"props":6364,"children":6365},{},[6366],{"type":30,"value":31},{"type":30,"value":6368}," Define reusable templates for external command-line tools like nmap or gobuster.",{"type":17,"tag":35,"props":6370,"children":6372},{"id":6371},"configuring-tools",[6373],{"type":30,"value":6353},{"type":17,"tag":22,"props":6375,"children":6376},{},[6377,6379,6384,6385,6390],{"type":30,"value":6378},"A Tool is a reusable template for an external command. This is where you define how to use programs like ",{"type":17,"tag":47,"props":6380,"children":6382},{"className":6381},[],[6383],{"type":30,"value":1290},{"type":30,"value":3632},{"type":17,"tag":47,"props":6386,"children":6388},{"className":6387},[],[6389],{"type":30,"value":4635},{"type":30,"value":132},{"type":17,"tag":56,"props":6392,"children":6394},{"id":6393},"commands-and-parameters",[6395],{"type":30,"value":6396},"Commands and Parameters",{"type":17,"tag":22,"props":6398,"children":6399},{},[6400,6402,6407],{"type":30,"value":6401},"A tool can have multiple \"commands\". Each command is just a label for a specific set of parameters. The key to flexibility is to ",{"type":17,"tag":26,"props":6403,"children":6404},{},[6405],{"type":30,"value":6406},"add each parameter individually",{"type":30,"value":132},{"type":17,"tag":569,"props":6409,"children":6411},{"id":6410},"example-for-nmap",[6412,6414,6419],{"type":30,"value":6413},"Example for ",{"type":17,"tag":47,"props":6415,"children":6417},{"className":6416},[],[6418],{"type":30,"value":1290},{"type":30,"value":2902},{"type":17,"tag":2235,"props":6421,"children":6422},{},[6423],{"type":17,"tag":454,"props":6424,"children":6425},{},[6426],{"type":17,"tag":26,"props":6427,"children":6428},{},[6429],{"type":30,"value":6430},"Create the tool:",{"type":17,"tag":90,"props":6432,"children":6435},{"className":6433,"code":6434,"language":95,"meta":8},[93],"tool add nmap\n",[6436],{"type":17,"tag":47,"props":6437,"children":6438},{"__ignoreMap":8},[6439],{"type":30,"value":6434},{"type":17,"tag":2235,"props":6441,"children":6442},{"start":12},[6443],{"type":17,"tag":454,"props":6444,"children":6445},{},[6446],{"type":17,"tag":26,"props":6447,"children":6448},{},[6449],{"type":30,"value":6450},"Add a 'quick-scan' command:",{"type":17,"tag":90,"props":6452,"children":6455},{"className":6453,"code":6454,"language":95,"meta":8},[93],"tool update nmap command quick-scan\n",[6456],{"type":17,"tag":47,"props":6457,"children":6458},{"__ignoreMap":8},[6459],{"type":30,"value":6454},{"type":17,"tag":2235,"props":6461,"children":6462},{"start":1182},[6463],{"type":17,"tag":454,"props":6464,"children":6465},{},[6466],{"type":17,"tag":26,"props":6467,"children":6468},{},[6469],{"type":30,"value":6470},"Add parameters individually:",{"type":17,"tag":90,"props":6472,"children":6475},{"className":6473,"code":6474,"language":95,"meta":8},[93],"tool update nmap quick-scan param \"-sV\"\ntool update nmap quick-scan param \"-T4\"\ntool update nmap quick-scan param \"$target.ip\"\n",[6476],{"type":17,"tag":47,"props":6477,"children":6478},{"__ignoreMap":8},[6479],{"type":30,"value":6474},{"type":17,"tag":22,"props":6481,"children":6482},{},[6483,6485,6491],{"type":30,"value":6484},"This creates a command that will be assembled as ",{"type":17,"tag":47,"props":6486,"children":6488},{"className":6487},[],[6489],{"type":30,"value":6490},"nmap -sV -T4 192.168.1.1",{"type":30,"value":132},{"type":17,"tag":56,"props":6493,"children":6495},{"id":6494},"parameter-value-separation",[6496],{"type":30,"value":6497},"Parameter & Value Separation",{"type":17,"tag":22,"props":6499,"children":6500},{},[6501,6503,6509,6511,6516],{"type":30,"value":6502},"For tools where a parameter and its value are separate (e.g., ",{"type":17,"tag":47,"props":6504,"children":6506},{"className":6505},[],[6507],{"type":30,"value":6508},"gobuster dir -u \u003Curl>",{"type":30,"value":6510},"), you should add them as separate parameters in ",{"type":17,"tag":47,"props":6512,"children":6514},{"className":6513},[],[6515],{"type":30,"value":52},{"type":30,"value":6517},". This makes the tool configuration even more modular.",{"type":17,"tag":569,"props":6519,"children":6521},{"id":6520},"example-for-gobuster",[6522,6523,6528],{"type":30,"value":6413},{"type":17,"tag":47,"props":6524,"children":6526},{"className":6525},[],[6527],{"type":30,"value":1298},{"type":30,"value":2902},{"type":17,"tag":90,"props":6530,"children":6533},{"className":6531,"code":6532,"language":95,"meta":8},[93],"tool add gobuster\ntool update gobuster command dir\ntool update gobuster dir param \"-u\"\ntool update gobuster dir param \"$target.base_url\"\ntool update gobuster dir param \"-w\"\ntool update gobuster dir param \"$wordlist.path\"\n",[6534],{"type":17,"tag":47,"props":6535,"children":6536},{"__ignoreMap":8},[6537],{"type":30,"value":6532},{"type":17,"tag":22,"props":6539,"children":6540},{},[6541,6543,6549],{"type":30,"value":6542},"This approach is more flexible than ",{"type":17,"tag":47,"props":6544,"children":6546},{"className":6545},[],[6547],{"type":30,"value":6548},"param \"-u $target.base_url\"",{"type":30,"value":132},{"type":17,"tag":56,"props":6551,"children":6553},{"id":6552},"reordering-parameters",[6554],{"type":30,"value":6555},"Reordering Parameters",{"type":17,"tag":22,"props":6557,"children":6558},{},[6559],{"type":30,"value":6560},"Because parameters are stored as a list, you can change their order. This is useful if a tool requires a specific argument sequence.",{"type":17,"tag":22,"props":6562,"children":6563},{},[6564,6568,6570,6575,6577,6582],{"type":17,"tag":26,"props":6565,"children":6566},{},[6567],{"type":30,"value":420},{"type":30,"value":6569},"\nLet's say we want ",{"type":17,"tag":47,"props":6571,"children":6573},{"className":6572},[],[6574],{"type":30,"value":4139},{"type":30,"value":6576}," to be the first parameter for our ",{"type":17,"tag":47,"props":6578,"children":6580},{"className":6579},[],[6581],{"type":30,"value":1290},{"type":30,"value":6583}," quick-scan.",{"type":17,"tag":90,"props":6585,"children":6588},{"className":6586,"code":6587,"language":95,"meta":8},[93],"tool reorder nmap quick-scan 3 1\n",[6589],{"type":17,"tag":47,"props":6590,"children":6591},{"__ignoreMap":8},[6592],{"type":30,"value":6587},{"type":17,"tag":22,"props":6594,"children":6595},{},[6596,6598,6603,6605,6611],{"type":30,"value":6597},"This moves the 3rd parameter (",{"type":17,"tag":47,"props":6599,"children":6601},{"className":6600},[],[6602],{"type":30,"value":4139},{"type":30,"value":6604},") to the 1st position. The new command would be ",{"type":17,"tag":47,"props":6606,"children":6608},{"className":6607},[],[6609],{"type":30,"value":6610},"nmap $target.ip -sV -T4",{"type":30,"value":132},{"type":17,"tag":56,"props":6613,"children":6615},{"id":6614},"sudo-handling",[6616],{"type":30,"value":6617},"Sudo Handling",{"type":17,"tag":22,"props":6619,"children":6620},{},[6621,6623,6628,6630,6635],{"type":30,"value":6622},"If a tool requires root privileges, you can mark it once. ",{"type":17,"tag":47,"props":6624,"children":6626},{"className":6625},[],[6627],{"type":30,"value":52},{"type":30,"value":6629}," will then automatically handle the ",{"type":17,"tag":47,"props":6631,"children":6633},{"className":6632},[],[6634],{"type":30,"value":4899},{"type":30,"value":6636}," prompt when you run it.",{"type":17,"tag":90,"props":6638,"children":6640},{"className":6639,"code":5946,"language":95,"meta":8},[93],[6641],{"type":17,"tag":47,"props":6642,"children":6643},{"__ignoreMap":8},[6644],{"type":30,"value":5946},{"title":8,"searchDepth":12,"depth":12,"links":6646},[6647,6651,6655,6656],{"id":6393,"depth":12,"text":6396,"children":6648},[6649],{"id":6410,"depth":1182,"text":6650},"Example for nmap:",{"id":6494,"depth":12,"text":6497,"children":6652},[6653],{"id":6520,"depth":1182,"text":6654},"Example for gobuster:",{"id":6552,"depth":12,"text":6555},{"id":6614,"depth":12,"text":6617},"content:docs:tools.md","docs/tools.md","docs/tools",{"_path":6661,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":6662,"description":8,"slug":6663,"category":1220,"order":2956,"body":6664,"_type":350,"_id":6863,"_source":352,"_file":6864,"_stem":6865,"_extension":355},"/docs/usage","Usage Sequence","usage",{"type":14,"children":6665,"toc":6854},[6666,6678,6683,6694,6700,6712,6721,6727,6732,6741,6747,6752,6761,6767,6772,6781,6787,6792,6801,6807,6825,6834,6840,6845],{"type":17,"tag":18,"props":6667,"children":6668},{},[6669],{"type":17,"tag":22,"props":6670,"children":6671},{},[6672,6676],{"type":17,"tag":26,"props":6673,"children":6674},{},[6675],{"type":30,"value":31},{"type":30,"value":6677}," A common step-by-step workflow for using pwnity, from target creation to documenting findings.",{"type":17,"tag":35,"props":6679,"children":6681},{"id":6680},"usage-sequence",[6682],{"type":30,"value":6662},{"type":17,"tag":22,"props":6684,"children":6685},{},[6686,6688,6693],{"type":30,"value":6687},"Here is a common step-by-step workflow for using ",{"type":17,"tag":47,"props":6689,"children":6691},{"className":6690},[],[6692],{"type":30,"value":52},{"type":30,"value":132},{"type":17,"tag":56,"props":6695,"children":6697},{"id":6696},"_1-create-and-configure-a-target",[6698],{"type":30,"value":6699},"1. Create and Configure a Target",{"type":17,"tag":22,"props":6701,"children":6702},{},[6703,6705,6710],{"type":30,"value":6704},"First, create a target and give it a URL. ",{"type":17,"tag":47,"props":6706,"children":6708},{"className":6707},[],[6709],{"type":30,"value":52},{"type":30,"value":6711}," will automatically parse it.",{"type":17,"tag":90,"props":6713,"children":6716},{"className":6714,"code":6715,"language":95,"meta":8},[93],"target add web-server\ntarget update web-server url http://192.168.1.10/login\n",[6717],{"type":17,"tag":47,"props":6718,"children":6719},{"__ignoreMap":8},[6720],{"type":30,"value":6715},{"type":17,"tag":56,"props":6722,"children":6724},{"id":6723},"_2-create-and-configure-a-tool",[6725],{"type":30,"value":6726},"2. Create and Configure a Tool",{"type":17,"tag":22,"props":6728,"children":6729},{},[6730],{"type":30,"value":6731},"Next, set up the tool you want to use. Define its subcommands and parameters using placeholders.",{"type":17,"tag":90,"props":6733,"children":6736},{"className":6734,"code":6735,"language":95,"meta":8},[93],"tool add gobuster\ntool update gobuster command dir\ntool update gobuster dir param \"-u $target.base_url\"\ntool update gobuster dir param \"-w $wordlist.path\"\n",[6737],{"type":17,"tag":47,"props":6738,"children":6739},{"__ignoreMap":8},[6740],{"type":30,"value":6735},{"type":17,"tag":56,"props":6742,"children":6744},{"id":6743},"_3-add-a-wordlist",[6745],{"type":30,"value":6746},"3. Add a Wordlist",{"type":17,"tag":22,"props":6748,"children":6749},{},[6750],{"type":30,"value":6751},"If your tool needs a wordlist, add a reference to it.",{"type":17,"tag":90,"props":6753,"children":6756},{"className":6754,"code":6755,"language":95,"meta":8},[93],"wordlist add common-dirs\nwordlist update common-dirs path /usr/share/wordlists/dirb/common.txt\n",[6757],{"type":17,"tag":47,"props":6758,"children":6759},{"__ignoreMap":8},[6760],{"type":30,"value":6755},{"type":17,"tag":56,"props":6762,"children":6764},{"id":6763},"_4-create-and-load-a-report",[6765],{"type":30,"value":6766},"4. Create and Load a Report",{"type":17,"tag":22,"props":6768,"children":6769},{},[6770],{"type":30,"value":6771},"Before you can save notes or loot, you need a report to store them in.",{"type":17,"tag":90,"props":6773,"children":6776},{"className":6774,"code":6775,"language":95,"meta":8},[93],"report add web-server-report\nreport load web-server-report\n",[6777],{"type":17,"tag":47,"props":6778,"children":6779},{"__ignoreMap":8},[6780],{"type":30,"value":6775},{"type":17,"tag":56,"props":6782,"children":6784},{"id":6783},"_5-load-everything-into-the-session",[6785],{"type":30,"value":6786},"5. Load Everything into the Session",{"type":17,"tag":22,"props":6788,"children":6789},{},[6790],{"type":30,"value":6791},"Load your created objects into the current session. The prompt will update to show the context.",{"type":17,"tag":90,"props":6793,"children":6796},{"className":6794,"code":6795,"language":95,"meta":8},[93],"target load web-server\ntool load gobuster\nwordlist load common-dirs\nwordlist load web-server-report\n",[6797],{"type":17,"tag":47,"props":6798,"children":6799},{"__ignoreMap":8},[6800],{"type":30,"value":6795},{"type":17,"tag":56,"props":6802,"children":6804},{"id":6803},"_6-run-the-scan",[6805],{"type":30,"value":6806},"6. Run the Scan",{"type":17,"tag":22,"props":6808,"children":6809},{},[6810,6812,6817,6819,6824],{"type":30,"value":6811},"Preview the command, then execute it in the foreground (",{"type":17,"tag":47,"props":6813,"children":6815},{"className":6814},[],[6816],{"type":30,"value":2698},{"type":30,"value":6818},") or background (",{"type":17,"tag":47,"props":6820,"children":6822},{"className":6821},[],[6823],{"type":30,"value":2683},{"type":30,"value":1167},{"type":17,"tag":90,"props":6826,"children":6829},{"className":6827,"code":6828,"language":95,"meta":8},[93],"pwn dir          # Preview the command\npwn dir now      # Run it now\npwn dir bg      # Run it in background\n",[6830],{"type":17,"tag":47,"props":6831,"children":6832},{"__ignoreMap":8},[6833],{"type":30,"value":6828},{"type":17,"tag":56,"props":6835,"children":6837},{"id":6836},"_7-document-findings",[6838],{"type":30,"value":6839},"7. Document Findings",{"type":17,"tag":22,"props":6841,"children":6842},{},[6843],{"type":30,"value":6844},"As you find things, add them to the loaded report or use a predefined parser",{"type":17,"tag":90,"props":6846,"children":6849},{"className":6847,"code":6848,"language":95,"meta":8},[93],"note add \"Found admin panel at /admin-portal\"\nloot add credential admin:password123\n\n# and/or\n\nparser apply gobuster \u003Cjob-id>\n\n",[6850],{"type":17,"tag":47,"props":6851,"children":6852},{"__ignoreMap":8},[6853],{"type":30,"value":6848},{"title":8,"searchDepth":12,"depth":12,"links":6855},[6856,6857,6858,6859,6860,6861,6862],{"id":6696,"depth":12,"text":6699},{"id":6723,"depth":12,"text":6726},{"id":6743,"depth":12,"text":6746},{"id":6763,"depth":12,"text":6766},{"id":6783,"depth":12,"text":6786},{"id":6803,"depth":12,"text":6806},{"id":6836,"depth":12,"text":6839},"content:docs:usage.md","docs/usage.md","docs/usage",{"_path":6867,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":6868,"description":8,"slug":6869,"category":4926,"order":1182,"body":6870,"_type":350,"_id":7170,"_source":352,"_file":7171,"_stem":7172,"_extension":355},"/docs/wordlists","Managing Wordlists","wordlists",{"type":14,"children":6871,"toc":7160},[6872,6884,6889,6894,6907,6911,6948,6952,6958,6963,6972,6978,6990,6999,7005,7023,7032,7038,7043,7052,7058],{"type":17,"tag":18,"props":6873,"children":6874},{},[6875],{"type":17,"tag":22,"props":6876,"children":6877},{},[6878,6882],{"type":17,"tag":26,"props":6879,"children":6880},{},[6881],{"type":30,"value":31},{"type":30,"value":6883}," Manage named references to wordlist files for use in tool commands.",{"type":17,"tag":35,"props":6885,"children":6887},{"id":6886},"managing-wordlists",[6888],{"type":30,"value":6868},{"type":17,"tag":22,"props":6890,"children":6891},{},[6892],{"type":30,"value":6893},"In pwnity, a wordlist is not the content of the list itself, but rather a named reference (or pointer) to a wordlist file on your system. This approach allows you to manage large lists efficiently without duplicating data.",{"type":17,"tag":22,"props":6895,"children":6896},{},[6897,6899,6905],{"type":30,"value":6898},"The primary purpose is to make the file path available through the ",{"type":17,"tag":47,"props":6900,"children":6902},{"className":6901},[],[6903],{"type":30,"value":6904},"$wordlist.path",{"type":30,"value":6906}," placeholder, which can then be used in your tool configurations.",{"type":17,"tag":56,"props":6908,"children":6909},{"id":1237},[6910],{"type":30,"value":1218},{"type":17,"tag":450,"props":6912,"children":6913},{},[6914,6938],{"type":17,"tag":454,"props":6915,"children":6916},{},[6917,6922,6924,6930,6931,6937],{"type":17,"tag":26,"props":6918,"children":6919},{},[6920],{"type":30,"value":6921},"Wordlist Object:",{"type":30,"value":6923}," A simple JSON object with a ",{"type":17,"tag":47,"props":6925,"children":6927},{"className":6926},[],[6928],{"type":30,"value":6929},"name",{"type":30,"value":3267},{"type":17,"tag":47,"props":6932,"children":6934},{"className":6933},[],[6935],{"type":30,"value":6936},"path",{"type":30,"value":132},{"type":17,"tag":454,"props":6939,"children":6940},{},[6941,6946],{"type":17,"tag":26,"props":6942,"children":6943},{},[6944],{"type":30,"value":6945},"Session Loading:",{"type":30,"value":6947}," Loading a wordlist into a session makes its path available to any tool run within that session.",{"type":17,"tag":56,"props":6949,"children":6950},{"id":2886},[6951],{"type":30,"value":2889},{"type":17,"tag":569,"props":6953,"children":6955},{"id":6954},"_1-create-a-wordlist-reference",[6956],{"type":30,"value":6957},"1. Create a Wordlist Reference",{"type":17,"tag":22,"props":6959,"children":6960},{},[6961],{"type":30,"value":6962},"First, create a named entry for the wordlist you want to use.",{"type":17,"tag":90,"props":6964,"children":6967},{"className":6965,"code":6966,"language":95,"meta":8},[93],"wordlist add common-directories\n",[6968],{"type":17,"tag":47,"props":6969,"children":6970},{"__ignoreMap":8},[6971],{"type":30,"value":6966},{"type":17,"tag":569,"props":6973,"children":6975},{"id":6974},"_2-set-the-file-path",[6976],{"type":30,"value":6977},"2. Set the File Path",{"type":17,"tag":22,"props":6979,"children":6980},{},[6981,6983,6988],{"type":30,"value":6982},"Next, tell ",{"type":17,"tag":47,"props":6984,"children":6986},{"className":6985},[],[6987],{"type":30,"value":52},{"type":30,"value":6989}," where the actual file is located.",{"type":17,"tag":90,"props":6991,"children":6994},{"className":6992,"code":6993,"language":95,"meta":8},[93],"wordlist update common-directories path /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt\n",[6995],{"type":17,"tag":47,"props":6996,"children":6997},{"__ignoreMap":8},[6998],{"type":30,"value":6993},{"type":17,"tag":569,"props":7000,"children":7002},{"id":7001},"_3-use-it-in-a-tool",[7003],{"type":30,"value":7004},"3. Use it in a Tool",{"type":17,"tag":22,"props":7006,"children":7007},{},[7008,7010,7015,7017,7022],{"type":30,"value":7009},"Configure a tool (like ",{"type":17,"tag":47,"props":7011,"children":7013},{"className":7012},[],[7014],{"type":30,"value":1298},{"type":30,"value":7016},") to use the ",{"type":17,"tag":47,"props":7018,"children":7020},{"className":7019},[],[7021],{"type":30,"value":6904},{"type":30,"value":4487},{"type":17,"tag":90,"props":7024,"children":7027},{"className":7025,"code":7026,"language":95,"meta":8},[93],"tool update gobuster dir param \"-w $wordlist.path\"\n",[7028],{"type":17,"tag":47,"props":7029,"children":7030},{"__ignoreMap":8},[7031],{"type":30,"value":7026},{"type":17,"tag":569,"props":7033,"children":7035},{"id":7034},"_4-load-and-run",[7036],{"type":30,"value":7037},"4. Load and Run",{"type":17,"tag":22,"props":7039,"children":7040},{},[7041],{"type":30,"value":7042},"Load the wordlist into your session before running the tool.",{"type":17,"tag":90,"props":7044,"children":7047},{"className":7045,"code":7046,"language":95,"meta":8},[93],"wordlist load common-directories\npwn dir now\n# pwnity resolves $wordlist.path to the full file path when executing the command.\n",[7048],{"type":17,"tag":47,"props":7049,"children":7050},{"__ignoreMap":8},[7051],{"type":30,"value":7046},{"type":17,"tag":56,"props":7053,"children":7055},{"id":7054},"all-commands",[7056],{"type":30,"value":7057},"All Commands",{"type":17,"tag":450,"props":7059,"children":7060},{},[7061,7072,7083,7094,7105,7116,7127,7138,7149],{"type":17,"tag":454,"props":7062,"children":7063},{},[7064,7070],{"type":17,"tag":47,"props":7065,"children":7067},{"className":7066},[],[7068],{"type":30,"value":7069},"wordlist add \u003Cname>",{"type":30,"value":7071},": Creates a new, empty wordlist reference.",{"type":17,"tag":454,"props":7073,"children":7074},{},[7075,7081],{"type":17,"tag":47,"props":7076,"children":7078},{"className":7077},[],[7079],{"type":30,"value":7080},"wordlist list",{"type":30,"value":7082},": Lists all available wordlists.",{"type":17,"tag":454,"props":7084,"children":7085},{},[7086,7092],{"type":17,"tag":47,"props":7087,"children":7089},{"className":7088},[],[7090],{"type":30,"value":7091},"wordlist show \u003Cname>",{"type":30,"value":7093},": Displays the details (like the path) of a wordlist.",{"type":17,"tag":454,"props":7095,"children":7096},{},[7097,7103],{"type":17,"tag":47,"props":7098,"children":7100},{"className":7099},[],[7101],{"type":30,"value":7102},"wordlist update \u003Cname> path \u003Cvalue>",{"type":30,"value":7104},": Sets the file path for the wordlist.",{"type":17,"tag":454,"props":7106,"children":7107},{},[7108,7114],{"type":17,"tag":47,"props":7109,"children":7111},{"className":7110},[],[7112],{"type":30,"value":7113},"wordlist load \u003Cname>",{"type":30,"value":7115},": Loads the wordlist into the current session.",{"type":17,"tag":454,"props":7117,"children":7118},{},[7119,7125],{"type":17,"tag":47,"props":7120,"children":7122},{"className":7121},[],[7123],{"type":30,"value":7124},"wordlist unload",{"type":30,"value":7126},": Unloads the wordlist from the current session.",{"type":17,"tag":454,"props":7128,"children":7129},{},[7130,7136],{"type":17,"tag":47,"props":7131,"children":7133},{"className":7132},[],[7134],{"type":30,"value":7135},"wordlist rename \u003Cold_name> \u003Cnew_name>",{"type":30,"value":7137},": Renames a wordlist reference.",{"type":17,"tag":454,"props":7139,"children":7140},{},[7141,7147],{"type":17,"tag":47,"props":7142,"children":7144},{"className":7143},[],[7145],{"type":30,"value":7146},"wordlist destroy \u003Cname>",{"type":30,"value":7148},": Deletes a wordlist reference.",{"type":17,"tag":454,"props":7150,"children":7151},{},[7152,7158],{"type":17,"tag":47,"props":7153,"children":7155},{"className":7154},[],[7156],{"type":30,"value":7157},"wordlist export \u003Cname>",{"type":30,"value":7159},": Generates the commands to recreate the wordlist reference.",{"title":8,"searchDepth":12,"depth":12,"links":7161},[7162,7163,7169],{"id":1237,"depth":12,"text":1218},{"id":2886,"depth":12,"text":2889,"children":7164},[7165,7166,7167,7168],{"id":6954,"depth":1182,"text":6957},{"id":6974,"depth":1182,"text":6977},{"id":7001,"depth":1182,"text":7004},{"id":7034,"depth":1182,"text":7037},{"id":7054,"depth":12,"text":7057},"content:docs:wordlists.md","docs/wordlists.md","docs/wordlists",{"_path":7174,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":7175,"description":8,"slug":7176,"category":2628,"order":1182,"body":7177,"_type":350,"_id":7343,"_source":352,"_file":7344,"_stem":7345,"_extension":355},"/docs/workflow","Workflow Overview","workflow",{"type":14,"children":7178,"toc":7339},[7179,7191,7196,7201,7207,7301,7307,7318,7321],{"type":17,"tag":18,"props":7180,"children":7181},{},[7182],{"type":17,"tag":22,"props":7183,"children":7184},{},[7185,7189],{"type":17,"tag":26,"props":7186,"children":7187},{},[7188],{"type":30,"value":31},{"type":30,"value":7190}," A high-level view of the data flow and execution lifecycle in pwnity.",{"type":17,"tag":35,"props":7192,"children":7193},{"id":7176},[7194],{"type":30,"value":7195},"Workflow",{"type":17,"tag":22,"props":7197,"children":7198},{},[7199],{"type":30,"value":7200},"Pwnity follows a logical data flow designed for maximum efficiency and auditability.",{"type":17,"tag":56,"props":7202,"children":7204},{"id":7203},"the-lifecycle",[7205],{"type":30,"value":7206},"The Lifecycle",{"type":17,"tag":2235,"props":7208,"children":7209},{},[7210,7226,7243,7259,7269,7285],{"type":17,"tag":454,"props":7211,"children":7212},{},[7213,7218,7220,7225],{"type":17,"tag":26,"props":7214,"children":7215},{},[7216],{"type":30,"value":7217},"Ingestion:",{"type":30,"value":7219}," Provide raw technical data (IPs, URLs) to a ",{"type":17,"tag":26,"props":7221,"children":7222},{},[7223],{"type":30,"value":7224},"Target",{"type":30,"value":132},{"type":17,"tag":454,"props":7227,"children":7228},{},[7229,7234,7236,7241],{"type":17,"tag":26,"props":7230,"children":7231},{},[7232],{"type":30,"value":7233},"Templating:",{"type":30,"value":7235}," Use ",{"type":17,"tag":26,"props":7237,"children":7238},{},[7239],{"type":30,"value":7240},"Tools",{"type":30,"value":7242}," to define how your arsenal should interact with that data via placeholders.",{"type":17,"tag":454,"props":7244,"children":7245},{},[7246,7251,7253,7258],{"type":17,"tag":26,"props":7247,"children":7248},{},[7249],{"type":30,"value":7250},"Contextualization:",{"type":30,"value":7252}," Assemble your current objective into a ",{"type":17,"tag":26,"props":7254,"children":7255},{},[7256],{"type":30,"value":7257},"Session",{"type":30,"value":132},{"type":17,"tag":454,"props":7260,"children":7261},{},[7262,7267],{"type":17,"tag":26,"props":7263,"children":7264},{},[7265],{"type":30,"value":7266},"Execution:",{"type":30,"value":7268}," Run commands. Pwnity handles the job management, logging, and status tracking.",{"type":17,"tag":454,"props":7270,"children":7271},{},[7272,7277,7278,7283],{"type":17,"tag":26,"props":7273,"children":7274},{},[7275],{"type":30,"value":7276},"Refinement:",{"type":30,"value":7235},{"type":17,"tag":26,"props":7279,"children":7280},{},[7281],{"type":30,"value":7282},"Parsers",{"type":30,"value":7284}," to turn raw stdout into structured finding objects.",{"type":17,"tag":454,"props":7286,"children":7287},{},[7288,7293,7295,7300],{"type":17,"tag":26,"props":7289,"children":7290},{},[7291],{"type":30,"value":7292},"Crystallization:",{"type":30,"value":7294}," Save your analysis, notes, and loot into a ",{"type":17,"tag":26,"props":7296,"children":7297},{},[7298],{"type":30,"value":7299},"Report",{"type":30,"value":132},{"type":17,"tag":56,"props":7302,"children":7304},{"id":7303},"visualized-flow",[7305],{"type":30,"value":7306},"Visualized Flow",{"type":17,"tag":90,"props":7308,"children":7313},{"className":7309,"code":7311,"language":7312,"meta":8},[7310],"language-mermaid","graph LR\n    T[Target] --> S[Session]\n    TL[Tool] --> S\n    W[Wordlist] --> S\n    S --> E[Execution]\n    E --> P[Parser]\n    P --> R[Report]\n    E --> R\n","mermaid",[7314],{"type":17,"tag":47,"props":7315,"children":7316},{"__ignoreMap":8},[7317],{"type":30,"value":7311},{"type":17,"tag":1364,"props":7319,"children":7320},{},[],{"type":17,"tag":18,"props":7322,"children":7323},{},[7324],{"type":17,"tag":22,"props":7325,"children":7326},{},[7327,7331,7333,7338],{"type":17,"tag":542,"props":7328,"children":7329},{},[7330],{"type":30,"value":4706},{"type":30,"value":7332},"\nThis flow is designed to be non-linear. You can update your Target data mid-session, and your Tool commands will dynamically adapt the next time you run ",{"type":17,"tag":47,"props":7334,"children":7336},{"className":7335},[],[7337],{"type":30,"value":653},{"type":30,"value":132},{"title":8,"searchDepth":12,"depth":12,"links":7340},[7341,7342],{"id":7203,"depth":12,"text":7206},{"id":7303,"depth":12,"text":7306},"content:docs:workflow.md","docs/workflow.md","docs/workflow",1775644156804]