cliente da API phyton p0f
Este é um cliente de API simples para P0F3, disponível em http://lcamtuf.coredump.cx/p0f3/. Não é compatível com a versão 2.x ou 1.x. Inicie o P0F com -s path/to/unix_socket .
Uso básico:
De P0F Import P0F, P0Fexception
dados = nenhum
p0f = p0f ("p0f.sock") # aponte isso para o soquete definido com o argumento "-s".
tentar:
dados = p0f.get_info ("192.168.0.1")
Exceto P0Fexception, E:
# Consulta inválida foi enviada para P0F. Talvez a API tenha mudado?
Imprimir e
Exceto KeyError, e:
# Nenhum dado está disponível para este endereço IP.
Imprimir e
Exceto ValueError, E:
# p0f retornou valores constantes inválidos. Talvez a API tenha mudado?
Imprimir e
Se dados:
Imprima "visto pela primeira vez:", dados ["First_seen"]
Imprima "visto pela última vez:", dados ["last_seen"]
Integração do Django
Consulte Exemplos/Django_models.py para obter um modelo completo de Django dos dados retornados por P0F.
O Django Middleware está disponível em p0f.django.middleware .
Para usar, adicione P0FSOCKET = "path/to/p0f_unix_socket" ao seu projeto Settings.py e p0f.django.middleware.P0fMiddleware para MIDDLEWARE_CLASSES .
O middleware adiciona atributo p0f a todas as solicitações recebidas. request.p0f não é nenhum se a conexão com o P0F falhou ou o P0F não retornou dados para o endereço IP remoto.
Campos de dados
Partes dessas descrições são descaradamente copiadas em http://lcamtuf.coredump.cx/p0f3/readme:
Por padrão, os campos a seguir são analisados:
- DateTime: First_seen
- DateTime: Last_seen
- Timedelta: tempo de atividade
- int: uptime_sec
- timedelta: up_mod_days
- DateTime: last_nat
- DateTime: last_chg
Além disso, BAD_SW e OS_MATCH_Q são validados. "ValueError" é aumentado, se o valor incorreto for encontrado. Para todos os campos vazios, nenhum é usado em vez de cordas ou constantes vazias:
- uptime_min
- Uptime_sec
- tempo de atividade
- up_mod_days
- last_nat
- last_chg
- distância
- BAD_SW
- OS_NAME
- OS_FLAVER
- HTTP_FLAVER
- link_type
- linguagem
Esta análise e validação podem ser desativadas com
p0f.get_info ("192.168.0.1", verdadeiro)
Descrições completas dos campos:
- INT: First_Seen - tempo Unix (segundos) da primeira observação do host.
- INT: Last_seen - tempo Unix (segundos) do tráfego mais recente.
- INT: Total_Conn - Número total de conexões vistas.
- INT: UpTime_min - calculado tempo de atividade do sistema, em minutos. Zero, se não for conhecido.
- INT: UP_MOD_DAYS - intervalo de embrulho de tempo de uptime, em dias.
- int: last_nat - Tempo da detecção mais recente de compartilhamento de IP (NAT, balanceamento de carga, proxying). Zero se nunca detectado.
- INT: Last_Chg - Hora da incompatibilidade individual mais recente do sistema operacional (por exemplo, devido à reutilização multiboot ou IP).
- INT: Distância - Distância do sistema (derivada de TTL; -1 se não houver dados).
- INT: BAD_SW - P0F acha que as seqüências de agentes do usuário ou servidor não são precisas. O valor de 1 significa diferença do sistema operacional (possivelmente devido à proxy), enquanto 2 significa uma incompatibilidade definitiva. Nota: Se o agente do usuário não estiver presente, esse valor permanecer em 0.
- INT: OS_MATCH_Q - OS MACH QUALIDADE: 0 para uma correspondência normal; 1 para diferença nebulosa (por exemplo, ttl ou df); 2 para uma assinatura genérica; e 3 para ambos.
- String: OS_NAME - Nome do sistema operacional mais recente correspondente positivamente. Se o OS não for conhecido, o OS_Name está vazio String. NOTA: Se o host for visto pela primeira vez usando um sistema conhecido e depois mudar para um desconhecido, esse campo não será redefinido.
- String: OS_FLAVER - versão do OS. Pode estar vazio se não houver dados.
- String: http_name - aplicativo HTTP mais recente identificado positivamente (por exemplo, 'Firefox').
- String: HTTP_FLAVER - Versão do aplicativo HTTP, se houver.
- String: link_type - Tipo de link de rede, se reconhecido.
- String: Idioma - linguagem do sistema, se reconhecido.
Licença
Veja License.txt