gpt4 book ai didi

scapy - TCP 握手 scapy 代码不起作用

转载 作者:行者123 更新时间:2023-12-03 14:40:39 25 4
gpt4 key购买 nike

我在使用 Scapy 进行 TCP 握手时遇到问题。我的 Scapy 代码正在发送 SYN 数据包。目标正在使用 SYN/ACK 数据包进行响应。我可以在 tcpdump 中看到 SYN/ACK 数据包,但它没有接收到 scapy 代码。注意:没有从linux m/c发送的RST包。

这是我的代码片段:

@ATMT.condition(IPCP_OPEN)
def send_syn(self):
time.sleep(10)
self.src_port = random.randrange(1024,65535)
print "Sending SYN packet"
print "Src MAC: "+self.mac+" dest MAC: "+DEST_MAC
send_pkt = Ether(src=self.mac, dst=DEST_MAC)/Dot1Q(vlan=self.vlan_out)/Dot1Q(vlan=self.vlan_in)/PPPoE(sessionid=1)/PPP(proto=IP_PROTO)/IP(src="1.0.115.34",dst="10.10.10.10")/TCP(sport=self.src_port, dport=80, flags="S")
hexdump(send_pkt)
print "src_port: "+src_port
sendp(Ether(src=self.mac, dst=DEST_MAC)/Dot1Q(vlan=self.vlan_out)/Dot1Q(vlan=self.vlan_in)/PPPoE(sessionid=self.sess_id)/PPP(proto=IP_PROTO)/IP(src="1.0.115.34",dst="10.10.10.10")/TCP(sport=self.src_port, dport=80, flags="S"), iface=self.iface, verbose=False)
# hexdump(pkt)
raise self.WAIT_SYNACK()

来自 WAIT_SYNACK 的转换

@ATMT.receive_condition(WAIT_SYNACK)
def receive_synack(self,pkt):
if (TCP in pkt):
print "Recvd SYN/ACK"
hexdump(pkt)
#self.src_port = pkt[TCP].dport
self.seq_no = pkt[TCP].ack
self.ack_no = pkt[TCP].seq
print "processing SYN/ACK"
raise self.GOT_SYNACK()

我的master_filter如下

def master_filter(self, pkt):
return (PPPoED in pkt or PPPoE in pkt) and (pkt[Dot1Q:1].vlan==self.vlan_out) and (pkt[Dot1Q:2].vlan==self.vlan_in)

为什么我的 scapy 代码收不到 SYN/ACK 数据包?

最佳答案

您缺少 TCP,因为您只是过滤 PPPoE*。将过滤器更改为 pkt.haslayer(TCP) 或 (...

def master_filter(self, pkt):
return (PPPoED in pkt or PPPoE in pkt) and (pkt[Dot1Q:1].vlan==self.vlan_out) and (pkt[Dot1Q:2].vlan==self.vlan_in)

关于scapy - TCP 握手 scapy 代码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32344378/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com