• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-9  評(píng)論-6  文章-5  trackbacks-0
            包已經(jīng)發(fā)出,但是偽造IP,無法實(shí)現(xiàn)3次握手,在服務(wù)器端,包將被丟棄。繼續(xù)研究。

            //?stdafx.h?:?標(biāo)準(zhǔn)系統(tǒng)包含文件的包含文件,
            //?或是經(jīng)常使用但不常更改的
            //?特定于項(xiàng)目的包含文件
            //

            #pragma?once

            #include?
            "targetver.h"

            #include?
            <stdio.h>
            #include?
            <tchar.h>
            #include?
            <iostream>?

            using?namespace?std;

            typedef?unsigned?
            short?USHORT;
            typedef?unsigned?
            char?UCHAR;

            #define?URG?0x20?
            #define?ACK?0x10?
            #define?PSH?0x08?
            #define?RST?0x04?
            #define?SYN?0x02?
            #define?FIN?0x01?

            typedef?
            struct?ip_hdr?//定義IP首部?
            {?
            ????unsigned?
            char?h_verlen;?//4位首部長度,4位IP版本號(hào)?
            ????unsigned?char?tos;?//8位服務(wù)類型TOS?
            ????unsigned?short?total_len;?//16位總長度(字節(jié))?
            ????unsigned?short?ident;?//16位標(biāo)識(shí)?
            ????unsigned?short?frag_and_flags;?//3位標(biāo)志位?
            ????unsigned?char?ttl;?//8位生存時(shí)間?TTL?
            ????unsigned?char?proto;?//8位協(xié)議?(TCP,?UDP?或其他)?
            ????unsigned?short?checksum;?//16位IP首部校驗(yàn)和?
            ????unsigned?int?sourceIP;?//32位源IP地址?
            ????unsigned?int?destIP;?//32位目的IP地址?
            }IPHEADER;?

            typedef?
            struct?tsd_hdr?//定義TCP偽首部?
            {?
            ????unsigned?
            long?saddr;?//源地址?
            ????unsigned?long?daddr;?//目的地址?
            ????char?mbz;?
            ????
            char?ptcl;?//協(xié)議類型?
            ????unsigned?short?tcpl;?//TCP長度?
            }PSDHEADER;?

            typedef?
            struct?tcp_hdr?//定義TCP首部?
            {?
            ????USHORT?th_sport;?
            //16位源端口?
            ????USHORT?th_dport;?//16位目的端口?
            ????unsigned?int?th_seq;?//32位序列號(hào)?
            ????unsigned?int?th_ack;?//32位確認(rèn)號(hào)?
            ????unsigned?char?th_lenres;?//4位首部長度/6位保留字?
            ????unsigned?char?th_flag;?//6位標(biāo)志位?
            ????USHORT?th_win;?//16位窗口大小?
            ????USHORT?th_sum;?//16位校驗(yàn)和?
            ????USHORT?th_urp;?//16位緊急數(shù)據(jù)偏移量?
            }TCPHEADER;?





            //?TODO:?在此處引用程序需要的其他頭文件

            #include?"StdAfx.h"
            #include?
            "HttpWeb.h"

            #include?
            <winsock2.h>?
            #include?
            <ws2tcpip.h>?
            #pragma?comment(lib,
            "ws2_32.lib")??
            #define?winsock_version?0x0101

            //CheckSum:計(jì)算校驗(yàn)和的子函數(shù)?
            USHORT?HttpWeb::checksum(USHORT?*buffer,?int?size)?
            {?
            ????unsigned?
            long?cksum=0;?
            ????
            while(size?>1)?
            ????{?
            ????????cksum?
            +=?*buffer++;?
            ????????size?
            -=?sizeof(USHORT);?
            ????}?
            ????
            if(size)?
            ????{?
            ????????cksum?
            +=?*(UCHAR*)buffer;?
            ????}?

            ????cksum?
            =?(cksum?>>?16)?+?(cksum?&?0xffff);?
            ????cksum?
            +=?(cksum?>>16);?
            ????
            return?(USHORT)(~cksum);?
            };

            HttpWeb::HttpWeb(
            void)
            {
            }

            HttpWeb::
            ~HttpWeb(void)
            {
            }

            void?UseAge()
            {
            ????printf(
            "********************************************************************\n");?
            ????printf(
            "Vote?For?yeshj\n");?
            ????printf(
            "\t?Written?by?yurow\n");?
            ????printf(
            "\t?Email:?yurow@163.com\n");?
            ????printf(
            "\t?Blog:?birdshover.cnblogs.com\n");?
            ????printf(
            "Useage:?sniffer?ip?to?vote\n");?
            ????printf(
            "********************************************************************\n");?
            }

            bool?HttpWeb::Post(char?host[],?char?path[],?char?parms[],int?port)
            {
            ????UseAge();

            ????WSADATA?WSAData;?
            ????SOCKET?sock;
            ????SOCKADDR_IN?addr_in;?
            ????IPHEADER?ipHeader;?
            ????TCPHEADER?tcpHeader;?
            ????PSDHEADER?psdHeader;?

            ????
            char?szSendBuf[4000]?=?{0};?
            ????BOOL?flag;
            ????
            int?rect,nTimeOver;?
            ????
            if?(WSAStartup(MAKEWORD(2,2),?&WSAData)!=0)?
            ????{
            ????????printf(
            "WSAStartup?Error!\n");?
            ????????
            return?false;?
            ????}

            ????
            if?((sock?=?WSASocket(AF_INET,SOCK_RAW,IPPROTO_RAW,NULL,0,WSA_FLAG_OVERLAPPED))?==?INVALID_SOCKET)?
            ????{
            ????????printf(
            "Socket?Setup?Error!\n");?
            ????????
            return?false;?
            ????}

            ????flag
            =true;?
            ????
            if?(setsockopt(sock,IPPROTO_IP,?IP_HDRINCL,(char?*)&flag,sizeof(flag))?==?SOCKET_ERROR)?
            ????{?
            ????????printf(
            "setsockopt?IP_HDRINCL?error!\n");?
            ????????
            return?false;?
            ????}?

            ????nTimeOver
            =1000;?
            ????
            if?(setsockopt(sock,?SOL_SOCKET,?SO_SNDTIMEO,?(char*)&nTimeOver,?sizeof(nTimeOver))?==?SOCKET_ERROR)?
            ????{?
            ????????printf(
            "setsockopt?SO_SNDTIMEO?error!\n");?
            ????????
            return?false;?
            ????}?

            ????
            char?requestString[4000]?=?{0};
            ????
            if(strlen(parms)?>?0)
            ????????strcat(requestString,
            "POST?");
            ????
            else
            ????????strcat(requestString,
            "GET?");
            ????strcat(requestString,path);
            ????strcat(requestString,
            "?HTTP/1.1\r\n");
            ????strcat(requestString,
            "Host:?");
            ????strcat(requestString,host);
            ????strcat(requestString,
            "\r\nAccept:?*/*\r\n");
            ????strcat(requestString,
            "Accept-Language:?zh-cn\r\n");
            ????strcat(requestString,
            "User-Agent:?Mozilla/4.0?(compatible;?MSIE?7.0;?Windows?NT?5.2;?Trident/4.0;)\r\n");
            ????strcat(requestString,
            "Accept-Encoding:?gzip,?deflate\r\n");
            ????strcat(requestString,
            "Connection:?Keep-Alive\r\n");
            ????
            ????
            if(strlen(parms)?>?0){
            ????????strcat(requestString,
            "Content-Type:?application/x-www-form-urlencoded\r\n");
            ????????strcat(requestString,
            "Content-Length:?");
            ????????
            char?*?p?=?new?char[4];
            ????????itoa(strlen(parms),p,
            10);???
            ????????strcat(requestString,p);
            ????????strcat(requestString,
            "\r\n\r\n");
            ????????strcat(requestString,parms);
            ????????strcat(requestString,
            "\r\n\r\n");
            ????}
            ????cout?
            <<?requestString;

            ????
            int?postDataLength?=?strlen(requestString);
            ????LPHOSTENT?lphostent?
            =?gethostbyname(host);
            ????
            ????
            ????addr_in.sin_family?
            =?AF_INET;?
            ????addr_in.sin_port?
            =?htons(port);?
            ????
            //addr_in.sin_addr=?*((LPIN_ADDR)*lphostent->h_addr_list);?
            ????addr_in.sin_addr?=?*(in_addr?*)lphostent->h_addr_list[0];?
            ????
            //填充IP首部?
            ????ipHeader.h_verlen=(?4<<4?|?sizeof(ipHeader)/sizeof(unsigned?long));?
            ????
            //ipHeader.tos=0;?
            ????ipHeader.total_len?=?htons(sizeof(ipHeader)?+?sizeof(tcpHeader));?
            ????ipHeader.ident
            =1;?
            ????ipHeader.frag_and_flags
            =0;?
            ????ipHeader.ttl?
            =?128;?
            ????ipHeader.proto?
            =?IPPROTO_TCP;?
            ????ipHeader.checksum?
            =?0;?
            ????ipHeader.sourceIP?
            =?inet_addr("192.168.19.1");?
            ????ipHeader.destIP?
            =?addr_in.sin_addr.S_un.S_addr;

            ????
            //填充TCP首部?
            ????tcpHeader.th_dport?=?htons(port);??//目標(biāo)端口
            ????tcpHeader.th_sport=htons(4000);?//源端口號(hào)?
            ????tcpHeader.th_seq?=?htonl(0x12345678);?
            ????tcpHeader.th_ack
            =0;?
            ????tcpHeader.th_lenres?
            =?(sizeof(tcpHeader)?/?4?<<4|?0);?
            ????tcpHeader.th_flag?
            =?2;?//修改這里來實(shí)現(xiàn)不同的標(biāo)志位探測,2是SYN,1是FIN,16是ACK探測?等等?
            ????tcpHeader.th_win=?htons(512);?
            ????tcpHeader.th_urp
            =0;?
            ????tcpHeader.th_sum
            =0;?

            ????psdHeader.saddr?
            =?ipHeader.sourceIP;?
            ????psdHeader.daddr?
            =?ipHeader.destIP;?
            ????psdHeader.mbz?
            =?0;?
            ????psdHeader.ptcl?
            =?IPPROTO_TCP;?
            ????psdHeader.tcpl?
            =?htons(sizeof(tcpHeader));?


            ????
            //計(jì)算校驗(yàn)和?
            ????memcpy(szSendBuf,?&psdHeader,?sizeof(psdHeader));?
            ????memcpy(szSendBuf
            +sizeof(psdHeader),?&tcpHeader,?sizeof(tcpHeader));?
            ????tcpHeader.th_sum
            =checksum((USHORT?*)szSendBuf,sizeof(psdHeader)+sizeof(tcpHeader));?

            ????memcpy(szSendBuf,?
            &ipHeader,?sizeof(ipHeader));?
            ????memcpy(szSendBuf
            +sizeof(ipHeader),?&tcpHeader,?sizeof(tcpHeader));?
            ????memset(szSendBuf
            +sizeof(ipHeader)+sizeof(tcpHeader),?0,?4);?
            ????ipHeader.checksum
            =checksum((USHORT?*)szSendBuf,?sizeof(ipHeader)+sizeof(tcpHeader));?

            ????memcpy(szSendBuf,?
            &ipHeader,?sizeof(ipHeader));?

            ????memcpy(szSendBuf?
            +?sizeof(ipHeader)+sizeof(tcpHeader),requestString,postDataLength);

            ????cout?
            <<?szSendBuf?<<?endl;

            ????rect
            =sendto(sock,?szSendBuf,?sizeof(ipHeader)+sizeof(tcpHeader)?+?postDataLength,?0,?(struct?sockaddr*)&addr_in,?sizeof(addr_in));?
            ????
            ????cout?
            <<?rect?<<?"\t"?<<?sizeof(ipHeader)?+?sizeof(tcpHeader)?+?postDataLength?<<?endl;
            ????
            ????
            if?(rect?==?SOCKET_ERROR?||?rect?>?10000L)?
            ????{?
            ????????printf(
            "send?error!:%d\n",WSAGetLastError());?
            ????????
            return?false;?
            ????}?
            ????
            else?
            ????????printf(
            "send?ok!\n");?

            ????closesocket(sock);?
            ????WSACleanup();?

            ????
            return?false;
            }

            posted on 2008-11-10 16:43 BirdsHover 閱讀(3265) 評(píng)論(2)  編輯 收藏 引用

            評(píng)論:
            # re: Raw Socket 之HTTP,效果不理想 2008-11-12 17:27 | smildlzj@hotmail.com
            我以前也試過,如果在同一個(gè)局域網(wǎng)就可以.
            通過mac地址,從鏈路層驗(yàn)證的  回復(fù)  更多評(píng)論
              
            # re: Raw Socket 之HTTP,效果不理想 2008-11-22 13:43 | lxsd@21cn.com
            我也剛弄了個(gè),是用C#,想模擬正常HTTP連接。
            TCPFlags設(shè)為0x2,用EndReceive接收服務(wù)器返回的正確握手信息,但在客戶端在調(diào)用BeginReceive再次偵聽后,向服務(wù)器端回發(fā)了一個(gè)flags為0x4的復(fù)位包。如此,后續(xù)進(jìn)程無法進(jìn)行。暈了好幾天了。  回復(fù)  更多評(píng)論
              

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            亚洲欧美成人久久综合中文网| 国内精品伊人久久久久av一坑| 亚洲狠狠婷婷综合久久久久| 久久亚洲视频| 99热热久久这里只有精品68| 青草影院天堂男人久久| 国产精品久久久久影院嫩草| 久久国产乱子伦精品免费强| 国产精品久久久久久影院| 色偷偷888欧美精品久久久| 久久福利青草精品资源站| 午夜不卡888久久| 久久精品国产亚洲5555| 久久亚洲中文字幕精品一区四 | 国产99精品久久| 99久久人妻无码精品系列| 精品久久久久久国产91| www亚洲欲色成人久久精品| 精品国产乱码久久久久久浪潮| 国产精品亚洲美女久久久| 久久夜色精品国产亚洲av| 老男人久久青草av高清| 久久久久免费精品国产| 婷婷久久久亚洲欧洲日产国码AV | 超级碰碰碰碰97久久久久| 久久精品aⅴ无码中文字字幕不卡| 人妻精品久久无码专区精东影业| 狠狠色婷婷久久一区二区三区| 狠狠精品久久久无码中文字幕| 久久久久综合国产欧美一区二区 | 国产情侣久久久久aⅴ免费| 99久久精品国产一区二区三区 | 青青青国产成人久久111网站| 欧美一级久久久久久久大片| 亚洲国产精品无码久久久秋霞2| 久久777国产线看观看精品| 婷婷久久综合九色综合绿巨人| 久久久久亚洲AV片无码下载蜜桃| 久久精品国产亚洲精品| 久久久久久亚洲精品成人| 欧美国产成人久久精品|