ПРОДОЛЖЕНИЕ В СЛЕДУЩЕЙ ЧАСТИ Ждем ваше мнение и предложения в коментариях CLIENT package main import ( "net" "bufio" "log" ) func main() { for { conn, err := net.Dial("tcp", "127.0.0.1:8081") if err == nil { conn.Write([]byte("Hello\n")) for { message, err := bufio.NewReader(conn).ReadString('\n') if err == nil { log.Print(message) } } } } } Code package main import ( "net" "bufio" "log" ) func main() { for { conn, err := net.Dial("tcp", "127.0.0.1:8081") if err == nil { conn.Write([]byte("Hello\n")) for { message, err := bufio.NewReader(conn).ReadString('\n') if err == nil { log.Print(message) } } } } } SERVER package main import ( "net" "bufio" "log" "sync" "strings" ) var BOTS sync.Map func main() { log.Print("[SERVER] - Started") ln, err := net.Listen("tcp", ":8081") if err == nil { for { conn, err := ln.Accept() if err == nil { IP := strings.Split(conn.RemoteAddr().String(),":")[0] BOTS.Store(IP, conn) go func(conn net.Conn) { for { message, err := bufio.NewReader(conn).ReadString('\n') if err == nil { log.Print(message) } else { return } } }(conn) } } } } Code package main import ( "net" "bufio" "log" "sync" "strings" ) var BOTS sync.Map func main() { log.Print("[SERVER] - Started") ln, err := net.Listen("tcp", ":8081") if err == nil { for { conn, err := ln.Accept() if err == nil { IP := strings.Split(conn.RemoteAddr().String(),":")[0] BOTS.Store(IP, conn) go func(conn net.Conn) { for { message, err := bufio.NewReader(conn).ReadString('\n') if err == nil { log.Print(message) } else { return } } }(conn) } } } }
что-ж, голанг для такого рода софта - выбор, конечно, интересный одно дело его для сервера использовать, для клиента же - совершенно другое касаемо кода могу сказать лишь то, что текстовый протокол здесь не уместен, больше критиковать тут нечего смысл разделения на столь маленькие части мне не ясен, в конечном итоге читать всё это будет очень не удобно
SexyWare, >Памп, сейчас никто не льет PE по 50кб, памп минимум 300мб, но большенство дует файл до 700мб чтобы не сливали на вт вот оно как, хорошо >Реверс: можешь смело публиковать исходники всех написанных тобою малварей! посыл был не в "тривиальности реверса программ на go", а в "неправильности твоих оценок способностей реверсеров, в лучшую для тебя сторону", если ты не понял >лоудер изначально не рассчитывался на отправку бинарника по сокету только в статье об этом не было ни слова, как и об остальной схеме работы лоадера >если ты читал мой мануал я там указал что будет обработчик команд, это самый простой способ его реализовать суть в том, что работа с текстом накладывает на тебя ограничения и неудобства: невозможность без костылей и оверхеда встраивать бинарные фрагменты и необходимость либо в экранировании, либо вообще в запрете использования определенных символов в некоторых частях протокола. с бинарным же таких проблем нет. единственное, если делать с полного нуля, парсить каждое значение может быть неудобным. но есть готовые решения, избавляющие от этой проблемы
iwakura_inactive7021651, Ты отправил мне "готовое решение" это прибавит минимум 5мб к весу файла и на фон куча библеотек, изучи эту же либу на Golang. Что лучше простой буфио который по строкам считает или громадная либа с тучей других либ
SexyWare, ты буквально два сообщения назад сам говорил о неважности размера стаба. какая вообще разница, если это просто пример