国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

兩個獲取http頁面的c#函數

2024-07-21 02:24:39
字體:
來源:轉載
供稿:網友

    埋頭苦干一天終于搞定!一個用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 ;
        }


那個掃描漏洞的應用程序包括源代碼我將整理后放到我的站點,如果你需要可以來下載。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍邱县| 桂东县| 策勒县| 威海市| 贵德县| 浪卡子县| 同江市| 中宁县| 义马市| 海晏县| 曲松县| 蓬溪县| 萍乡市| 新安县| 沙雅县| 金寨县| 金平| 易门县| 松原市| 石阡县| 准格尔旗| 邵阳县| 龙胜| 金门县| 修武县| 富宁县| 富蕴县| 满城县| 始兴县| 甘谷县| 永和县| 大丰市| 龙南县| 济宁市| 池州市| 绵阳市| 贵州省| 吉木乃县| 安福县| 永福县| 望谟县|