diff --git a/config.go b/config.go new file mode 100644 index 0000000..9b99173 --- /dev/null +++ b/config.go @@ -0,0 +1,39 @@ +package main + +///////////// +///////// +/// RPC +var RPCPort string = "4321" +var RPCHost string = "127.0.0.1" +var cowPipe string = "/tmp/sh0rtbus.cowrie.fifo" +///////// +/// IRC +var ircHost string = "10.8.0.1" +var ircPort int = 6667 +var ircSSL bool = false +var ircFlood bool = true +var ircDebug uintptr = 0 //os.Stdout +var ircVersion string = "sh0rtbus 0.2" +// Bot +var ircHome string = "#bees" +var ircOwner string = "kayos" +var ircNick string = "sh0rtbus" +var ircUser string +var ircPass string // username:pasword defined in auth.text +// Proxy +var proxyProto string = "false" // "false" to disable proxy +var proxyHost string = "127.0.0.1" +var proxyPort string = "9050" +//// Cowrie +var cowVerbose bool = false +var cowLogs string = "/home/cowrie/cowrie/var/log/cowrie" +// Cowrie SQL +//var sqlHost string = "127.0.0.1" +//var sqlPort string = "3306" +//var sqlDB string = "cowrie" +//var sqlUser string = "sh0rtbus" +//var sqlPass string = "Eir4OcertEutpyfryWadbiwobJaphAlf" +/////////////////// +//var db *sql.DB +var err error +////////////////// diff --git a/ircbot.go b/ircbot.go new file mode 100644 index 0000000..5d85b0e --- /dev/null +++ b/ircbot.go @@ -0,0 +1,320 @@ +package main + +import( + "github.com/lrstanley/girc" + "golang.org/x/net/proxy" + "strconv" + "strings" + "net/url" + "bufio" + "time" + "fmt" + "net" + "os" + +) + +func ircbot() { + ////////////////////////////////// + ////////////////////////////////// + ///////////////// TCP Server + //inbound, err := net.ListenTCP("tcp", Host+":"+Port) // Define TCP Listener + //if err != nil { //logr.Fatal("RPC Listener error! " + err) } + //psad := new(psadRPC) // Create a new handler of type psadRPC + //rpc.Register(psad)// Adds all relevant functions to RPC registry (gives client options) + //rpc.Accept(inbound) // Begins listening on socket and offering functions + + /////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////////////// + + //logr := //logr.WithContext("IRC") + + if (len(os.Args) > 1) { + ircNick = os.Args[1] + } + + var SASLbool bool = false + var client *girc.Client + var ircSASL *girc.SASLPlain + + fmt.Println("[IRC] Opening auth file for nickserv creds...") + f, err := os.Open("auth.txt") + if err != nil { + fmt.Println("[IRC] Error opening auth.txt file!") + fmt.Println("[IRC] Proceeding without authentication...") + ircUser = ircNick + ircPass = "" + } else { + defer f.Close() + scanner := bufio.NewScanner(f) + scanner.Scan() + line := scanner.Text() + auth := strings.Split(line, ":") + ircUser = auth[0] + ircPass = auth[1] + ircSASL = &girc.SASLPlain{User: ircUser, Pass: ircPass} + SASLbool = true + f.Close() + } + + if SASLbool == true { + client = girc.New(girc.Config{ + Server: ircHost, + Port: ircPort, + Nick: ircNick, + Name: ircNick, + User: ircUser, + SSL: ircSSL, + SASL: ircSASL, + AllowFlood: ircFlood, + Out: os.Stdout, + Version: ircVersion, + }) + } else { + client = girc.New(girc.Config{ + Server: ircHost, + Port: ircPort, + Nick: ircNick, + Name: ircNick, + User: ircUser, + SSL: ircSSL, + AllowFlood: ircFlood, + Out: os.Stdout, + Version: ircVersion, + }) + } + + client.Handlers.Add(girc.CONNECTED, func(c *girc.Client, e girc.Event) { + fmt.Println("[IRC] Successfully connected to: " + ircHost) + c.Cmd.Join(ircHome) + fmt.Println("[IRC] Joining channel: " + ircHome) + + err = Cowrie(c) + + if err != nil { + fmt.Println("[IPC] Error: " + err.Error()) + c.Cmd.Message(ircOwner, "IPC Error: err.Error()") + os.Exit(2) + } + }) + client.Handlers.Add(girc.INVITE, func(c *girc.Client, e girc.Event) { + c.Cmd.Join(e.Last()) + }) + client.Handlers.Add(girc.ERR_CANNOTSENDTOCHAN, func(c *girc.Client, e girc.Event) { + Target := ircHome + if (strings.Contains(girc.Fmt(e.String()), ircHome)) { + Target = ircOwner + } + c.Cmd.Message(Target, "ERR_INVITEONLYCHAN:") + c.Cmd.Message(Target, girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.ERR_INVITEONLYCHAN, func(c *girc.Client, e girc.Event) { + Phone(c,"ERR_INVITEONLYCHAN:") + Phone(c,girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.RPL_WHOISUSER, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISUSER:") + Phone(c,girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.RPL_WHOISOPERATOR, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISOPERATOR:") + Phone(c,girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.RPL_WHOISIDLE, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISIDLE:") + Phone(c,girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.RPL_WHOISSERVER, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISSERVER:") + Phone(c,girc.Fmt(e.String())) + }) + client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISCHANOP:") + Phone(c,girc.Fmt(e.String())) + }) + + client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_LINKS:") + Phone(c,girc.Fmt(e.String())) + }) + + client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_STATSLINKINFO:") + Phone(c,girc.Fmt(e.String())) + }) + + client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_TRACELINK:") + Phone(c,girc.Fmt(e.String())) + }) + + client.Handlers.Add(girc.RPL_TOPICWHOTIME, func(c *girc.Client, e girc.Event) { + Chan := strings.Split(e.String(), " ")[4] + if Chan != ircHome { + Phone(c,"Joined " + Chan + " on " + e.Source.ID()) + Phone(c,girc.Fmt(e.String())) + } + }) + + client.Handlers.Add(girc.RPL_NAMREPLY, func(c *girc.Client, e girc.Event) { + reply := strings.Split(e.String(), " ") + if reply[5] != ircHome { + + for i, h := range reply { + if i < 4 { continue } + Phone(c,h) + } + + } else { + ircBanner(c) + Phone(c,ircVersion) + } + }) + + client.Handlers.Add(girc.RPL_WHOISCHANNELS, func(c *girc.Client, e girc.Event) { + Phone(c,"RPL_WHOISCHANNELS:") + Phone(c,e.String()) + }) + + client.Handlers.Add(girc.PRIVMSG, func(c *girc.Client, e girc.Event) { + Sender := e.Source.Name + if Sender == "NickServ" { + fmt.Println("[IRC] NickServ response: " + e.Last()) + } + if (strings.HasPrefix(e.Last(), "!")) { + + fmt.Println("[IRC] "+e.String()) + + thyWill := strings.Split(e.Last(), " ") + + switch thyWill[0] { + + case "!whois": + if len(thyWill) == 1 { + c.Cmd.ReplyTo(e, girc.Fmt("Usage: !whois nick")) + return + } + fmt.Println("[IRC] <"+string(Sender)+"> !spider " + thyWill[1]) + if girc.IsValidNick(thyWill[1]) { + c.Cmd.Whois(thyWill[1]) + return + } else { + fmt.Println("[IRC] ERROR: Bad whois target!") + Phone(c,"Bad Target! Wtf is that shit?") + return + } + + case "!spider": + thyWill := strings.Split(e.Last(), " ") + var thyMark string + if len(thyWill) == 1 { + c.Cmd.ReplyTo(e, girc.Fmt("Usage: !spider #channel")) + return + } + + thyMark = thyWill[1] + fmt.Println("[IRC] <"+string(Sender)+"> !spider " + thyMark) + + if girc.IsValidChannel(thyMark) { + fmt.Println("[IRC][SPIDER] Joining target " + thyMark) + Phone(c,"Joining " + thyMark) + c.Cmd.Join(thyMark) + return + } else { + fmt.Println("[IRC][SPIDER] Bad scan target! " + thyMark) + Phone(c,"Bad Target! Wtf is that shit?") + return + } + + case "!stop": + if Sender == ircOwner { + c.Close() + return + } else { + c.Cmd.Kick(ircHome,Sender,"yeah okay retard") + } + + case "!motd": + ircBanner(c) + + case "!cowrie": + if (len(thyWill) < 3) { + cowSay(c,"Cowrie","-v [0/1] verbose on/off ") + return + } + + if thyWill[1] == "-v" { + if thyWill[2] == "0" { + cowVerbose = false + cowSay(c,"Aight, den.", "Cowrie verbose log output stopped") + } + if thyWill[2] == "1" { + cowVerbose = true + cowSay(c,"I seent em!", "Cowrie verbose log output started") + } + } + + case "!telnet": + if (len(thyWill) < 3) { + Phone(c,"not even sure") + return + } + + if thyWill[1] == "add" { + for i, t := range thyWill { + if i < 3 { continue } + Phone(c,t) + } + if thyWill[2] == "0" { + cowVerbose = false + cowSay(c,"Aight, den.", "Cowrie verbose log output stopped") + } + } + + default: + Phone(c,"what") + fmt.Println("[IRC] Unknown bot command issued: " + thyWill[0]) + } + } + }) + + sslString := " " + + ////logr.Debug("Parsing proxy URI: " + ProxyURI) + //logr.Debug("Validating " + proxyProto + " proxy at host " + proxyHost + " on port " + proxyPort) + if ircSSL == true { + sslString = "-ssl" + } + if proxyProto != "false" { + ProxyUrl, err := url.Parse(proxyProto + "://" + proxyHost + ":" + proxyPort) + if err != nil { + fmt.Println("Proxy URI is malformed!") + panic(err) + } + dialer, _ := proxy.FromURL(ProxyUrl, &net.Dialer{Timeout: 5 * time.Second}) + for { + fmt.Println("[IRC] Dialing through a " + proxyProto + " proxy at host " + proxyHost + " on port " + proxyPort) + fmt.Println("[IRC] Connecting to " + ircHost + "/" + strconv.Itoa(ircPort) + " " + sslString) + if err := client.DialerConnect(dialer); err != nil { + fmt.Println("[IRC] Connection error! " + err.Error()) + fmt.Println("[IRC] reconnecting...") + time.Sleep(1) + } else { + return + } + } + } else { + for { + fmt.Println("[IRC] Connecting to " + ircHost + "/" + strconv.Itoa(ircPort) + " " + sslString) + if err := client.Connect(); err != nil { + fmt.Println("[IRC] Connection error! " + err.Error()) + fmt.Println("[IRC] reconnecting...") + time.Sleep(1) + } else { + return + } + } + + } +} + diff --git a/main.go b/main.go new file mode 100644 index 0000000..54d86a0 --- /dev/null +++ b/main.go @@ -0,0 +1,18 @@ +package main + +import "os" +import "fmt" + +func init() { + fmt.Println("yeet") +} + +func main() { + if (len(os.Args) > 2 && os.Args[1] == "client") { + //fmt.Println("Starting client...") + } else { + conBanner() + ircbot() + } +} + diff --git a/sh0rtbus.go b/sh0rtbus.go index 259ae3a..9b4740e 100644 --- a/sh0rtbus.go +++ b/sh0rtbus.go @@ -1,76 +1,17 @@ package main import ( // "database/sql" - "encoding/base64" - "strconv" - "strings" - "net/url" + "github.com/lrstanley/girc" "syscall" "bytes" - "bufio" - "time" "fmt" "os" "io" - "net" //////// // _ "github.com/go-sql-driver/mysql" - "github.com/lrstanley/girc" - "golang.org/x/net/proxy" ) -///////////// -///////// -/// RPC -var RPCPort string = "4321" -var RPCHost string = "127.0.0.1" -var cowPipe string = "/tmp/sh0rtbus.cowrie.fifo" -///////// -/// IRC -var ircHost string = "10.8.0.1" -var ircPort int = 6667 -var ircSSL bool = false -var ircFlood bool = true -var ircDebug uintptr = 0 //os.Stdout -var ircVersion string = "sh0rtbus 0.2" -// Bot -var ircHome string = "#bees" -var ircOwner string = "kayos" -var ircNick string = "sh0rtbus" -var ircUser string -var ircPass string // username:pasword defined in auth.text -// Proxy -var proxyProto string = "false" // "false" to disable proxy -var proxyHost string = "127.0.0.1" -var proxyPort string = "9050" -//// Cowrie -var cowVerbose bool = false -var cowLogs string = "/home/cowrie/cowrie/var/log/cowrie" -// Cowrie SQL -//var sqlHost string = "127.0.0.1" -//var sqlPort string = "3306" -//var sqlDB string = "cowrie" -//var sqlUser string = "sh0rtbus" -//var sqlPass string = "Eir4OcertEutpyfryWadbiwobJaphAlf" -/////////////////// -//var db *sql.DB -var err error -////////////////// - -func b64d(str string) string { - data, err := base64.StdEncoding.DecodeString(str) - if err != nil { - return err.Error() - } - return string(data) -} - -func conBanner() { - data := "ICAgICAgICAg4paI4paIICAgICAgIOKWiOKWiOKWiOKWiCAgICAgICAgICAg4paI4paIICAg4paI4paIICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg4paR4paI4paIICAgICAg4paI4paR4paR4paR4paI4paIICAgICAgICAg4paR4paI4paIICDilpHilojiloggICAgICAgICAgICAgICAgICAgICAKICDilojilojilojilojilojilojilpHilojiloggICAgIOKWkeKWiCAg4paI4paR4paIIOKWiOKWiOKWiOKWiOKWiOKWiCDilojilojilojilojilojilojilpHilojiloggICAgICDilojiloggICDilojiloggIOKWiOKWiOKWiOKWiOKWiOKWiAog4paI4paI4paR4paR4paR4paRIOKWkeKWiOKWiOKWiOKWiOKWiOKWiCDilpHilogg4paIIOKWkeKWiOKWkeKWkeKWiOKWiOKWkeKWkeKWiOKWkeKWkeKWkeKWiOKWiOKWkSDilpHilojilojilojilojilojilogg4paR4paI4paIICDilpHilojilogg4paI4paI4paR4paR4paR4paRIArilpHilpHilojilojilojilojilogg4paR4paI4paI4paR4paR4paR4paI4paI4paR4paI4paIICDilpHilogg4paR4paI4paIIOKWkSAgIOKWkeKWiOKWiCAg4paR4paI4paI4paR4paR4paR4paI4paI4paR4paI4paIICDilpHilojilojilpHilpHilojilojilojilojiloggCiDilpHilpHilpHilpHilpHilojilojilpHilojiloggIOKWkeKWiOKWiOKWkeKWiCAgIOKWkeKWiCDilpHilojiloggICAgIOKWkeKWiOKWiCAg4paR4paI4paIICDilpHilojilojilpHilojiloggIOKWkeKWiOKWiCDilpHilpHilpHilpHilpHilojilogKIOKWiOKWiOKWiOKWiOKWiOKWiCDilpHilojiloggIOKWkeKWiOKWiOKWkSDilojilojilojilogg4paR4paI4paI4paIICAgICDilpHilpHilojilogg4paR4paI4paI4paI4paI4paI4paIIOKWkeKWkeKWiOKWiOKWiOKWiOKWiOKWiCDilojilojilojilojilojiloggCuKWkeKWkeKWkeKWkeKWkeKWkSAg4paR4paRICAg4paR4paRICDilpHilpHilpHilpEgIOKWkeKWkeKWkSAgICAgICDilpHilpEgIOKWkeKWkeKWkeKWkeKWkSAgICDilpHilpHilpHilpHilpHilpEg4paR4paR4paR4paR4paR4paRICAK" - fmt.Println(b64d(data)) - return -} //func stainSelect(query string) { @@ -106,7 +47,6 @@ func Cowrie(c *girc.Client) error { fmt.Printf("[IPC] sending data to [IRC]: %s\n", dataStr) Phone(c,dataStr) } - //psad <- dataStr } } @@ -130,314 +70,6 @@ func Phone(c *girc.Client, Msg string) { c.Cmd.Message(target, girc.Fmt(Msg)) } - - -func ircbot() { - ////////////////////////////////// - ////////////////////////////////// - ///////////////// TCP Server - //inbound, err := net.ListenTCP("tcp", Host+":"+Port) // Define TCP Listener - //if err != nil { //logr.Fatal("RPC Listener error! " + err) } - //psad := new(psadRPC) // Create a new handler of type psadRPC - //rpc.Register(psad)// Adds all relevant functions to RPC registry (gives client options) - //rpc.Accept(inbound) // Begins listening on socket and offering functions - - /////////////////////////////////////////////////////////////////////////// - /////////////////////////////////////////////////////////////////////////// - - //logr := //logr.WithContext("IRC") - - if (len(os.Args) > 1) { - ircNick = os.Args[1] - } - - var SASLbool bool = false - var client *girc.Client - var ircSASL *girc.SASLPlain - - fmt.Println("[IRC] Opening auth file for nickserv creds...") - f, err := os.Open("auth.txt") - if err != nil { - fmt.Println("[IRC] Error opening auth.txt file!") - fmt.Println("[IRC] Proceeding without authentication...") - ircUser = ircNick - ircPass = "" - } else { - defer f.Close() - scanner := bufio.NewScanner(f) - scanner.Scan() - line := scanner.Text() - auth := strings.Split(line, ":") - ircUser = auth[0] - ircPass = auth[1] - ircSASL = &girc.SASLPlain{User: ircUser, Pass: ircPass} - SASLbool = true - f.Close() - } - - if SASLbool == true { - client = girc.New(girc.Config{ - Server: ircHost, - Port: ircPort, - Nick: ircNick, - Name: ircNick, - User: ircUser, - SSL: ircSSL, - SASL: ircSASL, - AllowFlood: ircFlood, - Out: os.Stdout, - Version: ircVersion, - }) - } else { - client = girc.New(girc.Config{ - Server: ircHost, - Port: ircPort, - Nick: ircNick, - Name: ircNick, - User: ircUser, - SSL: ircSSL, - AllowFlood: ircFlood, - Out: os.Stdout, - Version: ircVersion, - }) - } - - client.Handlers.Add(girc.CONNECTED, func(c *girc.Client, e girc.Event) { - fmt.Println("[IRC] Successfully connected to: " + ircHost) - c.Cmd.Join(ircHome) - fmt.Println("[IRC] Joining channel: " + ircHome) - - err = Cowrie(c) - - if err != nil { - fmt.Println("[IPC] Error: " + err.Error()) - c.Cmd.Message(ircOwner, "IPC Error: err.Error()") - os.Exit(2) - } - }) - client.Handlers.Add(girc.INVITE, func(c *girc.Client, e girc.Event) { - c.Cmd.Join(e.Last()) - }) - client.Handlers.Add(girc.ERR_CANNOTSENDTOCHAN, func(c *girc.Client, e girc.Event) { - Target := ircHome - if (strings.Contains(girc.Fmt(e.String()), ircHome)) { - Target = ircOwner - } - c.Cmd.Message(Target, "ERR_INVITEONLYCHAN:") - c.Cmd.Message(Target, girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.ERR_INVITEONLYCHAN, func(c *girc.Client, e girc.Event) { - Phone(c,"ERR_INVITEONLYCHAN:") - Phone(c,girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.RPL_WHOISUSER, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISUSER:") - Phone(c,girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.RPL_WHOISOPERATOR, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISOPERATOR:") - Phone(c,girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.RPL_WHOISIDLE, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISIDLE:") - Phone(c,girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.RPL_WHOISSERVER, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISSERVER:") - Phone(c,girc.Fmt(e.String())) - }) - client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISCHANOP:") - Phone(c,girc.Fmt(e.String())) - }) - - client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_LINKS:") - Phone(c,girc.Fmt(e.String())) - }) - - client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_STATSLINKINFO:") - Phone(c,girc.Fmt(e.String())) - }) - - client.Handlers.Add(girc.RPL_WHOISCHANOP, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_TRACELINK:") - Phone(c,girc.Fmt(e.String())) - }) - - client.Handlers.Add(girc.RPL_TOPICWHOTIME, func(c *girc.Client, e girc.Event) { - Chan := strings.Split(e.String(), " ")[4] - if Chan != ircHome { - Phone(c,"Joined " + Chan + " on " + e.Source.ID()) - Phone(c,girc.Fmt(e.String())) - } - }) - - client.Handlers.Add(girc.RPL_NAMREPLY, func(c *girc.Client, e girc.Event) { - reply := strings.Split(e.String(), " ") - if reply[5] != ircHome { - - for i, h := range reply { - if i < 4 { continue } - Phone(c,h) - } - - } else { - ircBanner(c) - Phone(c,ircVersion) - } - }) - - client.Handlers.Add(girc.RPL_WHOISCHANNELS, func(c *girc.Client, e girc.Event) { - Phone(c,"RPL_WHOISCHANNELS:") - Phone(c,e.String()) - }) - - client.Handlers.Add(girc.PRIVMSG, func(c *girc.Client, e girc.Event) { - Sender := e.Source.Name - if Sender == "NickServ" { - fmt.Println("[IRC] NickServ response: " + e.Last()) - } - if (strings.HasPrefix(e.Last(), "!")) { - - fmt.Println("[IRC] "+e.String()) - - thyWill := strings.Split(e.Last(), " ") - - switch thyWill[0] { - - case "!whois": - if len(thyWill) == 1 { - c.Cmd.ReplyTo(e, girc.Fmt("Usage: !whois nick")) - return - } - fmt.Println("[IRC] <"+string(Sender)+"> !spider " + thyWill[1]) - if girc.IsValidNick(thyWill[1]) { - c.Cmd.Whois(thyWill[1]) - return - } else { - fmt.Println("[IRC] ERROR: Bad whois target!") - Phone(c,"Bad Target! Wtf is that shit?") - return - } - - case "!spider": - thyWill := strings.Split(e.Last(), " ") - var thyMark string - if len(thyWill) == 1 { - c.Cmd.ReplyTo(e, girc.Fmt("Usage: !spider #channel")) - return - } - - thyMark = thyWill[1] - fmt.Println("[IRC] <"+string(Sender)+"> !spider " + thyMark) - - if girc.IsValidChannel(thyMark) { - fmt.Println("[IRC][SPIDER] Joining target " + thyMark) - Phone(c,"Joining " + thyMark) - c.Cmd.Join(thyMark) - return - } else { - fmt.Println("[IRC][SPIDER] Bad scan target! " + thyMark) - Phone(c,"Bad Target! Wtf is that shit?") - return - } - - case "!stop": - if Sender == ircOwner { - c.Close() - return - } else { - c.Cmd.Kick(ircHome,Sender,"yeah okay retard") - } - - case "!motd": - ircBanner(c) - - case "!cowrie": - if (len(thyWill) < 3) { - cowSay(c,"Cowrie","-v [0/1] verbose on/off ") - return - } - - if thyWill[1] == "-v" { - if thyWill[2] == "0" { - cowVerbose = false - cowSay(c,"Aight, den.", "Cowrie verbose log output stopped") - } - if thyWill[2] == "1" { - cowVerbose = true - cowSay(c,"I seent em!", "Cowrie verbose log output started") - } - } - - case "!telnet": - if (len(thyWill) < 3) { - Phone(c,"not even sure") - return - } - - if thyWill[1] == "add" { - for i, t := range thyWill { - if i < 3 { continue } - Phone(c,t) - } - if thyWill[2] == "0" { - cowVerbose = false - cowSay(c,"Aight, den.", "Cowrie verbose log output stopped") - } - } - - default: - Phone(c,"what") - fmt.Println("[IRC] Unknown bot command issued: " + thyWill[0]) - } - } - }) - - sslString := " " - - ////logr.Debug("Parsing proxy URI: " + ProxyURI) - //logr.Debug("Validating " + proxyProto + " proxy at host " + proxyHost + " on port " + proxyPort) - if ircSSL == true { - sslString = "-ssl" - } - if proxyProto != "false" { - ProxyUrl, err := url.Parse(proxyProto + "://" + proxyHost + ":" + proxyPort) - if err != nil { - fmt.Println("Proxy URI is malformed!") - panic(err) - } - dialer, _ := proxy.FromURL(ProxyUrl, &net.Dialer{Timeout: 5 * time.Second}) - for { - fmt.Println("[IRC] Dialing through a " + proxyProto + " proxy at host " + proxyHost + " on port " + proxyPort) - fmt.Println("[IRC] Connecting to " + ircHost + "/" + strconv.Itoa(ircPort) + " " + sslString) - if err := client.DialerConnect(dialer); err != nil { - fmt.Println("[IRC] Connection error! " + err.Error()) - fmt.Println("[IRC] reconnecting...") - time.Sleep(1) - } else { - return - } - } - } else { - for { - fmt.Println("[IRC] Connecting to " + ircHost + "/" + strconv.Itoa(ircPort) + " " + sslString) - if err := client.Connect(); err != nil { - fmt.Println("[IRC] Connection error! " + err.Error()) - fmt.Println("[IRC] reconnecting...") - time.Sleep(1) - } else { - return - } - } - - } -} - - - func ircBanner(c *girc.Client) { c.Cmd.Message(ircHome, girc.Fmt("{purple,black} {green,black} ___ {purple,black} {c}")) c.Cmd.Message(ircHome, girc.Fmt("{purple,black} | {green,black}| /|{purple,black} | | {silver,black}v0.1{c}{red,black}a {c}")) @@ -447,14 +79,3 @@ func ircBanner(c *girc.Client) { return } - - - -func main() { - if (len(os.Args) > 2 && os.Args[1] == "client") { - //fmt.Println("Starting client...") - } else { - conBanner() - ircbot() - } -}