Ir para o conteúdo
CatSuite

Idioma

Escolha se o site segue o navegador ou se deve forçar português do Brasil ou inglês.

Baixar grátis

Módulos

SSL/TLS

Analisador SSL/TLS do CatSuite: como usar e configurar a triagem de handshake, versão do TLS, cipher suite, cadeia até a raiz, fingerprints e validade.

21 min de leitura

O Analisador SSL/TLS é o módulo do CatSuite que faz a triagem da conexão segura de um host autorizado. Você informa um domínio ou URL (com a porta, quando não for 443), toca em VERIFICAR e o módulo executa o handshake TLS, mostra a versão do protocolo e a cipher suite negociadas, valida a cadeia de certificados até a raiz confiável do Android, confere o hostname, calcula os fingerprints SHA-256 e SHA-1 de cada certificado e exibe as datas de validade com os dias restantes. Esta página explica cada termo, cada painel da tela e como usar e configurar o módulo para diagnosticar falhas de TLS no laboratório.

Conceitos de SSL/TLS usados no módulo #

Antes de ler os resultados, vale fixar os termos que aparecem nos chips, rótulos e mensagens da tela.

TLS e SSL #

TLS (_Transport Layer Security_) é o protocolo que protege o HTTPS e outros serviços: ele cifra o tráfego e permite que o cliente confirme a identidade do servidor por meio de certificados. SSL é o nome do antecessor do TLS e continua sendo usado no dia a dia como sinônimo, por isso o módulo se chama SSL/TLS. Na prática, o que o analisador negocia e mostra são as versões modernas do TLS, como TLSv1.3 e TLSv1.2.

Handshake TLS #

O handshake é a negociação inicial entre cliente e servidor, antes de qualquer dado da aplicação. Nele as duas pontas combinam a versão do protocolo e a cipher suite, o servidor apresenta sua cadeia de certificados e ambos derivam as chaves da sessão. O analisador mede quanto essa etapa demora e mostra o resultado no campo Tempo de handshake, em milissegundos. Se o handshake não termina, a triagem falha e a mensagem de erro aparece na tela.

Versão do protocolo e cipher suite #

A versão do protocolo é a edição do TLS que as duas pontas aceitaram usar, como TLSv1.3. A cipher suite (conjunto de cifras) é a combinação de algoritmos escolhida para a sessão: troca de chaves, cifra simétrica e função de integridade, por exemplo TLS_AES_128_GCM_SHA256 ou TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256. Versões antigas e cifras fracas indicam configurações que merecem atenção no relatório.

SNI (Server Name Indication) #

O SNI é uma extensão do TLS em que o cliente informa, já no início do handshake, qual nome de host deseja acessar. Isso permite que um mesmo endereço IP sirva vários sites, cada um com seu certificado. No Android, quando o alvo é um nome de domínio, esse nome segue na negociação como SNI. Quando o alvo é um endereço IP, não há nome para indicar, e o servidor costuma responder com um certificado padrão, o que frequentemente leva a HOSTNAME FALHOU.

Cadeia de certificados: folha, intermediários e raiz #

O servidor não apresenta um certificado isolado, e sim uma cadeia. O primeiro é o certificado folha, emitido para o host. Em seguida vêm os intermediários, que ligam a folha a uma autoridade certificadora. No topo fica a raiz, a autoridade em que o sistema confia diretamente. Cada certificado é assinado pelo seguinte, e validar a cadeia até a raiz significa conferir essas assinaturas uma a uma até chegar a uma autoridade confiável.

Raiz confiável e repositório do Android #

Uma raiz confiável (_trust anchor_) é uma autoridade certificadora presente no repositório de confiança do dispositivo. O analisador usa o validador padrão do Android para decidir se a cadeia apresentada termina em uma dessas raízes. Certificados autoassinados, emitidos por uma CA privada ou com intermediários faltando não chegam a uma raiz confiável e geram CADEIA COM ALERTA.

Verificação de hostname e SAN #

Uma cadeia válida não basta: o certificado folha precisa ter sido emitido para o host acessado. Essa conferência usa os nomes alternativos do assunto (SAN, _Subject Alternative Names_), a lista de domínios e endereços cobertos pelo certificado. O resultado aparece no chip HOSTNAME OK ou HOSTNAME FALHOU, e os SAN de cada certificado aparecem como chips no cartão correspondente.

