есть ли библиотека поиска по шаблону в бинарных данных
От: ksd Россия  
Дата: 20.07.16 08:53
Оценка:
то есть надо найти в бинарном файле последовательность байт по шаблону, типа

\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d


т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.

спасибо!
Re: есть ли библиотека поиска по шаблону в бинарных данных
От: watchmaker  
Дата: 20.07.16 09:10
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


В string.h мого где уже есть готовая функция memmem — работает как strstr, но для бинарных данных.
Re[2]: есть ли библиотека поиска по шаблону в бинарных данных
От: uzhas Ниоткуда  
Дата: 20.07.16 09:28
Оценка: +1
Здравствуйте, watchmaker, Вы писали:

W>В string.h мого где уже есть готовая функция memmem — работает как strstr, но для бинарных данных.


я так понял, что ищут regexp для бинарных данных, а не текста
Re: есть ли библиотека поиска по шаблону в бинарных данных
От: Warturtle  
Дата: 20.07.16 09:41
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>то есть надо найти в бинарном файле последовательность байт по шаблону, типа


ksd>
ksd>\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d
ksd>


ksd>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


ksd>спасибо!

boost::xpressive например.
Re[3]: да. именно.
От: ksd Россия  
Дата: 20.07.16 10:16
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, watchmaker, Вы писали:


W>>В string.h мого где уже есть готовая функция memmem — работает как strstr, но для бинарных данных.


U>я так понял, что ищут regexp для бинарных данных, а не текста

да, именно так, нужен регекс для бинарных данных.
Re[2]: спасибо. посмотрю.
От: ksd Россия  
Дата: 20.07.16 10:17
Оценка:
Здравствуйте, Warturtle, Вы писали:

W>Здравствуйте, ksd, Вы писали:


ksd>>то есть надо найти в бинарном файле последовательность байт по шаблону, типа


ksd>>
ksd>>\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d
ksd>>


ksd>>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


ksd>>спасибо!

W>boost::xpressive например.
спасибо. посмотрю.
Re[3]: ну, на первый взгляд "не то".
От: ksd Россия  
Дата: 20.07.16 10:50
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>Здравствуйте, Warturtle, Вы писали:


W>>Здравствуйте, ksd, Вы писали:


ksd>>>то есть надо найти в бинарном файле последовательность байт по шаблону, типа


ksd>>>
ksd>>>\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d
ksd>>>


ksd>>>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


ksd>>>спасибо!

W>>boost::xpressive например.
она же тоже для текстов, что то не понятно с первого взгляда на доки на буст.орг, что делать с бинарниками.
но самое главное, сейчас не используется в проекте буст и использовать в данный момент невозможно.
Re[4]: ну, на первый взгляд "не то".
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 20.07.16 10:57
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>>>>спасибо!

W>>>boost::xpressive например.
ksd>она же тоже для текстов, что то не понятно с первого взгляда на доки на буст.орг, что делать с бинарниками.
То же что и со строкой char-ов
ksd>но самое главное, сейчас не используется в проекте буст и использовать в данный момент невозможно.
Это хедер-онли бибилиотека, её можно выкусить без проблем.
Sic luceat lux!
Re[4]: ну, на первый взгляд "не то".
От: Warturtle  
Дата: 20.07.16 11:07
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>Здравствуйте, ksd, Вы писали:


ksd>>Здравствуйте, Warturtle, Вы писали:


W>>>Здравствуйте, ksd, Вы писали:


ksd>>>>то есть надо найти в бинарном файле последовательность байт по шаблону, типа


ksd>>>>
ksd>>>>\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d
ksd>>>>


ksd>>>>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


ksd>>>>спасибо!

W>>>boost::xpressive например.
ksd>она же тоже для текстов, что то не понятно с первого взгляда на доки на буст.орг, что делать с бинарниками.
ksd>но самое главное, сейчас не используется в проекте буст и использовать в данный момент невозможно.
Естественно, парсить бинарные данные — не основная задача этой библиотеки, но делать это в ней точно можно. Там есть [a href="http://www.boost.org/doc/libs/1_61_0/boost/xpressive/traits/null_regex_traits.hpp"]такой класс[/a] для бинарный данных в частности. Цитата:

Contains the definition of the null_regex_traits<> template, which is a stub regex traits implementation that can be used by static and dynamic regexes for searching non-character data.

В отличие от boost::regex основным способом задания шаблона поиска является выражение его непосредственно в коде программы, поэтому значение каждого байта записывается просто числом.
Re: есть ли библиотека поиска по шаблону в бинарных данных
От: chaotic-kotik  
Дата: 20.07.16 13:50
Оценка:
Здравствуйте, ksd, Вы писали:

ksd>то есть надо найти в бинарном файле последовательность байт по шаблону, типа


ksd>
ksd>\x48\x89\x5c\x24\x08\x57.{8,20}\xe8.{8-20}\x4c\x8d\x0d
ksd>


ksd>т.е. надо искать по адресу буфера и размеру, \0 \r \n не надо выделять, как особый случай.


Я решал эту задачу с помощью обычной библиотеки регулярных выражений (cregex_iterator из boost.regex).
Re[5]: ну, на первый взгляд "не то".
От: Evgeny.Panasyuk Россия  
Дата: 20.07.16 14:34
Оценка:
Здравствуйте, Kernan, Вы писали:

ksd>>но самое главное, сейчас не используется в проекте буст и использовать в данный момент невозможно.

K>Это хедер-онли бибилиотека, её можно выкусить без проблем.

Для этого даже есть утилита специальная:

http://www.boost.org/doc/libs/1_61_0/tools/bcp/doc/html/index.html
The bcp utility is a tool for extracting subsets of Boost, it's useful for Boost authors who want to distribute their library separately from Boost, and for Boost users who want to distribute a subset of Boost with their application.

bcp can also report on which parts of Boost your code is dependent on, and what licences are used by those dependencies.

 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.