- Linguaggio
- 🐍 Python
- Pacchetto
dojo-tzsp·import dojo.tzsp- Ultima versione
- 0.1.0 · 10 Novembre 2026
- Richiede
- Python ≥ 3.9
- Dipendenze
- nessuna
- Licenza
- MIT
- Linguaggio
- 🐘 PHP
- Pacchetto
dojo/tzsp·Dojo\Tzsp- Ultima versione
- 0.1.0 · 10 Novembre 2026
- Richiede
- PHP ≥ 8.1
- Dipendenze
- nessuna
- Licenza
- MIT
Funziona con: Qualunque RouterOS con sniffer in streaming o regole mangle sniff-tzsp. Verificata contro RouterOS 7.25 (pacchetti TZSP reali). Python 3.9+.
Libreria del progetto indipendente MikroTik Dojo: non è software MikroTik né è approvata da MikroTik. Provala prima in laboratorio.
Installazione e uso
Installazione (Python)
pip install --index-url https://mikrotikdojo.com/pypi/<il-tuo-indirizzo>/simple/ dojo-tzspLa libreria si installa con pip dall'indice del dojo, con un indirizzo personale riservato a chi è nel dojo. Entrare è gratis: ti serve solo la tua email.
Esempio d'uso (Python)
from dojo.tzsp import TzspReceiver, ethernet
with TzspReceiver() as rx: # ascolta su 0.0.0.0:37008
for addr, pkt in rx.packets():
eth = ethernet(pkt.payload) # dissezione L2 minimale
vlan = " vlan%s" % eth["vlan"] if eth["vlan"] else ""
print(addr[0], eth["src"], "->", eth["dst"], eth["type_name"] + vlan)
# decodificare un singolo datagramma gia' catturato:
from dojo.tzsp import decode
pkt = decode(data)
print(pkt.version, pkt.protocol_name, len(pkt.payload))Installazione (PHP)
composer config repositories.dojo composer https://mikrotikdojo.com/composer/<il-tuo-indirizzo>/
composer require dojo/tzspLa libreria si installa con Composer dal repository del dojo, con un indirizzo personale riservato a chi è nel dojo. Entrare è gratis: ti serve solo la tua email.
Esempio d'uso (PHP)
use Dojo\Tzsp\TzspReceiver;
use Dojo\Tzsp\Tzsp;
$rx = new TzspReceiver(); // 0.0.0.0:37008
foreach ($rx->packets() as [$addr, $pkt]) {
$eth = Tzsp::ethernet($pkt->payload);
echo "$addr {$eth['src']} -> {$eth['dst']} {$eth['type_name']}\n";
}
// decodificare un singolo datagramma gia' catturato:
$pkt = Tzsp::decode($data);
echo $pkt->version, " ", $pkt->protocolName(), " ", strlen($pkt->payload), "\n";Che cosa fa
dojo.tzsp legge lo «sniffer remoto» di MikroTik. RouterOS sa specchiare i pacchetti verso un’altra macchina incapsulandoli in TZSP (TaZmen Sniffer Protocol, UDP porta 37008), con /tool sniffer in streaming oppure con regole /ip firewall mangle action=sniff-tzsp. Ogni datagramma è un piccolo header TZSP seguito dal frame originale (di norma Ethernet).
Cosa fa: apre un ricevitore UDP, decodifica l’header TZSP (versione, tipo, protocollo incapsulato, campi opzionali come RSSI/SNR/canale) ed estrae il frame interno; un helper fa la dissezione Ethernet minimale (MAC sorgente/destinazione, VLAN 802.1Q/802.1ad attraversate, ethertype). Da lì il frame è pronto: lo analizzi, lo salvi in un pcap, o lo passi a scapy/dpkt.
Quando serve: analisi del traffico a distanza senza stare davanti al router, cattura selettiva di un flusso, debug di VLAN e L2, alimentazione di una pipeline di monitoraggio. È la stessa tecnica usata negli sniffer WAN.
Attenzione: TZSP viaggia in chiaro — manda il mirror solo su reti fidate — e può generare molto traffico: filtra bene le regole sniff-tzsp e rimuovile a fine analisi. Nessuna dipendenza esterna (solo libreria standard).
Versioni
| Versione | Novità | File |
|---|---|---|
| 0.1.0 PHP ultima 10 Novembre 2026 | Prima versione pubblica (PHP). Richiede solo PHP 8.1+ (nessuna estensione aggiuntiva). Namespace |
|
| 0.1.0 Python ultima 10 Novembre 2026 | Prima versione pubblica. Ricevitore UDP, decoder TZSP (header + campi opzionali) e dissezione Ethernet/VLAN minimale. Nessuna dipendenza esterna (solo libreria standard). |
Ogni file ha la sua impronta SHA-256 (pip e Composer la controllano da soli) e una prova OpenTimestamps registrata su Bitcoin: chiunque può verificare che il file è quello pubblicato in quella data. I file si scaricano solo se sei nel dojo.
Gli howto che la usano
Domande frequenti
Che cos'è TZSP?
TaZmen Sniffer Protocol: un incapsulamento UDP (porta 37008) che trasporta un pacchetto catturato dentro un datagramma, con un piccolo header. MikroTik lo usa per lo sniffer remoto, ma è un formato di diversi apparati.
Come lo attivo su RouterOS?
In streaming: /tool sniffer set streaming-enabled=yes streaming-server=<tua-ip> poi start. Oppure selettivo: /ip firewall mangle add action=sniff-tzsp sniff-target=<tua-ip> sniff-target-port=37008 .... Ricordati di rimuovere le regole a fine analisi.
I pacchetti sono cifrati?
No, TZSP è in chiaro: chi sta sul percorso vede i pacchetti specchiati. Usalo su reti fidate o dentro un tunnel.
Funziona con gli switch CRS?
Il mirror arriva comunque; ma su alcuni switch il forwarding in hardware bypassa la CPU, quindi /tool sniffer lì vede solo il traffico diretto alla CPU. Per il traffico che ti interessa usa una regola mangle sniff-tzsp.
Cosa contiene il payload che ottengo?
Il frame originale catturato, di norma Ethernet. L'helper ethernet() ne estrae MAC e VLAN; per L3/L4 passi il payload a una libreria dedicata (scapy, dpkt) o lo scrivi in un pcap.