解析程序包时出现错误 包

【上一篇】
【下一篇】
看完这篇文章有何感觉?“解析包时出 现问题”的解决方案
挺普遍的一个问题
我baidu+google了一下,有几种答案
1、软件包的问题
2、存储卡的问题
3、ROM的问题
4、软件本身的问题(与ROM的安卓
版本不相符)
开始我下载软件或游戏。等下
载完成后经常出现解析包时出现错
误,起初以为是我使用的
有问题(有人说是开中转会出问题),
因为下载的网站有大的也有
小的,大的如3g,下载下来也同样
提示:解析包时出现错误,后来换了
浏览器试了问题依旧,不知道是服务
器上的软件有问题?还是?
  经过一番折腾,仍然没有弄明白到底是哪里的问题。。
现在重新下载了那天提示解析包时出现错误的软件,发现可以安装,而唯一改变的是我换了一张内存卡,不言而喻就是那卡的问题。。(建议大家买张好点的卡),当然也不排除是人家更新了软件。我的就是换了内存卡问题就解决了!
  对于遇到这种问题的朋友,我有
以下建议:
  1、重新下载资源,再安装一次
  2、有的APK试试改后缀为zip再
解压,或者后缀是zip,rar的改为
  3、你的系统可能版本太低,有
些限制系统版本在3.0以上的程序,
先看一下软件安装的要求。
如果不行,还是换卡试试吧!!
该帖共收到 4 条回复!
发表于 日 18:45
楼主还挺勤快
发表于 日 14:59
戏建议:画面偏暗,不过这是游戏剧情所至,建议玩家游戏时适当调亮手机„ 游戏感想:如果****有“扼杀脑细胞”游戏排行榜的话, “寂”绝对是前三甲,对于 路痴来说玩这游戏更是痛不欲生!很不幸,笔者正是路痴! ps:玩这游戏真的让偶小小的痛苦了一把,不过在此要说的是感谢游戏下载评论区 那些无名高手的宝贵经验,很强!真的很强! 下面是攻略,偶会尽量说详细: 首先出来玩家是在一更衣间内,这里有一个很重要也是容易被玩家遗漏的物品:手 往右移,最右边一个柜子上面有一个和其他柜子同样突起的小方块。拿起来获得“比尔的名 牌” ,然后就可以出房间了。 出房间后左转直走,走到第一个叉路口时左转再左转。这里有一个房间,别忙着进 去,门口左边有个像密码锁的东西,是地图,拿到手!这里玩家不一定要进门,可以左转, 叉路口再向左,到达尽头时上楼梯到 2 楼去。 到 2 楼时左转(貌似一直在左转哈)直走,到达尽头这里有个房间,打开进去,右边 墙上有几个文字,翻译成阿拉伯数字就是 2591,这是密码,请记住了。 出来,自己逛逛,找到楼梯就下,到一楼有个密码锁的房间(注:不是五位数密码那 个,如果看见房间门上有三把锁,那就掉头走吧,这个房间在尽头,能立刻找到你也算厉害 了)找到房门左只有一个密码锁而门是锁着的房间就对了,输入密码:2591,打开房门!里面 有个尸体,注意手上有个红色笔记本,拿到就走,不用多看„ 出来后再逛逛,找到楼梯继续下去地下室。地下室有个洗衣房,很好找。打开洗衣 机拿出里面的布娃娃回到一楼去。 这一下可以去找刚才拿地图的那个房间了,如果不好找可以先找找游戏开始出来的 那个更衣间,这样按照开始的走法:左转,直走,叉路口左转,左转。进入这个房间,注意 右边的小桌上,拿起红腊笔,去墙上那副图使用腊笔画图。画图时需要画一个倒三角,换成 手机键盘的方位就是 138 互连。画好后“里世界”(即红色楼层)就出现了。 这里需要注意就是“里世界”和现实世界是互相关联的,就好像镜子的两面,所以 现实世界(表世界)发生什么里世界就一样会发生,比如“表世界”开了个柜子,那么“里世 界”那房间的柜子一样会开(这是一游戏评论的高手玩家说的,浅显易懂,我借来了,在此说 明顺便感谢)。这点要好好利用! 进入里世界,这就是刚才画图的房间,没什么有用东西,直接出来。恩„接着该干 什么?我想想„对了,在这楼逛逛,这楼有三个房间很重要,不过现在玩家需要找的是一个 有腊烛的房间和挂着肉球的房间。肉球房间有个纸片,拿到手!找到腊烛房间后房间里有个 笼子,注意那个笼子的下方有个小小的名牌“卢克斯的名牌”拿到手,往右移,听到右边那 柜子发出声响,ok,出房!
找楼梯,去到地下室地图上最右下角的一个房间,注意看房门墙的的金属版,把名 牌放上去,两个都放。放好后点击名牌,顺序是换成手机键盘的 258 方位,也就是中间那一 竖排依次往下按。按好后打开房门,房间里有个鸟笼,布娃娃可就用上了。放进去,对话之 后注意鸟笼的底部,很小的一块,拿起来,是一把银色的钥匙。记得刚发出声响的柜子吗? 还记得里世界和表世界的关联吗?那好, 回一楼去表世界。 那个房间就是你的出生地更衣间! 打开正对着的那个柜子,走人!再去“里世界” !去里世界再去到有腊烛的那房间, 这时玩家会发现那发出生响的柜子开了,点击,好像有对话„完后就往地下室走吧,还是那 个地图右下的房间! 进入房间后玩家会发现“凯伦”在这,对话,用铁棍打头部。打死就完!跳过„开 始第二人物! 第二人物开始也是去老地方拿地图,这时进不去那个房间,走吧!去发现笔记本那 房间调查下水道,里面有个硬币。这时拿不到,出来去地下室右下的房间发现女尸,注意观 察左边墙上,这里有把钥匙和抽屉里的药方,拿走! 去到二楼(不是二楼就是一楼,不过应该是二楼没错啦)找一个“急诊室”的房间, 用刚获得的钥匙打开,这里有具尸体,拿到腿上的手术刀。闪!这二楼有三个病房,其中一 个病房的床单有裂开的痕迹,用手术刀划开获得一个硬币。这下可以进一楼的那个“里世界” 的房间了,进去后看左边一椅子,可以卸下一根椅腿!ok 进入里世界吧! 在里世界一楼走廊不是有幅画吗?有手术刀吧! 切画的方法是右上右上„如此反复, 自然就好!好后会听见远处有开门的声音!别忙!再去“里世界”二楼,还是那三个房间, 电梯左面房间可以获得急救包。电梯右的房间可以获得一硬币,用手术刀将它从绿胶水中分 离出来,再用椅腿沾上些胶水„好了,忙完这一切回“表世界”吧。 去一楼笔记本那房间下水道里用椅腿将硬币沾出, 再去一楼的办公室(这房间先是锁 的,画图后开启了)进去„调查抽屉发现一硬币。至此,硬币收集好了,向“里世界”冲吧! 到达“里世界”后,相信玩家之前也去过那个房间:就是有红色肉球的房间。看到 肉球后按&1&装备手抢,慢慢往上移,只要准心变成红色就可以射击了,将网打下。接着使用 手术刀解剖肉球,得到档案柜的钥匙。又得去“表世界”了„ 到“表世界”一楼办公室,就是先前发现抽屉里有硬币的房间,左边,使用钥匙, 打开档案柜,获得 x 光片。好的,离开!去二楼! 到二楼后去那间发现手术刀的房间,看见右边墙上的仪器了吗?白色那个„对!使 用 x 光片可以看到尸体里有东西,用手术刀 jp 那尸体获得“青铜色的钥匙” 。这时去一楼那 个三个锁的房门,输入密码,要 5 位数的:21536(这是一游戏评论里高手解出的,不知道名 字,不过真的很强!感激!原话是: “点点”是二, “一个孩子”是一, “五年前”是五, “放 我走”是三, “六周后”是六)之后用青铜钥匙开青铜锁。再去“里世界”地下室。
出门会看到墙上一怪物,它是卢克斯。 用枪杀死它,不用紧张,准心追着十字座标跑„变红就开枪!卢克斯死掉后玩家注 意观察地面,有把小钥匙,捡起来。ok!放松,回去“表世界”一楼那个三锁门前,用钥匙 开门,进去„对话„完!至此通关! ps:说实话,我其实还有个东西没找到,一个“钱包”那里面有五位数密码的后半部 提示,我转了四十多分钟也没发现它在哪,很郁闷,有些遗憾„如果有知道的友友欢迎站内 或回帖告知„偶再去找找,感谢„ 如果友友觉得此篇攻略对你有些许帮助或者是勉强入得法眼,那么请顶顶吧„不胜 感激!
发表于 日 20:59
提示: 作者被禁止或删除 内容自动屏蔽
发表于 日 22:28
内容我只怀疑安装包问题,只要没下完整就会出现解析包出问题c#开发的网络IP数据包解析程序 - 下载频道 - CSDN.NET
&&&&c#开发的网络IP数据包解析程序
&c#开发的网络IP数据包解析程序
用C#开发的简单IP数据包解析程序,一个完整VS2005项目,下载解压之后打开相关文件即可运行或用VS2005打开。
若举报审核通过,可奖励20下载分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
Q.为什么我点的下载下不了,但积分却被扣了
A. 由于下载人数众多,下载服务器做了并发的限制。若发现下载不了,请稍后再试,多次下载是不会重复扣分的。
Q.我的积分不多了,如何获取积分?
A. 获得积分,详细见。
完成任务获取积分。
评价资源返积分。
论坛可用分兑换下载积分。
第一次绑定手机,将获得5个C币,C币可。
下载资源意味着您已经同意遵守以下协议
资源的所有权益归上传用户所有
未经权益所有人同意,不得将资源中的内容挪作商业或盈利用途
CSDN下载频道仅提供交流平台,并不能对任何下载资源负责
下载资源中如有侵权或不适当内容,
本站不保证本站提供的资源的准确性,安全性和完整性,同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
开发技术下载排行
积分不够下载该资源
如何快速获得积分?
你下载资源过于频繁,请输入验证码
如何快速获得积分?
你已经下载过该资源,再次下载不需要扣除积分
c#开发的网络IP数据包解析程序
所需积分:5
剩余积分:
VIP会员,免积分下载
会员到期时间:日
剩余下载次数:1000
VIP服务公告:1974人阅读
初探数据包分析程序设计Author :maiganFrom : 第八军团-信息安全小组( )Mail : Warning: 转载本文请注明作者及出处整天在网上转,也看到许多不错的文章,但我发现大多文章要么只停留在理论上,要么就是太高深。对问题详细分析介绍的很少。今天,我就想以数据包分析程序为主题和大家讨论一下网络编程的的相关问题,我也是新手,有不到之处,还望大家不吝指正。通过对数据包的分析,我们可以判断通信双方的操作系统、网络信息流量、经过的路由、数据包的大小,以及数据包的内容等等。对于喜欢网络安全的人来说,掌握这方面的知识是相当重要的。现在的网络通信中,大部分数据都没有加密,我们可以轻易地从数据包中提取账号、密码之类我们关心的数据.大家在看本文时如有困难,可先读一读计算机网络及C程序设计还有协议分析方面的书。下面我将分TCP/IP族协议结构、程序部分函数及数据结构说明、案例程序剖析三个部分与大家共同学习数据包分析程序的设计方法。一、TCP/IP族协议结构在说TCP/IP之前,先让我们来认识一下以太网,因为我们现在接触最多的就是以太网,并且研究数据包又是离不开以太网的帧的。在以太网中,数据是以被称为帧的数据结构本为单位进行交换的。以太网中常用的协议是CSMA/CD(carrier sense multiple access with collision detection)即载波监听多点接入/碰撞检测,在这里,我们关注的是帧的格式。常用的以太网帧的格式有两种标准,一种是DIX Ethernet V2标准,另一种是IEEE的802.3标准。现在最常用的MAC帧是V2格式,这也是我们所要研究的格式,至于802.3帧我们不再讨论。以太网V2帧的格式如下:(插入8字节)目的地址(6字节)-&源地址(6字节)-&类型(2字节)-&数据(46-1500)-&FCS(4字节)以太网的地址由48位的二进制来表示,也就是我们常说的MAC地址及硬件地址。在MAC帧前还有8字节的前同步码和帧的开始定界符,之后才是地址等报头信息。接收端和发送端的地址之后是2字节的类型字段,存放帧中传送数据的上层协议类型,RFC1700号文档规定了这些,如下:ETHER TYPES(十六进制) PROTOCOlS800 IP806 ARP8035 Revese ARP809B Apple Talk Novel814c SNMP帧的数据部分长度为46-1500字节,当小于46时,会在后面加入一个整数字节的填充字段。FCS(Frame Check Sequence)在以太网常用循环冗佘校检(CRC:cyclic redandancy check)。IP协议为网络层协议,网络层的数据结构体被称为IP数据报。IP地址及域名这两个概念我们就不说了,下面我们来看一看IP数据报的结构:成员名 字节数 说明version 1/2 IP的版本,现在为IPV4IHL(报送长度) 1/2 最常用为20,取5-15之前的值,最大60字节Type Of Service 1 优先和可靠性服务要求的数值Total Lenth 2 IP数据报的全长Identification 2 识别IP数据报的编号Flags 3/8 1位为0表示有碎块,2位为0表示是最后的碎块,为1表示接收中。Fragment Offset 13/8 分片在原分组中的位置TTL 1 数据报寿命,建议值为32秒Protocol 1 上层协议Headerchecksum 2 报头检验码Source Address 4 发送端IP地址Destination Address 4 接收端IP地址Options And Padding 4 选项及填充位其中协议字段的值对我们分析数据包是很重要的,下面列出来给大家看看:值 协议 意义1 ICMP Internet Control Message Protocol6 TCP &&&&&&&&&&&& Tranfer Control Protocol8 EGP Exterior Gateway Protocol&&&& 9 IGP Interior Gateway Protocol17 UDP User Datagram Protocol下面这些协议的值在后面的程序中我们可以见到,请大家留心记一下。接着我们介绍地址解析协议(ARP/RARP):成员名 字节数 说明Hardware address 2 硬件类型,以太网为1Protocol address 2 上层协议类型,IP为800Byte length of each hardware 1&&&& 查询物理地址的字节长度,以太网为6Byte length of each protocol address 1 查询上层协议的字节长度,IPv4时为4Opcode 2 1为ARP请求,2为响应;3为RARP请求,4为响应Hardware address of sender of this packet 6 发送端硬件地址protocol address of sender of this packet 4 发送端IP地址Hardware address of target of this packet 6 查询对象硬件地址Protocol address of target of this packet 4 查询对象IP地址ARP/RARP协议用来查询IP对应的硬件地址或反过来查询IP地址,这在我们分析数据包时也会见到。下面介绍ICMP协议。我们常用的PING命令就是用的这个协议,这个协议比较简单,由类型(1字节)、代码(1字节)、检验和(2字节)、还有四个字节的与类型相关的可变部分及数据构成。数据包在运输层还有两个重要的协议,即TCP/UDP,TCP/UDP中使用端口的概念,以区别计算机上不同的程序。下面我们先来看看TCP数据报的首部构成:成员名 字节数 说明Source Port 2 发送端端口号Destination Port 2 接收端端口号Sequence NO 4 本报文段所发送的第一个字节的序号ACk Number 4 期望收到的下一个报文段的序号DAta Offset 1/2 首部的长度Reserved 3/4 保留今后用Contol Bits 3/4 控制位Window 2 滑动窗口的大小Checksum 2 检验和Urgent Pointer 2 紧急指针Options And Padding 4 可选,真充项Tcp被使用在跨越路由器进行网络服务的网络应用程序中,如WWW、电子邮件、新闻、FTP等。UDP则是在IP的基础上加入了端口的概念,其结构很简单,只有八个字节首部如下:源端口(2字节)-&目的端口(2字节)-&长度(2字节)-&检验和(2字节)二、程序部分函数及数据结构说明在此部分我们将介绍后面程序中用到的部分函数及数据结构。在程序中我们使用了PCAP程序库,大家可以从 Linux下测试程序,这里简单介绍一下程序库的安装方法,其它环境请大家自行解决。我的目的是给大家编写数据包分析程序提供思路,至于实用程序的实现这里不做介绍,第三部分给出的程序也不具实用性,为了演示,程序中实现的功能较多而有些地方又不够详细,编写实用程序时请适当取舍并加入你所需要的功能实现部分。PCAP程序库的安装方法如下:1、解压文件2、进入文件目录执行./configure 及make3、使用Make命令,设定手册和Include文件(要有Root权限),执行以下命令:make install -manmake install -incl4、如出现不存在Include及Include/net目录,则建立此目录并重新执行 make install -incl5、检查/usr/include/netinet/目录是否存在Protocols.h文件,不存在则拷贝过去。至此程序库安装完毕。下面介绍程序中出现的部分函数及数据结构:1、PCAP_t *此型数据结构称为数据包捕捉描述符。2、Pcap_Open_Live(argv[1],DEFAUT_SNALEN,1,1000,ebuf)此函数对Pcap程序库进行初始化并返回指向Pcap_t型数据的指针,其参数列表如下:&&&&&&&&char * 指定网络接口 int 取得数据的最大字节数 int 指定网络接口卡,一般用1int 读出暂停时间char * 错误消息用缓冲区3、Pcap_loop(pd,-1,packet_proce,NUll)&&&& 此函数程序的核心,反复执行,利用Pcap取得数据包,返回的是读入数据包的个数,错误时返回-1,其参数列表如下:Pcap_t * 指定取得数据包的数据包捕捉描述符int 取得数据包的个数,-1为无限返回指向函数的指针 指定数据包处理的函数U_char * 指向赋给数据包处理函数字符串的指针4、struct ether_header * eth此结构体存储以太网报头信息,其成员如下:ether_dhost[6] 接收端的MAC地址ether_shost[6] 发送端的MAC地址ether_type 上层协议的种类5、fflush(stdout)此函数完成的是强制输出,参数Stdout,强制进行标准输出。6、noths(((struct ether_header *P)-&ether_type))此函数将短整型网络字节顺序转换成主机字节顺序。此类函数还有:ntohl 长整型 功能同上htons 短整型 将主机字节顺序转换成网络字节顺序htons 长整型 同上7、struct IP *iphip型结构体在IPh文件中定义,其成员和第一部分讲到的IP数据报结构对应,如下:成员名 类型 说明ip_hl 4位无符号整数 报头长度ip_v 同上 版本,现为4ip_tos 8位无符号整数 Type of serviceip_len 16位无符号整数 数据报长度ip_id 同上 标识 ip_off 同上 数据块偏移和标志ip_ttl 8位无符号整数 TTL值ip_p 同上 上层协议ip_sum 16位无符号整数 检验和ip_src in_addr结构体 发送端IPip_dst 同上 接收端IP8、struct ether_arp *arphether_arp型结构体成员如下:成员名 类型 说明ea_hdr arphdr型结构体 报头中地址以外的部分arp_sha 8位无符号整数数组 发送端MAC地址arp_spa 同上 发送端IP地址arp_tha 同上 目标MAC地址arp_tpa 同上 目标IP地址9、struct icmphdr * icmpicmphdr型结构体中包含共用体根据数据报类型的不同而表现不同性质,这里不再列出,只列能通用的三个成员成员名 说明type 类型字段code 代码checksum 检验和三、案例程序剖析//example.c//使用方法:example〈网络接口名〉 & 〈输出文件名〉//例如:example etho & temp.txe//结束方法:ctrl+c//程序开始,读入头文件#include&stdio.h&#include&sys/types.h&#include&sys/socket.h&#include&netinet/in.h&#include&netinet/in_systm.h&#include&netinet/ip.h&#include&netinet/if_ether.h&#include&pcap.h& //pcap程序库#include&netdb.h& //DNS检索使用 #define MAXSTRINGSIZE 256 //字符串长度#define MAXSIZE 1024 //主机高速缓存中的最大记录条数#fefine DEFAULT_SNAPLEN 68 /数据包数据的长度typedef struct{&&&&unsi //IP地址&&&&char hostname[MAXSTRINGSIZE]; //主机名} //高速缓存数据结构typedef struct {&&&&dnstable table[MAXSIZE];&&&&&&&&} sequeue * //定义缓存队列sq-&rear=sq-&front=0; //初始化队列//输出MAC地址函数void print_hwadd(u_char * hwadd){&&&&for(int i=0,i&5;++i)&&&&&&&&printf("%2x:",hwadd[i]);&&&&printf("%2x",hwadd[i]);}//输出IP地址的函数void print_ipadd(u_char *ipadd){&&&&for(int i=0;i&3;++i)&&&&&&&&printf("%d.",ipadd[i]);&&&&printf("%d",ipadd[i]);}//查询端口函数void getportname(int portno,char portna[],char* proto){&&&&if(getservbyport(htons(portno),proto)!=NULL)&&&&{&&&&&&&&strcpy(portna,getservbyport(htons(portno),proto)-&s_name);&&&&}&&&&else&&&&&&&&sprintf(portna,"%d",portno);}//将IP转化为DNS名void iptohost(unsigned long int ipad,char* hostn){&&&&struct hostent *&&&&int m,n,i;&&&&m=sq-&&&&&n=sq-&&&&&for(i=n%MAXSIZE;i=m%MAXSIZE;i=(++n)%MAXSIZE)&&&&{&&&&&&&&//检查IP是否第一次出现&&&&&&&&if(sq-&table[i].ipaddr==ipad)&&&&&&&&{&&&&&&&&&&&&strcpy(hostn,sq-&table[i].hostname);&&&&&&&&&&&&&&&&&&&&}&&&&}&&&&if(i=m%MAXSIZE)&&&&{//不存在则从域名服务器查询并把结果放入高速缓存&&&&&&&&if((sq-&rear+1)%MAXSIZE=sq-&front) //判队满&&&&&&&&&&&&sq-&front=(sq-&front+1)%MAXSIZE; //出队列&&&&&&&&sq-&table[i].ipaddr=&&&&&&&&shostname=gethostbyaddr((char*)&ipad,sizeof(ipad),AF_INET);&&&&&&&&if(shostname!=NULL)&&&&&&&&&&&&strcpy(sq-&table[i].hostname,shostname-&h_name);&&&&&&&&else&&&&&&&&&&&&strcpy(sq-&table[i].hostname,"");&&&&&&&&sq-&rear=(sq-&rear+1)%MAXSIZE;&&&&}}void print_hostname(u_char* ipadd){&&&&un&&&&char hostn[MAXSTRINTSIZE];&&&&ipad=*((unsigned long int *)ipadd);&&&&iptohost(ipad,hostn)&&&&&&&&if(strlen(hostn)&0)&&&&&&&&&&&&printf("%s",hostn);&&&&&&&&else&&&&&&&&&&&&print_ipadd(ipadd);}//处理数据包的函数void packet_proce(u_char* packets,const struct pcap_pkthdr * header,const u_char *pp){&&&&struct ether_header * //以太网帧报头指针&&&&struct ether_arp * //ARP报头&&&&struct ip * //IP报头&&&&struct tcphdr *&&&&struct udphdr *&&&&u_short srcport, //端口号&&&&char protocol[MAXSTRINGSIZE]; //协议类型名&&&&char srcp[MAXSTRINGSIZE],dstp[MAXSTRINGSIZE]; //端口名&&&& //协议类型变量&&&&u_char * //数据包数据指针&&&&u_char tcpudpdata[MAXSTRINGSIZE]; //数据包数据&&&&&&&&eth=(struct ether_header *)&&&&ptype=ntohs(((struct ether_header *)pp)-&ether_type);&&&&if((ptype==ETHERTYPE_ARP)||(ptype==ETHERTYPE_RARP))&&&&{&&&&&&&&arph=(struct ether_arp *)(pp+sizeof(struct ether_header));&&&&&&&&if(ptype==ETHERTYPE_ARP)&&&&&&&&&&&&printf("arp ");&&&&&&&&else&&&&&&&&&&&&printf("rarp "); //输出协议类型&&&&&&&&print_hwadd((u_char *)&(arph-&arp_sha));&&&&&&&&printf("(");&&&&&&&&print_hostname((u_char *)&(arph-&arp_spa));&&&&&&&&printf(")-&");&&&&&&&&print_hwadd((u_char *)&(arph-&arp_tha));&&&&&&&&printf("(");&&&&&&&&print_hostname((u_char *)&(arph-&arp_tpa));&&&&&&&&printf(")/tpacketlen:%d",header-&len);&&&&}&&&&else if(ptype==ETHERTYPE_IP) //IP数据报&&&&{&&&&&&&&iph=(struct ip *)(pp+sizeof(struct ether_header));&&&&&&&&if(iph-&ip_p==1) //ICMP报文&&&&&&&&{&&&&&&&&&&&&strcpy(protocol,"icmp");&&&&&&&&&&&&srcport=dstport=0;&&&&&&&&}&&&&&&&&else if(iph-&ip_p==6) //TCP报文&&&&&&&&{&&&&&&&&&&&&strcpy(protocol,"tcp");&&&&&&&&&&&&tcph=(struct tcphdr *)(pp+sizeof(struct ether_header)+4*iph-&ip_hl);&&&&&&&&&&&&srcport=ntohs(tcph-&source);&&&&&&&&&&&&dstport=ntohs(tcph-&dest);&&&&&&&&&&&&data=(u_char *)(pp+sizeof(struct ether_header)+4*iph-&ip_hl+4*tcph-&doff);&&&&&&&&&&&&for(i=0;i&MAXSTRINGSIZE-1;++i)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&if(i&=header-&len-sizeof(struct ether_header)-4*iph-&ip_hl-4*tcph-&doff);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&&&&tcpudpdata[i]=data[i];&&&&&&&&&&&&}&&&&&&&&} //TCP数据处理完毕&&&&&&&&else if(iph-&ip_p=17) //UDP报文&&&&&&&&{&&&&&&&&&&&&strcpy(protocol,"udp");&&&&&&&&&&&&udph=(struct udphdr *)(pp+sizeof(struct ether_header)+4*iph-&ip_hl);&&&&&&&&&&&&srcport=ntohs(udph-&source);&&&&&&&&&&&&dstport=ntohs(udph-&dest);&&&&&&&&&&&&data=(u_char *)(pp+sizeof(struct ether_header)+4*iph-&ip_hl+8);&&&&&&&&&&&&for(i=0;i&MAXSTRINGSIZE-1;++i)&&&&&&&&&&&&{&&&&&&&&&&&&&&&&if(i&=header-&len-sizeof(struct ether_header)-4*iph-&ip_hl-8);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&else&&&&&&&&&&&&&&&&&&&&tcpudpdata[i]=data[i];&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&tcpudpdata[i]='/0';&&&&&&&&getportname(srcport,srcp,protocol);&&&&&&&&getportname(dstport,dstp,protocol);&&&&&&&&printf("ip ");&&&&&&&&print_hwadd(eth-&ether_shost);&&&&&&&&printf("(");&&&&&&&&print_hostname((u_char *)&(iph-&ip_src));&&&&&&&&printf(")[%s:%s]-&",protocol,srcp);&&&&&&&&print_hwadd(eth-&ether_dhost);&&&&&&&&printf("(");&&&&&&&&print_hostname((u_char *)&(iph-&ip_dst));&&&&&&&&printf(")[%s:%s]",protocol,dstp);&&&&&&&&printf("/tttl:%d packetlen:%d,iph-&ttl,header-&len);&&&& printf("/n");&&&&&&&&printf("%s",tcpudpdata);&&&&&&&&printf("==endpacket==");&&&&}&&&&printf("/n");}//Main函数取数据包并初始化程序环境int main(int argc,char ** argv){&&&&char ebuf[pcap_ERRBUF_SIZE];&&&&pcap *&&&&if(argc&=1) //参数检查&&&&{&&&&&&&&printf("usage:%s&network interface&/n",argv[0]);&&&&&&&&exit(0);&&&&}&&&&//设置PCAP程序库&&&&if((pd=pcap_open_live(argv[1],DEFAULT_SNAPLEN,1,1000,ebuf))=NULL)&&&&{&&&&&&&&(void)fprintf(stderr,"%s",ebuf);&&&&&&&&exit(1);&&&&}&&&&//循环取数据包&&&&//改变参数-1为其它值,可确定取数据包的个数,这里为无限个&&&&if(pcap_loop(pd,-1,packet_proce,NULL)&0)&&&&{&&&&&&&&(void)fprintf(stderr,"pcap_loop:%s/n",pcap_geterr(pd));&&&&&&&&exit(1);&&&&}&&&&pcap_colse(pd);&&&&exit(0);}//程序结束到此为止,我的这篇文章就写完了,希望能给大家以启发和帮助。平时和网友交流中发现大多数朋友在网上见到长的文章往往都没有信心看下去,其实以前我也是这样,但在这里我想告诉大家,不踏踏实实的深入进去学习,是得不到收获的。一分耕耘,一分收获。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47978次
排名:千里之外
原创:40篇
评论:38条
(1)(9)(4)(17)(5)(6)

我要回帖

更多关于 解析程序包出现错误 的文章

 

随机推荐