quinta-feira, 29 de maio de 2014

Exemplo de um Script para colocar um ficheiro num destino utilizando FTP.

Este é um exemplo que pode ser utilizado para copiar ficheiros de um servidor para outro utilizando o FTP.

#!/bin/sh
HOST='ftp.hjfr-info.com'
USER='yourid'
PASSWD='yourpw'
FILE='file.txt'

ftp -n $HOST <

NetFlow vs Sflow

Netflow vs Sflow


Muitas pessoas acham que ambos são a mesma coisa outros acham que é preferível um ao outro.
Na realidade são coisas diferentes e que se podem complementar entre si.
Netflow nunca irá funcionar como o Sflow ou o inverso.
Cada um tem a sua forma de trabalhar e serve o seu objectivo.

Vamos ver quais as funcionalidades de cada um e onde podem ser implementados:

Netflow:

É um acrónimo para Network Flows quebra as comunicações TCP/IP em dados estatísticos baseados em “flows” de comunicações.

O que é um flow? 
É um fluxo de pacotes num único sentido com base numa origem especifica e num destino especifico.
ex: Se iniciarmos uma sessão telnet para o netflow essa sessão é composta por 2 flows de trafego uma outbond e outra inbound.

Todos os pacotes pertencentes ao mesmo flow tem 7 coisas em comum


  1. todos tem o mesmo ip de origem
  2. todos tem o mesmo ip de destino
  3. todos tem a mesma source port
  4. todos tem a mesma destination port
  5. todos tem de ter o mesmo protocolo L3
  6. Todos tem de ter o mesmo valor de tipo de serviço (TOS value)
  7. Mesmo interface fisico ou virtual.

Os primeiros 4 são os que definem o “flow”
Versão 9 é a ultima versão e já inclui mais campos incluindo MPLS e endereços de IPv6 e portas.
Configuração de exemplo

R1(config)# interface fastethernet0/0
R1(config-if)# ip flow ingress
R1(config-if)# ip flow egress
R1(config-if)# exit
R1(config)# ip flow-export destination 10.1.10.100 99
R1(config)# ip flow-export version 9
R1(config)# ip flow-export source loopback 0
R1(config)# end

maior parte das vezes utiliza a porta 9996 apesar de nao ter porta especifica


Examinar Netflow Cache

R1# show ip cache flow
IP packet size distribution (
255 total packets):
   1-32   64   96  128  160  192  224  266  268  320  352  384  416  448  480
   .000 .000 .000 1.00 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

    512  544  576 1024 1546 2048 2560 3072 3684 4096 4608
   .000 .000 .000 .000 .000 .000 .000 .000 .000 .000 .000

IP Flow Switching Cache, 4456704 bytes
  1 active, 65535 inactive, 1 added
  32 ager polls, 0 flow alloc failures
  Active flows timeout in 30 minutes
  Inactive flows timeout in 15 seconds
IP Sub Flow Cache, 533256 bytes
  1 active, 16383 inactive, 1 added, 1 added to flow
  0 alloc failures, 0 force free
  1 chunk, 1 chunk added
  last clearing of statistics never
Protocol         Total    Flows   Packets Bytes  Packets Active(Sec) Idle(Sec)
--------         Flows     /Sec     /Flow  /Pkt     /Sec     /Flow     /Flow

SrcIf         SrcIPaddress    DstIf         DstIPaddress    Pr SrcP DstP  Pkts
Fa0/0         10.10.1.1       S0/0/0        10.10.2.2       01 0200 0050   255

Confirmar uma implementação de netflow Cisco

R1# show ip flow interface
FastEthernet0/0
  
ip flow ingress
  
ip flow egress


R1# show ip flow export
Flow export v9 is enabled for main cache
  Export source and destination details :
  VRF ID : Default
   
Source(1)       1.1.1.1 (Loopback0)
   
Destination(1)  10.1.10.100 (99)
  
Version 9 flow records

  0 flows exported in 0 udp datagrams
  0 flows failed due to lack of export packet
  0 export packets were sent up to process level
  0 export packets were dropped due to no fib
  0 export packets were dropped due to adjacency issues
  0 export packets were dropped due to fragmentation fail ures
  0 export packets were dropped due to encapsulation fixup failures
R1#

sflow:

É um protocolo feito de forma mais genérica para métricas de trafego de rede. Esta desenhado para pertencer a qualquer dispositivo de rede e permite fornecer constantes dados estatísticos sobre a rede. (L2, L3, L4 até L7). Com sflow todo o trafego numa rede pode ser caracterizado e monitorizado. 
Estas estatísticas são essenciais para controlo de congestionamento, segurança e desenho de rede.
O equipamento captura uma amostra de pacotes por interface e envia essa amostra para um colector.
Não esta limitado ao IP podendo funcionar também noutros protocolos como IPX, NetBEUI etc.
Utiliza amostras de trafego para as suas estatísticas podendo haver alguma incorrecção.

Qual melhor a usar? 
Depende das nossas necessidades, das capacidades de equipamento e orçamento.



domingo, 11 de maio de 2014

Recuperação de password / Alteração de password

Um período de contagem decrescente aparece por baixo desta mensagens. Carregue em ESC para interromper o processo de boot e entrar em modo ROMMON. Daqui podemos alterar o valor do configuration register para instruir o ASA a passar a configuração de arranque.

Reinicializar a máquina.

Entrar em mode de configuração e alterar a password.

Ex:

Utilizar a tecla BREAK ou ESC para interromper o processo de boot.
Utilizar a tecla ESPAÇO para iniciar o boot imediatamente.

rommon #0> confreg 0x41
rommon #1> boot
Loading disk0:/asa823-k8.bin...
<...output omitted...>
ciscoasa> enable
Password:
ciscoasa# copy startup-config running-config
FIREWALL# configure terminal
FIREWALL (config)# password NEWPASSWORD
FIREWALL (config)# enable password NEWPASSWORD
FIREWALL (config)# username Administrator password NEWPASSWORD
FIREWALL (config)# no aaa authorization command
FIREWALL (config)# config-register 0x1
FIREWALL (config)# exit
FIREWALL# copy running-config startup-config
FIREWALL# reload noconfirm


- SeeKeR

sábado, 10 de maio de 2014

Spanning-Tree Protocol Toolkit


Ao contrário do que algumas pessoas pensam o STP toolkit não é nenhuma ferramenta disponível para nos ajudar com o protocolo STP.

São sim, um conjunto de extensões que a CISCO fez à sua implementação do protocolo para o tornar mais eficiente.

Spanning-Tree protocol permite que as redes da camada 2 do modelo de OSI (Layer 2) com redundancia funcionem em condições preveningo loops indesejaveis. Este algoritmo automaticamente calcula a topologia e decide quais as portas que devem ficar em standby para impedir loops na rede, garantindo assim uma maior eficiencia.

Por defenição o comportamento do protocolo é determinista ou seja nós sabemos exactamente como se deve comportar numa rede. Por vezes não o é, seja por alterações feitas na rede ou por aparelhos na camada de acesso que são controlados pelos utilizadores finais ou falhas de ligações.

Para optimizar a performance do protocolo a CISCO fornece o STP toolkit. Este conjunto de ferramentas permite optimizar e tornar mais seguras as redes L2 (Layer 2).

As ferramentas que fazem parte deste kit são:

PortFast - Faz com que as portas do equipamento entrem em estado forwarding imediatamente, passando assim os estados normais de aprendizagem. A porta configurada ainda faz parte da topologia STP e pode imediatamente transitar de estados diminuindo assim o tempo de convergencia. Podendo passar ao estado blocked se necessario. Pode ser activada em portas trunk Pode ter valores operacionais diferentes dos configurados.

notas:

  1. Deve ser utilizada apenas em portas de acesso.
  2. Deve ser utilizada apenas nas portas em que se ligam equipamentos terminais para evitar a criação de um loop.
  3. Activar a funcionalidade numa porta ligada a um switch pode criar um "bridging loop" temporário. 



BPDUGuard - Quando activa desliga a porta que recebe um BPDU (Bridge Protocol Data Unity). Permite uma maior segurança contra más configurações porque o administrador pode colocar a porta de novo a funcionar. Quando configurado ao nivel de uma porta coloca a porta imediatamente em estado desligado independentemente da configuração PortFast.

notas:

  1. Numa configuração válida as portas configuradas como PortFast não recebem BPDU caso recebam há um erro de configuração ou algo que necessita ser investigado.
  2. Quando configurado globalmente aplica-se a todas as portas que estão operacionais e com o PortFast activo.



BPDUFilter - Impede uma porta de receber ou enviar BPDU

notas:

  1. Pode ser configurado por porta.
  2. Pode ser configurado globalmente
  3. Quando configurado em portas que não estejam ligadas a equipamentos terminais pode causar loops.
  4. Se uma porta não estiver no seu estado por defeito a configuração PortFast não afecta o filtro de BPDU PortFast.


UplinkFast - Fornece Convergência depois de uma falha na ligação, permite balanceamento de carga com a utilização de grupos de Uplink.
notas:

  1. Pode ser util no desenho de redes-
  2. Quando activa afecta todas as VLAN's no equipamento.
  3. Não pode ser configurada em VLAN's individuais.
  4. As melhorias ao "rapid" STP incluem estas funcionalidades.


RootGuard - Previne uma porta de se tornar uma root port ou blocked port.
Quando configurada numa porta e esta recebe um valor de BPDU superior ela passa imediatamente ao valor de de Root-Inconsistent (Blocked) state.

BackboneFast - Iniciado quando uma root port ou uma porta bloqueada recebe um BPDU de valor inferior de um designated Bridge.
Permite uma maior rapidez em caso de falha.

LoopGuard - Ajuda a prevenir "bridging loops" que pode ocorrer devido a falhas de ligações unidirecionais. Quando activado globalemte aplica-se a todas as ligações ponto a ponto. Detecta as portas em estado blocked e as root ports garantindo que continuam a receber informação das portas designadas do systema. Pode ser activado por porta. É autmaticamente aplicado a todas as intancias de VLAN's activas no systema. Quando activado numa ligação Etherchanel pode afectar todas as conecções até que a conecção com problemas seja removida do link agregado.

quinta-feira, 13 de junho de 2013

Testar Portas SMTP e Validar Utilizadores


Testar SMTP e utilizadores



Há imensas aplicações para testar portas de servidores, uma mais complexas outras mais simples.
Apesar do universo ter uma escolha não estava satisfeito.
Decidi criar a minha aplicação, como estava a tentar aprender Python decidi começar a fazer um simples esboço em Python.
Esta aplicação estabelece uma ligação á porta 25 (SMTP) e tenta verificar se um utilizador especifico existe.

Como entrada do scritpt recebe um ficheiro (smtpServers.txt) com uma lista de máquinas que queremos testar a porta 25 o retorno é feito para o ecrã.

Aqui fica o meu primeiro script em Python...


  1. #!/usr/bin/python 
  2. import socket 
  3. import sys 

  4. if len(sys.argv) !=2: 
  5. print "Usage: SMTP_Test "
  6. sys.exit(0) 

  7. #ReadFile with Machines
  8. f = open('../smtpServers.txt','r')
  9. lines = f.readlines()
  10. f.close 

  11. for x in lines:
  12. #Create Socket
  13. print x
  14. s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) 

  15. #Connect to the Server
  16. connect=s.connect((x,25)) 

  17. #receive Banner
  18. banner=s.recv(1024)
  19. print banner

  20. #VRFY a user
  21. s.send('VRFY ' + sys.argv[1] + '\r\n')
  22. result=s.recv(1024)
  23. print result
  24. #close the socket 






sexta-feira, 20 de julho de 2012

Hard Reset Nokia N8

Neste ligação podem aprender como se faz o hard reset ao nokia N8

http://www.hjfr-info.com/PT/Aprender/HJFR-INFO_White/MobileReset/NokiaN8-00.php

Hard Reset Nokia E7-00

Nesta ligação podem encontrar formas de fazer o reset ao nokia E7

http://www.hjfr-info.com/PT/Aprender/HJFR-INFO_White/MobileReset/NokiaE7-00.php

Hard Reset Nokia Lumia 800

Para fazerem o hard reset ao Nokia Lumia 800 devem seguir a seguinte ligação:

http://www.hjfr-info.com/PT/Aprender/HJFR-INFO_White/MobileReset/NokiaLumia800.php

Hard Reset Lumia 610

Para fazerem hardreset ao lumia 610 podem seguir esta ligação:

http://www.hjfr-info.com/PT/Aprender/HJFR-INFO_White/MobileReset/NokiaLumia610.php

Hard Reset Nokia Lumia 900

Para fazerem o Hard Reset ao Nokia Lumia 900 só tem de seguir o link em baixo:

http://www.hjfr-info.com/PT/Aprender/HJFR-INFO_White/MobileReset/NokiaLumia900.php

terça-feira, 10 de julho de 2012

Jmeter

Uma das ferramentas que conheço com mais possibilidades.

É impressionante a quantidade de coisas que se podem fazer com uma simples ferramenta de testes.

Estou a gostar bastante e é gratuita. Com ela e alguma personalização conseguimos fazer testes de carga e validar erros do nosso código bem como falhas de segurança.

http://jmeter.apache.org/index.html

sábado, 14 de abril de 2012

Novas funcionalidades do Windows 8 - Secure Boot

Secure boot.
Aparentemente o windows 8 vai ter novas funcionalidades em relação ao boot.
É sabido que uma das grandes dores de cabeça em termos de segurança é o controlo da parte de boot do sistema operativo das nossas máquinas.
A Fase em que a BIOS acaba de entrar e o S.O. começa a arrancar é uma das mais criticas. É aqui que se pode subverter a segurança implementada no S.O. arrancando com outro S.O. que permita a corrupção do existente ou mesmo instalando aquilo a que vulgarmente se chama de root kit.
Com o windows 8 e as novas BIOS UEFI (Unified Extensible Firmware Interface) a Microsft veio tentar alterar o paradigma.
O UEFI inclui uma opção de secure boot para impedir "Boot Loader Attacks".
Qualquer código que é carregado na fase de boot do sistema terá que estar identificado com uma chave de segurança permitindo ao UEFI bloquear qualquer tentativa de correr código não autorizado. Os fabricantes O.E.M terão de implementar esta funcionalidade para obterem certificação do seu equipamento (autocolante de windows 8 compatible.)
Para o utilizador esta funcionalidade é muito boa, mas para o fabricante a funcionalidade também é excelente, porque passa a existir uma base de dados de chaves "Key Enrollment Key database (KEK)" onde a microsoft poderá realizar a actualização de chaves para novos S.O. mas também poderá revogar chaves para os seus sistemas operativos que terão sido comprometidos ou na minha opinião pirateados!
A forma de funcionar é simples, haverão várias bases de dados de chaves que serão consultadas no processo de boot.
Depois de validadas o windows arranca o software "Anti-Malware".
Finalmente o windows arranca os "Kernel Drivers" e inicializa o "User Mode"

Mais informações em http://www.hjfr-info.com/Noticias/NoticiasRecentes.php

- SeeKeR

domingo, 15 de janeiro de 2012

NHRP - Next Hop Resolution Protocol

É um protocolo tipo cliente / servidor onde um "Hub" faz de NHRP server e os "SPOKES" são os clientes. A base de dados NHRP mantém os mapeamentos entre o router e os endereços de cada túnel (o ip de cada um dos "SPOKE"). Cada SPOKE regista o seu ip publico e o seu endereço privado usado no túnel no seu arranque. E faz perguntas à base dados NHRP para saber quais os endereços dos outros SPOKES existentes. NHRP é utilizado para fazer com que a configuração e gestão de um ambiente full / partial mesh seja menos complexa quando comparada com a Hub-And-spoke.

- SeeKeR

mGRE - Multipoint Generic Routing Encapsulation

Permite que uma porta configurada com Generic Routing Encapsulation (GRE) possa suportar múltiplos túneis GRE, tornando a sua configuração muito mais fácil.

A utilização de túneis GRE permite a utilização de IP multicast e protocolos alem do IP.

O suporte do ip multicast activa a possibilidade de protocolos dinâmicos de Routing, como o EIGRP ou o OSPF de actualizar as suas tabelas dinâmicas de Routing e criar caminhos de redundantes. Estes caminhos podem ser essenciais para o funcionamento das DMVPN (Dynamic Multipoint Virtual Private Networks).


- SeeKeR

segunda-feira, 2 de janeiro de 2012

NAT


Network address translation é uma tecnologia que nos permite resolver problemas de conectividade em redes que utilizam endereços não roteáveis ou que se sobrepõem a outros já existentes.
Na maioria dos casos NAT permite a utilização de endereços ipv4 não registados para a ligação á internet.
Os dispositivos que têm um nat configurado traduzem em tempo real os endereços privados da rede para um ou mais endereços públicos válidos. Esta tradução de endereços adiciona um nível de segurança na nossa rede pois impede a divulgação de endereços internos na rede externa.
Os dispositivos NAT também podem funcionar de forma inversa, traduzindo múltiplos endereços públicos para um ou mais endereços privados.

Vantagens do NAT:

· Eliminação de utilização de endereços públicos (registados) por cada um dos hosts que se ligam a redes externas.

· Preserva os endereços utilizando a. Multiplexagem de portas para todas as comunicações com o exterior. (permite a utilização do mesmo endereço publico por vários hosts privados).

· Permite conectividade entre redes existentes com endereços sobrepostos.

· Permite a migração de endereçamento de uma forma fácil e organizada.

Desvantagens:

· Determinados protocolos escondem os seus endereços de ip fora do header. ( embedded ip address ) Os NAT's dinâmicos necessitam de manter informação de estado que nem sempre está disponível.

· O NAT interfere com alguns sistemas de cifra e autenticação.

· Em alguns casos dificulta a análise de logs sendo necessário correlacionar esses logs com outros existentes.

Existem Vários tipos de NAT.

1.      NAT estático. Traduz um endereço único interno para um endereço específico externo. (ambos os endereços são fixos)

2.      NAT dinâmico. Traduz um endereço interno para um endereço externo temporariamente. (quando o endereço interno deixa de usar o publico este fica disponível para outras ligações. A relação contínua de um para um.)

1.      PAT estático - Á semelhança de um nat estático traduz múltiplos endereços internos para um externo mantendo a porta utilizada.

2.      PAT dinâmico (Overload). - Traduz múltiplos endereços internos para um ou mais endereços externos mantendo, se possível, a porta utilizada escolhendo para isso um dos endereços de ip externos disponíveis, caso não seja possível, utiliza a próxima porta disponível num qualquer endereço externo.

Formas de configuração:

· Nat Estático

enable
configure terminal
ip nat inside source static 192.168.1.2 209.200.160.100
interface fa 0/0 Interface com ligação ao interior
ip nat inside
interface fa0/1 Interface com ligação ao exterior
ip nat outside

· Nat Dinamico

enable
configure terminal
access list 11 permit 192.168.1.0 0.0.0.255 Criação da lista de endereços que podem ser traduzidos pelo nat
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-lenght 24 conjunto de endereços externos que vão ser usados na tradução dos endereços internos.
ip nat inside source list 1 pool nomepool associação dos endereços internos á pool de endereços externos
int fa 0/0 interface da rede interna
ip nat inside
int fa 0/1 interface da rede externa
ip nat outside

Este nat dinâmico tem a tradução de endereços 1 para 1 ou seja só se conseguem ligar á rede externa 10 endereços internos de cada vez, visto apenas termos 10 externos na pool de endereços.

Se houver um 11 pedido este não vai ter sucesso na sua tradução para um endereço externo.

· PAT estático

enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.100 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside

· PAT Dinamico

enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 209.200.160.100 209.200.160.110 prefix-length 24
ip nat inside source list 1 pool nomepool overload
int fa0/0
ip nat inside
int fa0/1
ip nat outside

Por defeito o equipamento guarda as tabelas nat por tipo de ligação algum tempo.
Aqui ficam os tempos por defeito que podem ser alterados:

· UDP - 5minutos
· TCP (sessão) - 24 horas
· SYN - 1 minuto
· FIN/RST - 1 minuto
· DNS - 1 minuto
· ICMP - 1 minuto

Por fim deixo uma configuração NAT que pode ser usada quando temos redes que se sobrepõem e cujo trafego a ser feito nat é da rede externa para a rede interna...

enable
configure terminal
access-list 1 permit 192.168.1.0 0.0.0.255
ip nat pool nomepool 192.168.1.2 192.168.1.10 prefix-length 24
ip nat outside source list 1 pool addresspool atenção ao outside em vez de inside.
interface fa 0/0
ip nat inside
interface fa 0/1
ip nat outside


Tipos de endereços de NAT



  1. Inside Local - Endereço pertencente ao host interno
  2. Inside Global - Endereço do host interno visualizado pelos hosts externos
  3. Outside Local - Endereço externo visualizado pelos hosts internos
  4. Outside Global - Endereço do host externo

terça-feira, 27 de dezembro de 2011

Configurar SNMP Básico

Para activarmos o SNMP no nosso equipamento Cisco é necessário escrever os seguintes comandos:

enable
configure terminal
snmp-server contact xpto at "numero telefone" (numero de contacto)
snmp-server location rua x (morada)
snmp-server chassis-id 123456 (numero de serie do dispositivo)

Configurar visualizações de SNMP.

snmp-server view ciscoview mib-2 included  (criar e incluir uma visualização de SNMP (sub-tree))


Configurar uma comunidade SNMP

snmp-server comunity xpto ro (criação de uma view com permissões de leitura ao conteúdo total da MIB)
snmp-server comunity xpto2 view ciscoview (criação de uma view com permissões apenas para a "sub-tree" da MIB-2 definida anteriormente.)

Configurar SSH sem host name e domain Name


Para configurar SSH num equipamento cisco sem hostname e sem domain name podemos recorrer aos seguintes comandos:

enable
configure terminal
ip ssh rsa keypair-name ciscopair
generate rsa usage-keys label ciscopair modulus 1024
ip ssh version 2

sexta-feira, 23 de dezembro de 2011

RBAC - role based access control

É uma forma de controlo de acessos que restringe o acesso aos recursos baseado-se nas funções dos utilizadores.

Este método de controlo pode ser utilizado pelas grandes empresas para atribuir acessos aos funcionários tendo por base a sua função.

Assim consegue-se cumprir as melhores recomendações de segurança segregando acessos e atribuindo privilégios de administração a quem de direito.

Para activar a funcionalidade num router ou switch cisco temos de seguir os seguintes passos:

1 - activar as "cli view's"
2 - configurar as várias "cli views" para os diferentes administradores
3 - opcionalmente pode-se criar views para grupos diferentes de utilizadores com passwords diferentes para aceder a um "CLI" particular.

Comandos:

1:
Enable
Configure terminal
Enable view ( entra em modo root view que permite criar varias views)

2:
Parser view my-view ( criar um nome de view)
Secret xpto (atribuir um enable secret)
Commands exec include show access-list (especificar comandos no modo exec.)
Commands exec include configure terminal ( especificar comandos no modo exec.)
Commands configure include ip access-list extended (especificar comandos no modo de configuração)
Commands Ipneacl include all deny ( especificar sub comandos do modo de configuração)
Commands ipenacl all permit

As opções possíveis são:

Include - adiciona um comando especifico ou interface a uma view
Include-exclusive - adiciona um comando especifico ou interface numa view mas exclui o comando de todas as outras
Exclude - nega acesso ao comandos especificados.
All - funciona como wildcard.

sábado, 17 de dezembro de 2011

Portas trunk

As portas trunk são portas que permitem a passagem de várias redes virtuais (VLAN) ao mesmo tempo. Desde que devidamente autorizadas. É necessário ter uma maior sensibilidade em relação á sua segurança em atenção a segurança, caso elas sejam comprometidas o atacante terá acesso a todas as redes virtuais que passam nessa porta.

Para activar uma porta em modo trunk é necessário escrever os seguintes comandos:

Enable
Configure terminal
Interface fast Ethernet 0/0
Switchport mode trunk

- SeeKeR

quarta-feira, 14 de dezembro de 2011

Portas de Acesso

Nos switchs é importante que todas as portas que não são trunk devam ser forçadas como portas de acesso. Devemos por razões de segurança evitar ter portas dinâmicas ou em modo negociável.

Para colocar uma porta em modo acesso devemos escrever os seguintes comandos:

enable

configure terminal

Interface fa0/0

switchport mode access

 

Pode ser também aplicado a um conjunto de portas em vez de uma só como no exemplo em cima.