97 lines
2.2 KiB
Go
97 lines
2.2 KiB
Go
package main
|
|
|
|
import(
|
|
"syscall"
|
|
"os"
|
|
"bytes"
|
|
"fmt"
|
|
"io"
|
|
"strings"
|
|
"github.com/lrstanley/girc"
|
|
)
|
|
|
|
|
|
|
|
//func stainSelect(query string) {
|
|
// db, err = sql.Open("mysql","user:"+sqlUser+"@"+sqlHost+"("+sqlHost+":"+sqlPort+")/"+sqlDB)
|
|
// defer db.Close()
|
|
// if err != nil {
|
|
// fmt.Println("[SQL] Fatal error when opening the MySQL database: ", err.Error())
|
|
// }
|
|
// err = db.Ping()
|
|
// if err != nil {
|
|
// fmt.Println("[SQL] Fatal error when pinging the MySQL database: ", err.Error())
|
|
// }
|
|
//}
|
|
|
|
func Cowrie(c *girc.Client) error {
|
|
syscall.Mkfifo(cowPipe, 0600)
|
|
for {
|
|
// fmt.Println("[IPC] Opening named pipe for reading")
|
|
stdout, err := os.OpenFile(cowPipe, os.O_RDONLY, 0600)
|
|
var buff bytes.Buffer
|
|
|
|
if err != nil {
|
|
fmt.Println("[IPC] FATAL! Cannot open named pipe!")
|
|
return err
|
|
os.Exit(2)
|
|
}
|
|
|
|
io.Copy(&buff, stdout)
|
|
stdout.Close()
|
|
dataStr := buff.String()
|
|
|
|
if (cowVerbose == 1 && strings.Contains(dataStr, "CMD:")) {
|
|
|
|
fmt.Println("CMD detected!")
|
|
|
|
cowSlice := strings.Split(dataStr,"]")
|
|
cowPrefix := cowSlice[0]
|
|
cowString := strings.Split(cowPrefix, ")")
|
|
cowString = strings.Split(cowString[0], ")")
|
|
cowSession := cowString[0]
|
|
cowIPstr := strings.Split(cowPrefix,",")
|
|
cowIP := cowIPstr[0]
|
|
cowCmd := "["+cowIP+"]["+cowSession+"] " + cowSlice[1]
|
|
|
|
fmt.Println(cowCmd)
|
|
|
|
if !contains(cowSesh,cowSession) {
|
|
Phone(c,"(new) Retard alert! Attn:")
|
|
PhoneOwner(c,"Retard alert!")
|
|
Phone(c,cowPings)
|
|
Phone(c,"-----------------")
|
|
cowSesh = append(cowSesh,cowSession)
|
|
printSlice(cowSesh)
|
|
}
|
|
|
|
Phone(c,dataStr)
|
|
}
|
|
|
|
if cowVerbose == 2 {
|
|
fmt.Printf("[IPC] sending data to [IRC]: %s\n", dataStr)
|
|
Phone(c,dataStr)
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
func cowSay(c *girc.Client, str0 string, str1 string, str2 string) {
|
|
Phone(c," __,._{i} " + str0)
|
|
Phone(c," / _ \\ ")
|
|
if (cowVerbose == 0) {
|
|
Phone(c," | 6 \\ \\ {red}oo{c} ")
|
|
} else if cowVerbose == 1 {
|
|
Phone(c," | 6 \\ \\ {green}oo{c} ")
|
|
} else {
|
|
Phone(c," {yellow}REEE{c} | 6 \\ \\ {green}$${c} ")
|
|
}
|
|
Phone(c," \\___/ .|__|| ")
|
|
Phone(c," __,..=\"^ . , \" ,\\ ")
|
|
Phone(c,"<.__________________/ ")
|
|
Phone(c,"{white}" + str1)
|
|
if str2 != "0" {
|
|
Phone(c,"{white}" + str2)
|
|
}
|
|
}
|