我想向我的机器发送一个损坏的 netbios 会话服务数据包,我的目标是检查我的机器在收到损坏的 netbios 数据包后是否重新启动(这以前发生过,我想重现同样的情况)。
我在用斯卡皮这是一个 Python 工具,它首先与端口 139 的机器建立连接,然后我发送一个NBT会话()数据包到机器。
在 wireshark 跟踪中,我看到会话已建立,但是当我尝试使用 NBTSession() 层发送数据包时,wireshark 跟踪显示它是NBSS 延续消息。
from scapy.all import *
def nbt_func():
nb=NBTSession(TYPE=0x81,RESERVED=10,LENGTH=2000)
rnb=Raw(nb)
s=socket.socket()
s.connect(("10.62.147.30",139))
ss=StreamSocket(s,Raw)
s.sr1(rnb)
if __name__ == "__main__":
nbt_func()
知道为什么会发生这种情况吗?或者是否有其他方法可以重现该问题?
我在 NBTSession() 字段中给出了一些随机值,因为我认为给出错误的值可能意味着损坏数据包。
谢谢您的帮助。
答案1
损坏的包在第 5 层以上并没有完全格式化:)它甚至可能是损坏的 IP 头,因此您无法使用高级库创建损坏的包。
可以提出的一个好方法是使用 netcat 连接到您的服务器并从 /dev/urandom 发送一些垃圾:
cat /dev/urandom | nc 10.62.147.30 139