fixed discovery
This commit is contained in:
@@ -38,7 +38,7 @@ func Scan(host *types.DiscoveryHost, tcpCB tcpRecvCallback) {
|
||||
|
||||
Send(host, nil)
|
||||
|
||||
time.Sleep(time.Second * 3)
|
||||
time.Sleep(time.Second * 20)
|
||||
|
||||
//communicate.Send(events.NewEvent(events.CENTRAL_EVENT, events.NewPortEndEvent(host.Zone.CidrInt64(), host.Ip, host.Histories, types.TYPE_TCP)))
|
||||
|
||||
|
||||
@@ -5,9 +5,10 @@ import (
|
||||
"git.loafle.net/overflow/overflow_probe/matcher"
|
||||
"git.loafle.net/overflow/overflow_probe/matcher/packet"
|
||||
log "github.com/cihub/seelog"
|
||||
"git.loafle.net/overflow/overflow_probe/model/scaninfo"
|
||||
)
|
||||
|
||||
func processPostPacket(mats []matcher.Matcher, info *types.ServiceScanInfo, m ConnFactory) bool {
|
||||
func processPostPacket(mats []matcher.Matcher, info scaninfo.ServiceScanInfo, m ConnFactory) bool {
|
||||
|
||||
var ser *types.DiscoveryService = nil
|
||||
var curMatcher matcher.Matcher = nil
|
||||
@@ -15,10 +16,11 @@ func processPostPacket(mats []matcher.Matcher, info *types.ServiceScanInfo, m Co
|
||||
|
||||
for i := 0; i < len(mats); i++ {
|
||||
|
||||
info.History = make([]*types.ServiceScanHistory, 0)
|
||||
conn, err := m.createSocket(info.Port.Host.Ip_, info.Port.Port_)
|
||||
//info.History = make([]*types.ServiceScanHistory, 0)
|
||||
//conn, err := m.createSocket(info.Port.Host.Ip_, info.Port.Port_)
|
||||
conn, err := m.createSocket(info.GetIP(), info.GetPort())
|
||||
if err != nil {
|
||||
log.Error(m.Type() + " process postpacket create socket error :" + info.Port.Host.Ip_ + " port: " + info.Port.Port_ + " error: " + err.Error())
|
||||
log.Error(m.Type() + " process postpacket create socket error :" + info.GetIP() + " port: " + info.GetPort() + " error: " + err.Error())
|
||||
break
|
||||
}
|
||||
curMatcher = mats[i]
|
||||
@@ -33,20 +35,26 @@ func processPostPacket(mats []matcher.Matcher, info *types.ServiceScanInfo, m Co
|
||||
if l != p.Len {
|
||||
break
|
||||
}
|
||||
AddServiceScanHistory(
|
||||
&info.History,
|
||||
types.NewServiceScanHistory(info.Port, curMatcher.ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
//AddServiceScanHistory(
|
||||
// &info.History,
|
||||
// types.NewServiceScanHistory(info.Port, curMatcher.ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
|
||||
//AddServiceScanHistory(info, curMatcher.ServiceName(), types.DIRECTION_SEND, p.Buffer)
|
||||
|
||||
info.SetHistory(types.NewServiceScanHistory(info.GetDiscoveryPort(), curMatcher.ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
|
||||
buf := make([]byte, 1024)
|
||||
l, err = conn.Read(buf)
|
||||
|
||||
AddServiceScanHistory(
|
||||
&info.History,
|
||||
types.NewServiceScanHistory(info.Port, curMatcher.ServiceName(), types.DIRECTION_RECV, p.Buffer))
|
||||
//AddServiceScanHistory(
|
||||
// &info.History,
|
||||
// types.NewServiceScanHistory(info.Port, curMatcher.ServiceName(), types.DIRECTION_RECV, p.Buffer))
|
||||
//AddServiceScanHistory(info, curMatcher.ServiceName(), types.DIRECTION_SEND, buf)
|
||||
info.SetHistory(types.NewServiceScanHistory(info.GetDiscoveryPort(), curMatcher.ServiceName(), types.DIRECTION_RECV, buf))
|
||||
|
||||
if err != nil {
|
||||
if curMatcher.IsNoResponse(indexI) == true {
|
||||
ser = types.NewService(m.Type(), curMatcher.ServiceName(), info.Port)
|
||||
ser = types.NewService(m.Type(), curMatcher.ServiceName(), info.GetDiscoveryPort())
|
||||
isFound = true
|
||||
break
|
||||
}
|
||||
@@ -56,7 +64,7 @@ func processPostPacket(mats []matcher.Matcher, info *types.ServiceScanInfo, m Co
|
||||
|
||||
if curMatcher.Match(indexI, packet.NewPacket(buf, l), info) == true {
|
||||
if indexI == (curMatcher.PacketCount() - 1) {
|
||||
ser = types.NewService(m.Type(), curMatcher.ServiceName(), info.Port)
|
||||
ser = types.NewService(m.Type(), curMatcher.ServiceName(), info.GetDiscoveryPort())
|
||||
break
|
||||
}
|
||||
isFound = true
|
||||
|
||||
@@ -5,9 +5,10 @@ import (
|
||||
"git.loafle.net/overflow/overflow_probe/matcher"
|
||||
"git.loafle.net/overflow/overflow_probe/matcher/packet"
|
||||
"net"
|
||||
"git.loafle.net/overflow/overflow_probe/model/scaninfo"
|
||||
)
|
||||
|
||||
func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Matcher, info *types.ServiceScanInfo, m ConnFactory) bool {
|
||||
func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Matcher, info scaninfo.ServiceScanInfo, m ConnFactory) bool {
|
||||
|
||||
defer conn.Close()
|
||||
|
||||
@@ -15,16 +16,18 @@ func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Ma
|
||||
var ser *types.DiscoveryService = nil
|
||||
for i := 0; i < len(mats); i++ {
|
||||
|
||||
info.History = make([]*types.ServiceScanHistory, 0)
|
||||
//info.History = make([]*types.ServiceScanHistory, 0)
|
||||
|
||||
AddServiceScanHistory(
|
||||
&info.History,
|
||||
types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_RECV, prepacket.Buffer))
|
||||
//AddServiceScanHistory(
|
||||
// &info.History,
|
||||
// types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_RECV, prepacket.Buffer))
|
||||
|
||||
info.SetHistory(types.NewServiceScanHistory(info.GetDiscoveryPort(), mats[i].ServiceName(), types.DIRECTION_RECV, prepacket.Buffer))
|
||||
|
||||
if mats[i].Match(0, prepacket, info) == true {
|
||||
packetCount := mats[i].PacketCount()
|
||||
if packetCount == 0 {
|
||||
ser = types.NewService(m.Type(), mats[i].ServiceName(), info.Port)
|
||||
ser = types.NewService(m.Type(), mats[i].ServiceName(), info.GetDiscoveryPort())
|
||||
break
|
||||
}
|
||||
isFound = false
|
||||
@@ -39,9 +42,10 @@ func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Ma
|
||||
if l != p.Len {
|
||||
break
|
||||
}
|
||||
AddServiceScanHistory(
|
||||
&info.History,
|
||||
types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
//AddServiceScanHistory(
|
||||
// &info.History,
|
||||
// types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
info.SetHistory(types.NewServiceScanHistory(info.GetDiscoveryPort(), mats[i].ServiceName(), types.DIRECTION_SEND, p.Buffer))
|
||||
|
||||
buffer := make([]byte, 1024)
|
||||
l, err = conn.Read(buffer)
|
||||
@@ -49,9 +53,10 @@ func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Ma
|
||||
break
|
||||
}
|
||||
|
||||
AddServiceScanHistory(
|
||||
&info.History,
|
||||
types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_RECV, buffer))
|
||||
//AddServiceScanHistory(
|
||||
// &info.History,
|
||||
// types.NewServiceScanHistory(info.Port, mats[i].ServiceName(), types.DIRECTION_RECV, buffer))
|
||||
info.SetHistory(types.NewServiceScanHistory(info.GetDiscoveryPort(), mats[i].ServiceName(), types.DIRECTION_RECV, buffer))
|
||||
|
||||
if mats[i].Match(j+1, packet.NewPacket(buffer, l), info) == true {
|
||||
isFound = true
|
||||
@@ -61,7 +66,7 @@ func processPrePacket(conn net.Conn, prepacket *packet.Packet, mats []matcher.Ma
|
||||
}
|
||||
}
|
||||
if isFound == true {
|
||||
ser = types.NewService(m.Type(), mats[i].ServiceName(), info.Port)
|
||||
ser = types.NewService(m.Type(), mats[i].ServiceName(), info.GetDiscoveryPort())
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import (
|
||||
"net"
|
||||
"strconv"
|
||||
"strings"
|
||||
"git.loafle.net/overflow/overflow_probe/model/scaninfo"
|
||||
)
|
||||
|
||||
func Scan(dp *types.DiscoveryPort) {
|
||||
@@ -24,7 +25,7 @@ func Scan(dp *types.DiscoveryPort) {
|
||||
ConnFactoryNormal{t: types.TYPE_TCP},
|
||||
ConnFactoryTLS{t: types.TYPE_TLS},
|
||||
}
|
||||
info := types.NewServiceScanInfo(dp)
|
||||
info := scaninfo.NewScanInfoImpl(dp)
|
||||
|
||||
for i := 0; i < len(factories); i++ {
|
||||
m := factories[i]
|
||||
@@ -125,7 +126,7 @@ func MatchUDPPacket(zone *types.DiscoveryZone, ipString, portString string, udpL
|
||||
port := types.NewPort(portString, host, types.TYPE_UDP)
|
||||
|
||||
mats := matcher.GetUdpMatchers()
|
||||
info := types.NewServiceScanInfo(port)
|
||||
info := scaninfo.NewScanInfoImpl(port)
|
||||
|
||||
for i := 0; i < len(mats); i++ {
|
||||
matcher := mats[i]
|
||||
@@ -135,18 +136,18 @@ func MatchUDPPacket(zone *types.DiscoveryZone, ipString, portString string, udpL
|
||||
key := portString + ":" + types.TYPE_UDP
|
||||
host.SetPort(key, port)
|
||||
|
||||
ser := types.NewService(types.TYPE_UDP, matcher.ServiceName(), info.Port)
|
||||
ser := types.NewService(types.TYPE_UDP, matcher.ServiceName(), info.GetDiscoveryPort())
|
||||
AddService(ser, info)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func AddService(ds *types.DiscoveryService, info *types.ServiceScanInfo) {
|
||||
port := info.Port
|
||||
func AddService(ds *types.DiscoveryService, info scaninfo.ServiceScanInfo) {
|
||||
port := info.GetDiscoveryPort()
|
||||
var serviceName string
|
||||
if ds != nil {
|
||||
port.Services = append(port.Services, ds)
|
||||
port.SetHistory(info.History)
|
||||
port.SetHistory(info.GetHistories())
|
||||
serviceName = ds.ServiceName
|
||||
log.Debugf("%s, %s:%s, Service was found : %s ", ds.PortType, port.Host.Ip_, port.Port_, ds.ServiceName)
|
||||
} else {
|
||||
@@ -160,11 +161,18 @@ func AddService(ds *types.DiscoveryService, info *types.ServiceScanInfo) {
|
||||
sendEvent(info, serviceName)
|
||||
}
|
||||
|
||||
func AddServiceScanHistory(histories *[]*types.ServiceScanHistory, h *types.ServiceScanHistory) {
|
||||
*histories = append(*histories, h)
|
||||
}
|
||||
//func AddServiceScanHistory(histories *[]*types.ServiceScanHistory, h *types.ServiceScanHistory) {
|
||||
// *histories = append(*histories, h)
|
||||
//}
|
||||
|
||||
func sendEvent(info *types.ServiceScanInfo, serviceName string) {
|
||||
//func AddServiceScanHistory(info scaninfo.ServiceScanInfo, serviceName string, direction string, packet []byte) {
|
||||
// //*histories = append(*histories, h)
|
||||
// history := info.GetIP() + ":" +info.GetPort()+ "-" + serviceName + "[" + direction + "]" + "[" + "Packet" + "]"
|
||||
//
|
||||
// //info.SetHistory(history)
|
||||
//}
|
||||
|
||||
func sendEvent( info scaninfo.ServiceScanInfo, serviceName string) {
|
||||
|
||||
//communicate.Send(
|
||||
// events.NewEvent(
|
||||
|
||||
Reference in New Issue
Block a user