Traceroute Text Generator
Traceroute Text Generator is a small C program that generates "traceroute stories", or arbitrary texts in traceroutes. It is IPv6-only by design.
Source code freely available here. This daemon only creates the router hops; reverse DNS setup is done separately using any reverse DNS server.
The "rhgen-data.bin" file is technically not a binary blob as it is normally edited using a hex editor.
TL;DR: Just like with the bad.horse traceroute, you can make your computer sing "My Bonnie Lies Over the Ocean" by typing the following command in Windows Command Prompt:
tracert -h 60 -w 1 2602:806:a003:40f::4:25
|IP address||Domain name||Suggested max hop count||Contents|
|2602:806:a003:40f::28||traceroute1.t.rdns.peterjin.org||64||A little resume about myself|
|2602:806:a003:40f::1:a||genesis.t.rdns.peterjin.org||48||The entire contents to Genesis 1:1-3 in the Bible|
|2602:806:a003:40f::2:60||bucket.t.rdns.peterjin.org||150||All the lyrics to the children's nursery rhyme "There's a Hole in my Bucket" (warning: long)|
|2602:806:a003:40f::4:25||bonnie-1.t.rdns.peterjin.org||60||"My Bonnie Lies over the Ocean" (there's an easter egg at the end). The DNS name "bonnie.t.rdns.peterjin.org" resolves to the IP addresses of both bonnie-1 and bonnie-2.|
|2602:806:a003:40f::100:16||rudolph.t.rdns.peterjin.org||60||"Rudolph the Red-Nosed Reindeer"; to skip the intro, use 2602:806:a003:40f::100:316.|
|2602:806:a003:40f::101:1f||misc-1.t.rdns.peterjin.org||60||Miscellaneous songs (Twinkle Twinkle Little Star, Mary had a Little Lamb, Row, row, row your boat, Wheels on the Bus)|
|2602:806:a003:40f::101:1f30||rock-a-bye-baby.t.rdns.peterjin.org||60||"Rock-a-bye Baby" (actually an extension of misc-1)|
|2602:806:a003:40f::102:28||home-on-the-range.t.rdns.peterjin.org||80||"Home on the Range"|
|2602:806:a003:40f::103:1||-||30||The reverse DNS for this address is '<script>alert("XSS")</script>', which is intended to test looking glass and reverse DNS lookup websites for XSS vulnerabilities. Unlike all the other ones here, this one has only one router hop.|
|2602:806:a003:40f::121:25||mountain.t.rdns.peterjin.org||60||"She'll be coming round the Mountain" (with virtual mapping/duplicate hops)|
|2602:806:a003:40f::122:22||bonnie-2.t.rdns.peterjin.org||60||"My Bonnie Lies over the Ocean" (alternate version with virtual mapping)|
|2602:806:a003:40f::123:1a||skip-lou.t.rdns.peterjin.org||60||"Skip to my Lou"|
|2602:806:a003:40f::124:68||12days.t.rdns.peterjin.org||150||12 Days of Christmas (warning: long)|
2602:806:a003:40f::124:5868 (12days-short.t.rdns.peterjin.org) is a shorter version.
|2602:806:a003:40f::125:22||we-wish-you.t.rdns.peterjin.org||60||"We wish you a Merry Christmas" (with a reference to IPv6)|
|2602:806:a003:40f::126:37||bingo.t.rdns.peterjin.org||80||"BINGO" (as in "There was a farmer had a dog and BINGO was his name-o")|
|2602:806:a003:40f::127:1e||small-world.t.rdns.peterjin.org||60||"It's a Small World After All"|
To remember the "t.rdns.peterjin.org" part, think of it as "t"raceroute [.] "rDNS" [reverse DNS] [.] "peterjin.org". The names are rather long like that, just to show that in IPv6, you can create a deep hierarchy of IPv6 addresses.
We added RPKI/ROAs and IRR objects on the 2602:806:a003::/48 prefix and even DNSSEC signed the reverse DNS zones, so you'll be almost guaranteed to see the correct text! :)
tracert -h 64 -w 1 2602:806:a003:40f::3:1a(Windows)
traceroute -m 64 -w 1 2602:806:a003:40f::3:1a(Linux)
If the traceroute happens to seemingly die out, wait a few more hops; there is no firewall that is blocking your requests. The Cogentco routers are notorious for not reliably sending hop limit expired messages. This means that if you are using "Paris traceroute", then you need to add a flag like
UPDATE: Hosting provider has changed upstream transit, so the problem of stars in the middle of the traceroute should no longer be an issue.
Alternatively, if you don't have IPv6, you can view any of the traceroutes using an online looking glass:
- https://lg.as3280.net (keep it on Romania)
Select IPv6 "Trace" or "Traceroute", then enter any of the above IP addresses to view the contents of the traceroute. It is best to choose a location closest to Los Angeles or Seattle.
If viewing the traceroute in an online looking glass and the traceroute stops at a certain point, you may add in an augmented starting point in the second-to-last byte. For example, if the traceroute to 2602:806:a003:40f::2:60 ends at 2602:806:a003:40f::2:27, then you can do another traceroute to 2602:806:a003:40f::2:2760.
How it works
Traceroute Text Generator (formerly Magic Traceroute and Router Hop Generator) works by computing the necessary "ICMP Hop Limit expired" messages virtually based on the current hop limit and parameters given by the destination IP address. For example, if the daemon sees a hop limit of 1, then it will reply with the first address. If the daemon sees a hop limit of 2, then it will reply with the second address, and so on. This is performed in O(1) time for every packet received.
The format of the IP address is as follows:
- XXXX specifies the fixed /96 prefix.
- YYYY is ignored, but is echoed when the ICMP Hop Limit Expired messages are sent back. This allows for a total of 65,536 traceroutes.
- ZZ augments the initial hop limit in case the maximum number of hops is fixed, such as when viewing from an online looking glass. In the reply messages, ZZ is always 0 (for real addresses) or 0xff (for virtually-mapped addresses).
- TT specifies the maximum hop count. If the received Hop Limit is equal to or greater than TT, an ICMP Net unreachable is sent, ending the traceroute.
Traceroute Text Generator only performs the traceroute addressing structure. Reverse DNS can be performed as usual for any addresses, subject to availability at the hosting provider. That means that to add a new traceroute, the only thing that needs to be done is adding in new reverse DNS entries. In fact, the Router Hop Generator daemon is not aware of DNS at all.
This is all possible because a computer network can be simulated by a Turing machine, as a function of the packets that enter and exit the network, and Traceroute Text Generator is just a massive computational trivialization of a multihop computer network.
The reason why there is "t.rdns.peterjin.org" in all of the PTRs is because of the possibility that if it weren't present, then the PTRs could coincide with an unrelated, existing domain.