资源简介
有关ipv6报文封装的程序,还有地址生成的源代码

代码片段和文件信息
#include
#include
#include “Iphlpapi.h“
#include “ipv6pkt.h“
#pragma comment(lib “Ws2_32.lib“)
#pragma comment(lib “Iphlpapi.lib“)
int main(int argc char *argv[])
{
//检查命令行参数
if (argc != 3)
{
cout << “\nUsage: ipv6pkt.exe inputfile outputfile\n“;
return -1;
}
//打开输入输出文件
ifstream inFile(argv[1] ios::in|ios::nocreate|ios::binary);
if (!inFile)
{
cerr << “Cannot open file: “ << argv[1] << endl;
return -1;
}
ofstream outFile(argv[2] ios::out|ios::trunc|ios::binary);
if (!outFile)
{
cerr << “Cannot create file: “ << argv[2] << endl;
inFile.close();
return -1;
}
//建立输出缓冲区
char Buf[sizeof(IPV6_HEADER) + MAX_PAYLOAD_LEN];
IPV6_HEADER* pIPv6Hdr = (IPV6_HEADER*)Buf;
//首先填充数据字段
inFile.read(Buf+sizeof(IPV6_HEADER) MAX_PAYLOAD_LEN);
int iDataCount = inFile.gcount();
//填充IPv6基本报头
//4位版本号
pIPv6Hdr->ver_cls_lab = 6;
//8位流量等级
pIPv6Hdr->ver_cls_lab <<= 8;
pIPv6Hdr->ver_cls_lab += 0;
//20位流标签
pIPv6Hdr->ver_cls_lab <<= 20;
pIPv6Hdr->ver_cls_lab += 0;
pIPv6Hdr->ver_cls_lab = htonl(pIPv6Hdr->ver_cls_lab);
//16位载荷长度
pIPv6Hdr->payload_len = htons(iDataCount);
//8位下一首部
pIPv6Hdr->next_header = IPPROTO_TCP;
//8位跳数限制
pIPv6Hdr->hop_limit = 128;
//128位源地址,由本机Mac地址生成
pIPv6Hdr->src_ip.prefix_subnetid = 0x1; //3位全球单播地址前缀
pIPv6Hdr->src_ip.prefix_subnetid <<= 45;
pIPv6Hdr->src_ip.prefix_subnetid += 0x01;//45位全球路由前缀
pIPv6Hdr->src_ip.prefix_subnetid <<= 16;
pIPv6Hdr->src_ip.prefix_subnetid += 0x01;//16位子网ID
pIPv6Hdr->src_ip.prefix_subnetid = hton64(pIPv6Hdr->src_ip.prefix_subnetid);
//获取本机网络接口信息列表
IP_ADAPTER_INFO *pAdapterInfo = new IP_ADAPTER_INFO;
ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
DWORD dwRetVal = GetAdaptersInfo(pAdapterInfo &ulOutBufLen);
if (dwRetVal == ERROR_BUFFER_OVERFLOW)
{
delete pAdapterInfo;
pAdapterInfo = new IP_ADAPTER_INFO[ulOutBufLen/sizeof(IP_ADAPTER_INFO)];
dwRetVal = GetAdaptersInfo(pAdapterInfo &ulOutBufLen);
}
//将第一个网卡的Mac地址作为源地址
if (dwRetVal == ERROR_SUCCESS)
{
pIPv6Hdr->src_ip.interface_id[0] = pAdapterInfo->Address[0];
pIPv6Hdr->src_ip.interface_id[1] = pAdapterInfo->Address[1];
pIPv6Hdr->src_ip.interface_id[2] = pAdapterInfo->Address[2];
pIPv6Hdr->src_ip.interface_id[3] = 0xFF;
pIPv6Hdr->src_ip.interface_id[4] = 0xFE;
pIPv6Hdr->src_ip.interface_id[5] = pAdapterInfo->Address[3];
pIPv6Hdr->src_ip.interface_id[6] = pAdapterInfo->Address[4];
pIPv6Hdr->src_ip.interface_id[7] = pAdapterInfo->Address[5];
}
else //如果无法取得本机Mac地址,则使用00-00-80-1A-E6-65代替
{
cout << “Failed to GetAdaptersInfo using assumptive SrcMac 00-00-80-1A-E6-65 instead.\n“;
pIPv6Hdr->src_ip.interface_id[0] = 0x00;
pIPv6Hdr->src_ip.interface_id[1] = 0x00;
pIPv6Hdr->src_ip.interface_id[2] = 0x80;
pIPv6Hdr->src_ip.interface_id[3] = 0xFF;
pIPv6Hdr->src_ip.interface_id[4] = 0xFE;
pIPv6Hdr->src_ip.interface_id[5] = 0x1A;
pIPv6Hdr->src_ip.interface_id[6]
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9512 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\IPHelper\IPEXPORT.H
文件 15896 2004-01-23 23:44 第7章 IPv6报文封装及地址生成程序\IPHelper\Iphlpapi.h
文件 84498 2003-11-17 20:39 第7章 IPv6报文封装及地址生成程序\IPHelper\IPHLPAPI.LIB
文件 24450 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\IPHelper\IPRTRMIB.H
文件 6810 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\IPHelper\IPTYPES.H
文件 9512 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\IPEXPORT.H
文件 15896 2004-01-23 23:44 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\Iphlpapi.h
文件 84498 2003-11-17 20:39 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\IPHLPAPI.LIB
文件 6810 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\IPTYPES.H
文件 4487 2007-04-20 22:36 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.cpp
文件 4356 2007-04-20 16:24 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.dsp
文件 539 2007-04-19 09:48 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.dsw
文件 719 2007-04-20 13:32 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.h
文件 66560 2007-06-27 19:12 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.ncb
文件 48640 2007-06-27 19:12 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.opt
文件 1484 2007-06-27 19:10 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Code\ipv6pkt.plg
文件 204912 2007-06-27 19:10 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Exe\ipv6pkt.exe
文件 8 2007-06-06 14:40 第7章 IPv6报文封装及地址生成程序\ipv6pkt\Exe\tcpdata
文件 9512 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\IPEXPORT.H
文件 15896 2004-01-23 23:44 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\Iphlpapi.h
文件 84498 2003-11-17 20:39 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\IPHLPAPI.LIB
文件 6810 2002-01-30 17:32 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\IPTYPES.H
文件 6004 2007-04-21 09:58 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.cpp
文件 4358 2007-04-20 16:31 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.dsp
文件 539 2007-04-20 16:29 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.dsw
文件 1378 2007-04-20 22:52 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.h
文件 50176 2007-06-27 19:14 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.ncb
文件 48640 2007-06-27 19:14 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.opt
文件 1328 2007-06-27 19:14 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Code\ipv6tcp.plg
文件 204912 2007-06-27 19:14 第7章 IPv6报文封装及地址生成程序\ipv6tcp\Exe\ipv6tcp.exe
............此处省略13个文件信息
- 上一篇:像素不是方形的
- 下一篇:ISO27003信息安全管理体系实施指南
相关资源
- ipv6网络抓包程序
- 部署IPv6网络 中文版
- CiscoIPv6网络实现技术.pdf
- 老毛子华硕固件DDNS ipv6
- IPv4向IPv6的升级过渡解决方案
- IPV4向IPV6平滑过渡毕业论文
- 基于ns3.9实现的移动IPv6
- IPv6 网络隧道配置手册
- 水星D19G路由器支持ipv6的固件
- Windows_Server_2008配置ipv6
- IPV6详解(中文)
- 《IPv6详解》中文高清PDF
- IPv4与IPv6网络互联互通的方案设计及实
- ipv6地址计算器.exe
- IPv6校园网的设计与部署
- IPv4到IPv6过渡技术的研究及其仿真
- 中国电信ipv6培训教程
- 关于IPv6的介绍书籍
- 锐捷网络ipv6培训精讲PPT
- udp码流接收录制工具
- 论文研究-IPv6报头安全威胁及检测.p
- IPv6下协议下入侵检测系统
- IPv6详解 卷1+卷2
- IPv6 Fundamentals A Straightforward Approach t
- IPv6精髓原书 第2版
- IPV6网路-基础、安全、过渡与部署 p
- 校园网网络设计与设备选型
- ipv4 和ipv6双栈网的设计
- pppoe获取ipv6抓包分析
- RFC4443(中文) IPv6标准的ICMPv6
评论
共有 条评论