从网卡中截获sql server的sql语句

本文介绍了如何通过Wireshark工具和pcap4j库,结合TDS协议,从网卡数据包中捕获并解析SQL Server的SQL语句,包括插入和选择操作。核心代码展示了RPC数据解析过程,捕获的数据通过Kafka进行推送。
摘要由CSDN通过智能技术生成

@[TOC]从网卡中截获sql server的sql语句

从网卡中截获sql server的sql语句

   前两年写过一个从网卡上直接截获sql server的插入和查询语句的小东西,今天想起来,放着也没用,不如贴出来,大家讨论共同进步!

设计思路

1.借助wireshark工具拆解网卡数据包,了解包结构;
网卡上的数据包存在拆包和合包的问题,即一个数据包可能含有多个完整的请求数据,也可能一个完整的请求数据被拆成了多个数据包,这里可以根据数据包的开始结束标志位和数据包标识位来完成拆包合包动作。
2. 了解sql server的TDS协议,并拆解TDS协议包,此处由于TDS协议并未完全开放,参照了github上某位大神的tds协议说明,最终捕获了insert和select语句;
3. 代码级数据包捕获是利用pcap4j来实现的;
4. 通过kafka推送捕获的键值。

设计实现

此处放上最核心的代码即RPC协议解析部分,其它就不赘述了,看的懂得,有兴趣的可以共同讨论。
/**
* RPC数据解析
* @throws UnsupportedEncodingException
*/
public List parseRpc(byte[] tds){

	// tds包全长
	// int size = tds[3]& 0xFF |(tds[2]& 0xFF)<<8;;
	new Utiles().parseTdsHead(tdsHeader,td
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值