pynubank icon indicating copy to clipboard operation
pynubank copied to clipboard

Não é possível acessar os dados da Nuconta (Extrato, saldo, etc)

Open eduardojunio opened this issue 2 years ago • 146 comments

Clonei o repo do zero e gerei o certificado rodando o comando pynubank no terminal.

Escrevi esse arquivo:

from pynubank import Nubank

nu = Nubank()

nu.authenticate_with_cert('[FILTERED]', '[FILTERED]', 'cert.p12')

print(nu.get_account_balance())

E estou recebendo esse erro:

Traceback (most recent call last):
  File "[FILTERED]/pynubank-test/test.py", line 7, in <module>
    print(nu.get_account_balance())
          ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/auth_mode.py", line 23, in wrapper
    return function(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/nubank.py", line 235, in get_account_balance
    data = self._make_graphql_request('account_balance')
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/nubank.py", line 52, in _make_graphql_request
    return self._client.post(self._query_url,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/utils/http.py", line 49, in post
    return self._handle_response(post(url, json=json, headers=self._headers, **self._cert_args))
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/opt/homebrew/lib/python3.11/site-packages/pynubank/utils/http.py", line 35, in _handle_response
    raise NuRequestException(response)
pynubank.exception.NuRequestException: The request made failed with HTTP status code 401

eduardojunio avatar Aug 27 '23 10:08 eduardojunio

Só pra ter certeza, você trocou 'CPF' e 'SENHA' pelo seu CPF e sua senha ?

andreroggeri avatar Aug 27 '23 13:08 andreroggeri

@andreroggeri sim. 😅

eduardojunio avatar Aug 27 '23 18:08 eduardojunio

Outros métodos tipo o get_account_feed funcionam?

Eu tenho uma automação rodando aqui normalmente

andreroggeri avatar Aug 27 '23 18:08 andreroggeri

@andreroggeri só como contexto extra: na verdade eu não uso sua lib, mas escrevi minha própria implementação baseado no trabalho que você e outros fizeram em descobrir como o app do Nubank funciona.

Minha implementação basicamente é uma integração entre o Nubank e o You Need a Budget (YNAB). Eu tenho um job no Google Cloud que roda todo dia 1am. Ele falhou pela primeira vez dia 23 de agosto com um 401 da ghostflame. Inicialmente eu pensei que fosse alguma coisa com o certificado, e quando rodei meu script pra gerar um novo, percebi que o www-authenticate não estava mais vindo (por isso abri a #418). Mas depois de resolver o problema (adicionar o header de correlation) e gerar um novo certificado, o 401 permaneceu.

Tentei usar sua lib (como descrevi na issue), mas está com o mesmo problema da minha. Logo, estou assumindo que o Nubank mudou a API dia 23 (porque dia 22 estava funcionando normal a integração). Na verdade esse job roda a meses (desde Maio), essa foi a primeira vez que falhou com um 401.

Eu queria fazer a engenharia reversa no app pra descobrir como o Nubank tá fazendo agora, mas não tenho o tooling necessário e nem muito conhecimento de apps nativos (Android e iOS). 🥲

eduardojunio avatar Aug 27 '23 18:08 eduardojunio

Outros métodos tipo o get_account_feed funcionam?

401 também. Imagino que todos os métodos que usam a ghostflame terão o mesmo problema.

eduardojunio avatar Aug 27 '23 19:08 eduardojunio

@andreroggeri estava pensando aqui, o 401 idealmente vem com o "jeito" de como o cliente deveria se autenticar nos headers. Citando a MDN:

This status code is sent with an HTTP WWW-Authenticate response header that contains information on how the client can request for the resource again after prompting the user for authentication credentials.

Daí fui ver o WWW-Authenticate da resposta da ghostflame e olha o que achei:

'www-authenticate': 'challenge-platform deep-link="nuapp://dev_auth"',

Parece que precisa autenticar com o app de alguma forma. Acho que a alegria das integrações acabaram (ao menos com a ghostflame). 😢

eduardojunio avatar Aug 27 '23 19:08 eduardojunio

Talvez eles estejam fazendo rollout gradual, pois a minha automação continua funcionando.

Screenshot_20230827_165446_Samsung Internet.jpg

Vai ser difícil eu ajudar se não conseguir reproduzir :/

andreroggeri avatar Aug 27 '23 19:08 andreroggeri

Por aqui, no meu app em node que possui a parte da autenticação baseada no pynubank, por enquanto, tudo ok. Fiz o processo de obtenção de certificado, refreshToken e etc. do zero e está ok. Vou ficar de olho também

diegomdrs avatar Aug 27 '23 22:08 diegomdrs

acabei de clonar a repo e recebo 401 tambem

djmarcosban avatar Aug 28 '23 17:08 djmarcosban

Aqui tou recebendo 401 também...

flarco avatar Aug 29 '23 22:08 flarco

Agora parou aqui também 😭

andreroggeri avatar Aug 30 '23 22:08 andreroggeri

E por aqui também, 401 e nada do saldo de conta corrente. Por enquanto os endpoints das consultas ao cartão de crédito estão funcionando

diegomdrs avatar Aug 31 '23 00:08 diegomdrs

estou exatamente como o @diegomdrs, que droga, acabei de montar um programinha legal aqui com sua api será que esse é o fim?

Reikagilu avatar Aug 31 '23 04:08 Reikagilu

Recebendo 401 em métodos que envolvem transações da conta, transações de cartão de crédito tudo ok.

Olhando pelo site aparenta ter alguma alteração afetando: image

lucasgr7 avatar Aug 31 '23 13:08 lucasgr7

Também estou obtendo o 401.

Vidalvorada avatar Aug 31 '23 13:08 Vidalvorada

Recentemente reportei um problema em um dos endpoints do Nubank na Hackerone enquanto trabalhava no https://github.com/Bezouro/nubank.ts e o problema foi resolvido semana passada (bate com a data que esse problema começou a ocorrer, coincidencia? hmm) fui afetado por isso tbm e agora to correndo atrás pra descobrir como lidar com isso... quaisquer novidades deixo registrado aqui tbm

O interessante é que o header trás o deeplink nuapp://dev_auth o que sugere que talvez o nubank esteja percebendo que estamos acessando a api por fora do app e talvez em breve tenhamos uma forma de obter um token de api proprio para desenvolvedores.

Bezouro avatar Aug 31 '23 23:08 Bezouro

Pelo e-mail que recebi, depois da primeira autenticação, acredito que fosse necessário o reconhecimento biométrico, na autorização do novo dispositivo. Não cheguei a inspecionar os requests, mas suponho que seja isso. Esse sendo mesmo o caso, acredito que vamos ter que esperar por uma API oficial/pública mesmo….

On Thu, Aug 31, 2023 at 20:39 Bruno Bezouro @.***> wrote:

Recentemente reportei um problema em um dos endpoints do Nubank na Hackerone enquanto trabalhava no https://github.com/Bezouro/nubank.ts e o problema foi resolvido semana passada (bate com a data que esse problema começou a ocorrer, coincidencia? hmm) fui afetado por isso tbm e agora to correndo atrás pra descobrir como lidar com isso... quaisquer novidades deixo registrado aqui tbm

O interessante é que o header trás o deeplink nuapp://dev_auth o que sugere que talvez o nubank esteja percebendo que estamos acessando a api por fora do app e talvez em breve tenhamos uma forma de obter um token de api proprio para desenvolvedores.

— Reply to this email directly, view it on GitHub https://github.com/andreroggeri/pynubank/issues/419#issuecomment-1701914515, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAJZKI27S7WHF6F3EQRXDN3XYEOE3ANCNFSM6AAAAAA4AHAVOQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

tavlima avatar Aug 31 '23 23:08 tavlima

+1

monrapps avatar Sep 01 '23 13:09 monrapps

Uma pena que meu dispositivo de testes quebrou, era o único aparelho rooteado que eu tinha to tentando configurar um emulador, mas sem webcam é complicado pra fazer os dois estágios da autenticação

Bezouro avatar Sep 01 '23 15:09 Bezouro

@Bezouro ontem eu tava dando uma explorada no app e vi que eles estão fazendo detecção de root / magisk e afins.

Você já tem algum método para não ser detectado ?

Eu vi que bloquear a requisição não é o suficiente :/

andreroggeri avatar Sep 01 '23 15:09 andreroggeri

@andreroggeri Nunca tive problema com isso, eu usava um nexus 5 com custom rom, e root via magisk, até semana passada aqui estava funcionando perfeito, tenho que conferir agora :(

Vou tentar arrumar outro celularzin de cobaia, eu tenho um s10+ aqui mas o knox me quebra

Bezouro avatar Sep 01 '23 16:09 Bezouro

Eu sei que no magisk tem umas paradas pra "ocultar" o root . Você tinha algo do tipo ativo ?

andreroggeri avatar Sep 01 '23 16:09 andreroggeri

é, pelo o que eu tava vendo, o comportamento do app mudou também... Não tem mais como acessar as coisas da conta sem fazer o segundo passo de autenticação. 😢

Eu vou dar mais uma investigada, mas acho improvável que consigamos burlar isso. Provavelmente a parte de cartões deve ser bloqueada em breve também.

andreroggeri avatar Sep 01 '23 19:09 andreroggeri

Poxa! Que tristeza essa thread! 😮

Minha automação começou a falhar ontem na conta as coisas relacionadas a cartão estão de boa.

felipythondev avatar Sep 01 '23 20:09 felipythondev

@lipemorais liga pros seus contatos de lá e pede pra deixarem um backdoor hahahah

andreroggeri avatar Sep 01 '23 20:09 andreroggeri

isso, faz essa pra gente, @lipemorais

Reikagilu avatar Sep 01 '23 23:09 Reikagilu

Eu sei que no magisk tem umas paradas pra "ocultar" o root . Você tinha algo do tipo ativo ?

@andreroggeri Não, nunca cheguei a ativar isso pra o nubank, porem para outros apps eu ja usei (e até que funciona bem) se vc mudar o pacote do magisk pra um aleatorio, e usar a feature de esconder normalmente da bom (se for custom rom, vale a pena tbm conferir o build.prop pra n deixar detectavel que é custom rom)

Bezouro avatar Sep 02 '23 01:09 Bezouro

é, pelo o que eu tava vendo, o comportamento do app mudou também... Não tem mais como acessar as coisas da conta sem fazer o segundo passo de autenticação. 😢

Eu vou dar mais uma investigada, mas acho improvável que consigamos burlar isso. Provavelmente a parte de cartões deve ser bloqueada em breve também.

Esse era meu medo quando reportei o problema pra eles, eles verem que tem gente usando a api e começar a barrar tudo...

sempre curti usar a api do nubank por conta daquele tweet então nunca me preocupei, mas agora da uma tristeza ver que ta tudo dificultando (mais do que ja era)

Bezouro avatar Sep 02 '23 01:09 Bezouro

Negocio se pa é todo mundo ficar chamando o suporte solicitando acesso a API kkkk

Reikagilu avatar Sep 02 '23 20:09 Reikagilu

tem algum outro banco que tenha api igual essa ? estou pensando em migrar

vitorhuggo33 avatar Sep 02 '23 20:09 vitorhuggo33