2011-09-22 171 views
2

這個問題聽起來可能很愚蠢,因爲我知道有很多框架可以幫助您。我想要的是實際上深入地接觸低級C API,並且能夠編寫一個位於計算機上的程序,並截獲本地機器和外部空間之間的數據包。我試圖通過查看開源代碼(即tcpdump)來了解它,但我很難找出哪個文件實際執行網絡嗅探。任何建議,將不勝感激 !在c中捕獲網絡數據包

+1

什麼操作系統? – Alnitak

+0

linux/unix的基礎上,對不起,沒有提到操作系統 – REALFREE

+0

找到了一些很好的教程,如果有人需要:) http://yuba.stanford.edu/~casado/pcap/section1.html – REALFREE

回答

1

如果您使用的是基於UNIX的系統[*],那麼最簡單的機制是libpcap,它是tcpdump項目的一部分。

您的進程需要root權限才能訪問網絡接口(原始套接字也是如此)。

通常你最終不得不自己解碼以太網幀,IP頭等,儘管對於大多數協議來說這不是很難。

它實際上也適用於Win32,但我自己並沒有在Windows下使用它。

+0

+1:我忘了root權限問題。 – Heisenbug

+0

是否「始終」需要root權限?只是想知道 – REALFREE

+0

是的,除非你有一個操作系統具有更好的粒度權限,允許特定用戶帳戶正常訪問特權API調用。 – Alnitak

3

您必須使用原始套接字。這是一個example。至少對於Linux和Unix類似的操作系統而言。我不知道Windows。