Python 22 de Dezembro de 2018 às 22:00 11 minutos
A proposta neste artigo é criarmos juntos um monitor GTP. Pra quem não sabe, o GTP (GPRS Tunneling Protocol) é o protocolo de rede mais importante nas redes móveis.
Github - GTPv1-Echo-Monitoring
Iniciando nosso "Logger"
Em resumo, o "logger" é o nosso gerador de logs, é sempre interessante reservamos um bloco no ínicio do nosso código para iniciarmos as chamados aos geradores de logs para que isso fique bem claro e não passe desapercebido.
O python já nos fornece uma biblioteca padrão para geração de logs, portanto vamos utilizá-la em nosso código. Chamaremos nosso gerador de log de "gtp_echo_monitoring" e iremos atribuir formato padrão e nível padrão à ele.
Primeramente, vamos verificar se o usuário utilizou o argumento -nv, indicando que ele não quer que o log seja enviado ao console, em caso negativo, ou seja, quando este argumento não for especificado, iremos criar um "handler", ou seja, uma função que está atrelada ao "logger", estamos utilizando o nível de log como INFO e o formato padrão que definimos anteriormente.
No primeiro bloco de código desta função, definiremos a criação dos pacotes GTP Echo Request, utlizando como entrada, os IPs passados via argumento --IP.
Por fim, caso o usuário não tenha especificado qualquer valor no argumento --IP, iremos enviar um erro ao logger e terminar nosso script.
Verificando o argumento --loop
O bloco que se segue à esta validação, será exatamente igual, a única diferença é que quando o argumento --loop é avaliado como verdadeiro, inserimos um loop que roda para sempre, ou até que um comando de parada seja executado, tal como um CTRL+C.
Enviando e Recebendo... Finalmente
Enfim, respeitando a especificação do protocolo, iremos esperar 60s para tomar qualquer outra ação, como por exemplo, reenviar os pacotes de monitoramento caso o argumento --loop tenha sido avaliado como verdadeiro.
O Scapy é uma ferramenta extremamente poderosa para prototipagem de protocolos e ferramentas de rede. Como podemos ver, uma ferramenta de monitoramento de protocolo GTP foi escrita em meras 157 linhas!