forked from ek0mssavi0r/noPROXY_c2s
Upload files to "c2_websocket_abuse/pkg"
This commit is contained in:
parent
9fd8741ffc
commit
23b64ddb9d
58
c2_websocket_abuse/pkg/protocol.go
Normal file
58
c2_websocket_abuse/pkg/protocol.go
Normal file
|
|
@ -0,0 +1,58 @@
|
||||||
|
package protocol
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Message types
|
||||||
|
const (
|
||||||
|
TypeExec = "exec"
|
||||||
|
TypeUpload = "upload"
|
||||||
|
TypeDownload = "download"
|
||||||
|
TypeBeacon = "beacon"
|
||||||
|
TypePing = "ping"
|
||||||
|
TypePong = "pong"
|
||||||
|
TypeHeartbeat = "heartbeat"
|
||||||
|
TypeResult = "result"
|
||||||
|
TypeCmd = "cmd"
|
||||||
|
TypeRegister = "register"
|
||||||
|
TypeExit = "exit"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Message is the shared JSON frame sent over WebSocket.
|
||||||
|
type Message struct {
|
||||||
|
Type string `json:"type"`
|
||||||
|
ID string `json:"id,omitempty"`
|
||||||
|
Data string `json:"data,omitempty"`
|
||||||
|
Err string `json:"error,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Marshal serializes a Message to JSON bytes.
|
||||||
|
func (m *Message) Marshal() ([]byte, error) {
|
||||||
|
return json.Marshal(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UnmarshalMessage deserializes JSON bytes into a Message.
|
||||||
|
func UnmarshalMessage(data []byte) (*Message, error) {
|
||||||
|
var msg Message
|
||||||
|
if err := json.Unmarshal(data, &msg); err != nil {
|
||||||
|
return nil, fmt.Errorf("unmarshal message: %w", err)
|
||||||
|
}
|
||||||
|
return &msg, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewMessage is a convenience constructor.
|
||||||
|
func NewMessage(msgType, id, data string) *Message {
|
||||||
|
return &Message{Type: msgType, ID: id, Data: data}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewErrorMessage creates an error result message.
|
||||||
|
func NewErrorMessage(id, err string) *Message {
|
||||||
|
return &Message{Type: TypeResult, ID: id, Err: err}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewResult creates a success result message.
|
||||||
|
func NewResult(id, data string) *Message {
|
||||||
|
return &Message{Type: TypeResult, ID: id, Data: data}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user