我想從包含嵌入式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. 從java中的二進制文件讀取位字符串
- 2. 如何使用ruby從二進制文件中提取字符串?
- 3. Python讀取二進制文件中的二進制數據到字符串?
- 4. 從字符串中輸入DynamoDB中的二進制文件
- 5. 寫的字符串二進制數據的二進制文件
- 6. 從文件中提取字符串
- 7. 從PE文件中提取字符串
- 8. 二進制文件字符串
- 9. 如何從文件中讀取二進制格式的字符串?
- 10. 如何從二進制文件讀取字符串/數組和C中的int?
- 11. 從大型二進制文件中提取zip文件
- 12. 從varbinary提取十六進制字符串到文件
- 13. vb.net讀取二進制文件
- 14. 如何從Mac中的二進制文件中提取硬編碼的字符串?
- 15. 從批處理文件中的文件中提取字符串
- 16. 在VB.Net中讀取DBF文件結構爲二進制文件
- 17. 讓GD從二進制字符串中獲取圖像
- 18. 從c#中的字符串中提取列表中的文件名字符串#
- 19. 從與CMake的二進制文件中提取庫版本
- 20. 如何設置二進制文件中的字符串指針?
- 21. 在大的二進制文件中搜索字符串
- 22. 將字符串視爲Ruby中的二進制文件
- 23. Ruby中的字符串轉換爲原始二進制文件
- 24. 從C#中的字符串中提取並讀取十進制數字#
- 25. 從字符串中提取
- 26. JavaScript - 讀取二進制文件,並從它製作一個字符串
- 27. 從文本中提取字符串
- 28. Python:從字符串中提取文本
- 29. 從字符串中提取文本Java
- 30. 從字符串中提取文本
當我打開我想看看在記事本中我關心的絃線部分的TEXTFILES都清晰可見。我認爲我需要做的就是去掉任何非字符串,我會被設置? – Jeff 2009-12-03 20:52:23
我希望你是對的,但並不那麼容易。記事本不知道*這些字符串,它只是顯示它們。查看任何二進制文件(即圖像),你會發現「可讀」的部分。假設你逐個角色地觀察它,你能否在整個文件中主動選擇一個始終爲「字符串」的字符範圍? – Abel 2009-12-03 20:55:53