вначале написал proxy с twisted, но просто proxy недостаточно, а перехватывать twisted не умеет вроде.
Интересуют пакеты длиннее 40.
Вначале пробовал pcap, вроде все необходимые данные понял как получить:
import dpkt
import pcap
import struct
pc = pcap.pcap()
pc.setfilter('dst port 5190')
for ts, pkt in pc:
pkt = dpkt.ethernet.Ethernet(pkt)
if(pkt.ip.len==40):
continue
src = int(struct.unpack('I', pkt.ip.src)[0])
dst = int(struct.unpack('I', pkt.ip.dst)[0])
srcport = int(pkt.ip.data.sport)
dstport = int(pkt.ip.data.dport)
print pkt.ip.data.data
Поэтому тест на scapy:
from scapy.all import *
while True:
xxx = sniff(filter="dst port 5190", count=1, iface="eth1")
x = xxx[0]
if(x.__dict__['payload'].__dict__['fields']['len']>40):
print x.__dict__['payload'].__dict__['payload'].__dict__['payload'].__dict__['fields']['load']
1. что почитать чтобы начать в этом ориентироваться?
2. почему получается такой путь до данных в scapy?
3. pcap работал четко, а print в scapy выводит не все пакеты…
4. точно ли в pcap не отослать пакет и есть ли простой пример как отправить пакет в scapy (который был бы идентичен тем что отправляются сейчас сохранить/подменить данные и длину/отправить)
5. может я что то не так делаю? как правильно?
Заранее большое спасибо.