Extrair seqüências de arquivos binários em VB.Net
-
12-09-2019 - |
Pergunta
Eu quero raspar dados de cadeia de alguns arquivos de texto binários que contêm embutidos instruções SQL. Eu não preciso de qualquer limpeza extravagante - apenas alguma maneira de extrair o texto legível. Estou usando vb.net, mas uma chamada para um utilitário externo iria trabalhar muito.
Solução 4
Obrigado a todos. Ótimas ideias. Realmente me ajudou a pensar. Upvotes todo. Acabou Eu não precisa ser muito certo de que eles eram cordas então eu fui com um rápido, desleixado, feio, hack.
'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)
Outras dicas
Para referência: http://technet.microsoft.com/en-us/sysinternals/bb897439. aspx
O utilitário GNU cordas tem sido em torno para sempre e faz mais ou menos exatamente isso usando uma heurística para arrancar quaisquer dados que "parece uma string" de um binário.
Grab as binutils GNU (incluindo cordas) para Win32 a partir MinGW: http://sourceforge.net/projects/mingw/files/ .
Isto não é tão trivial como pode parecer à primeira vista. A corda pode ser codificado de muitas maneiras. O que você considera "texto legível", como é que as partes ilegíveis olhar? Diga-se parece com isso:
&8)JÓxZZ`\■£ÌS?E?L?E?C?T?*?F?R?O?M?m?y?T?b?l?§ıÍ4¢
você tiver sorte, porque é provável codificados usando UTF-16 ou outra codificação multibyte. Estes são bastante trivial de reconhecer. Mas em quase todos os outros casos (UTF-8, ISO-8859-1, o Windows-1252) é quase impossível distinguir um caráter individual por ser texto ou não-texto, a menos que você sabe um negócio justo de como um determinado "texto legível" começa e como ela termina.
O ponto é: tudo é permitido e considerado texto legível. UTF-8, ASCII e Windows-1252 permitem até mesmo caracteres nula (enquanto algumas linguagens de programação não). Aqui está uma segmento que dá um exemplo VB de como você pode prosseguir, ele pode lhe dar algumas dicas.
PS:. Analisar este tipo de dados pode ser difícil, ele vai ajudar muito se você poderia enviar o seu em algum lugar do arquivo para que possamos ter um olhar