[tor-dev] Choosing a valid Circuit ID for an OR connection

Eli Vakrat eli at vakrat.com
Tue Apr 14 13:06:05 UTC 2020


Hello to the TOR dev team!

My name is Eli, I'm a high school student from Israel and I'm currently
trying to implement a TOR Client in Python.
Currently, my project is configured so that the python client (OP) has its
guard node set as my local machine (which is running a downloaded version
of TOR). I do this for debugging purposes so that if I send a malformed
cell as the implemented client, I can read the debug log that the OR
generates and see what I did wrong.

As I am writing this, I have successfully been able to make a v3 "in
protocol" handshake by sending the proper VERSIONS and NETINFO cells that
the OR has accepted.

Right now, I am working on getting the CREATE cell to work (with the TAP
handshake), and when I send the cell to the OR It sends a DESTROY cell with
the following message in the debug log:

Apr 14 12:24:51.166 [warn] Received create cell with unexpected circ_id 1.
Closing.

To my understanding, the problem here is that the circuit id I have chosen
is not valid.

I read from the tor spec that there is a range of acceptable circuit
id's for each relay and it can be found in the long term 1024 bit RSA
"signing key".

My question to you all is, how can I extract that range for the circuit
ID's (along with any other relevant information) from the signing key?
In other words, what is the "signing key" made up of, and how can I get
the information that its made of?

The bottom line is I need to find out what valid circuit ID's I can send to
OR's.

I am having a lot of fun doing this project so far and I hope to hear back
from anyone who has an answer :)

Thanks in advance!
Eli
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tor-dev/attachments/20200414/b96a680e/attachment.html>


More information about the tor-dev mailing list