Fingerprints SHA-256 e SHA-1 #

O fingerprint (impressão digital) é o hash do certificado inteiro, calculado sobre a sua forma codificada. Dois certificados idênticos têm o mesmo fingerprint, e qualquer diferença, por menor que seja, muda o valor completamente. Por isso o fingerprint é a forma mais segura de comparar certificados e anotá-los em evidências. O módulo mostra cada valor em hexadecimal maiúsculo, com os bytes separados por dois-pontos. O SHA-256 é a referência recomendada; o SHA-1 aparece para compatibilidade com inventários e ferramentas antigas.

Datas de validade #

Todo certificado tem um início (_not before_) e um fim (_not after_) de validade. Fora desse intervalo, o certificado deve ser recusado. O analisador mostra as duas datas no formato dd/mm/aaaa hh:mm, no fuso do aparelho, e resume a situação como dias restantes, "vence hoje" ou expirado.

TermoO que éOnde aparece no módulo
HandshakeNegociação inicial do TLSTempo de handshake, mensagens de carregamento e de erro
Versão do protocoloEdição do TLS negociadaTLS negociado e painel Versões do TLS
Cipher suiteCombinação de algoritmos da sessãoCipher suite negociada e painel Cipher Suites
SNINome do host enviado no início do handshakeInfluencia o certificado recebido e o chip de hostname
CadeiaFolha, intermediários e raizCartão Cadeia de certificação
Raiz confiávelAutoridade presente no repositório do AndroidChip CADEIA OK ou CADEIA COM ALERTA e mensagem da cadeia
SANNomes cobertos pelo certificadoChips no cartão de cada certificado
FingerprintHash SHA-256 ou SHA-1 do certificadoResumo da Sessão e cartão de cada certificado
ValidadeInício e fim do período válidoValidade, Status da validade e chip de validade

A tela do Analisador SSL/TLS #

A tela é uma coluna rolável. No topo ficam o cabeçalho e o painel de entrada; abaixo, a área de resultado muda conforme o estado da triagem.

Cabeçalho do módulo #

O cabeçalho traz a tarja ANALISADOR SSL/TLS, o título CERTIFICADOS E SESSÃO TLS e o resumo "Analise certificados, TLS, cifras e fingerprints."

Painel ALVO HTTPS #

O painel ALVO HTTPS tem o campo de endereço (com a dica "Sua URL") e o botão VERIFICAR. Enquanto a análise roda, o botão mostra ANALISANDO com um indicador de progresso e fica desabilitado, e o painel exibe "Conectando, negociando TLS e validando a cadeia...".

Estados da área de resultado #

EstadoO que aparece
Antes da primeira análiseCartão "Nenhuma análise feita ainda", lembrando que o analisador identifica o host automaticamente para verificar o certificado.
Em andamentoCartão "Executando handshake TLS, validando a cadeia e calculando fingerprints."
ErroCartão "Falha na análise SSL/TLS", com a mensagem detalhada do problema.
ConcluídoCartões Resumo da Sessão, Cadeia de certificação, Versões do TLS e Cipher Suites.

Resumo da Sessão #

O cartão RESUMO DA SESSÃO ("Veja o host, o certificado e a sessão TLS.") começa com três chips de veredito e segue com os dados principais da conexão.

ItemO que mostra
CADEIA OK / CADEIA COM ALERTAVerde quando a cadeia chega a uma raiz confiável e o hostname confere; laranja nos demais casos.
HOSTNAME OK / HOSTNAME FALHOUResultado da verificação do host contra o certificado folha.
CERTIFICADO VÁLIDO / FORA DA VALIDADESituação do certificado folha na data e hora atuais.
HostHost e porta realmente analisados, no formato host:porta.
Alvo normalizadoEndereço final usado na análise, sempre em https://.
TLS negociadoVersão do protocolo aceita no handshake.
Cipher suite negociadaConjunto de cifras escolhido para a sessão.
Tempo de handshakeDuração do handshake, em milissegundos.
ValidadeInício e fim da validade do certificado folha.
Status da validadeDias restantes, "vence hoje" ou há quantos dias expirou.
Fingerprint SHA-256Hash SHA-256 do certificado folha, com botão de copiar.
Fingerprint SHA-1Hash SHA-1 do certificado folha, com botão de copiar.
Mensagem da cadeiaFaixa colorida com a explicação do veredito da cadeia.

