ÒýÑÔ£º Ò». ÕªÒª Raw Socket: ÔʼÌ×½Ó×Ö ¿ÉÒÔÓÃËüÀ´·¢ËͺÍ
ÕªÒª£º¼ÇµÃ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......