资源简介
通过Wireshark捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,为网络协议分析和还原提供技术手段。用Java在Eclipse平台开发了一个TCP/IP协议数据包分析工具,只支持ARP、IPV4、ICMP、UDP,以及DHCP。
代码片段和文件信息
package com.qiusongde.packet;
import com.qiusongde.pcapparser.ByteArray;
public class ARP extends Ethernet {
private ARPHeader header = new ARPHeader();
private byte[] data;
protected int setHeader(byte[] input){//设置头部
int prelength;
int length;
prelength = super.setHeader(input);//父类(底层协议先设置头部)
header.setHardType(input prelength);
header.setProtocolType(input prelength + 2);
header.setHardLength(input prelength + 4);
header.setProtocolLength(input prelength + 5);
header.setOperation(input prelength + 6);
header.setSenderHardAddr(input prelength + 8);
header.setSenderProtoAddr(input prelength + 8 + header.getHardLength());
header.setReceiverHardAddr(input prelength + 8 + header.getHardLength() + header.getProtocolLength());
header.setReceiveProtoAddr(input prelength + 8 + 2 * header.getHardLength() + header.getProtocolLength());
length = 8 + 2 * (header.getHardLength() + header.getProtocolLength());
return prelength + length;
}
private void setData(byte[] input int offset){
int length = input.length - offset;//offset和length相等时没有data
if(length != 0){
data = new byte[length];
for(int i=0;i data[i] = input[offset+i];
}
else
data = null;//没有数据
}
@Override
public void setPacket(byte[] packet) {
int headerlength = setHeader(packet);//先设置头部返回头部长度
setData(packet headerlength);
}
protected String toHeaderString(){
String result = ““;
result += super.toHeaderString();
result += header.toString();
return result;
}
private String toDataString(){
String result = ““;
if(data != null){
result = “--------数据或填充:\n“;
result += ByteArray.byteArrayToHexStr(data) + “\n“;
}
return result;
}
@Override
public String toPacketString() {
String result = ““;
result += toHeaderString();
result += toDataString();
return result;
}
private class ARPHeader{
private byte[] hardtype = new byte[2];//硬件类型
private byte[] protocoltype = new byte[2];//协议类型
private byte hardlength;//硬件长度
private byte protocollength;//协议长度
private byte[] operation = new byte[2];//操作1请求2回答
private byte[] senderhardaddr;//发送方硬件地址
private byte[] senderprotoaddr;//发送方协议地址
private byte[] receiverhardaddr;//接收方硬件地址
private byte[] receiverprotoaddr;//接收方协议地址
public void setHardType(byte[] input int offset){
for(int i=0;i<2;i++){
hardtype[i] = input[i+offset];
}
}
public void setProtocolType(byte[] input int offset){
for(int i=0;i<2;i++){
protocoltype[i] = input[i+offset];
}
}
public void setHardLength(byte[] input int offset){
hardlength = input[offset];
}
public byte getHardLength(){
return hardlength;
}
public void setProtocolLength(byte[] input int offset){
protocollength = input[offset];
}
public byte getProtocolLength(){
return protocollength;
}
public void setOperation(byte[] input int offset){
for(int i=0;i<2;i++){
operation[i
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1261 2016-08-13 19:33 reademe.txt
文件 2048757 2016-08-13 19:35 实验报告-终版.doc
目录 0 2016-08-10 10:20 实验数据\
文件 778 2016-06-14 13:38 实验数据\arp.pcap
文件 3252 2016-06-08 20:15 实验数据\DHCP.pcap
文件 3352 2016-06-12 12:09 实验数据\Diagram1.dia
文件 49344 2016-06-12 12:09 实验数据\Diagram1.png
文件 708 2016-06-14 13:40 实验数据\icmp.pcap
文件 74 2016-06-07 22:02 实验数据\IPv4.pcap
文件 153808 2016-06-12 00:31 实验数据\PCAP数据结构1.jpeg
文件 199717 2016-06-12 00:33 实验数据\PCAP数据结构2.jpeg
文件 82 2016-06-08 21:03 实验数据\udp.pcap
文件 43313 2016-06-14 13:29 实验数据\手机.jpg
目录 0 2016-06-12 12:28 源代码\
目录 0 2016-08-10 10:20 源代码\PcapAnaylyzer\
文件 295 2016-06-09 14:37 源代码\PcapAnaylyzer\.classpath
文件 372 2016-06-06 16:14 源代码\PcapAnaylyzer\.project
目录 0 2016-08-10 10:21 源代码\PcapAnaylyzer\.settings\
文件 587 2016-06-06 16:14 源代码\PcapAnaylyzer\.settings\org.eclipse.jdt.core.prefs
目录 0 2016-08-10 10:20 源代码\PcapAnaylyzer\bin\
文件 6 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\.gitignore
目录 0 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\
目录 0 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\
目录 0 2016-08-10 10:21 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\
文件 4030 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\ARP$ARPHeader.class
文件 2570 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\ARP.class
文件 4005 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\DHCP.class
文件 2116 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\Ethernet$EthernetHeader.class
文件 1137 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\Ethernet.class
文件 3475 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\ICMP$ICMPHeader.class
文件 2211 2016-06-23 18:05 源代码\PcapAnaylyzer\bin\com\qiusongde\packet\ICMP.class
............此处省略43个文件信息
- 上一篇:高校科研信息管理jsp源码
- 下一篇:计算机网络安全课程des算法实验报告+演示程序
相关资源
- Android实时抓包分析的app
- Java抓包程序实现(附说明文档)
- Android实时抓包
- AndroidStudio 3.1 使用libpcap
- 基于TCP/IP协议聊天室的课程设计报告
- JpcapDumper
- jpcap+winpcap及安装教程
- pcap文件解析,并且按照五元组分类
- jpcap安装包259777
- 支持64位的Jpcap.dll
- jpcap资源
- java下进行抓包使用的jpcap.dll和jpcap.
- jpcap.jar jpcap.dll 32位 64位 完整匹配无
- 基于Jpcap的网络数据抓包程序
- java解析Pcap文件获取五元组可执行
- jpcap_x64.dll+jpcap.jar
- java网络抓包(Jpcap0.7的教程 程序 源码
- 利用JPcap实现嗅探器Snifer,以web形式来
- jpcap监听网络 收发数据包java
- Java抓包程序
- 支持支持64位的Jpcap.dll
- jpcap 64位113461
- Jpcap.jar
- Socket服务端客户端以tcp/ip协议发送接
- jpcap.jar jpcap.dll 32 64
- JpcapDumper-0.3-src.zip
- Jpcap资料与应用
- Jpcap 64位
- 64位的jpcap.dl、jpcap.jar
- jpcap压缩包
评论
共有 条评论