无法使用通过python建立的tcp套接字上的原始数据包处理mysql登录?可能是因为盐?
我试图通过python程序模拟mysql连接过程。 在python脚本中,我打开一个到mysql服务器的tcp套接字,并在套接字上编写预捕获。 在登录数据包上,我收到一个错误“#28000用户'root'@'10.x.x.xxx'的访问被拒绝”(使用密码:是)” 上面使用的“req_r1”和“req_r2”文件包含原始数据包(mysql协议原始数据包,而不是整个帧/tcp层)无法使用通过python建立的tcp套接字上的原始数据包处理mysql登录?可能是因为盐?,python,mysql,sockets,mysql-python,packet-capture,Python,Mysql,Sockets,Mysql Python,Packet Capture,我试图通过python程序模拟mysql连接过程。 在python脚本中,我打开一个到mysql服务器的tcp套接字,并在套接字上编写预捕获。 在登录数据包上,我收到一个错误“#28000用户'root'@'10.x.x.xxx'的访问被拒绝”(使用密码:是)” 上面使用的“req_r1”和“req_r2”文件包含原始数据包(mysql协议原始数据包,而不是整个帧/tcp层) 我正在通过套接字重放捕获 我跳过了TCP连接数据包(因为我正在通过python建立套接字连接) 我试图在套接字上编写原始
如果有人知道我是否在正确的轨道上,以及我如何提取/重用它,那将是非常有帮助的。您不能通过重播上一个会话来登录。正如评论中指出的那样,这将是非常不安全的。这是一种挑战/响应机制,您的响应因收到的挑战而异
有关协议的详细信息,请参阅。您无法通过重播上一个会话登录。正如评论中指出的那样,这将是非常不安全的。这是一种挑战/响应机制,您的响应因收到的挑战而异
有关协议的详细信息,请参阅。如果您可以通过重播以前的会话来重新创建会话,那将非常糟糕。我不知道mysql使用什么协议,但它会有某种质询/响应机制来确保它不能工作。您应该能够深入研究mysql文档,并了解它们的身份验证方案。感谢@tdelaney提供快速指导。我希望mysql不会太不安全,这样您就可以拦截tcp连接,从而模仿客户端的操作。出于合理的好奇心,我认为您应该深入研究
mysql客户端
code。它是用c
编写的,可以安静地阅读,以便理解实际的身份验证协议,然后您可以尝试模拟它。如果您可以通过重播以前的会话来重新创建会话,那将非常糟糕。我不知道mysql使用什么协议,但它会有某种质询/响应机制来确保它不能工作。您应该能够深入研究mysql文档,并了解它们的身份验证方案。感谢@tdelaney提供快速指导。我希望mysql不会太不安全,这样您就可以拦截tcp连接,从而模仿客户端的操作。出于合理的好奇心,我认为您应该深入研究mysql客户端
code。它是用c
编写的,可以安静地阅读,以便理解实际的身份验证协议,然后您可以尝试模拟它。
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()