From 96be2f59a7c550deff479c58afeec99d5e7f7a1f Mon Sep 17 00:00:00 2001 From: Vladislav Karmishkin Date: Wed, 13 Apr 2022 20:45:14 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=BA=D0=B8=D0=BD=D1=83=D0=BB=20?= =?UTF-8?q?=D0=BE=D0=B1=D1=89=D0=B8=D0=B9=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7?= =?UTF-8?q?=D0=B8=D1=82=D0=BE=D1=80=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++- assets/gomem.gif | Bin 0 -> 219362 bytes cmd/main.go | 20 ++++ go.mod | 12 +++ go.sum | 12 +++ internal/app/app.go | 29 ++++++ internal/delivery/Http.go | 12 +++ internal/delivery/Http_test.go | 10 ++ internal/services/decorators/NetDial.go | 40 +++++++ internal/services/decorators/NetDial_test.go | 103 +++++++++++++++++++ internal/services/producers/Producer.go | 20 ++++ internal/services/producers/Producer_test.go | 21 ++++ internal/services/workers/Worker.go | 42 ++++++++ internal/services/workers/Worker_test.go | 86 ++++++++++++++++ 14 files changed, 418 insertions(+), 1 deletion(-) create mode 100644 assets/gomem.gif create mode 100644 cmd/main.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 internal/app/app.go create mode 100644 internal/delivery/Http.go create mode 100644 internal/delivery/Http_test.go create mode 100644 internal/services/decorators/NetDial.go create mode 100644 internal/services/decorators/NetDial_test.go create mode 100644 internal/services/producers/Producer.go create mode 100644 internal/services/producers/Producer_test.go create mode 100644 internal/services/workers/Worker.go create mode 100644 internal/services/workers/Worker_test.go diff --git a/README.md b/README.md index 9057bb7..ff55d52 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# SynAck +# SynAck (Port Scanner) + +## Core team: +*danabolik and FalloutBaby* + +## Usage +`go run ./cmd/main.go {domain/ip_address} {count gorutines}` +>You may request certain address and amount of concurrent requests. +By default, they are `scanme.nmap.org` and `8` + +![img.png](assets/gomem.gif) diff --git a/assets/gomem.gif b/assets/gomem.gif new file mode 100644 index 0000000000000000000000000000000000000000..24227f12afb082c4dcf8efebefe54169b59d75f5 GIT binary patch literal 219362 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