A faixa final repete a cor do chip de cadeia. Ela mostra "A cadeia foi validada com sucesso para o host informado.", "A cadeia foi aceita, mas o nome do host não corresponde ao certificado apresentado." ou o motivo devolvido pelo validador do Android quando a cadeia não é aceita.

Cadeia de certificação #

O cartão CADEIA DE CERTIFICAÇÃO informa quantos certificados foram observados durante o handshake e lista um cartão por certificado, na ordem em que o servidor os enviou. Cada cartão tem um chip de papel (FOLHA, INTERMEDIÁRIO 1, INTERMEDIÁRIO 2 e assim por diante, e RAIZ) e o indicador "Dentro da validade" ou "Fora da validade".

CampoO que mostra
AssuntoNome distinto do titular, como CN=exemplo.com.
EmissorNome distinto de quem assinou o certificado.
SerialNúmero de série em hexadecimal maiúsculo.
AssinaturaAlgoritmo de assinatura, como SHA256withRSA.
Chave públicaAlgoritmo da chave pública, como RSA ou EC.
ValidadeInício e fim da validade daquele certificado.
StatusDias restantes ou há quantos dias expirou.
Chips de SANNomes alternativos cobertos, quando existirem.
SHA-256 e SHA-1Fingerprints daquele certificado, cada um com botão de copiar.

Versões do TLS #

O cartão VERSÕES DO TLS ("Veja o protocolo e as versões TLS aceitas.") mostra um chip destacado com a versão negociada e um chip para cada versão que o servidor aceitou em testes individuais. Abaixo, a linha Versões visíveis no dispositivo lista as versões de TLS que o próprio aparelho suporta.

Cipher Suites #

O cartão CIPHER SUITES ("Veja a cipher suite negociada e as opções disponíveis.") traz a linha Negociada e uma lista de chips. O primeiro chip, destacado, é a cipher suite negociada; os demais são cipher suites suportadas pelo dispositivo, em ordem alfabética e sem as categorias inseguras (nulas, anônimas, RC4 e 3DES), limitadas às 18 primeiras. Com mais de seis chips, a lista vira uma faixa com rolagem horizontal.

Opções e como configurar o Analisador SSL/TLS #

O módulo não tem uma folha de configurações própria: a triagem depende do endereço que você informa e de duas chaves gerais do CatSuite.

OpçãoValoresPadrãoO que faz
Campo de endereço (ALVO HTTPS)Domínio, URL, host:porta, IPv4 ou IPv6 entre colchetesVazioDefine o host e a porta da triagem; caminho, consulta e fragmento são descartados.
Porta1 a 65535, dentro do endereço443Escolhe o serviço TLS a analisar, como exemplo.com:8443.
Ativar Analisador SSL/TLS (Configurações > Aplicativos)Ligado / DesligadoDesligado, salvo se escolhido na seleção inicial de módulosMostra ou oculta o módulo no menu principal e libera o atalho de envio a partir das capturas.
Permissão ANALISADOR SSL/TLS da IALigado / DesligadoDesligadoPermite que o assistente de IA do CatSuite execute a triagem e leia certificados e fingerprints.

Para configurar: digite no campo apenas o que identifica o serviço, como exemplo.com ou api.exemplo.com:8443; se colar uma URL completa, o módulo extrai o host e a porta sozinho. Informe a porta explicitamente sempre que o serviço TLS não estiver em 443. Se o módulo não aparece no menu, ligue ATIVAR ANALISADOR SSL/TLS em Configurações > Aplicativos; enquanto ele estiver oculto, o atalho de envio das capturas também fica indisponível. A permissão da IA só deve ser ligada se você quiser que o assistente faça a triagem por conta própria dentro do escopo.

Como o host e a porta são normalizados #

Antes de conectar, o analisador reescreve o que você digitou e atualiza o campo com o resultado.

Você digitaAlvo normalizadoHost analisado
exemplo.comhttps://exemplo.comexemplo.com:443
https://exemplo.com/login?next=/painelhttps://exemplo.comexemplo.com:443
exemplo.com:8443https://exemplo.com:8443exemplo.com:8443
https://exemplo.com:443/https://exemplo.comexemplo.com:443
[2001:db8::10]:8443https://[2001:db8::10]:8443[2001:db8::10]:8443

