wiresharkで印刷可能なテキストのみ(またはその他のパケットプロパティ)をエクスポートする方法
-
14-10-2019 - |
質問
短いストーリー-Wiresharkを使用して、ベンダーツールからOracleデータベースにSQLSをキャプチャしています。それはすでにTNSプロトコル用のデコーダーを持っています(これは素晴らしいです)、私はSQLのテキストにアクセスできます
Right Click->Copy->Bytes(Printable Text Only).
問題は、大量のパケットがあり、それぞれを右クリックすることで何年もかかる可能性があることです。 Wiresharkから「印刷可能なテキストのみ」をエクスポートする方法があるのではないかと思っていました。理想的には、ステートメント付きのテキストファイルが必要です。
どんな助けも高く評価されます。
解決
TNSでそれを行う方法がわかりません。しかし、たとえばHTTPリクエストを見るために、TSharkを使用してこのようなことをすることができます。
tshark -T fields -e http.request.uri
したがって、TNSデコーダーのオプションを確認できれば、そのフィールドをつかみ、出力をファイルにリダイレクトできるはずです。
他のヒント
最終的にこれを行うことができました。まず、TNSパケットをキャプチャするtsharkを使用します。
tshark -R tcp.port==1521 -T fields -e data.data -d tcp.port==1521,tns > input.txt
その後、以下のホームブリュールビースクリプトを使用して、バイトからテキストに変換できます。
file = ARGV[0]
print_all = ARGV[1]
File.open(file, "r").each {|line|
line.gsub(",", ":").split(':').each {|byte|
chr = Integer('0x' + byte).chr
print chr if ((' '..'~').include?(chr) or chr == "\n") or (print_all.downcase == 'all' if print_all)
} if !line.chomp.empty?
}
例は次のとおりです。
encode.rb input.txt > output.txt
入力から出力までのみ印刷可能なテキストをエクスポートします
encode.rb input.txt all > output.txt
すべてのテキストを入力から出力にエクスポートします
私のために働いたすべてのものを見る簡単な方法はただ Right Click -> Follow TCP Stream
.
メモ:印刷できない文字が表示されます .
s。抽出したいすべてのテキストの間にこれらの束がある場合(私のためにあったように)、 ASCII
, 、それを保存して、お気に入りのテキストエディター(私のためのVIM)に開き、検索を実行して、 /\.//g
.