# Sherlock (crypto)
```Sherlock has a mystery in front of him. Help him to find the flag. ```
###ENG[PL](#pl-version)
In the task we get a [book](sherlock.txt).We figured we could compare it to the [original text from Project Gutenberg](sherlock_orig.txt).
We had to make it lowercase and remove the ToC but other than that the comparison was simple:
```pythonimport codecs
def main():    with codecs.open("sherlock.txt", "r") as input_file:        task_data = input_file.read()        task_data.replace("\n\n", "\n")    with codecs.open("sherlock.txt", "r") as input_file:        original_data = input_file.read()        original_data = original_data.lower()        original_data.replace("\n\n", "\n")    result = "".join([task_data[i] for i in range(len(task_data)) if task_data[i] != original_data[i]])    print(result)
main()```
This gave us a long string with `ZEROONEZERO...`.We changed this into a number and interpreted as text:
```pythonfrom crypto_commons.generic import long_to_bytes
    result = result.replace("ZERO", "0")    result = result.replace("ONE", "1")    print(long_to_bytes(int(result, 2)))```
And we got `BITSCTF{h1d3_1n_pl41n_5173}`
###PL version
W zadaniu dostajemy [książkę](sherlock.txt).Postanowiliśmy porównać ją z [oryginalnym tekstem z Project Gutenberg](sherlock_orig.txt).
Musieliśmy zmienić ją na lowercase i usunąć spis treści, ale cała reszta była prosta:
```pythonimport codecs
def main():    with codecs.open("sherlock.txt", "r") as input_file:        task_data = input_file.read()        task_data.replace("\n\n", "\n")    with codecs.open("sherlock.txt", "r") as input_file:        original_data = input_file.read()        original_data = original_data.lower()        original_data.replace("\n\n", "\n")    result = "".join([task_data[i] for i in range(len(task_data)) if task_data[i] != original_data[i]])    print(result)
main()```
To dało nam długi string `ZEROONEZERO...`.Po zmianie tego na liczbę a następnie zinterpretowaniu jako tekst:
```pythonfrom crypto_commons.generic import long_to_bytes
    result = result.replace("ZERO", "0")    result = result.replace("ONE", "1")    print(long_to_bytes(int(result, 2)))```
Dostaliśmy `BITSCTF{h1d3_1n_pl41n_5173}`