ÀÖÓãµç¾º

½ÌÓýÐÐÒµA¹ÉIPOµÚÒ»¹É£¨¹ÉƱ´úÂë 003032£©

È«¹ú×Éѯ/ͶËßÈÈÏߣº400-618-4000

C++ÅàÑµÖ®ÍøÂç±à³Ì¸ß¼¶Ó¦Óáªlibnet ʹÓÃÖ¸ÄÏ£¨¶þ£©

¸üÐÂʱ¼ä:2016Äê08ÔÂ24ÈÕ10ʱ39·Ö À´Ô´:ÀÖÓã²¥¿ÍC++ÅàѵѧԺ ä¯ÀÀ´ÎÊý:

¹¦ÄÜ£º

¹¹Ôì tcp Êý¾Ý°ü

²ÎÊý£º


sp£ºÔ´¶Ë¿ÚºÅ
dp£ºÄ¿µÄ¶Ë¿ÚºÅ
seq£ºÐòºÅ
ack£ºack ±ê¼Ç
control£º¿ØÖƱê¼Ç
win£º´°¿Ú´óС
sum£ºÐ£ÑéºÍ£¬ÉèΪ 0£¬libnet ×Ô¶¯Ìî³ä
urg£º½ô¼±Ö¸Õë
len£ºtcp°ü³¤¶È
payload£º¸ºÔØ£¬Îª¸øÓ¦ÓóÌÐò·¢Ë͵ÄÎı¾ÄÚÈÝ£¬¿ÉÉèÖÃΪ NULL
payload_s£º¸ºÔس¤¶È£¬»òΪ 0
l£ºlibnet_init() ·µ»ØµÄ libnet * Ö¸Õë
ptag£ºÐ­Òé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£

·µ»ØÖµ£º

³É¹¦£ºÐ­Òé±ê¼Ç

ʧ°Ü£º-1

libnet_ptag_t libnet_build_tcp_options(

u_int8_t *options,  
u_int32_t options_s,
libnet_t *l, 
libnet_ptag_t ptag );

¹¦ÄÜ£º

¹¹Ôì tcp Ñ¡ÏîÊý¾Ý°ü

²ÎÊý£º

options£ºtcp Ñ¡Ïî×Ö·û´®
options_s£ºÑ¡Ï¶È
l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë
ptag£ºÐ­Òé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£

·µ»ØÖµ£º

³É¹¦£ºÐ­Òé±ê¼Ç
ʧ°Ü£º-1


libnet_ptag_t libnet_build_ipv4(

u_int16_t ip_len, u_int8_t tos,
u_int16_t id, u_int16_t flag,
u_int8_t ttl, u_int8_t prot,
u_int16 sum, u_int32_t src,
u_int32_t dst, u_int8_t *payload,
u_int32_t payload_s,libnet_t *l,
libnet_ptag_t ptag );

¹¦ÄÜ£º


¹¹ÔìÒ»¸ö IPv4 Êý¾Ý°ü

²ÎÊý£º


ip_len£ºip °ü×ܳ¤

tos£º·þÎñÀàÐÍ

id£ºip ±êʶ

flag£ºÆ¬Æ«ÒÆ

ttl£ºÉú´æÊ±¼ä

prot£ºÉϲãЭÒé

sum£ºÐ£ÑéºÍ£¬ÉèΪ 0£¬libnet ×Ô¶¯Ìî³ä

src£ºÔ´ ip µØÖ·

dst£ºÄ¿µÄipµØÖ·

payload£º¸ºÔØ£¬¿ÉÉèÖÃΪ NULL£¨ÕâÀïͨ³£Ð´ NULL£©

payload_s£º¸ºÔس¤¶È£¬»òΪ 0£¨ÕâÀïͨ³£Ð´ 0 £©

l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë

ptag£ºÐ­Òé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£

·µ»ØÖµ£º


³É¹¦£ºÐ­Òé±ê¼Ç  

ʧ°Ü£º-1


libnet_ptag_t libnet_build_ipv4_options(

u_int8_t*options, u_int32_t options,
libnet_t*l, libnet_ptag_t ptag);

¹¦ÄÜ£º


¹¹Ôì IPv4 Ñ¡ÏîÊý¾Ý°ü

²ÎÊý£º


options£ºtcp Ñ¡Ïî×Ö·û´®

options_s£ºÑ¡Ï¶È

l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë

ptag£ºÐ­Òé±ê¼Ç£¬ÈôΪ 0£¬½¨Á¢Ò»¸öеÄЭÒé

·µ»ØÖµ£º


³É¹¦£ºÐ­Òé±ê¼Ç

ʧ°Ü£º-1


libnet_ptag_t libnet_build_arp(


u_int16_t hrd, u_int16_t pro,

u_int8_t hln, u_int8_t pln£¬

u_int16_t op, u_int8_t *sha,

u_int8_t *spa, u_int8_t *tha£¬

u_int8_t *tpa, u_int8_t *payload£¬

u_int32_t payload_s, libnet_t *l,

libnet_ptag_t ptag );

¹¦ÄÜ£º


¹¹Ôì arp Êý¾Ý°ü

²ÎÊý£º


hrd£ºÓ²¼þµØÖ·¸ñʽ£¬ARPHRD_ETHER£¨ÒÔÌ«Íø£©

pro£ºÐ­Ò鵨ַ¸ñʽ£¬ETHERTYPE_IP£¨ IPЭÒ飩

hln£ºÓ²¼þµØÖ·³¤¶È

pln£ºÐ­Ò鵨ַ³¤¶È

op£ºARPЭÒé²Ù×÷ÀàÐÍ£¨1£ºARPÇëÇó£¬2£ºARP»ØÓ¦£¬3£ºRARPÇëÇó£¬4£ºRARP»ØÓ¦£©

sha£º·¢ËÍÕßÓ²¼þµØÖ·

spa£º·¢ËÍÕßЭÒ鵨ַ

tha£ºÄ¿±êÓ²¼þµØÖ·

tpa£ºÄ¿±êЭÒ鵨ַ

payload£º¸ºÔØ£¬¿ÉÉèÖÃΪ NULL£¨ÕâÀïͨ³£Ð´ NULL£©

payload_s£º¸ºÔس¤¶È£¬»òΪ 0£¨ÕâÀïͨ³£Ð´ 0 £©

l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë

ptag£ºÐ­Òé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£

·µ»ØÖµ£º


³É¹¦£ºÐ­Òé±ê¼Ç

ʧ°Ü£º-1


libnet_ptag_t libnet_build_ethernet(


u_int8_t*dst, u_int8_t *src,

u_int16_ttype, u_int8_t*payload,

u_int32_tpayload_s, libnet_t*l,

libnet_ptag_t ptag );

¹¦ÄÜ£º


¹¹ÔìÒ»¸öÒÔÌ«ÍøÊý¾Ý°ü

²ÎÊý£º


dst£ºÄ¿µÄ mac

src£ºÔ´ mac

type£ºÉϲãЭÒéÀàÐÍ

payload£º¸ºÔØ£¬¼´¸½´øµÄÊý¾Ý£¬¿ÉÉèÖÃΪ NULL£¨ÕâÀïͨ³£Ð´ NULL£©

payload_s£º¸ºÔس¤¶È£¬»òΪ 0£¨ÕâÀïͨ³£Ð´ 0 £©

l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë

ptag£ºÐ­Òé±ê¼Ç£¬µÚÒ»´Î×éеķ¢ËͰüʱ£¬ÕâÀïд 0£¬Í¬Ò»¸öÓ¦ÓóÌÐò£¬ÏÂÒ»´ÎÔÙ×é°üʱ£¬Õâ¸öλÖõÄֵд´Ëº¯ÊýµÄ·µ»ØÖµ¡£

·µ»ØÖµ£º


³É¹¦£ºÐ­Òé±ê¼Ç

ʧ°Ü£º-1

int libnet_write(libnet_t * l);

¹¦ÄÜ£º

·¢ËÍÊý¾Ý°ü

²ÎÊý£º

l£ºlibnet ¾ä±ú£¬libnet_init() ·µ»ØµÄ libnet * Ö¸Õë

·µ»ØÖµ£º

³É¹¦£º·¢ËÍÊý¾Ý°üµÄ³¤¶È
ʧ°Ü£º·µ»Ø -1
ʹÓÃʵÀý

