µ±Ç°Î»ÖãºÊ×Ò³ » Èí¼þ¿ª·¢
¿ª·¢¼¼ÊõÖ¸ÄÏ» ÎÄÕÂÕýÎÄ
    ÒýÑÔ£º Ò». ÕªÒª Raw Socket: ԭʼÌ×½Ó×Ö ¿ÉÒÔÓÃËüÀ´·¢ËͺÍ
 

 

 ·tiny-exforce ÓÎÏ·´úÂë     »ÏÔʾժҪ«
    ÕªÒª£º¼ÇµÃ1997ÄêÄǸö½Ð"omniscent"µÄdemoÒýÆðÁ˺ܶàÈ˵ÄÐËȤ£¬½ñÌìÎÒдÁËÁíÍâÒ»¸ö£¬¸ü¼òµ¥ÁË£¬Ò²¸ü¶ÌСÁË :-) £¨´ËΪ×ÔÈ¥Äê¾ÅÔµ½ÏÖÔÚÈý´Î·¢²¼ÖеÄ×îÖÕ°æ±¾: exforce£©ÔÚdos´°¿ÚÖÐÔËÐÐdebug£¬È»ºó°ÑºáÏßϵÄÄÚÈݸ´ÖÆ¡¢Õ³Ìùµ½debug´°¿ÚÖУ¬»Ø³µ¾Í¿ÉÒÔ¼ûµ½ÁË¡£ -------------------------------------------------......
    ÕªÒª£º±¾ÎĽéÉÜÁ½ÖÖÓÃgdiº¯ÊýʵÏÖ»æÖÆÎ»Í¼Ê±Ö»»æÖƳýÖ¸¶¨ÑÕÉ«ÍâµÄ²¿·Ö£¬´ïµ½“͸Ã÷”µÄЧ¹ûµÄ·½·¨£º1. ÓÃbitbltʵÏÖλͼÉÏijÖÖÑÕÉ«µÄ͸Ã÷ÏÔʾ2. ÓÃmaskbltʵÏÖλͼÉÏijÖÖÑÕÉ«µÄ͸Ã÷ÏÔʾ Ϊ·½±ãÆð¼û£¬ÓÃmfc·½Ê½ÌÖÂÛ¡£ÏÈÓÐÈçÏµĶ¨Ò壺cdc *pdc; // Ä¿±êdc£¬¼ÙÉèÒÑcreate£¬Î»Í¼ÒÑÑ¡Èëcdc *pactivedc; // ×°ÔØÎ»Í¼µÄdc¡£¼ÙÉèÒÑcreat......


