资源简介

通过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个文件信息

评论

共有 条评论