package PcapFinally;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class PcapParser {
static File file;
JFrame jframe=new JFrame("五元组分包算法之按钮一");
JPanel jpanela=new JPanel();
JPanel jpanelb=new JPanel();
JPanel jpanelc=new JPanel();
JTextField selectpthJtf=new JTextField(40);
JTextField outputpthJtf=new JTextField(40);
JButton selectbtn=new JButton("选择原文件");
JLabel outputbtn=new JLabel("输出文件路径");
JButton jiexibao=new JButton("五元组分包");
static JTextArea area=new JTextArea(22,22);
JScrollPane jspane=new JScrollPane(area);
public void inint(){
jpanela.add(jspane);
jpanelb.add(selectpthJtf);
jpanelb.add(selectbtn);
jpanelb.add(outputpthJtf);
jpanelb.add(outputbtn);
jpanelc.add(jiexibao);
jframe.add(jpanela,BorderLayout.NORTH);
jframe.add(jpanelb,BorderLayout.CENTER);
jframe.add(jpanelc,BorderLayout.SOUTH);
area.setText("解析过程:");
selectbtn.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
JFileChooser jchoose = new JFileChooser();
// jchoose.showDialog(null, "确定");
if (jchoose.showDialog(null, "确定") == 1) {
return;
}
file = jchoose.getSelectedFile();
selectpthJtf.setText(jchoose.getSelectedFile().toString());
}
});
jiexibao.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub
try {
dealWith();
outputpthJtf.setText("五元组分包后的文件在本程序的项目中,或者在JDK文件下面,五元组命名中,6代表tcp协议,7代表Udp协议");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
jframe.pack();
jframe.setVisible(true);
jframe.setSize(666,555);
}
private static void reverseByteArray(byte[] arr){
byte temp;
int n=arr.length;
for(int i=0;i<n/2;i++){
temp=arr[i];
arr[i]=arr[n-1-i];
arr[n-1-i]=temp;
}
}
private static int byteArrayToInt(byte[] b,int offset){
int value=0;
for(int i=0;i<4;i++){
int shift=(4-1-i)*8;
value+=(b[i+offset]&0x000000FF)<<shift;
}
return value;
}
private static short byteArrayToShort(byte[]b,int offset){
short value=0;
for(int i=0;i<2;i++){
int shift=(2-1-i)*8;
value+=(b[i+offset]&0x000000FF)<<shift;
}
return value;
}
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
PcapParser pp=new PcapParser();
pp.inint();
}
private static void dealWith() throws IOException{
FileInputStream fis=new FileInputStream(file);
byte[] buffer_4=new byte[4];
byte[] buffer_2=new byte[2];
PcapHeader header=new PcapHeader();
Pcap pcap=new Pcap();
int m=fis.read(buffer_4);
if(m!=4){
return;
}
reverseByteArray(buffer_4);
header.setMagic(byteArrayToInt(buffer_4, 0));
m=fis.read(buffer_2);
reverseByteArray(buffer_2);
header.setMagor_version(byteArrayToShort(buffer_2,0));
m=fis.read(buffer_2);
reverseByteArray(buffer_2);
header.setMinor_version(byteArrayToShort(buffer_2,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
header.setTimezone(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
header.setSigflags(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
header.setSnaplen(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
header.setLinktype(byteArrayToInt(buffer_4,0));
header.otString();
pcap.setHeader(header);
List<PcapData> dataList=new ArrayList<PcapData>();
while (m>0){
PcapData data=new PcapData();
m=fis.read(buffer_4);
if(m<0){
break;
}
reverseByteArray(buffer_4);
data.setTime_s(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
data.setTime_ms(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
data.setpLength(byteArrayToInt(buffer_4,0));
m=fis.read(buffer_4);
reverseByteArray(buffer_4);
data.setLength(byteArrayToInt(buffer_4,0));
byte[] content=new byte[data.getpLength()];
m=fis.read(content);
data.setContent(content);
byte[] ti=new byte[14];
for(int i=0;i<14;i++){
ti[i]=content[i];}
data.setiTai(ti.toString());
byte[] ver_ihla=new byte[1];
for(int i=0;i<1;i++){
int b=i+14;
ver_ihla[0]=content[b];
}
data.setVersion_ihl((short)ver_ihla[0] + "");
byte[] tosa=new byte[1];
for(int i=0;i<1;i++){
int b=i+15;
tosa[i]=content[b];
}
data.setTos(String.valueOf(tosa));
byte[] totall=new byte[2];
for(int i=0;i<2;i++){
int b=i+16;
totall[i]=content[b];
}
reverseByteArray(totall);
data.setTotalLen((byteArrayToShort(totall,0)));
byte[] ident=new byte[2];
for(int i=0;i<2;i++){
int b=i+18;
ident[i]=content[b];
}
data.setIdentification(byteArrayToShort(ident,0));
byte[] ff=new byte[2];
for(int i=0;i<2;i++){
int b=i+20;
ff[i]=content[b];
}
data.setFlags_fOffset(byteArrayToShort(ff,0));
byte[] tt=new byte[1];
for(int i=0;i<1;i++){
int b=i+22;
tt[i]=content[b];
}
data.setTimeToLive(String.valueOf(tt));
byte[] pro=new byte[1];
for(int i=0;i<1;i++){
int b=i+23;
pro[i]=content[b];
}
data.setProtocol((short)pro[0] + "");
byte[] hc=new byte[2];
for(int i=0;i<2;i++){
int b=i+24;
hc[i]=content[b];
}
data.setTimeToLive(String.valueOf(tt));
byte[] sou=new byte[4];
StringBuffer sbr = new StringBuffer();
for(int i=0;i<4;i++){
int b = i + 26;
sbr.append((int)(content[b]&0xff));
sbr.append(".");
}
sbr.deleteCharAt(sbr.length() - 1);
data.setSource_address(sbr.toString());
byte[] des=new byte[4];
StringBuffer sba=new StringBuffer();
for(int i=0;i<4;i++){
int b=i+30;
sba.append((int)(content[b]&0xff));
sba.append(".");
}
sba.deleteCharAt(sba.length() - 1);
data.setDes_adress(sba.toString());
if((short)ver_ihla[0]==69){
if((short)pro[0]==6){
//tcp 协议分析
byte[] soure_portt=new byte[2];
StringBuffer sbd=new StringBuffer();
for(int i=0;i<2;i++){
int b=i+34;
sbd.append((int)(content[b]&0xff));
}
sbd.deleteCharAt(sbd.length() - 1);
data.setSource_port(sbd.toString());
byte[] des_portt=new byte[2];
StringBuffer sbe=new StringBuffer();
for(int i=0;i<2;i++){
int b=i+36;
sbe.append((int)(content[b]&0xff));
}
sbe.deleteCharAt(sbe.length() - 1);
data.setDes_port(sbe.toString());
byte[] seq_numbert=new byte[4];
StringBuffer sbf=new StringBuffer();
for(int i=0;i<4;i++){
int b=i+38;
sbf.append((int)(content[b]&0xff));
}
sbf.deleteCharAt(
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
PcapTestZZ.zip (51个子文件)
PcapTestZ
80.96.255.77086222.20.52.2089112.pcap 66B
src
PcapFinally
Pcap.java 473B
PcapParser.java 11KB
DataPaser.java 55B
PcapData.java 8KB
PcapHeader.java 2KB
heheda.pcap 7KB
bin
PcapFinally
PcapParser.class 11KB
DataPaser.class 276B
PcapHeader.class 3KB
PcapData.class 8KB
Pcap.class 1KB
heheda.pcap 7KB
.classpath 301B
221.228.204.31086222.20.52.2089112.pcap 60B
222.20.52.20891126221.228.204.3108.pcap 54B
.settings
org.eclipse.jdt.core.prefs 598B
115.156.147.21922666222.20.52.2089112.pcap 60B
.project 385B
first.pacp 34B
222.20.52.20891116111.206.37.19308.pcap 54B
222.20.52.20891126115.156.147.2192266.pcap 62B
203.208.50.132086222.20.52.2089111.pcap 66B
111.206.37.193086222.20.52.2089111.pcap 405B
203.208.50.132086222.20.52.2089112.pcap 66B
PcapTestZZ
221.228.204.31#08#6#222.20.52.208#9112.pcap 531B
80.96.255.77#08#6#222.20.52.208#9112.pcap 328B
222.20.52.208#9112#6#115.156.147.219#2266.pcap 242B
src
PcapFinally
Pcap.java 473B
PcapParser.java 16KB
PcapData.java 9KB
PcapHeader.java 2KB
heheda.pcap 7KB
bin
PcapFinally
PcapParser$2.class 1KB
PcapParser.class 15KB
PcapParser$4.class 842B
PcapParser$3.class 842B
PcapHeader.class 3KB
PcapData.class 9KB
Pcap.class 1KB
PcapParser$1.class 1KB
heheda.pcap 7KB
.classpath 301B
.settings
org.eclipse.jdt.core.prefs 598B
115.156.147.219#2266#6#222.20.52.208#9112.pcap 228B
.project 385B
203.208.50.132#08#6#222.20.52.208#9112.pcap 82B
111.206.37.193#08#6#222.20.52.208#9111.pcap 1KB
222.20.52.208#9111#6#111.206.37.193#08.pcap 4KB
203.208.50.132#08#6#222.20.52.208#9111.pcap 82B
222.20.52.208#9112#6#221.228.204.31#08.pcap 596B
共 51 条
- 1
资源评论
- kngxscn2017-11-20还可以,值得参考
- 这只不二2016-03-22好像只能分析TCP\UDP\HTTP等协议,其他协议分析不出来。而且分析出来的结果很难再次统计分析,有借鉴作用。
- justin_james2015-12-17这个很不错,代码通俗易懂,不过还在研究,看看pcap解析的如何
如序
- 粉丝: 77
- 资源: 19
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功