# ttl-probe [![CI](https://github.com/devsavsis/ttl-probe/actions/workflows/ci.yml/badge.svg)](https://github.com/devsavsis/ttl-probe/actions/workflows/ci.yml) [![license](https://img.shields.io/github/license/ImSavsis/ttl-probe.svg)](https://github.com/devsavsis/ttl-probe/blob/master/LICENSE) свой traceroute на C++ через сырые ICMP-сокеты. шлёт echo-запросы с растущим TTL и смотрит кто отвечает "time exceeded" на каждом хопе. ```mermaid sequenceDiagram ttl-probe->>Hop1: ICMP echo, TTL=1 Hop1-->>ttl-probe: time exceeded ttl-probe->>Hop2: ICMP echo, TTL=2 Hop2-->>ttl-probe: time exceeded ttl-probe->>Target: ICMP echo, TTL=N Target-->>ttl-probe: echo reply (дошли) ``` изначально планировал сюда честный fake-packet TTL-трюк (как в zapret), но на винде это требует сырых TCP-пакетов, а винда с висты их резать не даёт без отдельного драйвера (WinDivert/Npcap) — это уже не "просто". traceroute зато честно показывает сколько хопов до сервера, полезно прежде чем городить любой TTL-трюк вручную. ## сборка ``` cmake -B build cmake --build build --config Release ``` ## юзать нужны права администратора (сырые сокеты): ``` build\Release\ttlprobe.exe example.com 30 ```