From b9934d51cf62ea721c90a9a83760366356cd5a01 Mon Sep 17 00:00:00 2001
From: serr <sc7227484@gmail.com>
Date: Mon, 3 Mar 2025 16:36:20 +0300
Subject: [PATCH] hashscanf

---
 .gitignore                             |   3 +-
 crackmes/hashcrscanf/a.exe             | Bin 0 -> 64521 bytes
 crackmes/hashcrscanf/hashcr.c          |  28 ++++++++++++++++
 crackmes/hashcrscanf/solve.py          |  44 +++++++++++++++++++++++++
 crackmes/{xorsimple => xorcr}/a.exe    | Bin
 crackmes/{xorsimple => xorcr}/solve.py |   0
 crackmes/{xorsimple => xorcr}/xorcr.c  |   0
 7 files changed, 74 insertions(+), 1 deletion(-)
 create mode 100644 crackmes/hashcrscanf/a.exe
 create mode 100644 crackmes/hashcrscanf/hashcr.c
 create mode 100644 crackmes/hashcrscanf/solve.py
 rename crackmes/{xorsimple => xorcr}/a.exe (100%)
 rename crackmes/{xorsimple => xorcr}/solve.py (100%)
 rename crackmes/{xorsimple => xorcr}/xorcr.c (100%)

diff --git a/.gitignore b/.gitignore
index f5e96db..b1053fc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
-venv
\ No newline at end of file
+venv
+hashcr
\ No newline at end of file
diff --git a/crackmes/hashcrscanf/a.exe b/crackmes/hashcrscanf/a.exe
new file mode 100644
index 0000000000000000000000000000000000000000..99f02100582e79d40c8e62939617621a94e9cdac
GIT binary patch
literal 64521
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

literal 0
HcmV?d00001

diff --git a/crackmes/hashcrscanf/hashcr.c b/crackmes/hashcrscanf/hashcr.c
new file mode 100644
index 0000000..5ab74cf
--- /dev/null
+++ b/crackmes/hashcrscanf/hashcr.c
@@ -0,0 +1,28 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+const char *serial = "\x31\x3e\x3d\x26\x31";
+
+int check(char *ptr)
+{
+	int i;
+	int hash = 0xABCD;
+
+	for (i = 0; ptr[i]; i++)
+		hash += ptr[i] ^ serial[i % 5];
+
+	return hash;
+}
+
+int main()
+{
+	char input[72] = {0};
+    scanf_s("%s", input);
+	int ret = check(input);
+	if (ret == 0xad6d)
+		printf("Win\n");
+	else
+		printf("fail\n");
+
+	return 0;
+}
\ No newline at end of file
diff --git a/crackmes/hashcrscanf/solve.py b/crackmes/hashcrscanf/solve.py
new file mode 100644
index 0000000..0f1a955
--- /dev/null
+++ b/crackmes/hashcrscanf/solve.py
@@ -0,0 +1,44 @@
+import time
+import angr
+
+GREEN = "\033[92m"
+PURPLE = "\033[35m"
+RESET = "\033[0m"
+RED = "\033[31m"
+
+if __name__ == "__main__":
+    # Загрузка бинарного файла
+    print(f"{GREEN}Uploading executable file to angr...{RESET}")
+    proj = angr.Project('a.exe', auto_load_libs=False)
+    print(f"{GREEN}The executable has been uploaded to angr!{RESET}")
+    ENTRY_POINT = 0x140001869
+    TARGET_ADDR = 0x140001881  # Целевой адрес, нахождение на нем означает что программа взломана
+
+    # Создание начального состояния
+    state = proj.factory.entry_state(
+        addr=ENTRY_POINT,
+        add_options={angr.options.ZERO_FILL_UNCONSTRAINED_REGISTERS, 
+                    angr.options.ZERO_FILL_UNCONSTRAINED_MEMORY}
+    )
+
+    # Инициализация стека
+    state.regs.rbp = 0x7ffffffffffffff
+    state.regs.rsp = 0x7ffffffffffffff
+
+    # Симуляция ввода пользователя
+    input_size = 5
+    input_data = state.solver.BVS('input_data', 8 * input_size)
+    state.memory.store(state.regs.rbp - 0x50, input_data)
+
+    simgr = proj.factory.simulation_manager(state)
+    print(f"{GREEN}Start cracking...{RESET}")
+    start_time = time.time()
+    simgr.explore(find=TARGET_ADDR)
+    elapsed = time.time() - start_time
+
+    if simgr.found:
+        input_data = simgr.found[0].solver.eval(input_data, cast_to=bytes)
+        print(f"{GREEN}Success cracked! Input: {PURPLE}{input_data}{PURPLE}{RESET}")
+        print(f"{GREEN}Pwd cracking time = {elapsed}{RESET}")
+    else:
+        print(f"{RED}Fail!{RESET}")
\ No newline at end of file
diff --git a/crackmes/xorsimple/a.exe b/crackmes/xorcr/a.exe
similarity index 100%
rename from crackmes/xorsimple/a.exe
rename to crackmes/xorcr/a.exe
diff --git a/crackmes/xorsimple/solve.py b/crackmes/xorcr/solve.py
similarity index 100%
rename from crackmes/xorsimple/solve.py
rename to crackmes/xorcr/solve.py
diff --git a/crackmes/xorsimple/xorcr.c b/crackmes/xorcr/xorcr.c
similarity index 100%
rename from crackmes/xorsimple/xorcr.c
rename to crackmes/xorcr/xorcr.c