¸üÐÂʱ¼ä:2016Äê08ÔÂ24ÈÕ10ʱ33·Ö À´Ô´:ÀÖÓã²¥¿ÍC++ÅàѵѧԺ ä¯ÀÀ´ÎÊý:
| ¸ÅÊö
ͨ¹ý¡¶ÔʼÌ×½Ó×ÖʵÀý£º·¢ËÍ UDP Êý¾Ý°ü¡·µÄѧϰ£¬ÎÒÃÇ×é UDP Êý¾Ý°üʱ³£¿¼ÂÇ×Ö½ÚÁ÷˳Ðò¡¢Ð£ÑéºÍ¼ÆËãµÈÎÊÌ⣬ÓÐʱºò»á±È½Ï·±Ëö£¬ÄÇô£¬ÓÐûÓÐÒ»ÖÖ¸ü¼òµ¥µÄ·½·¨ÄØ£¿´ð°¸ÊÇ£º½èÖú libnet º¯Êý¿â¡£ libnet ÊÇÒ»¸öСÐ͵Ľӿں¯Êý¿â£¬Ö÷ÒªÓà C ÓïÑÔд³É£¬ÌṩÁ˵ͲãÍøÂçÊý¾Ý°üµÄ¹¹Ôì¡¢´¦ÀíºÍ·¢Ë͹¦ÄÜ¡£ libnet µÄ¿ª·¢Ä¿µÄÊÇ£º½¨Á¢Ò»¸ö¼òµ¥Í³Ò»µÄÍøÂç±à³Ì½Ó¿ÚÒÔÆÁ±Î²»Í¬²Ù×÷ϵͳµ×²ãÍøÂç±à³ÌµÄ²î±ð£¬Ê¹µÃ³ÌÐòÔ±½«¾«Á¦¼¯ÖÐÔÚ½â¾ö¹Ø¼üÎÊÌâÉÏ¡£ libnet ¿âÌṩµÄ½Ó¿Úº¯Êý°üº¬ 15 ÖÖÊý¾Ý°üÉú³ÉÆ÷ºÍÁ½ÖÖÊý¾Ý°ü·¢ËÍÆ÷£¨IP ²ãºÍÊý¾ÝÁ´Â·²ã£©¡£ 1£©ÄÚ´æ¹ÜÀí£¨·ÖÅäºÍÊÍ·Å£©º¯Êý |

ÀûÓÃlibnetº¯Êý¿â¿ª·¢Ó¦ÓóÌÐòµÄ»ù±¾²½Ö裺
1£©Êý¾Ý°üÄÚ´æ³õʼ»¯
2£©¹¹ÔìÊý¾Ý°ü
3£©·¢ËÍÊý¾Ý
4£©ÊÍ·Å×ÊÔ´
ÒÔ·¢ËÍ UDP Êý¾Ý°üΪÀý£¬Á÷³ÌͼÈçÏ£º

