Skip to content
This repository has been archived by the owner on Feb 12, 2024. It is now read-only.

Falha ao autenticar requisição #49

Closed
VoidGS opened this issue Jun 23, 2023 · 33 comments
Closed

Falha ao autenticar requisição #49

VoidGS opened this issue Jun 23, 2023 · 33 comments
Labels
bug Something isn't working

Comments

@VoidGS
Copy link

VoidGS commented Jun 23, 2023

Comecei a utilizar a api ontem, e até o momento só tinha implementado uma requisição simples de rastreio de encomendas, e até ontem estava funcionando perfeitamente. Mas hoje de manha (sem nenhuma alteração no código) parou de funcionar, disparando o erro "Falha ao autenticar requisição". Pelo que vi, está relacionado com a função de gerar token de acesso, mas não vi nenhuma alteração nos últimos meses para ter causado isso, então minha única especulação é que seja algum problema na API dos correios.

@tegila
Copy link

tegila commented Jun 23, 2023

Estou com o mesmo problema =\

@ferezini
Copy link

mesmo problema aqui, e minha aplicação depende mto destes rastreios, kkk... isso me fez pensar em mudar algumas coisas nela pois não da p correr o risco de ficar sem a Api

@ferezini
Copy link

só p avisar quem está com problema, já tive este problema algumas outras vezes, mas sempre retornava rapidamente.

@juniorkrz
Copy link

Também está acontecendo aqui, começou hoje pela manhã

@juniorkrz
Copy link

Error: Falha ao autenticar requisição
at processTicksAndRejections (node:internal/process/task_queues:96:5)

@VoidGS
Copy link
Author

VoidGS commented Jun 23, 2023

Galera, pelo que eu vi, o problema é diretamente com o Correios. Mas não consigo dar certeza absoluta, enquanto isso ficamos no aguardo kkkkkk

@juniorkrz
Copy link

Tentei rastrear manualmente nos correios e deu certo.

@juniorkrz
Copy link

Pessoal, gostaria de tirar algumas dúvidas sobre a api, ela tem algum canal no Discord ou algo semelhante?

@VoidGS
Copy link
Author

VoidGS commented Jun 23, 2023

Tentei rastrear manualmente nos correios e deu certo.

Sim mas ai nesse caso eles mantém as últimas atualizações salvas, por isso não daria problema. O problema em si acho que está na API do correios mesmo

@ferezini
Copy link

Tentei rastrear manualmente nos correios e deu certo.

Sim mas ai nesse caso eles mantém as últimas atualizações salvas, por isso não daria problema. O problema em si acho que está na API do correios mesmo

O muambator está atualizando as informações então não faz sentido estar off, devem consumir do mesmo local. é alguma coisa com a autenticação que esssa api usa, o usuário deve ter sido deletado pelos correios ou algo assim.

@ferezini
Copy link

este site aqui tb deve consumir da mesma forma e está OK

https://www.websro.com.br/rastreamento-correios.php?P_COD_UNI=NL634774505BR

@VoidGS
Copy link
Author

VoidGS commented Jun 23, 2023

Tem razão, não sei então kkkkkk

@ferezini
Copy link

Se alguém achar outra API q funcione semelhante, consultando varios códigos de uma só vez, passe p nós por favor.

@joao-uefrom
Copy link

joao-uefrom commented Jun 23, 2023

Galera, acho que agora é diferente. Até pq o erro que dá é "Forbidden" (proibido), antes sempre era algo como "Service Unavailable" (serviço indisponível) acrescentando o fato que já tem mais de 8hs desde que o problema começou.

Eu real acho que os correios invalidaram a chave de API que estávamos usando, antes era possível encontrar ela facilmente no app dos Correios para Android, porem agora eu fiz o mesmo processo para tentar encontrar ela lá (ver se atualizaram) e para a minha surpresa, o trecho de código que tinha lá sumiu com tudo, não sou um especialista, mas acho que levaram a parte de conexão para dentro do Flutter (que possui outro processo de decompilação e eu não conheço) ou simplesmente obfuscaram código de alguma outra forma, tornando difícil de encontrar usando o decompilador java que eu tava usando.

Então resumindo, eu acho que essa chave que usávamos não vai mais voltar (espero que eu esteja errado). Vi que a galera citou outros serviços aí que estão funcionando, mas se lembrem, o Correios vende esse serviço de API...

Editado:
E outro detalhe, a mensagem de proibido tá sempre atualizada com o momento atual da consulta, então o servidor tá funcionado ok. Talvez nós reste agora dar aquele jeitinho brasileiro e procurar outra saída. 😄
Captura de tela 2023-06-23 185959

@tegila
Copy link

tegila commented Jun 23, 2023

