
nDPI v6.0
Kit de Software de Inspeção Profunda de Pacotes Open Source
nDPI
O que é nDPI?
nDPI® é uma biblioteca open source LGPLv3 para inspeção profunda de pacotes.
Um FAQ genérico sobre nDPI está disponível aqui
Como Compilar o nDPI
Para compilar este projeto, faça
- ./autogen.sh && ./configure
- make
Se você obtiver alguns erros ao compilar croaring.c, tente:
- ./autogen.sh && ./configure --enable-old-croaring
- make
Para compilar a biblioteca sem ferramentas ou testes:
- ./autogen.sh && ./configure --with-only-libndpi
- make
Compilações fora da árvore são suportadas:
- ./autogen.sh
- mkdir build
- cd build
- ../configure && make
Para executar testes, faça adicionalmente:
- ./tests/do.sh # Gera e verifica diferenças nos arquivos PCAP
- ./tests/do-unit.sh # Executa testes unitários
- ./tests/do-dga.sh # Executa teste de detecção DGA
ou execute todos com: make check
Observe que os pré-requisitos (mínimos) para compilação incluem:
- Ferramentas GNU (autoconf automake libtool pkg-config gettext flex bison)
- Compilador GNU C (gcc) ou Clang
Em sistemas Debian/Ubuntu, faça:
- sudo apt-get install build-essential git gettext flex bison libtool autoconf automake pkg-config libpcap-dev libjson-c-dev libnuma-dev libpcre2-dev libmaxminddb-dev librrd-dev
No Arch Linux:
- sudo pacman -S gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c numactl pcre2 libmaxminddb rrdtool
No FreeBSD:
- sudo pkg install gcc git gettext flex bison libtool autoconf automake devel/pkgconf gmake libpcap json-c pcre2 libmaxminddb rrdtool
Lembre-se de usar gmake e não make no FreeBSD
No MacOS:
- brew install coreutils gcc git gettext flex bison libtool autoconf automake pkg-config libpcap json-c pcre2 libmaxminddb rrdtool
No Windows:
Há três maneiras suportadas de compilar o nDPI:
- MSYS2 (assumindo que o MSYS2 já está instalado):
- msys2 -c "pacman --noconfirm -S --needed --overwrite '*' git mingw-w64-x86_64-toolchain automake1.16 automake-wrapper autoconf libtool make mingw-w64-x86_64-json-c mingw-w64-x86_64-crt-git mingw-w64-x86_64-pcre2 mingw-w64-x86_64-libpcap"
-
Mingw-w64
-
Visual Studio (veja
windows/nDPI.sln)
Nota: Todas as versões do Windows requerem o npcap com o modo de compatibilidade WinPcap ativado.
Como Construir a Documentação
- pip install --upgrade pip
- pip install -r doc/requirements.txt
- make doc
Use o servidor web python3 embutido para visualizar a documentação:
- make doc-view
Como Adicionar um Novo Dissector de Protocolo
O procedimento completo para adicionar novos protocolos em detalhes:
- Adicione o novo protocolo juntamente com seu ID único em:
src/include/ndpi_protocol_ids.h - Crie um novo protocolo em:
src/lib/protocols/ - As variáveis a serem mantidas durante toda a duração do fluxo (como variáveis de estado) precisam ser colocadas em:
src/include/ndpi_typedefs.hemndpi_flow_tcp_struct(apenas para TCP),ndpi_flow_udp_struct(apenas para UDP), oundpi_flow_struct(para ambos). - Adicione uma nova entrada para a função de busca do novo protocolo em:
src/include/ndpi_private.h - Escolha (não altere nada) uma máscara de bits de seleção de:
src/include/ndpi_define.h - Defina as portas padrão do protocolo em
ndpi_init_protocol_defaultsem:src/lib/ndpi_main.c - Certifique-se de ter suporte nBPF, clonando
PF_RINGno mesmo diretório onde você clonounDPI:git clone https://github.com/ntop/PF_RING/ && cd PF_RING/userland/nbpf && ./configure && make. Você pode ignorar o erro/bin/sh: 1: ../lib/pfring_config: not found - A partir do diretório raiz
nDPI,./autogen.sh && ./configure --with-pcre2(nBPF e PCRE2 geralmente são opcionais, mas são necessários para executar/atualizar todos os testes unitários) makemake check- Atualize a documentação, adicionando este novo protocolo em
doc/protocols.rst - Atualize a configuração do Visual Studio no Windows, adicionando o novo arquivo .c em
windows/nDPI.vcxproj
Como usar o nDPI para Bloquear Tráfego Selecionado
Você pode usar o nDPI para bloquear seletivamente tráfego de Internet específico incorporando-o em uma aplicação (lembre-se de que o nDPI é apenas uma biblioteca). Tanto o ntopng quanto o nProbe cento podem fazer isso.
Citação do Artigo nDPI
- Deri, Luca, et al. nDPI: Open-source high-speed deep packet inspection 2014 International Wireless Communications and Mobile Computing Conference (IWCMC). IEEE, 2014.
Vídeos e Apresentações
- The Ultimate Guide to nDPI [2025]
- Using nDPI to solve real life problems: from First Packet Classification to Obfuscated Traffic detection [PacketFest, 2025]
- Passive Network Traffic Fingerprinting [FOSDEM, 2025]
- A Deep Dive Into Traffic Fingerprints using Wireshark [SharkFest, 2024]
- Network Traffic Classification for Cybersecurity and Monitoring [FOSDEM, 2022]
- Using nDPI for Monitoring and Security [FOSDEM, 2021]
- Knowing the Unknown: How to Monitor and Troubleshoot an Unfamiliar Network [SharkFest, 2017]
Projetos Relacionados ao nDPI
AVISO LEGAL
Embora façamos o nosso melhor para detectar protocolos de rede, não podemos garantir que nosso software esteja livre de erros e seja 100% preciso na detecção de protocolos. Certifique-se de respeitar a privacidade dos usuários e de ter autorização adequada para ouvir, capturar e inspecionar o tráfego de rede.
nDPI é uma marca registrada nos EUA e na UE.