









Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Este tutorial é sobre a instalação do JPCAP
Tipologia: Resumos
1 / 17
Esta página não é visível na pré-visualização
Não perca as partes importantes!










Analise de Protocolos
O que é JPCAP?
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
public class JpcapInterfaces {
public static String hex2String(byte [] input){
String output = "";
for (int i = 0 ; i < input.length- 1 ; i++) {
output += Integer.toHexString(input[i] & 0xff) + ":";
output += Integer.toHexString(input[input.length-1] & 0xff);
return output;
public static void main(String args[]) {
//Obtém a lista de interfaces de rede no sistema.
NetworkInterface[] interfaces = JpcapCaptor.getDeviceList();
for (NetworkInterface ni : interfaces) {
System.out.println("----------------------------------------- --------");
//Nome da interface.
System.out.println("Nome: " + ni.name);
//Descrição da interface caso exista.
System.out.println("Descrição: " + ni.description);
//DataLink da interface.
System.out.println("Nome da DataLink : " + ni.datalink_name);
//Descrição do DataLink caso exista.
System.out.println("Descrição da DataLink : " + ni.datalink_description);
//MAC Address da interface.
System.out.println("MAC Address: "+ hex2String(ni.mac_address));
for(NetworkInterfaceAddress a : ni.addresses){
//Endereço de IP da interface.
System.out.println("IP: " + a.address.getHostAddress());
//Endereço de Broadcast da interface.
System.out.println("BroadCast: " + a.broadcast);
//Mascara de SubRede.
System.out.println("SubNet: " + a.subnet.getHostAddress());
//Em caso de ligações P2P o endereço de destino.
System.out.println("Destinho P2P: " + a.destination);
System.out.println("------------------------------------n");
Preparar a interface de rede para captura
Capturar pacotes da interface de rede
import java.io.IOException;
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.packet.Packet;
import jpcap.packet.TCPPacket;
import jpcap.packet.UDPPacket;
public class OpenInterface {
public static void main(String args []){
//Lista de interfaces de rede no sistema.
System.out.println("SRC: " + udp.src_ip.getHostAddress() + ":" + udp.src_port +
" tDST: " + udp.dst_ip.getHostAddress() +":" + udp.dst_port +
" tSize = " + udp.length + " bytes");
i++;
//Fecha a captura de pacotes.
captor.close();
catch(IOException io){
System.out.println(io.getMessage());
catch(Exception e){
System.out.println(e.getMessage());
SRC: 7.177.05.30:1670 DST: 19.16..13:49153 Size = 40 bytes
SRC: 19.16..13:49153 DST: 7.177.05.30:1670 Size = 1119 bytes
SRC: 3.30.6.103:74* DST: 19.16..13:49153 Size = 40 bytes
SRC: 19.16..13:49153 DST: 3.30.6.103:74* Size = 328 bytes
SRC: 19.16..13:579*5 DST: 1.111.49.15:33655 Size = 445 bytes
SRC: 4.13.19.4:60000 DST: 19.16..1*3:49794 Size = 58 bytes
SRC: 19.16..13:49794 DST: 4.13.19.*4:60000 Size = 160 bytes
SRC: 7.93.3.55:164 DST: 19.16..1*3:49153 Size = 40 bytes
SRC: 19.16..13:49153 DST: 7.93.3.55:16*4 Size = 550 bytes
SRC: 91.1.50.11:7075 DST: 19.16..13:49153 Size = 73 bytes
SRC: 19.16..13:49153 DST: 91.1.50.11:7075 Size = 93 bytes
SRC: 0.99.194.194:4990 DST: 19.16..1*3:50043 Size = 58 bytes
SRC: 19.16..13:50043 DST: 0.99.194.194:49*90 Size = 260 bytes
SRC: .7.00.1:60053 DST: 19.16..13:469** Size = 313 bytes
SRC: 19.16..13:469** DST: .7.00.1:60053 Size = 58 bytes
SRC: 17.13.7.9:6000 DST: 19.16..13:5047 Size = 52 bytes
Filtragem por Protocolo
Sintaxe Descrição
ip Captura todos os pacotes de IP
arp Captura todos os pacotes ARP
rarp Captura todos os pacotes ARP inversos
tcp Captura todos os pacotes TCP
udp Captura todos os pacotes UDP
icmp Captura todos os pacotes ICPM
Combinação de filtros
Sintaxe Descrição Exemplo
not Negação not src net 192.
and Concatenação tcp and src host 192.168.1.
or Alternância port 80 or port 8080
Acima temos a sintaxe principal que é possível utilizar para criar filtros, como podemos ver podem ser criados filtros por host, port, network, tipo de pacote e podemos ainda fazer combinações de filtros utilizando operações lógicas. Vamos agora ver um exemplo da utilização de filtros e iremos também ver neste exemplo como é possível ver os dados que são enviados nos pacotes.
import java.io.IOException;
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
import jpcap.packet.TCPPacket;
public class JpcapFilter {
public static void main(String args []){
//Lista de interfaces de rede no sistema.
NetworkInterface[] interfaces = JpcapCaptor.getDeviceList();
try{
//Abre a interface 0 da lista.
JpcapCaptor captor = JpcapCaptor.openDevice(interfaces[ 0 ], 65535 , false , 20 );
//Captura apenas pacotes TCP com origem no host 192.168.1. e que
//tem como destino a porta 80 ou seja HTTP
captor.setFilter("tcp and src host 192.168.1.100 and dst port 80", true );
//Simples contador.
int i = 0 ;
//Cliclo para capturar 20 pacotes.
while(i < 20 ){
//Captura um pacote e converte para TCPPacket dado que apenas
//a capturar pacotes TCP.
TCPPacket p = (TCPPacket) captor.getPacket();
//Gera o output com a informação sobre o pacote
SRC: 192.168.1.100:49323 DST: 66.102.9.147:80 Size = 60 bytes
SRC: 192.168.1.100:49323 DST: 66.102.9.147:80 Size = 52 bytes
SRC: 192.168.1.100:49323 DST: 66.102.9.147:80 Size = 715 bytes
Host: www.google.pt
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain ;q=0.8,image/png,/;q=0.
Accept-Language: pt-pt,pt;q=0.8,en;q=0.5,en-us;q=0.
Accept-Encoding: gzip,deflate
Accept-Charset: ISO- 8859 - 1 ,utf-8;q=0.7,*;q=0.
Keep-Alive: 300
Connection: keep-alive
Cookie: NID=17=BNGeDayJAh13ZHF6XFJ2mwo5N3rNTRu6WaFDUYmbgAC4pyT0kzPnSKN0qKAz_ajH2W jpqDZ92DXTdjhNyiG_s-Xwd4Mwr;
PREF=ID=8ed9295:TM=197383:LM=213911:IG=8:S=T7z-r65IhJ
Referência Bibliográficas
https://wiki.portugal-a-
programar.pt/revistaprogramar_arquivo:18_edicao:pcap_em_java_com_jpcap
http://www.tcpdump.org/
https://www.winpcap.org