import path
This commit is contained in:
parent
3d28519fa1
commit
14ddc4feba
2
Gopkg.lock
generated
2
Gopkg.lock
generated
|
@ -3,7 +3,7 @@
|
|||
|
||||
[[projects]]
|
||||
branch = "master"
|
||||
name = "git.loafle.net/commons/service_matcher-go"
|
||||
name = "git.loafle.net/overflow/service_matcher-go"
|
||||
packages = [
|
||||
".",
|
||||
"snmp"
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
|
||||
[[constraint]]
|
||||
branch = "master"
|
||||
name = "git.loafle.net/commons/service_matcher-go"
|
||||
name = "git.loafle.net/overflow/service_matcher-go"
|
||||
|
||||
[[constraint]]
|
||||
name = "github.com/stretchr/testify"
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -170,7 +170,7 @@ type AD_RECV struct {
|
|||
}
|
||||
|
||||
type ActiveDirectoryMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (m *ActiveDirectoryMatcher) Key() string {
|
||||
|
@ -181,7 +181,7 @@ func (m *ActiveDirectoryMatcher) Name() string {
|
|||
return "ActiveDirectory"
|
||||
}
|
||||
|
||||
func (m *ActiveDirectoryMatcher) Meta() csm.Metadata {
|
||||
func (m *ActiveDirectoryMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -189,14 +189,14 @@ func (m *ActiveDirectoryMatcher) IsPrePacket() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (m *ActiveDirectoryMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (m *ActiveDirectoryMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *ActiveDirectoryMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (m *ActiveDirectoryMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
buf := new(bytes.Buffer)
|
||||
|
@ -207,11 +207,11 @@ func (m *ActiveDirectoryMatcher) Match(info csm.MatchInfo, index int, packet *cs
|
|||
binary.Read(buf, binary.BigEndian, &adRecv)
|
||||
|
||||
if adRecv.MessageId != AD_MESSAGE_ID {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if adRecv.ProtocolOp != LDAP_RES_SEARCH_ENTRY {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
///AD_TYPE_STR
|
||||
|
@ -233,7 +233,7 @@ func (m *ActiveDirectoryMatcher) Match(info csm.MatchInfo, index int, packet *cs
|
|||
return nil
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
ls := AD_SEND{
|
||||
DefaultCode: 0x30,
|
||||
|
@ -306,7 +306,7 @@ func NewMatcher() csm.Matcher {
|
|||
//sendPackets: make([][]byte, 2),
|
||||
}
|
||||
|
||||
pp := csm.NewPacket(sendByte1, len(sendByte1))
|
||||
pp := osm.NewPacket(sendByte1, len(sendByte1))
|
||||
|
||||
m.AddPacket(pp)
|
||||
|
||||
|
@ -327,7 +327,7 @@ func NewMatcher() csm.Matcher {
|
|||
|
||||
quBytes := lqBuffer.Bytes()
|
||||
|
||||
pp2 := csm.NewPacket(quBytes, len(quBytes))
|
||||
pp2 := osm.NewPacket(quBytes, len(quBytes))
|
||||
|
||||
m.AddPacket(pp2)
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestAD(t *testing.T) {
|
||||
|
@ -24,7 +24,7 @@ func TestAD(t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type cassandra struct {
|
||||
|
@ -16,7 +16,7 @@ type cassandra struct {
|
|||
}
|
||||
|
||||
type CassandraMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (m *CassandraMatcher) Key() string {
|
||||
|
@ -27,7 +27,7 @@ func (m *CassandraMatcher) Name() string {
|
|||
return "Cassandra"
|
||||
}
|
||||
|
||||
func (m *CassandraMatcher) Meta() csm.Metadata {
|
||||
func (m *CassandraMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -39,14 +39,14 @@ func (m *CassandraMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (m *CassandraMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (m *CassandraMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *CassandraMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (m *CassandraMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -57,23 +57,23 @@ func (m *CassandraMatcher) Match(info csm.MatchInfo, index int, packet *csm.Pack
|
|||
return err
|
||||
}
|
||||
if c.Version != 0x84 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if c.Flags != 0x00 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if c.Stream != 0x00 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if c.Opcode != 0x06 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &CassandraMatcher{}
|
||||
c := cassandra{
|
||||
|
@ -86,7 +86,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, c)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
m.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestCassandra(t *testing.T) {
|
||||
|
@ -24,7 +24,7 @@ func TestCassandra(t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
36
dns/dns.go
36
dns/dns.go
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type Dns_frame_header struct {
|
||||
|
@ -38,7 +38,7 @@ type Dns_authority_section struct {
|
|||
}
|
||||
|
||||
type DNSMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (t *DNSMatcher) Key() string {
|
||||
|
@ -49,7 +49,7 @@ func (t *DNSMatcher) String() string {
|
|||
return "DNS"
|
||||
}
|
||||
|
||||
func (t *DNSMatcher) Meta() csm.Metadata {
|
||||
func (t *DNSMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -61,13 +61,13 @@ func (t *DNSMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *DNSMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *DNSMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *DNSMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (t *DNSMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -79,36 +79,36 @@ func (t *DNSMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) er
|
|||
}
|
||||
|
||||
if h.Transaction_id != 0x2a88 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if h.Flags != 0x8180 && h.Flags != 0x8182 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if h.Questions != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if h.Answer_rrs != 0 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if h.Authority_rrs != 0 && h.Authority_rrs != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if h.Additional_rrs != 0 && h.Additional_rrs != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
q := Dns_query_section{}
|
||||
if err := binary.Read(reader, binary.BigEndian, &q); err != nil {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if q.Name != 0 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if q.Query_type != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if q.Class_type != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
@ -121,7 +121,7 @@ func (t *DNSMatcher) IsSend(port int) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.UDPMatcher {
|
||||
func NewMatcher() osm.UDPMatcher {
|
||||
|
||||
m := &DNSMatcher{}
|
||||
|
||||
|
@ -144,7 +144,7 @@ func NewMatcher() csm.UDPMatcher {
|
|||
binary.Write(buf, binary.BigEndian, header)
|
||||
binary.Write(buf, binary.BigEndian, query)
|
||||
|
||||
m.AddPacket(csm.NewPacket(buf.Bytes(), buf.Len()))
|
||||
m.AddPacket(osm.NewPacket(buf.Bytes(), buf.Len()))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestDns(t *testing.T) {
|
||||
|
@ -22,7 +22,7 @@ func TestDns(t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, 0, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -6,12 +6,12 @@ import (
|
|||
"strconv"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type ElasticSearchMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (es *ElasticSearchMatcher) Key() string {
|
||||
|
@ -26,7 +26,7 @@ func (es *ElasticSearchMatcher) Name() string {
|
|||
return name
|
||||
}
|
||||
|
||||
func (es *ElasticSearchMatcher) Meta() csm.Metadata {
|
||||
func (es *ElasticSearchMatcher) Meta() osm.Metadata {
|
||||
return es.meta
|
||||
}
|
||||
|
||||
|
@ -38,14 +38,14 @@ func (es *ElasticSearchMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (es *ElasticSearchMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (es *ElasticSearchMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (es *ElasticSearchMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (es *ElasticSearchMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := string(packet.Buffer)
|
||||
|
@ -64,18 +64,18 @@ func (es *ElasticSearchMatcher) Match(info csm.MatchInfo, index int, packet *csm
|
|||
}
|
||||
|
||||
if lineNo == 0 && !strings.HasPrefix(line, "HTTP/") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if strings.Contains(line, ":") {
|
||||
kv := strings.Split(line, ": ")
|
||||
if kv[0] == "content-type" && !strings.Contains(kv[1], "application/json") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if kv[0] == "content-length" {
|
||||
len, err := strconv.Atoi(kv[1])
|
||||
if err != nil {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
contentLen = len
|
||||
}
|
||||
|
@ -84,14 +84,14 @@ func (es *ElasticSearchMatcher) Match(info csm.MatchInfo, index int, packet *csm
|
|||
}
|
||||
content := body[:contentLen]
|
||||
if strings.HasPrefix(content, "{") && strings.HasSuffix(content, "}") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
es.parseJson(content)
|
||||
if _, ok := es.meta["cluster_name"]; !ok {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if _, ok := es.meta["cluster_uuid"]; !ok {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@ -119,16 +119,16 @@ func (es *ElasticSearchMatcher) dumpMap(m map[string]interface{}) {
|
|||
}
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &ElasticSearchMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
reqStr := "GET / HTTP/1.1\r\n\r\n"
|
||||
byte := make([]byte, len(reqStr))
|
||||
copy(byte[:], reqStr)
|
||||
|
||||
m.AddPacket(csm.NewPacket(byte, len(reqStr)))
|
||||
m.AddPacket(osm.NewPacket(byte, len(reqStr)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestES(t *testing.T) {
|
||||
|
@ -24,7 +24,7 @@ func TestES(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
24
ftp/ftp.go
24
ftp/ftp.go
|
@ -3,7 +3,7 @@ package ftp
|
|||
import (
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
// FTP Status codes, defined in RFC 959
|
||||
|
@ -26,8 +26,8 @@ const (
|
|||
)
|
||||
|
||||
type FTPMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (ftp *FTPMatcher) Key() string {
|
||||
|
@ -38,7 +38,7 @@ func (ftp *FTPMatcher) Name() string {
|
|||
return "FTP"
|
||||
}
|
||||
|
||||
func (ftp *FTPMatcher) Meta() csm.Metadata {
|
||||
func (ftp *FTPMatcher) Meta() osm.Metadata {
|
||||
return ftp.meta
|
||||
}
|
||||
|
||||
|
@ -50,19 +50,19 @@ func (ftp *FTPMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (ftp *FTPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (ftp *FTPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (ftp *FTPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (ftp *FTPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := strings.Split(string(packet.Buffer), "\r\n")[0]
|
||||
if len(str) < 4 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
code := str[:3]
|
||||
|
||||
|
@ -79,18 +79,18 @@ func (ftp *FTPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet)
|
|||
}
|
||||
}
|
||||
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &FTPMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
quitStr := "QUIT\r\n"
|
||||
quitByte := make([]byte, len(quitStr))
|
||||
copy(quitByte[:], quitStr)
|
||||
m.AddPacket(csm.NewPacket(quitByte, len(quitStr)))
|
||||
m.AddPacket(osm.NewPacket(quitByte, len(quitStr)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestFTP(t *testing.T) {
|
||||
|
@ -27,7 +27,7 @@ func TestFTP(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
@ -68,7 +68,7 @@ func TestFTPS(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
24
http/http.go
24
http/http.go
|
@ -3,12 +3,12 @@ package http
|
|||
import (
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type HTTPMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (h *HTTPMatcher) Key() string {
|
||||
|
@ -23,7 +23,7 @@ func (h *HTTPMatcher) Name() string {
|
|||
return name
|
||||
}
|
||||
|
||||
func (h *HTTPMatcher) Meta() csm.Metadata {
|
||||
func (h *HTTPMatcher) Meta() osm.Metadata {
|
||||
return h.meta
|
||||
}
|
||||
|
||||
|
@ -35,27 +35,27 @@ func (h *HTTPMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (h *HTTPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (h *HTTPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (h *HTTPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (h *HTTPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
str := string(packet.Buffer)
|
||||
elems := strings.Split(str, "\r\n")
|
||||
|
||||
if len(elems) <= 0 || 9 > len(elems[0]) {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
protocol := (elems[0])[:8]
|
||||
|
||||
if !strings.HasPrefix(protocol, "HTTP/") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
serverName := ""
|
||||
|
@ -76,16 +76,16 @@ func (h *HTTPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) e
|
|||
return nil
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &HTTPMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
reqStr := "GET / HTTP/1.1\r\n\r\n"
|
||||
byte := make([]byte, len(reqStr))
|
||||
copy(byte[:], reqStr)
|
||||
|
||||
m.AddPacket(csm.NewPacket(byte, len(reqStr)))
|
||||
m.AddPacket(osm.NewPacket(byte, len(reqStr)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestHTTP(t *testing.T) {
|
||||
|
@ -26,7 +26,7 @@ func TestHTTP(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
@ -65,7 +65,7 @@ func TestHTTPS(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
12
imap/imap.go
12
imap/imap.go
|
@ -1,7 +1,7 @@
|
|||
package imap
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -10,7 +10,7 @@ const (
|
|||
)
|
||||
|
||||
type IMAPMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) Key() string {
|
||||
|
@ -29,11 +29,11 @@ func (i *IMAPMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (i *IMAPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (i *IMAPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (i *IMAPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
|
||||
switch index {
|
||||
case 0:
|
||||
|
@ -69,7 +69,7 @@ func (i *IMAPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) b
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &IMAPMatcher{}
|
||||
|
||||
|
@ -77,7 +77,7 @@ func NewMatcher() csm.Matcher {
|
|||
byte := make([]byte, len(reqStr))
|
||||
copy(byte[:], reqStr)
|
||||
|
||||
m.AddPacket(csm.NewPacket(byte, len(reqStr)))
|
||||
m.AddPacket(osm.NewPacket(byte, len(reqStr)))
|
||||
|
||||
return m
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func ImapRun(client net.Conn, t *testing.T) {
|
||||
|
@ -29,7 +29,7 @@ func ImapRun(client net.Conn, t *testing.T) {
|
|||
|
||||
rr, _ := client.Read(bytett)
|
||||
|
||||
bb := lm.Match(nil, 0, csm.NewPacket(bytett, rr))
|
||||
bb := lm.Match(nil, 0, osm.NewPacket(bytett, rr))
|
||||
|
||||
if bb {
|
||||
t.Log("good!")
|
||||
|
@ -53,7 +53,7 @@ func ImapRun(client net.Conn, t *testing.T) {
|
|||
|
||||
//fmt.Println(bytes)
|
||||
|
||||
b := lm.Match(nil, ii+1, csm.NewPacket(bytes, read))
|
||||
b := lm.Match(nil, ii+1, osm.NewPacket(bytes, read))
|
||||
|
||||
if b {
|
||||
t.Log("send Good!")
|
||||
|
@ -113,8 +113,8 @@ func TestImap(t *testing.T) {
|
|||
|
||||
rr, _ := client.Read(bytett)
|
||||
|
||||
//bb := lm.Match(0, csm.NewPacket(bytett, rr), scanInfo)
|
||||
bb := lm.Match(nil, 0, csm.NewPacket(bytett, rr))
|
||||
//bb := lm.Match(0, osm.NewPacket(bytett, rr), scanInfo)
|
||||
bb := lm.Match(nil, 0, osm.NewPacket(bytett, rr))
|
||||
|
||||
if bb {
|
||||
t.Log("good!")
|
||||
|
@ -138,7 +138,7 @@ func TestImap(t *testing.T) {
|
|||
|
||||
//fmt.Println(bytes)
|
||||
|
||||
b := lm.Match(nil, ii+1, csm.NewPacket(bytes, read))
|
||||
b := lm.Match(nil, ii+1, osm.NewPacket(bytes, read))
|
||||
|
||||
if b {
|
||||
t.Log("send Good!")
|
||||
|
|
22
ldap/ldap.go
22
ldap/ldap.go
|
@ -4,7 +4,7 @@ import (
|
|||
"math/rand"
|
||||
"time"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
ber "gopkg.in/asn1-ber.v1"
|
||||
)
|
||||
|
||||
|
@ -14,7 +14,7 @@ const (
|
|||
)
|
||||
|
||||
type LDAPMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
reqID int64
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ func (l *LDAPMatcher) Name() string {
|
|||
return "LDAP"
|
||||
}
|
||||
|
||||
func (l *LDAPMatcher) Meta() csm.Metadata {
|
||||
func (l *LDAPMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -34,33 +34,33 @@ func (l *LDAPMatcher) IsPrePacket() bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func (l *LDAPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (l *LDAPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (l *LDAPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (l *LDAPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
p := ber.DecodePacket(packet.Buffer)
|
||||
|
||||
respID, ok := p.Children[0].Value.(int64)
|
||||
if !ok {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
if respID != l.reqID {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if p.Children[1].Tag != ApplicationBindResponse {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &LDAPMatcher{}
|
||||
|
||||
|
@ -75,7 +75,7 @@ func NewMatcher() csm.Matcher {
|
|||
bindRequest.AppendChild(ber.NewString(ber.ClassContext, ber.TypePrimitive, 0, "LOAFLEOVERFLOW", "Password"))
|
||||
p.AppendChild(bindRequest)
|
||||
|
||||
m.AddPacket(csm.NewPacket(p.Bytes(), len(p.Bytes())))
|
||||
m.AddPacket(osm.NewPacket(p.Bytes(), len(p.Bytes())))
|
||||
|
||||
return m
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
|
||||
"math/rand"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
"gopkg.in/asn1-ber.v1"
|
||||
)
|
||||
|
||||
|
@ -28,7 +28,7 @@ func TestLdap(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
20
lpd/lpd.go
20
lpd/lpd.go
|
@ -1,19 +1,19 @@
|
|||
package lpd
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type LPDMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (l *LPDMatcher) Key() string {
|
||||
return "LPD"
|
||||
}
|
||||
|
||||
func (l *LPDMatcher) Meta() csm.Metadata {
|
||||
func (l *LPDMatcher) Meta() osm.Metadata {
|
||||
return l.meta
|
||||
}
|
||||
|
||||
|
@ -29,31 +29,31 @@ func (l *LPDMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (l *LPDMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (l *LPDMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (l *LPDMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (l *LPDMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
if packet.Len != 1 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &LPDMatcher{}
|
||||
reqStr := "GET / HTTP/1.1\r\n\r\n"
|
||||
rbyte := make([]byte, len(reqStr))
|
||||
copy(rbyte[:], reqStr)
|
||||
|
||||
m.AddPacket(csm.NewPacket(rbyte, len(reqStr)))
|
||||
m.AddPacket(osm.NewPacket(rbyte, len(reqStr)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestLDP(t *testing.T) {
|
||||
|
@ -24,7 +24,7 @@ func TestLDP(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"encoding/binary"
|
||||
"math/rand"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -47,8 +47,8 @@ type OP_reply struct {
|
|||
}
|
||||
|
||||
type MongoDBMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (m *MongoDBMatcher) Key() string {
|
||||
|
@ -59,7 +59,7 @@ func (m *MongoDBMatcher) Name() string {
|
|||
return "MongoDB"
|
||||
}
|
||||
|
||||
func (m *MongoDBMatcher) Meta() csm.Metadata {
|
||||
func (m *MongoDBMatcher) Meta() osm.Metadata {
|
||||
return m.meta
|
||||
}
|
||||
|
||||
|
@ -71,14 +71,14 @@ func (m *MongoDBMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (m *MongoDBMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (m *MongoDBMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m *MongoDBMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (m *MongoDBMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -90,25 +90,25 @@ func (m *MongoDBMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet
|
|||
}
|
||||
|
||||
if uint32(packet.Len) != reply.Header.MessageLength {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if reply.Header.ResponseTo != MONGO_REQUEST_ID {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if reply.Header.OpCode != MONGO_OP_REPLY {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
mm := &MongoDBMatcher{}
|
||||
mm.meta = csm.NewMetadata()
|
||||
mm.meta = osm.NewMetadata()
|
||||
|
||||
tempBuf := new(bytes.Buffer)
|
||||
binary.Write(tempBuf, binary.BigEndian, OP_request{})
|
||||
|
@ -139,7 +139,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, m)
|
||||
|
||||
mm.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
mm.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return mm
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestMongoNor(t *testing.T) {
|
||||
|
@ -43,7 +43,7 @@ func MongoRun(conn net.Conn, t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -6,12 +6,12 @@ import (
|
|||
"io"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type MySqlMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (m *MySqlMatcher) Key() string {
|
||||
|
@ -29,7 +29,7 @@ func (m *MySqlMatcher) Name() string {
|
|||
return name
|
||||
}
|
||||
|
||||
func (m *MySqlMatcher) Meta() csm.Metadata {
|
||||
func (m *MySqlMatcher) Meta() osm.Metadata {
|
||||
return m.meta
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ func (m *MySqlMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (m *MySqlMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (m *MySqlMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
|
@ -55,26 +55,26 @@ type serverSettings struct {
|
|||
keepalive int64
|
||||
}
|
||||
|
||||
func (m *MySqlMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (m *MySqlMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
buf := bytes.NewBuffer(packet.Buffer[:3])
|
||||
packetLen, _ := binary.ReadUvarint(buf)
|
||||
if packetLen != uint64(packet.Len-4) {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
pos := 4
|
||||
p := new(serverSettings)
|
||||
p.protocol = packet.Buffer[pos]
|
||||
if p.protocol != 9 && p.protocol != 10 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
pos++
|
||||
slice, err := readSlice(packet.Buffer[pos:], 0x00)
|
||||
if err != nil {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
m.meta["version"] = string(slice)
|
||||
pos += len(slice) + 1
|
||||
|
@ -103,8 +103,8 @@ func bytesToUint32(b []byte) (n uint32) {
|
|||
return
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
m := &MySqlMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestMySql(t *testing.T) {
|
||||
|
@ -17,7 +17,7 @@ func TestMySql(t *testing.T) {
|
|||
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, 0, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
20
nbss/nbss.go
20
nbss/nbss.go
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -26,7 +26,7 @@ type NBSS struct {
|
|||
}
|
||||
|
||||
type NBSSMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (t *NBSSMatcher) Key() string {
|
||||
|
@ -37,7 +37,7 @@ func (t *NBSSMatcher) Name() string {
|
|||
return "NBSS"
|
||||
}
|
||||
|
||||
func (t *NBSSMatcher) Meta() csm.Metadata {
|
||||
func (t *NBSSMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -49,14 +49,14 @@ func (t *NBSSMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *NBSSMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *NBSSMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *NBSSMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (t *NBSSMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -64,18 +64,18 @@ func (t *NBSSMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) e
|
|||
|
||||
n := NBSS{}
|
||||
if err := binary.Read(reader, binary.LittleEndian, &n); err != nil {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if NBSS_NEGATIVE_SESSION_RESPONSE != n.MsgType {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &NBSSMatcher{}
|
||||
|
||||
|
@ -103,7 +103,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, query)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
m.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestNBSS(t *testing.T) {
|
||||
|
@ -21,7 +21,7 @@ func TestNBSS(t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, 0, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -4,11 +4,11 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type OracleMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) Key() string {
|
||||
|
@ -26,11 +26,11 @@ func (o *OracleMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (o *OracleMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (o *OracleMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (o *OracleMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
|
@ -77,7 +77,7 @@ func (o *OracleMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet)
|
|||
return true
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &OracleMatcher{}
|
||||
|
||||
|
@ -145,7 +145,7 @@ func NewMatcher() csm.Matcher {
|
|||
copy(sendByte[len(hpBt):], bcBt)
|
||||
copy(sendByte[len(hpBt)+len(bcBt):], connect_data)
|
||||
|
||||
m.AddPacket(csm.NewPacket(sendByte, byteSize))
|
||||
m.AddPacket(osm.NewPacket(sendByte, byteSize))
|
||||
|
||||
return m
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package oracle
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
|
||||
"net"
|
||||
"testing"
|
||||
|
@ -36,7 +36,7 @@ func TestOracle(t *testing.T) {
|
|||
|
||||
t.Log(bytes)
|
||||
|
||||
b := lm.Match(ii, csm.NewPacket(bytes, read), nil)
|
||||
b := lm.Match(ii, osm.NewPacket(bytes, read), nil)
|
||||
|
||||
if b {
|
||||
t.Log("Good")
|
||||
|
|
12
pop/pop.go
12
pop/pop.go
|
@ -1,7 +1,7 @@
|
|||
package pop
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -9,7 +9,7 @@ const (
|
|||
)
|
||||
|
||||
type POPMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (p *POPMatcher) Key() string {
|
||||
|
@ -28,11 +28,11 @@ func (p *POPMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (p *POPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (p *POPMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (p *POPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (p *POPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
|
||||
switch index {
|
||||
case 0:
|
||||
|
@ -55,14 +55,14 @@ func (p *POPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bo
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &POPMatcher{}
|
||||
|
||||
reqStr := "QUIT\r\n"
|
||||
byte := make([]byte, len(reqStr))
|
||||
copy(byte[:], reqStr)
|
||||
m.AddPacket(csm.NewPacket(byte, len(reqStr)))
|
||||
m.AddPacket(osm.NewPacket(byte, len(reqStr)))
|
||||
|
||||
return m
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"crypto/tls"
|
||||
"fmt"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
|
||||
"net"
|
||||
"testing"
|
||||
|
@ -50,7 +50,7 @@ func pop3Run(client net.Conn, t *testing.T) {
|
|||
|
||||
read, _ := client.Read(bytett)
|
||||
|
||||
bb := lm.Match(0, csm.NewPacket(bytett, read), nil)
|
||||
bb := lm.Match(0, osm.NewPacket(bytett, read), nil)
|
||||
|
||||
if bb {
|
||||
t.Log("good!")
|
||||
|
@ -72,7 +72,7 @@ func pop3Run(client net.Conn, t *testing.T) {
|
|||
|
||||
//fmt.Println(bytes)
|
||||
|
||||
b := lm.Match(ii+1, csm.NewPacket(bytes, rr), nil)
|
||||
b := lm.Match(ii+1, osm.NewPacket(bytes, rr), nil)
|
||||
|
||||
if b {
|
||||
t.Log("send Good!")
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"encoding/binary"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -38,8 +38,8 @@ type pgsqlErrResponse struct {
|
|||
}
|
||||
|
||||
type PostgreSQLMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (p *PostgreSQLMatcher) Key() string {
|
||||
|
@ -50,7 +50,7 @@ func (p *PostgreSQLMatcher) Name() string {
|
|||
return "PostgreSQL"
|
||||
}
|
||||
|
||||
func (p *PostgreSQLMatcher) Meta() csm.Metadata {
|
||||
func (p *PostgreSQLMatcher) Meta() osm.Metadata {
|
||||
return p.meta
|
||||
}
|
||||
|
||||
|
@ -62,14 +62,14 @@ func (p *PostgreSQLMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (p *PostgreSQLMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (p *PostgreSQLMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (p *PostgreSQLMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (p *PostgreSQLMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -81,12 +81,12 @@ func (p *PostgreSQLMatcher) Match(info csm.MatchInfo, index int, packet *csm.Pac
|
|||
}
|
||||
|
||||
if pg.ResponseType != RESPONSE_TYPE_ERR {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
length := binary.BigEndian.Uint32(pg.Len[:])
|
||||
if length+1 != uint32(packet.Len) {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
data := string(pg.Data[:])
|
||||
|
@ -104,14 +104,14 @@ func (p *PostgreSQLMatcher) Match(info csm.MatchInfo, index int, packet *csm.Pac
|
|||
}
|
||||
|
||||
if !findSeverity || !findErrorCode {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &PostgreSQLMatcher{}
|
||||
|
||||
|
@ -163,7 +163,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.BigEndian, pg)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
m.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestPG(t *testing.T) {
|
||||
|
@ -23,7 +23,7 @@ func TestPG(t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"bufio"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const REDIS_PING string = "*1\r\n$4\r\nPING\r\n"
|
||||
|
@ -12,8 +12,8 @@ const REDIS_INFO string = "*1\r\n$4\r\nINFO\r\n"
|
|||
const REDIS_QUIT string = "*1\r\n$4\r\nQUIT\r\n"
|
||||
|
||||
type RedisMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
|
||||
protected bool
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ func (r *RedisMatcher) Name() string {
|
|||
return name
|
||||
}
|
||||
|
||||
func (r *RedisMatcher) Meta() csm.Metadata {
|
||||
func (r *RedisMatcher) Meta() osm.Metadata {
|
||||
return r.meta
|
||||
}
|
||||
|
||||
|
@ -48,26 +48,26 @@ func (r *RedisMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (r *RedisMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (r *RedisMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (r *RedisMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (r *RedisMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
resp := strings.Split(string(packet.Buffer), "\r\n")[0]
|
||||
if len(resp) <= 0 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
switch index {
|
||||
case 0:
|
||||
sign := string([]rune(resp)[0])
|
||||
if len(sign) <= 0 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if sign == "+" {
|
||||
|
@ -99,12 +99,12 @@ func (r *RedisMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet)
|
|||
}
|
||||
return nil
|
||||
default:
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func (r *RedisMatcher) checkProtectedMode(packet *csm.Packet) bool {
|
||||
func (r *RedisMatcher) checkProtectedMode(packet *osm.Packet) bool {
|
||||
var (
|
||||
compareSign = "-"
|
||||
compareMsg = "DENIED"
|
||||
|
@ -156,13 +156,13 @@ func (r *RedisMatcher) PacketCount() int {
|
|||
return 3
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &RedisMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
m.AddPacket(csm.NewPacket([]byte(REDIS_PING), len(REDIS_PING)))
|
||||
m.AddPacket(csm.NewPacket([]byte(REDIS_INFO), len(REDIS_INFO)))
|
||||
m.AddPacket(csm.NewPacket([]byte(REDIS_QUIT), len(REDIS_QUIT)))
|
||||
m.AddPacket(osm.NewPacket([]byte(REDIS_PING), len(REDIS_PING)))
|
||||
m.AddPacket(osm.NewPacket([]byte(REDIS_INFO), len(REDIS_INFO)))
|
||||
m.AddPacket(osm.NewPacket([]byte(REDIS_QUIT), len(REDIS_QUIT)))
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -26,7 +26,7 @@ func TestRedisMatcher(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
18
rmi/rmi.go
18
rmi/rmi.go
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -28,7 +28,7 @@ type RMI_RECV_MESSAGE struct {
|
|||
}
|
||||
|
||||
type RMIMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (r *RMIMatcher) Key() string {
|
||||
|
@ -39,7 +39,7 @@ func (r *RMIMatcher) Name() string {
|
|||
return "RMI"
|
||||
}
|
||||
|
||||
func (r *RMIMatcher) Meta() csm.Metadata {
|
||||
func (r *RMIMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -51,14 +51,14 @@ func (r *RMIMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (r *RMIMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (r *RMIMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (r *RMIMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (r *RMIMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
rmiRecv := RMI_RECV_MESSAGE{}
|
||||
|
@ -83,10 +83,10 @@ func (r *RMIMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) er
|
|||
return nil
|
||||
}
|
||||
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &RMIMatcher{}
|
||||
rsm := RMI_SEND_MESSAGE{
|
||||
|
@ -100,7 +100,7 @@ func NewMatcher() csm.Matcher {
|
|||
|
||||
sendByte := mCache.Bytes()
|
||||
|
||||
m.AddPacket(csm.NewPacket(sendByte, len(sendByte)))
|
||||
m.AddPacket(osm.NewPacket(sendByte, len(sendByte)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestRMIMatcher_Match(t *testing.T) {
|
||||
|
@ -25,7 +25,7 @@ func TestRMIMatcher_Match(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
22
smb/smb.go
22
smb/smb.go
|
@ -5,7 +5,7 @@ import (
|
|||
"encoding/binary"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -49,7 +49,7 @@ type smb struct {
|
|||
}
|
||||
|
||||
type SMBMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (t *SMBMatcher) Key() string {
|
||||
|
@ -60,7 +60,7 @@ func (t *SMBMatcher) Name() string {
|
|||
return "SMB"
|
||||
}
|
||||
|
||||
func (t *SMBMatcher) Meta() csm.Metadata {
|
||||
func (t *SMBMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -72,14 +72,14 @@ func (t *SMBMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *SMBMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *SMBMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SMBMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (t *SMBMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
|
@ -95,22 +95,22 @@ func (t *SMBMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) er
|
|||
packetLen := binary.BigEndian.Uint32(des[:])
|
||||
|
||||
if packetLen != uint32(packet.Len-4) {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if !strings.Contains(string(s.Component[:]), "SMB") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if s.SmbCommand != SMB_COM_NEGOTIATE {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &SMBMatcher{}
|
||||
|
||||
|
@ -160,7 +160,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, query)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
m.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -30,7 +30,7 @@ func TestSMBMatcher(t *testing.T) {
|
|||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, 0, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
14
smtp/smtp.go
14
smtp/smtp.go
|
@ -3,11 +3,11 @@ package smtp
|
|||
import (
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type SmtpMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) Key() string {
|
||||
|
@ -26,11 +26,11 @@ func (t *SmtpMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *SmtpMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SmtpMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *SmtpMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
if packet == nil {
|
||||
return false
|
||||
}
|
||||
|
@ -57,15 +57,15 @@ func (t *SmtpMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) b
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &SmtpMatcher{}
|
||||
|
||||
b := []byte("helo test\r\n")
|
||||
m.AddPacket(csm.NewPacket(b, len(b)))
|
||||
m.AddPacket(osm.NewPacket(b, len(b)))
|
||||
|
||||
b = []byte("quit\r\n")
|
||||
m.AddPacket(csm.NewPacket(b, len(b)))
|
||||
m.AddPacket(osm.NewPacket(b, len(b)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"encoding/asn1"
|
||||
"math/rand"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type snmpv2 struct {
|
||||
|
@ -38,9 +38,9 @@ var (
|
|||
)
|
||||
|
||||
type SNMPMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
requestID int32
|
||||
meta csm.Metadata
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (s *SNMPMatcher) Key() string {
|
||||
|
@ -51,7 +51,7 @@ func (s *SNMPMatcher) Name() string {
|
|||
return "SNMP"
|
||||
}
|
||||
|
||||
func (s *SNMPMatcher) Meta() csm.Metadata {
|
||||
func (s *SNMPMatcher) Meta() osm.Metadata {
|
||||
|
||||
return s.meta
|
||||
}
|
||||
|
@ -64,10 +64,10 @@ func (s *SNMPMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (s *SNMPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (s *SNMPMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
var p struct {
|
||||
|
@ -88,11 +88,11 @@ func (s *SNMPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) e
|
|||
resp := &response{p.Data.RequestID, p.Data.ErrorStatus, p.Data.ErrorIndex, p.Data.Bindings}
|
||||
|
||||
if s.requestID != resp.ID {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
if len(resp.Bindings) == 0 {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
for _, binding := range resp.Bindings {
|
||||
|
@ -116,10 +116,10 @@ func (s *SNMPMatcher) IsSend(port int) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.UDPMatcher {
|
||||
func NewMatcher() osm.UDPMatcher {
|
||||
|
||||
m := &SNMPMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
|
||||
m.requestID = rand.Int31()
|
||||
|
||||
|
@ -139,7 +139,7 @@ func NewMatcher() csm.UDPMatcher {
|
|||
}
|
||||
buf, _ := asn1.Marshal(p)
|
||||
|
||||
m.AddPacket(csm.NewPacket(buf, len(buf)))
|
||||
m.AddPacket(osm.NewPacket(buf, len(buf)))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestSNMPv2(t *testing.T) {
|
||||
|
@ -23,7 +23,7 @@ func TestSNMPv2(t *testing.T) {
|
|||
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, 0, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -1,216 +0,0 @@
|
|||
package v3
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
csms "git.loafle.net/commons/service_matcher-go/snmp"
|
||||
)
|
||||
|
||||
type snmpv3GlobalData struct {
|
||||
GlobalDataStartSeq uint8
|
||||
GlobalDataLen uint8
|
||||
MsgIdType uint8
|
||||
MsgIdLen uint8
|
||||
MsgId uint32
|
||||
MsgMaxSizeType uint8
|
||||
MsgMaxSizeLen uint8
|
||||
MsgMaxSize [3]uint8
|
||||
MsgFlagsType uint8
|
||||
MsgFlagsTypeLen uint8
|
||||
MsgFlags uint8
|
||||
MsgSecurityModelType uint8
|
||||
MsgSecurityModelLen uint8
|
||||
MsgSecurityModel uint8
|
||||
}
|
||||
|
||||
type snmpv3MsgData struct {
|
||||
MsgDataStartSeq uint8
|
||||
MsgDataLen uint8
|
||||
ContextEngineId uint16
|
||||
ContextEngineName uint16
|
||||
SnmpType uint8
|
||||
Len uint8
|
||||
RequestIdType uint8
|
||||
RequestIdLen uint8
|
||||
RequestId uint32
|
||||
ErrorStatusType uint8
|
||||
ErrorStatusLen uint8
|
||||
ErrorStatus uint8
|
||||
ErrorIndexType uint8
|
||||
ErrorIndexLen uint8
|
||||
ErrorIndex uint8
|
||||
EndSeq uint8
|
||||
EndIndicator uint8
|
||||
}
|
||||
|
||||
type snmpv3 struct {
|
||||
StartSeq uint8
|
||||
SeqLen uint8
|
||||
SNMPVersionType uint8
|
||||
SNMPVersionLen uint8
|
||||
SNMPVersion uint8
|
||||
MsgGlobalData snmpv3GlobalData
|
||||
Unk1 uint16
|
||||
Unk2 uint16
|
||||
MsgAuthoritativeEngineId uint16
|
||||
|
||||
MsgAuthoritativeEngineBootsType uint8
|
||||
MsgAuthoritativeEngineBootsLen uint8
|
||||
MsgAuthoritativeEngineBoots uint8
|
||||
MsgAuthoritativeEngineTimeType uint8
|
||||
MsgAuthoritativeEngineTimeLen uint8
|
||||
MsgAuthoritativeEngineTime uint8
|
||||
MsgUserName uint16
|
||||
MsgAuthenticationParam uint16
|
||||
MsgPrivacyParam uint16
|
||||
MsgData snmpv3MsgData
|
||||
}
|
||||
|
||||
type SNMPMatcher struct {
|
||||
csm.Matchers
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Key() string {
|
||||
return "SNMP_V3"
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Meta() map[string]string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsPrePacket() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) HasResponse(index int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
|
||||
s := snmpv3{}
|
||||
if err := binary.Read(reader, binary.LittleEndian, &s); err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if s.StartSeq != csms.SNMP_START_SEQUENCE {
|
||||
return false
|
||||
}
|
||||
|
||||
var p uint8
|
||||
r := new(bytes.Buffer)
|
||||
r.Write(packet.Buffer)
|
||||
|
||||
for {
|
||||
binary.Read(r, binary.LittleEndian, &p)
|
||||
|
||||
if p == csms.SNMP_TYPE_INTEGER {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
binary.Read(r, binary.BigEndian, &p)
|
||||
if p == 0x01 {
|
||||
binary.Read(r, binary.BigEndian, &p)
|
||||
if p == 0x03 {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsSend(port int) bool {
|
||||
if 161 == port {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.UDPMatcher {
|
||||
|
||||
m := &SNMPMatcher{}
|
||||
|
||||
snmpTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpTempBuf, binary.BigEndian, snmpv3{}) //For getting the struct size
|
||||
|
||||
snmpMsgDataTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpMsgDataTempBuf, binary.BigEndian, snmpv3MsgData{}) //For getting the struct size
|
||||
|
||||
snmpGlobalTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpGlobalTempBuf, binary.BigEndian, snmpv3GlobalData{}) //For getting the struct size
|
||||
|
||||
q := snmpv3{}
|
||||
q.StartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.SeqLen = uint8(len(snmpTempBuf.Bytes())) - 2
|
||||
q.SNMPVersionType = csms.SNMP_TYPE_INTEGER
|
||||
q.SNMPVersionLen = 0x01
|
||||
q.SNMPVersion = csms.SNMP_PROTOCOL_VERSION_3
|
||||
q.MsgGlobalData.GlobalDataStartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.MsgGlobalData.GlobalDataLen = uint8(len(snmpGlobalTempBuf.Bytes())) - 2
|
||||
q.MsgGlobalData.MsgIdType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgIdLen = 0x04
|
||||
q.MsgGlobalData.MsgId = csms.SNMP_MSG_ID_MAX_VALUE
|
||||
q.MsgGlobalData.MsgMaxSizeType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgMaxSizeLen = 0x03
|
||||
q.MsgGlobalData.MsgMaxSize[2] = 0xe3
|
||||
q.MsgGlobalData.MsgMaxSize[1] = 0xff
|
||||
q.MsgGlobalData.MsgMaxSize[0] = 0x00
|
||||
q.MsgGlobalData.MsgFlagsType = csms.SNMP_TYPE_STRING
|
||||
q.MsgGlobalData.MsgFlagsTypeLen = 0x01
|
||||
q.MsgGlobalData.MsgFlags = 0x04
|
||||
q.MsgGlobalData.MsgSecurityModelType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgSecurityModelLen = 0x01
|
||||
q.MsgGlobalData.MsgSecurityModel = 0x03
|
||||
q.Unk1 = 0x1004
|
||||
q.Unk2 = 0x0e30
|
||||
q.MsgAuthoritativeEngineId = csms.SNMP_NO_DESC
|
||||
q.MsgAuthoritativeEngineBootsType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgAuthoritativeEngineBootsLen = 0x01
|
||||
q.MsgAuthoritativeEngineBoots = 0x00
|
||||
q.MsgAuthoritativeEngineTimeType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgAuthoritativeEngineTimeLen = 0x01
|
||||
q.MsgAuthoritativeEngineTime = 0x00
|
||||
q.MsgUserName = csms.SNMP_NO_DESC
|
||||
q.MsgAuthenticationParam = csms.SNMP_NO_DESC
|
||||
q.MsgPrivacyParam = csms.SNMP_NO_DESC
|
||||
|
||||
q.MsgData.MsgDataStartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.MsgData.MsgDataLen = uint8(len(snmpMsgDataTempBuf.Bytes())) - 2
|
||||
q.MsgData.ContextEngineId = csms.SNMP_NO_DESC
|
||||
q.MsgData.ContextEngineName = csms.SNMP_NO_DESC
|
||||
q.MsgData.SnmpType = csms.SNMP_GET_REQUEST
|
||||
q.MsgData.Len = 0x0E
|
||||
q.MsgData.RequestIdType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.RequestIdLen = 0x04
|
||||
q.MsgData.RequestId = 0x00 //
|
||||
q.MsgData.ErrorStatusType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.ErrorStatusLen = 0x01
|
||||
q.MsgData.ErrorStatus = 0x00
|
||||
q.MsgData.ErrorIndexType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.ErrorIndexLen = 0x01
|
||||
q.MsgData.ErrorIndex = 0x00
|
||||
q.MsgData.EndSeq = csms.SNMP_END_SEQUENCE
|
||||
q.MsgData.EndIndicator = 0x00
|
||||
|
||||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, q)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
|
@ -1,216 +0,0 @@
|
|||
package v3
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
csms "git.loafle.net/commons/service_matcher-go/snmp"
|
||||
)
|
||||
|
||||
type snmpv3GlobalData struct {
|
||||
GlobalDataStartSeq uint8
|
||||
GlobalDataLen uint8
|
||||
MsgIdType uint8
|
||||
MsgIdLen uint8
|
||||
MsgId uint32
|
||||
MsgMaxSizeType uint8
|
||||
MsgMaxSizeLen uint8
|
||||
MsgMaxSize [3]uint8
|
||||
MsgFlagsType uint8
|
||||
MsgFlagsTypeLen uint8
|
||||
MsgFlags uint8
|
||||
MsgSecurityModelType uint8
|
||||
MsgSecurityModelLen uint8
|
||||
MsgSecurityModel uint8
|
||||
}
|
||||
|
||||
type snmpv3MsgData struct {
|
||||
MsgDataStartSeq uint8
|
||||
MsgDataLen uint8
|
||||
ContextEngineId uint16
|
||||
ContextEngineName uint16
|
||||
SnmpType uint8
|
||||
Len uint8
|
||||
RequestIdType uint8
|
||||
RequestIdLen uint8
|
||||
RequestId uint32
|
||||
ErrorStatusType uint8
|
||||
ErrorStatusLen uint8
|
||||
ErrorStatus uint8
|
||||
ErrorIndexType uint8
|
||||
ErrorIndexLen uint8
|
||||
ErrorIndex uint8
|
||||
EndSeq uint8
|
||||
EndIndicator uint8
|
||||
}
|
||||
|
||||
type snmpv3 struct {
|
||||
StartSeq uint8
|
||||
SeqLen uint8
|
||||
SNMPVersionType uint8
|
||||
SNMPVersionLen uint8
|
||||
SNMPVersion uint8
|
||||
MsgGlobalData snmpv3GlobalData
|
||||
Unk1 uint16
|
||||
Unk2 uint16
|
||||
MsgAuthoritativeEngineId uint16
|
||||
|
||||
MsgAuthoritativeEngineBootsType uint8
|
||||
MsgAuthoritativeEngineBootsLen uint8
|
||||
MsgAuthoritativeEngineBoots uint8
|
||||
MsgAuthoritativeEngineTimeType uint8
|
||||
MsgAuthoritativeEngineTimeLen uint8
|
||||
MsgAuthoritativeEngineTime uint8
|
||||
MsgUserName uint16
|
||||
MsgAuthenticationParam uint16
|
||||
MsgPrivacyParam uint16
|
||||
MsgData snmpv3MsgData
|
||||
}
|
||||
|
||||
type SNMPMatcher struct {
|
||||
csm.Matchers
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Key() string {
|
||||
return "SNMP_V3"
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Meta() map[string]string {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsPrePacket() bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) HasResponse(index int) bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
reader := new(bytes.Buffer)
|
||||
reader.Write(packet.Buffer)
|
||||
|
||||
s := snmpv3{}
|
||||
if err := binary.Read(reader, binary.LittleEndian, &s); err != nil {
|
||||
return false
|
||||
}
|
||||
|
||||
if s.StartSeq != csms.SNMP_START_SEQUENCE {
|
||||
return false
|
||||
}
|
||||
|
||||
var p uint8
|
||||
r := new(bytes.Buffer)
|
||||
r.Write(packet.Buffer)
|
||||
|
||||
for {
|
||||
binary.Read(r, binary.LittleEndian, &p)
|
||||
|
||||
if p == csms.SNMP_TYPE_INTEGER {
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
binary.Read(r, binary.BigEndian, &p)
|
||||
if p == 0x01 {
|
||||
binary.Read(r, binary.BigEndian, &p)
|
||||
if p == 0x03 {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
return false
|
||||
|
||||
}
|
||||
|
||||
func (t *SNMPMatcher) IsSend(port int) bool {
|
||||
if 161 == port {
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.UDPMatcher {
|
||||
|
||||
m := &SNMPMatcher{}
|
||||
|
||||
snmpTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpTempBuf, binary.BigEndian, snmpv3{}) //For getting the struct size
|
||||
|
||||
snmpMsgDataTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpMsgDataTempBuf, binary.BigEndian, snmpv3MsgData{}) //For getting the struct size
|
||||
|
||||
snmpGlobalTempBuf := new(bytes.Buffer)
|
||||
binary.Write(snmpGlobalTempBuf, binary.BigEndian, snmpv3GlobalData{}) //For getting the struct size
|
||||
|
||||
q := snmpv3{}
|
||||
q.StartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.SeqLen = uint8(len(snmpTempBuf.Bytes())) - 2
|
||||
q.SNMPVersionType = csms.SNMP_TYPE_INTEGER
|
||||
q.SNMPVersionLen = 0x01
|
||||
q.SNMPVersion = csms.SNMP_PROTOCOL_VERSION_3
|
||||
q.MsgGlobalData.GlobalDataStartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.MsgGlobalData.GlobalDataLen = uint8(len(snmpGlobalTempBuf.Bytes())) - 2
|
||||
q.MsgGlobalData.MsgIdType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgIdLen = 0x04
|
||||
q.MsgGlobalData.MsgId = csms.SNMP_MSG_ID_MAX_VALUE
|
||||
q.MsgGlobalData.MsgMaxSizeType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgMaxSizeLen = 0x03
|
||||
q.MsgGlobalData.MsgMaxSize[2] = 0xe3
|
||||
q.MsgGlobalData.MsgMaxSize[1] = 0xff
|
||||
q.MsgGlobalData.MsgMaxSize[0] = 0x00
|
||||
q.MsgGlobalData.MsgFlagsType = csms.SNMP_TYPE_STRING
|
||||
q.MsgGlobalData.MsgFlagsTypeLen = 0x01
|
||||
q.MsgGlobalData.MsgFlags = 0x04
|
||||
q.MsgGlobalData.MsgSecurityModelType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgGlobalData.MsgSecurityModelLen = 0x01
|
||||
q.MsgGlobalData.MsgSecurityModel = 0x03
|
||||
q.Unk1 = 0x1004
|
||||
q.Unk2 = 0x0e30
|
||||
q.MsgAuthoritativeEngineId = csms.SNMP_NO_DESC
|
||||
q.MsgAuthoritativeEngineBootsType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgAuthoritativeEngineBootsLen = 0x01
|
||||
q.MsgAuthoritativeEngineBoots = 0x00
|
||||
q.MsgAuthoritativeEngineTimeType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgAuthoritativeEngineTimeLen = 0x01
|
||||
q.MsgAuthoritativeEngineTime = 0x00
|
||||
q.MsgUserName = csms.SNMP_NO_DESC
|
||||
q.MsgAuthenticationParam = csms.SNMP_NO_DESC
|
||||
q.MsgPrivacyParam = csms.SNMP_NO_DESC
|
||||
|
||||
q.MsgData.MsgDataStartSeq = csms.SNMP_START_SEQUENCE
|
||||
q.MsgData.MsgDataLen = uint8(len(snmpMsgDataTempBuf.Bytes())) - 2
|
||||
q.MsgData.ContextEngineId = csms.SNMP_NO_DESC
|
||||
q.MsgData.ContextEngineName = csms.SNMP_NO_DESC
|
||||
q.MsgData.SnmpType = csms.SNMP_GET_REQUEST
|
||||
q.MsgData.Len = 0x0E
|
||||
q.MsgData.RequestIdType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.RequestIdLen = 0x04
|
||||
q.MsgData.RequestId = 0x00 //
|
||||
q.MsgData.ErrorStatusType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.ErrorStatusLen = 0x01
|
||||
q.MsgData.ErrorStatus = 0x00
|
||||
q.MsgData.ErrorIndexType = csms.SNMP_TYPE_INTEGER
|
||||
q.MsgData.ErrorIndexLen = 0x01
|
||||
q.MsgData.ErrorIndex = 0x00
|
||||
q.MsgData.EndSeq = csms.SNMP_END_SEQUENCE
|
||||
q.MsgData.EndIndicator = 0x00
|
||||
|
||||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.LittleEndian, q)
|
||||
|
||||
m.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return m
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
package v3
|
||||
|
||||
import (
|
||||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestSNMP3(t *testing.T) {
|
||||
|
||||
m := NewMatcher()
|
||||
|
||||
conn, err := net.Dial("udp", "192.168.1.204:161")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
return
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
for i := 0; i < m.PacketCount(); i++ {
|
||||
|
||||
pack := m.Packet(i)
|
||||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
|
||||
if m.Match(nil, i, p) {
|
||||
t.Log("SNMP found")
|
||||
return
|
||||
}
|
||||
|
||||
t.Error("SNMP not found")
|
||||
}
|
||||
|
||||
}
|
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -64,7 +64,7 @@ type mssqlResponse struct {
|
|||
}
|
||||
|
||||
type SQLServerMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
isSSL bool
|
||||
}
|
||||
|
||||
|
@ -87,11 +87,11 @@ func (t *SQLServerMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *SQLServerMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (t *SQLServerMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (t *SQLServerMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
|
@ -133,7 +133,7 @@ func (t *SQLServerMatcher) Match(info csm.MatchInfo, index int, packet *csm.Pack
|
|||
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
mm := &SQLServerMatcher{}
|
||||
|
||||
|
@ -164,7 +164,7 @@ func NewMatcher() csm.Matcher {
|
|||
writer := new(bytes.Buffer)
|
||||
binary.Write(writer, binary.BigEndian, m)
|
||||
|
||||
mm.AddPacket(csm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
mm.AddPacket(osm.NewPacket(writer.Bytes(), writer.Len()))
|
||||
|
||||
return mm
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
/*
|
||||
|
@ -51,7 +51,7 @@ func sqlServerRun(conn net.Conn, t *testing.T) {
|
|||
conn.Write(pack.Buffer)
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if m.Match(nil, i, p) {
|
||||
t.Log(m.Key())
|
||||
|
|
22
ssh/ssh.go
22
ssh/ssh.go
|
@ -5,12 +5,12 @@ import (
|
|||
"bytes"
|
||||
"strings"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
type SSHMatcher struct {
|
||||
csm.Matchers
|
||||
meta csm.Metadata
|
||||
osm.Matchers
|
||||
meta osm.Metadata
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Key() string {
|
||||
|
@ -25,7 +25,7 @@ func (ssh *SSHMatcher) Name() string {
|
|||
return name
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Meta() csm.Metadata {
|
||||
func (ssh *SSHMatcher) Meta() osm.Metadata {
|
||||
return ssh.meta
|
||||
}
|
||||
|
||||
|
@ -37,14 +37,14 @@ func (ssh *SSHMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (ssh *SSHMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (ssh *SSHMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (ssh *SSHMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
// SSH-protoversion-softwareversion SP comments CR LF
|
||||
|
@ -54,7 +54,7 @@ func (ssh *SSHMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet)
|
|||
exchange := scanner.Text()
|
||||
|
||||
if !strings.HasPrefix(exchange, "SSH") {
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
temp := strings.Split(exchange, " ")
|
||||
|
@ -75,11 +75,11 @@ func (ssh *SSHMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet)
|
|||
break
|
||||
}
|
||||
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
m := &SSHMatcher{}
|
||||
m.meta = csm.NewMetadata()
|
||||
m.meta = osm.NewMetadata()
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestSSH(t *testing.T) {
|
||||
|
@ -25,7 +25,7 @@ func TestSSH(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package telnet
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -13,7 +13,7 @@ const (
|
|||
)
|
||||
|
||||
type TelnetMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (tel *TelnetMatcher) Key() string {
|
||||
|
@ -24,7 +24,7 @@ func (tel *TelnetMatcher) Name() string {
|
|||
return "Telnet"
|
||||
}
|
||||
|
||||
func (tel *TelnetMatcher) Meta() csm.Metadata {
|
||||
func (tel *TelnetMatcher) Meta() osm.Metadata {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -36,14 +36,14 @@ func (tel *TelnetMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (tel *TelnetMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (tel *TelnetMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (tel *TelnetMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) error {
|
||||
func (tel *TelnetMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) error {
|
||||
|
||||
if packet == nil || packet.Buffer == nil || packet.Len == 0 {
|
||||
return csm.NoPacketReceivedError()
|
||||
return osm.NoPacketReceivedError()
|
||||
}
|
||||
|
||||
buf := make([]byte, 0, 0)
|
||||
|
@ -65,13 +65,13 @@ func (tel *TelnetMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packe
|
|||
}
|
||||
}
|
||||
|
||||
return csm.NotMatchedError()
|
||||
return osm.NotMatchedError()
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
m := &TelnetMatcher{}
|
||||
|
||||
m.AddPacket(csm.NewPacket([]byte{CMD, DO, 37}, 3))
|
||||
m.AddPacket(osm.NewPacket([]byte{CMD, DO, 37}, 3))
|
||||
|
||||
return m
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package telnet
|
||||
|
||||
import (
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
|
||||
"net"
|
||||
"testing"
|
||||
|
@ -25,7 +25,7 @@ func TestTelnetMatcher_Match(t *testing.T) {
|
|||
}
|
||||
bytes := make([]byte, 1024)
|
||||
n, _ := conn.Read(bytes)
|
||||
p := csm.NewPacket(bytes, n)
|
||||
p := osm.NewPacket(bytes, n)
|
||||
|
||||
if err := m.Match(nil, i, p); err != nil {
|
||||
t.Error(err)
|
||||
|
|
14
wmi/wmi.go
14
wmi/wmi.go
|
@ -4,7 +4,7 @@ import (
|
|||
"bytes"
|
||||
"encoding/binary"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -18,7 +18,7 @@ const (
|
|||
)
|
||||
|
||||
type WMIMatcher struct {
|
||||
csm.Matchers
|
||||
osm.Matchers
|
||||
}
|
||||
|
||||
func (w *WMIMatcher) Key() string {
|
||||
|
@ -37,11 +37,11 @@ func (w *WMIMatcher) HasResponse(index int) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (w *WMIMatcher) IsError(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (w *WMIMatcher) IsError(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (w *WMIMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bool {
|
||||
func (w *WMIMatcher) Match(info osm.MatchInfo, index int, packet *osm.Packet) bool {
|
||||
|
||||
if packet == nil {
|
||||
return false
|
||||
|
@ -81,7 +81,7 @@ func (w *WMIMatcher) Match(info csm.MatchInfo, index int, packet *csm.Packet) bo
|
|||
return false
|
||||
}
|
||||
|
||||
func NewMatcher() csm.Matcher {
|
||||
func NewMatcher() osm.Matcher {
|
||||
|
||||
m := &WMIMatcher{}
|
||||
|
||||
|
@ -205,8 +205,8 @@ func NewMatcher() csm.Matcher {
|
|||
copy(secondByte[0:], ds2Bytes)
|
||||
copy(secondByte[len(ds2Bytes):], daBytes)
|
||||
|
||||
m.AddPacket(csm.NewPacket(firstByte, len(ds1Bytes)+len(ioxidrBytes)))
|
||||
m.AddPacket(csm.NewPacket(secondByte, len(ds2Bytes)+len(daBytes)))
|
||||
m.AddPacket(osm.NewPacket(firstByte, len(ds1Bytes)+len(ioxidrBytes)))
|
||||
m.AddPacket(osm.NewPacket(secondByte, len(ds2Bytes)+len(daBytes)))
|
||||
|
||||
return m
|
||||
|
||||
|
|
|
@ -5,7 +5,7 @@ import (
|
|||
"net"
|
||||
"testing"
|
||||
|
||||
csm "git.loafle.net/commons/service_matcher-go"
|
||||
osm "git.loafle.net/overflow/service_matcher-go"
|
||||
)
|
||||
|
||||
func TestWMI(t *testing.T) {
|
||||
|
@ -38,7 +38,7 @@ func TestWMI(t *testing.T) {
|
|||
|
||||
//fmt.Println(bytes)
|
||||
|
||||
b := lm.Match(nil, ii, csm.NewPacket(bytes, read))
|
||||
b := lm.Match(nil, ii, osm.NewPacket(bytes, read))
|
||||
|
||||
if b {
|
||||
fmt.Println("Good")
|
||||
|
|
Loading…
Reference in New Issue
Block a user