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

 

 ·´Ósubsystem¿ªÊ¼¸ÅÊöntÄںˠ   »ÏÔʾժҪ«
    ÕªÒª£º ʲôÊÇsubsystem£¿nt¼Ü¹¹£¨windows nt¡¢windows xp¡¢windows 2003£©µÄ³õʼÉè¼ÆÊǺÜÓÐÒ°Ðĵģ¬ËüÏ£ÍûÔÚntÉÏ¿ÉÒÔ²»¼ÓÐ޸ĵØÔËÐÐos2¡¢unix³ÌÐò¡£ËùÒÔÔÚntÖÐÓÐsubsystemµÄ¸ÅÄÿ¸ösubsystemÕë¶ÔÒ»¸öƽ̨£¬ntdll.dllÊÇËùÓÐsubsystemµÄ»ù´¡¡£»òÕß˵ntdll.dllͳһÌṩntϵͳµÄapi½Ó¿Ú£¬subsystemΪ¸÷¸öƽ̨µÄÓ¦ÓÃ......
    ÕªÒª£º ¡¡¡¡£ª£ª£ª¼ò¡¡½é£ª£ª£ª¡¡¡¡±¾ÎÄÊ×ÏȼòÒª½éÉÜÁËÒ»ÏÂwindowsÖеöÓë¼ÓËÙ¼ü±íÓйصÄapiº¯Êý¼°½á¹¹¡£È»ºó¶ÔÔÚwin32λ³ÌÐòÖÐʵÏÖ¼ÓËÙ¼ü±í½øÐÐÁË̽ÌÖ£¬·Ö±ð¾ÍapiϵÄjava/j2me/code/ target=_blank>³ÌÐòÉè¼Æ¼°mfcϵijÌÐòÉè¼Æ½øÐÐÁËÐðÊö¡£¡¡¡¡¶ÔÓÚÔËÐÐʱ¿É±à¼­µÄ¼ÓËÙ¼ü±í½öÔÚmfcϽøÐÐÁËÏêϸÃèÊö¡£°üÀ¨ÆäʵÏÖÔ­Àí£¬²¢Òýµ¼´ó¼Ò½¨Á¢ÁËÒ»¸öÓÃÓڱ༭¼ÓËÙ¼üµÄ¶Ô»°¿ò£¬º¬ÏêϸµÄ´ú......


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     &nbs
...   ÏÂÒ»Ò³
    ÕªÒª£ºÕýÔò±í´ïʽ×îʵÓõÄÒ»¸öµØ·½ÊÇÑéÖ¤Óû§ÊäÈë¡£Ëü¿ÉÒÔÇáËÉÑéÖ¤Óʱࡢµç»°ºÅÂë¡¢ÐÅÓÿ¨ºÅÂ롪¡ªÒÔ¼°ÏÖʵÊÀ½çÖи÷ÖÖÀàÐ͵ÄÐÅÏ¢¡£Ò»¸öÕýÔò±í´ïʽ¿ÉÒÔÌæ»»³É´òÉõÖÁÉϰÙÐйý³Ì´úÂë¡£unix ºÍ web ±à³ÌÓïÑÔÈç perl´ÓÒ»¿ªÊ¼¾ÍÓÐÕýÔò±í´ïʽ£¬µ«ÔÚ windows ÊÀ½ç»òmfc£¬´ÓÀ´¶¼ÊÇʹÓõÚÈý·½¿â£¬Ò»Ö±µ½ .net ¿ò¼Ü²Å½áÊøÕâ¸ö¾ÖÃæ¡£Òò´ËÏÖÔÚ .net Ìṩһ¸öÍêÕûµÄÕýÔò±í´ïʽ¿â£¬ÎªÊ²Ã´²»ÔÚmfcÓ¦ÓóÌÐòÖÐʹ......
» ±¾ÆÚÈÈÃÅÎÄÕ£º
· ÈÈÃÅÀ¸Ä¿£º
» Ïà¹Ø¾«Ñ¡ÎÄÕÂ
» ÆäËüÏà¹Ø£º

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