Как сравнить два бинарных файла в windows

I need a tool to compare 2 binaries. The files are quite large. Some freeware or trial tools I found on the Internet are not convenient to use for large files. Can you recommend me some tools?

I need a tool to compare 2 binaries. The files are quite large. Some freeware or trial tools I found on the Internet are not convenient to use for large files. Can you recommend me some tools?

G. Ciardini's user avatar

G. Ciardini

1,1701 gold badge17 silver badges32 bronze badges

asked Nov 17, 2011 at 11:56

mustafa's user avatar

If you want to find out only whether or not the files are identical, you can use the Windows fc command in binary mode:

fc.exe /b file1 file2

For details, see the reference for fc

Jason's user avatar

Jason

8,8085 gold badges35 silver badges35 bronze badges

answered Dec 20, 2012 at 15:59

Mike Woinoski's user avatar

Mike WoinoskiMike Woinoski

2,9631 gold badge15 silver badges15 bronze badges

3

mgutt's user avatar

mgutt

5,6772 gold badges49 silver badges76 bronze badges

answered Nov 17, 2011 at 12:00

Polynomial's user avatar

PolynomialPolynomial

27.3k11 gold badges79 silver badges107 bronze badges

9

Total Commander also has a binary compare option:
go to: File \Compare by content

ps. I guess some people may alredy be using this tool and may not be aware of the built-in feature.

endolith's user avatar

endolith

24.7k33 gold badges126 silver badges191 bronze badges

answered Sep 9, 2013 at 16:39

Dimitry K's user avatar

Dimitry KDimitry K

2,1561 gold badge26 silver badges36 bronze badges

2

I prefer to use objcopy to convert to hex, then use diff.

answered Sep 18, 2013 at 15:21

BobC's user avatar

BobCBobC

1,9283 gold badges22 silver badges26 bronze badges

1

In Cygwin:

$cmp -bl <file1> <file2>

diffs binary offsets and values are in decimal and octal respectively.. Vladi.

answered Jan 10, 2014 at 7:50

Vladi's user avatar

VladiVladi

4454 silver badges5 bronze badges

Бывают случаи, когда у пользователей возникает необходимость проверить два файла на идентичность. Чаще всего с подобной задачей сталкиваются начинающие веб-разработчики и программисты. Отыскивать несоответствия в одинаковых с виду файлах приходится редакторам, корректорам и прочим специалистам, работающим с текстовыми данными.

По идее для этих целей лучше всего использовать специальные утилиты, например WinMerge, но файлы также можно сравнивать с помощью самой обыкновенной командной строки. В командной оболочке всех версий Windows имеется замечательная команда FC. Она позволяет сравнивать между собой любые файлы, причём как текстовые, так и бинарные. Синтаксис этой команды очень прост и выглядит он следующим образом:

FC /ключ [полный путь к первому файлу] [полный путь ко второму файлу]

Список доступных ключей можно просмотреть, набрав и выполнив в консоли CMD команду FC /?. Справка даётся на русском языке, так что вы без труда разберетесь, что к чему.

FC /?

А теперь немного практики. Допустим, у вас есть два файла с кодом PHP и в одном из них предположительно имеются некие различия. Скрипты PHP это обычные текстовые файлы, поэтому в данном случае будем использовать ключ L предназначенный для сравнения текстовых документов в кодировке ASCII. Если скрипт содержит кириллицу, не забудьте перед выполнением команды сравнения выставить в консоли кодировку 1251, иначе на выходе вы получите крякозябры. Смена кодировки выполняется командой chcp 1251.

Смена кодировки chcp 1251

Затем сравниваем файлы:

FC /L D:/1.php D:/2.php

Сравниваем файлы

Различия между файлами выводятся в следующем порядке. Сначала идёт имя первого файла, затем строка, в которой было найдено несовпадение. За ним идёт имя второго файла и точно также указывается различающаяся строка. Если программа находит ещё несколько несоответствий в других строках, всё повторяется. В общей сложности утилита может обнаружить до 100 различий, такое ограничение имеет используемый командой fc внутренний буфер.

При поиске несоответствий в бинарных файлах используется ключ B. При этом сравнение производится побайтово. В принципе, таким способом можно сравнивать любые файлы, ведь все они по сути двоичны, просто при работе с текстовыми форматами FC может ограничиться информацией какой из сравниваемых объектов длиннее и на этом завершить свою работу.

FC /B D:/1.exe D:/2.exe

В данном примере сравниваются два исполняемых файла. Результат такого сравнения будет выглядеть примерно следующим образом:

00000040: 56 BA
00000050: 65 68
00000060: 43 72
00000070: 6U 0A

Поиск несоответствий в бинарных файлах

Если вы раньше никогда не имели дела с шестнадцатеричными редакторами, разобраться со всем этим нагромождением символов будет непросто. В общем так, каждая выведенная в консоли строка это найденное различие. Символы до двоеточия указывают на смещение от начала файла, первое двухзначное число это соответствующий смещению байт в первом файле, второе двухзначное число — соответствующий смещению байт во втором файле.

Шестнадцатеричный редактор

Какими ещё полезными возможностями обладает команда FC? Ну, например поддержкой подстановочных знаков. Если вам нужно сравнить некий файл etalon.exe с другими исполняемыми файлами в текущем каталоге, используйте команду следующего формата:

fc *.exe etalon.exe

Также с помощью подстановочных знаков можно производить пакетное сравнение файлов, расположенных в разных каталогах или разделах жёсткого диска. А что будет, если сравниваемые файлы окажутся полностью идентичными? Утилита выведет лаконичное сообщение — FC:различия не найдены.

Загрузка…

бинарные файлы в Windows можно сравнить стандартной программой fc, команда fc /? выдает справку по параметрам. если разница есть, то покажет, в каких именно байтах, если разницы нет, то так и напишет.

я обычно пользуюсь так: fc /b file1.file file2.file

notepad++
Меню «Дополнения» — «Compare»

diff -q 1Каталог 2Каталог

ЗЫ. Для винды есть порт всех линуховых утилит.

FAR Manager [2.0] с плагином Advanced Compare умеет сравнивать каталоги по содержимому в том числе бесплатнее Windows Commander’a.
Различающиеся файлы будут выделены.

Araxis Merge — он платный но есть триал

Tortoise Merge, часть TortoiseSvn
добавляет в контекстное меню «Diff», если выделены 2 файла.
Бонус, что умеет сравнивать картинки и word-овский документы (просто запускает word, но сделать это проще)

Reasonable NoClone — сравнивает файлы по разным параметрам, оценивает похожесть файлов. (после восстановления данных с убитого диска использовал для удаление дубликатов)

Но она платная

+1 за Total Commander. Сравнивает как папка-папка, так и папка-ftp.
Есть много настроек.

BeyondCompare 3, платная, но того стоит. Много плюшек.

Вот подборка бесплатных программ для сравнения файлов, среди которых отдельного и достойного внимания заслуживают KDIFF3 — утилита может работать сразу с тремя файлами для сравнения или с тремя каталогами — их она тоже умеет сравнивать. http://www.loadboard.ru/index.php?option=com_tag&t…

в свое время написал прогу для слива параметров файлов (md5, размер, даты итп) в папках и подпапках в csv (или просто в текстовик с разделителями) а потом сравниваю эти текстовики в kDiff. Удобство в том что полученный csv легко импортируется в сторонние программы где возможна последующая автоматизация действий в случае если файл изменился или не изменился.

  • 04.08.2021
  • 2 435
  • 0
  • 1
  • 1
  • 0

FC - описание команды и примеры использования

  • Содержание статьи
    • Описание
    • Синтаксис
    • Параметры
    • Примечания
      • Вывод различий между файлами при текстовом сравнении в формате ASCII
      • для двоичного сравнения
      • Использование подстановочных знаков
      • Работа с памятью
    • Примеры использования
    • Справочная информация
    • Добавить комментарий

Описание

FC — Данная команда служит для сравнение двух файлов и вывод различий между ними.

Синтаксис

fc [/a] [/b] [/c] [/l] [/lbn] [/n] [/t] [/u] [/w] [/nnnn] [диск1:][путь1]имяфайла1 [диск2:][путь2]имяфайла2

Параметры

Параметр Описание
/a Задает сокращенный вывод ASCII сравнения. Вместо вывода всех различающихся строк, fc выводит только начальную и конечную строки отличающихся участков
/b Сравнивает файлы в двоичном режиме. Команда fc сравнивает два файла байт за байтом и не пытается сопоставить файлы после найденного отличия. Этот режим используется по умолчанию для сравнения файлов с расширениями: .exe, .com, .sys, .obj, .lib или .bin
/c Сравнивает без учета заглавных и строчных букв
/l Сравнивает файлы в текстовом (ASCII) режиме. Команда fc сравнивает два файла строка за строкой и пытается сопоставить их, после того как найдено отличие. Этот режим используется по умолчанию для сравнения файлов, исключая файлы со следующими расширениями: .exe, .com, .sys, .obj, .lib или .bin
/lbn Задает количество строк n для внутреннего буфера. По умолчанию длина буфера составляет 100 строк. Если количество отличающихся строк в сравниваемых файлах превышает это число, команда fc прекращает сравнение
/n Задает вывод номеров строк при сравнении в текстовом режиме
/t Предотвращение fc от преобразования меток табуляции в пробелы. По умолчанию табуляторы заменяются пробелами с остановкой в каждой восьмой позиции
/u Задает сравнение файлов в текстовом формате Юникод
/w Задает сжатие пробелов и табуляций при сравнении. Если в строке содержится несколько пробелов или табуляций подряд, при использовании ключа /w они будут рассматриваться как один. Когда используется ключ /w, программа fc игнорирует (и не сравнивает) пробелы и табуляции в начале и в конце строки
/nnnn Задает количество совпадающих строк, используемых программой fc при новом сопоставлении файлов. Если количество совпадающих строк в файле меньше nnnn, программа fc будет выводить совпадающие строки как отличающиеся. По умолчанию значение равно 2
[диск1:][путь1]имяфайла1 Задает местоположение и имя первого файла для сравнения. Параметр имяфайла1 является обязательным
[диск2:][путь2]имяфайла2 Задает местоположение и имя второго файла для сравнения. Параметр имяфайла2 является обязательным
/? Отображение справки в командной строке

Примечания

Вывод различий между файлами при текстовом сравнении в формате ASCII

При использовании программы fc для сравнения ASCII, fc отображает различия между двумя файлами в следующем порядке:

  • имя первого файла;
  • строки из параметра имяфайла1, которые отличаются в файлах;
  • первая строка, совпадающая в обоих файлах;
  • имя второго файла;
  • отличающиеся строки из параметра имяфайла2;
  • первая строка совпадения.

Использование /b для двоичного сравнения

/b отображает несоответствия, найденные в течение двоичного сравнения, как показано ниже.xxxxxxxx: yy zzВеличина xxxxxxxx задает относительный шестнадцатеричный адрес пары различающихся байтов, отсчитываемый от начала файла. Адресация начинается с 00000000. Шестнадцатеричные величины yy и zz представляют различающиеся байты из имяфайла1 и имяфайла2 соответственно.

Использование подстановочных знаков

Можно использовать подстановочные знаки (* and ?) в параметрах имяфайла1 и имяфайла2. Если они использованы при задании первого файла имяфайла1, программа fc будет сравнивать все заданные файлы с файлом, указанным в параметре ИмяФайла. Если подстановочные знаки использованы при задании файла имяфайла2, fc при сравнении будет использовать соответствующие значения параметра имяфайла1.

Работа с памятью

При сравнении в текстовом режиме программа fc использует внутренний буфер (достаточный для размещения 100 строк). Если размер файлов больше размера буфера, программа fc будет сравнивать те части, которые поместились в буфер. Если fc не обнаруживает совпадения в загруженных частях файлов, программа остановится и будет выведено следующее сообщение:Не удается выполнить синхронизацию строк. Слишком много различий между файлами.Если же выполняется двоичное сравнение и размер файлов превосходит размер доступной памяти, fc выполняет сравнение полностью. При необходимости, файлы будут считываться с диска по частям. Вывод команды при этом не будет отличаться от вывода в случае полного размещения файлов в памяти.

Примеры использования

Чтобы сравнить два текстовых файла с именами Monthly.rpt и Sales.rpt и вывести результат в сокращенном формате, введите:

fc /a monthly.rpt sales.rpt

Для двоичного сравнения двух пакетных файлов Profits.bat и Earnings.bat введите:

fc /b profits.bat earnings.bat

Результат будет иметь следующий вид:

00000002: 72 43 00000004: 65 3A 0000000E: 56 92 00000012: 6D 5C 00000013: 0D 7C 00000014: 0D 0A 00000015: 0A 0D 0000001E: 43 7A 0000001F: 09 0A 00000022: 72 44 ... ... ... 000005E0: 00 61 000005E1: 00 73 000005E2: 00 73 000005E3: 00 69 000005E4: 00 67 000005E5: 00 6E 000005E6: 00 6D 000005E7: 00 65 000005E8: 00 6E FC: Earnings.bat длиннее, чем Profits.bat

Если файлы Profits.bat и Earnings.bat одинаковы, fc выводит на экран следующее сообщение:

FC: различия не найдены

Для сравнения каждого файла .bat в текущем каталоге с файлом New.bat введите:

fc *.bat new.bat

Для сравнения файла New.bat на диске C с файлом New.bat на диске D введите:

fc c:new.bat d:*.bat

Для сравнения каждого пакетного файла в корневом каталоге диска C с файлом с таким же именем в корневом каталоге на диске D введите:

fc c:*.bat d:*.bat

Справочная информация

Как сравнить два файла, в чем у них различия (текст, Word/Excel-документы, Exe-файлы)

sravnit-faylyiПриветствую всех читателей!

Сегодняшняя заметка будет относиться к офисной тематике. (а точнее: речь пойдет о сравнении нескольких документов между собой).

Представьте , у вас есть парочка документов, в которых частично различается текст (например, где-то уже исправленный, а где-то «старый», с ошибками. ). И теперь нужно найти между ними различия, принять их к сведению, и собрать из 2-х файлов один.

Можно, конечно, сориентироваться по дате — однако, далеко не всегда такой подход будет уместен. Но вот если бы какая-то программа нашла и выделила несовпадающие символы (строки). это было бы здорово! 👌

Собственно, о нескольких подобных примерах и пойдет речь в этой заметке.

ускорение ПК

Нюансы: о каких файлах идет речь

Текстовые файлы

И так, начать заметку (я думаю) стоит с самых обычных текстовых файлов (коих большинство). Задача перед нами будет следующая : есть два почти одинаковых текстовых файла (в формате TXT), и нужно найти в них отличные строки и символы, и подсветить их (о чем я и сказал выше).

Для работы нам понадобится блокнот 👉 Notepad++ (ссылка на офиц. сайт) . Установка у программы стандартная (поэтому ее опускаю).

