Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
MemorizingTrustManager — Um "plugin" para Android Java para permitir perguntar ao utilizador sobre certificados SSL | Kitploit
Ferramentas/GitHubGitHub/ge0rg/memorizingtrustmanager
Segurança AndroidFerramentas DefensivasSegurança de RedeCriptografiaSegurança MóvelAutenticação
GitHubge0rg/memorizingtrustmanager

MemorizingTrustManager

Um "plugin" para Android Java para permitir perguntar ao utilizador sobre certificados SSL

Ver Repositório
18189há 2 anosRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

MemorizingTrustManager - Suporte a Nuvem Privada para Seu Aplicativo

O MemorizingTrustManager (MTM) é um projeto para permitir um uso mais inteligente e seguro de SSL no Android. Se ele encontrar um certificado SSL desconhecido, perguntará ao usuário se deseja aceitar o certificado uma vez, permanentemente ou abortar a conexão. Este é um passo para prevenir ataques man-in-the-middle ao aceitar cegamente certificados inválidos, autoassinados e/ou expirados.

O MTM tem como objetivo fornecer integração perfeita ao seu aplicativo Android, e o código-fonte está disponível sob a licença MIT.

Capturas de tela

Diálogo do MemorizingTrustManager Notificação do MemorizingTrustManager Diálogo de nome de servidor do MemorizingTrustManager

Status

O MemorizingTrustManager está em uso em produção no cliente XMPP yaxim. Ele é utilizável e fácil de integrar, embora ainda não suporte validação de hostname (a API Java torna difícil a integração).

Integração

O MTM é fácil de integrar ao seu próprio aplicativo. Siga estes passos ou dê uma olhada no aplicativo de demonstração no diretório example.

1. Adicione o MTM ao seu projeto

Baixe o código-fonte do MTM do GitHub ou adicione-o como um submódulo git:

root@kitploit:~
# download simples:
git clone https://github.com/ge0rg/MemorizingTrustManager
# submódulo:
git submodule add https://github.com/ge0rg/MemorizingTrustManager

Em seguida, adicione uma dependência de projeto de biblioteca ao default.properties:

root@kitploit:~
android.library.reference.1=MemorizingTrustManager

2. Adicione a Activity (popup) do MTM ao seu manifest

Edite seu AndroidManifest.xml e adicione o elemento da activity do MTM logo antes do final da sua tag de fechamento </application>.

root@kitploit:~
		...
		<activity android:name="de.duenndns.ssl.MemorizingActivity"
			android:theme="@android:style/Theme.Translucent.NoTitleBar"
			/>
	</application>
</manifest>

3. Configure o MTM como o TrustManager padrão para o tipo de conexão do seu aplicativo

Integrando o MemorizingTrustManager em conexões HTTPS:

root@kitploit:~
// registra o MemorizingTrustManager para HTTPS
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HttpsURLConnection.setDefaultHostnameVerifier(
	mtm.wrapHostnameVerifier(HttpsURLConnection.getDefaultHostnameVerifier()));

Para SSLSocket, você deve fazer o seguinte:

root@kitploit:~
// registra o MemorizingTrustManager para todos os SSLSockets
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
HostnameVerifier hv = mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier());
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
SSLContext.setDefault(sc);

// conecta um socket
SSLSocket s = ...;
s.startHandshake();
if (!hv.verify(your_domain_name, sslSocket.getSession())) {
    throw new CertificateException("Server failed to authenticate as " + your_domain_name);
}

Ou, para Smack, você pode usar setCustomSSLContext():

root@kitploit:~
org.jivesoftware.smack.ConnectionConfiguration connectionConfiguration = …
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(this);
sc.init(null, new X509TrustManager[] { mtm }, new java.security.SecureRandom());
connectionConfiguration.setCustomSSLContext(sc);
connectionConfiguration.setHostnameVerifier(
	mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));

Por padrão, o MTM usa o TrustManager do sistema antes de perguntar ao usuário. Se você não confiar na configuração, pode forçar um diálogo em toda nova conexão fornecendo um parâmetro defaultTrustManager = null ao construtor:

root@kitploit:~
MemorizingTrustManager mtm = new MemorizingTrustManager(this, null);

Se você quiser usar um TrustManager subjacente diferente, como AndroidPinning, basta fornecê-lo ao construtor do MTM:

root@kitploit:~
X509TrustManager pinning = new PinningTrustManager(SystemKeyStore.getInstance(),
	new String[] {"f30012bbc18c231ac1a44b788e410ce754182513"}, 0);
MemorizingTrustManager mtm = new MemorizingTrustManager(this, pinning);

4. Lucro!

Registro de Logs

O MTM usa java.util.logging (JUL) para fins de registro. Se você não configurou um Handler para JUL, o Android registrará por padrão todas as mensagens de nível Level.INFO ou superior. Para obter também as mensagens de log de depuração (aquelas com Level.FINE ou inferior), você precisa configurar um Handler de acordo. O projeto de exemplo do MTM contém de.duenndns.mtmexample.JULHandler, que permite ativar e desativar o registro de depuração em tempo de execução.

Alternativas

O MemorizingTrustManager não é o único por aí.

O NetCipher é uma biblioteca Android criada pelo Guardian Project para melhorar a segurança de rede em aplicativos móveis. Ela vem com um StrongTrustManager para fazer verificações de certificado mais completas, um armazenamento de CAs raiz independente e código para rotear facilmente seu tráfego através da rede Tor usando o Orbot.

O AndroidPinning é outra biblioteca Android, escrita por Moxie Marlinspike para permitir a fixação (pinning) de certificados de servidor, melhorando a segurança contra ataques MitM em escala governamental. Use esta biblioteca se o seu aplicativo for feito para se comunicar com um servidor específico!

Contribua

Ajude a traduzir o MTM para mais idiomas!

Baixar ferramenta