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-tzsp

La 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.

Entra gratis nel dojo Sono già iscritto

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/tzsp

La 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.

Entra gratis nel dojo Sono già iscritto

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

VersioneNovitàFile
0.1.0 PHP ultima
10 Novembre 2026

Prima versione pubblica (PHP). Richiede solo PHP 8.1+ (nessuna estensione aggiuntiva). Namespace Dojo\Tzsp.

  • dojo-tzsp-0.1.0.zip 6,4 KB
    sha256 4da43b64d902bd9cff5581d00c89ad8815c124252cb4761c9b8ecf022ddbe54d
    .ots · confermata nel blocco Bitcoin 975.308
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).

  • dojo_tzsp-0.1.0-py3-none-any.whl 7,2 KB
    sha256 e66309b9e5ff8216d3e3e6778b474c033bea1ab6567b57cc3cf4a17f8031b403
    .ots · confermata nel blocco Bitcoin 975.308
  • dojo_tzsp-0.1.0.tar.gz 6,5 KB
    sha256 4935bc2dc22bb857a9ed5282b726978c3d8c74e2092f289c11633d27ef3574f1
    .ots · confermata nel blocco Bitcoin 975.308

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.