如何截取通过计算机发起的所有网络请求?或者说原理什么样的呢?用c?用python可以实现吗?

用raw_socket可以读取到所有的流量,但是不可以截取请求进一步操作。

阅读 5.5k
7 个回答

截取所有网络请求,你的意思应该是想截取电脑所有通过网卡发送的数据报吧。
截取之后如果只是分析,wincap或者wireshark就足够了。
如果希望修改数据报并且转发,那需要另一台电脑B充当网关,A电脑连接B电脑而不连接路由器,B电脑双网卡,一个网卡负责接收A的所有数据报,另一个网卡负责转发(修改报头等参数),转发程序需要自己写

配合 iptables 截

截取是什么意思?拦截?查看?

可以使用wireshake查询某网卡所有请求

开发一个代理程序干这个? 具体我不懂

  • 可以将网卡更改为混杂模式
在混杂模式下的网卡能够接收一切通过它的数据,而不管该数据目的地址是否是它。如果通过程序将网卡的工作模式设置为 “混杂模式”,那么网卡将接受所有流经它的数据帧

wireshark能够获取到所有所有的网络请求也是基于这种模式。

这种方式能够成功的前提是所有的流量需要流经该网卡处于的主机,也就是说他只能获取到本机的网络流量。如果想要在某一台电脑来获取另外一台的数据流量,那么这就属于黑客的范畴了,而且必须要在同一个局域网内。比如使用arp诱骗可以实现

raw_socket是原套接字的方式,但是有个缺点是他会把你本机通信socket也截取,linux提供的有libpcap库,win对应的好像是winpcap,直接用就可以了,这个是截取的网卡数据。wireshake tcpdump都是根据这个来实现的。

楼主解决了吗 我也有这个需求

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题