gpt4 book ai didi

python - 无法在通过python建立的tcp套接字上使用原始数据包处理mysql登录?可能是因为盐的原因?

转载 作者:行者123 更新时间:2023-11-29 21:49:59 26 4
gpt4 key购买 nike

我正在尝试通过python程序模拟mysql连接过程。在python脚本中,我打开一个到mysql服务器的tcp套接字并在套接字上写入预先捕获的内容。在登录数据包上,我收到错误“#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协议(protocol)原始数据包而不是整个帧/tcp层)

  1. 我正在通过套接字重放捕获
  2. 我跳过了 TCP 连接数据包(因为我正在通过 python 建立套接字连接)
  3. 我正在尝试在套接字上写入原始数据包(mysql 协议(protocol)数据包)而不是整个帧。

谁能指导我如何克服这个问题。我认为错误是由于建立 mysql 连接时使用了 salt 造成的。

我已经尝试过Passwordless connection但它并没有起作用。

更新:我的理解是建立 TCP 套接字连接,数据库服务器用盐回复,我需要重用此盐来生成加密密码并在下一个连接数据包中使用它。如果有人知道我是否走在正确的轨道上以及如何提取/重用它,那将会有很大的帮助。

最佳答案

您无法通过重播之前的 session 来登录。正如评论中指出的那样,这将是非常不安全的。这是一种挑战/响应机制,您的响应会根据收到的挑战而变化。

参见https://dev.mysql.com/doc/internals/en/client-server-protocol.html协议(protocol)的详细说明。

关于python - 无法在通过python建立的tcp套接字上使用原始数据包处理mysql登录?可能是因为盐的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33744782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com