3

簡単に言うと、Wiresharkを使用してベンダーツールからOracleデータベースにSQLをキャプチャしています。すでにTNSプロトコル用のデコーダーがあり(これは素晴らしいです)、SQLのテキストにアクセスできます。

Right Click->Copy->Bytes(Printable Text Only). 

問題は、大量のパケットがあり、それぞれを右クリックすると時間がかかる可能性があることです。Wiresharkから「PrintableTextOnly」を直接エクスポートする方法があるかどうか疑問に思いました。理想的には、ステートメントを含むテキストファイルが必要です。

どんな助けでも大歓迎です。

4

3 に答える 3

5

ついにこれを行うために離れて見つけました。まず、tnsパケットをキャプチャするtsharkを使用します。

tshark -R tcp.port==1521 -T fields -e data.data -d tcp.port==1521,tns > input.txt

次に、以下の自作のRubyスクリプトを使用して、バイトからテキストに変換できます。

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

すべてのテキストを入力から出力にエクスポートします

于 2011-01-14T00:57:43.433 に答える
3

私のために働いたすべてをそれらを見る簡単な方法はただRight Click -> Follow TCP Streamです。

注:印刷できない文字は.sとして表示されます。抽出したいすべてのテキストの間にこれらが散在している場合(私にとってはそうだったように)、それをに切り替えてASCII保存し、お気に入りのテキストエディタ(私にとってはvim)で開いてから、検索を実行して置き換えますに似てい/\.//gます。

于 2011-04-01T20:43:48.310 に答える
2

TNSでそれを行う方法がわかりません。ただし、tsharkを使用してこのようなことを行うことができます。たとえば、httpリクエストを確認できます。

tshark -T fields -e http.request.uri

したがって、TNSデコーダーのオプションを確認できれば、そのフィールドを取得して、出力をファイルにリダイレクトできるはずです。

于 2010-12-31T04:56:11.400 に答える