ÕâÀïÊÇÔÚ ubuntu ÏÂͨ¹ýԭʼÌ×½Ó×Ö×éÒ»¸ö udp Êý¾Ý°ü£¬¸ø PC »úµÄÍøÂçµ÷ÊÔÖúÊÖ·¢ËÍÐÅÏ¢£¨¶Ô±È£º¡¶Ô­Ê¼Ì×½Ó×ÖʵÀý£º·¢ËÍ UDP Êý¾Ý°ü¡·£©£º


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <libnet.h>
  6. int main(int argc, char *argv[])
  7. {
  8.         char send_msg[1000] = "";
  9.         char err_buf[100] = "";
  10.         libnet_t *lib_net = NULL;
  11.         int lens = 0;
  12.         libnet_ptag_t lib_t = 0;
  13.         unsigned char src_mac[6] = {0x00,0x0c,0x29,0x97,0xc7,0xc1};//·¢ËÍÕßÍø¿¨µØÖ·00:0c:29:97:c7:c1
  14.         unsigned char dst_mac[6] = {0x74,0x27,0xea,0xb5,0xff,0xd8};//½ÓÊÕÕßÍø¿¨µØÖ·‎74-27-EA-B5-FF-D8
  15.     char *src_ip_str = "192.168.31.163"; //Ô´Ö÷»úIPµØÖ·
  16.     char *dst_ip_str = "192.168.31.248"; //Ä¿µÄÖ÷»úIPµØÖ·
  17.         unsigned long src_ip,dst_ip = 0;
  18.         lens = sprintf(send_msg, "%s", "this is for the udp test");
  19.         lib_net = libnet_init(LIBNET_LINK_ADV, "eth0", err_buf);        //³õʼ»¯
  20.         if(NULL == lib_net)
  21.         {
  22.                 perror("libnet_init");
  23.                 exit(-1);
  24.         }
  25.         src_ip = libnet_name2addr4(lib_net,src_ip_str,LIBNET_RESOLVE);        //½«×Ö·û´®ÀàÐ͵Äipת»»ÎªË³ÐòÍøÂç×Ö½ÚÁ÷
  26.         dst_ip = libnet_name2addr4(lib_net,dst_ip_str,LIBNET_RESOLVE);
  27.         lib_t = libnet_build_udp(        //¹¹ÔìudpÊý¾Ý°ü
  28.                                                                 8080,
  29.                                                                 8080,
  30.                                                                 8+lens,
  31.                                                                 0,
  32.                                                                 send_msg,
  33.                                                                 lens,
  34.                                                                 lib_net,
  35.                                                                 0
  36.                                                         );
  37.         lib_t = libnet_build_ipv4(        //¹¹ÔìipÊý¾Ý°ü
  38.                                                                 20+8+lens,
  39.                                                                 0,
  40.                                                                 500,
  41.                                                                 0,
  42.                                                                 10,
  43.                                                                 17,
  44.                                                                 0,
  45.                                                                 src_ip,
  46.                                                                 dst_ip,
  47.                                                                 NULL,
  48.                                                                 0,
  49.                                                                 lib_net,
  50.                                                                 0
  51.                                                         );
  52.         lib_t = libnet_build_ethernet(        //¹¹ÔìÒÔÌ«ÍøÊý¾Ý°ü
  53.                                                                         (u_int8_t *)dst_mac,
  54.                                                                         (u_int8_t *)src_mac,
  55.                                                                         0x800, // »òÕߣ¬ETHERTYPE_IP
  56.                                                                         NULL,
  57.                                                                         0,
  58.                                                                         lib_net,
  59.                                                                         0
  60.                                                                 );
  61.         int res = 0;
  62.         res = libnet_write(lib_net);        //·¢ËÍÊý¾Ý°ü
  63.         if(-1 == res)
  64.         {
  65.                 perror("libnet_write");
  66.                 exit(-1);
  67.         }
  68.         libnet_destroy(lib_net);        //Ïú»Ù×ÊÔ´
  69.         
  70.         printf("----ok-----\n");
  71.         return 0;
  72. }

¸´ÖÆ´úÂë



 ±¾ÎİæÈ¨¹éÀÖÓã²¥¿ÍC++ÅàѵѧԺËùÓУ¬»¶Ó­×ªÔØ£¬×ªÔØÇë×¢Ã÷×÷Õß³ö´¦¡£Ð»Ð»£¡
×÷ÕߣºÀÖÓã²¥¿ÍC/C++ÅàѵѧԺ
Ê×·¢£ºhttp://www.itcast.cn/c/ 

0 ·ÖÏíµ½£º
ºÍÎÒÃÇÔÚÏß½»Ì¸£¡
¡¾ÍøÕ¾µØÍ¼¡¿¡¾sitemap¡¿