您的位置:首页技术开发ASP技巧 → 两个获取http页面的c#函数

两个获取http页面的c#函数

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

埋头苦干一天终于搞定!一个用C#写的windows应用程序,作用嘛,就是对asp程序已知的20种漏洞进行扫描,显示源程序。在这个应用程序中用到两种获得http页面的方法,一种是直接用httpwebrequest类,而另一种是同服务器通过tcp/ip建立socket连接,直接查询端口80 , 为此我写了以下两个函数,第一个比较简单,参数只有一个,就是要求的url , 另外一个比较复杂,也很通用,不仅可以请求http页面,还可以和其他端口通信,如端口43的whois,端口25的smtp,端口21的ftp甚至pop3等等,三个参数分别是主机名,请求命令和端口。好了,看程序吧。



        //获取http页面函数

        private string Get_Http(string a_strUrl)

        {

            string strResult ;

            HttpWebRequest myReq = (HttpWebRequest)

                                   WebRequestFactory.Create(a_strUrl) ;



            try

            {

                HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();

                Stream myStream = HttpWResp.GetResponseStream () ;



                StreamReader sr = new StreamReader(myStream , Encoding.Default);

                StringBuilder strBuilder = new StringBuilder();

                while (-1 != sr.Peek())

                {

                    strBuilder.Append(sr.ReadLine()+"\r\n");

                }

                

                strResult = strBuilder.ToString();

            }

            catch(Exception exp)

            {

                 strResult = "错误:" + exp.Message ;

            }



            return strResult ;

            

        }





        //通过同server建立tcp/ip连接,发送socket命令

        private string Get_Socket_Request(string a_strServer , string a_strRequest , Int32 a_intPort)

        {

            //Set up variables and String to write to the server

            Encoding ASCII = Encoding.Default ;

            string Get = a_strRequest + "Connection: Close\r\n\r\n";

            //string Get =

            Byte[] ByteGet = ASCII.GetBytes(Get);

            Byte[] RecvBytes = new Byte[256];

            String strRetPage = null;



            // IPAddress and IPEndPoint represent the endpoint that will

            //   receive the request

            IPAddress hostadd = DNS.Resolve(a_strServer.Substring(7 ,a_strServer.Length - 7));

            IPEndPoint EPhost = new IPEndPoint(hostadd, a_intPort);



            //Create the Socket for sending data over TCP

            Socket s = new Socket(AddressFamily.AfINet, SocketType.SockStream,

                                    ProtocolType.ProtTCP );



            // Connect to host using IPEndPoint

            if (s.Connect(EPhost) != 0)

            {

                strRetPage = "Unable to connect to host";

                return strRetPage;

            }



            // Sent the GET text to the host

            s.Send(ByteGet, ByteGet.Length, 0);



            // Receive the page, loop until all bytes are received

            Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);

            strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);



            while (bytes > 0)

            {

                bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);

                strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);

            }



            return strRetPage ;

        }





那个扫描漏洞的应用程序包括源代码我将整理后放到我的站点,如果你需要可以来下载。




相关阅读 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是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 VB.NET 2005编写定时关 Jquery get/post下乱码解决方法 前台gbk gb如何使用数据绑定控件显示数据ASP脚本循环语句ASP怎么提速

人气排行 轻松解决"Server Application Error"和iis"一起学习DataGridView调整列宽用ASP随机生成文件名的函数Jquery get/post下乱码解决方法 前台gbk gbODBC Drivers错误80004005的解决办法返回UPDATE SQL语句所影响的行数的方法用Javascript隐藏超级链接的真实地址两个不同数据库表的分页显示解决方案