Xakep #305. Многошаговые SQL-инъекции
Grep — популярная утилита командной строки, которая находит на вводе строки, отвечающие заданному регулярному выражению. Изначально была создана для операционной системы Unix, а сейчас широко используется во множестве дистрибутивов Linux. Есть версии под Windows и OS X.
Многие ошибочно думают, что grep ищет только по содержимому файлов. Но это не так. Утилита способна проводить поиск по всей поверхности диска, есть там файлы или нет. Другими словами, grep подходит для поиска и восстановления удалённых файлов! Нужно только знать хотя бы небольшой фрагмент содержимого.
Программист Алекс Клеммер — очередной, кто открыл для себя этот факт. Он случайно удалил рабочий файл, но после копания в мануалах всё-таки нашёл те «волшебные» опции grep, которые его спасли. Вот они:
$ grep --binary-files=text --context=x 'stringfromyourfile' \
/dev/whateverPartition > someFile.txt
Эта команда ищет в разделе /dev/whateverPartition строку stringfromyourfile и сохраняет x строк после искомой в текстовый файл. Если указать достаточно большое x и если повезёт, то можно захватить большой кусок файла или весь файл целиком.
Ключевым здесь является флаг --binary-files=text, который даёт команду искать среди бинарных данных на диске.
Кстати, тем же способом можно извлечь определённую информацию со старых, чужих, выброшенных жёстких дисков. Например, удалённые кошельки Bitcoin находятся по известной сигнатуре, которая предшествуют секретному ключу: она общая у всех файлов wallet.dat. Зная ключ и адрес кошелька, деньги наши. Поскольку до 2012 года файлы wallet.dat не шифровались, а монеты тогда стоили совсем дёшево, то практически любой кошелёк с биткоинами будет на вес золота.