~}JdfDJOYvg6PCbj(v!4Kf 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 literal 0 HcmV?d00001 diff --git a/cmd/main.go b/cmd/main.go new file mode 100644 index 0000000..7826cf2 --- /dev/null +++ b/cmd/main.go @@ -0,0 +1,20 @@ +package main + +import ( + "SynAck/internal/app" + "os" +) + +func main() { + addr, grt := "scanme.nmap.org", "8" + switch true { + case len(os.Args) == 2: + addr = os.Args[1] + break + case len(os.Args) >= 3: + addr, grt = os.Args[1], os.Args[2] + default: + break + } + app.Run(addr, grt) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..3d891be --- /dev/null +++ b/go.mod @@ -0,0 +1,12 @@ +module SynAck + +go 1.18 + +require github.com/stretchr/testify v1.7.1 + +require ( + github.com/davecgh/go-spew v1.1.0 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/stretchr/objx v0.1.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..5786f2b --- /dev/null +++ b/go.sum @@ -0,0 +1,12 @@ +github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= +gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/app/app.go b/internal/app/app.go new file mode 100644 index 0000000..953956c --- /dev/null +++ b/internal/app/app.go @@ -0,0 +1,29 @@ +package app + +import ( + "SynAck/internal/delivery" + "SynAck/internal/services/decorators" + "SynAck/internal/services/producers" + "SynAck/internal/services/workers" + "fmt" + "strconv" +) + +type App struct { + dialer decorators.NetDialer + decorator decorators.NetDecorator + producer producers.Generator + delivery delivery.Http +} + +func Run(addr string, grt string) { + app := new(App) + decorator := decorators.NetDecorator{Dialer: app.dialer} + + count, _ := strconv.Atoi(grt) + worker := workers.Worker{Decorator: decorator, Delivery: app.delivery, Producer: app.producer} + openPs := worker.ScanPorts(addr, count) + + fmt.Println(openPs) + fmt.Println("Збазиба!") +} diff --git a/internal/delivery/Http.go b/internal/delivery/Http.go new file mode 100644 index 0000000..ad7610b --- /dev/null +++ b/internal/delivery/Http.go @@ -0,0 +1,12 @@ +package delivery + +type Delivery interface { + GetTcpNetwork() string +} + +type Http struct { +} + +func (http Http) GetTcpNetwork() string { + return "tcp" +} diff --git a/internal/delivery/Http_test.go b/internal/delivery/Http_test.go new file mode 100644 index 0000000..7e88bd0 --- /dev/null +++ b/internal/delivery/Http_test.go @@ -0,0 +1,10 @@ +package delivery + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestHttp_GetNetwork(t *testing.T) { + assert.Equal(t, "tcp", Http{}.GetTcpNetwork()) +} diff --git a/internal/services/decorators/NetDial.go b/internal/services/decorators/NetDial.go new file mode 100644 index 0000000..a82e58b --- /dev/null +++ b/internal/services/decorators/NetDial.go @@ -0,0 +1,40 @@ +package decorators + +import ( + "net" + "strconv" + "time" +) + +type Dialer interface { + DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) +} + +type NetDialer struct { +} + +func (d NetDialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) { + return net.DialTimeout(network, address, timeout) +} + +type DialerDecorator interface { + DialPort(network, addr string, p int) int +} + +type NetDecorator struct { + Dialer Dialer +} + +func (d NetDecorator) DialPort(network, addr string, p int) int { + timeout := time.Second + c, err := d.Dialer.DialTimeout(network, addr+":"+strconv.Itoa(p), timeout) + if err != nil { + return 0 + } else { + err = c.Close() + if err != nil { + panic(err) + } + return p + } +} diff --git a/internal/services/decorators/NetDial_test.go b/internal/services/decorators/NetDial_test.go new file mode 100644 index 0000000..62211cd --- /dev/null +++ b/internal/services/decorators/NetDial_test.go @@ -0,0 +1,103 @@ +package decorators + +import ( + "errors" + "github.com/stretchr/testify/assert" + "net" + "testing" + "time" +) + +type ConnStub struct { + isClosed bool +} + +func (c ConnStub) Read(b []byte) (n int, err error) { + return 0, nil +} +func (c ConnStub) Write(b []byte) (n int, err error) { + return 0, nil +} +func (c ConnStub) Close() error { + if c.isClosed { + return errors.New("failed close connection") + } + return nil +} +func (c ConnStub) LocalAddr() net.Addr { + return nil +} +func (c ConnStub) RemoteAddr() net.Addr { + return nil +} +func (c ConnStub) SetDeadline(t time.Time) error { + return nil +} +func (c ConnStub) SetReadDeadline(t time.Time) error { + return nil +} +func (c ConnStub) SetWriteDeadline(t time.Time) error { + return nil +} + +type TestDialer struct { + isOpen bool + conn ConnStub +} + +func (d TestDialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) { + if !d.isOpen { + return d.conn, errors.New("failed connection") + } + return d.conn, nil +} + +type dialAllDataProvider struct { + dialer TestDialer + network string + address string + port int + openPort int +} + +func TestNetDial_DialPort(t *testing.T) { + provider := []dialAllDataProvider{ + { + TestDialer{isOpen: true, conn: ConnStub{isClosed: false}}, + "tcp", + "scanme.nmap.org", + 80, + 80, + }, + { + TestDialer{isOpen: false, conn: ConnStub{isClosed: false}}, + "tcp", + "scanme.nmap.org", + 443, + 0, + }, + } + for _, p := range provider { + ps := NetDecorator{p.dialer}.DialPort(p.network, p.address, p.port) + assert.Equal(t, p.openPort, ps) + } +} + +type PanicDataProvider struct { + dialer TestDialer + network string + address string + port int +} + +func TestNetDial_DialPortWhenPanic(t *testing.T) { + p := PanicDataProvider{ + TestDialer{isOpen: true, conn: ConnStub{isClosed: true}}, + "tcp", + "scanme.nmap.org", + 664, + } + assert.Panics(t, func() { + NetDecorator{p.dialer}.DialPort(p.network, p.address, p.port) + }) +} diff --git a/internal/services/producers/Producer.go b/internal/services/producers/Producer.go new file mode 100644 index 0000000..c86a44f --- /dev/null +++ b/internal/services/producers/Producer.go @@ -0,0 +1,20 @@ +package producers + +type Producer interface { + WritePsToChan(psChan chan int) + GetCountPorts() int +} + +type Generator struct { +} + +func (g Generator) WritePsToChan(psChan chan int) { + for i := 1; i <= cap(psChan); i++ { + psChan <- i + } + close(psChan) +} + +func (g Generator) GetCountPorts() int { + return 65536 +} diff --git a/internal/services/producers/Producer_test.go b/internal/services/producers/Producer_test.go new file mode 100644 index 0000000..f424b8b --- /dev/null +++ b/internal/services/producers/Producer_test.go @@ -0,0 +1,21 @@ +package producers + +import ( + "github.com/stretchr/testify/assert" + "testing" +) + +func TestGenerator_WritePsToChan(t *testing.T) { + cntPs := 10 + psChan := make(chan int, cntPs) + + g := Generator{} + g.WritePsToChan(psChan) + for i := 1; i <= cntPs; i++ { + assert.Equal(t, i, <-psChan) + } +} + +func TestGenerator_GetCountPorts(t *testing.T) { + assert.Equal(t, 65536, Generator{}.GetCountPorts()) +} diff --git a/internal/services/workers/Worker.go b/internal/services/workers/Worker.go new file mode 100644 index 0000000..353a3ba --- /dev/null +++ b/internal/services/workers/Worker.go @@ -0,0 +1,42 @@ +package workers + +import ( + "SynAck/internal/delivery" + "SynAck/internal/services/decorators" + "SynAck/internal/services/producers" + "sync" +) + +type Worker struct { + Decorator decorators.DialerDecorator + Delivery delivery.Delivery + Producer producers.Producer +} + +func (w Worker) ScanPorts(addr string, grt int) []int { + tcp := w.Delivery.GetTcpNetwork() + wg := sync.WaitGroup{} + + psChan := make(chan int, w.Producer.GetCountPorts()) + go w.Producer.WritePsToChan(psChan) + var m sync.Mutex + + var result []int + for i := 0; i < grt; i++ { + wg.Add(1) + go func() { + defer wg.Done() + for p := range psChan { + dial := w.Decorator.DialPort(tcp, addr, p) + if dial != 0 { + m.Lock() + result = append(result, dial) + m.Unlock() + } + } + }() + } + wg.Wait() + + return result +} diff --git a/internal/services/workers/Worker_test.go b/internal/services/workers/Worker_test.go new file mode 100644 index 0000000..864972c --- /dev/null +++ b/internal/services/workers/Worker_test.go @@ -0,0 +1,86 @@ +package workers + +import ( + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/mock" + "testing" +) + +type DialerStub struct { + mock.Mock +} + +type DeliveryStub struct { +} + +type ProducerStub struct { + psChan chan int +} + +func (ps ProducerStub) WritePsToChan(psChan chan int) { + for i := 1; i <= cap(psChan); i++ { + psChan <- i + } + close(psChan) +} + +func (ps ProducerStub) GetCountPorts() int { + return 5 +} + +func (ds DeliveryStub) GetTcpNetwork() string { + return "tcp" +} + +func (d *DialerStub) DialPort(network, addr string, p int) int { + args := d.Called(network, addr, p) + return args.Int(0) +} + +func TestScanPorts(t *testing.T) { + addr := "scanme.nmap.org" + grt := 5 + + delivery := DeliveryStub{} + + dialer := &DialerStub{} + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Once().Return(1) + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Once().Return(2) + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Once().Return(3) + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Once().Return(4) + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Once().Return(5) + + producer := ProducerStub{} + psChan := make(chan int, producer.GetCountPorts()) + + w := Worker{Decorator: dialer, Delivery: delivery, Producer: &producer} + + producer.WritePsToChan(psChan) + result := w.ScanPorts(addr, grt) + + exp := []int{1, 2, 3, 4, 5} + for _, act := range result { + assert.Contains(t, exp, act) + } +} + +func TestScanPortsWhenEmpty(t *testing.T) { + addr := "scanme.nmap.org" + grt := 5 + + producer := ProducerStub{} + cntPs := producer.GetCountPorts() + + delivery := DeliveryStub{} + + dialer := &DialerStub{} + dialer.On("DialPort", delivery.GetTcpNetwork(), addr, mock.Anything).Times(cntPs).Return(0) + psChan := make(chan int, cntPs) + + w := Worker{Decorator: dialer, Delivery: delivery, Producer: &producer} + + producer.WritePsToChan(psChan) + result := w.ScanPorts(addr, grt) + + assert.Empty(t, result) +}