日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何通過C#制作端口掃描器

面對互聯(lián)網(wǎng)、面對黑客相信廣大的管理員也好還是用戶也好都并不陌生。那你們一定聽說過端口掃描器這個(gè)名詞。XScanner和SuperScanner相信使用過端口掃描器的朋友并不陌生,那么你們有沒有想過自己嘗試制作端口掃描器呢?今天我們就為大家介紹一下,通過C#自己制作端口掃描器。

今天主要使用到的是System.Net和System.Threading名稱空間。

1

2using System;

3using System.Collections.Generic;

4using System.Text;

5

6using System.Net;

7using System.Net.Sockets;

8

9using System.Threading;

10

11namespace PortScanner

12{

13 class Program

14 {

15  //已掃描端口數(shù)目

16  internal static int scannedCount = 0;

17  //正在運(yùn)行的線程數(shù)目

18  internal static int runningThreadCount = 0;

19  //打開的端口數(shù)目

20  internal static List openedPorts = new List();

21  //起始掃描端口

22  static int startPort = 1;

23  //結(jié)束端口號(hào)

24  static int endPort = 500;

25  //***工作線程數(shù)

26  static int maxThread = 100;

27  static void Main(string[] args)

28  {

29   //接收傳入?yún)?shù)一作為要掃描的主機(jī)

30   string host = args[0];

31   //接收傳入?yún)?shù)二作為端口掃描范圍,如1-4000

32   string portRange = args[1];

33   startPort = int.Parse(portRange.Split('-')[0].Trim());

34   endPort = int.Parse(portRange.Split('-')[1].Trim());

35

36   for (int port = startPort; port < endPort; port++)

37   {

38    //創(chuàng)建掃描類

39    Scanner scanner = new Scanner(host, port);

40    Thread thread = new Thread(new ThreadStart(scanner.Scan));

41    thread.Name = port.ToString();

42    thread.IsBackground = true;

43    //啟動(dòng)掃描線程

44    thread.Start();

45

46    runningThreadCount++;

47

48    Thread.Sleep(10);

49    //循環(huán),直到某個(gè)線程工作完畢才啟動(dòng)另一新線程,也可以叫做推拉窗技術(shù)

50    while (runningThreadCount >= maxThread) ;#p#

51   }

52

53   //空循環(huán),直到所有端口掃描完畢

54   while (scannedCount + 1 < (endPort - startPort)) ;

55

56    Console.WriteLine();

57    Console.WriteLine();

58    //輸出結(jié)果

59    Console.WriteLine("Scan for host: {0} has been completed , \n total {1} ports

scanned, \nopened ports :{2}",

60 host, (endPort - startPort), openedPorts.Count);

61

62   foreach (int port in openedPorts)

63    Console.WriteLine("\tPort: {0} is open", port.ToString().PadLeft(6));

64  }

65 }

66

67 //掃描類

68 class Scanner

69 {

70  string m_host;

71  int m_port;

72 

73  public Scanner(string host, int port)

74  {

75   m_host = host; m_port = port;

76  }

77

78  public void Scan()

79  {

80   //我們直接使用比較高級的TcpClient類

81   TcpClient tc = new TcpClient();

82   //設(shè)置超時(shí)時(shí)間

83   tc.SendTimeout = tc.ReceiveTimeout = 2000;

84   try

85   {

86    //Console.Write("Checking port: {0}", m_port);

87    //嘗試連接

88    tc.Connect(m_host, m_port);

89    if (tc.Connected)

90    {

91     //如果連接上,證明此商品為開放狀態(tài)

92     Console.WriteLine("Port {0} is Open", m_port.ToString().PadRight(6));

93     Program.openedPorts.Add(m_port);

94    }

95   }

96   catch (System.Net.Sockets.SocketException e)

97   {

98    //容錯(cuò)處理

99    Console.WriteLine("Port {0} is closed", m_port.ToString().PadRight(6));

100    //Console.WriteLine(e.Message);

101   }

102   finally

103   {

104    tc.Close();

105    tc = null;

106    Program.scannedCount++;

107    Program.runningThreadCount--;

108

109    //Console.WriteLine(Program.scannedCount);

110  

111   }

112  }

113 }

114}

115

通過以上代碼我們就可以自己制作端口掃描器了,不過只能實(shí)現(xiàn)TCP端口掃描。


網(wǎng)站名稱:如何通過C#制作端口掃描器
URL標(biāo)題:http://www.dlmjj.cn/article/cdgdhec.html