O esquema final é sempre https://, porque o módulo só fala TLS. Domínios com acentos são convertidos para a forma ASCII (punycode) antes da conexão.

Parâmetros fixos da triagem #

Alguns comportamentos não são configuráveis, mas ajudam a interpretar o resultado.

ParâmetroValorEfeito
Tempo limite de conexão e leitura4,5 segundosHosts lentos ou filtrados geram erro de tempo esgotado.
Porta padrão443Usada quando o endereço não informa porta.
Versões testadasTLSv1.3, TLSv1.2, TLSv1.1 e TLSv1Só as que o dispositivo suporta; cada uma é um handshake separado.
Lista de cipher suitesNegociada mais até 18 do dispositivoExclui suites nulas, anônimas, RC4 e 3DES.
Validação da cadeiaValidador padrão do AndroidDefine CADEIA OK ou CADEIA COM ALERTA.

Botões e ações #

Painel de entrada #

Botão ou açãoO que faz
VERIFICARNormaliza o endereço e inicia a triagem. Vira ANALISANDO e fica desabilitado até terminar.
Tecla Ir do tecladoInicia a triagem a partir do campo, igual ao VERIFICAR.
Campo vazio + VERIFICARMostra o aviso "Informe um domínio ou URL para analisar."

Resultados #

Botão ou açãoOndeO que faz
Ícone de copiar do Fingerprint SHA-256Resumo da SessãoCopia o SHA-256 da folha e confirma com "Fingerprint SHA-256 copiado."
Ícone de copiar do Fingerprint SHA-1Resumo da SessãoCopia o SHA-1 da folha e confirma com "Fingerprint SHA-1 copiado."
Ícone de copiar do SHA-256Cartão de certificadoCopia o SHA-256 daquele certificado.
Ícone de copiar do SHA-1Cartão de certificadoCopia o SHA-1 daquele certificado.
Seleção de textoQualquer valorAbre o menu de contexto do CatSuite.

Todos os valores da tela, como assunto, emissor, serial e fingerprints, podem ser selecionados. O campo de endereço também tem o menu, com as ações de edição.

AçãoO que faz
COPIARCopia o trecho selecionado.
CORTARRecorta a seleção (somente no campo de endereço).
COLARCola o conteúdo da área de transferência (somente no campo de endereço).
DECODIFICAREnvia a seleção para o Decodificar.
NOTASEnvia a seleção para o Bloco de Notas da História.
TUDOSeleciona todo o texto do valor.
BLOCOCopia o valor inteiro.

Atalhos de outros módulos #

OrigemAçãoResultado
InterceptadorToque longo em uma captura > Enviar para o Analisador SSL/TLSAbre o módulo com o host da request já normalizado e inicia a triagem automaticamente.
Botão flutuanteAção do Analisador SSL/TLSAbre o módulo diretamente.
Assistente de IAFerramenta de análise SSL/TLS, com a permissão ligadaExecuta a triagem de um host do escopo ou abre o módulo com o endereço da request ou da página atual do Navegador.

Passo a passo: como usar o Analisador SSL/TLS #

Fazer a primeira triagem de um host #

  1. Abra o Analisador SSL/TLS pelo menu principal. Se ele não aparecer, ative-o em Configurações > Aplicativos.
  2. No painel ALVO HTTPS, digite o domínio ou cole a URL do alvo autorizado. Acrescente :porta se o serviço não estiver em 443.
  3. Toque em VERIFICAR ou na tecla Ir do teclado.
  4. Aguarde o cartão de carregamento e confira, no Resumo da Sessão, os três chips de veredito.
  5. Leia Host e Alvo normalizado para confirmar que o módulo analisou exatamente o serviço desejado.

Validar a cadeia até a raiz #

  1. Observe o chip CADEIA OK ou CADEIA COM ALERTA e leia a faixa de mensagem no fim do resumo.
  2. Desça até CADEIA DE CERTIFICAÇÃO e confira quantos certificados foram observados.
  3. Em cada cartão, compare o Emissor de um certificado com o Assunto do seguinte: eles devem coincidir até o topo.
  4. No último cartão, confira o emissor para identificar a autoridade que fecha a cadeia.
  5. Verifique o indicador "Dentro da validade" de cada certificado; um intermediário vencido também quebra a cadeia.

Conferir e registrar fingerprints #

  1. No Resumo da Sessão, toque no ícone de copiar do Fingerprint SHA-256 para levar o hash da folha à área de transferência.
  2. Compare o valor com o fingerprint esperado, informado pelo responsável pelo alvo ou obtido em outra ferramenta.
  3. Selecione o fingerprint e use NOTAS para registrá-lo no Bloco de Notas, junto com host, data e versão do TLS.
  4. Repita nos cartões de intermediários quando precisar documentar a cadeia inteira.

Verificar versões de protocolo e cifra #

  1. No cartão VERSÕES DO TLS, leia o chip destacado da versão negociada.
  2. Confira os chips das versões aceitas: a presença de TLSv1 ou TLSv1.1 indica suporte a versões legadas.
  3. Compare com Versões visíveis no dispositivo: uma versão ausente dessa linha não pôde ser testada pelo aparelho.
  4. No cartão CIPHER SUITES, leia a linha Negociada e registre a cifra escolhida.

Diagnosticar uma falha de TLS #

  1. Rode a triagem e leia a mensagem do cartão Falha na análise SSL/TLS, se ele aparecer.
  2. Se a mensagem fala em tempo esgotado, conexão recusada ou host não resolvido, o problema está antes do TLS: revise host, porta e rede.
  3. Se o handshake termina, mas a cadeia tem alerta, leia a faixa da mensagem da cadeia e os cartões de certificado para achar a causa.
  4. Se o chip HOSTNAME FALHOU aparece, compare o host digitado com os chips de SAN do certificado folha.
  5. Se FORA DA VALIDADE aparece, confira as datas de validade e o relógio do aparelho.

Analisar o host de uma captura do Proxy #

  1. Com o Proxy de Rede capturando o tráfego autorizado, abra o Interceptador.
  2. Dê um toque longo na captura desejada e escolha Enviar para o Analisador SSL/TLS.
  3. O módulo abre com o host da request preenchido e já inicia a verificação.
  4. Compare o certificado real do servidor com o comportamento observado no cliente.

Relação com o Proxy de Rede e o Repetir #

O Analisador SSL/TLS conecta-se diretamente do aparelho ao servidor, sem passar pelo Proxy de Rede. Por isso ele enxerga o certificado verdadeiro do alvo. Quando um cliente navega pelo proxy com interceptação HTTPS ligada, o certificado que esse cliente recebe é emitido na hora pela CA do laboratório, e o fingerprint da folha vista pelo cliente será diferente do fingerprint que o analisador mostra. Essa diferença é esperada e confirma que a interceptação está ativa. Se um cliente recusa a conexão pelo proxy, use o analisador para conferir se o problema está no próprio servidor (cadeia, validade, versão) ou na confiança na CA do laboratório.

No Repetir, um envio HTTPS pode falhar por certificado inválido ou protocolo incompatível. Antes de ligar Ignorar erros de certificado nas configurações do Repetir, rode o analisador no mesmo host: ele mostra se a cadeia é autoassinada, se o hostname não confere ou se o certificado venceu. Assim, você documenta o motivo exato da falha e só desativa a validação no Repetir quando o ambiente é próprio e autorizado.

Exemplos #

Entradas aceitas no campo do painel ALVO HTTPS.

Entradas aceitas no campoTexto
exemplo.com
https://exemplo.com/login?next=/painel
api.exemplo.com:8443
https://[2001:db8::10]:8443/

Resumo de uma sessão saudável, como registrado no Bloco de Notas.

Resumo registrado nas notasTexto
Host: exemplo.com:443
Alvo normalizado: https://exemplo.com
TLS negociado: TLSv1.3
Cipher suite negociada: TLS_AES_128_GCM_SHA256
Tempo de handshake: 182 ms
Validade: 01/08/2026 00:00 até 30/10/2026 23:59
Status da validade: 24 dias restantes

Cadeia típica com folha e intermediário, como listada no cartão Cadeia de certificação. Repare que o segundo cartão recebe o rótulo RAIZ, embora seja o intermediário: o servidor não enviou a raiz, e o emissor dele revela a autoridade que fecha a cadeia.

