|
|
== Tor Control Port Walkthrough -- Hidden service client connection ==
|
|
|
## Tor Control Port Walkthrough -- Hidden service client connection
|
|
|
|
|
|
The following walk-through will explain the controller events you might
|
|
|
see when visiting a Tor hidden service. It assumes you're familiar with
|
... | ... | @@ -14,7 +14,7 @@ circuit events, and hs_desc will tell us about progress at fetching hidden |
|
|
service descriptors.
|
|
|
(There is a visualization of the event sequence at the end of this section.)
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
$ telnet localhost 9051
|
|
|
Trying 127.0.0.1...
|
|
|
Connected to localhost.
|
... | ... | @@ -23,16 +23,16 @@ authenticate |
|
|
250 OK
|
|
|
setevents circ stream circ_minor hs_desc
|
|
|
250 OK
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
At this point in another window I ran
|
|
|
{{{usewithtor wget duskgytldkxiuqc6.onion}}} which triggers a stream
|
|
|
`usewithtor wget duskgytldkxiuqc6.onion` which triggers a stream
|
|
|
event, telling us there is now a new stream, with stream id 1389, and
|
|
|
its destination is the hidden service I've fetched:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 STREAM 1389 NEW 0 duskgytldkxiuqc6.onion:80 SOURCE_ADDR=127.0.0.1:50239 PURPOSE=USER
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
The first step for the Tor client is to fetch the hidden service
|
|
|
descriptor associated with this .onion address. There are six relays that
|
... | ... | @@ -42,11 +42,11 @@ to fetch it via a Tor circuit using http. This stream 1391 triggers a |
|
|
circuit launch, and also we get an HS_DESC event telling us that we're
|
|
|
initiating a request for the descriptor.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 STREAM 1391 NEW 0 212.159.91.22.$A33A225654B9ED688ED9B0D6F0400C373C2C3A72.exit:443 PURPOSE=DIR_FETCH
|
|
|
650 CIRC 725 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.562981
|
|
|
650 HS_DESC REQUESTED duskgytldkxiuqc6 NO_AUTH $A33A225654B9ED688ED9B0D6F0400C373C2C3A72~CrashM umqkk5xcj4e57r6upvodzsxaoz7jgah4
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now the Tor client realizes that it doesn't have enough preemptive circuits
|
|
|
sitting around, so it starts a new one (circuit id 726). We see events
|
... | ... | @@ -54,7 +54,7 @@ for both circuit 725 and 726 as they finish building. Note that 726 ends |
|
|
up being the normal three hops, while 725 is four hops because the fourth
|
|
|
hop (CrashM) wasn't chosen by us.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 726 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.704383
|
|
|
650 CIRC 726 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.704383
|
|
|
650 CIRC 725 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.562981
|
... | ... | @@ -65,7 +65,7 @@ hop (CrashM) wasn't chosen by us. |
|
|
650 CIRC 725 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$C59F04BA68B5AF409319E662A8426D70B0CF9BC0~ksfrrl1,$0A637C5DB578C91CCA498C3400BFBEDFDB081F07~hviv1024 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.562981
|
|
|
650 CIRC 725 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$C59F04BA68B5AF409319E662A8426D70B0CF9BC0~ksfrrl1,$0A637C5DB578C91CCA498C3400BFBEDFDB081F07~hviv1024,$A33A225654B9ED688ED9B0D6F0400C373C2C3A72~CrashM BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.562981
|
|
|
650 CIRC 725 BUILT $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$C59F04BA68B5AF409319E662A8426D70B0CF9BC0~ksfrrl1,$0A637C5DB578C91CCA498C3400BFBEDFDB081F07~hviv1024,$A33A225654B9ED688ED9B0D6F0400C373C2C3A72~CrashM BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:13.562981
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now that circuit 725 is finished building, it's ready for us to send a
|
|
|
begin_dir cell down it to establish a connection to fetch the descriptor.
|
... | ... | @@ -74,14 +74,14 @@ hear that the hidden service descriptor was received. (Also, interleaved |
|
|
with these messages, our Tor client has decided to launch a new preemptive
|
|
|
circuit 727, in case it needs it later.)
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 STREAM 1391 SENTCONNECT 725 212.159.91.22.$A33A225654B9ED688ED9B0D6F0400C373C2C3A72.exit:443
|
|
|
650 STREAM 1391 SUCCEEDED 725 212.159.91.22.$A33A225654B9ED688ED9B0D6F0400C373C2C3A72.exit:443
|
|
|
650 CIRC 727 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
650 CIRC 727 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
650 STREAM 1391 CLOSED 725 212.159.91.22.$A33A225654B9ED688ED9B0D6F0400C373C2C3A72.exit:443 REASON=END REMOTE_REASON=DONE
|
|
|
650 HS_DESC RECEIVED duskgytldkxiuqc6 NO_AUTH $A33A225654B9ED688ED9B0D6F0400C373C2C3A72~CrashM
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now that we have the descriptor, we want to establish a rendezvous
|
|
|
point. Fortunately circuit 726 is sitting around waiting for a good use.
|
... | ... | @@ -95,23 +95,23 @@ opposed to introduction)". The "connecting" part means that we sent an |
|
|
ESTABLISH_RENDEZVOUS cell but haven't gotten a RENDEZVOUS_ESTABLISHED
|
|
|
confirmation yet.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 726 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$8806C3E6FA42B07113F3A1553DE70C0A30101201~Unnamed,$43AF032EE73B4595B8E18037676704DA01212F01~EuropeCoastDE BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_REND HS_STATE=HSCR_CONNECTING TIME_CREATED=2014-09-19T20:24:13.704383 OLD_PURPOSE=GENERAL
|
|
|
650 CIRC_MINOR 726 CANNIBALIZED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$8806C3E6FA42B07113F3A1553DE70C0A30101201~Unnamed,$43AF032EE73B4595B8E18037676704DA01212F01~EuropeCoastDE BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_REND HS_STATE=HSCR_CONNECTING TIME_CREATED=2014-09-19T20:24:13.704383 OLD_PURPOSE=GENERAL OLD_TIME_CREATED=2014-09-19T20:24:13.978682
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
In parallel, we start to establish a circuit (id 728) to one of the
|
|
|
introduction points we learned about in the hidden service descriptor.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 728 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING TIME_CREATED=2014-09-19T20:24:16.180355
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
And circuit 727 makes a bit more progress:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 727 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now we get our RENDEZVOUS_ESTABLISHED response on circuit 726, so the
|
|
|
HS_STATE shifts from HSCR_CONNECTING to HSCR_ESTABLISHED_IDLE, i.e. the
|
... | ... | @@ -120,17 +120,17 @@ that the event now also includes a REND_QUERY argument: while before |
|
|
this rendezvous point could have been used for any hidden service,
|
|
|
we've now locked it into a particular one.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 726 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$8806C3E6FA42B07113F3A1553DE70C0A30101201~Unnamed,$43AF032EE73B4595B8E18037676704DA01212F01~EuropeCoastDE BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_REND HS_STATE=HSCR_ESTABLISHED_IDLE REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:13.704383 OLD_PURPOSE=HS_CLIENT_REND OLD_HS_STATE=HSCR_CONNECTING
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Circuits 727 and 728 establish more hops, and 727 completes:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 728 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:16.180355
|
|
|
650 CIRC 727 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
650 CIRC 727 BUILT $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Oh noes! We got a destroy cell back instead of establishing the next
|
|
|
hop in circuit 728, which was going to connect to the introduction point.
|
... | ... | @@ -138,47 +138,47 @@ Maybe this happened because bauruine203 couldn't reach the next hop in |
|
|
the circuit we were trying to build. In any case it's time to abandon
|
|
|
circuit 728.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 728 FAILED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:16.180355 REASON=DESTROYED REMOTE_REASON=CHANNEL_CLOSED
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Fortunately circuit 727 is sitting around waiting for a good use. We
|
|
|
convert it from a general-purpose circuit to an HS_CLIENT_INTRO circuit.
|
|
|
It already has three hops established, so we ask it to extend to the
|
|
|
introduction point as its fourth.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 727 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING TIME_CREATED=2014-09-19T20:24:15.701996 OLD_PURPOSE=GENERAL
|
|
|
650 CIRC_MINOR 727 CANNIBALIZED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING TIME_CREATED=2014-09-19T20:24:15.701996 OLD_PURPOSE=GENERAL OLD_TIME_CREATED=2014-09-19T20:24:15.735689
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
And now that we don't have enough preemptive circuits sitting around
|
|
|
(since we just used one), we launch a new general-purpose circuit:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 729 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:16.718356
|
|
|
650 CIRC 729 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:16.718356
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now circuit 727 finishes its final hop to the introduction point:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 727 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay,$4A0CCD2DDC7995083D73F5D667100C8A5831F16D~Tonga BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
650 CIRC 727 BUILT $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay,$4A0CCD2DDC7995083D73F5D667100C8A5831F16D~Tonga BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_CONNECTING REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:15.701996
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
and we get notification that we've sent an ESTABLISH_INTRO cell down it
|
|
|
(it goes from HSCI_CONNECTING to HSCI_INTRO_SENT):
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 727 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay,$4A0CCD2DDC7995083D73F5D667100C8A5831F16D~Tonga BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_INTRO_SENT REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:15.701996 OLD_PURPOSE=HS_CLIENT_INTRO OLD_HS_STATE=HSCI_CONNECTING
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Circuit 729 makes a bit more progress:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 729 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$ADDD2CD7747BBAA027C66D2A8C475DD2E158902E~spfTOR4e1 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:16.718356
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now circuit 727 gets an INTRODUCE_ACK cell back, meaning the introduction
|
|
|
point we tried did indeed have a circuit open to the hidden service,
|
... | ... | @@ -186,111 +186,112 @@ and it sent our introduce cell down it. Yay; we close circuit 727 since |
|
|
we're done with it. At the same time, we update our internal state for
|
|
|
circuit 726 to tell it to expect a connection from the hidden service.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 726 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$8806C3E6FA42B07113F3A1553DE70C0A30101201~Unnamed,$43AF032EE73B4595B8E18037676704DA01212F01~EuropeCoastDE BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_REND HS_STATE=HSCR_ESTABLISHED_WAITING REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:13.704383 OLD_PURPOSE=HS_CLIENT_REND OLD_HS_STATE=HSCR_ESTABLISHED_IDLE
|
|
|
650 CIRC_MINOR 727 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay,$4A0CCD2DDC7995083D73F5D667100C8A5831F16D~Tonga BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_DONE REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:15.701996 OLD_PURPOSE=HS_CLIENT_INTRO OLD_HS_STATE=HSCI_INTRO_SENT
|
|
|
650 CIRC 727 CLOSED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$F7A53029D904C56CC525C142829FE6B78F7253DB~UECENETit,$1099983E2C5C3ECDAD0B7D5AABD2AC6BF2CBBF70~chaoxrelay,$4A0CCD2DDC7995083D73F5D667100C8A5831F16D~Tonga BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_INTRO HS_STATE=HSCI_DONE REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:15.701996 REASON=FINISHED
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Circuit 729 continues to build, and we also decide to start a new
|
|
|
preemptive circuit 730.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 729 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$ADDD2CD7747BBAA027C66D2A8C475DD2E158902E~spfTOR4e1,$06923B596647244629FE3447C8E4795BFC6AAB3D~freespeech4thedumb3 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:16.718356
|
|
|
650 CIRC 729 BUILT $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$ADDD2CD7747BBAA027C66D2A8C475DD2E158902E~spfTOR4e1,$06923B596647244629FE3447C8E4795BFC6AAB3D~freespeech4thedumb3 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:16.718356
|
|
|
650 CIRC 730 LAUNCHED BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:17.702080
|
|
|
650 CIRC 730 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:17.702080
|
|
|
650 CIRC 730 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$6F545A39D4849C9FE5B08A6D68C8B3478E4B608B~Chandler02 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:17.702080
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Now we get a RENDEZVOUS2 cell on circuit 726, indicating that the hidden
|
|
|
service has connected to our rendezvous point. So we send a BEGIN cell
|
|
|
down it, to make a connection to the webserver on the other side.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC_MINOR 726 PURPOSE_CHANGED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$8806C3E6FA42B07113F3A1553DE70C0A30101201~Unnamed,$43AF032EE73B4595B8E18037676704DA01212F01~EuropeCoastDE BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=HS_CLIENT_REND HS_STATE=HSCR_JOINED REND_QUERY=duskgytldkxiuqc6 TIME_CREATED=2014-09-19T20:24:13.704383 OLD_PURPOSE=HS_CLIENT_REND OLD_HS_STATE=HSCR_ESTABLISHED_WAITING
|
|
|
650 STREAM 1389 SENTCONNECT 726 duskgytldkxiuqc6.onion:80
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Circuit 730 finishes building:
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 CIRC 730 EXTENDED $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$6F545A39D4849C9FE5B08A6D68C8B3478E4B608B~Chandler02,$3F1ED718AA40BBA2FDF06E948DF3859E826FFBD3~toxiroxiNL1 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:17.702080
|
|
|
650 CIRC 730 BUILT $3C79699D4FBC37DE1A212D5033B56DAE079AC0EF~bauruine203,$6F545A39D4849C9FE5B08A6D68C8B3478E4B608B~Chandler02,$3F1ED718AA40BBA2FDF06E948DF3859E826FFBD3~toxiroxiNL1 BUILD_FLAGS=IS_INTERNAL,NEED_CAPACITY PURPOSE=GENERAL TIME_CREATED=2014-09-19T20:24:17.702080
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
Finally, we get a CONNECTED cell back from the hidden service. We send
|
|
|
a relay cell that contains our http get request, and receive a pile of
|
|
|
relay cells that contain the html page we wanted. When wget has gotten
|
|
|
enough data, it closes its connection to our socks port, and we're done.
|
|
|
|
|
|
{{{
|
|
|
```
|
|
|
650 STREAM 1389 SUCCEEDED 726 duskgytldkxiuqc6.onion:80
|
|
|
650 STREAM 1389 CLOSED 726 duskgytldkxiuqc6.onion:80 REASON=DONE
|
|
|
}}}
|
|
|
```
|
|
|
|
|
|
The following table contains a visualization of the event sequence:
|
|
|
|
|
|
||= Time=||=CIRC 725 (directory) =||=CIRC 726 (rendezvous point) =||=CIRC 727 (introduction point) ||=CIRC 728 (introduction point) =||=CIRC 729 (unrelated) =||=CIRC 730 (unrelated) =||
|
|
|
|||||||||||||| '' Received application request, establishing directory circuit to fetch descriptor. '' ||
|
|
|
|| 1|| ||STREAM 1389 NEW 0 || || || || ||
|
|
|
|| 2||STREAM 1391 NEW 0 || || || || || ||
|
|
|
|| 3||CIRC 725 LAUNCHED || || || || || ||
|
|
|
|| 4||HS_DESC REQUESTED || || || || || ||
|
|
|
|| 5|| ||CIRC 726 LAUNCHED || || || || ||
|
|
|
|| 6|| ||CIRC 726 EXTENDED || || || || ||
|
|
|
|| 7||CIRC 725 EXTENDED || || || || || ||
|
|
|
|| 8|| ||CIRC 726 EXTENDED || || || || ||
|
|
|
|| 9||CIRC 725 EXTENDED || || || || || ||
|
|
|
|| 10|| ||CIRC 726 EXTENDED || || || || ||
|
|
|
|| 11|| ||CIRC 726 BUILT || || || || ||
|
|
|
|| 12||CIRC 725 EXTENDED || || || || || ||
|
|
|
|| 13||CIRC 725 EXTENDED || || || || || ||
|
|
|
|| 14||CIRC 725 BUILT || || || || || ||
|
|
|
|||||||||||||| '' Built directory circuit, fetching descriptor. '' ||
|
|
|
|| 15||STREAM 1391 SENTCONNECT 725 || || || || || ||
|
|
|
|| 16||STREAM 1391 SUCCEEDED 725 || || || || || ||
|
|
|
|| 17|| || ||CIRC 727 LAUNCHED || || || ||
|
|
|
|| 18|| || ||CIRC 727 EXTENDED || || || ||
|
|
|
|| 19||STREAM 1391 CLOSED 725 || || || || || ||
|
|
|
|| 20||HS_DESC RECEIVED || || || || || ||
|
|
|
|||||||||||||| '' Received descriptor, establishing rendezvous point and circuit to introduction point. '' ||
|
|
|
|| 21|| ||CIRC_MINOR 726 PURPOSE_CHANGED || || || || ||
|
|
|
|| 22|| ||CIRC_MINOR 726 CANNIBALIZED || || || || ||
|
|
|
|| 23|| || || ||CIRC 728 LAUNCHED || || ||
|
|
|
|| 24|| || ||CIRC 727 EXTENDED || || || ||
|
|
|
|| 25|| ||CIRC_MINOR 726 PURPOSE_CHANGED || || || || ||
|
|
|
|||||||||||||| '' Received confirmation from rendezvous point that it's ready for the hidden service to connect. '' ||
|
|
|
|| 26|| || || ||CIRC 728 EXTENDED || || ||
|
|
|
|| 27|| || ||CIRC 727 EXTENDED || || || ||
|
|
|
|| 28|| || ||CIRC 727 BUILT || || || ||
|
|
|
|| 29|| || || ||CIRC 728 FAILED || || ||
|
|
|
|||||||||||||| '' Detected problem with introduction circuit, giving up and retrying another introduction circuit. '' ||
|
|
|
|| 30|| || ||CIRC_MINOR 727 PURPOSE_CHANGED || || || ||
|
|
|
|| 31|| || ||CIRC_MINOR 727 CANNIBALIZED || || || ||
|
|
|
|| 32|| || || || || || ||
|
|
|
|| 33|| || || || ||CIRC 729 LAUNCHED || ||
|
|
|
|| 34|| || || || ||CIRC 729 EXTENDED || ||
|
|
|
|| 35|| || ||CIRC 727 EXTENDED || || || ||
|
|
|
|| 36|| || ||CIRC 727 BUILT || || || ||
|
|
|
|||||||||||||| '' Built introduction circuit, sending introduction. '' ||
|
|
|
|| 37|| || ||CIRC_MINOR 727 PURPOSE_CHANGED || || || ||
|
|
|
|| 38|| || || || ||CIRC 729 EXTENDED || ||
|
|
|
|| 39|| || || || || || ||
|
|
|
|| 40|| ||CIRC_MINOR 726 PURPOSE_CHANGED || || || || ||
|
|
|
|| 41|| || ||CIRC_MINOR 727 PURPOSE_CHANGED || || || ||
|
|
|
|||||||||||||| '' Received confirmation from introduction point that introduction was received. '' ||
|
|
|
|| 42|| || ||CIRC 727 CLOSED || || || ||
|
|
|
|| 43|| || || || ||CIRC 729 EXTENDED || ||
|
|
|
|| 44|| || || || ||CIRC 729 BUILT || ||
|
|
|
|| 45|| || || || || ||CIRC 730 EXTENDED ||
|
|
|
|| 46|| || || || || ||CIRC 730 EXTENDED ||
|
|
|
|| 47|| ||CIRC_MINOR 726 PURPOSE_CHANGED || || || || ||
|
|
|
|||||||||||||| '' Received confirmation from rendezvous point that hidden service has connected, starting application connection to remote webserver. '' ||
|
|
|
|| 48|| ||STREAM 1389 SENTCONNECT 726 || || || || ||
|
|
|
|| 49|| || || || || || ||
|
|
|
|| 50|| || || || || ||CIRC 730 EXTENDED ||
|
|
|
|| 51|| || || || || ||CIRC 730 BUILT ||
|
|
|
|| 52|| ||STREAM 1389 SUCCEEDED 726 || || || || ||
|
|
|
|| 53|| ||STREAM 1389 CLOSED 726 || || || || ||
|
|
|
|||||||||||||| '' Learned that application request has succeeded and circuit has been closed. '' || |
|
|
|= Time=|=CIRC 725 (directory) =|=CIRC 726 (rendezvous point) =|=CIRC 727 (introduction point) |=CIRC 728 (introduction point) =|=CIRC 729 (unrelated) =|=CIRC 730 (unrelated) =|
|
|
|
|-------|------------------------------|-------------------------------|-------------------------------|--------------------------------|-----------------------|-----------------------|
|
|
|
||||||| _ Received application request, establishing directory circuit to fetch descriptor. _ |
|
|
|
| 1| |STREAM 1389 NEW 0 | | | | |
|
|
|
| 2|STREAM 1391 NEW 0 | | | | | |
|
|
|
| 3|CIRC 725 LAUNCHED | | | | | |
|
|
|
| 4|HS_DESC REQUESTED | | | | | |
|
|
|
| 5| |CIRC 726 LAUNCHED | | | | |
|
|
|
| 6| |CIRC 726 EXTENDED | | | | |
|
|
|
| 7|CIRC 725 EXTENDED | | | | | |
|
|
|
| 8| |CIRC 726 EXTENDED | | | | |
|
|
|
| 9|CIRC 725 EXTENDED | | | | | |
|
|
|
| 10| |CIRC 726 EXTENDED | | | | |
|
|
|
| 11| |CIRC 726 BUILT | | | | |
|
|
|
| 12|CIRC 725 EXTENDED | | | | | |
|
|
|
| 13|CIRC 725 EXTENDED | | | | | |
|
|
|
| 14|CIRC 725 BUILT | | | | | |
|
|
|
||||||| _ Built directory circuit, fetching descriptor. _ |
|
|
|
| 15|STREAM 1391 SENTCONNECT 725 | | | | | |
|
|
|
| 16|STREAM 1391 SUCCEEDED 725 | | | | | |
|
|
|
| 17| | |CIRC 727 LAUNCHED | | | |
|
|
|
| 18| | |CIRC 727 EXTENDED | | | |
|
|
|
| 19|STREAM 1391 CLOSED 725 | | | | | |
|
|
|
| 20|HS_DESC RECEIVED | | | | | |
|
|
|
||||||| _ Received descriptor, establishing rendezvous point and circuit to introduction point. _ |
|
|
|
| 21| |CIRC_MINOR 726 PURPOSE_CHANGED | | | | |
|
|
|
| 22| |CIRC_MINOR 726 CANNIBALIZED | | | | |
|
|
|
| 23| | | |CIRC 728 LAUNCHED | | |
|
|
|
| 24| | |CIRC 727 EXTENDED | | | |
|
|
|
| 25| |CIRC_MINOR 726 PURPOSE_CHANGED | | | | |
|
|
|
||||||| _ Received confirmation from rendezvous point that it's ready for the hidden service to connect. _ |
|
|
|
| 26| | | |CIRC 728 EXTENDED | | |
|
|
|
| 27| | |CIRC 727 EXTENDED | | | |
|
|
|
| 28| | |CIRC 727 BUILT | | | |
|
|
|
| 29| | | |CIRC 728 FAILED | | |
|
|
|
||||||| _ Detected problem with introduction circuit, giving up and retrying another introduction circuit. _ |
|
|
|
| 30| | |CIRC_MINOR 727 PURPOSE_CHANGED | | | |
|
|
|
| 31| | |CIRC_MINOR 727 CANNIBALIZED | | | |
|
|
|
| 32| | | | | | |
|
|
|
| 33| | | | |CIRC 729 LAUNCHED | |
|
|
|
| 34| | | | |CIRC 729 EXTENDED | |
|
|
|
| 35| | |CIRC 727 EXTENDED | | | |
|
|
|
| 36| | |CIRC 727 BUILT | | | |
|
|
|
||||||| _ Built introduction circuit, sending introduction. _ |
|
|
|
| 37| | |CIRC_MINOR 727 PURPOSE_CHANGED | | | |
|
|
|
| 38| | | | |CIRC 729 EXTENDED | |
|
|
|
| 39| | | | | | |
|
|
|
| 40| |CIRC_MINOR 726 PURPOSE_CHANGED | | | | |
|
|
|
| 41| | |CIRC_MINOR 727 PURPOSE_CHANGED | | | |
|
|
|
||||||| _ Received confirmation from introduction point that introduction was received. _ |
|
|
|
| 42| | |CIRC 727 CLOSED | | | |
|
|
|
| 43| | | | |CIRC 729 EXTENDED | |
|
|
|
| 44| | | | |CIRC 729 BUILT | |
|
|
|
| 45| | | | | |CIRC 730 EXTENDED |
|
|
|
| 46| | | | | |CIRC 730 EXTENDED |
|
|
|
| 47| |CIRC_MINOR 726 PURPOSE_CHANGED | | | | |
|
|
|
||||||| _ Received confirmation from rendezvous point that hidden service has connected, starting application connection to remote webserver. _ |
|
|
|
| 48| |STREAM 1389 SENTCONNECT 726 | | | | |
|
|
|
| 49| | | | | | |
|
|
|
| 50| | | | | |CIRC 730 EXTENDED |
|
|
|
| 51| | | | | |CIRC 730 BUILT |
|
|
|
| 52| |STREAM 1389 SUCCEEDED 726 | | | | |
|
|
|
| 53| |STREAM 1389 CLOSED 726 | | | | |
|
|
|
||||||| _ Learned that application request has succeeded and circuit has been closed. _ | |