in zktraffic/base/network.py [0:0]
def get_ip_packet(data, client_port=0, server_port=0, is_loopback=False):
""" if {client,server}_port is 0 any {client,server}_port is good """
header = _loopback if is_loopback else _ethernet
header.unpack(data)
tcp_p = getattr(header.data, "data", None)
if type(tcp_p) != dpkt.tcp.TCP:
raise BadPacket("Not a TCP packet")
if tcp_p.dport == server_port:
if client_port != 0 and tcp_p.sport != client_port:
raise BadPacket("Request from different client")
elif tcp_p.sport == server_port:
if client_port != 0 and tcp_p.dport != client_port:
raise BadPacket("Reply for different client")
else:
if server_port > 0:
raise BadPacket("Packet not for/from client/server")
return header.data