當前位置:編程學習大全網 - 源碼下載 - 如何通過C#制作端口掃描器

如何通過C#制作端口掃描器

端口掃描技術是壹中探測本地和遠程端口開放情況的策略和方法,是壹種非常重要的攻擊探測手段。壹個端口就是壹個通道。通過端口掃描,可以知道目標主機上開放了哪些端口,運行了哪些服務。對端口掃描技術的行為研究,可以在攻擊前得到壹些警告和預報,盡可能在早起預測攻擊者的行為並獲得壹定的證據,從而對攻擊進行預警。

思路

思路比較簡單,這是壹個單線程的程序,後續會進行多線程的實現,這個單線程程序,會根據提供的參數,構造TcpClient對象,並調用其connect函數來測試連接是否可達,來判斷端口是否打開

單線程實現

界面

使用C#來編寫界面,效果如下圖所示

業務代碼

實現掃描的代碼:

private void NormalScan(Int32 state) {

Int32 port = state;

String msg = "";

TcpClient tcp = new TcpClient();

try

{

tcp.Connect(IPAddress.Parse(textBox1.Text), port);

portSum++;

msg = port.ToString() + "端口開放";

listBox1.Items.Add(msg);

tcp.Close();

}

catch {

msg = port.ToString() + "端口不開放";

listBox1.Items.Add(msg);

}

}12345678910111213141516171234567891011121314151617

按鍵處理代碼

private void button1_Click(object sender, EventArgs e)

{

int connState = 0;

String scanHost = textBox1.Text;

try

{

IPAddress ipaddr = (IPAddress)Dns.Resolve(scanHost).AddressList.GetValue(0);

textBox1.Text = ipaddr.ToString();

}

catch {

textBox1.Focus();

MessageBox.Show("請輸入正確的主機地址,該地址DNS無法進行解析","系統提示");

return;

}

Int32 threadNum = (Int32)startPort.Value;

Int32 end = (Int32)endPort.Value;

for (; threadNum <= end; threadNum++) {

NormalScan(threadNum);

listBox1.Refresh();

}

}1234567891011121314151617181920212212345678910111213141516171819202122

運行效果

我們使用cmd的ping命令得到百度的IP地址

將百度地址填入到對應的文本框中,運行,會得到運行的結果

根據效果可以看出,80端口是打開的,這個端口就是www服務的端口,運行結果是正確的

程序源代碼下載

使用的是VS2012進行編寫的。

多線程實現

思路

使用ThreadPool來實現多線程的調度,使用Invoke方法,來實現異步,在不同的線程中顯示數據。

運行結果

我們依舊使用Cmd的ping命令獲得百度的地址,然後將地址填入到我們的輸入框中。

運行會得到下圖的運行結果

代碼下載

  • 上一篇:神龍第壹刀多樣性介紹
  • 下一篇:自學 Web 前端真的很難找到工作嘛?
  • copyright 2024編程學習大全網