JNetPcap に問題があります。
私はUbuntu 12.04を使用しており、Java言語に基づくパケットスニッパーを作成しようとしています。
私がしたことは以下です。
JNetPcap 1.3.0 をダウンロードしました。
そして、チュートリアルが言ったように、Javaプロジェクトを構築しました。 http://jnetpcap.com/examples/dumper <-これはリンクです。
そのリンクのように入力したところ、最初の問題が発生しました。PcapHandler クラスは非推奨です。そこで、ドキュメントを見つけて ByteBufferHandler に置き換えます。
このプロジェクトをコンパイルすると、unsatifiedLinked エラーが発生しました。そのライブラリをロードするために静的ブロックを試しました。いくつかの試行の後、「libjnetpcap.so」を /usr/lib/ にコピーしました
unsatisfiedLinked Error を削除しました。しかし、なぜか1回目のエラーチェックで止まってしまいます。「1st error check : 」と出力し、自動的に終了します。
public static void main(String[] args) {
List<PcapIf> alldevs = new ArrayList<PcapIf>(); StringBuilder errbuff = new StringBuilder(); int r = Pcap.findAllDevs(alldevs, errbuff); //============1st check if(r == Pcap.NOT_OK || alldevs.isEmpty()){ System.err.printf("1st error check : %s\n", errbuff.toString()); return; } PcapIf device = alldevs.get(1); //===================== END int snaplen = 64 * 1024; int flags = Pcap.MODE_PROMISCUOUS; int timeout = 10 * 1000; Pcap pcap = Pcap.openLive(device.getName(),snaplen, flags, timeout, errbuff); //============2nd check if(pcap == null){ System.err.printf("2nd error check : %s\n", errbuff.toString()); return; } //===================== END String ofile = "/home/juneyoungoh/tmp_capture_file.cap"; final PcapDumper dumper = pcap.dumpOpen(ofile); ByteBufferHandler<PcapDumper> handler = new ByteBufferHandler<PcapDumper>() { @Override public void nextPacket(PcapHeader arg0, ByteBuffer arg1, PcapDumper arg2) { dumper.dump(arg0, arg1); } }; pcap.loop(10,handler, dumper); File file = new File(ofile); System.out.printf("%s file has %d bytes in it!\n", ofile, file.length()); dumper.close(); pcap.close(); if(file.exists()){ file.delete(); }
}
良い参考書や素晴らしいアイデアがあれば、共有してください。
ありがとう。