ÕâÀïÐèҪעÒâµÄÊÇ×é°üµÄ˳Ðò£¬ÓÉÉϲãÔÙµ½µ×²ã£¬ÕâÀïΪ udp -> ip -> mac£¬²»ÄÜ·´¹ýÀ´¡£
ÒÔϺ¯ÊýµÄʹÓÃÐèÒª°üº¬Í·Îļþ£º libnet.h
libnet_t *libnet_init(int injection_type, char *device, char *err_buf);
¹¦ÄÜ£º
Êý¾Ý°üÄÚ´æ³õʼ»¯¼°»·¾³½¨Á¢
²ÎÊý£º
injection_type£º¹¹ÔìµÄÀàÐÍ
LIBNET_LINK£¬Á´Â·²ãLIBNET_RAW4£¬ÍøÂç½Ó¿Ú²ã£¨ÍøÂç²ã£©
LIBNET_LINK_ADV£¬Á´Â·²ã¸ß¼¶°æ±¾
LIBNET_RAW4_ADV£¬ ÍøÂç²ã¸ß¼¶°æ±¾
device£ºÍøÂç½Ó¿Ú£¬Èç "eth0"£¬»ò IP µØÖ·£¬Òà¿ÉΪ NULL (×Ô¶¯²éѯËÑË÷)
err_buf£º´æ·Å³ö´íµÄÐÅÏ¢
·µ»ØÖµ£º
³É¹¦£ºÒ»¸ö libnet * ÀàÐ͵ÄÖ¸Õ룬ºóÃæµÄ²Ù×÷¶¼µÃʹÓÃÕâ¸öÖ¸Õë
ʧ°Ü£ºNULL
void libnet_destroy(libnet_t *l);
¹¦ÄÜ£º
ÊÍ·Å×ÊÔ´
²ÎÊý£º
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
·µ»ØÖµ£º
ÎÞ
char* libnet_addr2name4(u_int32_t in, u_int8_t use_name);
¹¦ÄÜ£º
½«ÍøÂç×Ö½ÚÐòת»»³Éµã·ÖÊ®½øÖÆÊý´®
²ÎÊý£º
in£ºÍøÂç×Ö½ÚÐòµÄ ip µØÖ·
use_name£º
LIBNET_RESOLVE£¬ ¶ÔÓ¦Ö÷»úÃûLIBNET_DONT_RESOLVE£¬¶ÔÓ¦µã·ÖÊ®½øÖÆ IPv4 µØÖ·
·µ»ØÖµ£º
³É¹¦£ºµã·ÖÊ®½øÖÆ ip µØÖ·
ʧ°Ü£ºNULL
u_int32_t libnet_name2addr4(libnet_t *l, char *host_name, u_int8_t use_name);
¹¦ÄÜ£º
½«µã·ÖÊ®½øÖÆÊý´®×ª»»ÎªÍøÂç×Ö½ÚÐò ip µØÖ·
²ÎÊý£º
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
host_name£º
LIBNET_RESOLVE£¬ ¶ÔÓ¦Ö÷»úÃûLIBNET_DONT_RESOLVE£¬¶ÔÓ¦µã·ÖÊ®½øÖÆ IPv4 µØÖ·
·µ»ØÖµ£º
³É¹¦£ºÍøÂç×Ö½ÚÐò ip µØÖ·
ʧ°Ü£º-1
u_int32_t libnet_get_ipaddr4(libnet_t *l);
¹¦ÄÜ£º
»ñÈ¡½Ó¿ÚÉ豸 ip µØÖ·
²ÎÊý£º
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
·µ»ØÖµ£º
³É¹¦£ºÍøÂç×Ö½ÚÐòµÄ ip µØÖ·
ʧ°Ü£º-1
struct libnet_ether_addr* libnet_get_hwaddr(libnet_t *l);
¹¦ÄÜ£º
»ñÈ¡½Ó¿ÚÉ豸Ӳ¼þµØÖ·
²ÎÊý£º
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
·µ»ØÖµ£º
³É¹¦£ºÖ¸Ïò MAC µØÖ·µÄÖ¸Õë
ʧ°Ü£ºNULL
libnet_ptag_t libnet_build_udp(
u_int16_t sp, u_int16_t dp,u_int16_t len, u_int16_t sum,u_int8_t *payload, u_int32_t payload_s,libnet_t *l, libnet_ptag_t ptag);
¹¦ÄÜ£º
¹¹Ôì udp Êý¾Ý°ü
²ÎÊý£º
sp: Ô´¶Ë¿ÚºÅ
dp£ºÄ¿µÄ¶Ë¿ÚºÅ
len£ºudp °ü×ܳ¤¶È
sum£ºÐ£ÑéºÍ£¬ÉèΪ 0£¬libnet ×Ô¶¯Ìî³ä
payload£º¸ºÔØ£¬Îª¸øÓ¦ÓóÌÐò·¢Ë͵ÄÎı¾ÄÚÈÝ£¬Ã»ÓÐÄÚÈÝʱ¿ÉÉèÖÃΪ NULL
payload_s£º¸ºÔس¤¶È£¬¸øÓ¦ÓóÌÐò·¢ËÍÎı¾ÄÚÈݵij¤¶È£¬»òΪ 0
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
ptag£ºÐÒé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£
·µ»ØÖµ£º
³É¹¦£ºÐÒé±ê¼Ç
ʧ°Ü£º-1
libnet_ptag_t libnet_build_tcp(
u_int16_t sp, u_int16_t dp,u_int32_t seq, u_int32_t ack,u_int8_t control, u_int16_t winu_int16_t sum, u_int16_t urg,u_int16_t len, u_int8_t *payload,u_int32_t payload_s, libnet_t *l,libnet_ptag_t ptag );
±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍC++ÅàѵѧԺËùÓУ¬»¶Ó×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍC/C++ÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/c/
±±¾©Ð£Çø