背景 我正在使用scapy編寫Windows操作系統檢測腳本。雖然我可以使用其他工具如p0f,nmap和SMB腳本等,但這部分功能只是整體的一小部分,所以我致力於scapy路線。scapy SMB/CIFS解碼
問題 作爲scapy的新手,我在使用SMB解碼器時遇到了一些問題。到目前爲止,我有:
def disp(pkt):
print(pkt.getlayer(IP).src)
if pkt.haslayer(Raw):
print(SMBSession_Setup_AndX_Request(pkt.getlayer(Raw).load).NativeOS)
foo=sniff(prn=disp,filter="port 445",count=10)
正如你所看到的,我只是通過SMBSession_Setup_AndX_Request()類餡「原始」層,希望它會做正確的事與「原始」的有效載荷。
這看起來似乎是功能性的,但返回「Windows 4.0」的NativeOS屬性的「默認」類設置(嗯,它是在我的版本的scapy的smb.py中),並且有時會將我視爲堆棧跟蹤,取決於Mac是否在網絡上,執行CIFS。我盲目地認爲,我可以抓住NativeOS並完成它,當然是構思不清。
問題 如果我的方法是完全錯誤的,你會使用Scapy的的嗅()方法是正確的方法,以自定義協議解碼?
非常感謝您的任何建議,
sc。
感謝您的回覆 - 我會在tshark的某個地方加入popen,併爲皮帶和護腕進行p0f操作。 HTTP用戶代理也將通過使用scapy而得到很好的效果。非常感謝! – swisscheese