aboutsummaryrefslogtreecommitdiffstats
path: root/libpathod/templates/docs_pathoc.html
diff options
context:
space:
mode:
Diffstat (limited to 'libpathod/templates/docs_pathoc.html')
-rw-r--r--libpathod/templates/docs_pathoc.html118
1 files changed, 60 insertions, 58 deletions
diff --git a/libpathod/templates/docs_pathoc.html b/libpathod/templates/docs_pathoc.html
index e4c12873..d38c3a77 100644
--- a/libpathod/templates/docs_pathoc.html
+++ b/libpathod/templates/docs_pathoc.html
@@ -7,12 +7,12 @@
</div>
<p>
- Pathoc is a perverse HTTP daemon designed to let you craft almost any conceivable HTTP
- request, including ones that creatively violate the standards. HTTP requests are specified
- using a
- <a href="/docs/language">small, terse language</a>, which pathod shares with its server-side
- twin <a href="/docs/pathod">pathod</a>. To view pathoc's complete range of options,
- use the command-line help:
+ Pathoc is a perverse HTTP daemon designed to let you craft almost any conceivable
+ HTTP request, including ones that creatively violate the standards. HTTP requests
+ are specified using a
+ <a href="/docs/language">small, terse language</a>, which pathod shares with
+ its server-side twin <a href="/docs/pathod">pathod</a>. To view pathoc's complete
+ range of options, use the command-line help:
</p>
<pre class="terminal">pathoc --help</pre>
@@ -27,8 +27,8 @@
<pre class="terminal">pathoc hostname request [request ...]</pre>
<p>
- That is, we specify the hostname to connect to, followed by one or more requests. Lets
- start with a simple example:
+ That is, we specify the hostname to connect to, followed by one or more requests.
+ Lets start with a simple example:
</p>
<pre class="terminal">
@@ -36,10 +36,10 @@
</pre>
<p>
- Here, we make a GET request to the path / on port 80 of google.com. Pathoc's output tells
- us that the server responded with a 301. We can tell pathoc to connect using SSL,
- in which case the default port is changed to 443 (you can over-ride the default
- port with the <b>-p</b> command-line option):
+ Here, we make a GET request to the path / on port 80 of google.com. Pathoc's output
+ tells us that the server responded with a 301. We can tell pathoc to connect
+ using SSL, in which case the default port is changed to 443 (you can over-ride
+ the default port with the <b>-p</b> command-line option):
</p>
<pre class="terminal">
@@ -64,8 +64,8 @@
</pre>
<p>
- In this case, pathoc issues the specified requests over the same TCP connection - so in
- the above example only one connection is made to google.com
+ In this case, pathoc issues the specified requests over the same TCP connection -
+ so in the above example only one connection is made to google.com
</p>
<p>The other way to issue multiple requets is to use the <b>-n</b> flag:</p>
@@ -76,8 +76,8 @@
</pre>
<p>
- The output is identical, but two separate TCP connections are made to the upstream server.
- These two specification styles can be combined:
+ The output is identical, but two separate TCP connections are made to the upstream
+ server. These two specification styles can be combined:
</p>
<pre class="terminal">
@@ -96,8 +96,9 @@
</div>
<p>
- The combination of pathoc's powerful request specification language and a few of its command-line
- options makes for quite a powerful basic fuzzer. Here's an example:
+ The combination of pathoc's powerful request specification language and a few of
+ its command-line options makes for quite a powerful basic fuzzer. Here's
+ an example:
</p>
<pre class="terminal">
@@ -105,18 +106,18 @@
</pre>
<p>
- The request specified here is a valid GET with a body consisting of 10 random bytes, but
- with 1 random byte inserted in a random place. This could be in the headers, in
- the initial request line, or in the body itself. There are a few things to note
- here:
+ The request specified here is a valid GET with a body consisting of 10 random bytes,
+ but with 1 random byte inserted in a random place. This could be in the headers,
+ in the initial request line, or in the body itself. There are a few things
+ to note here:
</p>
<ul>
<li>
- Corrupting the request in this way will often make the server enter a state where it's
- awaiting more input from the client. This is where the
- <b>-t</b> option comes in, which sets a timeout that causes pathoc to disconnect
- after two seconds.
+ Corrupting the request in this way will often make the server enter a state where
+ it's awaiting more input from the client. This is where the
+ <b>-t</b> option comes in, which sets a timeout that causes pathoc to
+ disconnect after two seconds.
</li>
<li>
@@ -124,16 +125,16 @@
</li>
<li>
- The <b>-I</b> option tells pathoc to ignore HTTP 200 response codes. You can
- use this to fine-tune what pathoc considers to be an exceptional condition,
- and therefore log-worthy.
+ The <b>-I</b> option tells pathoc to ignore HTTP 200 response codes.
+ You can use this to fine-tune what pathoc considers to be an exceptional
+ condition, and therefore log-worthy.
</li>
<li>
- The <b>-e</b> option tells pathoc to print an explanation of each logged request,
- in the form of an expanded pathoc specification with all random portions and
- automatic header additions resolved. This lets you precisely replay a request
- that triggered an error.
+ The <b>-e</b> option tells pathoc to print an explanation of each logged
+ request, in the form of an expanded pathoc specification with all random
+ portions and automatic header additions resolved. This lets you precisely
+ replay a request that triggered an error.
</li>
</ul>
</section>
@@ -146,25 +147,26 @@
<p>
Pathoc has a reasonably sophisticated suite of features for interacting with proxies.
- The proxy request syntax very closely mirrors that of straight HTTP, which means
- that it is possible to make proxy-style requests using pathoc without any additional
- syntax, by simply specifying a full URL instead of a simple path:
+ The proxy request syntax very closely mirrors that of straight HTTP, which
+ means that it is possible to make proxy-style requests using pathoc without
+ any additional syntax, by simply specifying a full URL instead of a simple
+ path:
</p>
<pre class="terminal">&gt; pathoc -p 8080 localhost "get:'http://google.com'"</pre>
<p>
- Another common use case is to use an HTTP CONNECT request to probe remote servers via
- a proxy. This is done with the <b>-c</b> command-line option, which allows
- you to specify a remote host and port pair:
+ Another common use case is to use an HTTP CONNECT request to probe remote servers
+ via a proxy. This is done with the <b>-c</b> command-line option,
+ which allows you to specify a remote host and port pair:
</p>
<pre class="terminal">&gt; pathoc -c google.com:80 -p 8080 localhost get:/</pre>
<p>
Note that pathoc does <b>not</b> negotiate SSL without being explictly instructed
- to do so. If you're making a CONNECT request to an SSL-protected resource, you
- must also pass the <b>-s</b> flag:
+ to do so. If you're making a CONNECT request to an SSL-protected resource,
+ you must also pass the <b>-s</b> flag:
</p>
<pre class="terminal">&gt; pathoc -sc google.com:443 -p 8080 localhost get:/</pre>
@@ -177,33 +179,33 @@
</div>
<p>
- One interesting feature of the Request sppecification language is that you can embed a
- response specifcation in it, which is then added to the request path. Here's an
- example:
+ One interesting feature of the Request sppecification language is that you can embed
+ a response specifcation in it, which is then added to the request path. Here's
+ an example:
</p>
<pre class="terminal">&gt; pathoc localhost:9999 "get:/p/:s'401:ir,@1'"</pre>
<p>
- This crafts a request that connects to the pathod server, and which then crafts a response
- that generates a 401, with one random byte embedded at a random point. The response
- specification is parsed and expanded by pathoc, so you see syntax errors immediately.
- This really becomes handy when combined with the <b>-e</b> flag to show
- the expanded request:
+ This crafts a request that connects to the pathod server, and which then crafts a
+ response that generates a 401, with one random byte embedded at a random
+ point. The response specification is parsed and expanded by pathoc, so you
+ see syntax errors immediately. This really becomes handy when combined with
+ the <b>-e</b> flag to show the expanded request:
</p>
<pre class="terminal">
&gt; > pathoc -e localhost:9999 "get:/p/:s'401:ir,@1'" >> Spec: get:/p/:s'401:i15,\'o\':h\'Content-Length\'=\'0\'':h'Content-Length'='0'
<< 401 Unoauthorized: 0 bytes </pre>
- <p>
- Note that the embedded response has been resolved <i>before</i> being
- sent to the server, so that "ir,@1" (embed a random byte at a random location)
- has become "i15,\'o\'" (embed the character "o" at offset 15). You now
- have a pathoc request specification that is precisely reproducable, even
- with random components. This feature comes in terribly handy when testing
- a proxy, since you can now drive the server repsonse completely from the
- client, and have a complete log of reproducible requests to analyse afterwards.
- </p>
+ <p>
+ Note that the embedded response has been resolved <i>before</i> being sent
+ to the server, so that "ir,@1" (embed a random byte at a random location)
+ has become "i15,\'o\'" (embed the character "o" at offset 15). You now have
+ a pathoc request specification that is precisely reproducable, even with
+ random components. This feature comes in terribly handy when testing a proxy,
+ since you can now drive the server repsonse completely from the client, and
+ have a complete log of reproducible requests to analyse afterwards.
+ </p>
</section>
{% endblock %}