mirror of
https://github.com/zr-hebo/sniffer-agent.git
synced 2025-09-20 02:33:28 +08:00
deal all auth packet
This commit is contained in:
@@ -134,10 +134,9 @@ func (nc *networkCard) listenNormal() {
|
|||||||
|
|
||||||
// send FIN tcp packet to avoid not complete session cannot be released
|
// send FIN tcp packet to avoid not complete session cannot be released
|
||||||
tcpPkt := packet.TransportLayer().(*layers.TCP)
|
tcpPkt := packet.TransportLayer().(*layers.TCP)
|
||||||
payLoad := tcpPkt.Payload
|
|
||||||
// deal FIN packet
|
// deal FIN packet
|
||||||
// deal auth packet
|
// deal auth packet
|
||||||
if tcpPkt.FIN || (len(payLoad) >= 5 && sd.IsAuthPacket(payLoad[4])) {
|
if tcpPkt.FIN || sd.IsAuthPacket(tcpPkt.Payload) {
|
||||||
nc.parseTCPPackage(packet)
|
nc.parseTCPPackage(packet)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
@@ -25,11 +25,12 @@ func CheckParams() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsAuthPacket(val byte) bool {
|
func IsAuthPacket(payload []byte) bool {
|
||||||
switch serviceType {
|
switch serviceType {
|
||||||
case ServiceTypeMysql:
|
case ServiceTypeMysql:
|
||||||
return mysql.IsAuthPacket(val)
|
return len(payload) >= 5 && mysql.IsAuth(payload[4])
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return mysql.IsAuthPacket(val)
|
return false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -208,7 +208,7 @@ func (ms *MysqlSession) readFromClient(seqID int64, bytes []byte) {
|
|||||||
// ms.expectReceiveSize = ms.expectReceiveSize - int(contentSize)
|
// ms.expectReceiveSize = ms.expectReceiveSize - int(contentSize)
|
||||||
}
|
}
|
||||||
|
|
||||||
func IsAuthPacket(val byte) bool {
|
func IsAuth(val byte) bool {
|
||||||
return val > 32
|
return val > 32
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,7 +231,7 @@ func (ms *MysqlSession) GenerateQueryPiece() (qp model.QueryPiece) {
|
|||||||
|
|
||||||
var mqp *model.PooledMysqlQueryPiece
|
var mqp *model.PooledMysqlQueryPiece
|
||||||
var querySQLInBytes []byte
|
var querySQLInBytes []byte
|
||||||
if IsAuthPacket(ms.cachedStmtBytes[0]) {
|
if IsAuth(ms.cachedStmtBytes[0]) {
|
||||||
userName, dbName, err := parseAuthInfo(ms.cachedStmtBytes)
|
userName, dbName, err := parseAuthInfo(ms.cachedStmtBytes)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Errorf("parse auth info failed <-- %s", err.Error())
|
log.Errorf("parse auth info failed <-- %s", err.Error())
|
||||||
|
Reference in New Issue
Block a user