文章目录

  • qq号拦截
  • 功能简介
  • QQ交互报文分析
  • 代码实现
  • 作者简介
  • 源码和文档

qq号拦截

功能简介

在前面的章节中,我们学习了netfilter过滤的基本流程,可以实现报文最基本的分析和过滤,这一节我来教你如何获取局域网内用户的qq号。原理很简单,抓包分析qq报文的交互特征,找到qq号所在位置,然后在netfilter钩子点中解析出qq好即可。

QQ交互报文分析

这里分析的是pc qq客户端,手机端的协议有所区别,可以自行分析。
qq在登陆时采用oicq协议,腾讯内部自定义的协议,wireshark已经支持oicq协议的解析,可以通过wireshark直接抓包看到qq号。

oicq协议的基本特征为开头第1个字节为0x02,最后一个字节为0x03,端口号一般为udp 8000端口(如果8000端口不通,也可能切换为其他端口)
如下图所示,通过wireshark可以看出qq号,qq号的位置是固定的。

代码实现

#include <linux/init.h>
#include <linux/module.h>
#include <linux/version.h>
#include <linux/netfilter.h>
#include <net/netfilter/nf_conntrack.h>
#include <linux/skbuff.h>
#include <net/ip.h>
#include <linux/types.h>MODULE_LICENSE("GPL");
MODULE_AUTHOR("openwrt");
MODULE_DESCRIPTION("qq");static u_int32_t qq_hook(void *priv, struct sk_buff *skb, const struct nf_hook_state *state) {struct nf_conn *ct = (struct nf_conn *)skb->_nfct;struct udphdr * udph = NULL;struct iphdr *iph = NULL;if(ct == NULL || !nf_ct_is_confirmed(ct)) {return NF_ACCEPT;}iph = ip_hdr(skb);if (!iph) return NF_ACCEPT;if (IPPROTO_UDP != iph->protocol)return NF_ACCEPT;unsigned char *data = skb->data + iph->ihl * 4 + 8;udph = (struct udphdr *)(iph + 1);int payload_len = ntohs(udph->len) - 8;u_int16_t dport = htons(udph->dest);if (8000 == dport && payload_len > 0 && data[0] == 0x02){u_int32_t qq = *((u_int32_t *)(data + 7));static int color = 0;color++;printk("-----路由器检测到QQ号: \e[1;3%dm %-12u\e[0m-------\n\n", color % 2 == 0 ? 1 : 2, htonl(qq));}return NF_ACCEPT;
}static struct nf_hook_ops qq_ops[] __read_mostly = {{.hook        = qq_hook,.pf          = PF_INET,.hooknum = NF_INET_FORWARD,.priority    = NF_IP_PRI_MANGLE + 1,},
};static int __init qq_init(void)
{nf_register_net_hooks(&init_net, qq_ops, ARRAY_SIZE(qq_ops));return 0;
}static void qq_exit(void)
{nf_unregister_net_hooks(&init_net, qq_ops, ARRAY_SIZE(qq_ops));return ;
}module_init(qq_init);
module_exit(qq_exit);

作者简介

OpenWrt应用过滤插件作者(应用过滤用于控制app联网,可以过滤游戏、视频、聊天等几百款app)
从事嵌入式Linux开发近10年,主要负责路由器网通产品研发,精通OpenWrt系统,包括luci、消息机制、内核模块等。擅长模块:路由器上网行为管理、智能流控、上网认证、防火墙、虚拟服务器、多wan负载均衡等

开源作品地址:
https://github.com/destan19/OpenAppFilter

源码和文档

关注微信公众号可以获取更多技术文档、固件、源码等
微信扫码关注:

