commit 3299a5ad68c85d6f33f20b7cbeb68ee175877d16 Author: Damian Johnson atagar@torproject.org Date: Wed Mar 26 09:01:04 2014 -0700
Moving "Determine The Exit You’re Using" to the example scripts
Moving this example from our client usage tutorials to the example scripts. This is a good standalone example, and unrelated to the other tasks in the tutorial. --- docs/contents.rst | 1 + docs/tutorials/double_double_toil_and_trouble.rst | 9 ++- docs/tutorials/examples/compare_flags.rst | 20 +++--- docs/tutorials/examples/exit_used.rst | 73 +++++++++++++++++++++ docs/tutorials/to_russia_with_love.rst | 72 -------------------- 5 files changed, 92 insertions(+), 83 deletions(-)
diff --git a/docs/contents.rst b/docs/contents.rst index d9b6159..70eda0f 100644 --- a/docs/contents.rst +++ b/docs/contents.rst @@ -13,6 +13,7 @@ Contents tutorials/double_double_toil_and_trouble
tutorials/examples/compare_flags + tutorials/examples/exit_used
change_log download diff --git a/docs/tutorials/double_double_toil_and_trouble.rst b/docs/tutorials/double_double_toil_and_trouble.rst index 3dabc1a..093592e 100644 --- a/docs/tutorials/double_double_toil_and_trouble.rst +++ b/docs/tutorials/double_double_toil_and_trouble.rst @@ -53,11 +53,18 @@ Applications Scripts =======
+Client Usage +------------ + +* `Determine The Exit You're Using <examples/exit_used.html>`_ + + Tells you the exit used for each Tor connection. + Descriptors -----------
* `Comparing Directory Authority Flags <examples/compare_flags.html>`_
Compares the votes of two directory authorities, in this case moria1 and - maatuska, with a special interest in the 'Running' flag. + maatuska with a special interest in the 'Running' flag.
diff --git a/docs/tutorials/examples/compare_flags.rst b/docs/tutorials/examples/compare_flags.rst index b0f7fc6..8aceefc 100644 --- a/docs/tutorials/examples/compare_flags.rst +++ b/docs/tutorials/examples/compare_flags.rst @@ -6,16 +6,6 @@ maatuska, with a special interest in the 'Running' flag.
::
- % python compare_flags.py - maatuska has the Running flag but moria1 doesn't: 92FCB6748A40E6088E22FBAB943AB2DD743EA818 - maatuska has the Running flag but moria1 doesn't: 6871F682350BA931838C0EC1E4A23044DAE06A73 - maatuska has the Running flag but moria1 doesn't: E2BB13AA2F6960CD93ABE5257A825687F3973C62 - moria1 has the Running flag but maatuska doesn't: 546C54E2A89D88E0794D04AECBF1AC8AC9DA81DE - moria1 has the Running flag but maatuska doesn't: DCAEC3D069DC39AAE43D13C8AF31B5645E05ED61 - ... - -:: - from stem.descriptor import DocumentHandler, remote
# Query all authority votes asynchronously. @@ -58,3 +48,13 @@ maatuska, with a special interest in the 'Running' flag. elif 'Running' in maatuska_vote.flags and 'Running' not in moria1_vote.flags: print "maatuska has the Running flag but moria1 doesn't: %s" % fingerprint
+:: + + % python compare_flags.py + maatuska has the Running flag but moria1 doesn't: 92FCB6748A40E6088E22FBAB943AB2DD743EA818 + maatuska has the Running flag but moria1 doesn't: 6871F682350BA931838C0EC1E4A23044DAE06A73 + maatuska has the Running flag but moria1 doesn't: E2BB13AA2F6960CD93ABE5257A825687F3973C62 + moria1 has the Running flag but maatuska doesn't: 546C54E2A89D88E0794D04AECBF1AC8AC9DA81DE + moria1 has the Running flag but maatuska doesn't: DCAEC3D069DC39AAE43D13C8AF31B5645E05ED61 + ... + diff --git a/docs/tutorials/examples/exit_used.rst b/docs/tutorials/examples/exit_used.rst new file mode 100644 index 0000000..2c27f98 --- /dev/null +++ b/docs/tutorials/examples/exit_used.rst @@ -0,0 +1,73 @@ +Determine The Exit You're Using +=============================== + +Lets say you're using Tor and one day you run into something odd. Maybe a +misconfigured relay, or maybe one that's being malicious. How can you figure +out what exit you're using? + +Here's a simple script that prints information about the exits used to service +the requests going through Tor... + +:: + + import functools + + from stem import StreamStatus + from stem.control import EventType, Controller + + def main(): + print "Tracking requests for tor exits. Press 'enter' to end." + print + + with Controller.from_port() as controller: + controller.authenticate() + + stream_listener = functools.partial(stream_event, controller) + controller.add_event_listener(stream_listener, EventType.STREAM) + + raw_input() # wait for user to press enter + + + def stream_event(controller, event): + if event.status == StreamStatus.SUCCEEDED: + circ = controller.get_circuit(event.circ_id) + + exit_fingerprint = circ.path[-1][0] + exit_relay = controller.get_network_status(exit_fingerprint) + + print "Exit relay for our connection to %s" % (event.target) + print " address: %s:%i" % (exit_relay.address, exit_relay.or_port) + print " fingerprint: %s" % exit_relay.fingerprint + print " nickname: %s" % exit_relay.nickname + print " locale: %s" % controller.get_info("ip-to-country/%s" % exit_relay.address, 'unknown') + print + + + if __name__ == '__main__': + main() + +Now if you make a request over Tor... + +:: + + % curl --socks4a 127.0.0.1:9050 google.com + <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> + <TITLE>301 Moved</TITLE></HEAD><BODY> + <H1>301 Moved</H1> + The document has moved + <A HREF="http://www.google.com/">here</A>. + </BODY></HTML> + +... this script will tell you about the exit... + +:: + + % python exit_used.py + Tracking requests for tor exits. Press 'enter' to end. + + Exit relay for our connection to 64.15.112.44:80 + address: 31.172.30.2:443 + fingerprint: A59E1E7C7EAEE083D756EE1FF6EC31CA3D8651D7 + nickname: chaoscomputerclub19 + locale: unknown + diff --git a/docs/tutorials/to_russia_with_love.rst b/docs/tutorials/to_russia_with_love.rst index e69e828..33c04d3 100644 --- a/docs/tutorials/to_russia_with_love.rst +++ b/docs/tutorials/to_russia_with_love.rst @@ -4,7 +4,6 @@ To Russia With Love * :ref:`using-socksipy` * :ref:`using-pycurl` * :ref:`reading-twitter` -* :ref:`determine-the-exit-you-re-using`
.. _using-socksipy:
@@ -173,74 +172,3 @@ Now lets do somthing a little more interesting, and read a Twitter feed over Tor
.. image:: /_static/twitter_output.png
-.. _determine-the-exit-you-re-using: - -Determine The Exit You're Using ---------------------------------- - -Finally, lets say you're using Tor and one day you run into something odd. Maybe a misconfigured relay, or maybe one that's being malicious. How can you figure out what exit you're using? - -Here's a simple script that prints information about the exits used to service the requests going through Tor... - -:: - - import functools - - from stem import StreamStatus - from stem.control import EventType, Controller - - def main(): - print "Tracking requests for tor exits. Press 'enter' to end." - print - - with Controller.from_port() as controller: - controller.authenticate() - - stream_listener = functools.partial(stream_event, controller) - controller.add_event_listener(stream_listener, EventType.STREAM) - - raw_input() # wait for user to press enter - - - def stream_event(controller, event): - if event.status == StreamStatus.SUCCEEDED: - circ = controller.get_circuit(event.circ_id) - - exit_fingerprint = circ.path[-1][0] - exit_relay = controller.get_network_status(exit_fingerprint) - - print "Exit relay for our connection to %s" % (event.target) - print " address: %s:%i" % (exit_relay.address, exit_relay.or_port) - print " fingerprint: %s" % exit_relay.fingerprint - print " nickname: %s" % exit_relay.nickname - print " locale: %s" % controller.get_info("ip-to-country/%s" % exit_relay.address, 'unknown') - print - - - if __name__ == '__main__': - main() - -Now if you make a request over Tor... - -:: - - % curl --socks4a 127.0.0.1:9050 google.com - <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> - <TITLE>301 Moved</TITLE></HEAD><BODY> - <H1>301 Moved</H1> - The document has moved - <A HREF="http://www.google.com/">here</A>. - </BODY></HTML> - -... this script will tell you about the exit... - -:: - - % python example.py - Tracking requests for tor exits. Press 'enter' to end. - - Exit relay for our connection to 64.15.112.44:80 - address: 31.172.30.2:443 - fingerprint: A59E1E7C7EAEE083D756EE1FF6EC31CA3D8651D7 - nickname: chaoscomputerclub19 - locale: unknown
tor-commits@lists.torproject.org