修复 client端抓包,client的 IP显示不准确的 bug

This commit is contained in:
xiaobiao 2022-04-06 12:21:11 +08:00
parent bfe9782583
commit b74b4fed20
1 changed files with 7 additions and 3 deletions

View File

@ -158,10 +158,14 @@ func (nc *networkCard) parseTCPPackage(packet gopacket.Packet, authHeader *pp.He
clientIPContent := authHeader.SourceAddress.String()
clientIP = &clientIPContent
clientPort = int(authHeader.SourcePort)
} else {
clientIP = &srcIP
clientPort = srcPort
}
// deal mysql server response
err = readToServerPackage(clientIP, clientPort, &srcIP, srcPort, tcpPkt, nc.receiver)
err = readToServerPackage(clientIP, clientPort, &srcIP, srcPort, &dstIP, tcpPkt, nc.receiver)
if err != nil {
return
}
@ -211,7 +215,7 @@ func readFromServerPackage(
}
func readToServerPackage(
clientIP *string, clientPort int, srcIP *string, srcPort int, tcpPkt *layers.TCP,
clientIP *string, clientPort int, srcIP *string, srcPort int, destIP *string, tcpPkt *layers.TCP,
receiver chan model.QueryPiece) (err error) {
defer func() {
if err != nil {
@ -239,7 +243,7 @@ func readToServerPackage(
sessionKey := spliceSessionKey(srcIP, srcPort)
session := sessionPool[*sessionKey]
if session == nil {
session = sd.NewSession(sessionKey, clientIP, clientPort, srcIP, srcPort, localIPAddr, snifferPort, receiver)
session = sd.NewSession(sessionKey, clientIP, clientPort, srcIP, srcPort, destIP, snifferPort, receiver)
sessionPool[*sessionKey] = session
}