andreroggeri / pynubank

Acesse seus extratos do Nubank pelo Python
MIT License
1.19k stars 180 forks source link

[Conta PJ] Opção de gerar boleto #139

Closed juliorsantos closed 3 years ago

juliorsantos commented 4 years ago

Falei com o suporte Nubank, porém, há muito tempo sempre a mesma resposta de "sem previsão". Vi que a atual API é para Pessoa Física. Há alguma possibilidade de API para conta CNPJ? Se houver algum endpoint ou liberação, gostaria de ajudar a desenvolver, por enquanto estou no aguardo deles.

andreroggeri commented 4 years ago

Fala Júlio, blz?

Cara honestamente eu não sei. Eu construí essa lib em cima das requisições que o app faz.

Eu não sei se o app é o mesmo pra PJ, se for talvez seja fácil de replicar aqui, o problema é que eu não tenho conta PJ, entao não consigo implementar

andreroggeri commented 4 years ago

Se você topar, posso te passar o caminho das pedras de como olhar as requisições, vc vai precisar de um emulador Android ou um device Android com root.

juliorsantos commented 4 years ago

@andreroggeri Ótimo, se quiser, pode me enviar sim, por enquanto, estou fazendo algumas análises, estava pensando em criar para JS também, para quem utiliza Node, assim como eu, para fazer as integrações.

juliorsantos commented 4 years ago

Só pra dar um up aqui, eu pedi para meus colegas mandarem sugestão de API também, e o suporte disse que "sem previsão" ainda... quem sabe, só estou esperando isso para migrar todo meu serviço de recebimento em boleto para lá 😂

andreroggeri commented 4 years ago

Po, acabei deixando vc no vácuo :disappointed: foi mal.

Acho que seria mais fácil marcarmos uma call para eu te mostrar como capturar as requisições do app. Se topar me chama no email / chats para combinarmos => a.roggeri.c@gmail.com

Ulisses1478 commented 4 years ago

vc pode gravar uma "aula" e disponibilizar no yt?

matheusfelipeog commented 4 years ago

vc pode gravar uma "aula" e disponibilizar no yt?

Também acho interessante que grave uma "aula" mostrando esse processo de análise. Assim, fica mais fácil para novas pessoas que, assim como nós, também tem interesse, e também para você @andreroggeri, que não vai precisar marcar call com cada pessoa individualmente.

Faça isso, por favor 😆

Ulisses1478 commented 4 years ago

vc pode gravar uma "aula" e disponibilizar no yt?

Também acho interessante que grave uma "aula" mostrando esse processo de análise. Assim, fica mais fácil para novas pessoas que, assim como nós, também tem interesse, e também para você @andreroggeri, que não vai precisar marcar call com cada pessoa individualmente.

Faça isso, por favor 😆

Se você está muito interessado ele explica aqui como ele fez

https://github.com/andreroggeri/pynubank/issues/113

matheusfelipeog commented 4 years ago

se vc ta mt interessado ele explica aq como ele fez.

113

@Ulisses1478 , obrigado 😄

andreroggeri commented 4 years ago

Fala galera, mal a demora... Acabou caindo no meu esquecimento.

Vou deixar um guia aqui pra quem quiser analisar as requisições do Nubank.

Pré Requisitos: Dispositivo / Emulador com Root Burp Suite instalado para analisar as requisições Aplicativo do Nubank instalado Proxy do Android configurado apontando para o Burp Suite frida-server rodando no Android adb disponível no PATH

Guia

  1. Fazer login no Nubank nesse dispositivo
  2. Baixar o certificado gerado pelo login (Fica em /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default.p12 o comando para copiar é adb pull /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default.p12
  3. Configurar o Burp Suite para utilizar o certificado do Nubank (A senha do certificado é nubank) image
  4. Executar a aplicação pelo frida com o script que desativa o certificate pinning frida -U -f com.nu.production -l .\frida.js --no-pause
  5. Navegar pela a funcionalidade que vc quer replicar aqui no pynubank O request deve aparecer no Burp Suite, e por lá é possível descobrir quais as querys são utilizadas para montar cada tela image
andreroggeri commented 3 years ago

Só dando um update aqui, o @uxmarinho me mostrou o insomnia aqui, e com ele dá pra ver a documentação da API. image

Talvez ajude quem estiver nessa jornada =]

fmsouza commented 3 years ago

@andreroggeri fantástico! Você poderia compartilhar também, por favor, como você fez pra ver o schema da API inteiro dessa forma? Basta só enviar uma requisição qualquer pelo Insomnia ou precisa configurar mais alguma coisa?

rdsedmundo commented 3 years ago

@fmsouza ele fez a query de "Schema Introspection", é só você colocar uma URL válida em um endpoint, clicar em Schema, e em Refresh Schema, e o Insomnia vai enviar ela automaticamente, e desde que os headers de autorização estejam configurados (talvez funcione sem também), o Insomnia vai salvar o schema completo da API.

Screen Shot 2021-04-04 at 12 55 12
fmsouza commented 3 years ago

Oi @rdsedmundo, obrigado pela resposta! Eu não sabia que o GraphQL server do Nubank tinha Introspection habilitado em produção, muito bom saber!

No entanto, tentei fazer tanto usando o Insomnia quanto um outro pacote do Node.js que já tô mais acostumado a usar pra esse fim, e nenhum dos casos conseguiu me entregar o Schema. Acho que pode estar faltando algum "pulo do gato" aqui.

Eu fiz o seguinte:

  1. Gerei um UUID
  2. Autenticação com senha
  3. Salvei a lista de endpoints públicos e privados que vem na resposta da autenticação
  4. Busquei a URL para o endpoint ghostflame, que é o que sei que é um servidor GraphQL
  5. Enviei uma requisição que eu já sei que funciona pra ele pelo Insomnia e vi o resultado sendo entregue com sucesso.
  6. Apertei o botão "Refresh Schema" e recebi um erro 400, dizendo que não foi possível atualizar o Schema.
  7. Tentei enviar a mesma requisição para a URL que está no print do @andreroggeri com o simulador, mas essa não funcionou.

image

Será que você @rdsedmundo ou o @andreroggeri poderiam me dar uma luz aqui? :)

Obrigado, e feliz Páscoa pra vocês!

rdsedmundo commented 3 years ago

Aqui também parou de funcionar, provavelmente desativaram. Alguém da equipe deve estar inscrito no repositório. 👀

Se você enviar uma query mais simples manualmente consegue ver que agora está retornando que os campos não existem.

{
  __schema {
    types {
      name
    }
  }
}
{
  "errors": [
    {
      "message": "Validation error of type FieldUndefined: Field 'types' in type '__Schema' is undefined @ '__schema/types'",
      "locations": [
        {
          "line": 11,
          "column": 5
        }
      ],
      "extensions": {}
    }
  ]
}
fmsouza commented 3 years ago

@rdsedmundo é exatamente isso que ta aparecendo pra mim quando olhos os detalhes da resposta.

Uma pena, mas valeu a tentativa! haha

leoelios commented 2 years ago

@andreroggeri qual emulador android você utilizou?

andreroggeri commented 2 years ago

API 26 (Android 6.0)

leoelios commented 2 years ago

@andreroggeri Estou tentando obter o certificado em /data/data/com.nu.production/files/{ID_DA_SUA_CONTA}/KeyStore.default.p12 mas o diretorio files/ está vazio.

Esse ID_DA_SUA_CONTA eu consigo obter por onde?

andreroggeri commented 2 years ago

Vc fez login na sua conta ? Acredito que só seja criado depois que o login for feito...

andreroggeri commented 2 years ago

Sobre o ID ele é retornado em algumas chamadas da API, mas é mais fácil listar as pastas ali dentro de files

Ulisses1478 commented 2 years ago

Não sei se ajuda mas eu usei o android 10 não lembro a api

leoelios commented 2 years ago

Vc fez login na sua conta ? Acredito que só seja criado depois que o login for feito...

@andreroggeri Fiz sim, estou emulando com a mesma versão da API (API 26 (Android 6.0)) (porém não possui ROOT)

Estou com dificuldade para tornar em modo ROOT e acessar os serviços do Google Play para instalar o app do Nu, vocês sugerem algum artigo?

Quando seleciono um aparelho com Google Play Services ele não deixa eu utilizar o adb root.

andreroggeri commented 2 years ago

Pra ter acesso root vc precisa usar o emulador que não tem os aplicativos do google, vc instala eles dps com o opengapps (Aqui tem um artigo que eu segui pra fazer a instalação)

Ulisses1478 commented 2 years ago

Pra ter acesso root vc precisa usar o emulador que não tem os aplicativos do google, vc instala eles dps com o opengapps (Aqui tem um artigo que eu segui pra fazer a instalação)

Recomendo o genymotion pra isso ele instala a isso sem o acesso root e faz automaticamente a parte do opengapps apertando um botão

Iazzetta commented 2 years ago

Alguem conseguiu usar o pynubank com conta PJ? To com um sistema pronto faltando apenas trocar de PF para PJ.

andreroggeri commented 2 years ago

@lazzetta me corrija se eu estiver errado, mas toda vez que você loga na conta PJ vc precisa fazer o processo biometrico (Enviar selfie) certo ? Teria que replicar isso dentro da lib (Que eu não sei se é viável)

Do resto os endpoints são os mesmos e funcionam em sua maioria.