VB.Netでのバイナリファイルから文字列を抽出します
-
12-09-2019 - |
質問
私は、組み込みSQLステートメントが含まれているいくつかのバイナリテキストファイルから文字列データをこすりしたいです。読み取り可能なテキストを抽出するだけでいくつかの方法 - 私は空想のクリーンアップは必要ありません。私はvb.netを使用していますが、外部ユーティリティへの呼び出しは、あまりにも動作します。
解決 4
おかげで、すべて。素晴らしいアイデア。本当に私が考える助けました。すべての周りUpvotes。終わった私は、迅速な、ずさんな、醜い、ハックます。
と一緒に行ったので、彼らは文字列であったことを非常に確認する必要がありませんでした '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文字列ユーティリティは永遠の周りされており、まさにこのバイナリから「文字列のように見える」という任意のデータをヤンクするヒューリスティックを使用して、多かれ少なかれ行います。
MinGWのからのWin32用(文字列を含む)のGNU binutilsのグラブ: 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でもNULL文字を許可します。 ここでは、先に進むことができる方法のVBの例を示しますスレッドのですあなたにいくつかのヒントを与えるかもしれません。
PS:このタイプのデータを分析することは難しいことができ、我々は見ることができますので、どこかにあなたのファイルをアップロードすることができれば、それは大いに役立ちます。
。