Cadeia observada no handshakeTexto
FOLHA
Assunto: CN=exemplo.com
Emissor: CN=Exemplo Intermediate CA,O=Exemplo,C=BR

RAIZ
Assunto: CN=Exemplo Intermediate CA,O=Exemplo,C=BR
Emissor: CN=Exemplo Root CA,O=Exemplo,C=BR

Formato dos fingerprints exibidos pelo módulo.

Formato dos fingerprintsTexto
SHA-256: 3B:7E:1A:C4:59:02:DF:88:6A:E1:4C:93:B0:27:5D:F6:11:A8:7C:E9:42:0B:D5:36:9F:C2:68:E4:1D:B7:05:7A
SHA-1: 9C:2E:41:B8:07:D3:6F:A5:18:E0:C7:52:3B:94:FD:61:0A:8E:27:C3

Conferência do fingerprint SHA-256 da folha fora do aplicativo, em uma estação de trabalho.

Conferir o fingerprint com OpenSSLShell
openssl s_client -connect exemplo.com:443 -servername exemplo.com </dev/null 2>/dev/null | openssl x509 -noout -fingerprint -sha256

Teste manual de uma versão específica do TLS, útil para confirmar o painel Versões do TLS.

Testar TLS 1.2 com OpenSSLShell
openssl s_client -connect exemplo.com:443 -servername exemplo.com -tls1_2 </dev/null

Problemas comuns e perguntas frequentes (FAQ) #

Apareceu "Informe um domínio ou URL para analisar." O campo estava vazio. Digite um domínio, uma URL ou host:porta e toque em VERIFICAR de novo.

A falha diz que o endereço não pôde ser interpretado ou que o host não foi identificado. O texto não forma uma URL válida. Remova espaços e caracteres estranhos e use o formato exemplo.com ou exemplo.com:8443. Endereços IPv6 precisam estar entre colchetes.

A análise falhou com tempo esgotado ou conexão recusada. A porta está fechada, filtrada ou o host não respondeu em 4,5 segundos. Confirme a porta do serviço TLS, a conectividade do aparelho e se o alvo aceita conexões da sua rede.

A falha menciona que o host não foi resolvido. O nome não existe no DNS usado pelo aparelho. Confira a grafia do domínio ou use o endereço IP, sabendo que isso afeta o SNI e a verificação de hostname.

O handshake não termina e a mensagem fala em handshake ou protocolo. O serviço na porta pode não falar TLS (por exemplo, HTTP puro), exigir certificado de cliente ou aceitar apenas versões e cifras que o aparelho não oferece.

Por que aparece CADEIA COM ALERTA se o site abre no navegador? O alerta também aparece quando a cadeia é válida, mas o hostname não confere; leia a faixa de mensagem. Outra causa comum é o servidor não enviar o intermediário: alguns navegadores completam a cadeia sozinhos, mas o validador do Android não.

A mensagem da cadeia menciona "Trust anchor for certification path not found". A cadeia não termina em uma raiz confiável do Android. É o caso típico de certificado autoassinado, de CA privada ou de intermediário faltando.

Analisei um IP e recebi HOSTNAME FALHOU. Sem um nome de domínio não há SNI, e o servidor responde com o certificado padrão, que raramente cobre o IP. Analise pelo nome do host.

O cartão RAIZ mostra um certificado intermediário. O servidor enviou só folha e intermediário, e o último da lista recebe o rótulo de raiz. Veja o aviso da seção Cadeia de certificação, acima.

O status diz "vence hoje", mas o chip mostra FORA DA VALIDADE. Os dias restantes são contados em dias inteiros. Um certificado que expirou há poucas horas ainda aparece como "vence hoje", enquanto o chip já reflete a validade exata.

As datas parecem erradas. As datas seguem o fuso e o relógio do aparelho. Um relógio desajustado também pode fazer um certificado válido aparecer fora da validade.

O fingerprint no cliente que passa pelo Proxy é diferente do analisador. É esperado com a interceptação HTTPS ligada: o cliente recebe um certificado emitido pela CA do laboratório. Veja a seção Relação com o Proxy de Rede e o Repetir, acima.

Não vejo "Enviar para o Analisador SSL/TLS" nas capturas. O atalho só aparece quando o módulo está ativado em Configurações > Aplicativos.

Continue #