Далее делаем следующее:

    запускаем Notepad++ и открываем меню «Плагины / управление плагинами» — в списке плагинов находим «Compare» и соглашаемся на его установку (см. пример ниже 👇);

Устанавливаем плагин в Notepad++

Устанавливаем плагин в Notepad++

Открываем два нужных файла и жмем кнопку сравнения

Открываем два нужных файла и жмем кнопку сравнения

Места, где есть различия, были выделены!

Места, где есть различия, были выделены! // Notepad++

Документы Word / Excel (+ текстовые в т.ч.)

Начну с MS Word.

Программа универсальная и позволяет сравнивать как документы формата Docx, так и обычные текстовые файлы (TXT, RTF и пр. форматы).

Делается это так (на примере Word 2019):

    сначала необходимо открыть оба файла в Word (как правило достаточно по нужному файла кликнуть правой кнопкой мыши и в меню указать, что требуется открыть в Word, см. пример ниже 👇) ;

Открываем 2 файла в Word

Открываем 2 файла в Word

Рецензирование - Сравнить (Word 2019)

Рецензирование — Сравнить (Word 2019)

Выбор документов

Что получается в итоге

Что получается в итоге // Word подсчитал сколько было мест с исправлениями (в моем случае 8!).

👉 Что касается Excel

С одной стороны — в Excel есть десятки способов, как можно сравнить две таблички между собой, с другой — в зависимости от конкретной задачи в каждом случае нужно «всё подгонять» под себя (универсального способа на все случаи жизни — нет!). 👌

Ниже приведу лишь парочку наиболее простых вариантов (разумеется, есть много др. способов решения).

    для начала необходимо скопировать (сочетания в помощь: Ctrl+C / Ctrl+V) обе таблички на один лист в Excel (в качестве примера у меня табличка с именами 👇);

Пример двух табличек

Пример двух табличек

Выделяем таблицы, и вкл. повторяющиеся значения

Выделяем таблицы, и вкл. повторяющиеся значения

Все отличия были найдены!

Все отличия были найдены!

В Excel есть одна довольно мощная функция ВПР — она позволяет сравнивать 2 таблицы и при нахождении чего-то «несовпадающего» — выполнять условие (скажем, подставить значение из одной таблицы в другую). О том, как с ней работать — показано в одной моей прошлой статье (парочка ссылок ниже).

👉 В помощь!

1) Excel: как сравнить 2 таблицы с помощью функции ВПР — см. простейший пример.

2) Повторяющиеся значения в Excel: как удалить дубликаты / уникальные строки.

Др. бинарные файлы Exe, Com и пр. (возможно без расширения)

Тема очень специфичная, и я включил ее в заметку только для общей информации.

Сравнить два EXE-файла (или любых других, у которых нет расширения, и вы даже не знаете их тип данных) можно с помощью спец. редактора шестнадцатеричных, десятичных и бинарных файлов. Например, один из доступных для начинающих — это 👉 Hex Editor Neo (ссылка на сайт разработчика).

Как с ней работать : сначала необходимо запустить программу и открыть в ней оба файла (это стандартно, как и в др. софте). Далее перейти в раздел «Tools / File Comparison / Compare Files» . 👇

Hex Editor Neo — инструмент сравнения

Hex Editor Neo — инструмент сравнения

В результате Hex Editor Neo автоматически разделит экран поровну на две части и подсветит несовпадающий код. 👇

Пример сравнения

Разумеется, для дальнейшего редактирования и более-менее осмысленной работы — необходимы определенные знания / либо точно знать, какой кусок нужно удалить, поменять (можно, конечно, поэкспериментировать. но результаты могут быть самыми разными — от ошибок при запуске отредактированного файла, до «вылетов» синих экранов).

Картинки

Вообще, две картинки чаще всего сравнивают просто на «глазок», ставя их одну к одной. Впрочем, для этого можно использовать и спец. утилиты — например, те, которые используются для поиска дубликатов файлов. Я на страницах блога как-то упоминал о них, ссылка ниже в помощь.

Обратите внимание , программа Image Comparer 👇 автоматически выделят на картинках те области, к которым стоит присмотреться (либо есть различие, либо они не четкие и нельзя точно сказать наверняка. ).

Image Comparer - скрин работы приложения (от разработчика)

Image Comparer — скрин работы приложения (от разработчика)

Дополнения по теме (👇), разумеется, приветствуются!

Как с помощью командной строки сравнить два текстовых или бинарных файла

Б ывают случаи, когда у пользователей возникает необходимость проверить два файла на идентичность. Чаще всего с подобной задачей сталкиваются начинающие веб-разработчики и программисты. Отыскивать несоответствия в одинаковых с виду файлах приходится редакторам, корректорам и прочим специалистам, работающим с текстовыми данными.

По идее для этих целей лучше всего использовать специальные утилиты, например WinMerge, но файлы также можно сравнивать с помощью самой обыкновенной командной строки . В командной оболочке всех версий Windows имеется замечательная команда FC. Она позволяет сравнивать между собой любые файлы, причём как текстовые, так и бинарные. Синтаксис этой команды очень прост и выглядит он следующим образом:

FC /ключ [полный путь к первому файлу] [полный путь ко второму файлу]

Список доступных ключей можно просмотреть, набрав и выполнив в консоли CMD команду FC /? . Справка даётся на русском языке, так что вы без труда разберетесь, что к чему.

FC /?

А теперь немного практики. Допустим, у вас есть два файла с кодом PHP и в одном из них предположительно имеются некие различия. Скрипты PHP это обычные текстовые файлы , поэтому в данном случае будем использовать ключ L предназначенный для сравнения текстовых документов в кодировке ASCII. Если скрипт содержит кириллицу, не забудьте перед выполнением команды сравнения выставить в консоли кодировку 1251, иначе на выходе вы получите крякозябры. Смена кодировки выполняется командой chcp 1251 .

Смена кодировки chcp 1251

Затем сравниваем файлы:

FC /L D:/1.php D:/2.php

Сравниваем файлы

Различия между файлами выводятся в следующем порядке. Сначала идёт имя первого файла, затем строка, в которой было найдено несовпадение. За ним идёт имя второго файла и точно также указывается различающаяся строка. Если программа находит ещё несколько несоответствий в других строках, всё повторяется. В общей сложности утилита может обнаружить до 100 различий, такое ограничение имеет используемый командой fc внутренний буфер.

При поиске несоответствий в бинарных файлах используется ключ B. При этом сравнение производится побайтово. В принципе, таким способом можно сравнивать любые файлы, ведь все они по сути двоичны, просто при работе с текстовыми форматами FC может ограничиться информацией какой из сравниваемых объектов длиннее и на этом завершить свою работу.

FC /B D:/1.exe D:/2.exe

В данном примере сравниваются два исполняемых файла. Результат такого сравнения будет выглядеть примерно следующим образом:

00000040: 56 BA
00000050: 65 68
00000060: 43 72
00000070: 6U 0A

Поиск несоответствий в бинарных файлах

Если вы раньше никогда не имели дела с шестнадцатеричными редакторами, разобраться со всем этим нагромождением символов будет непросто. В общем так, каждая выведенная в консоли строка это найденное различие. Символы до двоеточия указывают на смещение от начала файла, первое двухзначное число это соответствующий смещению байт в первом файле, второе двухзначное число — соответствующий смещению байт во втором файле.

Шестнадцатеричный редактор

Какими ещё полезными возможностями обладает команда FC? Ну, например поддержкой подстановочных знаков. Если вам нужно сравнить некий файл etalon.exe с другими исполняемыми файлами в текущем каталоге, используйте команду следующего формата:

fc *.exe etalon.exe

Также с помощью подстановочных знаков можно производить пакетное сравнение файлов, расположенных в разных каталогах или разделах жёсткого диска. А что будет, если сравниваемые файлы окажутся полностью идентичными? Утилита выведет лаконичное сообщение — FC:различия не найдены.

Hex-редакторы vs. malware: Выбираем шестнадцатеричный редактор для анализа бинарников

После окончания цикла статьей «Лучшие инструменты пентестера» в редакцию пришло немало писем с просьбой сделать подборку hex-редакторов. Интерес, конечно, представляет не возможность редактировать бинарные данные, а дополнительные фичи вроде автоматического распознавания структур данных и дизассемблирования кода. Чтобы сделать обзор, мы выяснили мнения людей, которым чаще других приходится ковыряться с такими инструментами – вирусных аналитиков. И вот что они нам рассказали.

Любой hex-редактор позволяет исследовать и модифицировать файл на низком уровне, оперируя с битами и байтами. Содержание файла представляется в шестнадцатеричной форме. Это базовый функционал. Однако некоторые редакторы предлагают пользователям намного большее, позволяя разобраться, собственно, что есть что в том непонятном наборе символов, который появляется при открытия файла. Для этого автоматически извлекаются ASCII и Unicode строки, осуществляется поиск известных паттернов, выполняется распознавание основных структур данных и многое другое. Шестнадцатеричных редакторов довольно много, но если мы решили рассмотреть их в контексте исследования образцов малвари, то легко выделить некоторые из них. Лишь немногие оказываются реально полезными для анализа зловредного кода и исследования зараженных документов (скажем, PDF).

McAfee FileInsight

FileInsight – это бесплатный hex-редактор для Windows от компании McAfee Labs. Продукт, само собой, выполняет весь стандартный функционал, сопутствующий подобному софту, предлагая удобный интерфейс для просмотра и редактирования файлов в шестнадцатеричном и текстовом режимах. Но это лишь капля в море, если посмотреть на весь его функционал. Начать стоит с того, что FileInsight способен парсить структуру исполняемых бинарников для Windows (PE файлов), а также OLE-объектов Microsoft Office. Мало этого, пользователю предлагается встроенный x86 дизассемблер. Достаточно выбрать часть файла, которую хочешь просмотреть в виде читаемого кода, и FileInsight покажет этот фрагмент как листинг ассемблерных инструкций. Дизассемблер особенно полезен, когда ищешь шеллкод в зловредных файлах. Среди других опций, которые придутся по душе реверсерам – возможность импортировать объявления структур. Для этого программе достаточно указать заголовочный файл с объявлениями вроде:

struct ANIHeader DWORD cbSizeOf; // Num bytes in AniHeader
DWORD cFrames; // Number of unique Icons
DWORD cSteps; // Number of Blits
>;

В этом случае программа сама будет парсить подобные конструкции. Впрочем, и по умолчанию предлагается немало интуитивных алгоритмов для обработки кода. Речь, прежде всего, идет о декодировании многих методов обфускации (xor, add, shift, Base64 и т.д.) – встроенные скрипты щелкают подобную криптозащиту на раз-два. Тут надо заметить, что в качестве объекта исследования необязательно должен быть бинарник, это может быть и обычная веб-страница, вызывающая подозрения. Многие действия программа позволяет автоматизировать с помощью простых сценариев на JavaScript или модулей на Python, которых написано уже немало. Увы, при всех достоинствах, у FileInsight есть и серьезный недостаток, выражающийся в невозможности обрабатывать большие файлы. К примеру, если попытаешься скормить утилите файл размером в 400-500 Мб, вылетает ошибка «Failed to open document».

Hex Editor Neo

Существует две версии этого шестнадцатеричного редактора от компании HDD Software – простая бесплатная и продвинутая коммерческая версия. Freeware-вариант – это добротный, но мало чем примечательный HEX-редактор, имеющий классный настраиваемый интерфейс с поддержкой разных цветовых схем. Не более того. А вот профессиональная версия Hex Editor Neo предоставляет несколько полезных опций, которые могут быть крайне полезны при анализе бинарников. К примеру, пользователь получает возможность декодирования кода, закриптованного с помощью наиболее общих алгоритмов. Помимо этого появляется возможность просмотра и редактирования локальных ресурсов типа NTFS-потоков, локальных дисков, памяти процесса, а также оперативки. В самой полной версии появляется и поддержка скриптового языка, позволяющая автоматизировать многие процессы с помощью сценариев на VBScript и JavaScript. Но самый смак в том, что к твоим услугам предоставляется встроенный дизассемблер, который работает и с x86, и с x64, и с .NET-бинарниками! Еще одна фича – быстрое создание патчей, основанное на сравнении двух бинарников. Звучит впечатляюще, но лучше ли он, чем FileInsight? Скорее, нет. FileInsight в целом выглядит более функционально. С другой стороны, любая, даже бесплатная версия Hex Editor Neo отлично работает даже с очень большими файлами и позволяет искать ASCII и Unicode-строки. Дизассемблер здесь не ограничивается одной лишь x86 платформой, а встроенный редактор ресурсов очень удобен. Есть над чем подумать.

FlexHex

FlexHex – это мощный коммерческий hex-редактор от компании Heaventools Software, который включает многие из функций, доступных в Hex Editor Neo. Единственное, чего здесь нет – это, пожалуй, поддержка скриптов. Зато этот полнофункциональный редактор одинаково хорошо обрабатывает бинарники, OLE-файлы, физические диски и альтернативные NTFS-потоки. Последнее особенно важно, потому что FlexHex позволяет редактировать те данные, которые другие редакторы могут даже не увидеть. К тому же сразу чувствуется ориентированность на работу с большими массивами информации: какой бы размер ни был у файла, навигация по нему осуществляется без каких-либо лагов и тормозов. Для еще большего удобства работает система удобных закладок. При этом FlexHex непрерывно ведет историю всех операций – можно отменить любое действие, просто выбрав его из списка изменений (undo-list не ограничен)! В FlexHex поддерживаются все необходимые операции с бинарными данными, поиск ASCII и Unicode-строк. Если необходимо обрабатывать структуру с заранее известным форматом, задать ее параметры не составит труда с помощью специальных инструментов. В результате получаем отличный hex-редактор, но все-таки сильно уступающий тому же FileInsight. Единственная примечательная опция – это обработка OLE-файлов, но и тут есть проблемы. Несколько раз при попытке открыть зараженный OLE, программа вылетала с ошибкой «The docfile has been corrupted».

010 Editor

010 Editor – известный коммерческий продукт, разработанный SweetScape Software. Если сравнивать его с предыдущими тремя инструментами, то он умеет все: поддерживает работу с очень большими файлами, предоставляет классные возможности по оперированию с данными, позволяет редактировать локальные ресурсы, имеет систему скриптинга для автоматизации рутинных действий (более 140 различных функций к твоим услугам). А еще у 010 Editor есть изюминка, уникальная фишка. Редактор уделывает всех благодаря возможности парсить различные форматы файлов, используя собственную библиотеку шаблонов (так называемые Binary Templates). Вот здесь ему нет равных. Над шаблонами работают множество энтузиастов по всему миру, забивая различные структуры форматов и данных. В результате процесс навигации по различным форматам файлов становится прозрачным и понятным. Это касается в том числе и обработки бинарников для винды (PE файлам), файлов-ярлычков Windows (LNK), Zip-архивов, файлов Java-классов и многого другого. Всю прелесть этой фишки многие смогли осознать, когда известный специалист по безопасности Didier Stevens создал для 010 Editor шаблон для парсинга PDF-файлов. Вкупе с другими утилитами это серьезно упростило анализ зараженных PDF-документов, которые последние полгода не перестают удивлять количеством мест, откуда можно эксплуатировать программу-читалку. Добавляем сюда классный инструмент для сравнения бинарников, калькулятор с C-подобным синтаксисом, конвертирование данных между ASCII, EBCDIC, Unicode-форматами, и получаем очень привлекательный инструмент с уникальными фишками.