@joao-uefrom Que tal descompilar o app Android?

@joao-uefrom
Copy link

@joao-uefrom Que tal descompilar o app Android?

foi justamente isso que eu fiz, mas o app deles usa Flutter, então a maioria do código tá nos binarios do Dart, essa parte eu não tenho conhecimento de como descompilar.

@leandrobattochio
Copy link

leandrobattochio commented Jun 24, 2023

Talvez se usar um Fiddler resolva. Vai ter que fazer um man in the middle e descobrir quais são os novos dados sendo passados na api pelo novo app mobile.

@joao-uefrom

Usando o Android Studio pra configurar um emulador e o http toolkit pra redirecionar o trafego deve funcionar, porém precisa editar o xml do app e recompilar, fazendo assim com que ele aceite o certificado custom. Se conseguir fazer isso é gg.

https://httptoolkit.tech/docs/guides/android#intercepting-traffic-from-your-own-android-app

Se conseguir me ensina, sempre tentei sniffar tráfego https de android mas sempre caio nessa de ter que editar o apk que eu quero sniffar pra aceitar o certificado custom.

@joao-uefrom
Copy link

Talvez se usar um Fiddler resolva. Vai ter que fazer um man in the middle e descobrir quais são os novos dados sendo passados na api pelo novo app mobile.

@joao-uefrom

Usando o Android Studio pra configurar um emulador e o http toolkit pra redirecionar o trafego deve funcionar, porém precisa editar o xml do app e recompilar, fazendo assim com que ele aceite o certificado custom. Se conseguir fazer isso é gg.

https://httptoolkit.tech/docs/guides/android#intercepting-traffic-from-your-own-android-app

Se conseguir me ensina, sempre tentei sniffar tráfego https de android mas sempre caio nessa de ter que editar o apk que eu quero sniffar pra aceitar o certificado custom.

eu tava tentando fazer isso, mas o app ignorava o meu servidor proxy, aí me deu preguiça :v
deixo para o próximo tentar :u

@leandrobattochio
Copy link

leandrobattochio commented Jun 24, 2023

@joao-uefrom
Esse HTTP Toolkit é meio que automático. Vc instala o App no windows e logo quando starta o emulator do android studio, o http toolkit conecta via adb no emulador e ja faz tudo. Só precisa fazer essa modificação no xml.

Se conseguir me mandar um apk com as modificações que ta escrito ali na documentação me avisa que eu faço.

https://gist.github.com/unoexperto/80694ccaed6dadc304ad5b8196cbbd2c

Talvez isso ajude também.

@andersonmendess
Copy link

andersonmendess commented Jun 25, 2023

Fala pessoal, Beleza? Vou deixar aqui minha pequena contribuição

Eu tenho um aplicativo que estava utilizando essa api também, e descompilando o apk dos correios mais recente, vi que foi atualizado o endpoint que validava se a requisição era do aplicativo oficial.

estavamos utilizando o https://proxyapp.correios.com.br/v1/app-validation que era obrigatorio passar um requestToken com alguns parametros encoded em base64, porem nessa nova v2 temos mais alguns parametros, e também novos campos no body.

Novo endpoint:

POST https://proxyapp.correios.com.br/v2/app-validation

body funcional:

{
	"requestToken": "YW5kcm9pZDtici5jb20uY29ycmVpb3MucHJlYXRlbmRpbWVudG87RjMyRTI5OTc2NzA5MzU5ODU5RTBCOTdGNkY4QTQ4M0I5Qjk1MzU3ODs1LjEuMTQ=",
	"data": "23/06/2023 12:42:58",
        "sign": "a5e2f3a83571c88c40a31c68876f261f"
}

não esqueça os headers content-type e user-agent.

Diferenças que eu percebi:

  • o requestToken agora recebeu a versão do aplicativo na base64.
  • o parametro data foi incluído no body.
  • o parametro sign foi incluído no body.

o sign parece alguma hash do data, ou seja, como se tivessem convertido a string da data em md5 (mas não é kk), deve ser alguma hash fixa de 32 caracteres com um salt. Eu obtive esse atraves do monitoramento de rede usando o HTTP Toolkit e ate agora não expirou, então não sei se a API dos correios em algum momento vai tornar esse sign inválido.

o data está relacionado ao momento em que o aplicativo gerou o sign, se alterar a data ou o sign, a requisição nega a geração de um token de autenticação. Então enquanto não conseguirmos fazer a engenharia reversa nesse sign, teremos que sempre utilizar esse que eu passei, ou caso expire, copiar um novo do aplicativo dos correios.

@ferezini
Copy link

clonei o repositorio e estou tentando realizar as alterações acima, mas ja estou tendo problemas antes de alterar, alguem poderia publicar uma versão da biblioteca com as alterações acima?

