我想从包含嵌入式SQL语句的一些二进制文本文件中提取字符串数据。我不需要任何花哨的清理 - 只是提取可读文本的一些方法。我使用的是vb.net,但是调用外部工具也可以。从VB.Net中的二进制文件中提取字符串
回答
谢谢大家。伟大的想法。真的帮助我思考。四处升腾。最后,我不需要确定它们是否是字符串,所以我用一种快速,草率,丑陋的黑客行事。
'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)
这并不像起初看起来那么微不足道。一个字符串可以用许多方式编码。你认为什么是“可读文本”,不可读部分是怎么看的?说它看上去像这样:
&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甚至允许NULL字符(尽管一些编程语言不允许)。 Here's a thread这给出了一个VB如何继续进行的例子,它可能会给你一些提示。
PS:分析这种类型的数据可能很困难,如果您可以将文件上传到某个地方,那么我们可以看一看。
的GNU strings实用程序已经撒手人寰,并做更多或多或少的正是这种利用启发式猛拉说,“看起来像一个字符串”从二进制的任何数据。
从MinGW获取Win32的GNU binutils(包括字符串): http://sourceforge.net/projects/mingw/files/。
仅供参考,字符串的输出将包含大量误报,但鉴于您知道要查找的字符串的语法(SQL语句),因此不会过滤仅您要查找的内容。 – 2009-12-03 21:53:43
+1,尤其是因为我也看着它,并认为它不合适。我错了! ;-)。请注意,使用启发式不是罗塞塔的石头...... – Abel 2009-12-03 22:12:06
- 1. 从Python中的二进制文件中提取字符串
- 2. 从Java中的二进制文件中读取字符串
- 3. 从java中的二进制文件读取位字符串
- 4. Python - 从二进制文件中读取字符串
- 5. 从二进制文件中读取字符串
- 6. 从字符串到二进制文件
- 7. 如何使用ruby从二进制文件中提取字符串?
- 8. Python读取二进制文件中的二进制数据到字符串?
- 9. 从字符串中输入DynamoDB中的二进制文件
- 10. 从二进制文件读取字符串,不同的编码
- 11. 写的字符串二进制数据的二进制文件
- 12. 在二进制文件中读取字符串C++
- 13. 从JS中的文件读取“二进制”字符?
- 14. 从ELF二进制文件中提取函数字节
- 15. C++使用fstream从二进制文件读取字符串
- 16. 从文件中提取子字符串
- 17. 从PE文件中提取字符串
- 18. 从html文件中提取字符串
- 19. 从文件中提取字符串
- 20. 从HTML文件中提取字符串
- 21. “grep”从二进制文件中偏移ascii字符串
- 22. 二进制文件字符串
- 23. 字符串到二进制文件
- 24. 如何从二进制文件读取字符串/数组和C中的int?
- 25. 如何从文件中读取二进制格式的字符串?
- 26. Binwalk没有从二进制文件中提取文件
- 27. 从大型二进制文件中提取zip文件
- 28. 从varbinary提取十六进制字符串到文件
- 29. vb.net读取二进制文件
- 30. 读取二进制文件并将其转换为二进制字符串
当我打开我想看看在记事本中我关心的弦线部分的TEXTFILES都清晰可见。我认为我需要做的就是去掉任何非字符串,我会被设置? – Jeff 2009-12-03 20:52:23
我希望你是对的,但并不那么容易。记事本不知道*这些字符串,它只是显示它们。查看任何二进制文件(即图像),你会发现“可读”的部分。假设你逐个角色地观察它,你能否在整个文件中主动选择一个始终为“字符串”的字符范围? – Abel 2009-12-03 20:55:53