2010-01-30 115 views
1

我正在閱讀nmap源代碼,因爲我想知道它是如何發現某些端口被過濾或防火牆的。我有一些在c中的套接字的經驗,我已經構建了簡單的端口掃描器,這很容易 - 如果連接成功,端口是打開的,否則關閉(因爲RST返回)。但是在防火牆端口的情況下,它們不會返回RST數據包,而且我的端口掃描器只是「等待」永遠。套接字 - 發現防火牆端口

如果有人有這方面的經驗,請指出nmap代碼中發生實際掃描和端口狀態的部分,或者至少告訴我是否有其他可用的代碼來處理這個問題。

回答

1

使用異步套接字API調用(即不要等待連接建立,而是嘗試並行的下一個端口/地址)並定義一個合理的超時時間(例如,如果一分鐘後沒有建立連接你可以考慮過濾)。

+1

只需添加,防火牆就可以選擇一些不需要的數據包操作。 「掉落」是最常見的,因爲這是最不起作用的。但它可以回覆RST,或者甚至可以把你自己的數據包放在你身上,無論它做什麼好事。 – 2010-02-01 09:12:37