ing
This commit is contained in:
parent
4ae2561045
commit
6ce87348ba
15
Gopkg.lock
generated
15
Gopkg.lock
generated
|
@ -1,20 +1,11 @@
|
|||
# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
|
||||
|
||||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "git.loafle.net/overflow/service_matcher-go"
|
||||
packages = [
|
||||
".",
|
||||
"snmp"
|
||||
]
|
||||
revision = "a804b4824f2e65ab70a706ae62aa452b6f4fb9b6"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/davecgh/go-spew"
|
||||
packages = ["spew"]
|
||||
revision = "346938d642f2ec3594ed81d874461961cd0faa76"
|
||||
version = "v1.1.0"
|
||||
revision = "8991bc29aa16c548c550c7ff78260e27b9ab7c73"
|
||||
version = "v1.1.1"
|
||||
|
||||
[[projects]]
|
||||
name = "github.com/pmezard/go-difflib"
|
||||
|
@ -37,6 +28,6 @@
|
|||
[solve-meta]
|
||||
analyzer-name = "dep"
|
||||
analyzer-version = 1
|
||||
inputs-digest = "e411f01b744d615451da86fca1cda7559ac20eb10b59f76fe97f185639b1a788"
|
||||
inputs-digest = "ec738887f78fd05112bc2a2f3b8a899e39749ad1dd11668f687f3ccebe1f3cf6"
|
||||
solver-name = "gps-cdcl"
|
||||
solver-version = 1
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Gopkg.toml example
|
||||
#
|
||||
# Refer to https://golang.github.io/dep/docs/Gopkg.toml.html
|
||||
# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
|
||||
# for detailed Gopkg.toml documentation.
|
||||
#
|
||||
# required = ["github.com/user/thing/cmd/thing"]
|
||||
|
@ -25,10 +25,6 @@
|
|||
# unused-packages = true
|
||||
|
||||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "git.loafle.net/overflow/service_matcher-go"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/stretchr/testify"
|
||||
version = "1.2.2"
|
||||
|
|
|
@ -195,12 +195,12 @@ func (m *ActiveDirectoryMatcher) IsError(info osm.MatchInfo, index int, packet *
|
|||
|
||||
func (m *ActiveDirectoryMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
buf.Write(packet.Buffer)
|
||||
buf.Write(packet.Bytes())
|
||||
|
||||
adRecv := AD_RECV{}
|
||||
|
||||
|
|
|
@ -45,12 +45,12 @@ func (m *CassandraMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Pa
|
|||
|
||||
func (m *CassandraMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
c := cassandra{}
|
||||
if err := binary.Read(reader, binary.BigEndian, &c); err != nil {
|
||||
|
|
|
@ -45,7 +45,7 @@ func (t *DNSMatcher) Key() string {
|
|||
return "DNS"
|
||||
}
|
||||
|
||||
func (t *DNSMatcher) String() string {
|
||||
func (t *DNSMatcher) Name() string {
|
||||
return "DNS"
|
||||
}
|
||||
|
||||
|
@ -66,12 +66,12 @@ func (t *DNSMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
}
|
||||
|
||||
func (t *DNSMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
h := Dns_frame_header{}
|
||||
if err := binary.Read(reader, binary.BigEndian, &h); err != nil {
|
||||
|
|
|
@ -44,11 +44,11 @@ func (es *ElasticSearchMatcher) IsError(info osm.MatchInfo, index int, packet *o
|
|||
|
||||
func (es *ElasticSearchMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := string(packet.Buffer)
|
||||
str := string(packet.Bytes())
|
||||
hnb := strings.Split(str, "\r\n\r\n")
|
||||
header := hnb[0]
|
||||
body := hnb[1]
|
||||
|
|
|
@ -56,11 +56,11 @@ func (ftp *FTPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet
|
|||
|
||||
func (ftp *FTPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := strings.Split(string(packet.Buffer), "\r\n")[0]
|
||||
str := strings.Split(string(packet.Bytes()), "\r\n")[0]
|
||||
if len(str) < 4 {
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
|
|
@ -41,11 +41,11 @@ func (h *HTTPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (h *HTTPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := string(packet.Buffer)
|
||||
str := string(packet.Bytes())
|
||||
elems := strings.Split(str, "\r\n")
|
||||
|
||||
if len(elems) <= 0 || 9 > len(elems[0]) {
|
||||
|
|
22
imap/imap.go
22
imap/imap.go
|
@ -17,10 +17,14 @@ func (i *IMAPMatcher) Key() string {
|
|||
return "IMAP"
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) String() string {
|
||||
func (i *IMAPMatcher) Name() string {
|
||||
return "IMAP"
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) IsPrePacket() bool {
|
||||
return true
|
||||
}
|
||||
|
@ -33,40 +37,40 @@ func (i *IMAPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
return false
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (i *IMAPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
switch index {
|
||||
case 0:
|
||||
|
||||
recvStr := string(packet.Buffer)
|
||||
recvStr := string(packet.Bytes())
|
||||
|
||||
if len(recvStr) < 3 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
compareStr := recvStr[0:4]
|
||||
|
||||
if compareStr == PRE_COMPARE_STR {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
case 1:
|
||||
|
||||
recvStr := string(packet.Buffer)
|
||||
recvStr := string(packet.Bytes())
|
||||
|
||||
if len(recvStr) < 5 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
compareStr := recvStr[0:5]
|
||||
|
||||
if compareStr == SEND_COMPARE_STR {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
|
|
@ -40,10 +40,10 @@ func (l *LDAPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (l *LDAPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
p := ber.DecodePacket(packet.Buffer)
|
||||
p := ber.DecodePacket(packet.Bytes())
|
||||
|
||||
if len(p.Children) <= 1 {
|
||||
return osm.NotMatchedError()
|
||||
|
|
|
@ -35,7 +35,7 @@ func (l *LPDMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (l *LPDMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
|
|
|
@ -77,12 +77,12 @@ func (m *MongoDBMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Pack
|
|||
|
||||
func (m *MongoDBMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
reply := OP_reply{}
|
||||
if err := binary.Read(reader, binary.LittleEndian, &reply); err != nil {
|
||||
|
|
|
@ -56,7 +56,7 @@ type serverSettings struct {
|
|||
}
|
||||
|
||||
func (m *MySqlMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
|
|
|
@ -55,12 +55,12 @@ func (t *NBSSMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (t *NBSSMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
n := NBSS{}
|
||||
if err := binary.Read(reader, binary.LittleEndian, &n); err != nil {
|
||||
|
@ -72,7 +72,6 @@ func (t *NBSSMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) e
|
|||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
|
|
@ -14,10 +14,14 @@ type OracleMatcher struct {
|
|||
func (o *OracleMatcher) Key() string {
|
||||
return "ORACLE"
|
||||
}
|
||||
func (o *OracleMatcher) String() string {
|
||||
func (o *OracleMatcher) Name() string {
|
||||
return "Oracle"
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) IsPrePacket() bool {
|
||||
return false
|
||||
}
|
||||
|
@ -30,17 +34,17 @@ func (o *OracleMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packe
|
|||
return false
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (o *OracleMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
header := header_packet{}
|
||||
refuse := body_refuse{}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
buf.Write(packet.Buffer)
|
||||
buf.Write(packet.Bytes())
|
||||
|
||||
binary.Read(buf, binary.BigEndian, &header)
|
||||
binary.Read(buf, binary.BigEndian, &refuse)
|
||||
|
@ -49,32 +53,32 @@ func (o *OracleMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
//fmt.Println(refuse)
|
||||
|
||||
if header.Check_sum != 0 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if header.Types != 4 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if header.Reserved_byte != 0 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if header.Header_sum != 0 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if refuse.Reason_user != 34 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if refuse.Reason_system != 0 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
var dataLen int = int(refuse.Data_len)
|
||||
if dataLen != packet.Len-12 { //
|
||||
if dataLen != packet.Len-22 { // morformed packet error not user not service
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
}
|
||||
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
|
14
packet.go
14
packet.go
|
@ -5,6 +5,20 @@ type Packet struct {
|
|||
Len int
|
||||
}
|
||||
|
||||
func (p *Packet) Valid() bool {
|
||||
if nil == p.Buffer || 0 == p.Len {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (p *Packet) Bytes() []byte {
|
||||
if p.Valid() {
|
||||
return p.Buffer[:p.Len]
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewPacket(buf []byte, len int) *Packet {
|
||||
return &Packet{
|
||||
Buffer: buf,
|
||||
|
|
16
pop/pop.go
16
pop/pop.go
|
@ -16,10 +16,14 @@ func (p *POPMatcher) Key() string {
|
|||
return "POP3"
|
||||
}
|
||||
|
||||
func (p *POPMatcher) String() string {
|
||||
func (p *POPMatcher) Name() string {
|
||||
return "POP3"
|
||||
}
|
||||
|
||||
func (p *POPMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *POPMatcher) IsPrePacket() bool {
|
||||
return true
|
||||
}
|
||||
|
@ -32,27 +36,27 @@ func (p *POPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
return false
|
||||
}
|
||||
|
||||
func (p *POPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (p *POPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
switch index {
|
||||
case 0:
|
||||
fallthrough
|
||||
case 1:
|
||||
recvStr := string(packet.Buffer)
|
||||
recvStr := string(packet.Bytes())
|
||||
|
||||
if len(recvStr) < 3 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
compareStr := recvStr[0:3]
|
||||
|
||||
if compareStr == COMPARE_STR {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
|
|
@ -68,12 +68,12 @@ func (p *PostgreSQLMatcher) IsError(info osm.MatchInfo, index int, packet *osm.P
|
|||
|
||||
func (p *PostgreSQLMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
pg := pgsqlErrResponse{}
|
||||
if err := binary.Read(reader, binary.BigEndian, &pg); err != nil {
|
||||
|
|
|
@ -54,11 +54,11 @@ func (r *RedisMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet
|
|||
|
||||
func (r *RedisMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
resp := strings.Split(string(packet.Buffer), "\r\n")[0]
|
||||
resp := strings.Split(string(packet.Bytes()), "\r\n")[0]
|
||||
if len(resp) <= 0 {
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
@ -87,7 +87,7 @@ func (r *RedisMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
case 1: // INFO
|
||||
|
||||
info := string(packet.Buffer)
|
||||
info := string(packet.Bytes())
|
||||
if !r.protected {
|
||||
r.parseInfo(info)
|
||||
}
|
||||
|
@ -109,7 +109,7 @@ func (r *RedisMatcher) checkProtectedMode(packet *osm.Packet) bool {
|
|||
compareSign = "-"
|
||||
compareMsg = "DENIED"
|
||||
)
|
||||
str := string(packet.Buffer[:packet.Len])
|
||||
str := string(packet.Bytes())
|
||||
|
||||
if str == "" {
|
||||
return false
|
||||
|
|
|
@ -57,13 +57,13 @@ func (r *RMIMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (r *RMIMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
rmiRecv := RMI_RECV_MESSAGE{}
|
||||
|
||||
buf := bytes.NewReader(packet.Buffer)
|
||||
buf := bytes.NewReader(packet.Bytes())
|
||||
binary.Read(buf, binary.BigEndian, &rmiRecv.streamMessage)
|
||||
binary.Read(buf, binary.BigEndian, &rmiRecv.packetLen)
|
||||
|
||||
|
|
|
@ -78,12 +78,12 @@ func (t *SMBMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
|
||||
func (t *SMBMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
s := smb{}
|
||||
if err := binary.Read(reader, binary.BigEndian, &s); err != nil {
|
||||
|
|
23
smtp/smtp.go
23
smtp/smtp.go
|
@ -14,10 +14,14 @@ func (t *SmtpMatcher) Key() string {
|
|||
return "SMTP"
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) String() string {
|
||||
func (t *SmtpMatcher) Name() string {
|
||||
return "SMTP"
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) IsPrePacket() bool {
|
||||
return true
|
||||
}
|
||||
|
@ -30,31 +34,32 @@ func (t *SmtpMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet)
|
|||
return false
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (t *SmtpMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
if packet == nil {
|
||||
return false
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
buf := string(packet.Buffer)
|
||||
|
||||
buf := string(packet.Bytes())
|
||||
if len(buf) == 0 || len(buf) < 5 {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
splits := strings.Split(buf, "\r\n")
|
||||
splits = strings.Split(buf, " ")
|
||||
if index == 0 {
|
||||
if splits[0] == "220" {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
} else if index == 1 {
|
||||
if splits[0] == "250" {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
} else if index == 2 {
|
||||
if splits[0] == "221" {
|
||||
return true
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
|
|
@ -66,7 +66,7 @@ func (s *SNMPMatcher) HasResponse(index int) bool {
|
|||
|
||||
func (s *SNMPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ func (s *SNMPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) e
|
|||
} `asn1:"tag:2"`
|
||||
}
|
||||
|
||||
if _, err := asn1.Unmarshal(packet.Buffer[0:packet.Len], &p); err != nil {
|
||||
if _, err := asn1.Unmarshal(packet.Bytes(), &p); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -72,13 +72,17 @@ func (t *SQLServerMatcher) Key() string {
|
|||
return "SQLSERVER"
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) String() string {
|
||||
func (t *SQLServerMatcher) Name() string {
|
||||
if t.isSSL {
|
||||
return "SQL Server (SSL)"
|
||||
}
|
||||
return "SQL Server"
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) IsPrePacket() bool {
|
||||
return false
|
||||
}
|
||||
|
@ -91,45 +95,45 @@ func (t *SQLServerMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Pa
|
|||
return false
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
func (t *SQLServerMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
reader.Write(packet.Bytes())
|
||||
|
||||
m := mssqlResponse{}
|
||||
|
||||
if err := binary.Read(reader, binary.BigEndian, &m); err != nil {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if m.Type_ != HEADER_TYPE_RESPONSE {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if m.Length != uint16(packet.Len) {
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
switch m.PreLoginResp.Msg[m.Length-9 : m.Length-8][0] {
|
||||
case 0:
|
||||
return true
|
||||
return nil
|
||||
case 1:
|
||||
t.isSSL = true
|
||||
return true
|
||||
return nil
|
||||
case 2:
|
||||
return true
|
||||
return nil
|
||||
case 3:
|
||||
t.isSSL = true
|
||||
return true
|
||||
return nil
|
||||
default:
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return false
|
||||
return osm.NotMatchedError()
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -43,13 +43,13 @@ func (ssh *SSHMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet
|
|||
|
||||
func (ssh *SSHMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
// SSH-protoversion-softwareversion SP comments CR LF
|
||||
// e.g. ) SSH-2.0-OpenSSH_7.5p1 Ubuntu-10ubuntu0.1\n
|
||||
scanner := bufio.NewScanner(bytes.NewReader(packet.Buffer))
|
||||
scanner := bufio.NewScanner(bytes.NewReader(packet.Bytes()))
|
||||
for scanner.Scan() {
|
||||
exchange := scanner.Text()
|
||||
|
||||
|
|
|
@ -42,14 +42,14 @@ func (tel *TelnetMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Pac
|
|||
|
||||
func (tel *TelnetMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
if packet == nil || !packet.Valid() {
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
buf := make([]byte, 0, 0)
|
||||
count := 0
|
||||
|
||||
for i := 0; i < len(packet.Buffer); i++ {
|
||||
for i := 0; i < packet.Len; i++ {
|
||||
if packet.Buffer[i] > 0 {
|
||||
buf = append(buf, packet.Buffer[i])
|
||||
} else if count > 2 {
|
||||
|
|
|
@ -53,7 +53,7 @@ func (w *WMIMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) er
|
|||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
buf.Write(packet.Buffer)
|
||||
buf.Write(packet.Bytes())
|
||||
|
||||
wmiRecv := DCERPC_DEFAULT{}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user