1 / 27

Programando sockets em python

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. Apresentação. Graduado em Tecnologia em Redes de computadores pelo Senac Pelotas;

mort
Download Presentation

Programando sockets em python

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programando sockets em python Jerônimo Feijó Noble da Rosa kastanho@gmail.com

  2. Sumário • Apresentação • Programação de sockets em “baixo nível”; • Programação de sockets em alto nível; • Referências.

  3. 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.

  4. Vantagens da linguagem • Multiplataforma; • Extremamente fácil de utilizar; • Grande quantidade de bibliotecas prontas; • A linguagem está sempre sendo atualizada.

  5. 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.

  6. Criando Socket TCP - Cliente Protocolo SOCK_STREAM SOCK_DGRAM SOCK_RAW Família AF_INET AF_INET6 Exemplo de socket: sockobj=socket(AF_INET,SOCK_STREAM) sockobj.connect((‘127.0.0.1’,5000)) sockobj.send(‘senac 2012’) sockobj.shutdown(2) Endereço Porta Mensagem a ser enviada 1 - fecha o canal de transmissão 2 - fecha a conexão

  7. Criando Socket TCP - servidor Exemplo de Socket: sockobj=socket(AF_INET,SOCK_STREAM) sockobj.bind((‘’, 5000)) sockobj.listen(5) connection, address=sockobj.accept() data=connection.recv(4096) connection.close() Porta a ser escutada interface Quantidade de conexões na fila Conexão Endereço do cliente Aceita conexão

  8. 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.

  9. 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.

  10. 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

  11. Criando Socket UDP - Cliente Exemplo de socket: udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST,1) udpsock.sendto(msg,('255.255.255.255',67)) Comunicação UDP Definindo comunicação broadcast Envia para destino específico IP Remoto Porta remota mensagem

  12. Criando Socket UDP - Servidor Exemplo de socket: udpsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) udpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR,1) Dados,endereco = udpsock.recvfrom(1024) Reutilização do socket Dados Origem Retorna IP da origem

  13. Dynamic Host Configuration Protocol (DHCP) • Definido na RFC 2131; • Utiliza endereço de BROADCAST 255.255.255.255 no lado cliente; • Pode ocasionar diversos problemas, no caso do uso ilegítimo.

  14. 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.

  15. DHCP Monitor(exemplo) • Onde encontrar: Desktop/LLS/DHCP/ • Tarefas: • Verificar funcionamento da aplicação • Verificar arquivo arquivo de log dhcpm.log

  16. 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.255.255 (RFC3171).

  17. 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.

  18. 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.255.255.

  19. 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.

  20. Exemplo de código • Servidor HTTP • HTTP estático • HTTP dinâmico • Ataque de dicionário utilizando Telnet

  21. HTTP • Permite a disponibilização facilmente de conteúdo via web através do SimpleHTTPServer; • Pode ser iniciado através de uma única linha python -m SimpleHTTPServer 8000; • Fornece páginas web ou navegação no diretório raiz do servidor.

  22. HTTP(Exemplo) • Onde encontrar: Desktop/HLS/HTTP/HTTP1 • Tarefas: • Executar o serverHTTP.py e acessar: http://127.0.0.1:8000/ • Alterar a página e verificar resultado; • Remover a página e verificar o resultado;

  23. HTTP - dinâmico • O SimpleHTTPServer 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.

  24. HTTP - Dinâmico(Exemplo) • Onde encontrar: Desktop/HLS/HTTP/HTTP2/ • Tarefas: • Executar o exemplo server.py e acessar: http://127.0.0.1:8001/ • Alterar o arquivo pages.py e verificar o resultado

  25. 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;

  26. 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;

  27. 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, 1th edition. • Rhodes, B. and Goerzen, J. (2010). Foundations of Python Network programming. Apress, 2th edition.

More Related