@leandrobattochio
Copy link

leandrobattochio commented Jun 25, 2023

Fala pessoal, Beleza? Vou deixar aqui minha pequena contribuição

Eu tenho um aplicativo que estava utilizando essa api também, e descompilando o apk dos correios mais recente, vi que foi atualizado o endpoint que validava se a requisição era do aplicativo oficial.

estavamos utilizando o https://proxyapp.correios.com.br/v1/app-validation que era obrigatorio passar um requestToken com alguns parametros encoded em base64, porem nessa nova v2 temos mais alguns parametros, e também novos campos no body.

Novo endpoint:

POST https://proxyapp.correios.com.br/v2/app-validation

body funcional:

{
	"requestToken": "YW5kcm9pZDtici5jb20uY29ycmVpb3MucHJlYXRlbmRpbWVudG87RjMyRTI5OTc2NzA5MzU5ODU5RTBCOTdGNkY4QTQ4M0I5Qjk1MzU3ODs1LjEuMTQ=",
	"data": "23/06/2023 12:42:58",
        "sign": "a5e2f3a83571c88c40a31c68876f261f"
}

não esqueça os headers content-type e user-agent.

Diferenças que eu percebi:

  • o requestToken agora recebeu a versão do aplicativo na base64.
  • o parametro data foi incluído no body.
  • o parametro sign foi incluído no body.

o sign parece alguma hash do data, ou seja, como se tivessem convertido a string da data em md5 (mas não é kk), deve ser alguma hash fixa de 32 caracteres com um salt. Eu obtive esse atraves do monitoramento de rede usando o HTTP Toolkit e ate agora não expirou, então não sei se a API dos correios em algum momento vai tornar esse sign inválido.

o data está relacionado ao momento em que o aplicativo gerou o sign, se alterar a data ou o sign, a requisição nega a geração de um token de autenticação. Então enquanto não conseguirmos fazer a engenharia reversa nesse sign, teremos que sempre utilizar esse que eu passei, ou caso expire, copiar um novo do aplicativo dos correios.

Boa, poderia ensinar essa parte do http toolkit? Como fez pra confiar no certificado e conseguir monitorar?

Funcionou aqui, perdão a burrice.

@joao-uefrom
Copy link

Fala pessoal, Beleza? Vou deixar aqui minha pequena contribuição

Eu tenho um aplicativo que estava utilizando essa api também, e descompilando o apk dos correios mais recente, vi que foi atualizado o endpoint que validava se a requisição era do aplicativo oficial.

estavamos utilizando o https://proxyapp.correios.com.br/v1/app-validation que era obrigatorio passar um requestToken com alguns parametros encoded em base64, porem nessa nova v2 temos mais alguns parametros, e também novos campos no body.

Novo endpoint:

POST https://proxyapp.correios.com.br/v2/app-validation

body funcional:

{
	"requestToken": "YW5kcm9pZDtici5jb20uY29ycmVpb3MucHJlYXRlbmRpbWVudG87RjMyRTI5OTc2NzA5MzU5ODU5RTBCOTdGNkY4QTQ4M0I5Qjk1MzU3ODs1LjEuMTQ=",
	"data": "23/06/2023 12:42:58",
        "sign": "a5e2f3a83571c88c40a31c68876f261f"
}

não esqueça os headers content-type e user-agent.

Diferenças que eu percebi:

  • o requestToken agora recebeu a versão do aplicativo na base64.
  • o parametro data foi incluído no body.
  • o parametro sign foi incluído no body.

o sign parece alguma hash do data, ou seja, como se tivessem convertido a string da data em md5 (mas não é kk), deve ser alguma hash fixa de 32 caracteres com um salt. Eu obtive esse atraves do monitoramento de rede usando o HTTP Toolkit e ate agora não expirou, então não sei se a API dos correios em algum momento vai tornar esse sign inválido.

o data está relacionado ao momento em que o aplicativo gerou o sign, se alterar a data ou o sign, a requisição nega a geração de um token de autenticação. Então enquanto não conseguirmos fazer a engenharia reversa nesse sign, teremos que sempre utilizar esse que eu passei, ou caso expire, copiar um novo do aplicativo dos correios.

que legal mano, agora me tira uma dúvida, qual método vc usou para descompilar? O método que usei não aparece por nada essa url.

@jhowbhz
Copy link
Contributor

jhowbhz commented Jun 26, 2023

Fala pessoal, Beleza? Vou deixar aqui minha pequena contribuição
Eu tenho um aplicativo que estava utilizando essa api também, e descompilando o apk dos correios mais recente, vi que foi atualizado o endpoint que validava se a requisição era do aplicativo oficial.
estavamos utilizando o https://proxyapp.correios.com.br/v1/app-validation que era obrigatorio passar um requestToken com alguns parametros encoded em base64, porem nessa nova v2 temos mais alguns parametros, e também novos campos no body.