Sniffer ʵÏÖÖ® Óà Raw Socket ʵÏÖ Sniffer(1)
Ò». ÕªÒª    raw socket: ԭʼÌ×½Ó×Ö    ¿ÉÒÔÓÃËüÀ´·¢ËÍÓë½ÓÊÕ ip ²ãÒÔÉϵÄԭʼÊý¾Ý°ü, Èç icmp, tcp, udp...        int sockraw = socket(af_inet, sock_raw, ipproto_raw);    ÕâÑùÎÒÃǾʹ´½¨ÁËÒ»¸ö raw socket    sniffer: Ðá̽Æ÷    ¹ØÓÚÐá̽Æ÷µÄÔ­ÀíÎÒÏë´ó¶àÊýÈË¿ÉÄܶ¼ÖªµÀ    1. °ÑÍø¿¨ÖÃÓÚ»ìÔÓģʽ;    2. ²¶»ñÊý¾Ý°ü;    3. ·ÖÎöÊý¾Ý°ü.    µ«¾ßÌåµÄʵÏÖÖªµÀµÄÈ˿֞Ͳ»ÊÇÄÇô¶àÁË. ºÃ, ÏÖÔÚÈÃÎÒÃÇÓà raw socket µÄ×öÒ»¸ö×ÔÒÑµÄ sniffer.¶þ. °ÑÍø¿¨ÖÃÓÚ»ìÔÓģʽ    ÔÚÕý³£µÄÇé¿öÏÂ,Ò»¸öÍøÂç½Ó¿ÚÓ¦¸ÃÖ»ÏìÓ¦Á½ÖÖÊý¾ÝÖ¡:    Ò»ÖÖÊÇÓë×Ô¼ºÓ²¼þµØÖ·ÏàÆ¥ÅäµÄÊý¾ÝÖ¡    Ò»ÖÖÊÇ·¢ÏòËùÓлúÆ÷µÄ¹ã²¥Êý¾ÝÖ¡    Èç¹ûÒªÍø¿¨½ÓÊÕËùÓÐͨ¹ýËüµÄÊý¾Ý, ¶ø²»¹ÜÊDz»ÊÇ·¢¸øËüµÄ, ÄÇô±ØÐë°ÑÍø¿¨ÖÃÓÚ»ìÔÓģʽ. Ò²¾ÍÊÇ˵ÈÃËüµÄ˼ά»ìÂÒ, ²»°´Õý³£µÄ·½Ê½¹¤×÷. Óà raw socket ʵÏÖ´úÂëÈçÏÂ:        setsockopt(sock, ipproto_ip, ip_hdrincl, (char*)&flag, sizeof(flag); //ÉèÖà ip Í·²Ù×÷Ñ¡Ïî        bind(sockraw, (psockaddr)&addrlocal, sizeof(addrlocal); //°Ñ sockraw °ó¶¨µ½±¾µØÍø¿¨ÉÏ        ioctlsocket(sockraw, sio_rcvall, &dwvalue);             //Èà sockraw ½ÓÊÜËùÓеÄÊý¾Ý    flag ±êÖ¾ÊÇÓÃÀ´ÉèÖà ip Í·²Ù×÷µÄ, Ò²¾ÍÊÇ˵ҪÇ××Ô´¦Àí ip Í·: bool flag = ture;    addrlocal Ϊ±¾µØµØÖ·: sockaddr_in addrlocal;    dwvalue ΪÊäÈëÊä³ö²ÎÊý, Ϊ 1 ʱִÐÐ, 0 ʱȡÏû: dword dwvalue = 1;    ûÏëµ½Õâô¼òµ¥°É?Èý. ²¶»ñÊý¾Ý°ü    ÄãµÄ sockraw ÏÖÔÚÒѾ­ÔÚ¹¤×÷ÁË, ¿ÉÒÔÔÚ¾ÖÓòÍøÄÚÆäËüµÄµçÄÔÉÏÓà sniffer ¼ì²â¹¤¾ß¼ì²âÒ»ÏÂ, ¿´ÄãµÄÍø¿¨ÊÇ·ñ´¦ÓÚ»ìÔÓģʽ(±ÈÈç digitalbrain µÄ arpkiller).    ²»ÄÜÈÃËû°×°×µÄÀË·Ñ×ÊÔ´°¡, ×¥°ü!        recv(sockraw, recvbuf, buffer_size, 0); //½ÓÊÜÈÎÒâÊý¾Ý°ü    #define buffer_size 65535    char recvbuf[buffer_size];    Ô½À´Ô½·¢ÏÖ sniffer Ô­À´Èç´ËµÄ¼òµ¥ÁË, Õâôһ¸öº¯Êý¾ÍÒѾ­Íê³ÉץȡÊý¾Ý°üµÄÈÎÎñÁË.ËÄ. ·ÖÎöÊý¾Ý°ü    Õâ»Ø×¥À´µÄ°üÓëÆ½³£Óà socket ½ÓÊÜİü¿É¾Í²»ÊÇÒ»»ØÊ¶ùÁ? ÀïÃæ°üº¬ ip, tcp µÈԭʼÐÅÏ¢. Òª·ÖÎöËüÊ×ÏȵÃÖªµÀÕâЩ½á¹¹.    Êý¾Ý°üµÄ×ÜÌå½á¹¹:    ----------------------------------------------    | ip header | tcp header(or x header) | data |     ----------------------------------------------    ip header structure:             4        8        16                                       32 bit    |--------|--------|----------------|--------------------------------|    |  ver   |  ihl   |type of service |          total length      
...   ÏÂÒ»Ò³
    ÕªÒª£º getrecordcountµÄʹÓÃÎÊÌâÔÚ¼¼ÊõÉçÇøÀïÒ²ÌÖÂۺܶà´Î£¬Ò»°ãµÄ½¨Òé¶¼ÊǾ¡Á¿²»Ê¹ÓÃÕâ¸öº¯Êý£¬ÒªÊ¹ÓÃÒ²ÊÇÏÈͨ¹ýÑ­»·movefirst¡¢movenext±éÀúºóÔÚʹÓᣵ«ÊÇÕâÑù¸Ð¾õºÜÂé·³Ò²²»ÊǺܰ²È«£¬ÒòΪÈç¹ûûÓмǼºÜÄѱ£Ö¤movefirst²»Å׳öÒì³££¬µ±È»Ò²¿ÉÒÔʹÓÃtry{...}¡¢catch(_com_error &e){...}·½Ê½À´²¶×½Òì³£¡£ËùÒÔÁíÒ»ÖÓ¸ü³£¼ûµÄ·½Ê½¾ÍÊÇʹÓÃsele......
» ±¾ÆÚÈÈÃÅÎÄÕ£º
· ÈÈÃÅÀ¸Ä¿£º
» Ïà¹Ø¾«Ñ¡ÎÄÕÂ
» ÆäËüÏà¹Ø£º

©2000-2007 All Rights Reserved. ×î¼Ñä¯ÀÀ£º1024X768 MSIE