Cloud-native sorting algorithm, written in Go
sudo ./ttlsort --target [host] --iters [num_iters] --chill [chill_time_in_sec] [numbers_to_sort...]
Example. Sort numbers {10, 5, 3, 6, 3, 6}, re-sorting ta most 5 times, with 1 second chill time to prevent being blocked by an anti-flood filter, using www.baidu.com as echo request target.
sudo ./ttlsort --target www.baidu.com --iters 5 --chill 1 10 5 3 6 3 6
It's basically an implementation of sleepsort algorithm but using ICMP echo requests with adjusted TTL (time-to-live)
instead of sleep
function.
It's basically a race condition. Moreover, network is not reliable and packets may arrive in arbitrary order. To mitigate this, multiple sorts will be performed, each one using the partially sorted result of the one before. After each iteration, the array is checked if it's already sorted, since it's computationally less expensive than the sorting itself.
We must be careful not to be blocked for ICMP flood, so there is a "chill" time after each iteration.
Moreover, we cannot sort arrays with negative numbers. More importantly, we cannot sort elements whose values are higher than the number of hops to destination target of our echo requests. The program will warn about this when such scenario is encountered.
One last thing. To send ICMP messages, we need sudo, or CAP_NET_RAW capabilities.