Todas as tabelas fornecidas nas folhas de dicas também são apresentadas nas tabelas abaixo, fáceis de copiar e colar.
o Folha de Dicas de Programação de Rede em Python abrange:
- Módulos de instalação comuns necessários: PIP e IDLE
- Principais bibliotecas de programação de rede python
- Análise forense de rede: bibliotecas e scripts python necessários
- Palavras-chave Python
- Tipos de dados, operadores matemáticos
- Análise de rede com Python
- A biblioteca dnspython
- Módulo de soquete (interface API Berkley)
- Tipos de soquete, criando soquetes
- Exemplos de soquetes
- Exemplos de script
- Módulos de análise
Ver ou fazer o download da imagem JPG das folhas de dicas
Clique com o botão direito na imagem abaixo para salvar o arquivo JPG (largura de 1987 x 2362 de altura em pixels) ou clique aqui para abri-lo em uma nova guia do navegador. Depois que a imagem abrir em uma nova janela, você poderá clicar na imagem para aumentar o zoom e visualizar o JPEG em tamanho normal.
Exibir ou baixar o arquivo PDF da planilha de dicas
Faça o download do arquivo PDF das planilhas aqui. Quando abrir em uma nova guia do navegador, clique com o botão direito do mouse no PDF e navegue até o menu de download.
O que está incluído nesta folha de dicas
As seguintes categorias e itens foram incluídos na folha de dicas:
Módulos de instalação comuns necessários: PIP e IDLE
PIP (Instalador de Pacotes Python) | $ sudo apt-get instala python-pip |
IDLE (Desenvolvimento Integrado e Ambiente de Aprendizagem) | $ sudo apt-get install ocioso |
Principais bibliotecas de programação de rede python
Django | Estrutura da Web Python de alto nível para desenvolvimento rápido e pragmático |
pycos (anteriormente asyncoro) | Estrutura Python para programação assíncrona, simultânea, de rede, programação distribuída e computação distribuída |
Diesel | Uma API limpa para gravar clientes e servidores de rede. TCP e UDP suportado. Agrupa clientes para HTTP, DNS, Redis, Riak e MongoDB. |
Pulsar | Maneira fácil de criar programas de rede escaláveis |
Torcido | Estrutura baseada em eventos para aplicativos da Internet: clientes e servidores HTTP, SSHv2 e Telnet, IRC, XMPP, IMAPv4, POP3, SMTP, IMAPv4, POP3, SMTP, etc. |
NAPALM | Camada de abstração de automação de rede e programabilidade com suporte a vários fornecedores – Para lidar com fornecedores de dispositivos |
gevent | Uma biblioteca de rede Python baseada em coroutine que usa greenlet para fornecer uma API síncrona de alto nível no topo do loop de eventos libev ou libuv |
Salsão | Fila de tarefas assíncronas / fila de tarefas com base na passagem de mensagens distribuídas |
Análise forense de rede: bibliotecas e scripts python necessários
Ferramenta EDDIE | Agente de monitoramento de sistema e rede, segurança e análise de desempenho para python |
pypcap | Ferramenta de captura de pacotes pequenos baseada em python e pcap |
Paramiko | Implementação do protocolo SSHv2, fornecendo funcionalidade ao cliente e ao servidor |
pip | Instalador de pacote para python |
O Índice de Pacotes Python (PyPI) | Repositório de software para o Python |
Palavras-chave Python
>>> palavra-chave de importação >>> print (keyword.kwlist) |
Python 2.7.15+ [‘e’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘exceto’, ‘exec’, ‘ finalmente ‘,’ for ‘,’ from ‘,’ global ‘,’ if ‘,’ import ‘,’ in ‘,’ is ‘,’ lambda ‘,’ not ‘,’ ou ‘,’ pass ‘,’ print ‘ , ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’] |
Python 3.8.0 [‘Falso’, ‘Nenhum’, ‘Verdadeiro’, ‘e’, ’como’, ‘afirmar’, ‘assíncrono’, ‘aguardar’, ‘interromper’, ‘classe’, ‘continuar’, ‘def’, ‘ del ‘,’ elif ‘,’ else ‘,’ exceto ‘,’ finalmente ‘,’ para ‘,’ de ‘,’ global ‘,’ se ‘,’ importar ‘,’ in ‘,’ é ‘,’ lambda ‘ , ‘não local’, ‘não’, ‘ou’, ‘passar’, ‘aumentar’, ‘retornar’, ‘tentar’, ‘enquanto’, ‘com’, ‘rendimento’] |
Tipos de dados
Texto | str – x = "Olá Mundo" |
Numérico | int, flutuante, complexo |
Seqüência | lista, tupla, intervalo |
Mapeamento | ditar |
Conjunto | conjunto, frozenset |
boleano | bool |
Binário | bytes, bytearray, memoryview |
Operadores matemáticos
** | Expoente 4 ** 2 = 16 |
% | Módulo / Restante 43% 5 = 3 |
// | Divisão inteira 11 // 5 = 2 |
/ | Divisão 11/5 = 2,2 |
* | Multiplicação 3 * 3 = 9 |
– | Subtração 8 – 3 = 5 |
+ | Adição 2 + 2 = 4 |
== | Igual a |
!= | Diferente de |
< | Menor que |
> | Maior que |
<= | Menos que ou igual a |
>= | Melhor que ou igual a |
Comentários
# | Pode ser usado no início de uma linha ou de dentro de uma linha até o final da linha |
Análise de rede com Python
Use NMAP com o scanner de porta | $ pip install python-nmap |
Comandos para executar a varredura NMAP | nmap de importação nmScan = nmap.PortScanner () nmScan.scan (’10 .1.0.0 ‘, ’25 -443’) |
Comandos NMAP usados com python | nmScan.scaninfo () # {‘tcp’: {‘services’: ’25 -80 ‘,’ method ‘:’ connect ‘}} nmScan.all_hosts () nmScan [’10 .1.0.0 ‘]. hostname () nmScan [’10 .1.0.0 ‘]. state () nmScan [’10 .1.0.0 ‘]. all_protocols () nmScan [’10 .1.0.0 ‘] [‘ tcp ‘]. keys () # Resultados – [80, 25, 22, 135] nmScan [’10 .1.0.0 ‘]. has_tcp (25) # Resultado Verdadeiro / Falso nmScan [’10 .1.0.0 ‘]. has_tcp (21) # Resultado Falso / Verdadeiro |
A biblioteca dnspython
Instalação | $ pip install dnspython |
Consulta DNS básica | import dns.resolver name = ‘google.com’ para qtype em ‘A’, ‘AAAA’, ‘MX’, ‘NS’, ‘TXT’, ‘SOA’: answer = dns.resolver.query (nome, qtype, raise_on_no_answer = False) se answer.rrset não for Nenhum: print (answer.rrset) |
Obter preferência de nome e destino MX | import dns.resolver answers = dns.resolver.query (‘dnspython.org’, ‘MX’) |
Módulo de soquete (interface API Berkley)
Funções Principais e Métodos | socket () • ind () • ouvir () • aceitar () • conectar () • connect_ex () • enviar () • recv () • fechar () |
Tipos de soquetes
SOCK_STREAM | Para protocolos TCP • Transmissão confiável • Sequência de pacotes • Orientado a conexão • Bidirecional |
SOCK_DGRAM | Para protocolos UDP • Transmissão não confiável • Nenhuma sequência de pacotes • Sem conexão (UDP) • Não bidirecional |
Criando soquetes
import socket # Importa o método socket socket.socket () # Função que cria o socket | |
meia = soquete. soquete (família de soquetes, tipo de soquete, protocolo = valor) | |
Família Socket | AF_UNIX ou AF_INET |
Tipo de soquete | SOCK_STREAM ou SOCK_DGRAM para TCP & UDP, respectivamente • por exemplo. TCP – UDP2 = soquete. socket (socket.AF_INET, socket.SOCK_DGRAM) • por exemplo. UDP – TCP2 = soquete. socket (socket.AF_INET, socket.SOCK_STREAM) |
Método de soquete do cliente | conectar() |
Método de soquete do servidor | bind () • listen (lista de pendências) • accept () |
Métodos de soquete TCP | s.recv () # Receba pacotes TCP s.send () #Enviar pacotes TCP |
Métodos de soquete UDP | s.recvfrom () # Recebe pacotes UDP s.sendto () # Transmite pacotes UDP |
Mais métodos de soquete | |
fechar() | Feche a conexão do soquete |
gethostname () | Retorna uma string que inclui o nome do host do PC atual |
gethostbyname () | Retorna uma string que inclui o nome do host e o endereço IP do PC atual |
ouço() | Configurar e iniciar o ouvinte TCP |
ligar() | Anexe (nome do host, número da porta) ao soquete |
aceitar() | Espera de conexão do cliente TCP |
conectar() | Iniciar conexão com o servidor TCP |
Métodos de soquete TCP | |
mysocket.accept () | Retorna uma tupla com o endereço remoto conectado |
mysocket.bind (endereço) | Anexe o endereço local especificado ao soquete |
mysocket.connect (endereço) | Os dados enviados pelo soquete são atribuídos ao endereço remoto fornecido |
mysocket.getpeername () | Retorna o endereço remoto no qual o soquete está conectado |
mysocket.getsockname () | Retorna o endereço do próprio terminal local do soquete
|
mysocket.sendto (dados, endereço) | Forçar um pacote de dados para um endereço remoto específico |
Bloqueio de soquete | |
setblocking (1) | Bloco de instalação |
setblocking (0) | Remover / desinstalar o bloco |
Obter número da porta usando o nome de domínio | soquete de importação socket.getservbyname (‘domain name’) |
Verifique o suporte para IPV6 | soquete de importação socket.has_ipv6 # A resposta é TRUE ou FALSE |
getaddrinfo () – Vincular servidor a uma porta | da importação de soquete getaddrinfo getaddrinfo (Nenhum, ‘FTP’, 0, socket.SOCK_STREAM, 0, socket.AI_PASSIVE) [(2, 1, 6, ”, (‘0.0.0.0’, 21)), (10, 1, 6, ”, (‘::’, 21, 0, 0))] |
Exemplos de soquetes
Exemplo de soquete do lado do cliente |
soquete de importação s = socket.socket (socket.AF_INET, socket.SOCK_STREAM) host = socket.gethostname () port = 1111 myserver.bind ((host, porta)) # substituir myserver e meu cliente com IPs repetitivos myserver.ouvir (5) enquanto True: meu cliente,addr = myserver.accept () impressão("Conectado a {str (addr)}") meu cliente.enviar (msg.encode ("ascii"))) meu cliente.fechar() |
Exemplo de soquete do lado do cliente com comentários |
# importar a biblioteca de soquetes soquete de importação # criar um objeto de soquete # reservar uma porta no computador que possa ser qualquer coisa # vincular à porta # transforma o soquete no modo de escuta # até o usuário interrompê-lo ou ocorrer um erro # Estabelecer conexão com o cliente. # envie uma mensagem de agradecimento ao cliente. # Feche a conexão |
Exemplos de script
Criar lista de dispositivos |
>>>devices = [‘SW1’, ‘SW2’, ‘SW3’] |
Criar lista de dicionário de VLAN |
vlans = [{‘id’: ‘100’, ‘nome’: ‘equipe’}, {‘id’: ‘200’, ‘nome’: ‘VOZ’}, {‘id’: ‘300’, ‘name’: ‘wireless’}] |
Escreva funções para coletar comandos e enviar para a rede |
>>>def get_commands (vlan, nome): comandos = [] commands.append (‘vlan’ + vlan) commands.append (‘nome’ + nome) comandos de retorno >>> def push_commands (dispositivo, comandos): |
Crie VLANs em vários comutadores usando o script python |
>>>para vlan em vlans: id = vlan.get (‘id’) nome = vlan.get (‘nome’) print (‘\ n’) print (‘Configurar VLAN:’ + id) command = get_commands (id, nome) para dispositivo em dispositivos: push_commands (dispositivo, comandos) print (‘\ n’) |
Citação: https://www.oreilly.com/library/view/network-programmability-and/9781491931240/ch04.html |
Desabilitar a interface do roteador usando o comando python |
>>> de push import push_commands device = ‘router2’ comandos = [‘interface Eth0 / 1’, ‘shutdown’] push_commands (dispositivo, comandos) |
Módulos de análise
argparse () | O módulo argparse facilita a criação de interfaces de linha de comando fáceis de usar. O programa define quais argumentos ele requer e o argparse descobrirá como analisá-los no sys.argv |
Criando um Analisador | >>> parser = argparse.ArgumentParser (descrição = ‘Processar alguns números inteiros.’) |
Adicionando argumentos | >>> parser.add_argument (‘inteiros’, metavar = ‘N’, tipo = int, nargs = ‘+’, … help = ‘um número inteiro para o acumulador’) >>> parser.add_argument (‘- soma’, dest = ‘acumular’, ação = ‘store_const’, … const = soma, padrão = max, … help = ‘soma os números inteiros (padrão: encontre o máximo)’) |
Analisando argumentos | >>> parser.parse_args ([‘- soma’, ‘7’, ‘-1′, ’42’]) Espaço para nome (acumular =, números inteiros = [7, -1, 42]) |
This text is written in Portuguese and discusses a cheat sheet for network programming in Python. The cheat sheet includes common installation modules, main Python network programming libraries, network forensic analysis libraries and scripts, Python keywords, data types, mathematical operators, and network analysis with Python. The cheat sheet also provides examples of socket modules and scripts. The text also provides links to download the cheat sheet in JPG and PDF formats.