要捕获通过以太网传输的SQL语句,可以使用网络抓包工具来进行捕获和分析。下面是一个使用Python编写的示例代码,使用Scapy库来捕获以太网数据包并提取其中的SQL语句。
from scapy.all import *
def process_packet(packet):
if packet.haslayer(TCP):
raw_data = packet.getlayer(Raw).load.decode('utf-8', errors='ignore')
if 'SQL' in raw_data:
print(f'SQL query: {raw_data}')
def capture_packets(interface):
sniff(iface=interface, prn=process_packet, filter="tcp port 3306")
if __name__ == '__main__':
interface = 'eth0' # 替换为你的网络接口名
capture_packets(interface)
这段代码使用了Scapy库来捕获网络数据包,并通过过滤器指定只捕获TCP端口为3306(MySQL默认端口)的数据包。在捕获的数据包中,如果发现有包含"SQL"关键字的原始数据载荷,就将其打印出来。
你需要将interface
变量替换为你的网络接口名,可以通过运行ifconfig
命令(Linux/Mac)或ipconfig
命令(Windows)来查看可用的接口名。
请注意,这段代码仅捕获以太网上的数据包,而不考虑加密的情况。如果目标网络上使用了加密通信(如HTTPS),你可能需要其他的技术来解密和提取SQL语句。