magic
This commit is contained in:
@@ -49,3 +49,17 @@ Saprus Type: 0x88 0x88
|
||||
| Payload |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
```
|
||||
|
||||
## hold
|
||||
|
||||
Saprus Type: 0x00 0x3C
|
||||
|
||||
```
|
||||
0 1 2 3 4
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| Dest | |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +
|
||||
| Payload |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
```
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
"saprusserver/utils"
|
||||
)
|
||||
|
||||
func welcomeMessage() {
|
||||
msg :=`Welcome to --
|
||||
msg :=`
|
||||
██████ ▄▄▄ ██▓███ ██▀███ █ ██ ██████
|
||||
▒██ ▒ ▒████▄ ▓██░ ██▒▓██ ▒ ██▒ ██ ▓██▒▒██ ▒
|
||||
░ ▓██▄ ▒██ ▀█▄ ▓██░ ██▓▒▓██ ░▄█ ▒▓██ ▒██░░ ▓██▄
|
||||
@@ -36,15 +33,9 @@ func checkError(err error) {
|
||||
|
||||
func main() {
|
||||
welcomeMessage()
|
||||
log.Printf("Starting server\n")
|
||||
con := utils.SocketCall{}
|
||||
serv, err := net.ListenPacket("udp4", ":8888")
|
||||
serverIP := "aaa"
|
||||
msg := "clientapi: " + serverIP
|
||||
fileBuf, _ := ioutil.ReadFile("./script.sh")
|
||||
msg = string(fileBuf)
|
||||
b64Msg := base64.StdEncoding.EncodeToString([]byte(msg))
|
||||
log.Println("Starting server")
|
||||
|
||||
serv, err := net.ListenPacket("udp4", ":8888")
|
||||
checkError(err)
|
||||
|
||||
defer serv.Close()
|
||||
@@ -53,17 +44,8 @@ func main() {
|
||||
|
||||
for {
|
||||
_, addr, err := serv.ReadFrom(buff)
|
||||
|
||||
checkError(err)
|
||||
|
||||
remoteAddr := strings.Split(addr.String(), ":")
|
||||
|
||||
log.Printf("Received data %s\n", remoteAddr)
|
||||
|
||||
checkError(err)
|
||||
|
||||
con.SendData(b64Msg)
|
||||
|
||||
log.Printf("Sending data to %s\n", addr)
|
||||
go utils.ProcessRequests(buff, addr)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,14 @@ package structs
|
||||
import (
|
||||
)
|
||||
|
||||
type UDPPackage struct {
|
||||
SourcePort [2]byte
|
||||
Destport [2]byte
|
||||
Length [2]byte
|
||||
Checksum [2]byte
|
||||
|
||||
}
|
||||
|
||||
type SaprusHeaderFrame struct {
|
||||
PacketType [2]byte
|
||||
Length [2]byte
|
||||
@@ -16,4 +24,3 @@ func (c SaprusHeaderFrame) Bytes() []byte {
|
||||
data = append(data, c.Payload...)
|
||||
return data
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,44 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
||||
"log"
|
||||
"net"
|
||||
"strings"
|
||||
|
||||
"saprusserver/structs"
|
||||
)
|
||||
|
||||
func (c *SocketCall) GatherSaprusHeader(buf []byte) structs.SaprusHeaderFrame {
|
||||
data := structs.SaprusHeaderFrame {
|
||||
PacketType: [2]byte{buf[0], buf[1]},
|
||||
Length: [2]byte{buf[2], buf[3]},
|
||||
}
|
||||
return data
|
||||
}
|
||||
|
||||
func ProcessRequests(buf []byte, addr net.Addr) {
|
||||
c := SocketCall{}
|
||||
|
||||
msg := "hello world"
|
||||
b64Msg := base64.StdEncoding.EncodeToString([]byte(msg))
|
||||
|
||||
saprusHeader := c.GatherSaprusHeader(buf)
|
||||
|
||||
remoteAddr := strings.Split(addr.String(), ":")
|
||||
|
||||
switch {
|
||||
case strings.Contains(string(buf), "here"):
|
||||
log.Printf("Sending Data to %s\n", remoteAddr)
|
||||
c.SendData(b64Msg)
|
||||
case saprusHeader.PacketType == [2]byte{0x88, 0x88}:
|
||||
log.Printf("New find:: %s\n", remoteAddr)
|
||||
c.SendData(base64.StdEncoding.EncodeToString([]byte("hello\n")))
|
||||
case saprusHeader.PacketType == [2]byte{0x00, 0x3C}:
|
||||
log.Printf("Broadcast message::%s\n", remoteAddr)
|
||||
default:
|
||||
log.Printf("Packet type not found::%x\n", string(saprusHeader.PacketType[:]))
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user