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) } }