进程流量监控
Tofloor
poster avatar
153******66
deepin
2015-06-12 23:34
Author
本帖最后由 eleveni386 于 2015-6-12 15:39 编辑

悬浮窗口-- 流量监视器


下载地址 https://github.com/eleveni386/netmonitor

一个利用pcap写的流量监视工具
依赖python-pypcap
依赖python-dpkt
依赖 psutil
请自行下载安装三个包
执行./netmon 第一次执行会要求输入密码, 之后不再需要 此次更新:
2015-06-12
  • 重写部分代码, 修复wifi环境下无上传流量问题
  • 才用psutil库, 获得进程信息.
问题: 对于QQ的udp流量无法获取到, 采用nc 测试udp传送文件可以监控到该流量
2013-04-25
  • 修正UI被流量采集模块堵塞问题
此次更新:
  • 降低cpu占用率, 由原来的12-20% 到现在的3%
  • 重写了流量采集代码, 结构更加合理,更易阅读
  • 使用圆角悬浮窗口,更加美观


该工具的原理是用psutil 获得当前活动的进程, 并得到进程的sourceip:port remoteip:port 然后利用scapy抓包, 提取报文的 sourceip:port remoteip:port 与psutil获得数据做对比, 并归入该进程下.  


现在存在一个问题, 对于QQ的流量无法监控到,  通过scapy 可以看见qq远程ip:8000端口与本地4000端口有udp通信, 但是因为 在本地的进程里面 只有本地监听端口 而没有远程ip和port 导致scapy抓包无法匹配到它的流量.


我有一种想法, 以上的做法虽然可以监控到流量, 但是做法并不正统, 我想内核肯定知道 哪个进程在发包, 我如果可以直接从内核获得该信息, 才是正确的. 那么问题来了. 我如何才能从内核获得这个信息?

Reply Favorite View the author
All Replies
边城浪子1777
deepin
2015-06-12 23:54
#1
大师,能不能搞成deb格式,我等小白不太会折腾啊!
Reply View the author
153******66
deepin
2015-06-12 23:56
#2
https://bbs.deepin.org/post/30770
大师,能不能搞成deb格式,我等小白不太会折腾啊!

没解决 qq udp问题. 都不准备发布呢. 现在发出来 只是想找高手 教我怎么用python和内核对话. 拿到我想要的东西.  被qq那个问题 郁闷到了. 这还只是一个半成品, 比如 进程限速 功能没加上. kill 进程功能也没加上.
Reply View the author
边城浪子1777
deepin
2015-06-12 23:59
#3
加油大师。
Reply View the author
brophy
deepin
2015-06-13 01:19
#4
我等也只能说加油了,这个功能确实很有必要,前面看到论坛里也有人开发了一个类似的,不过好像功能还没有你的多,你们可以交流一下@diyiliaoya
Reply View the author
136******54
deepin
2015-06-13 02:43
#5
https://bbs.deepin.org/post/30770
我等也只能说加油了,这个功能确实很有必要,前面看到论坛里也有人开发了一个类似的,不过好像功能还没有你 ...

你@错了,不是我。。。。。。
https://bbs.deepin.org/post/29812
Reply View the author
brophy
deepin
2015-06-13 03:00
#6
https://bbs.deepin.org/post/30770
你@错了,不是我。。。。。。
http://bbs.deepin.org/post/29812#page%3D ...

不好意思,不过目的已达到。
Reply View the author
136******54
deepin
2015-06-13 03:02
#7
https://bbs.deepin.org/post/30770
不好意思,不过目的已达到。

Reply View the author
Feng Yu
deepin
2015-06-13 03:24
#8
关于读取内核运行信息没那么复杂,内核会把运行中的一些信息写入/proc目录,所以只要读取/proc的一些文件就可以拿到这些信息了
Reply View the author
153******66
deepin
2015-06-13 05:57
#9
本帖最后由 eleveni386 于 2015-6-13 11:14 编辑
https://bbs.deepin.org/post/30770
关于读取内核运行信息没那么复杂,内核会把运行中的一些信息写入/proc目录,所以只要读取/proc的一些文件就 ...

假如你qq 的pid是 12222  你去看你的 /proc/12222/net/udp 里面 remoteip 是不存在的.   不然我早就这么做了.
Reply View the author
linux0208
deepin
2015-07-02 22:19
#10
本帖最后由 linux0208 于 2015-7-2 15:53 编辑

整理了一下思路:
每个进程有若干个连接,其中每个连接有 本地端口,外部端口
而每个报文有 源端口,目标端口

抓获一个报文:
如果本地端口等于源端口,那就是上传,归到本地端口对应进程的上传流量里
如果本地端口等于目标端口,那就是下载,归到本地端口对应进程的下载流量里

这样问题就解决了,没用到外部端口



Reply View the author
botao
deepin
2019-06-03 19:09
#11
https://bbs.deepin.org/user/11116 您好,我们非常诚挚的特别邀请您参加“2019深度软件大赛”,您现在只需要提交相关信息即视为报名成功(报名表在附件中),在报名成功后,您可以继续完善您的作品,后期将作品移植到国产CPU平台,也有机会接触到国产桌面计算机产品。

本次大赛的奖品也非常丰厚,不仅有奖金,还有深度周边大礼包等奖品,我们非常期待您能参加本次大赛,关于大赛的介绍可见【大赛官网】,期待您的回复。请将参赛报名表填完完成后发送至https://bbs.deepin.org/module的邮箱,非常期待您的作品。
Reply View the author
New Thread

Popular Ranking

Change

Popular Events

More
国际排名
WHLUG