Programando sockets em python Jernimo Feij Noble da
Programando sockets em python Jerônimo Feijó Noble da Rosa kastanho@gmail. com
Sumário • Apresentação • Programação de sockets em “baixo nível”; • Programação de sockets em alto nível; • Referências. 2
Apresentação • Graduado em Tecnologia em Redes de computadores pelo Senac Pelotas; • Graduado em Tecnologia em análise e desenvolvimento de sistemas pela UCPEL; • Trabalho no departamento de redes de computadores na UFPEL. 3
Vantagens da linguagem • Multiplataforma; • Extremamente fácil de utilizar; • Grande quantidade de bibliotecas prontas; • A linguagem está sempre sendo atualizada. 4
Programação em baixo nível • Fornece suporte para desenvolvimento de aplicações em rede; • Meio de campo entre camada de aplicação e camada de transporte; • Liberdade para o desenvolvedor criar uma aplicação do zero. 5
Criando Socket TCP - Cliente Família AF_INET 6 Protocolo SOCK_STREAM SOCK_DGRAM SOCK_RAW Exemplo de socket: sockobj=socket(AF_INET, SOCK_STREAM) sockobj. connect((‘ 127. 0. 0. 1’, 5000)) Endereço Porta a sockobj. send(‘senac 2012’)Mensagem ser enviada sockobj. shutdown(2) 1 - fecha o canal de transmissão 2 - fecha a conexão 6
Criando Socket TCP - servidor Exemplo de Socket: Porta a ser escutada interface sockobj=socket(AF_INET, SOCK_STREAM) sockobj. bind((‘’, 5000)) Quantidade de Endereço do conexões na fila Conexão sockobj. listen(5) cliente connection, address=sockobj. accept() Aceita conexão data=connection. recv(4096) connection. close() 7
Exemplo de código • Envio de arquivos – Transmissão utilizando TCP • DHCP – Identificando servidores DHCP piratas(broadcast) • Chat Multicast – Aplicativos simples de chat que envia mensagem sem necessidade de um servidor. 8
Envio de arquivos • Aplicativo que solicita um nome de arquivo baixa este do servidor remoto; • Utiliza um socket TCP para comunicação dos dados; • Mais garantias de entrega que uma aplicação UDP. 9
Envio de arquivos(exemplo) • Onde encontrar: http: //192. 168. 200. 3/Semana_academica_Sockets/LLS • Tarefas: – Solicitar que o colega ao lado disponibilize um arquivo – Utilizar o wireshark para acompanhar a transferência – Verificar integridade de dados 10
Criando Socket UDP - Cliente Exemplo. Comunicação de socket: udpsock = UDP socket(socket. AF_INET, socket. SOCK_DGRAM) Definindo comunicação udpsock. setsockopt(socket. SOL_SOCKET, broadcast Envia para Porta IP Remoto destino específico socket. SO_BROADCAST, 1) remota udpsock. sendto(msg, ('255. 255', 67)) mensagem 11
Criando Socket UDP - Servidor Exemplo de socket: udpsock = socket(socket. AF_INET, socket. SOCK_DGRAM) Reutilização do socket udpsock. setsockopt(socket. SOL_SOCKET, Retorna IP Dados Origem socket. SO_REUSEADDR, 1)da origem Dados, endereco = udpsock. recvfrom(1024) 12
Dynamic Host Configuration Protocol (DHCP) • Definido na RFC 2131; • Utiliza endereço de BROADCAST 255 no lado cliente; • Pode ocasionar diversos problemas, no caso do uso ilegítimo. 13
DHCP Monitor • Ferramenta em Python que permite monitorar servidores DHCP; • Processa mensagens com destino a porta 68 UDP; • Informa na tela e em log, caso seja detectado um servidor não cadastrado. 14
DHCP Monitor(exemplo) • Onde encontrar: Desktop/LLS/DHCP/ • Tarefas: – Verificar funcionamento da aplicação – Verificar arquivo de log dhcpm. log 15
Multicast • Muito utilizado quando, é necessário que diversos computadores recebem um determinado conteúdo; • Mais eficiente que o Broadcast; • Fornece grande número de endereços. A faixa vai de 224. 0. 0. 0 até 239. 255 (RFC 3171). 16
Chat Multicast • Ferramenta simples que permite várias pessoas se comuniquem através de um mesmo endereço multicast; • Não necessita de utilizar um servidor para gerenciar a comunicação; • Grande quantidade de ‘canais’ disponíveis. 17
Chat Multicast(exemplo) • Onde encontrar: Desktop/LLS/chat/ • Tarefas: – Executar o Sender. py e o Receiver. py – Utilizar o Wirshark para analisar a comunicação – Alterar o endereço multicast dentro da faixa de 224. 0. 0. 0 até 239. 255. 18
Programação de alto nível • Facilidade na implementação; • Fornece agilidade no desenvolvimento; • Fornece os principais protocolos utilizados, como HTTP, FTP, SMTP, entre outros. 19
Exemplo de código • Servidor HTTP – HTTP estático – HTTP dinâmico • Ataque de dicionário utilizando Telnet 20
HTTP • Permite a disponibilização facilmente de conteúdo via web através do Simple. HTTPServer; • Pode ser iniciado através de uma única linha python -m Simple. HTTPServer 8000; • Fornece páginas web ou navegação no diretório raiz do servidor. 21
HTTP(Exemplo) • Onde encontrar: Desktop/HLS/HTTP 1 • Tarefas: – Executar o server. HTTP. py e acessar: http: //127. 0. 0. 1: 8000/ – Alterar a página e verificar resultado; – Remover a página e verificar o resultado; 22
HTTP - dinâmico • O Simple. HTTPServer permite a criação de páginas dinâmicas; • Utilização dos métodos POST ou GET; • Utilização da saída de scripts em python. 23
HTTP - Dinâmico(Exemplo) • Onde encontrar: Desktop/HLS/HTTP 2/ • Tarefas: – Executar o exemplo server. py e acessar: http: //127. 0. 0. 1: 8001/ – Alterar o arquivo pages. py e verificar o resultado 24
Telnet • Serviço muito utilizado por dispositivos como roteadores e switchs; • No python utiliza a biblioteca telnetlib para se conectar a um servidor telnet; • O arquivo pass. txt serve como dicionário de senhas para tentar quebrar a senha do servidor; 25
Telnet(exemplo) • Onde encontrar: Desktop/HLS/TELNET/ • Alterar o arquivo passbreaker. py para o endereço correto do servidor Telnet; • Executar o programa e tentar quebrar a senha do dispositivo no endereço 192. 168. 201. 157; 26
Referências • Foundation, P. S. (2011). Python documentation. http: //www. python. org/doc/. último acesso em 01 outubro de 2012. • Goerzen, J. (2004). Foundations of Python Network programming. Apress, 1 th edition. • Rhodes, B. and Goerzen, J. (2010). Foundations of Python Network programming. Apress, 2 th edition. 27
- Slides: 27