███████████ ███████████ ███████████
▒█▒▒▒███▒▒▒█▒█▒▒▒███▒▒▒█▒▒███▒▒▒▒▒███
▒ ▒███ ▒ ▒ ▒███ ▒ ▒███ ▒███
▒███ ▒███ ▒██████████
▒███ ▒███ ▒███▒▒▒▒▒███
▒███ ▒███ ▒███ ▒███
█████ █████ █████ █████
▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒ ▒▒▒▒▒
====== version 0.1.0 ======== djnn.sh
~ source code: https://evil.djnn.sh/ttr/log.html
1. Simple usage
To build, simply type "make" and let the compiler install the correct toolchain,
dependencies and build the program for you. It is statically compiled, you may
add it to a container if you wish but I had no need for it.
Then, here is the expected output:
./ttr djnn.sh
traceroute to djnn.sh (172.67.154.8), 30 hops max
1 192.168.REDACTED 2.432 ms 4.263 ms 2.700 ms
2 REDACTED.ne.jp (113.33.REDACTED) 5.260 ms 4.054 ms 3.849 ms
3 210.79.REDACTED 4.202 ms 4.357 ms 3.544 ms
4 * * *
5 163.139.REDACTED 3.342 ms 3.219 ms 2.634 ms
6 163.139.REDACTED 3.640 ms 5.679 ms 3.632 ms
7 * * 163.139.REDACTED 7.895 ms
8 103.22.REDACTED 42.821 ms 6.990 ms 8.304 ms
9 172.67.REDACTED 5.022 ms 4.132 ms 3.660 ms
NOTE - using without sudo:
After building, you can simply run the following command, if you're on Linux:
sudo setcap cap_net_raw+ep ./tracert
./ttr djnn.sh
This will give your program the necessary permissions so that it is able to
filter packets without your kernel blocking you.
2. How does it work ?
There are several resources online that explain how traceroute works, but I'll
document it here too. In the IP packet, there is a field called TTL (Time-to-live),
every time the packet passes through a router, this field is decreased by one.
It's a feature to improve the reliability of the protocol.
If the TTL reaches 0, we optionally receive back a ICMP message, "Time Exceeded".
This is very much an optional feature in the spec, so you might not see it all
the time. But the way this program works is by intentionally setting low TTL
values to make packets "die"vat specific hops so we can hear back from the
routers at those locations.
3. Project management
If you find bugs or issues, you can contact me through the method described
here: https://djnn.sh/pgp
The source code is accessible for free, but Pull Requests are not accepted.
No guaranteed is given on whether the program works or not, no promises is
made on feature support. The behaviour can completely change from one version
to the next, and I take no responsibility as the main developer if it affects
critical operations for you.