Skip to content

Instantly share code, notes, and snippets.

@sharpicx
Last active January 26, 2025 20:42
Show Gist options
  • Save sharpicx/b71a80dfdcf856ba9b4e0a454eecc7c2 to your computer and use it in GitHub Desktop.
Save sharpicx/b71a80dfdcf856ba9b4e0a454eecc7c2 to your computer and use it in GitHub Desktop.
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();
}
}
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