Boa noite, estou tentando montar um packet sniffer utilizando a extensão jpcap.
Uso o Win 7 64 bits. Antes de desenvolver o meu projeto, estou tentando fazer o sniffer (um script simples, para teste) funcionar. Em tese, funciona, mas apenas em rede local.
Meu código para identificar as redes:
import jpcap.*;
import jpcap.packet.Packet;
import jpcap.PacketReceiver;
import java.io.IOException;
class test
{
public static void main(String[] args) throws java.io.IOException
{
//Obtain the list of network interfaces
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
//for each network interface
for (int i = 0; i < devices.length; i++) {
//print out its name and description
System.out.println(i+": "+devices[i].name + "(" + devices[i].description+")");
//print out its datalink name and description
System.out.println(" datalink: "+devices[i].datalink_name + "(" + devices[i].datalink_description+")");
//print out its MAC address
System.out.print(" MAC address:");
for (byte b : devices[i].mac_address)
System.out.print(Integer.toHexString(b&0xff) + ":");
System.out.println();
//print out its IP address, subnet mask and broadcast address
for (NetworkInterfaceAddress a : devices[i].addresses)
System.out.println(" address:"+a.address + " " + a.subnet + " "+ a.broadcast);
}
}
}
E o retorno dele quando executado:
0: \Device\NPF_{37ADC73E-678C-47E8-A6F2-7740A5592324}()
datalink: EN10MB(Ethernet)
MAC address:0:18:f3:b6:b9:b9:
address:/fe80:0:0:0:4829:4ef8:b95d:2a7d null null
address:/192.168.0.103 /255.255.255.0 /255.255.255.255
Na última linha está o IP que ele sniffa: 192.168.0.103, LAN.
Há outros 2 retornos com IPs 0.0.0.0.
O código acima apenas imprime as redes que o código pra sniffar identificaria.
Como faço pra que ele identifique o meu IP WAN, pois deste modo, com o LAN, não há identificação de nenhuma packet pelo jpcap.
Meu código pra testar o sniff:
[code]import jpcap.*;
import jpcap.packet.Packet;
import jpcap.PacketReceiver;
import java.io.IOException;
class test implements PacketReceiver
{
public void receivePacket(Packet packet) {
System.out.println(packet);
}
public static void main(String[] args) throws java.io.IOException
{
NetworkInterface[] lists = JpcapCaptor.getDeviceList();
System.out.println("\n\t\t***My Simple Network Sniffer***\n");
System.out.println("Found following devices:");
for(NetworkInterface s: lists)
{
System.out.println("Name: " + s.name +" Description: " + s.description);
}
JpcapCaptor captor = JpcapCaptor.openDevice(JpcapCaptor.getDeviceList()[1],65535,false,20);
captor.loopPacket(-1,new test());
}
}[/code]
Obrigado.