3

I want to change the Tor relay selection in the SOURCE CODE, I want to tell Tor to select my selected relays in each time it needs to build a circuit instead of randomly selected relays. I know that I can force Tor to select some given relays by modifying Torrc (tor configuration file), but this is not what I want, I need to change the source code, I could not find where in the source code does the relay selection.

MOH
  • 451
  • 2
  • 8

1 Answers1

4

Functions for node selection and circuit construction can be found in routerlist.c and circuitbuild.c files in src/or directory. Possibly the most relevant ones are the following:

The list may not be exhaustive but should be a good point to start.

In many cases, debug logs can be very helpful for finding responsible code:

[debug] onion_extend_cpath(): Path is 1 long; we want 3
[debug] choose_good_middle_server(): Contemplating intermediate hop: random choice.
[debug] compute_weighted_bandwidths(): Generated weighted bandwidths for rule weight as middle node based on weights Wg=0.378600 Wm=1.000000 We=0.000000 Wd=0.088800 with total bw 0
[debug] extend_info_from_node(): using 37.59.22.63:9001 for Torlol2
[debug] onion_extend_cpath(): Chose router $D12BDD8E7C1C3EDBBDB2FCFF173D8314C8B1E620~Torlol2 at 37.59.22.63 for hop 2 (exit is yahyaoui)

gacar
  • 940
  • 5
  • 11