我正试图找到一个解决方案,通过特定的端口监视流量(进出)。它不需要捕获数据包,或者做其他任何事情。它所做的就是成为一个流量监听器,以确保每隔10分钟向该端口发送或接收消息。它必须始终在后台运行(如守护进程),并且没有显着的性能影响。根据我的研究,一个选择是使用现有的工具来做到这一点。有一些工具可以监视或嗅探流量,如wireshark。那么,似乎大多数人监视通过接口而不是端口的流量,或者他们不能作为守护进程运行。编写程序来做到这一点的另一种选择。 SharpPcap似乎是一个不错的选择,但我仍然需要捕获和分析数据包,以了解这种流量是否存在。有人可以建议我应该做什么吗?如何监视Windows中的流量端口?
回答
限制工具对性能的影响的最佳方式是通过ETW(Windows事件跟踪)实时使用者(即,一种激活ETW跟踪并立即读取而不是将其保存到一份文件)。 This MSDN sample是一个很好的方式来看看如何通过C#做到这一点,它给你一些代码来开始。
SharpPcap以与Wireshark相同的方式处理数据包捕获,因此您可以设置过滤器来将捕获的数据包限制在SharpPcap中的特定端口,就像在wireshark中一样。除此之外,SharpPcap相对wireshark来说将是一个轻量化的选择。
下载SharpPcap source tree并查看Example05.SetFilter。
为了缩小结果,您只捕获想要看到的数据包,您需要使用几个过滤器。
Pcap在所有使用它的应用程序中使用通用语言来指定要设置的过滤器。捕获使用winpcap(windows)或libpcap(* nix)的程序包括sharppcap,wireshark,pcap.net,winpcap,libpcap,tcpdump等等。有关如何使用pcap过滤器的很好的资源,请参见this link。
以下是需要的过滤器:
- 醚主机ehost
- 端口端口
凡ehost是计算机的发送/接收的数据包的MAC地址并且该端口是您要监控的端口。所以完整的过滤器字符串会。
SetFilter("ether host ff:ff:ff:ff:ff:ff and port 60");
这里的MAC和端口仅用于说明目的,您显然会使用与您的特定设置有关的值更改它们。
这在SetFilter示例中使用,只需打印出一行信息,其中包含每次捕获数据包时捕获到数据包的时间以及符合过滤条件的条件。
如果您想了解有关数据包的更多详细信息,例如来自标头或数据包的有效负载的信息,则需要解析传入的原始数据包。如果您需要关于如何执行此操作的一些提示,请务必在sourceforge项目论坛上寻求帮助。项目开发人员非常积极并乐于提供帮助。
- 1. 如何监视端口554上的rtsp流量
- 2. 如何在Eclipse中监视JBoss端口
- 3. 在Linux中监视端口
- 4. 监视USB流量
- 5. 如何以编程方式被动监视Windows Phone中的网络流量?
- 6. Windows:如何将udp流量重定向到另一个端口
- 7. WebView流量监视器
- 8. GStreamer管道中的GstBuffer流量监视
- 9. 如何添加多个流量端口?
- 10. Java如何在不干扰的情况下监听端口上的流量
- 11. 在tcpdump中监视多个端口
- 12. 用于Windows CE的串行端口监视应用程序?
- 13. 监视Thunderbolt端口连接的变化
- 14. 监视串行端口的I/O
- 15. 如何在C++中监视流
- 16. 监视android的TLS流量的方法
- 17. 安装Windows示例端口监视器时出现错误localmon
- 18. 编写Windows端口监视器基础知识
- 19. HP LoadRunner - 用于监视外出活动TCP端口的测量
- 20. 监视网络流量的命令
- 21. 如何监控网络流量的Node.js和Windows库
- 22. 如何监控windows mobile上的传入/传出流量?
- 23. 如何知道在Linux中的特定端口的流量
- 24. 监视流类
- 25. 如何监视正在用于FTP服务的网络端口?
- 26. 监控Java中的流量
- 27. 使用nagios进行端口监视
- 28. 无源串行端口监视器
- 29. 如何在Android上监视传入和传出的IP流量
- 30. 如何监视Windows上的MySQL查询