Last active
January 26, 2025 20:42
-
-
Save sharpicx/b71a80dfdcf856ba9b4e0a454eecc7c2 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Text; | |
public class HelloWorld | |
{ | |
public static void Main(string[] args) | |
{ | |
string banner = "lIlIlIIIlIIllIlIlIIlIIlllIIlllIIlIIlIIIIlIIlIIlIlIIllIlIllIllllllIIIlIlllIIlIIIIllIllllllIlIllIIlIIlIllIlIIlIIlIlIIIlllllIIlIIlllIIlIllIlIIllIIllIIlIllIlIIllIlIlIIllIllllIllllllIllllIIlIIIllIllIIllllIlIIIIlIllIIIIllIlIIlllIIlIIIllIllIIllllIlIIlllIIlIIlIlIIlIllIIlIlIIllIlIllIllllI"; | |
string pleaseEnterThePasswordKey = "lIlIlllllIIlIIlllIIllIlIlIIllllIlIIIllIIlIIllIlIllIllllllIIllIlIlIIlIIIllIIIlIlllIIllIlIlIIIllIlllIllllllIIIlIlllIIlIllllIIllIlIllIllllllIlIlllllIIllllIlIIIllIIlIIIllIIlIIIlIIIlIIlIIIIlIIIllIllIIllIllllIllllllIllIlIIlIIllIlIlIIIIllIllIIIlIlllIlllll"; | |
string winString = "lIlIlIIIlIllIllIlIllIIIl"; | |
string congratsMessage = "lIllllIIlIIlIIIIlIIlIIIllIIllIIIlIIIllIllIIllllIlIIIlIlllIIIlIlIlIIlIIlllIIllllIlIIIlIlllIIlIllIlIIlIIIIlIIlIIIllIIIllIIllIllllIllIllllllIlIIllIlIIlIIIIlIIIlIlIllIllllllIIlIllllIIllllIlIIIlIIllIIllIlIllIllllllIIIllIIlIIIlIlIlIIlllIIlIIlllIIlIIllIlIlIIIllIIlIIIllIIlIIllIIllIIIlIlIlIIlIIlllIIlIIlllIIIIllIllIllllllIIlllIIlIIIllIllIIllllIlIIlllIIlIIlIlIIlIIllIlIlIIllIllllIllllllIIIlIlllIIlIllllIIllIlIllIllllllIllllIIlIIIllIllIIllllIlIIIIlIllIIIIllIlIIlllIIlIIIllIllIIllllIlIIlllIIlIIlIlIIlIllIIlIlIIllIlIllIllllI"; | |
string incorrectPassword = "lIllIllIlIIlIIIllIIlllIIlIIlIIIIlIIIllIllIIIllIllIIllIlIlIIlllIIlIIIlIllllIllllllIlIlllllIIllllIlIIIllIIlIIIllIIlIIIlIIIlIIlIIIIlIIIllIllIIllIllllIllllllIllIlIIlIIllIlIlIIIIllIllIlllllllIllllIllIllllllIlIlIlllIIIllIllIIIIllIllIllllllIIllllIlIIllIIIlIIllllIlIIlIllIlIIlIIIlllIlIIIl"; | |
Console.WriteLine(asu("lIllllIIlIIIllIllIIllllIlIIIIlIllIIIIllIlIllllIIlIIIllIllIIllllIlIIlllIIlIIlIlIIlIllIIlIlIIllIlI")); | |
} | |
private static bool a(string ch) | |
{ | |
int num = 0; | |
foreach (char c in ch) | |
{ | |
num = (num << 3 ^ (int)(c * '\u0011')); | |
} | |
return (num & 65535) == 23130; | |
} | |
private static bool d(string ch) | |
{ | |
string text = HelloWorld.lol(ch); | |
return text.Contains(HelloWorld.asu("lIllllIIlIIIllIllIIllllIlIIIIlIllIIIIllIlIllllIIlIIIllIllIIllllIlIIlllIIlIIlIlIIlIllIIlIlIIllIlI")); | |
} | |
private static string lol(string a) | |
{ | |
char[] array = a.ToCharArray(); | |
Array.Reverse(array); | |
return new string(array); | |
} | |
private class c | |
{ | |
public static bool b(int a) | |
{ | |
return a >= 8 && a <= 16; | |
} | |
} | |
private static string asu(string a) | |
{ | |
StringBuilder stringBuilder = new StringBuilder(); | |
foreach (char c in a) | |
{ | |
stringBuilder.Append((c == 'I') ? '1' : '0'); | |
} | |
return HelloWorld.bajingan(stringBuilder.ToString()); | |
} | |
private static string bajingan(string a) | |
{ | |
StringBuilder stringBuilder = new StringBuilder(); | |
for (int i = 0; i < a.Length; i += 8) | |
{ | |
string value = a.Substring(i, 8); | |
stringBuilder.Append((char)Convert.ToByte(value, 2)); | |
} | |
return stringBuilder.ToString(); | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from z3 import * | |
import string | |
solver = Solver() | |
f = [BitVec(f"f_{i}", 8) for i in range(16)] | |
length = Int("length") | |
solver.add(length >= 8, length <= 16) | |
ascii_letters = string.ascii_letters | |
solver.add(And([Or(And(f[i] >= ord('a'), f[i] <= ord('z')), And(f[i] >= ord('A'), f[i] <= ord('Z'))) for i in range(16)])) | |
num = BitVecVal(0, 32) | |
for i in range(16): | |
extended_char = ZeroExt(24, f[i]) | |
num = If(i < length, (num << 3) ^ (extended_char * 17), num) | |
solver.add((num & 65535) == 23130) | |
key = [ord(c) for c in "CrazyCrackMe"] | |
reversed_f = [BitVec(f"rev_f_{i}", 8) for i in range(16)] | |
for i in range(16): | |
for j in range(16): | |
solver.add(If(And(i < length, j == length - i - 1), reversed_f[i] == f[j], True)) | |
solver.add(If(i >= length, reversed_f[i] == 0, True)) | |
def contains_subarray(arr, subarray): | |
return Or([And([arr[j + k] == subarray[k] for k in range(len(subarray))]) for j in range(16 - len(subarray) + 1)]) | |
solver.add(contains_subarray(reversed_f, key)) | |
solutions = [] | |
for _ in range(10): | |
if solver.check() == sat: | |
model = solver.model() | |
actual_length = model[length].as_long() | |
result = [chr(model[f[i]].as_long()) for i in range(actual_length)] | |
solutions.append("".join(result)) | |
solver.add(Or([f[i] != model[f[i]] for i in range(actual_length)])) | |
else: | |
break | |
if solutions: | |
for idx, solution in enumerate(solutions, 1): | |
print(f"{idx}: {solution}") | |
else: | |
exit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment