Programação

  • Funcionamento do Laboratório

    A cada semana, uma nova aula de laboratório, na modalidade auto-instrução: você lê o material, faz os experimentos, prepara e entrega o relatório.

    A teoria será baseada no "red book" da IBM "TCP/IP Tutorial and technical overview". 

    https://www.redbooks.ibm.com/redbooks/pdfs/gg243376.pdf

    (aliás, veja os outros redbooks! são todos excelentes!)




    • Exp01: IP

      Teoria: ler Cap.1 e 3.1 (menos 3.1.7 e 3.1.8), 9.1, 9.2, 9.7,9.8

      Prática

      1.Instalar wireshark

      2.Quando conectado na POLI:

      a. Qual IP/máscara de rede/gateway?

      b. Analise o computador de algum amigo, também conectado na POLI. De acordo com a mascara de rede, como deve ser o roteamento?

      c. Que tipo de IP se obtem ao conectar na POLI? Real ou Privado?

      3.Siga algum tutorial de uso do Wireshark. Exiba o resultado de cada passo que vc seguiu.

      exemplo:

      https://www.howtogeek.com/104278/how-to-use-wireshark-to-capture-filter-and-inspect-packets/

      4.Analise o dump do wireshark; selecione um pacote e identifique cada elemento do cabeçalho IP (IP datagram, item 3.1.9 do livro)



    • Exp02: Resolução de endereços

      Teoria

      - ler Cap.3.1.7,3.2, 3.4, 3.5, 3.7

      -Ler

      http://seclists.org/vuln-dev/2002/Sep/99

       Prática

      1.Como se configura o NAT (item 3.1.7 do livro) no roteador (access point, WiFi) da sua casa? Exemplifique com printscreen das telas.

      2.Configure o acesso via NAT a algum serviço (por exemplo, o IIS do seu Windows) em algum computador na sua casa, que esteja conectado ao roteador do item anterior. Demonstre que foi possível acessar a outro local, para comprovar que estava acessível via Internet em qualquer lugar do mundo.

      3.Use o comando PING para “pingar” algum computador e analise os pacotes ICMP, mostrando cada campo. O PING é o aplicativo mais usado para verificar a conectividade.

      4.Use o comando “arp -a”, que lista a tabela ARP e verifique se o endereço físico (MAC Address) indicado corresponde ao do seu computador. Por que o ARP é importante?

      5.Verifique se o  seu computador está configurado para usar DHCP. Mostre os comandos que você usou para chegar à esta conclusão. 

      6.Capture pacotes DHCP usando wireshark. Descreva o procedimento que você fez para conseguir capturar tais pacotes. Analise a estrutura dos pacotes, em relação ao mostrado no livro.

      7.Como o DHCP pode ser usado para ataques de hackers do tipo “man in the middle” ?


    • Exp03:Introdução ao TCP

      Teoria

      Ler 4.1, 4.3

      Prática

      1.O que são “ports”? O que são “sockets” ?

      2.Capture pacotes TCP com wireshark e analise seu formato, em relação ao livro fig.4-10.

      3.Capture pacotes TCP que mostrem o estabelecimento de uma conexão (ver fig.4-19)



    • Exp04: Routing

      Teoria

      Ler 5.1,5.2,5.3

      Prática

      1.Use o comando ‘traceroute” (tracert no Windows) para determinar a rota de sua casa até o gateway da Mecatronica (143.107.99.1). Possivelmente, apenas uma parte da rota será mostrada; por que?

      2.Explique como o protocolo RIP faz com que um pacote saia da sua casa e chegue até o Japão (ou qualquer outro lugar do mundo, fora da sua casa).



    • Exp05: Socket API

      Teoria

      Ler 11.1,11.2.1

      Assista as aulas 1 e 2 do curso:

      https://cursos.timtec.com.br/course/backend/intro/

      Ler algum tutorial sobre socket programming como

      http://www.javaworld.com/article/2077322/core-java/core-java-sockets-programming-in-java-a-tutorial.html

      https://docs.oracle.com/javase/tutorial/networking/sockets/

       Prática

      1.Programe o lado cliente e o lado server de um “servidor de horário”. O cliente envia uma requisição, indicando o nome de uma cidade, e o servidor responde com o horário nesta cidade. O servidor deve ser “single threaded”.

      2.Transforme o servidor em “multi threaded”. Demonstre que, desta forma, o servidor pode atender a muitos clientes, simultaneamente.



    • Exp06: Aplicações TCP: telnet, FTP, DNS

      Teoria

      Ler 12.1, 13.1, 14.1

      Ler

      https://www.theguardian.com/technology/2016/oct/21/ddos-attack-dyn-internet-denial-service

      http://adrenaline.uol.com.br/2017/04/05/49100/banco-brasileiro-teve-seu-dominio-sequestrado-e-sites-dominados-em-ataque-hacker/

      Prática

      1.Instale um “telnet server” no seu computador. Escreva um “telnet client”.

      2.Instale um “FTP server” no seu computador. Escreva um “FTP client” que seja capaz de receber um arquivo. Faça-o específico, para simplificar a atividade.

      3.Como o DNS pode ser usado para ataques de hackers? Como se prevenir contra isso?



    • Exp07: Aplicações TCP: Email

      Teoria

      Ler 15.1 a 15.6

      Prática

      1.Escreva um “SMTP client” simples, que envie um email a um servidor SMTP. Se não tiver acesso a nenhum, instale um servidor em seu computador.

      2.Você utiliza IMAP4 no dia-a-dia, ao ler e-mails no seu celular, computares diversos. Mostre um diagrama de sequência de comandos (item 15.5.3, client commands) que deve ocorrer.



    • Exp08: Aplicações TCP:HTTP

      Teoria

      Ler 16.1 a 16.4

      Prática

      1.Escreva um “HTTP client”, que seja capaz de receber uma página de um servidor HTTP “de verdade” (p.ex. IIS)

      2.Escreva um “HTTP server”, que seja capaz de exibir uma página solicitada por um browser “de verdade” (p.ex. Chrome).



    • Exp09: Webservices sobre HTTP

      Teoria

      Ler Caps. 18 a 21

      http://docs.oracle.com/javaee/6/tutorial/doc/bnayk.html

      Prática

      1.Desenvolva um serviço web (webservice) usando SOAP, que seja capaz de informar o horário em uma determinada cidade. Desenvolva também o client, para demonstrar o uso do webservice.

      2.Desenvolva um serviço web (webservice) usando REST+Json, que seja capaz de informar o horário em uma determinada cidade. Desenvolva também o client, para demonstrar o uso do webservice.



    • Exp10: Socket API: UDP

      Teoria

      Ler 4.2

      Prática

      1.Programe o lado cliente e o lado server de um “servidor de horário” sobre UDP. O cliente envia uma requisição, indicando o nome de uma cidade, e o servidor responde com o horário nesta cidade. O servidor deve ser “single threaded”.

      2.Transforme o servidor em “multi threaded” sobre UDP. Demonstre que, desta forma, o servidor pode atender a muitos clientes, simultaneamente.



    • Exp11:Segurança: Criptografia e assinatura digital

      Teoria

      Ler 22.1, 22.2, 22.4, 22.6, 22.7, 22.8

      Prática

      1.Crie as chaves públicas e privadas e instale no servidor web (por exemplo, no IIS).

      2.Escreva um pequeno programa que criptografe/decriptografe um texto, usando AES.

      3.Escreva um pequeno programa que assine/verifique a assinatura digital de um texto.

      4.Os certificados que você criou no item 1 são compatíveis com  ICP-Br. Por que?



    • Exp12:Segurança: firewall e proxy

      Teoria

      Ler 22.3, 22.5

      Prática

      1.Configure o firewall do seu computador para impedir acessos de determinados endereços (à sua escolha). Mostre a a configuração funcionou.

      2.Instale um servidor de proxy. Configure seu browser para usá-lo. Crie filtros de URL no servidor de proxy, para impedir acesso a determinadas URLs. Mostre que a configuração funcionou.



    • Exp13: Segurança: VPN

      Teoria

      Ler 22.10

      Prática

      1.Crie uma VPN entre seu computador e o de algum amigo seu.


    • Exp14: Segurança: roubo de senhas

      Prática

      1.Demonstre um ataque de roubo de senha. Use pelo menos 2 métodos (pishing, WiFi monitoring, key logging, força bruta, DNS, etc.



    • REC

      Entregar TODOS as experiencias propostas, de forma completa.


    e-Disciplinas - Ambiente de apoio às disciplinas da USP