Novo endpoint:

POST https://proxyapp.correios.com.br/v2/app-validation

body funcional:

{
	"requestToken": "YW5kcm9pZDtici5jb20uY29ycmVpb3MucHJlYXRlbmRpbWVudG87RjMyRTI5OTc2NzA5MzU5ODU5RTBCOTdGNkY4QTQ4M0I5Qjk1MzU3ODs1LjEuMTQ=",
	"data": "23/06/2023 12:42:58",
        "sign": "a5e2f3a83571c88c40a31c68876f261f"
}

não esqueça os headers content-type e user-agent.

Diferenças que eu percebi:

  • o requestToken agora recebeu a versão do aplicativo na base64.
  • o parametro data foi incluído no body.
  • o parametro sign foi incluído no body.

o sign parece alguma hash do data, ou seja, como se tivessem convertido a string da data em md5 (mas não é kk), deve ser alguma hash fixa de 32 caracteres com um salt. Eu obtive esse atraves do monitoramento de rede usando o HTTP Toolkit e ate agora não expirou, então não sei se a API dos correios em algum momento vai tornar esse sign inválido.
o data está relacionado ao momento em que o aplicativo gerou o sign, se alterar a data ou o sign, a requisição nega a geração de um token de autenticação. Então enquanto não conseguirmos fazer a engenharia reversa nesse sign, teremos que sempre utilizar esse que eu passei, ou caso expire, copiar um novo do aplicativo dos correios.

que legal mano, agora me tira uma dúvida, qual método vc usou para descompilar? O método que usei não aparece por nada essa url.

Work for me !

@leandrobattochio
Copy link

Fixei no meu fork mas nao sei como trazer as changes pra esse repositorio.

https://github.com/leandrobattochio/Correios-Brasil/

@ferezini
Copy link

Fixei no meu fork mas nao sei como trazer as changes pra esse repositorio.

https://github.com/leandrobattochio/Correios-Brasil/

Show de Bola, instalei do seu fork e está funcionando perfeitamente, obrigado.

@leandrobattochio
Copy link

#50

Consegui fazer o PR. Mas ainda queria saber como que o amigo conseguiu sniffar a comunicação HTTPS =(

@andersonmendess
Copy link

#50

Consegui fazer o PR. Mas ainda queria saber como que o amigo conseguiu sniffar a comunicação HTTPS =(

não tive problemas com o HTTPS, apenas utilizando um emulador com acesso root via adb (algum sem o Google Play) e corrigindo a hora do emulador.

@leandrobattochio
Copy link

leandrobattochio commented Jun 27, 2023

#50
Consegui fazer o PR. Mas ainda queria saber como que o amigo conseguiu sniffar a comunicação HTTPS =(

não tive problemas com o HTTPS, apenas utilizando um emulador com acesso root via adb (algum sem o Google Play) e corrigindo a hora do emulador.

@andersonmendess

Brabo demais. O pulo do gato era não ter a play store, o meu tinha.
O que eu tive que fazer pra conseguir:

  1. Baixei o APK do site apkpure.
  2. Instala via adb: adb install br.com.correios.preatendimento
  3. Inicia o HTTP Toolkit e conecta via adb
  4. Iniciar o app (por algum motivo, ele não aparece na tela): adb.exe shell monkey -p br.com.correios.preatendimento 1

E é isso.
image

Agora resta alguém analisar o binário do flutter e descobrir o lugar em que esse request é construido, pra fazer o tracing e ver como é gerado o parametro. Ai eu não faço ideia. Manjo de fazer eng reversa de app windows 32bits apenas, ollydbg e IDA Pro, agora mobile não manjo nada. Se alguém puder me direcionar no caminho certo posso tentar descobrir como isso funciona.

@juniorkrz
Copy link

Fixei no meu fork mas nao sei como trazer as changes pra esse repositorio.

https://github.com/leandrobattochio/Correios-Brasil/

Funcionando perfeitamente, obrigado.

@FinotiLucas
Copy link
Owner

Fala pessoal, muito obrigado pelo engajamento !
Não consegui dar uma olhada no issue mas vocês resolveram. Dei o commit e o merge agora, além de subir uma nova versão da lib no npm

@FinotiLucas FinotiLucas added the bug Something isn't working label Jun 28, 2023
@FinotiLucas FinotiLucas pinned this issue Jun 28, 2023
@Carlosps
Copy link

Voltou a acontecer esse mesmo problema pra vocês?

@luanwma
Copy link

luanwma commented Nov 16, 2023

Alguém sabe como consertar a falha ao autenticar requisição?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests