First thing I did was figure out that it was a git repo, search Google for how to extract the code, and run
git archive master | tar x -C code
. It asks for 2 prime factors of a number which doesn't have exactly 2 prime factors, from
which it can be assumed that something was wrong with the code.
Running git fsck
(after more Google searching) showed 3 hashes not matching up, which means that the hash of the file contents
(plus header metadata) didn't match the filename. I then read https://git-scm.com/book/en/v2/Git-Internals-Git-Objects (side-note: the Pro Git book is a fantastic introduction to and reference for git).
3 Files are corrupted: sharp.cpp
in each of the 3 commits (see git log
).
Then I tool a leap of faith and assumed that a single byte was wrong (corrupted, hence the SATA controller comment) in each blob, and wrote a script to brute force it. It worked for first one, and then doom had to remind me to propagate the changes: the first commit has an error, and that same error occurs in the 2 next commits. So commit 1 has 1 error, commit 2 has 2 errors, and commit 3 has 3 errors.