在 Linux 中使用 C 语言使用原始套接字进行数据包嗅探
我需要在 Linux 中编写一个数据包嗅探器来检测发送的 HTTPS 数据包并保存请求中的 url。我在 security-freak 中找到了此代码并运行了它。该代码运行并且仅嗅探接收到的数据包,但我需要在嗅探器中获取发送的数据包。 如何获取这段代码中发送的数据包?
我不能使用像 libcap 这样的库(禁止)。 代码是:sniffer.c
I need to write a packet sniffer in Linux that detects HTTPS packet that are sent and save the url from the request. I found code for this in security-freak and ran it. This code runs and only sniffs the received packet but I need to get the sent packet in the sniffer.
How do I get the sent packet in this code?
I can't use any library like libcap (forbidden).
The code is :sniffer.c
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您应该使用 ETH_P_ALL 而不是 ETH_P_IP 作为协议。 ETH_P_IP 仅侦听传入的 IP 数据包。
You should be using ETH_P_ALL instead of ETH_P_IP as the protocol. ETH_P_IP only listens for incoming IP packets.
为什么你不能使用任何库?家庭作业?
如果没有代码中的示例,例如您如何设置 sll_pkttype ,则很难回答。
urlsnarf 工具位于 dnsiff 套件可能值得一看。
Why can't you use any library? Homework?
It's hard to answer without having examples from your code, for example how you set
sll_pkttype
.The urlsnarf tool in the dnsiff suite could be worth a look.
使用适当的 libpcap 或 DNET 使用情况 你应该能够获取所有网络
所需层上的流量(协议 - 5)(也是此传出)。
但你应该已经知道了。
您需要仔细阅读上述库手册并找到适当的过滤。
With appropriate libpcap or DNET usage You should be able to get all network
traffic on the desired layer (protocol - 5) (also this outgoing).
But You should know that already.
You need to go through the above libraries manuals and find the appropriate filtering.