您的位置:首页 > 其它

关于bupt校内上网流量监听小工具笔记

2017-04-02 14:05 267 查看

事情的起因

在bupt每个月有20G免费流量,这个流量是上下行的总和,就是说你上传东西的流量也是计算在内的。超过20G的话就需要够买,1块钱1G。

刚开始并不知道上数据行也要计算流量,每个月总是前几天就把20G用光了。就想着有这么一个软件,可以监听下流量,找了半天没有找到太好用的,主要是没有说一个可以断网的功能。因为我并不需要去分析这些数据,只要能有一个用多少时间,或是用够多少流量之后,有一个提示和自动断掉外网的功能就行。

做这个小工具是用QT做的。想起来做点想起来做点,差不多花了一个学期。之后也并没有用上,主要是实验室有网。平时在宿舍也够用了。

所有代码,文档,工具,下载地址 http://download.csdn.net/detail/liuzhuchen/9802083

最后的程序**工程目录**snifferFrom

第一个问题,把数据抓上来

工程目录 snifferWinpcap

总要有一个把数据抓下来才能统计流量,没有太多犹豫,直接使用winpcap库。虽然听说windows在流量统计这方面有一个使用更方便的接口。但是可能因为以前一直做linux的关系,十分不喜欢使用windows开发。

当然我们只需要库就可以了。

WpdPack库 下载地址 http://download.csdn.net/detail/liuzhuchen/9802056

winpcap 中文技术文档 下载地址 http://download.csdn.net/detail/liuzhuchen/9802055

看着文档的示例,写了一个能抓包snifferWinpcap的小测试,因为抓包时并不需要界面就没写。主要是把库添加到工程中就可以。

不用把这个库添加到全局配置中。直接添加到当前项目工程中就可以。

两种方法:

一、在pro文件中直接写

LIBS += -L$$PWD/../WpdPack/Lib/ -lwpcap
LIBS += -L$$PWD/../WpdPack/Lib/ -lPacket
INCLUDEPATH += $$PWD/../WpdPack/Include
DEPENDPATH += $$PWD/../WpdPack/Lib


二、如下图在项目上右击选择添加库



第二个问题,写个简单的界面

工程目录 snifferFrom

效果可以看 snifferFrom ,这个也是最后的工程代码

1、可选网卡

2、可以过滤IP

3、有几个可选提示或是断网条件

4、可以开机启动,(这个可以用windows自带的,没怎么弄)

5、因为学校断网就是一个http get请求。有一个自定义的网址



第三个问题,区别上下行流量

获取本地信息工程目录 snifferTest\snifferLocalInfo

这个原来想的比较复杂。最后想想,校园网内IPv6不会花流量。只要知道当前选择的网卡IP或是MAC地址就可以了。

第四个问题,配置问题

conf**工程目录** conf

sqlite**工程目录** snifferTest\sqlittest2

有两个选择,一个使用文件,二个使用数据库

conf 是原来想着是使用key:value的配置文件,使用C写的,想着修改比较麻烦。就使用数据库了,非常经典的sqllite ,也是QT默认直接支持的。

目标是在程序重新启动之后不用重新配置。

第五个问题,程序最小化到托盘,像QQ最小化一样

工程目录 snifferTest\tuopanTest

第六个问题,程序主动弹出提示框

工程目录 snifferTest\hintTest

在程序最小化时,主动弹出提示框,计时时间到后主动关闭。

还有一个就是在弹出时,是不可以使用小工具的主窗体。只能看这提示,要么手动关了,要么等待自己关闭。

第七个问题,定时器



工程目录 snifferTest\timerTest

定时器,大概有三四种使用方式。

在这个小工具中有两个主要的工作,

一、在第六问题中使用,计时时间到后主动关闭

二、在统计流量时使用

第八个问题,日志问题

工程目录 snifferTest\snifferLog

QT自带的日志挺好用的,就是不能多线程。反正也没多大的东西,一个就一个吧。

第九个问题,断网请求(HTTP)

工程目录 snifferTest\snifferHTTPrequest

第十个问题,线程使用

工程目录 snifferTest\snifferThreadTest

主要是在有界面的程序中,主界面就是一个线程,其他程序都是通过主程序来启动的,现在问题是,只要开始抓包之后,就有两个一起跑的线程了。所以需要给抓包开一个线程。

第十一个问题,程序生成依赖关系

windeployqt 程序名

把所有有关的库和文件复制到当前目录下,步骤:

1、从开始菜单打开 《Qt 命令行》,

2、进入到要生成依赖的目录下,输入命令 :cd /d D:\hellomw

3、然后使用 windeployqt 工具命令: windeployqt hellomw.exe

第十二个问题,生成exe安装文件

我使用的是SmartInstallMaker,十分简单,

小工具程序思路

数据类FlowCont

抓包部分(线程) :抓到数据把大小写入FlowCont

统计部分(定时器):每秒对FlowCont进行统计和条件判断,如果超过阀值,调用提示部分

提示部分(定时器,):

界面部分(人机交互):启动,停止 抓包部分 工作,并把启动时的配置更新到数据库中。

配置部分(配置读取,保存):
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  bupt-流量统计