OpenWrt内核模块开发(八)-通过linux netfilter框架实现局域网QQ号监控相关推荐

  1. OpenWrt内核模块开发(六)-通过linux netfilter框架实现mac地址过滤

    文章目录 mac_filter 功能简介 网络接口层(MAC) netfilter注册钩子函数 mac过滤钩子函数分析 编译运行 测试结果 作者简介 源码和文档 mac_filter 功能简介 通过内 ...

  2. Python网络爬虫数据采集实战(八):Scrapy框架爬取QQ音乐存入MongoDB

    通过前七章的学习,相信大家对整个爬虫有了一个比较全貌的了解 ,其中分别涉及四个案例:静态网页爬取.动态Ajax网页爬取.Selenium浏览器模拟爬取和Fillder今日头条app爬取,基本涵盖了爬虫 ...

  3. Linux下使用Netfilter框架编写内核模块(统计协议层ping特定地址丢包数)

    一.linux内核中neitfilter的处理过程 1.5个HOOK点的执行点说明: 数据包从进入系统,进行IP校验以后,首先经过第一个HOOK函数NF_IP_PRE_ROUTING进行处理: 然后就 ...

  4. Linux 网络层收发包流程及 Netfilter 框架浅析

    本文作者:sivenzhang,腾讯 IEG 测试开发工程师 1. 前言 本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过 ...

  5. Linux网络层收发包流程及Netfilter框架浅析

    1. 前言 本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述. 内容如有理解错误而 ...

  6. 走进Linux内核之Netfilter框架

    走进Linux内核之Netfilter框架 - 掘金笔者此前对Linux内核相关模块稍有研究,实现内核级通信加密.视频流加密等.话不多说直接上才艺,现在带你走进Linux内核之Netfilter框架. ...

  7. Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架

    目录 文章目录 目录 netfilter 框架 netfilter 的组成模块 netfilter 的 Hook 机制实现 netfilter 的工作原理 规则(Rules) 链(Chains) 表( ...

  8. Linux Kernel TCP/IP Stack — L3 Layer — netfilter 框架 — conntrack(CT,连接跟踪)

    目录 文章目录 目录 CT CT CT(conntrack,connection tracking,连接跟踪),顾名思义,就是跟踪(并记录)连接的状态,是许多网络应用的基础.例如:iptables.L ...

  9. Linux内核模块开发 Slab高速缓存接口与用例

    在内核模块开发或者驱动开发中经常会使用到内存分配,常见的方式是调用 kmalloc 接口分配内存. static __always_inline void *kmalloc(size_t size, ...

最新文章

  1. Linux中环境变量文件profile、bashrc、bash_profile之间的区别和联系
  2. vins中imu融合_双目版 VINS 项目发布,小觅双目摄像头作为双目惯导相机被推荐...
  3. Spark RDD的缓存
  4. 免费!200块全志XR806开源鸿蒙开发板试用
  5. Vue3中的父子、子父组件通信
  6. Spring、SpringMVC、SpringBoot、SpringCloud的联系与区别(看了多篇后的自我总结)
  7. windows安装和配置阿帕奇+PHP服务器
  8. WSO2学习笔记(一)
  9. 留学Essay写作应当注意哪些问题?
  10. hash碰撞解决方法
  11. 深入理解LayoutInflater.inflate()
  12. android 平板刷机,小白必看,安卓平板电脑刷机教程之一键刷机
  13. date_sub函数用法-----随笔记
  14. 为海思u-boot快速生成reg_info.bin文件
  15. 【统计年鉴下载】夏泽网
  16. android 首页里布局,android复杂首页布局
  17. python爬虫数据分析毕业论文_Python 爬虫实操,顺便做了个数据分析
  18. Android 操作系统的进程回收机制
  19. 云计算三种服务模式之IasS介绍
  20. KaTeX 数学符号列表

热门文章

  1. 赛门铁克SEP架构部署的常见问题解答
  2. oracle+xquery函数,oracle_xquery介绍.doc
  3. 如何向icloud上传文件_怎么把文件上传到icloud
  4. Servlet 深度了解 JSPJava编程
  5. 记一次nginx不能在浏览器访问默认目录/usr/share/nginx/html下面目录的问题
  6. flowplayer(html5和flash)播放器
  7. 完整获取图片根据图片链接地址
  8. 将java类转换成jsp的例子_使用 动作可以在JSP页面中得到Bean实例的属性值,并将其转换为()_学小易找答案...
  9. oracle 数据库割接,oracle的一次数据割接(1)
  10. 最新宝塔如何禁止某个ip访问封锁ip(ip段)教程