deplist | dupfind | extract | find | hexfind | md5 | md5check | md5gento | ofind | pathfind | reflist | xfind | xfindbin | xhexfind | Команда: xhexfind Поиск в двоичных файлах с помощью подстановочных знаков
Поиск в текстовых и двоичных файлах с помощью подстановочных знаков * и ? а также простых выражений SFK в скобках [], Создание шестнадцатеричного вывода дампа. По умолчанию для большинства команд sfk обрабатывает заданные папки, а также все подкаталоги внутри них. ПАРАМЕТРЫ nosub - не включать файлы в подкаталоги.nobin[ary] - пропустить бинарные файлы.case - сравнение текста с учетом регистра. Значение по умолчанию не учитывается. Для получения подробной информации введите: SFK Help NoCase text - Запускает список шаблонов поиска в форме /src/ или /src/totext/,
где / — символ-разделитель, src — текст для поиска, а totext — маска для переформатирования вывода.Можно использовать любой символ-разделитель, который не является частью искомого текста, т.е. /foo/ или _foo_ оба ищут «foo». -text не требуется, если указано одно имя файла. pat - то же самое, что и -text, начиная со списка шаблонов
bylist x.txt - чтение шаблонов поиска из файла x.txt, поддержка
Несколько линий в шаблоне. (Добавьте -full, чтобы узнать больше.)
bylinelist x - Чтение шаблонов /from/to/ или просто /from/ из файла x
с одним шаблоном в строке (для получения дополнительной информации добавьте -full).-by(line)list не поддерживает переменные sfk. Чтобы использовать переменные в шаблонах, создайте сценарий sfk с шаблонами в качестве параметров. «sfk-скрипт» для получения дополнительной информации. arc
XE: включить содержимое .zip .jar .tar и т.д. архивов как можно глубже, включая вложенные архивы. XD: demo прочитает первые 1000 байт каждой записи qarc - быстрое чтение архивов верхнего уровня, но не вложенных
firsthit - показывать только первое найденное совпадение шаблона для каждого файла
tracesel - подробно рассказать, какие файлы ищутся, а какие игнорируются
quiet - не показывать информацию о прогрессе
names - выводит только имена файлов, содержащих хотя бы одно попадание
notnames - выводит только имена файлов, не содержащих ни одного хита
justrc - не выводить результаты поиска, просто установить код возврата при обращениях
full - полный текст справки, рассказывающий о -bylist pat.Файлы, чувствительность к регистру специальных символов и поведение вложенной или повторяющейся замены. Параметры вывода wide - показать 16 байт на строку в выводе
lean - показать 8 байт на строку в выводе
context=n - показать n байт контекста вокруг результатов
fullhead[er] - печатать смещение/длину хитов как в десятичном,
так и в шестнадцатеричном формате
maxdump=n - отображать только до n байт, n должно быть больше, чем context
nodump - не создавать шестнадцатеричный дамп, выводить только совпадающие файлы
showle - подсвечивать окончания строк CR/LF в шестнадцатеричном выводе дампа
nofile - не вставлять строки заголовка :file в вывод
crlf,-lf - для заголовков файлов и текста по умолчанию:
принудительное окончание строк crlf или lf вместо системного значения по умолчанию.
rawterm - при выводе на терминал не удалять коды ниже 32. Нулевые байты всегда удаляются. +tofile x в качестве последнего параметра (цепочка команд):
записать текст как отображается на терминале в файл x
more[n] - приостанавливать вывод каждые 30 или n строк
Коды возврата для bat-файлов
Смотрите также «SFK Help Opt» о том, как повлиять на обработку ошибок Многострочные параметры в кавычках поддерживаются в скриптах Подстановочные знаки и выражения SFK Выражения SFK - это простые шаблоны, содержащие буквенный текст, подстановочные знаки * и ? и классы символов в квадратных скобках []. По сути, синтаксис предоставляет расширенные подстановочные знаки, но не содержит дополнительной логики и не связан с регулярными выражениями. Шаблоны поиска окружены символом-разделителем, которым может быть что угодно, не содержащееся в тексте поиска, например / или _. Внутри шаблона /fromtext/totext/ fromtext может содержать: * - от 0 до 4000 символов в одной текстовой строке или абзаце,
т.е. все байты, не имеющие значения CR, LF или NULL.
4000 — это просто максимум по умолчанию, который можно изменить следующим образом:
[0.100000 chars] - от 0 до 100 000 символов в одной текстовой строке или абзаце,
т.е. то же, что *, но с большим диапазоном.
? - один символ
????? - то же, что [5,5 символов] или [5 символов]
[bytes] - от 0 до 4000 байт (с CR,LF,NULL), т.е. он собирает текст потока по строкам,
даже в двоичных данных
[0.100 bytes] - от 0 до 100 байт
** - то же, что [байты]
[.100000 bytes] - до 100000 байт
[1.* bytes] - от 1 до максимального количества байт по умолчанию
[2 chars] - ровно 2 символа
[30 bytes] - ровно 30 байт
[byte of aeiou] - одна гласная (OR A OR e OR...), по умолчанию нечувствителен к регистру. «aeiou» — это список символов
[byte of \\\x2f] - обратная косая черта \ или вперед. косая черта /
[bytes of \r\n \t] - пробелы, включая конец строки
[bytes of (\r\n \t)] - то же, () не обязательны
[bytes not \r\n\0] - до 4000 байт, пока не появится байт CR, LF или NULL.
[chars] - то же, что [байты не \r\n\0], т.е. собирать текст в строку
[char not ( \t)] - то же, что [byte not (\r\n\0\t)], все, кроме пробелов и табуляций
[char not )( \t] - без скобок, пробелов и табуляций, как и без (\(\) \t)
[chars of a-z0-9] - означает a-zA-Z0-9, поскольку поиск по умолчанию нечувствителен к регистру
[chars of \x61-\x7A] - ищите от a до z, но не от A до Z, или используйте опцию -case для поиска по регистру
[eol] - конец строки символами: CRLF или LF или CR
[white] - 0 или более пробелов
[xwhite] - то же, но через строки
[1 white] - 1 пробел
[digit] - 1 цифра
[digits] - 0 или более цифр
[hexdigit] - 1 шестнадцатеричная цифра
[hexdigits] - 0 или более шестнадцатеричных цифр
Специальные ключевые слова, которые не считаются токенами:
Как найти или заменить специальные символы: Приоритеты расширения: (сначала самый высокий)Если две части поиска расположены рядом и один и тот же входной символ соответствует обеим, то применяются следующие приоритеты: Это означает, что в "/[bytes]foo/" [bytes] перестанет собирать символы, как только будет найдено "foo", поскольку "foo" является литералом. При том же или более высоком приоритете правая сторона останавливает левую сторону. ToText может содержать: [part 1] использует первую текстовую часть fromtext, например fromtext /*foo[.100 chars]bar*/ содержит части: 1 2 3 4 5
[part1] то же (пробел необязателен).
[parts 1,2,3] используйте части 1, 2 и 3.
[parts 1-10] используйте части с 1 по 10.
[strip(part1,\0)] использует часть 1, но удаляет нулевые байты,
можно удалить только нулевые байты "\0".
[file.name] полное входное имя файла с путем
[file.relname] входное имя файла без пути
[file.path] путь к входному файлу
[file.base] имя файла без последнего расширения.
[file.ext] расширение имени входного файла
[all] использовать все части из fromtext.
[setvar name]...[endvar] установить переменную "name" с данными
между setvar и endvar.
[getvar name] заполнить данные из переменной "name"
Хотя якоря типа lstart, Lend считаются отдельной частью,
их НЕ обязательно указывать в тексте. Поддерживаемые шаблоны косой черты: \t = TAB
\r = CR
\n = LF
\x00 = один байт с шестнадцатеричным кодом 00
\0 = короткая форма для \x00
\q = двойная кавычка
\\ = символ обратной косой черты \ сам по себе
\[ = открывающий символ скобки [
\] = закрывающий символ скобки ]
\* = буквенный символ звезды *
\? = буквенный вопросительный знак ?
\- = для использования литерала "-" в команде
В многострочных файлах -bylist: Только в списках "char of" или "byte not":
Параметры выражений SFK showpart(s) - вывести номера деталей /from/, статистику диапазона
и приоритетные точки расширения для каждой части. Выполняется автоматически, если требуемый текст /to/ не указан в команде. showbest - если шаблон /from/ ничего не находит, используйте это для
посмотрите, сколько частей будет совпадать на данный момент и сколько байтов будет в каждой части.
Якоря типа [lstart] могут иметь ненулевую длину при сопоставлении (CR)LF.
showlist с -bylist, показать внутренний объединенный список, если
команды распределены по нескольким строкам.
showall - показать все вышеперечисленное.
xmaxlen=n установить максимальную длину по умолчанию для команд в виде
символов или байтов, например,-xmaxlen=10000 означает, что /foo*bar/ соответствует до 10 000 символов между foo и bar. Максимальная длина по умолчанию без этой опции составляет 4000 символов. Замечания по производительности Вместо этого используйте /[lstart]*foobar/. Поддержка цепочки Выходные данные SFK Extract могут быть отправлены только на +XED или +xex. ПСЕВДОНИМЫ
Для извлечения неизмененных двоичных данных вы можете использовать
Поддержка файлов Office
СМОТРИТЕ ТАКЖЕ Команды с открытым кодом
Бесплатные команды
XE коммерческие команды
Остерегайтесь командных символов оболочки. Чтобы найти или заменить текстовые шаблоны, содержащие пробелы или специальные символы, такие как <>|!&?*, вы должны добавить кавычки "" вокруг параметров, иначе среда оболочки уничтожит вашу команду. Например, шаблон /foo bar/other/ должен быть записан как «/foo bar/other/» в файле .bat или .cmd, процент % должен быть экранирован как %% даже в кавычках: sfk echo -spat «percent %» % — это процент \x25" О примерах чисел [со скобками] Если вы видите [1], введите «sfk cmd 1» для всей команды в одной строке. Плохие примеры с исправленииями: Если входной текст содержит:
sfk xfind in.txt "/bool[xwhite]bCl*[xwhite];/"
НЕ соответствует «bool bClFoo;» потому что * съедает всю строку ввода, включая ";" поэтому для "[xwhite];" не осталось ввода и все выражение терпит неудачу. sfk xfind in.txt "/bool[xwhite]bCl[* not ;][xwhite];/"
оба соответствуют «bool bClFoo;» и «bool bClBar ;». это означает, что всякий раз, когда ваш поиск не работает, подробно напишите, какие символы (не) где собирать. sfk xex in.txt "/[lstart]foo/[lstart]goo/"
нет необходимости писать якорь типа [lstart] внутри totext, поскольку он не содержит данных. Используйте вместо этого: sfk xex в.txt "/[lstart]foo/goo/"
Привязки типа [lend] должны находиться в начале или конце fromtext и на них нельзя ссылаться внутри totext. Рабочие примеры sfk xfind -text "/class [bytes]{[bytes]}/[all]\n\n/"
-dir mydir -file .hpp +tofile out.txt
Сбор определений классов из mydir и запись выходных данных опосредованно (через цепочку команд) на выход из .txt [13] sfk xhexfind in.txt -text "/foo*bar/"
Поиск в .txt шаблонов, начинающихся с foo и заканчивая с bar, в той же строке, до 4000 символов между ними sfk xhexfind in.txt -text "/foo*bar/" +view
То же самое, что и выше, но покажите результат в представлении Depeche - инструменте текстового браузера для удобства чтения sfk xhex -text "/foo[0.100000 bytes]bar/" -dir mydir
Поиск во всех текстовых и двоичных файлах mydir на наличие шаблонов foo и bar от 0 до 100000 байт (включая NULL, CR и LF) и вывод в виде шестнадцатеричного дампа. sfk xhexfind -text "/printf(**);/" -dir mydir -file .cpp
Найдите все операторы printf в исходном коде, включая операторы по нескольким строкам sfk xfindbin in.dat "/foo[0.100 bytes of (a-z0-9_@ )]bar/"
Ищет в одном входном файле in.dat все фразы, начинающиеся с foo и заканчивающиеся bar, с от 0 до 100 символов между буквами, цифрами, @ или _ или пробелами. sfk xfindbin -text "/foo*bar/[part2]\n" -dir mydir -file .txt
найти foo*bar во всех файлах .txt папки mydir, но напечатайте только текст между foo и bar. sfk xfindbin -text "/\x66\x6f\x6f[0.100 bytes]\x62\x61\x72/"
-dir mydir -file .exe +view
найти двоичные данные, начиная с байтов 0x66, 0x6f, 0x6f, заканчивающиеся на 0x62, 0x61, 0x72 и до 100 байтов между ними во всех .exe-файлах mydir и показывают результат в dview. [14] sfk xfindbin -arc in.zip "/class*/"
XE: найти фразы, начинающиеся с «класса», в содержимом .zip XD: демо будет искать первые 1000 байт в подфайле .zip. sfk xfindbin -justrc result.txt "/error/"
IF %ERRORLEVEL%==1 GOTO foundError
перейти к найденной ошибке в пакетном файле: перейдите к метке FoundError, если в result.txt обнаружена «ошибка». С -justrc не выводится. sfk xhexfind -text "/\x66\x6f\x6f[0.100 bytes]\x62\x61\x72/"
-dir mydir -file .exe +view
найти двоичные данные, начиная с байтов 0x66, 0x6f, 0x6f, заканчивая 0x62, 0x61, 0x72 и до 100 байтов между ними во всех .exe-файлах mydir, и показать результат в dview. [16] sfk xhexfind in.txt "/[char of \x01-\x09\x0b-\x0c\x0e-\x1f]/"
Найти управляющие символы в файле, кроме CR/LF sfk xhexfind mydir "/[bytes of \x00-\x08]/"
Поиск диапазона двоичных кодов от 0x00 до 0x08 в mydir
sfk hexfind mydir -bin /01020304/
sfk xhexfind mydir "/\x01\x02\x03\x04/"
Поиск двоичных данных 0x01020304 в mydir |