Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets 在Go中使用原始套接字实现TCP包嗅探器_Sockets_Go_Network Programming_Packet Sniffers_Sniffer - Fatal编程技术网

Sockets 在Go中使用原始套接字实现TCP包嗅探器

Sockets 在Go中使用原始套接字实现TCP包嗅探器,sockets,go,network-programming,packet-sniffers,sniffer,Sockets,Go,Network Programming,Packet Sniffers,Sniffer,我正在寻找一种方法,使用Go编程语言在接口上监听所有传入流量 我希望它与这个python类似: import socket, sys from struct import * s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP) while True: packet = s.recvfrom(65565) 任何建议都很好。谢谢。您可以查看参考资料,尤其是Slawosz,这些都是很好的例子。谢谢然而

我正在寻找一种方法,使用Go编程语言在接口上监听所有传入流量

我希望它与这个python类似:

import socket, sys
from struct import *
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP)

while True:
    packet = s.recvfrom(65565)

任何建议都很好。谢谢。

您可以查看参考资料,尤其是Slawosz,这些都是很好的例子。谢谢然而,我正在寻找一些允许使用数据包中标识的dns查询来解析数据包的东西。我们有一个远程接口的点击,它将数据包推送到我的接口,我试图接受它们并将它们分开。我使用了Python Scapy,我们收到的数据包太多,Scapy无法处理。Go可以很好地处理原始套接字。应该能让你快速了解例子。哦如果您想从其wire格式解析DNS内容,您可能会发现这很有用——它提供了普通Go中的高级处理。您可能还想使用类似于
gopacket
的东西,它包装了由
tcpdump
和Wireshark提供的解析库,但您必须记住,从Go调用C很慢--可能比执行系统调用慢,因此,如果性能至关重要,请避免使用包装的C库,并确保使用纯Go.Roger。感谢您的反馈和帮助。