MEO VOIP: Telefone Fixo no Computador

22 de Março, 2020

Informática, ISP, Software

MEO VOIP: Telefone Fixo no Computador

22 de Março, 2020 | Informática, ISP, Software

É possível utilizar o número do telefone fixo do serviço fibra da MEO no computador ou telemóvel? A resposta é SIM. Infelizmente muitos são os que falam sobre o assunto mas ninguém parece ter uma resposta. Neste artigo apresento a solução e exemplifico como podem também faze-lo.

O serviço da MEO utiliza VOIP baseado no protocolo SIP onde vosso router simula uma linha telefónica tradicional à qual podem ligar qualquer telefone. É possível interceptar o tráfego e descobrir os dados de acesso caso tenham uma instalação com uma ONT e um Router Thomson e não um dos novos routers “all-in-one” da Altice. Pro Tip: Nas instalações novas peçam os dois equipamentos separados aos técnicos.

Para interceptar o tráfego ligamos um Switch gerido entre a ONT e o router, por exemplo um TP Link TL-SG108E ou Netgear GS-GS105E. Na interface web destes Switches em System > Monitoring > Mirroring podemos ligar o “Port Mirroring” que permite clonar o tráfego de uma das portas para outra.

Na porta do Switch de destino ligamos um computador e com o Wireshark podemos capturar tudo o que o Thomson envia e recebe da MEO. A ideia parecia simples no entanto não serve nada. Infelizmente o protocolo SIP faz um hash da palavra-passe do VOIP. Se quiserem saber detalhadamente como funciona está aqui: https://nickvsnetworking.com/reverse-md5-on-sip-auth/.

Investigação Preliminar

Após ler o artigo confirmei no meu Thomson e existe um pedido REGISTER que é recusado (401) e que apenas serve para que o servidor responda com um header WWW-Authenticate que contem um nonce:

 User Datagram Protocol, Src Port: 5070, Dst Port: 5060
 Session Initiation Protocol (401)
     Status-Line: SIP/2.0 401 Unauthorized 010300337
     Message Header
         From: ;tag=14e9660-55f3aa8f-13c4-##########
             SIP from address: sip:+35121--------@sip.sapo.pt:5060
             SIP from tag: 14e9660-55f3aa8f-13c4-##########
         To: ;tag=0879afb############
             SIP to address: sip:+35121--------@sip.sapo.pt:5060
             SIP to tag: 0879afb############
         Call-ID: 14f2fd0-55f3aa8f-#############
         [Generated Call-ID: 14f2fd0-55f3aa8f-#############]
         CSeq: 1 REGISTER
         Via: SIP/2.0/UDP 85.xxx.xxx.xxx:5060;branch=z9hG4bK-#########
         Content-Length: 0
         WWW-Authenticate: Digest nonce="FF900000000000000000000000000000",realm="ims.telecom.pt",algorithm=MD5,qop="auth"
             Authentication Scheme: Digest
             Nonce Value: "FF900000000000000000000000000000"
             Realm: "ims.telecom.pt"
             Algorithm: MD5
             QOP: "auth"

Este valor é utilizado de seguida para calcular o response a ser incluído num segundo pedido REGISTER:

 User Datagram Protocol, Src Port: 5060, Dst Port: 5070
 Session Initiation Protocol (REGISTER)
     Request-Line: REGISTER sip:sip.sapo.pt:5060;transport=UDP SIP/2.0
     Message Header
        (...)
          [truncated]Authorization: Digest username="+35121--------",realm="ims.telecom.pt",nonce="FF900000000000000000000000000000",uri="sip:sip.sapo.pt:5060;transport=UDP",response="5ae00000000000000000000000000000",algorithm=MD5,cnonce="10000",q
             Authentication Scheme: Digest
             Username: "+35121--------"
             Realm: "ims.telecom.pt"
             Nonce Value: "FF900000000000000000000000000000"
             Authentication URI: "sip:sip.sapo.pt:5060;transport=UDP"
             Digest Authentication Response: "5ae00000000000000000000000000000"
             Algorithm: MD5
  

Creio que até possa ser possível obter a palavra-passe a partir do response, nonce e do realm no entanto isto iria ser um processo demorado porque teríamos de crakear o MD5.

Solução Final

Após alguns dias e tentativas acabei por experimentar uma coisa: enquanto interceptava o tráfego do router fazer reset ao mesmo para o forçar a obter de novo as configurações… incluindo os dados do serviço VOIP. Como suspeitava o router recebeu toda a configuração dos serviços incluindo o seguinte:

Hypertext Transfer Protocol
eXtensible Markup Language
(...)
        InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthUserName
        </Name>
    <Value
        xsi:type="xsd:string">
        +35121xxxxxxxx
        </Value>
    </ParameterValueStruct>
<ParameterValueStruct>
    <Name>
        InternetGatewayDevice.Services.VoiceService.1.VoiceProfile.1.Line.1.SIP.AuthPassword
        </Name>
    <Value
        xsi:type="xsd:string">
        XXXXXXXXX
        </Value>
    </ParameterValueStruct>
<ParameterValueStruct>

Como podem ver no XML é enviado o SIP.AuthUserName e o SIP.AuthPassword que são os vossos dados do VOIP!

Configurar o Cliente VOIP

Agora que já sabemos o utilizador e a palavra-passe do VOIP podemos configurar o vosso cliente VOIP favorito, no meu caso o MicroSIP:

SIP Server: sip.sapo.pt
SIP Proxy: proxy.ims.iptv.telecom.pt:5070
Username: +35121xxxxxxx
Domain: sip.sapo.pt
Login: +35121xxxxxxx --numero-de-telefone--
Password: --password-do-voip--
Transport: UDP
Register Refresh: 3600
Publish Presence: Off

Alguns detalhes importantes na configuração:

  • Register Refresh: deverá ter o mesmo valor que a MEO envia para os routers, 3600. Utilizar um valor maior faz com que o cliente deixe de receber chamadas;
  • Publish Presence: Só deverá ser ligado caso não tenham um telefone fixo no Thomson porque irá interferir com o toque do telefone ao receber chamadas.

Agradeço agora a todos os fóruns portugueses, respetivos moderadores e utilizadores que de cada vez que alguém pergunta como fazer isto respondem com o clássico “não consegues”, “eu sei como fazer mas não vou dizer” ou inventam desculpas de algibeira para remover posts úteis. Se não sabem como as coisas funcionam ou não querem ajudar não atrapalhem. 😉