我正在尝试通过python程序模拟mysql连接过程。
在python脚本中,我打开一个到mysql服务器的tcp套接字,并在socket上编写预捕获。
登录数据包时,我收到一个错误“Š28000拒绝用户'root'@'10.x.x.xxx'(使用密码:YES)”import socket
import sys
import time
Host = '10.x.x.xxx'
Port = '3306'
t_con = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clust_vip = (Host, int(Port))
try:
t_con.connect(clust_vip)
print ('Socket connection established')
print "TCP connection established:", t_con.recv(4096)
byte1 = open("req_r1").read()
t_con.send(byte1)
print "Response for packet1:", t_con.recv(4096)
bytes2 = open("req_r2").read()
t_con.send(byte2)
print "Response for packet2:", t_con.recv(4096)
finally:
t_con.close()
上面使用的“req_r1”和“req_r2”文件包含原始数据包(mysql协议原始数据包,而不是整个帧/tcp层)我正在通过socket回放捕获过程
我跳过了TCP连接包(因为我正在通过python建立套接字连接)
我试着写原始数据包(mysql协议包),而不是在套接字上写整个帧。在
有谁能指导我如何克服这个问题吗。我认为错误是由于salt用于建立mysql连接。在
更新:我了解的是在建立tcp套接字连接时,db server用salt回复,我需要重用这个salt生成加密密码,并在下一个连接包中使用。
如果有人知道我是否在正确的轨道上,以及如何提取/重用它,这将是一个很大的帮助。在