icmp-timestamp
A small toolkit to convert ICMP Timestamp (type 13/14) replies into human‑readable times and to report clock offsets.
This repository contains:
timecheck.py— a Python/Scapy-based tool that queries ICMP Timestamp and reports NTP-style offsets.icmp-timestamp.sh— a Bash helper that converts numeric millisecond timestamps to human-readable UTC datetimes.pry_bar.sh— a small driver that useshping3to probe hosts, parses RTT/timestamp values, and callsicmp-timestamp.sh.
Prerequisites
- Python 3.8+ and
pip(fortimecheck.py). scapyPython package (install viarequirements.txtor directly).hping3for the Bash flow (pry_bar.shand directhping3use).- Elevated privileges (root / sudo) are typically required to send/receive raw ICMP packets.
Install system packages (examples):
Debian / Ubuntu (For bash script using hping3)
sudo apt update
sudo apt install -y hping3
macOS (Homebrew)
brew install hping
Python (For Python script using scapy)
python3 -m pip install -r requirements.txt
With Pip
pip install icmp-timestamp
Using the Python tool (timecheck.py)
timecheck.py uses Scapy (AF_PACKET) to send ICMP Timestamp requests. It usually requires sudo.
Examples:
Query hosts from a file (one host per line)
sudo python3 timecheck.py hosts.txt
With a 3 second timeout and verbose per-host timing
sudo python3 timecheck.py hosts.txt --timeout 3 --verbose
Write results to CSV
sudo python3 timecheck.py hosts.txt --csv results.csv
timecheck.py prints a compact table of remote times, offsets vs local clock, RTTs, and a simple assessment.
Using the Bash flow (hping3 + pry_bar.sh + icmp-timestamp.sh)
icmp-timestamp.sh can be used standalone to convert numeric millisecond timestamps into human-readable times. For example:
pry_bar.sh drives hping3, extracts round-trip min/avg/max values, and calls icmp-timestamp.sh which converts numeric millisecond timestamps into human-readable times.
Notes:
hping3requires root privileges — run withsudo.pry_bar.shparseshping3output forround-trip min/avg/max. It prints per-target RTTs and forwards them toicmp-timestamp.sh.icmp-timestamp.shexpects numeric millisecond timestamps (or values parsed bypry_bar.sh) via-O(Originate),-R(Receive),-T(Transmit). Example:
Metadata
Release files for icmp-timecheck 1.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| icmp_timecheck-1.1.5.tar.gz | 6.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| icmp_timecheck-1.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.3 kB
Release files / icmp_timecheck-1.1.5.tar.gz
| Download URL | icmp_timecheck-1.1.5.tar.gz |
|---|---|
| Size | 6.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
16561674952b81a3a108fbac8306183049f029ff207dc815640150614cbd81af
|
|
BLAKE2b-256 checksum How to use checksums |
297d8ea904d2ea521a0245c82d80569af8f52dfdc17c8eed0c4cc36eb295ba24
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|
Release files / icmp_timecheck-1.1.5-py3-none-any.whl
| Download URL | icmp_timecheck-1.1.5-py3-none-any.whl |
|---|---|
| Size | 6.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2605009ab9b4ab2949d5af90e974cc4a8040adcf823ca220b75b534830cbe6c1
|
|
BLAKE2b-256 checksum How to use checksums |
c9ab3a0d64229c90616391cf3b87208820fde6c4bc1a093e2ca323ceb10c0d80
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.15
|