Поиск определенного волшебного байта в океане файлов

Я хочу знать, как я могу искать определенный тип файла: Я ввел сервер SSH, и я пытаюсь искать a .jpg файл, но владелец сервера (мой учитель) удалил все расширения.

Я попробовал grep -lr "JFIF" и я нашел много каталогов с тем же именем файла, таким образом, я вскочил в случайный каталог, который был найден с grep команда и я пытались использовать cat команда на нем, но терминал не могла показать весь двоичный файл.

Также strings команда заблокирована на ssh сервере, мой учитель сказал, что необходимо найти jpg файл и что этот файл содержит порядковый номер (SN), но я понятия не имею, где найти его.

Если Вы, парни хотят кардиналов SSH, я буду рад выделить их Вам, так или иначе мой учитель, сказали, что можно использовать file команда, чтобы сделать это, но я не знаю, как сделать это.

BTW: он сказал (SN)

2
задан 11 February 2016 в 21:20

4 ответа

В первую очередь, я хочу благодарить @incBrain и @Serg для того, чтобы не отвечать на мой вопрос непосредственно, который помог мне понять много новых вещей :).

Моя задача находила определенное .jpg файл, который имеет, это - удаленное расширение, первая вещь I, хотя из .jpg волшебный байт , который был JFIF, и с @incBrain Инструкциями я смог создать эту команду

find / -exec file {} \; | grep "JFIF"

, что линейные тракты эти find команда к file команда с помощью -exec затем получают вывод оба find & file команды и передача это как вход через символ вертикальной черты | для эти grep команда, которая показывает только файлы, которые содержат JFIF в их двоичном файле иначе .jpg files.

Моя проблема на самом деле находила определенный порядковый номер, сначала я, хотя это, порядковый номер включен в двоичный файл файла, но это было неправильно, затем сумасшедшее, хотя прибыл по моему мнению

, О! почему не делают я вижу то, на что похоже изображение, я имею в виду, не могу ли я найти, что порядковый номер, получая изображение был бы хорошей вещью

, и я искал Интернет хороший способ передать файлы от SSH в мою машину, и я нашел этот блок кода, который удался!

scp user@example.com:/home/example/file.txt /Local_Directory

я надеюсь, что этот ответ помогает кому-то в будущем :).

4
ответ дан 2 December 2019 в 01:25

Я попытаюсь дать Вам некоторые подсказки, таким образом, можно будет решить HW сами.

Следуют, это ступает:

  1. читает руководство file путем выполнения man file.
  2. Затем испытывают его file somefile и видят то, что происходит
  3. Попытка работать file на различных типах файлов
  4. К настоящему времени, необходимо смочь понять, как узнать, является ли некоторый файл изображением jpeg или нет.
  5. теперь читает руководство для find (или используйте Google, чтобы узнать, как использовать его для нахождения всех файлов в некотором каталоге, и все подкаталоги)
  6. теперь узнают, как использовать -exec опция find для соединения его с ранее используемым file команда
  7. Теперь, необходимо смочь узнать типы файлов всех файлов в необходимом каталоге и перечислить их
  8. Теперь считанный о каналах | и grep команда, чтобы узнать, как отфильтровать только для файлов JPEG.
12
ответ дан 2 December 2019 в 01:25

Одно возможное решение могло быть этим: используйте find, который рекурсивно перечисляет регулярные файлы (-type f) и работает file команда на каждого из них. Вывод перенаправления к grep для отфильтровывания типов файлов.

Однако здесь, я хотел бы сделать что-то больше забавы, чем это; более неловкий, но больше забавы.

$ find .  -maxdepth 1 -type f -printf "%f\t" -exec hexdump -n8 {} \;  | awk '/d8ff e0ff 1000 464a/{print $1}'

, Как Вы можете или не можете знать, каждый файл имеет первые 8 байтов любого файла, определяют тип файла. Таким образом с помощью find мы ищем все регулярные файлы, печатаем, это - имя, но затем выполните hexdump для извлечения первых 8 байтов, и позволять awk отфильтровывают только те имена файлов, которые имеют те первые 8 байтов.

Вот маленькое доказательство:

$ hexdump -n 10 1450763029649.jpg               
0000000 d8ff e0ff 1000 464a 4649               
000000a

$ hexdump  -C -n 10 1450763029649.jpg           
00000000  ff d8 ff e0 00 10 4a 46  49 46                    |......JFIF|
0000000a
2
ответ дан 2 December 2019 в 01:25
file * | grep -i "jpeg"

Это перероет каждый файл в каталоге и возвратится, это - тип файла. Через Канал | эти результаты затем перерыты grep для нахождения файла с типом файла "jpeg" или в основном .jpg файла.

0
ответ дан 2 December 2019 в 01:25

Другие вопросы по тегам:

Похожие вопросы: