Поиск регулярным выражением в двоичном файле

Обсуждение программ nnCron и nnCron LITE

Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sat, 18 May 2013, 23:36

Впервые попробовал найти что-то в «двоичном» файле и столкнулся с тем, что не могу там ничего найти, в том числе указывая символ в шестнадцатеричном виде \xNN.
StringGetPos (слово из справки) ищет нормально.
Какие-то подводные камни у RegExp?
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 06:02

Они же для текста.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 08:23

SEARCH вроде как тоже для текста.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 08:46

А вот и нет: SEARCH тупо ищет одну строку внутри другой строки. Напомню, что строка — это адрес начала данных и размер этих данных. Так что текст может быть строкой, но строка не обязана быть текстом. Ну, это если говорить простым языком в рамках форта и ннкрона. А вот регекспы в ннкроне используются из внешней библиотеки regexp.dll и они соответсвуют общепринятым стандартам. Если очень хочется обрабатывать бинарные данные регулярными выражениями, то для этого необходимо конвертировать эти данные в текст. Например в шестнадцатеричную или 64-ную систему счисления.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 09:04

VoidVolker wrote:Если очень хочется обрабатывать бинарные данные регулярными выражениями, то для этого необходимо конвертировать эти данные в текст. Например в шестнадцатеричную или 64-ную систему счисления.

Можно с этого места поподробнее?
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby elos » Sun, 19 May 2013, 11:42

Если не стараться непременно реализовать всё на forth, то :

http://www.keil.com/download/list/utility.htm

http://www.ht-lab.com/freeutils/bin2hex/bin2hex.html
elos
 
Posts: 664
Joined: Tue, 25 Apr 2006, 11:15

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 14:56

Уж лучше я со StringGetPos поизвращаюсь.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 16:50

Code: Select all
: String2Hex   \ ( a u -- a1 u1 )
  DUP 2* DUP >R
  CELL+ ALLOCATE THROW DUP >R
  SWAP 0 DO
    OVER I + C@ N>H DROP W@ OVER I 2* + W!
  LOOP
  2DROP R> R>
;


А какова задача-то?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 17:07

VoidVolker wrote:
Code: Select all
: String2Hex   \ ( a u -- a1 u1 )
  DUP 2* DUP >R
  CELL+ ALLOCATE THROW DUP >R
  SWAP 0 DO
    OVER I + C@ N>H DROP W@ OVER I 2* + W!
  LOOP
  2DROP R> R>
;


Что-то я не понял, что с этим делать. :cry:
Мне всего лишь надо, чтобы содержимое двоичного файлика представить в приемлемом для регэкспа виде. Искать я там хочу текстовую информацию.
Вопрос можно поставить так: как из двоичной строки сделать текстовую, т.е. всё двоичное заменить на какой-нибудь символ?

VoidVolker wrote:А какова задача-то?

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

Сейчас в очередном допиливании хочу сделать, чтобы страничку с куками скачивать, а для этого желательно куки из браузера тянуть (куки можно забивать вручную, но они ведь портятся со временем.), а файлик с куками у браузера «двоичный».
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 17:48

Moriturus wrote:Мне всего лишь надо, чтобы содержимое двоичного файлика представить в приемлемом для регэкспа виде. Искать я там хочу текстовую информацию.Вопрос можно поставить так: как из двоичной строки сделать текстовую, т.е. всё двоичное заменить на какой-нибудь символ?

Эмм... Бинарные данные и текст - не являются двумя различными видами данных. По сути это одно и то же, ведь в компьютере все представлено виде бинарных чисел. Так вот, текст - это данные, которые мы(люди) можем интерпретировать как текст. Открой в текстовом редакторе любой не текстовый файл - там будет куча символов, но это не будет осмысленным текстом. Вот код, который я привел выше конвертирует бинарные данные в текстовый вид - т.е. каждый байт будет представлен не в виде символа таблицы кодировки, а в виде шестнадцатеричного числа в текстовом виде. Т.е. заменяем каждый байт на его строковое представление в шестнадцатеричном виде. Т.о. для поиска текста, надо будет этот самый текст тоже конвертировать в шестнадцатеричный вид.
Code: Select all
S" C:\file.bin" FILE String2Hex \ Где искать
S" /"   \ Начало регекспа
S" текст" String2Hex
S" /" S+ S+   \ Конец регекспа


Moriturus wrote:Может помните, был у меня скриптик для того, чтобы регэкспами по сайтам шарить, новости там всякие искать.Сейчас в очередном допиливании хочу сделать, чтобы страничку с куками скачивать, а для этого желательно куки из браузера тянуть (куки можно забивать вручную, но они ведь портятся со временем.), а файлик с куками у браузера «двоичный».

В таком случае надо разбирать структуру куки.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 18:18

VoidVolker wrote:В таком случае надо разбирать структуру куки.

Ох и любите вы всё усложнять, когда не надо =-) Я вижу в этом файлике интересующую меня информацию, которая лежит там в текстовом виде, но в окружении какой-то нетекстовой «двоичной» структуры, разбирать которую нет никакой нужды.
Я в предыдущем посте уточнил, что именно меня интересует: модифицировать двоичную строку в текстовую, заменив всё нетекстовое, например точками, чтобы результат можно было скормить регулярным выражениям.
VoidVolker wrote:S" C:\file.bin" FILE String2Hex \ Где искатьS" /"   \ Начало регекспаS" текст" String2HexS" /" S+ S+   \ Конец регекспа

Кстати, не работает (не ищется), но я так догадываюсь, что если оно что-то и найдёт, то понадобится ещё и перевод с вашего шестнадцатеричного на человеческий.
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 19:32

Moriturus wrote:Кстати, не работает (не ищется), но я так догадываюсь, что если оно что-то и найдёт, то понадобится ещё и перевод с вашего шестнадцатеричного на человеческий.

Ну во бщем-то да =)
Moriturus wrote:Ох и любите вы всё усложнять, когда не надо =-) Я вижу в этом файлике интересующую меня информацию, которая лежит там в текстовом виде, но в окружении какой-то нетекстовой «двоичной» структуры, разбирать которую нет никакой нужды.Я в предыдущем посте уточнил, что именно меня интересует: модифицировать двоичную строку в текстовую, заменив всё нетекстовое, например точками, чтобы результат можно было скормить регулярным выражениям.

Ну так это-то как раз проще: разобраться со структурой файла и простым способом извлечь оттуда нужные данные.
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 19:51

VoidVolker wrote:Ну так это-то как раз проще: разобраться со структурой файла и простым способом извлечь оттуда нужные данные.

Я понял, вы издеваетесь :mrgreen: Простой способ это как раз поиск текста в строке. Только вы мне тут упорно не хотите помочь.
Кто разбираться со структурой будет? Очевидно, что мне это не по силам, значит вы :D Разбирайтесь:
http://operafan.net/component/option,co ... ileformat/
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Re: Поиск регулярным выражением в двоичном файле

Postby VoidVolker » Sun, 19 May 2013, 20:45

Moriturus wrote:Простой способ это как раз поиск текста в строке.

Ну так а чем SEARCH-то тогда не устраивает?
95% вопросов уже обсуждались на форуме или ответы на них есть в мануале.        nnCron 1.93 b15.exe
Как правильно задавать вопросы.
User avatar
VoidVolker
Site Admin
 
Posts: 2898
Joined: Tue, 25 Apr 2006, 17:56

Re: Поиск регулярным выражением в двоичном файле

Postby Morituruz » Sun, 19 May 2013, 21:00

Тем, что мне нужны регулярные выражения для поиска в строке :(
User avatar
Morituruz
 
Posts: 725
Joined: Sun, 14 Oct 2007, 01:51

Next

Return to nnCron forum (Russian)

Who is online

Users browsing this forum: Google [Bot] and 4 guests