当初、これを行うためにlibpcapを使用するように指示されましたが、大学の技術者の1人から、現在のインストール(Arch linux)ではlibpcapを使用できないことが通知されました。
私が最初にアドバイスするのは、コースの講師から直接回答を得ることです。技術者がlibpcapが利用できないことを意味する場合は、問題なく、コンパイルできるはずです。技術者が(Archまたは大学が)Linuxカーネルからプロミスキャスモードドライバーを削除したことを意味する場合、できることはたくさんありません。いずれにせよ、あなたが聞いていることを確認してください。
それでもこれを行う必要がある場合は、ガイダンスのためにlibpcapソースを読むことの何が問題になっていますか?構造体からpcap_loop
呼び出す、探している関数です。libpcapの低レベルでいくつかの可能なリーダーを明らかにします:read_op
pcap_t
grep -irn "read_op = " *
grep -irn "read_op = " *
pcap-bpf.c:2231: p->read_op = pcap_read_bpf;
pcap-bt-linux.c:172: handle->read_op = bt_read_linux;
pcap.c:243: p->read_op = (read_op_t)pcap_not_initialized;
pcap-can-linux.c:99: handle->read_op = can_read_linux;
pcap-dag.c:795: handle->read_op = dag_read;
pcap-dlpi.c:759: p->read_op = pcap_read_dlpi;
pcap-libdlpi.c:217: p->read_op = pcap_read_libdlpi;
pcap-linux.c:1198: handle->read_op = pcap_read_linux;
pcap-linux.c:3167: handle->read_op = pcap_read_linux_mmap;
pcap-netfilter-linux.c:338: handle->read_op = nflog_read_linux;
pcap-nit.c:315: p->read_op = pcap_read_nit;
pcap-pf.c:486: p->read_op = pcap_read_pf;
pcap-septel.c:213: handle->read_op = septel_read;
pcap-sita.c:941: handle->read_op = pcap_read_acn;
pcap-snf.c:236: p->read_op = snf_read;
pcap-snit.c:394: p->read_op = pcap_read_snit;
pcap-snoop.c:381: p->read_op = pcap_read_snoop;
pcap-usb-linux.c:341: handle->read_op = usb_read_linux_mmap;
pcap-usb-linux.c:355: handle->read_op = usb_read_linux_bin;
pcap-usb-linux.c:390: handle->read_op = usb_read_linux;
pcap-win32.c:687: p->read_op = pcap_read_win32_dag;
pcap-win32.c:694: p->read_op = pcap_read_win32_npf;
savefile.c:323: p->read_op = pcap_offline_read;
システムがどちらを使用するかは、おそらくの結果によって異なりますconfigure
が、それらのいずれも、システムがどのように機能するかを理解するための優れた出発点として機能します。このような大きなプロジェクトを分解することを恐れないでください-他の誰かが「グーグルはあなたの友達です」と言いました。grep
さて、あなたの友達だと思います。