📄 tcp.java
字号:
//package netcap;
import jpcap.*;
import java.util.*;
import java.net.*;
import java.text.*;
import java.util.Timer;
class Tcp implements JpcapHandler
{
static long count=0; //计数
static double countlen=0;
static MainFrame mainFrame = new MainFrame();
byte[] packetdatas=null; //累加池
byte[] packetdata=null; //发送池
public void handlePacket(Packet packet)
{
if (packet instanceof IPPacket)
{
IPPacket ipPacket = (IPPacket)packet;
countlen=countlen+ipPacket.len;
count++;
if(mainFrame.button1.getLabel()=="Pause")
{
packetdatas[i]=ipPacket.data[i];
if (packetdatas.length>1024*1024)
{
packetdata=packetdatas;
packetdatas=null;
}
packetdata=ipPacket.data;
Thread threadpacket = new threadreadpacket(ipPacket.len,
ipPacket.toString(), packetdata, mainFrame,count);
threadpacket.start();
packetdata=null;
}
mainFrame.jLabel2.setText("Captured "+countlen+" bytes Data");
mainFrame.label2.setText("Captured "+count+" IPPacket");
}
}
public static void main(String[] args) throws java.io.IOException
{
int i=0;
mainFrame.setSize(650, 350);
mainFrame.setTitle("NetCap");
mainFrame.setVisible(true);
String[] lists=Jpcap.getDeviceDescription(); //获取网络设备信息
for(i=0;i<lists.length;i++)
mainFrame.jComboBox_card.insertItemAt(lists[i],i);
while(true)
{
if(mainFrame.button2.getLabel()=="Stop")
{
i=mainFrame.deviceNum;
mainFrame.jComboBox_card.enable(false);
mainFrame.textArea1.setText(lists[i]);
mainFrame.label1.setText("Capturing on Device "+ i+" "+lists[i]);
Jpcap jpcap=Jpcap.openDevice(Jpcap.getDeviceList()[i],1000,true,20); //true,the inferface becomes promiscuous mode(混杂模式)
jpcap.loopPacket( -1, new Tcpdump()); //循环抓包,'-1'表示无限次数
break;
}
//delay();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -