草庐IT

scapy_pkt

全部标签

tcp - 使用 Scapy 发送 tcp payload : Why a byte is eaten?

我的问题是:我想用scapy实现一个监听服务来模拟蜜jar(因为蜜jar使用的是假ip,所以不能使用OSsockets),我选择了scapy。我实现了一个非常简单的TCP握手程序,但是有一件事让我很沮丧:我使用PSH发送的数据包的一个字节被吃掉了。例如,我向客户端发送“abc”,但客户端的套接字(例如netcat或wget)仅接收到“bc”。另一个例子是“HTTP/1.1200OK”变成“TTP/1.1200OK”。我捕获了数据包,wireshark可以正确地将我手工制作的数据包识别为HTTP,但客户端套接字只缺少1个字节。我不知道为什么。代码如下:192.168.1.100代表服务器

python - 使用 scapy 发送 TCP 握手,但在 wireshark 中序列号错误?

例如,有2台主机A和B,其IP地址分别为192.168.10.132和192.168.10.138。主机A发送seq=1的TCP数据包,B回复ack=1,seq=2的数据包,以此类推。代码如下:send(IP(dst='192.168.10.138',src='192.168.10.132')/TCP(sport=54321,dport=32145,seq=1,flags='S'))#HostAsend(IP(dst='192.168.10.132',src='192.168.10.138')/TCP(sport=32145,dport=54321,seq=2,ack=1,flags=

tcp - Scapy 设置 tcp 流窗口大于 65535

使用scapy时,如何设置流量控制窗口大于65535的tcp数据包?我知道用scapy写:packet1[TCP].window=65535将窗口设置为65535;但是,如果需要将窗口大小设置为大于65535,则应以不同的方式设置,因为在tcpheader中,窗口字段只有两个字节,因此它不能大于65535,因此应该在另一个中完成方法。我知道这应该是可能的。谢谢。 最佳答案 排序答案是:您不能将fieldTCP.window设置为大于65535的值,因为它是按两个字节编码的:>>>ls(TCP)[...]window:ShortFie

python-2.7 - 如何使用 Scapy 提取 HTML 代码?

我最近开始使用scapyPython2.x的库我发现关于sniff()函数的文档很少。我开始玩弄它,发现我可以在非常低的级别查看TCP数据包。到目前为止,我只找到了信息数据。例如:这是我在scapy终端中输入的内容:A=sniff(filter="tcpandhost216.58.193.78",count=2)这是向google.com请求主页的请求:>>这是响应:>>使用这个函数,有没有一种方法可以从响应中提取HTML代码?此外,这些数据包是什么样子的?最后,为什么这两个数据包几乎相同? 最佳答案 您示例中的段“几乎相同”,因为

使用 Scapy 发送的 TCP SYN 从未被服务器接收,也未被 Wireshark 在环回接口(interface)上注意到

我在Windows7(Python3.6、Scapy2.4.0)上对Scapy的基本用法有疑问。我也在这个系统上运行Npcap0.99r7和Wireshark2.6.2。系统只有一个无线网络接口(interface)加上Npcap环回接口(interface)。我设置了这个非常经典的TCP服务器...:importsockethost='127.0.0.1'port=8089s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)s.bind((host,port))s.listen(1)connection,address=s.accept

使用 Scapy 进行 TCP 空扫描

有人可以指导我如何将Scapy中的数据包发送到ip地址,并将TCPheader中的所有标志设置为null吗?到目前为止,我已尝试在不指定要设置哪些标志的情况下发送数据包,但每次发送数据包时似乎都会设置Syn标志。我想知道它以便我可以了解有关TCP空扫描的更多信息。非常感谢您的帮助和指导。 最佳答案 我没有使用过Scapy,但是通过快速浏览文档,在文档的这个页面上有一个创建TCP数据包同时指定要设置的标志的示例:http://www.secdev.org/projects/scapy/doc/usage.html#simple-one

python - 如何在 scapy 中欺骗 TCP 握手?

我最近尝试编写一个执行完整TCP握手的Scapy脚本。我的想法是,我使用-netsocket用户空间接口(interface)(它似乎可以很好地处理原始IP/以太网)连接两个QemuVM,并指示机器B阻止来自A的所有输入(以防止它发送RST)。然后,我使用telnetconnect()从机器A到B,并在机器B上运行以下脚本:#!/usr/bin/pythonimportscapy.allasscapyfilter="port31337"iface="eth0"defprepare_response(t):print("Received:%s"%repr(t))t.src,t.dst=t

python scapy : how to translate port numbers to service names?

Scapy中的TCP层包含源端口:>>>a[TCP].sport80有没有一种简单的方法可以将端口号转换为服务名称?我看到Scapy有TCP_SERVICES和UDP_SERVICES来转换端口号,但是printTCP_SERVICES[80]#failsprintTCP_SERVICES['80']#failsprintTCP_SERVICES.__getitem__(80)#failsprintTCP_SERVICES['www']#works,butit'snotwhatineed80有人知道如何将端口映射到服务吗?提前致谢 最佳答案

python - 如何使用scapy创建一个带有自定义选项字段的tcp数据包

我正在尝试创建一个带有自定义选项字段的TCP数据包。一般情况下,当它是标准选项时,我们可以通过“options”参数来完成。“MSS”例如:>>>hexdump(IP()/TCP(dport=5678,flags="S",options=[('MSS',16)]))00004500002C0001000040067CC97F000001E..,....@.|.....00107F0000010014162E0000000000000000................0020600220006986000002040010`..i.......当遇到非标准选项时,假设我需要一个类型为

python - 如何使用 scapy 将选项缩放添加到 tcp 数据包

我的TCP数据包是:SYN=IP(dst=dest)/TCP(sport=sp,dport=dp,flags="S",window=65535)我想以这种方式将选项窗口缩放添加到我的TCP数据包中:我如何使用scapy做到这一点 最佳答案 在文件scapy/layers/inet.py中有一个可以添加到数据包中的TCP选项列表:TCPOptions=({0:("EOL",None),1:("NOP",None),2:("MSS","!H"),3:("WScale","!B"),4:("SAckOK",None),5:("SAck",