Hiew, в плане способа распространения, мало чем отличается от своих коллег – это тоже коммерческий продукт, который разработал наш соотечественник Евгений Сусликов. Имеющая долгую историю, программа сильно полюбилась многим специалистам по информационной безопасности. Тому есть вполне очевидные причины – мощные возможности для исследования и редактирования структуры и содержания исполняемых файлов как винды (PE), так и бинарников для Linux (ELF). Другая очень полезная фича для реверсинга – встроенный x86-64 ассемблер и дизассемблер. Последний даже поддерживает инструкции ARM. Не надо говорить, что редактор отлично переваривает большие файлы и позволяет редактировать логические и физические диски. Многие задачи легко автоматизируются за счет системы клавиатурных макросов, скриптов и даже API для разработки расширений (Hiew Extrenal Modules). Но прежде чем рваться в бой, учти – интерфейс Hiew представляет собой DOS-подобное окно, работать с которым с непривычки довольно неудобно. Зато можешь прочувствовать на себе всю прелесть олдскула.

Radare

Radare – это набор бесплатных утилит для Unix-платформы, которые предоставляют классные возможности для редактирования файлов в HEX-режиме. В него входит непосредственно сам hex-редактор (radare) с возможностью открытия локальных и удаленных файлов. Программа анализирует исполняемые файлы различных форматов, как линуксовых (ELF), так и виндовых (PE). Помимо редактирования в пакете Radare есть инструмент для сравнения бинарных файлов (radiff) и встроенный ассемблер/дизассемблер. А лично мне пару раз пригодился инструмент для генерации шеллкодов (rasc). Любые операции легко можно автоматизировать и подогнать под себя за счет скриптовой системы. Из минусов, опять же, можно отметить отсутствие GUI-интерфейса – все действия осуществляются из командной строки, а полноценно работать с утилитами получится, только прочитав документацию. С другой стороны на сайте есть наглядные скринкасты, демонстрирующие как основные моменты, так и маленькие секреты (вроде подключения Python-плагина).

Так что же выбрать?

Мы рассмотрели несколько мощных hex-редакторов, которые включают в себя полезные опции для анализа подозрительных файлов. Из всех продуктов серьезно выделяется FileInsight, который при всем своем функционале (а он действительно впечатляет) остается бесплатным. 010 Editor предоставляет большое количество шаблонов для обработки самых разных файлов, в том числе PDF-документов. Это мега-фишка, которой нельзя пренебрегать. Эти два редактора я использую постоянно; для работы аналитика, пожалуй, они подходят лучше всего. Если говорить о работе под Unix-платформой, то, конечно, нельзя забывать о Radare. Пакет предлагает очень мощные возможности, хотя и сложен в использовании из-за того, что работает из командной строки. Не очень дружелюбен и Hiew, хотя его возможности, безусловно, позволяют выполнять самые разные операции с бинарниками. К тому же, Hiew – это выбор большого количество настоящих профи, а это дорогого стоит (и многое значит). Что касается Hex Editor Neo, то его стоит взять на вооружение, если тебя интересует возможность дизассемблировать x86, x64 и .NET код.

Веб-мастерам или владельцам сайтов часто бывает необходимо сравнить два файла по содержимому. Из этой статьи вы узнаете как сравнить два файла между собой. Здесь описаны все известные мне способы для сравнения текстовых файлов и скрипты (html, css, php и так далее).

Meld — графический инструмент для получения различий и слияния двух файлов, двух каталогов. Meld — визуальный инструмент сравнения и объединения файлов и каталогов для Linux. Meld ориентирован, в первую очередь, для разработчиков. Однако он может оказаться полезным любому пользователю, нуждающемуся в хорошем инструменте для сравнения файлов и директорий.

В Meld вы можете сравнивать два или три файла, либо два или три каталога. Вы можете просматривать рабочую копию из популярных систем контроля версий, таких, таких как CVS, Subversion, Bazaar-NG и Mercurial. Meld представлен для большинства linux дистрибутивов (Ubuntu, Suse, Fedora и др.), и присутствует в их основных репозиториях.

# apt install meld

Meld существует и под Windows, но я не рекомендую его использовать в этой операционной системе.

Бесплатная программа WinMerge позволяет сравнивать не только содержимое файлов, она также сравнивает содержимое целых папок. WinMerge является Open Source инструментом сравнения и слияния для Windows. WinMerge может сравнивать как файлы, так и папки, отображая различия в визуальной текстовой форме, которые легко понять и обработать.

После установки, открываете пункт меню «Файл» — «Открыть». Выбираете файлы для сравнения. Для этого нажимаете на кнопку «Обзор» и выбираете файл. Выбрав файлы, нажимаете на кнопку «ОК».

В WinMerge можно также редактировать файлы. После закрытия окна сравнения, программа предложит сохранить изменения в файлах.

diff — утилита сравнения файлов, выводящая разницу между двумя файлами.

Kompare — отображает различия между файлами. Умеет сравнивать содержимое файлов или каталогов, а также создавать, показывать и применять файлы патчей. Kompare — это графическая утилита для работы с diff, которая позволяет находить отличия в файлах, а также объединять их. Написана на Qt и рассчитана в первую очередь на KDE. Вот ее основные особенности:

Способ 5. Сравнение файлов в программе Total Commander

В Total Commander существует инструмент сравнения файлов по содержимому, где можно не только сравнить содержимое, но и редактировать его и копировать из одного файла в другой.

После запуска Total Commander – в одной из панелей выбираете (клавиша Insert) первый файл для сравнения – во второй панели открываете папку со вторым файлом и ставим на него курсор. Вызываем программу для сравнения: «Файлы→Сравнить по содержимому».

Для внесения изменений в файл достаточно нажать на кнопку «Редактировать». В программе доступны функции копирования и отката, поиска и изменение кодировки. Если вы внесли изменения в файл, то после закрытия окна сравнения, будет предложено сохранить изменения.

Notepad++ не умеет сравнивать файлы. Для появления этого функционала в Notepad++ нужно установить плагин «Compare».

Запускаете редактор – переходите в пункт меню «Плагины» — «Plugin Manager» — «Show Plugin Manager». В новом окне выбираете плагин «Compare» и жмёте кнопку «Install».

После установки плагина откройте два файла и выбирите меню «Плагины» — «Compare» — «Compare (Alt+D)». Результат сравнения файлов будет представлен в отдельных панелях. Напротив строк, в которых найдены отличия будет стоять предупреждающий знак.

Способ 7. Сравнение файлов с помощью командной строки Windows

Сравнение с помощью командной строки Windows (cmd.exe) не позволяет редактировать файлы, но просто сравнить содержимое файлов, используя этот способ, вы можете.

Для вызова командной строки Windows перейдите «Пуск» — «Все программы» — «Стандартные» — «Командная строка» или нажмите клавиш «Windows+R», введите cmd и нажмите клавишу Enter.

В командной строке введите команду:

fc /N путь к первому файлу путь ко второму файлу

Unix утилита comm входит в стандартную поставку всех Unix- дистрибутивов, таких как FreeBSD, GNU/Linux (пакет GNU Coreutils) и другие.

Программа comm используется для построчного сравнения двух текстовых файлов с отсортированными по алфавиту строками, в соответствии с используемой локалью. Для сортировки можно использовать утилиту sort.

При вызове без параметров рассматриваемая утилита будет выводить строки в трех столбцах: первый столбец будет содержать строки, присутствующие лишь в файле 1, второй столбец — строки, присутствующие лишь в файле 2, а третий столбец — строки, присутствующие в обоих файлах. Утилита поддерживает параметры -1, -2 и -3, позволяющие не выводить столбцы под соответствующими номерами. Статус завершения работы утилиты не зависит от результата распределения строк по столбцам; в случае успешного распределения строк утилита завершает работу с нулевым статусом, в случае возникновения любой ошибки — с ненулевым.

Базовый синтаксис команды выглядит следующим образом:

$ comm [параметры] <файл 1> <файл 2>

Параметры запуска: -1 Подавить вывод первой колонки; -2 Подавить вывод второй колонки; -3 Подавить вывод третьей; -i Нечувствительное к регистру сравнение строк.

Примеры запуска утилиты comm для сравнения двух файлов по содержимому:

  1. comm -1 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’

  2. comm -2 file1 file2 сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’

  3. comm -3 file1 file2 сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

  4. запуск comm с предварительной сортировкой

    comm <(sort file1.txt) <(sort file2.txt)
  5. В текстовых файлах часто встречаются нежелательные символы, такие как символ возврата каретки, символ конца строки в стиле Windows, символов пробела или табуляции. Самым надежным вариантом было бы отфильтровать все такие нежелательные символы, а поскольку данные являются строго числовыми, это довольно легко сделать, например, с помощью sed (пример вырезания нежелательных символов

    sed 's/[^0-9]//g' < input > output

    . В итоге получаем такую команду:

    comm <(sed 's/[^0-9]//g' file1.txt | sort) <(sed 's/[^0-9]//g' file2.txt | sort)

Понравилась статья? Поделить с друзьями:
  • Как спрятать ярлык на рабочем столе windows 10
  • Как спрятать файл на компьютере windows 10
  • Как спрятать файл в картинке windows
  • Как спрятать учетную запись windows 10
  • Как спрятать устройство в диспетчере устройств windows