1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.SwingWorker;
import org.jnetpcap.Pcap;
import org.jnetpcap.PcapIf;
import org.jnetpcap.packet.PcapPacket;
import org.jnetpcap.packet.PcapPacketHandler;
public class PacketRead extends SwingWorker<PacketRead, PacketRead> {
private List<PcapIf> alldevs;
private StringBuilder errbuf;
private int r;
private PcapIf device;
private int snaplen; // Capture tous les packets
private int flags; // capture tous les packets
private int timeout; // 10 seconds
private PcapPacket packet;
private String user;
DefaultListModel jListFilesModel;
public PacketRead(DefaultListModel jListFilesModel,PcapPacket packet, String user) {
alldevs = new ArrayList<>();
errbuf = new StringBuilder();
r = Pcap.findAllDevs(alldevs, errbuf);
device = alldevs.get(1);
snaplen = 64 * 1024;
flags = Pcap.MODE_PROMISCUOUS;
timeout = 10 * 1000;
this.jListFilesModel = jListFilesModel;
}
public PacketRead(PcapPacket packet, String user) {
this.packet = packet;
this.user = user;
}
@Override
public List<PacketRead> doInBackground() {
final List<PacketRead> packets = new ArrayList<>();
Pcap pcap = Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf); // les paramètres peuvent être passé au constructeur de PacketReader
PcapPacketHandler<PacketRead> jpacketHandler = new PcapPacketHandler<PacketRead>() {
public PacketRead nextPacket(PcapPacket packet, String user) {
PacketRead packetRead = new PacketRead(packet, user);
packets.add(packetRead);
publish(packetRead);
return packetRead;
}
};
pcap.loop(4, jpacketHandler, "");
pcap.close();
return packets;
}
@Override
protected void process(List<PacketRead> packets) {
for (PacketRead read : packets) {
jListFilesModel.addElement(toString(read)); // ou toString(PacketRead) est la méthode qui transforme ton message en chaine finale à afficher
}
}
protected String toString(PacketRead packet) {
return packet.toString();
}
} |
Partager