Soubor obsahuje reálná měření z loggeru LPWANminiUNI odesílaná přes NBIoT/UDP na port 55555. Každý paket nese 25bytový payload s půdními a vzdušnými hodnotami (formát payloadu viz Hardware).
Původní zdrojové a cílové IP adresy byly nahrazeny adresami 10.0.0.1 a 10.0.0.2.
Zobrazení paketů pomocí tcpdump:
tcpdump -r clima_sample.cap -n -X
Extrakce samotného UDP payloadu v hex formátu:
tshark -r clima_sample.cap -T fields -e data.data
Přepište cílovou IP na adresu vašeho listeneru a přehrajte:
# Přepis cílové IP na váš server
tcprewrite --infile=clima_sample.cap --outfile=clima_target.cap \
--dstipmap=10.0.0.2/32:IP_SERVERU/32 --fixcsum
# Přehrání v původní rychlosti
tcpreplay --intf1=eth0 clima_target.cap
# Přehrání maximální rychlostí
tcpreplay --intf1=eth0 --topspeed clima_target.cap
Pokud potřebujete poslat samotné UDP payloady na listener:
# Extrakce payloadů jako hex, jeden na řádek
tshark -r clima_sample.cap -T fields -e data.data | while read hex; do
echo "$hex" | xxd -r -p | nc -u -w0 IP_SERVERU 55555
sleep 0.1
done
import socket, time
from scapy.all import rdpcap, UDP, Raw
packets = rdpcap('clima_sample.cap')
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for pkt in packets:
if pkt.haslayer(UDP) and pkt.haslayer(Raw):
sock.sendto(bytes(pkt[Raw].load), ('IP_SERVERU', 55555))
time.sleep(1) # upravte zpoždění dle potřeby
sock.close()
Pro ověření, že pakety přicházejí správně, spusťte jednoduchý UDP listener:
nc -u -l -p 55555 | xxd
Nebo pomocí socat pro nepřetržitý poslech:
socat -u UDP-RECV:55555 - | xxd