Вопрос

Я хочу очистить строковые данные из некоторых двоичных текстовых файлов, содержащих встроенные инструкции SQL.Мне не нужна какая-то причудливая очистка - просто какой-то способ извлечь читаемый текст.Я использую vb.net, но вызов внешней утилиты тоже сработал бы.

Это было полезно?

Решение 4

Спасибо всем.Отличные идеи.Действительно помогло мне подумать.Голоса за всех вокруг.В итоге мне не нужно было быть очень уверенным, что это струны, поэтому я прибегнул к быстрому, неаккуратному и уродливому взлому.

 'strip out non-string characters 
 For Each b As Byte In byteArray
      If b = 9 Or b = 10 Or b = 13 Or (b > 31 And b < 127) Then
          newByteArray(i) = b.ToString
          i += 1
      End If
  Next

  'move it into a string
  resultString = System.Text.Encoding.ASCII.GetString(newByteArray)

Другие советы

Утилита GNU strings существует всегда и делает более или менее точно это, используя эвристику для извлечения любых данных, которые "выглядят как строка", из двоичного файла.

Возьмите GNU binutils (включая строки) для Win32 из MinGW: http://sourceforge.net/projects/mingw/files/.

Это не так тривиально, как может показаться на первый взгляд.Строка может быть закодирована многими способами.Что вы считаете "читаемым текстом", как выглядят нечитаемые части?Скажи, что это выглядит вот так:

 &8)JÓxZZ`\■£ÌS?E?L?E?C?T?*?F?R?O?M?m?y?T?b?l?§ıÍ4¢

вам повезло, потому что он, скорее всего, закодирован с использованием UTF-16 или другой многобайтовой кодировки.Распознать их довольно тривиально.Но практически во всех других случаях (UTF-8, ISO-8859-1, Windows-1252) практически невозможно отличить отдельный символ от текста или нетекста, если вы не знаете, как начинается определенный "читаемый текст" и чем он заканчивается.

Дело в том, что:разрешено все, что угодно, и считается читаемым текстом.UTF-8, ASCII и Windows-1252 допускают даже нулевые символы (в то время как некоторые языки программирования этого не делают). Вот такая нить это дает пример VB того, как вы можете действовать, это может дать вам некоторые подсказки.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top