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

事情的起因

在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进行统计和条件判断,如果超过阀值,调用提示部分
提示部分(定时器,):
界面部分(人机交互):启动,停止 抓包部分 工作,并把启动时的配置更新到数据库中。
配置部分(配置读取,保存):

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Brickie-liu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值