|
|
| 首页 | 技术文章 | 软件下载 | 博客 | 论坛 | 精品教程 | 黑客动画 | 视频资源 | 在线服务 | 黑客游戏 | | ||||
|
|
||||||||
|
||||||||
|
|||||
| 利用C#设计端口扫描器 | |||||
作者:佚名 文章来源:CnXHacker.Net 点击数: 更新时间:2006-10-26 ![]() |
|||||
|
上网很久的朋友一定对端口扫描器不会陌生吧。XScanner,SuperScanner大家一定都使用过。 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 //已扫描端口数目 16 internal static int scannedCount = 0; 17 //正在运行的线程数目 18 internal static int runningThreadCount = 0; 19 //打开的端口数目 20 internal static List<int> openedPorts = new List<int>(); 21 //起始扫描端口 22 static int startPort = 1; 23 //结束端口号 24 static int endPort = 500; 25 //最大工作线程数 26 static int maxThread = 100; 27 static void Main(string[] args) 28 { 29 //接收传入参数一作为要扫描的主机 30 string host = args[0]; 31 //接收传入参数二作为端口扫描范围,如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 //创建扫描类 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 //启动扫描线程 44 thread.Start(); 45 46 runningThreadCount++; 47 48 Thread.Sleep(10); 49 //循环,直到某个线程工作完毕才启动另一新线程,也可以叫做推拉窗技术 50 while (runningThreadCount >= maxThread) ; 51 } 52 53 //空循环,直到所有端口扫描完毕 54 while (scannedCount + 1 < (endPort - startPort)) ; 55 56 Console.WriteLine(); 57 Console.WriteLine(); 58 //输出结果 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 //设置超时时间 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 //如果连接上,证明此商品为开放状态 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 //容错处理 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 116 117 好了,代码很简单吧!只能扫描TCP端口哦。 |
|||||
| 文章录入:IceRiver 责任编辑:IceRiver | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 利用最近热门的Xss漏洞能做什 利用四种自制批处理文件防御 利用xss漏洞能做什么? 国家计算机病毒中心发现利用 Google Gadget存漏洞 可被利 利用木马程序盗账号3天从银行 系统安全决定网络安全 黑客入 MySpace蠕虫病毒利用Fast-Fl 利用Serv-U自身缺陷提升 Web Firefox又现高危漏洞 被黑客 |
网友评论:(只显示最新5条。评论内容只代表网友观点,与本站立场无关!) |
| 关于我们 - 版权声明 - 帮助(?) - 广告服务 - 联系我们 - 友情链接 - 用户注册 - | Powered by ICE RIVER - STUDIO |
| » CnXHacker.CoM | © CopyRight 2002-2006, CnXHacker.CoM™, Inc. All Rights Reserved. |