Команды SFK


    1        2        3        4        5        6        7        8        9        10    

Раздел 3. Conversion - Преобразование
bin-to-src | chars | crlf-to-lf | csvtotab | dec | decode | detab | encode | entab | hex | hexdump | hextobin | join | lf-to-crlf | oload | scantab | split | tabtocsv | utoa | uuencode | wtoa | wtou |


Help:   Рус   |   Eng        Refer:   Рус   |   Eng  

Команда: hextobin

Преобразование шестнадцатеричных текстовых списков ascii в двоичные

Позволяет также выполнять предварительную фильтрацию входных данных.

sfk ... +hextobin outfile преобразует строки текста, содержащие шестнадцатеричный дамп, в двоичный

Команда только для цепочки - hextobin можно использовать только после другой команды, обычно filter, которая считывает и подготавливает входные данные.

ПАРАМЕТРЫ

-fuzzy - игнорировать символы > < и #

-verbose - показать статистику преобразования

Поддерживаемые входные форматы:

  • - если >...< найдено, то используются только шестнадцатеричные данные внутри него
  • - если # найден, то используются только шестнадцатеричные данные
  • - иначе используются любые шестнадцатеричные символы, а с опцией fuzzy любые символы > < или # игнорируются
  • - пробелы в начале строки игнорируются

    1. sfk hexdump - формат с разделителями в виде полных скобок:

       :file test.dat
        >6578616D 706C6520 77697468 206E6F6E< example with non 00000000
        >20616C6E 756D0D0A 63686172 61637465<  alnum..characte 00000010
        >73202D2B 28295C2F 2E0D0A<            s -+()\/...      00000020
    

    2. sfk postdump - минимальный формат для форумов и вики:

    :file test.dat
    65 78 61 6D 70 6C 65 20 77 69 74 68 20 6E 6F 6E # example.with.non 0000
    20 61 6C 6E 75 6D 0D 0A 63 68 61 72 61 63 74 65 # .alnum..characte 0010
    73 20 2D 2B 28 29 5C 2F 2E 0D 0A                # s..........      0020
    

    3. Любой текст с шестнадцатеричными данными между ними, который не содержит символов > < или # (иначе необходимо использовать -fuzzy):

       --== 6578616D 706C6520 77697468 ==--
       // 0x65, 0x78, 0x61, 0x6D ::
    

    Ограничение длины входной строки:
    текстовые строки во входном файле не должны быть длиннее 4000 символов, иначе фильтр sfk разделит их, в результате чего hextobin выдаст ошибки типа «неправильный шестнадцатеричный формат».

    ПРИМЕРЫ

    sfk filter dump.txt +hextobin out.dat Преобразование файла dump.txt и запись в out.dat

    sfk fromclip +hextobin %TEMP%\tmp1.dat +hexdump берет шестнадцатеричную последовательность, как 22737769 73732066 из буфера обмена и печатает его текст через временный файл и шестнадцатеричный дамп.

    Пример: запись списка байтов в двоичный файл

    Допустим, мы хотим записать двоичные данные 0x01 0x02 0x03 0x04 0x05 в двоичный файл «target.exe» по смещению 0x9876, тогда этого можно добиться следующими шагами:

    1) sfk echo "01 02 03 04 05" +hextobin tmp1.dat - записывает последовательность байтов во временный файл.

    2) sfk partcopy tmp1.dat 0 5 target.exe 0x9876 -yes копирует эти байты из tmp1.dat в файл target.exe, который должен существовать, по смещению 0x9876 (десятичное 39030).

    3) sfk hexdump target.exe -offlen 0x9870 20 чтобы проверить результат, дамп байтов вокруг этой области:

           :file target.exe
           >28C80000 10C20102 03040500 00000000< (............... 00009870
           >00000000 06C90000 44C20000 00000000< ........D....... 00009880
    

    См. также

    sfk hexdump - создание шестнадцатеричных дампов из бинарных данных

    sfk partcopy - копирование частей двоичного файла