-
Notifications
You must be signed in to change notification settings - Fork 53
Falha na autenticação (novamente) #60
Comments
Postaram um novo token aqui REQUEST_TOKEN = ( tem que mudar para https://proxyapp.correios.com.br/v3/app-validation" mas o problema maior é que ta dando muita problema na conexao aqui ERROR:root:Erro ao buscar encomenda NL478350305BR: Cannot connect to host proxyapp.correios.com.br:443 ssl:default [Não há endereço associado com o nome] direto |
Opa.. estou com o mesmo problema. Poderia detalhar onde é feito essa alteração? |
Dentro do repositorio execute os seguintes comandos:
|
Obrigado!! |
Eu fiz 2 PRs lá no repo pra arrumar o pacote |
@fbenatti Ainda não. O |
@GabrielRF seria viavel montar um endpont "genérico" e fazer o POST do novo token? Se sim, posso montar um endpoint para postar o token gerado! |
seria um bom "workaround" |
Montei um projetinho OpenSource, vou publicar no Github assim que tiver tempo, mas segue o link com a documentação de uso https://postmyhash.com/ POST /createHash
GET /minha_chave/
|
Onde eu encontro o usuario e senha? rsrsrs |
La na documentação eu explico, mas quando vc cria a chave, o user e senha é definido por você mesmo, assim uma pessoa não poderá alterar a chave de outro projeto sem ter o usuário e senha. |
Open, porém fechado. kkkk Não é mais fácil ensinar a todos como que obter um token? Vai que você decide não pagar mais o domínio ou a máquina na Digital Ocean.. |
@GabrielRF, eu não sou o proprietario do TOKEN, apenas criei esse workaround para facilitar o uso, até que se ache uma solução definitiva. Suas colocações estão corretas. E claro, isso se o pessoal quiser usar o workaround, caso eles não queiram, dai teremos que aguardar a solução definitiva. |
de quem é o Token afinal? |
@ils15, pensei que fosse, você, onde você obteve ac
@ils15, pensei que fosse você, onde você conseguiu esse novo token? |
postaram aqui |
subi um endpoint temporario pra gente usar os tokens gerados manualmente. |
infelizmente nao tem nenhum token funcionando (pelo menos nenhum que eu tenha encontrado) |
F |
1 similar comment
F |
Testei AGORA e está funcionando lindamente! Obrigado! |
Dessa vez parece que está mais difícil, vou instalar uma vm pra debugger android aqui e entrar na brincadeira. |
Meu token nao expirou até hoje hueuheuhhe segue funcionando normalmente |
agora parece q o token expirou |
WoAH5n3OQui/naI7zBWVOEOLbYx7xlm/yvA9QPGEBW4g2Z9IcshdF7dD7NlPRTrpi6tgZZ88kOQTm6ZE6Q0Wk5LTprrXP2jatpIAr8/1nKWRbwvv9+iSbpTFo18pqLow89197siHy39XrYJDPZj34t0pUx7rFiTEUxAvkbA8GhPDkcB42oaJE9YL8kNezlgzW1Zn7LGEnYQ95uDpm6V69At7Vh/tqrIaLlCPwlMFFoIfvhSF2Etxo4+6EOSjMSubEN7FW378d29UCE6BpRdUnz1viQCyZ4LbIHijtAtczNl+SF0GGpivEi0x6aeFQbq9GGJXdEMiLW/68dT+M3Rx0A== |
expirou mesmo, mas já mandaram um novo ! \o/ |
já expirou |
Estive tentando instalar a versão 5.1.17 do app dos correios no emulador para dar uma olhada usando o HTTP ToolKit, mas sem sucesso. A nova versão só tem disponível na web via xapk e eu até consigo instalar, mas o app quebra ao iniciar. |
Aqui tentei e deu esse erro:
|
Não tem relação com o token dos correios. |
Resolvi postar né, vai que é útil... rsrsrs |
Atualizei |
Como assim gerado manualmente? Como você gera ele manualmente? Da pra automatizar não? |
Gerado pelo método clássico, HTTP Toolkit. |
Mas essa chave estaria onde? |
Então vou descompilar ele rsrs |
Alguém com um token valido? Agradeço |
Galera, tava aqui descompilando o APK, eu não manjo nada de Java nem Kotlin.... Esse é o mais interessante ao meu ver... Consegui também essa chave, veja se é util stamp-cert-sha256 Será que um desses caras, tem alguma relação com o que estamos procurando? |
Finalmente achei o arquivo que faz o token @GabrielRF consegue dar uma força igual da ultima vez? Criei um grupo pra gente discutir isso no WhatsApp, quem quiser ajudar é so chamar https://chat.whatsapp.com/C12b8OJcfgR2hsFVcnf299 package e7;
import android.content.Context;
import android.content.res.Configuration;
import android.security.keystore.KeyGenParameterSpec;
import android.support.v4.media.Ao.SyQm;
import java.math.BigInteger;
import java.security.Key;
import java.security.KeyPairGenerator;
import java.security.KeyStore;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.cert.Certificate;
import java.security.spec.AlgorithmParameterSpec;
import java.util.Calendar;
import java.util.Locale;
import javax.crypto.Cipher;
import javax.security.auth.x500.X500Principal;
/* loaded from: classes.dex */
class f implements a {
/* renamed from: a reason: collision with root package name */
protected final String f9105a = c();
/* renamed from: b reason: collision with root package name */
protected final Context f9106b;
public f(Context context) {
this.f9106b = context;
e(context);
}
private void d(Context context) {
Locale locale = Locale.getDefault();
try {
k(Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
Calendar calendar2 = Calendar.getInstance();
calendar2.add(1, 25);
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
keyPairGenerator.initialize(j(context, calendar, calendar2));
keyPairGenerator.generateKeyPair();
} finally {
k(locale);
}
}
private void e(Context context) {
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
if (keyStore.getKey(this.f9105a, null) == null) {
d(context);
}
}
private PrivateKey g() {
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Key key = keyStore.getKey(this.f9105a, null);
if (key != null) {
if (key instanceof PrivateKey) {
return (PrivateKey) key;
}
throw new Exception("Not an instance of a PrivateKey");
}
throw new Exception("No key found under alias: " + this.f9105a);
}
private PublicKey h() {
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
Certificate certificate = keyStore.getCertificate(this.f9105a);
if (certificate == null) {
throw new Exception("No certificate found under alias: " + this.f9105a);
}
PublicKey publicKey = certificate.getPublicKey();
if (publicKey != null) {
return publicKey;
}
throw new Exception("No key found under alias: " + this.f9105a);
}
private void k(Locale locale) {
Locale.setDefault(locale);
Configuration configuration = this.f9106b.getResources().getConfiguration();
configuration.setLocale(locale);
this.f9106b.createConfigurationContext(configuration);
}
@Override // e7.a
public byte[] a(Key key) {
PublicKey h10 = h();
Cipher i10 = i();
i10.init(3, h10, f());
return i10.wrap(key);
}
@Override // e7.a
public Key b(byte[] bArr, String str) {
PrivateKey g10 = g();
Cipher i10 = i();
i10.init(4, g10, f());
return i10.unwrap(bArr, str, 3);
}
protected String c() {
return this.f9106b.getPackageName() + ".FlutterSecureStoragePluginKey";
}
protected AlgorithmParameterSpec f() {
return null;
}
protected Cipher i() {
return Cipher.getInstance("RSA/ECB/PKCS1Padding", SyQm.iLEpbcD);
}
protected AlgorithmParameterSpec j(Context context, Calendar calendar, Calendar calendar2) {
KeyGenParameterSpec.Builder builder = new KeyGenParameterSpec.Builder(this.f9105a, 3);
return builder.setCertificateSubject(new X500Principal("CN=" + this.f9105a)).setDigests("SHA-256").setBlockModes("ECB").setEncryptionPaddings("PKCS1Padding").setCertificateSerialNumber(BigInteger.valueOf(1L)).setCertificateNotBefore(calendar.getTime()).setCertificateNotAfter(calendar2.getTime()).build();
}
} Mensagem secreta seria essa string? ou "secret key" Pedi o GPT pra resumir isso em um javascript const crypto = require('crypto');
// Geração de uma chave AES (simulando uma chave armazenada)
const aesKey = crypto.randomBytes(32); // 256 bits
// Dados a serem cifrados
const plaintext = 'Esta é uma mensagem secreta';
// Cifragem usando a chave AES
const iv = crypto.randomBytes(16); // Vetor de inicialização de 128 bits
const cipher = crypto.createCipheriv('aes-256-cbc', aesKey, iv);
let encryptedData = cipher.update(plaintext, 'utf8', 'base64');
encryptedData += cipher.final('base64');
console.log('Texto cifrado:', encryptedData);
// Decifragem usando a chave AES
const decipher = crypto.createDecipheriv('aes-256-cbc', aesKey, iv);
let decryptedData = decipher.update(encryptedData, 'base64', 'utf8');
decryptedData += decipher.final('utf8');
console.log('Texto decifrado:', decryptedData);
// Geração de um par de chaves RSA (simulando a geração de chave no Android)
const { publicKey, privateKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048,
publicKeyEncoding: {
type: 'pkcs1',
format: 'pem'
},
privateKeyEncoding: {
type: 'pkcs1',
format: 'pem'
}
});
console.log('Chave pública RSA:', publicKey);
console.log('Chave privada RSA:', privateKey);
// Assinatura e verificação de assinatura
const dataToSign = 'Dados a serem assinados';
const signature = crypto.sign('sha256', Buffer.from(dataToSign), privateKey);
console.log('Assinatura:', signature.toString('base64'));
const isVerified = crypto.verify(
'sha256',
Buffer.from(dataToSign),
publicKey,
Buffer.from(signature, 'base64')
);
console.log('Verificação de assinatura:', isVerified); E muito parecido com a resolução da issue #53 |
@jhowbhz Eu larguei isso já. Os Correios estão ativamente bloqueando os acessos. |
Que pena chefe.... eu tava gostando só pelo desafio mesmo rsrsrs |
Então, a API ainda existe e daria pra continuar usando, se alguém continuar de onde o @jhowbhz parou com as infos da criptografia ? |
Eu to aqui pra ajudar no que precisar.... |
Palavra chave: AndroidKeyStore Creio que não vale mais a pena compartilhar a resolução por aqui pois provavelmente algum espirito de p**** está fazendo o trabalho sujo para os correios e dificultando nossa integração ao inves de se ocupar em melhorar aquela po*caria de site. Enquanto o caminho deveria ser democratizar o acesso à informação ainda há programadores que se vendem aos governos em troca de favores escusos. De toda forma ainda continua sendo muito facil basta um pouco de determinação. |
Puts, parece que o caminho é bem por aí mesmo... Eu to sem nada de android aqui no PC, fiz uma limpa. Mas eu queria mesmo era ficar quebrando essa "criptografia" até uma hora que vai ser virtualmente impossível os correios alterarem. Esses negocio de token e app de celular só chegam até um certo nível, não tem como inviabilizar totalmente. Vai ficar na guerrinha que estamos hoje: um vai e crackeia o outro corre e arruma. Até um cansar ou chegar no limite da tecnologia mesmo. Se eu tivesse o conhecimento necessário entraria de boa nisso, toda vez q os caras alterasse ia dar uns 10 minutos de risada, pegar um copão de breja e já ia cair de cabeça em cima pra crackear de novo kkkk |
@tegila Mano, tava pensando. Será que a versão ios do app dos correios também ta guardando essa key num lugar que não da pra recuperar? |
Voltou a dar falha na autenticação, mesmo restartando o Script por aqui, com mais alguém está ocorrendo?
The text was updated successfully, but these errors were encountered: