您的位置:首页精文荟萃软件资讯 → ASP.NET追捕休整版

ASP.NET追捕休整版

时间:2004/10/8 13:15:00来源:本站整理作者:蓝点我要评论(0)

   C#第一个正式应用,ASP.NET追捕休整版!
 这个程序,是前天我买到Visual Studio.net beta 2 中文版后编写的第一个正式程序,感觉只真是好极了!!
 
 这个追捕的代码参考过飞刀的ASP.NET 追捕的文章,但他文章中是针对.NET 框架beta1的,而BETA2中好多的地方都修改调整了,顺便也给程序增加了列表IP的功能,也就是说主机的多个IP地址都可以列出来的.只是那个根据IP查到IP所在地的功能暂时没做,因为当时我用的机器是朋友的,而手头没有IP数据库:~(
 
 static void Main()
 {
 Application.Run(new Form1());
 }
 
 private void Form1_Load(object sender, System.EventArgs e)
 {
 string Localhost = System.Net.Dns.GetHostName();
 int i = 0;
 int n = Dns.Resolve(Localhost.ToString()).AddressList.GetLength(0);
 lblIpInfo.Text = Localhost.ToString()+",就是你啊!";
 txtHostname.Text = Dns.Resolve(Localhost.ToString()).AddressList.GetValue(0).ToString();
 lblSystem.Text = "待命中...";
 lblHttp.Text = "待命中...";
 lblFtp.Text = "待命中...";
 lblDns.Text = "待命中...";
 lblTelnet.Text = "待命中...";
 lblSmtp.Text = "待命中...";
 lblPop.Text = "待命中...";
 for(;i {
 IPListbox.Items.Add(Dns.Resolve(Localhost.ToString()).AddressList.GetValue(i).ToString());
 }
 }
 
 private void cmdExec_Click(object sender, System.EventArgs e)
 {
 IPAddress theIP;
 txtHostname.Focus();
 if(txtHostname.Text.Length==0)
 {
 MessageBox.Show("您可以输入要追捕的IP或者主机名称!但不能为空","系统提示");
 return; //false
 }
 try
 {
 int i = 0;
 int n = Dns.Resolve(txtHostname.Text.ToString()).AddressList.GetLength(0);
 IPListbox.Items.Clear();
 for(;i {
 IPListbox.Items.Add(Dns.Resolve(txtHostname.Text.ToString()).AddressList.GetValue(i).ToString());
 }
 theIP = (IPAddress)Dns.Resolve(txtHostname.Text.ToString()).AddressList.GetValue(0);
 lblIpInfo.Text = theIP.ToString();
 if(check1.Checked==true)
 {//
 lblSystem.Text = "检测中...";
 lblHttp.Text = "检测中...";
 lblFtp.Text = "检测中...";
 lblDns.Text = "检测中...";
 lblTelnet.Text = "检测中...";
 lblSmtp.Text = "检测中...";
 lblPop.Text = "检测中...";
 //检查服务
 DetectService(theIP);
 DetectPort(theIP);
 lblSystem.Text = strSystem.ToString();
 lblHttp.Text = strHttp.ToString();
 lblFtp.Text = strFtp.ToString();
 lblDns.Text = strDns.ToString();
 lblTelnet.Text = strTelnet.ToString();
 lblSmtp.Text = strSmtp.ToString();
 lblPop.Text = strPop.ToString();
 }
 
 if(check2.Checked==true)
 {
 //查IP 所在地区,未实现
 }
 }
 catch
 {
 MessageBox.Show("这个主机无法连接哦!\r\n请重新输入一个正确的吧!","系统提示");
 txtHostname.Text = "";
 txtHostname.Focus();
 lblIpInfo.Text = "无法连接或转换IP,所在地大概是外星球!";
 lblSystem.Text = "待命中...";
 lblHttp.Text = "待命中...";
 lblFtp.Text = "待命中...";
 lblDns.Text = "待命中...";
 lblTelnet.Text = "待命中...";
 lblSmtp.Text = "待命中...";
 lblPop.Text = "待命中...";
 }
 return;
 }
 
 private void DetectService(IPAddress theIP)
 {
 string tFtp = TcpConnect(theIP,21); //is ftp service
 string tTelnet = TcpConnect(theIP,23); //is Telnet service
 string tDns = TcpConnect(theIP,43); //is Dns service
 string tPop = TcpConnect(theIP,110); //is Pop3 service
 string tSmtp = TcpConnect(theIP,25); //is Mail smtp service
 if(tFtp!="None")strFtp = tFtp;
 if(tTelnet!="None")strTelnet = tTelnet;
 if(tDns!="None")strDns = tDns;
 if(tPop!="None")strPop = tPop;
 if(tSmtp!="None")strSmtp = tSmtp;
 
 TcpClient tcp = new TcpClient();
 tcp.Connect(theIP,80);
 int tHttpStart;
 string tHttp;
 string tMsg = "POST /index.htm HTTP/1.1\r\n" +
  "Connection: Keep-Alive\r\n\r\n";
 Stream sm = tcp.GetStream();
 sm.Write(Encoding.Default.GetBytes(tMsg.ToCharArray()),0,tMsg.Length);
 StreamReader sr = new StreamReader(tcp.GetStream(),Encoding.Default);
 while(sr.Peek()!=-1)
 {
 tHttp= sr.ReadLine();
 tHttpStart = tHttp.IndexOf("Server");
 if(tHttpStart!=-1)
 {
 strHttp = tHttp;
 break;
 }
 }
 tcp.Close();
 }
 
 private string TcpConnect(IPAddress theIP,int Port)
 {
 TcpClient tcp = new TcpClient();
 StreamReader sr;
 string result;
 try
 {
 checked
 {
 tcp.Connect(theIP,Port);
 sr = new StreamReader(tcp.GetStream().ToString(),Encoding.Default);
 result = sr.ReadLine().ToString();
 tcp.Close();
 }
 }
 catch
 {
 result = "None";
 }
 return result;
 }
 
 private void DetectPort(IPAddress theIP)
 {
 //is
 if(strHttp.IndexOf("Microsoft")!=-1)
 {
 strSystem = "Windows";
 if(strHttp.IndexOf("IIS")!=-1)
 {
 strSystem="Windows NT/2000";
 if(strHttp.IndexOf("5.0")!=-1)
 strSystem="Windows 2000";
 else
 strSystem="Windows NT";
 }
 }
 else if(strHttp.IndexOf("Apache")!=-1)
 {
 strSystem = "Unix/Linux";
 if(strHttp.IndexOf("Unix")!=-1)
 strSystem="Unix";
 }
 else
 {
 if(TcpConnect(theIP,139)!="None")
 strSystem="Windows 98/Me";
 else if(TcpConnect(theIP,1433)!="None")
 strSystem="Windows NT/2000";
 else
 strSystem="Windows/Linux/Unix";
 }
 }
 
 private void IPListbox_SelectedIndexChanged(object sender, System.EventArgs e)
 {
 lblIpInfo.Text = IPListbox.Text.ToString()+",所在地查询未实现!";
 txtHostname.Text = IPListbox.Text.ToString();
 }
 
 private void button1_Click(object sender, System.EventArgs e)
 {
 Application.Exit();
 }
 
 private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
 {
 linkLabel1.Show();
 }
 
 
 完整的代码和编译过的程序:http://202.103.224.224/icools/bbs/non-cgi/usr/5_2.zip
 
 记得一定要装 .NET FrameworkSDK beta2
 
 我是初学者,有问题一起研究!
 
 by 萧寒雪(S.F.)

相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 360快剪辑怎么使用 36金山词霸如何屏幕取词百度收购PPS已敲定!3

最新文章 微信3.6.0测试版更新了微信支付漏洞会造成哪 360快剪辑怎么使用 360快剪辑软件使用方法介酷骑单车是什么 酷骑单车有什么用Apple pay与支付宝有什么区别 Apple pay与贝贝特卖是正品吗 贝贝特卖网可靠吗

人气排行 xp系统停止服务怎么办?xp系统升级win7系统方电脑闹钟怎么设置 win7电脑闹钟怎么设置office2013安装教程图解:手把手教你安装与qq影音闪退怎么办 QQ影音闪退解决方法VeryCD镜像网站逐个数,电驴资料库全集同步推是什么?同步推使用方法介绍QQ2012什么时候出 最新版下载EDiary——一款好用的电子日记本