Análise das opções disponíveis para Comunicação IP, em Nuvem, virtualizadas, ou em appliance, compreendendo os protocolos SIP e os mecanismos SBC e Stun, cenários de aplicação.
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonCaliane Z. Pecenin
Este trabalho trata dos principais elementos fundamentais de uma linguagem de programação e como Python trata esses elementos.
Python com ênfase em Fundamentos da Programação.
Análise das opções disponíveis para Comunicação IP, em Nuvem, virtualizadas, ou em appliance, compreendendo os protocolos SIP e os mecanismos SBC e Stun, cenários de aplicação.
Elementos Fundamentais de Linguagens de Programação e a Linguagem PythonCaliane Z. Pecenin
Este trabalho trata dos principais elementos fundamentais de uma linguagem de programação e como Python trata esses elementos.
Python com ênfase em Fundamentos da Programação.
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Affinitas GmbH
Quais os problemas da engenharia de dados? Python é uma ferramenta que importa nessa jornada. Conceitos básicos serão apresentados para desmistificar erros mais comuns ao projetar pipelines usando Python, desde aquisição, ingestão, transformação, armazenamento e gerenciamento.
Slide da palestra sobre Python.
Programando em Python, 27 de Agosto às 19h (na Fuctura)
Por Richardson Lima, administrador de redes do grupo de pesquisas avançadas em redes de computadores, realidade virtual e multimídia na Universidade Federal de Pernambuco e desenvolvedor da comunidade Debian (sobre o curso)
Comparando python com outras linguagens de programaçãoValore I/O
Comparando python com outras linguagens de programação
Traduzido da fonte:
https://www.python.org/doc/essays/comparisons/
“Este ensaio foi escrito em algum momento de 1997. Ele mostra sua idade. É mantida aqui meramente como um artefato histórico”.
Autor: Guido van Rossum
Otimizando a integração de Sistemas
No dia 27/04/2017 foi realizado na FIAP – Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs – otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira os slides apresentados.
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
No dia 27/04/2017 foi realizado na FIAP - Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs - otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira abaixo os slides apresentados.
Apresentação sobre o Framework Django utilizada no I SET - Seminário Tecnológico, realizado no Colégio Agrícola Senador Carlos Gomes de Oliveira, em Araquari/SC
Uma análise crítica sobre o fenômeno do Negacionismo moderno a partir de correlações efetivadas com eventos recentes, notadamente com relação ao Meio Ambiente, aquecimento global e os aspectos políticos no combate à Pandemia.
Python Brasil 2020 - Desmitificando pipeline de dados com Python: o que apren...Affinitas GmbH
Quais os problemas da engenharia de dados? Python é uma ferramenta que importa nessa jornada. Conceitos básicos serão apresentados para desmistificar erros mais comuns ao projetar pipelines usando Python, desde aquisição, ingestão, transformação, armazenamento e gerenciamento.
Slide da palestra sobre Python.
Programando em Python, 27 de Agosto às 19h (na Fuctura)
Por Richardson Lima, administrador de redes do grupo de pesquisas avançadas em redes de computadores, realidade virtual e multimídia na Universidade Federal de Pernambuco e desenvolvedor da comunidade Debian (sobre o curso)
Comparando python com outras linguagens de programaçãoValore I/O
Comparando python com outras linguagens de programação
Traduzido da fonte:
https://www.python.org/doc/essays/comparisons/
“Este ensaio foi escrito em algum momento de 1997. Ele mostra sua idade. É mantida aqui meramente como um artefato histórico”.
Autor: Guido van Rossum
Otimizando a integração de Sistemas
No dia 27/04/2017 foi realizado na FIAP – Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs – otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira os slides apresentados.
O MUNDO DAS APIS OTIMIZANDO A INTEGRAÇÃO DE SISTEMASHeider Lopes
No dia 27/04/2017 foi realizado na FIAP - Unidade Aclimação o Workshop do Bem onde falamos sobre o mundo das APIs - otimizando a integração de sistemas.
Abordamos no evento sobre a importância para conquistar clientes e mantê-los engajados com o seu conteúdo e como conseguir entregar o que ele espera, no momento que ele quer e como surpreendê-lo podendo, para isso, ser utilizado um computador, um tablet, um smartphone ou quem sabe até uma coisa (IoT). Apresentamos como as APIs facilitam a integração entre sistemas e parceiros, favorecendo todo o ecossistema em volta de sua marca.
Confira abaixo os slides apresentados.
Apresentação sobre o Framework Django utilizada no I SET - Seminário Tecnológico, realizado no Colégio Agrícola Senador Carlos Gomes de Oliveira, em Araquari/SC
Uma análise crítica sobre o fenômeno do Negacionismo moderno a partir de correlações efetivadas com eventos recentes, notadamente com relação ao Meio Ambiente, aquecimento global e os aspectos políticos no combate à Pandemia.
Gestão de Contexto aplicado a qualidade de serviço e experiência
Plataforma, arcabouço, framework destinada à coleta de dados, qualificação, arbirtragem, encaminhamento e gerenciamento de tráfego
Migração para PBX IP
Upgrade para PBX IP
Checklist para PBX IP
PBX IP Checklist
Razões para mudar o pbx
Razões para upgrade do pbx
Motivos para upgrade do Pbx
Variáveis e pontos que devem ser considerados antes de começar um projeto de Telefonia IP. Aplicável aos casos onde a migração envolva um passo maior, como o abandono da telefonia clássica analógica tradicional rumo à telefonia plenamente IP.
Uma breve conceituação histórica, descrição básica dos termos gerais empregados em telefonia tradicional e um descritivo inicial de uma telefonia IP. Destina-se para aqueles que iniciam seus primeiros contatos com o mundo da telefonia IP. Versão 1.0, sujeita a revisões e alterações posteriores.
1. Salvador, 19 de Setembro de 20191
Sergio Sampaio Spinola
e-mail: sergios@ip10.com.br
2. Roteiro
e uma
Pergunta
E agora ? Profissionais de Redes precisam saber programar ?
O que é e onde se encontra o Python
O que é Python Networking
O poder das Bibliotecas: Scapy, Pysnmp, PyMongo, iPerf, Socket,
Microframeworks: Bottle, Flask
O que é JSON, YAML, RESTful...
Plataformas de Experimentação: o GNS-3
Obtendo dados de gerenciamento: SNMP
Exemplos de Usos e Aplicações
3. Por que
programar ?
“Programar” hoje está ao alcance de todos
Existem vários domínios e aplicações, bem
como interações possíveis.
Aplicações WEB, sistemas empresariais, sistemas financeiros de
transações, sistemas de comércio eletrônico, aplicações bancárias,
sistemas corporativos diversos, do RH ao Financeiro, Ciência de Dados,
Inteligência Artificial e NLP, assim como uma multitude de Sistemas.
E existe sim um universo da programação voltada para
profissionais “não-versados” em programação, pore
exemplo, Profissionais de Redes !
4. Mudança de Contexto e Paradigmas
Tudo está virando
quase que
exclusivamente
Software !
Boa parte do
mundo está indo
para a Nuvem:
Em breve pouco restará ao alcance direto
de nossas mãos em termos de hardware,
com exceção de hardwares de acesso
simples e estações de usuário, que irão
requerer ações de service desk/help desk
de nível básico.
A gerência e o
monitoramento
tornam-se bem
mais
importantes,
assim com sua
automação
Acesso a
todos os itens
e recursos em
Nuvem são
acessados por
meio de APIs
É o mundo da
API, pessoal !
5. O que é
Python
Não é Novidade ! Datando de 1991, a linguagem de
programação Python tem sido considerada um
preenchedor de gaps, uma forma de automatizar tarefas
costumeiras ou para rapidamente construir protótipos de
aplicações que poderiam então ser implementadas em
outras linguagens.
Ao longo dos anos o Python emergiu como uma
linguagem de primeira linha aplicada ao desenvolvimento
de software, gerenciamento de infraestrutura e análise
de dados, tornando-se uma força consistente no mundo
das aplicações web e gerenciamento de sistemas.
Evoluiu ao ponto de tornar-se um elemento chave na
elaboração de software na análise de Big Data e
inteligência de máquina, servindo a múltiplos propósitos
com eficiência.
6. Python (de Monty Python)
Criada por Guido Van Rossum
• Versões mais difundidas (2.7.X e
3.X), destaca-se em ciência de
dados, machine learning,
automação de sistemas, web,
desenvolvimento de APIs e além
• “The Zen of Python”
• Irreverência, abstração, cultura,
um olhar de “alto nível”
7. A era das APIs ?
• API é um acrônimo para Application
Programming Interface, que é um
intermediário de software que permite
que duas aplicações se falem.
• Algo que pode ser chamado a partir de um pequeno programa, como um script.
• Desta forma, a partir de um simples script podemos realizar operações
ponderosas e precisamos apenas saber sobre a API, quanto custa e como
fazer o seu chamamento.
• É aí que o Python entra em cena e por isto que é muitas vezes chamado
de linguagem de “cola”.
9. Aceitação da
Linguagem
Python
O que é Mito
e o que é
Verdade ?
Largamente adotada e suportada ?
Bastante popular e cada vez mais usada entre os não
versados em programação e desenvolvimento de sistemas,
propria para aprendizado até por crianças ?
Linguagem interpretada, e por isto seria portanto de baixo
desempenho quando comparada com Java e C++, não
orientada a objetos, não apropriada prara grandes sisitemas
e programação Web ?
Conta com um grande conjunto de bibliotecas, libraries e
serviços API, um dos pilares que a tornam extremamente
ponderosa ?
Onde fica o desempenho e a versatilidade ?
É tudo uma questão de Contexto !
13. Usos do Python
• No mundo das redes um uso mais imediato e bastante comum é
como linguagem de script em substituição ao bash script
• Implementa scritps poderosos que propiciam a automatização
quase imediata de variadas tarefas rotineiras aplicadas ao cenário
de dispositivos de Networking, como o salvamento, guarda e
restauração de configurações.
• Mas vai muito além de um substituto para shell scripts e bacthes.
• É também usada para automatizar o provisionamento de serviços
em sistemas em Nuvem como o AWS.
• Possui uma forte afinidade/familiaridade com o formato de
representação de dados JSON e interage de forma direta, simples
e fácil com APIs RESTful, bem como bancos de dados NoSQL.
14. Que
linguagem é
a melhor ?
Esta resposta depende tão somente do contexto, do propósito e de
quem usa.
Qual o nível de experiência e envolvimento do profissional com
programação ?
Depoimento Pessoal: “Resolveu me problema” !
Ao que se destina ? Sistema Corporativo, Financeiro, ERP, Enterprise, E-
Commerce, Banco de Dados, Nuvem, Big Data, Data Science,
Networking, Web ... ?
A atividade de programação é a sua atividade fim ou o meio ?
Trabalha sozinho, em equipe, grupo, dupla... ?
Para resolver problemas pontuais e localizados ou um grande sistema
financeiro e de pagamentos integrado ?
15. Comparações entre Python e Java
• Existem muitas comparações entre Python e Java, como por exemplo:
https://www.educba.com/java-vs-python/
16. Comparações:
pontos que se
destacam
Java requer mais linhas de código em comparação a
Python
Python é bastante amigável com o formato de dados
JSON e possui facilidades para chamar APIs RESTful
Enquanto o Java requer o uso do símbolo “;” o Python
requer a obediência estrita somente à indentação
Em Java você precisa declarar cada tipo de dados, já em
Python a tipagem é dinâmica, porém forte.
Python é reconhecidamente mais fácil e menos verbosa
do ponto de vista do programador eventual
Os códigos em Python são mais fáceis de entender
(legibilidade) à primeira vista
18. Curva de Aprendizado
• “Python é fácil de aprender e usar”
• Requer um investimento em tempo e esforço
relativamente pequeno para produzir os primeiros
programas.
• A sintaxe do Python foi projetada para privilegiar a
legibilidade e a objetividade.
• Possui uma quantidade substancial de bibliotecas para
manipulação de pacotes de redes e serviços de rede.
• Esta simplicidade tem tornado o Python uma linguagem
largamente adotada para o ensino de programação de
crianças e jovens, permitindo que novatos a adotem
rapidamente.
• A ideia de fundo é que os desenvolvedores gastem mais
tempo pensando no problema a ser resolvido e menos
tempo debruçados sobre a complexidade da linguagem ou
decifrando o Código de terceiros.
19.
20. Ciência de
Dados e
Machine
Learning
Análises de dados sofisticadas têm se tornado uma das áreas
onde a linguagem Python tem sido bastante adotada. O Natural
Language Processing tem sido bastante empregado e a linguagem
conta com variadas bibliotecas que tornam a implementação
muito mais fácil, rápida e objetiva.
A vasta maioria das bibliotecas usadas para Data Science ou
Machine Learning possuem interfaces, APIs, bibliotecas Python,
tornando esta linguagem a mais popular em termos de interface
de alto nível para bibliotecas de machine learning
As bibliotecas nativas Python e web web frameworks de terceiros
fornecem fomars de criar desde REST APIs em poucas linhas até
sites direcionados a dados.
As versões mais recentes suportam fortemente operações
assíncronas, permitindo que sites manipulem dezenas de
milhares de requisições por Segundo aplicando as bibliotecas
adequadas.
21. Tipagem dinâmica
• Referenciando especificamente o Python para explicar a questão:
Tipagem dinâmica significa que o próprio interpretador do Python
infere o tipo dos dados que uma variável recebe, sem a necessidade
que você, o usuário da linguagem diga de que tipo determinada
variável é. Exemplo de um script Python:
http://blog.abraseucodigo.com.br/python-uma-linguagem-de-tipagem-dinamica-e-forte.html
23. O que é “Python Networking”
• O ferramental Python exerce um papel essencial em Network Programming.
• A Biblioteca padrão Python possui suporte completo a protocolos de rede,
codificação de decodificação de dados e outros conceitos de programação,
implementados de uma forma mais simples que outras linguagens.
• Um socket é o end-point em um fluxo de comunicação entre dois programas ou
canais de comunicação que operam sobre uma rede e são criados usando socket
API (Application Programming Interface).
• É possível operar diretamentre sobre os pacotes de rede, em camada 3, como o
UDP e TCP
• A biblioteca Scapy permite até mesmo editar o conteúdo dos pacotes de rede em
camada 2.
https://www.w3schools.in/python-tutorial/network-programming/
24. Manipulação de arquivos do tipo texto
• A linguagem possui bibliotecas que permitem lidar facilmente com
dados gerados em CSV ou mesmo aqueles dispostos em um arquivo
texto
• O Python oferece variados recursos de “regex” tornando extremamente
simples e direto “pinçar”, filtrar, alterar, trocar e remover informações
em arquivos de texto comuns.
• Estes recursos permitem localizar a informação relevante em meio a
variados tipos de dados do tipo texto produzidos por equipamentos
diversos, tais como bilhetes, logs genéricos em texto, syslog, registros
em CSV e outras informações produzidas e oferecidas no formato de
texto, inclusive e-mail.
25. Os Sockets e
o Python
Sockets permitem a comunicação entre dois
diferentes processos na mesma máquina ou em
máquinas diferentes.
É uma forma de computadores se comunicarem
usando um file descriptor.
Para o programador um socket se parece e se
comporta como um file descriptor de baixo nível.
Desta forma, comandos como read() e write()
funcionam com sockets da mesma forma que
arquivos e pipes.
26. +
◊ Canal não-confiável
Host: 138.36.95.240 Host: 137.37.58.250
Processo
CLIENTE
Processo
SERVIDORD D DD
D
roteador
datagrama
Sockets UDP
27. +
◊ Canal confiável
Host: 138.36.95.240 Host: 137.37.58.250
Stream de saída Stream de entrada
Processo
Processo
SERVIDOR
3 2 1
CLIENTE
4
1
roteador
Segmento TCP
3
Sockets TCP: Canal Confiável
28. Exemplo de
uso de Sockets
Problema: “Coletar os bilhetes SMDR gerados
em uma central telefônica IP, gravar em um
arquivo e posteriormente fazer filtragem,
seleção e elaborar estatísticas acerca das
ligações efetuadas e recebidas”
Solução: uma aplicação Python que cria um
socket que estabelece a conexão TCP através de
uma porta pré-determinada, adquire os dados
em um buffer e apensa os dados em um arquivo
texto.
Uma segunda aplicação faz a leitura dos dados,
separa os valores, realiza a filtragem dos dados
relevantes e armazena em um banco de dados
NoSQL, isto é, baseado em documentos, (e.g.,
MongoDB).
30. Bilhetes SMDR
Station Message Detail Recording
• O equipamento envia os bilhetes que são coletados por uma rotina escrita
em Python, por meio de socket, e um arquivo de Log é Gerado.
• Em seguida uma rotina adicional em Python faz o “parsing” do arquivo de
bilhetes e realiza-se uma filtragem e o armazenamento das variáveis de
interesse em banco de dados para análise posterior.
31. Aplicação em Gerenciamento SNMP
• Protocolo largamente utilizado em ambientes de redes
• Funciona no modelo gerente-agente
• Baseado em Polling e/ou Trap através de portas específicas
• Aplicável ao gerenciamento de:
• Hosts genéricos Linux
• Switches
• Roteadores
• Impressoras inteligentes
• Firewalls
• Appliances de rede de usos diversos
33. Exemplo: Leitura de Objetos (OIDs) via SNMP diretamente
• Plataformas e Softwares de gerenciamento são capazes de realizar todas as
leituras de dados que podem ser obtidos através de comandos de GET do
SNMP, e aquisição das variáveis MIBs, definidas pelos respectivos OIDs.
• Problema: “Queremos coletar apenas um determinado conjunto restrito de
variáveis e sinalizar alarmes específicos acerca de determinadas OIDs sem
necessidade de instalar um sistema completo de gerenciamento de
redes.”
• Em outras palavras: não quero instalar o Nagios, ou o Cacti, ou o Zabbix, ou
PRTG, WhatsUp, Solarwinds...
• Solução: Utilizando a biblioteca PySNMP é possível fazer a leitura de
qualquer OID desejada, sobre qualquer dispositivo, realizar a inferência
necessária, armazenar em banco de dados e gerar alarmes baseados em
thresholds”
36. O que fazer com os dados ?
• Você escolhe !
• Pode enviar para um banco de dados, como o MongoDB, por exemplo
e deixar os dados à disposição de algum outro sistema/módulo de
monitoramento, ou;
• Pode utilizar um biblioteca que permite encaminhar notificações para
o Telegram:
• from telegram.ext import Updater, InlineQueryHandler, CommandHandler
• Evidentemente, você pode enviar um e-mail com o alerta. Claro,
existe uma biblioteca que permite enviar e receber e-mails através do
Python.
37. Representação de Dados: JSON
• Desde sua introdução JSON (Java Script Object Notation) tem se tornado
rapidamente um padrão de fato para troca de informações.
• Vários recursos estão disponíveis em termos de APIs e armazenamento de
dados em uma base de documentos (NoSQL).
• Python suporta JSON nativamente !
• É uma representação que favorece a legibilidade
• Implementada, por exemplo, nas bibliotecas iperf e scapy
• Utilizada em APIs REST, amplamente utilizadas entre dispositivos de rede,
inclusive SDN
• Onde mais existe ? Ora, toda a descrição de dados nos serviços AWS da
Amazon adota a notação JSON !
40. Um cenário de experimentação
40
➢ Dmúltiplas chamadas escrição:
Dispositivos IP realizam de voz,
progressivas e variáveis, em
ambiente de telefonia IP, com
protocolo SIP, para um Server
(PBX) com duração de 20
segundos cada.
Context Database
DBaaS
MongoDB
41. Exemplo: Simulação e Controle de Chamadas VoIP
41
MOS e R-
Factor
Leituras
de QoS
Codec IP e porta destino Chamadas Simultâneas
Payload RTP
Grava o
arquivo em
csv!
42. Rotinas
executadas em
Python
1) Leitura do arquivo csv criado pelo Software
Startrinity
2) Filtragem dos dados coletados
3) Preparação dos dados em JSON
4) Conexão ao banco de dados MongoDB
5) Escrita no Banco de Dados
6) Polling do estado da variável no Banco de Dados
MongoDB em nuvem, filtragem e geração de alarmes
7) Reconfiguração do iptables provocada pelo alarme
46. Bibliotecas
/Ferramentas:
iPerf/iPerf3
iPerf3 é uma ferramenta
para medições ativas
acerca da máxima banda
alcançável em redes IP.
Suporta vários parâmetros
de ajuste relacionados a
“timing”, buffers e
protocolos (TCP, UDP, SCTP
with IPv4 and IPv6).
Para cada teste é
reportada a banda, perda
e outros parâmetros.
47. Features do Iperf
• Iperf features
• TCP and SCTP
• Medição de banda
• Reporta MSS/MTU size e tamanhos de leitura observados.
• Suporte para tamanho de janela TCP.
• UDP
• Cliente pode criar UDP streams de banda especificada.
• Mede perda de pacotes
• Mede delay jitter
• Capaz de Multicast
49. Trabalhando
com
Simuladores
Simuladores de Rede atuais permitem emular redes reais
e simular ambientes plenamente operacionais
Possibilitam simular o ambiente real previamente à
instalação, permitindo analisar, prever e aplicar
adequações
Um exemplo é o GNS-3, uma ferramenta poderosa que
permite simular ambientes com roteadores com alto grau
de complexidade
Funciona com a imagem dos roteadores
Permite a captura e análise de pacotes e interação com o
ambiente externo, ou seja, sua rede local ou Internet
Permite interagir com máquinas virtuais
53. Scapy
Scapy é um programa Python que permite ao usuário enviar,
fazer o sniff, dissecar e forjar pacotes de rede.
Estas capacidades permitem a construção de ferramentas
que podem agir como probe, realizar o scan ou simular
ataques.
A ferramenta Scapy é um programa poderoso que permite a
manipulação interativa com pacotes.
Permite forjar e decodificar pacotes de uma variedade
grande de protocolos, enviá-los, capturá-los, casar
requerimentos e respostas.
Scapy pode facilmente lidar com tarefas típicas tais como
scanning, tracerouting, probing, unit tests, ataques ou
descoberta de rede.
Pode substituir hping, arpspoof, arp-sk, arping, e
parcialmente o Nmap, tcpdump e tshark.
Pode ser incorporado a um programa em Python.
54. Usando o
Scapy
No Scapy usamos a função sniff() para capturar pacotes de rede
lsc() mostra a lista de comandos disponíveis.
ls() mostra todos os protocolos suportados
ls(protocol) permite visualizar todos os campos default para
qualquer protocol
Visualizar as camadas de pacotes com a função .summary()
Visualizar os conteúdos dos pacotes com a função .show()
Aprofundar em uma camada específica do pacote: pkts[3][2].summary()... onde o
primeiro índice define um pacote dentre uma lista de pkts e o segundo aponta para
uma camada daquele pacote específico.
Usando o método .command() packet irá devolver uma string de
commandos necessários para recriar o pacote resultante da operação de
sniff
55. Exemplos
• Welcome to Scapy (2.2.0)
• >>> send(IP(dst="10.1.99.2")/ICMP()/"HelloWorld")
• Sent 1 packets.
• >>>
• Envio de um endereço “spoofed”
• send(IP(src="10.1.99.100", dst="10.1.99.2")/ICMP()/"HelloWorld")
57. Envio de pacotes para diferentes portas
• >>> p=sr(IP(dst="10.1.99.2")/TCP(dport=[23,80,53]))
• Begin emission:
• .**Finished to send 3 packets.
• *
• Received 4 packets, got 3 answers, remaining 0 packets
• >>>
58. Efetuando um SYN Scan
• >>> p=sr(IP(dst="10.1.99.2")/TCP(sport=666,dport=[22,80,21,443], flags="S"))
• Begin emission:
• ***Finished to send 4 packets.
• *
• Received 4 packets, got 4 answers, remaining 0 packets
• >>> p
• (<Results: TCP:4 UDP:0 ICMP:0 Other:0>, <Unanswered: TCP:0 UDP:0 ICMP:0 Other:0>)
• >>> ans,unans=_
• >>> ans.summary()
• IP / TCP 10.1.99.25:666 > 10.1.99.2:ssh S ==> IP / TCP 10.1.99.2:ssh > 10.1.99.25:666 SA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:http S ==> IP / TCP 10.1.99.2:http > 10.1.99.25:666 SA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:ftp S ==> IP / TCP 10.1.99.2:ftp > 10.1.99.25:666 RA / Padding
• IP / TCP 10.1.99.25:666 > 10.1.99.2:https S ==> IP / TCP 10.1.99.2:https > 10.1.99.25:666 RA /
• Padding
• >>>
59. Um código Python com sniffing
• Configurar a interface em modo promíscuo
• Inicializa os contadores e o timeout
• Define os protocolos a serem filtrados
• Permite definir um nome para o arquivo de log
• Grava os dados de interesse coletados no arquivo de log
60. +
REST –
Representational
State Transfer
Um estilo de arquitetura que fornece padrões entre
sistemas de computação na Web tornando mais fácil a
sua comunicação
Sistemas REST-compliant são frequentemente
denominados RESTful systems, caracterizados por serem
stateless e separam as atribuições do cliente e servidor
Uma REST API define um conjunto de funções no qual
desenvolvedores podem realizer requerimentos e receber
respostas através do protocol HTTP, como um GET e POST
Em outras palavras, propicia a implementação de APIs em
que a informação é enviada e recebida como texto em
uma URL
61. +
Separação do
Cliente e
Servidor
No estilo REST a
implementação do cliente e do
servidor pode ser feita
independentemente sem que
um conheça o outro.
Cada lado precisa conhecer
apenas o formato das
mensagens de envio de um
para outro, podendo serem
mantidos modulares e
separados.
Provê a separação da
preocupação com a interface
de usuário em relação ao
armazenamento de dados,
aumentando a flexibilidade
da interface e ampliando a
escalabilidade.
O propósito é que ao utilizar a
interface REST interface,
clientes diferentes alcançam os
mesmos endpoints REST,
realizam as mesmas ações e
recebem as mesmas respostas.
62. Requisições
e “Verbos”
do REST
GET — recupera um recursos específico (pelo id)
ou uma coleção de recursos
POST — cria um novo recurso
PUT — atualiza um recurso específico (por id)
DELETE — remove um recurso específico por id
63. Exemplo de
Consulta a
um Serviço
WEB via
REST
Através de uma API REST é realiza a consulta a um
serviço de consulta a números de telefones
disponíveis como em um catálogo telefônico:
Opencnam, www.opencnam.com;
A informação é disponibilizada através do envio de
URIs devidamente preenchidas, no formato de API
REST, compreendendo por exemplo a consulta de
um número de telefone específico: +15551234567
O envio desta URL devidamente preenchida deve
retornar dados em formato JSON, onde o nome do
contato é “SAMPLE”.
68. Microframeworks
Web
• Dois web frameworks bastante populares são o Flask e o
Bottle.
• Fornecem ferramentas, bibliotecas e tecnologias que
permitem construir uma aplicação Web.
• Esta aplicação poderá ser constituída por um conjunto de
páginas web, um blog, wiki, ou mesmo um website voltado
para o e-commerece, com acesso a bancos de dados.
• Tanto o Flask como o Bottle são parte de uma categoria
desnominada Microframeworks.
• As vantagens são a leveza e simplicidade, especialmente
quando os requisitos da aplicação são igualmente leves.
• Por outro lado, a desvantagem pode ser que, nos casos em
que a implementação se demonstrar largamente aplicável, a
evolução da aplicação poderá ficar comprometida devido à
necessidade de adicionar plug ins e dependências, ou
mesmo pela limitação de recursos disponíveis.
69. Construindo um micro-servidor
WEB
• Estão disponíveis microframeworks que permitem
implementar serviços Web de forma rápida
• São apropriados para prototipagem e testes rápidos
• Permitem testar funções, métodos, chamadas e
comandos
• É possível construir rapidamente um serviço usando
um microframework como o Bottle, por exemplo
• O microframework Flask permite construir em
instantes um protótipo para finalidades de testes;
• É possível testar usando a Web pública por meio do
serviço Localtunnel
70.
71. URL REST e a resposta no Cliente/Servidor
Localtunnel
74. Automatização
simples de
configuração
• O problema a ser tratado é como automatizar o processo
de configuração de dispositivos em uma rede de tamanho
médio;
• Neste exemplo vamos considerar a rede de tamanho
médio como aquela composta por 500 usuários,
compreendendo 10 switches, switches L3 e dois
roteadores;
• Desta forma, estamos nos referindo a redes compostas
por um determinado número de dispositivos de rede e
cujas configurações podem ser armazenadas em um
repositório central como arquivos texto;
• Uma forma simples de realizar procedimentos de
restauração e reconfiguração é utilizar o próprio Telnet, o
que pode ser feito por meio de um script Python;
76. Outras formas e Exemplos
• O SSH pode ser usado ao invés do Telnet para enviar e receber
configurações dos dispositivos de rede
• Digamos que seja necessário fazer de tempos em tempos o backup de
configuração de 80 equipamentos.
• O equipamento fornece suporte apenas para uma aplicação GUI, ou
seja, é preciso entrar em um por um para baixar a configuração.
• Por outro lado, este equipamento oferece a possibilidade de baixar a
configuração através do TFTP porta UDP 69.
• O problema é que não tem aplicação alguma ?
77. Solução
• Procurar por um código que implemente o protocolo TFTP em UDP
em programa.
• Procurar este programa em Ptyhon.
• Uma vez encontrado, realizar as devidas adaptações e lançar o
programa.
• Voilà.
• Você acabou de automatizar o backup de 80 unidades ao mesmo
tempo ?
78. Outros problemas
• Temos 4000 pontos de rede
• O cliente reclama que está havendo erro em alguns pontos
• Como encontrar estes pontos ?
• Pense na OID que reporta erro em cada porta de switch
• E aí, você pode mandar varrer estas portas através do acesso ao
switch pela VLAN de gerência (tem que ter esta VLAN).
• O programa faz a interação e monta um mapa das portas com
problemas, por nome de switch e número de porta.
82. Conclusões
• Vimos brevemente o poder da linguagem Python e suas bibliotecas aplicadas aos
usos e necessidades no contexto de redes de comunicação, seja em:
• Simulação, análise e medição de pacotes em uma rede local
• Uso no gerenciamento de redes SNMP em diversas situações
• Na programação de dispositivos de rede
• Comunicação com dispositivos de rede via socket
• Manipulação ágil de arquivos texto e csv resultante de coletas
• Uso eficiente e concomitante com banco de dados NoSQL (como o MongoDB)
• A versatilidade da linguagem, flexibilidade e efetividade tornam o Python a
linguagem ideal para profissionais de rede “não programadores”
• Ideal para profissionais de redes que precisam aprimorar suas técnicas de
gerenciamento e suporte, permitindo de forma rápida que estes construam suas
próprias aplicações ou adaptar aplicações e ferramentas já existentes aos seus
propósitos particulares.
83. Recursos e Referências
• Bibliotecas SNMP Python, disponível em http://snmplabs.com/pysnmp/examples/contents.html
• Spinola S., Sergio; Gestão de Contexto Aplicada ao Encaminhamento Adaptativo em Soluções
Convergentes; 2015. Dissertação de Mestrado. Disponível em: https://pt.slideshare.net/ip10lab/gestao-
contexto-qosqoe
• Simulador de Redes GNS-3: https://www.gns3.com/
• MongoDB Database, disponível em https://mlab.com/home
• Descrição da notação JSON, disponível em https://www.w3schools.com/js/js_json_intro.asp
84. Python – por onde começar ?
• Existem diversas plataformas de aprendizado e cursos online na Internet
• Muitos são gratuitos e/ou bastante acessíveis
• Toda distribuição Ubuntu, Debian, etc já traz o Python instalado por default
• IDE´s poderosos estão disponíveis gratuitamente: Jetbrains
• Por exemplo, para começar, você pode começar pelo link da própria
comunidade Python no Brasil: https://python.org.br/introducao/
• Github, Stackoverflow, pelo Google, uma vasta quantidade de informações
e colaborações, exemplos e tutoriais estão disponíveis de forma totalmente
gratuita.