📄 jpcaptip.java
字号:
import java.io.*;
import jpcap.*;
import jpcap.packet.*;
import java.lang.*;
public class JpcapTip implements PacketReceiver
{
static long p=0,q=0;
IPPacket ip;
String s,s1;
Long s2;
int count=1;//定义抓包次数记录
public void receivePacket(Packet packet) //实现接口PacketReceiver类中的receivePacket方法
{
if(packet instanceof IPPacket) //判断是否为IP数据包(只对IP数据包进行处理)
{
count++;
System.out.println("ok"+count); //屏幕输出IP数据包的信息
ip=(IPPacket)packet;
try
{
System.out.println(ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.protocol+"\t"+
ip.length+"\t"+ip.version+"\t"+ip.ident+"\t"+
ip.rsv_frag+"\t"+ip.offset+"\t"+ip.hop_limit+"\t"+ip.rsv_tos+ip.data+"\r\n");
RandomAccessFile rf = new RandomAccessFile("packet.txt", "rw"); //把IP数据包写入到文本文件
rf.seek(rf.length()); //定位文件指针在文件中的最后
rf.writeBytes(ip.src_ip+"\t"+ip.dst_ip+"\t"+ip.protocol+"\t"+
ip.length+"\t"+ip.version+"\t"+ip.ident+"\t"+
ip.rsv_frag+"\t"+ip.offset+"\t"+ip.hop_limit+"\t"+
ip.rsv_tos+ip.data+"\r\n"); /*向txt文件写入IP的源地址,目标地址,高层协议,长度, 版本号,标识符(序号),标志,段偏移量,数据报的寿命数值,服务型号,数据*/
rf.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) throws java.io.IOException
{
NetworkInterface[] devices = JpcapCaptor.getDeviceList(); //获取设备列表名
NetworkInterface deviceName = devices[1]; // 打开网卡设备
JpcapCaptor jpcap = JpcapCaptor.openDevice(deviceName, 1028, true, 100);
/*即将打开的设备名 从设备上一次读取的最大字节数 说明是否将设备设为混杂模式的Boolean值
超时值 */
jpcap.loopPacket(100000, new JpcapTip()); //循环获取100000个数据包
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -