feat(ui): ataques (Evil Twin, regras/máscara, WPS), captura mais robusta
- app.js/app.css/index.html: telas novas para Evil Twin (PSK e Enterprise), regras de mutação/máscara na quebra de senha, WPS, indicador de modo (monitor/gerenciado) movido para baixo do seletor de interface, e aviso específico quando a placa não entrega captura de verdade (ver bug de ScanSnapshot.warning no engine). - Lista de redes/BSSIDs não reordena mais a cada poll: ordem de chegada como critério de desempate e sinal arredondado em buckets de 4 dBm, porque reordenar pelo sinal instantâneo fazia as linhas flutuarem de posição debaixo do cursor a cada atualização. - "Forçar handshake" religa a captura sozinho se ela tiver sido parada (esperando o AP reaparecer no canal certo antes de disparar o job, e travando o alvo numa variável local pra não perder o BSSID se o diálogo fechar no meio da espera). - Grid da aba Ataques trocado de CSS grid pra colunas (alvenaria): cards com alturas muito diferentes na mesma linha deixavam buracos vazios enormes com align-items:start. - check-ui-i18n.mjs: ajustes de cobertura para as novas telas.
This commit is contained in:
1 parent
a3ca73e610
commit
6e0cd7cf10
5 files changed
+3077
-76
No files matched your search
+468
-1
@@ -2,8 +2,12 @@
|
||||
export const EN = {
|
||||
// index.html / sidebar
|
||||
'auditoria de Wi-Fi': 'Wi-Fi auditing',
|
||||
'Interface': 'Interface',
|
||||
'Interface Wi-Fi': 'Wi-Fi interface',
|
||||
'Interfaces': 'Interfaces',
|
||||
'nenhuma interface Wi-Fi encontrada': 'no Wi-Fi interface found',
|
||||
'APs, clientes e ataques': 'APs, clients and attacks',
|
||||
'espectro e saúde': 'spectrum and health',
|
||||
'checar atualização': 'check for update',
|
||||
'checando…': 'checking…',
|
||||
'atualizar para {n}': 'update to {n}',
|
||||
@@ -30,7 +34,12 @@ export const EN = {
|
||||
'parar captura': 'stop capture',
|
||||
|
||||
// resultados
|
||||
'Redes': 'Networks',
|
||||
'Redes vistas': 'Networks seen',
|
||||
'Linha do tempo': 'Timeline',
|
||||
'Linha do tempo ·': 'Timeline ·',
|
||||
'fechar': 'close',
|
||||
'motivo {n}': 'reason {n}',
|
||||
'Pronto pra capturar': 'Ready to capture',
|
||||
'Ative o modo monitor e inicie a captura pra ver as redes no ar.': 'Enable monitor mode and start capturing to see the networks on the air.',
|
||||
'Nenhuma interface Wi-Fi': 'No Wi-Fi interface',
|
||||
@@ -41,16 +50,44 @@ export const EN = {
|
||||
'oculta': 'hidden',
|
||||
'Rede': 'Network',
|
||||
'Canal': 'Channel',
|
||||
'Canais': 'Channels',
|
||||
'Banda': 'Band',
|
||||
'Bandas': 'Bands',
|
||||
'Nome': 'Name',
|
||||
'Sinal': 'Signal',
|
||||
'Segurança': 'Security',
|
||||
'Clientes': 'Clients',
|
||||
'filtrar por SSID ou BSSID': 'filter by SSID or BSSID',
|
||||
'Filtrar redes': 'Filter networks',
|
||||
'Ordenar por': 'Sort by',
|
||||
'expandir': 'expand',
|
||||
'recolher': 'collapse',
|
||||
'PMF parcial': 'partial PMF',
|
||||
'canal {n}': 'channel {n}',
|
||||
'canal {n} · {n}': 'channel {n} · {n}',
|
||||
'1 cliente': '1 client',
|
||||
'{n} clientes': '{n} clients',
|
||||
'{n} de {n} redes': '{n} of {n} networks',
|
||||
'{n} redes · {n} BSSIDs · {n} clientes': '{n} networks · {n} BSSIDs · {n} clients',
|
||||
'Nenhuma rede corresponde ao filtro': 'No network matches the filter',
|
||||
'Ajuste a busca ou limpe o campo de filtro.': 'Adjust the search or clear the filter.',
|
||||
|
||||
// erros de UI
|
||||
'Não foi possível trocar o modo:': 'Could not change the mode:',
|
||||
'Não foi possível iniciar a captura:': 'Could not start the capture:',
|
||||
'Não foi possível retomar a captura: {n}': 'Could not resume the capture: {n}',
|
||||
'Retomando a captura e localizando a rede…': 'Resuming the capture and locating the network…',
|
||||
'A rede não reapareceu na varredura a tempo. Tente de novo.': 'The network did not reappear in the scan in time. Try again.',
|
||||
'A captura parou:': 'The capture stopped:',
|
||||
'erro desconhecido': 'unknown error',
|
||||
'rota desconhecida': 'unknown route',
|
||||
|
||||
// seletor de idioma
|
||||
// seletor de idioma / configurações
|
||||
'Configurações': 'Settings',
|
||||
'Tema': 'Theme',
|
||||
'Claro': 'Light',
|
||||
'Escuro': 'Dark',
|
||||
'Fechar': 'Close',
|
||||
'Idioma': 'Language',
|
||||
'Auto': 'Auto',
|
||||
'Português': 'Portuguese',
|
||||
@@ -95,4 +132,434 @@ export const EN = {
|
||||
'nenhum handshake quebrável para os filtros informados': 'no crackable handshake for the given filters',
|
||||
'quantidade de quadros deve ficar entre 1 e 256': 'frame count must be between 1 and 256',
|
||||
'MAC inválido: {n}': 'invalid MAC: {n}',
|
||||
|
||||
// detalhes do alvo e ataques
|
||||
'não': 'no',
|
||||
'não anunciado': 'not advertised',
|
||||
'quebrável': 'crackable',
|
||||
'Nenhum handshake capturado para este BSSID.': 'No handshake captured for this BSSID.',
|
||||
'Rede aberta.': 'Open network.',
|
||||
'O tráfego não é cifrado pelo Wi-Fi; qualquer cliente pode se associar.': 'Traffic is not encrypted over Wi-Fi; any client can associate.',
|
||||
'A cifra é quebrável; capture IVs na aba Ataques.': 'The cipher is breakable; capture IVs in the Attacks tab.',
|
||||
'O AP anuncia configuração travada.': 'The AP advertises configuration locked.',
|
||||
'PIN pode estar acessível; verifique o lock.': 'The PIN may be accessible; check the lock.',
|
||||
'Desautenticação e captura de handshake podem ser ignoradas pelos clientes.': 'Deauthentication and handshake capture may be ignored by clients.',
|
||||
'Sem PMF obrigatório.': 'No mandatory PMF.',
|
||||
'Desautenticação tende a funcionar e facilita a captura do handshake.': 'Deauthentication tends to work and makes handshake capture easier.',
|
||||
'País': 'Country',
|
||||
'Último visto': 'Last seen',
|
||||
'Primeiro visto': 'First seen',
|
||||
'Frequência': 'Frequency',
|
||||
'Largura': 'Width',
|
||||
'Padrão': 'Standard',
|
||||
'Sinal máximo': 'Max signal',
|
||||
'Intervalo de beacon': 'Beacon interval',
|
||||
'Quadros de dados': 'Data frames',
|
||||
'Versão WPS': 'WPS version',
|
||||
'Vistos na rede': 'Seen on network',
|
||||
'Quebráveis': 'Crackable',
|
||||
'Número do modelo': 'Model number',
|
||||
'Nome do dispositivo': 'Device name',
|
||||
'Serial': 'Serial',
|
||||
'Identificação': 'Identity',
|
||||
'Rádio': 'Radio',
|
||||
'sim': 'yes',
|
||||
'Nome exibido': 'Display name',
|
||||
'Hostname': 'Hostname',
|
||||
'Sistema': 'OS',
|
||||
'IP': 'IP',
|
||||
'Associado a': 'Associated to',
|
||||
'Atual': 'Current',
|
||||
'Máximo': 'Maximum',
|
||||
'Sem amostras de sinal suficientes ainda.': 'Not enough signal samples yet.',
|
||||
'Linha do tempo · eventos mais recentes primeiro.': 'Timeline · most recent events first.',
|
||||
'Cliente · {n}': 'Client · {n}',
|
||||
'A captura parou sozinha:': 'The capture stopped on its own:',
|
||||
'A placa não está capturando nada': 'The adapter is not capturing anything',
|
||||
'Nenhum quadro recebido depois de alguns segundos saltando canais — esta placa pode aceitar ativar o modo monitor sem conseguir capturar de verdade (comum em Wi-Fi interna de notebook). Tente um adaptador USB dedicado a modo monitor/injeção.':
|
||||
'No frame received after several seconds of channel hopping — this adapter may accept turning monitor mode on without actually being able to capture (common with a laptop\'s built-in Wi-Fi). Try a USB adapter dedicated to monitor mode/injection.',
|
||||
'motivo desconhecido — confira se o adaptador ainda está conectado.':
|
||||
'unknown reason — check whether the adapter is still connected.',
|
||||
'Clientes e handshake': 'Clients and handshake',
|
||||
'Nenhum cliente visto.': 'No client seen.',
|
||||
'Associe ou gere tráfego na rede para que o Sabiá identifique estações.': 'Associate or generate traffic on the network so Sabiá can identify stations.',
|
||||
'senha encontrada': 'password found',
|
||||
'concluído': 'done',
|
||||
'quebrando': 'cracking',
|
||||
'senhas testadas': 'passwords tried',
|
||||
'{n} senhas testadas': '{n} passwords tried',
|
||||
'{n} tentativas · {n} ms': '{n} attempts · {n} ms',
|
||||
'Senha não encontrada no dicionário ({n} tentativas).': 'Password not found in the wordlist ({n} attempts).',
|
||||
'· quebrável': '· crackable',
|
||||
'não especificado': 'unspecified',
|
||||
'autenticação expirada': 'authentication expired',
|
||||
'saindo': 'leaving',
|
||||
'inativo': 'inactive',
|
||||
'AP sem recursos': 'AP out of resources',
|
||||
'classe 2': 'class 2',
|
||||
'classe 3': 'class 3',
|
||||
'{n} handshake(s) visto(s); {n} quebrável(is).': '{n} handshake(s) seen; {n} crackable.',
|
||||
'Nenhum handshake capturado ainda. Desautentique um cliente para estimular a reassociação.': 'No handshake captured yet. Deauthenticate a client to trigger reassociation.',
|
||||
'Captura WEP': 'WEP capture',
|
||||
'WEP não tem handshake: o ataque coleta IVs em um .pcap. Reinicie a captura gravando o arquivo e gere tráfego com desautenticação. A captura atual é reiniciada e a tabela começa vazia.': 'WEP has no handshake: the attack collects IVs into a .pcap. Restart the capture writing the file and generate traffic with deauthentication. The current capture is restarted and the table starts empty.',
|
||||
'Arquivo pcap': 'pcap file',
|
||||
'Reiniciar captura com pcap': 'Restart capture to pcap',
|
||||
'Gerar tráfego': 'Generate traffic',
|
||||
'Copiar comando': 'Copy command',
|
||||
'Esta rede não usa WEP.': 'This network does not use WEP.',
|
||||
'Somente em redes próprias ou com autorização escrita.': 'Only on your own networks or with written authorization.',
|
||||
'Cada ação fica registrada na trilha de auditoria local, com interface, BSSID e estação.': 'Every action is logged in the local audit trail with interface, BSSID and station.',
|
||||
'Tenho autorização para testar esta rede': 'I have authorization to test this network',
|
||||
'Desautenticação': 'Deauthentication',
|
||||
'Expulsa uma estação (ou todas) para forçar reassociação e captura de handshake.': 'Kicks a station (or all) to force reassociation and handshake capture.',
|
||||
'Enviar desautenticação': 'Send deauthentication',
|
||||
'Forçar handshake': 'Force handshake',
|
||||
'Dicionário': 'Wordlist',
|
||||
'Rede oculta': 'Hidden network',
|
||||
'job não encontrado': 'job not found',
|
||||
'{n} quadro(s) enviados para {n} (motivo {n}).': '{n} frame(s) sent to {n} (reason {n}).',
|
||||
'Selecione um handshake.': 'Select a handshake.',
|
||||
'Informe o dicionário.': 'Enter the wordlist.',
|
||||
'Informe o caminho do .pcap.': 'Enter the .pcap path.',
|
||||
'Força bruta por máscara — sem dicionário, testa toda combinação do padrão.':
|
||||
'Mask brute force — no wordlist, tests every combination of the pattern.',
|
||||
'dígito,': 'digit,',
|
||||
'minúscula,': 'lowercase,',
|
||||
'maiúscula,': 'uppercase,',
|
||||
'símbolo,': 'symbol,',
|
||||
'qualquer um; o resto é literal.': 'any of those; the rest is literal.',
|
||||
'Máscara': 'Mask',
|
||||
'Força bruta por máscara': 'Mask brute force',
|
||||
'Informe uma máscara (ex.: ?d?d?d?d?d?d?d?d).': 'Enter a mask (e.g. ?d?d?d?d?d?d?d?d).',
|
||||
'job não iniciado': 'job not started',
|
||||
'Captura gravando em {n}. Gere tráfego e aguarde IVs suficientes.': 'Capture writing to {n}. Generate traffic and wait for enough IVs.',
|
||||
'Visão geral': 'Overview',
|
||||
'Ver detalhes': 'View details',
|
||||
'Ver clientes': 'View clients',
|
||||
'Abrir ataques': 'Open attacks',
|
||||
'Todos (broadcast)': 'All (broadcast)',
|
||||
'associado': 'associated',
|
||||
'sondando': 'probing',
|
||||
'visto': 'seen',
|
||||
'Alvo': 'Target',
|
||||
'Handshake': 'Handshake',
|
||||
'Salvar pcap em': 'Save pcap to',
|
||||
'Exportar selecionado': 'Export selected',
|
||||
'Exportar todos': 'Export all',
|
||||
'Quebrar senha': 'Crack password',
|
||||
'completo': 'complete',
|
||||
'Ataques': 'Attacks',
|
||||
'Cliente alvo': 'Target client',
|
||||
'Ações': 'Actions',
|
||||
'Atacar': 'Attack',
|
||||
'Cliente não associado a este AP.': 'Client not associated with this AP.',
|
||||
'Somente o cliente selecionado será desautenticado.': 'Only the selected client will be deauthenticated.',
|
||||
'Todos os clientes associados (broadcast).': 'All associated clients (broadcast).',
|
||||
'Fabricante': 'Manufacturer',
|
||||
'Modelo': 'Model',
|
||||
'Oculta': 'Hidden',
|
||||
'Modo': 'Mode',
|
||||
'Cifra': 'Cipher',
|
||||
'Privacidade': 'Privacy',
|
||||
'WPS travado': 'WPS locked',
|
||||
'Associados': 'Associated',
|
||||
'Senha': 'Password',
|
||||
'Quadro': 'Frame',
|
||||
'Quadros': 'Frames',
|
||||
'ambas': 'both',
|
||||
'Tentativas': 'Attempts',
|
||||
'Testar PMF': 'Test PMF',
|
||||
'em execução': 'running',
|
||||
'iniciando': 'starting',
|
||||
'erro': 'error',
|
||||
'parado': 'stopped',
|
||||
'Status: {n}': 'Status: {n}',
|
||||
'tamanho inválido': 'invalid length',
|
||||
'· última: {n}': '· last: {n}',
|
||||
'Clona o AP (aberto) numa segunda interface e sobe um portal pedindo a senha de novo. A senha só é aceita se bater de verdade com o handshake já capturado — não é um "aceita qualquer coisa".':
|
||||
'Clones the AP (open) on a second interface and shows a portal asking for the password again. The password is only accepted if it truly matches the already-captured handshake — it is not an "accept anything" page.',
|
||||
'Exige um handshake quebrável já capturado deste AP (aba Handshake). Precisa de':
|
||||
'Requires a crackable handshake already captured for this AP (Handshake tab). Needs',
|
||||
'instalado e de uma': 'installed and a',
|
||||
'interface Wi-Fi em modo AP, diferente da que está capturando.':
|
||||
'Wi-Fi interface in AP mode, different from the one capturing.',
|
||||
'Iniciar Evil Twin': 'Start Evil Twin',
|
||||
'Informe a interface do clone (uma segunda placa).':
|
||||
'Enter the clone interface (a second adapter).',
|
||||
'a interface do clone precisa ser diferente da que está capturando':
|
||||
'the clone interface must be different from the one capturing',
|
||||
'esse BSSID ainda não apareceu nesta sessão de captura':
|
||||
'that BSSID has not appeared in this capture session yet',
|
||||
'rede oculta: sem SSID não dá pra clonar': 'hidden network: no SSID, cannot clone',
|
||||
'handshake sem dados suficientes pra conferir senha':
|
||||
'handshake does not have enough data to verify a password',
|
||||
'hostapd não está instalado (sudo apt install hostapd) — necessário pro Evil Twin':
|
||||
'hostapd is not installed (sudo apt install hostapd) — needed for Evil Twin',
|
||||
'{n} · {n} credencial(is) capturada(s){n}': '{n} · {n} credential(s) captured{n}',
|
||||
'Clona o AP numa segunda interface e deixa o hostapd-wpe aceitar a autenticação EAP de qualquer cliente. A credencial sai sozinha, como parte do próprio 802.1X — sem portal, sem ação humana.':
|
||||
'Clones the AP on a second interface and lets hostapd-wpe accept the EAP authentication from any client. The credential comes out on its own, as part of 802.1X itself — no portal, no human action.',
|
||||
'Rede Enterprise detectada (AKM 802.1X) — aqui a credencial é enviada automaticamente pelo cliente durante o handshake EAP, não precisa de portal. Exige':
|
||||
'Enterprise network detected (AKM 802.1X) — here the credential is sent automatically by the client during the EAP handshake, no portal needed. Requires',
|
||||
'instalado (não vem com o Sabiá: é um patch no build do hostapd —':
|
||||
'installed (not bundled with Sabiá: it is a patch on the hostapd build —',
|
||||
') e uma': ') and a',
|
||||
'interface Wi-Fi em modo AP.': 'Wi-Fi interface in AP mode.',
|
||||
'Iniciar Evil Twin Enterprise': 'Start Enterprise Evil Twin',
|
||||
'Limitação honesta: o certificado TLS do clone é autoassinado. Dispositivo que valida a cadeia de certificado da rede (comum em perfil corporativo/MDM atualizado) vai recusar ou avisar o usuário — essa é a defesa que deveria existir. Funciona contra configuração sem essa validação.':
|
||||
'Honest limitation: the clone\'s TLS certificate is self-signed. A device that validates the network\'s certificate chain (common on an updated corporate/MDM profile) will refuse or warn the user — that is the defense that is supposed to exist. It works against configurations without that validation.',
|
||||
'essa rede não é WPA2/WPA3-Enterprise (802.1X) — pra rede com senha única (PSK), use o Evil Twin com portal cativo':
|
||||
'this network is not WPA2/WPA3-Enterprise (802.1X) — for a single-password (PSK) network, use the Evil Twin with captive portal',
|
||||
'hostapd-wpe não está instalado — não vem com o Sabiá (é um patch sobre o build do hostapd, não um binário pequeno); instale pelo repositório do Kali ou compile https://github.com/aircrack-ng/hostapd-wpe':
|
||||
'hostapd-wpe is not installed — not bundled with Sabiá (it is a patch on the hostapd build, not a small binary); install it from the Kali repository or build https://github.com/aircrack-ng/hostapd-wpe',
|
||||
'{n} está num modo que o hostapd-wpe não consegue usar':
|
||||
'{n} is in a mode hostapd-wpe cannot use',
|
||||
'não foi possível gerar o certificado TLS (openssl) pro hostapd-wpe':
|
||||
'could not generate the TLS certificate (openssl) for hostapd-wpe',
|
||||
'hostapd-wpe saiu sozinho ({n}) logo ao subir em {n} — a placa pode não suportar de verdade o canal/banda do AP real. Saída: {n}':
|
||||
'hostapd-wpe exited on its own ({n}) right after starting on {n} — the adapter may not actually support the real AP\'s channel/band. Output: {n}',
|
||||
'job de Evil Twin Enterprise não encontrado': 'Enterprise Evil Twin job not found',
|
||||
'job de Evil Twin não encontrado': 'Evil Twin job not found',
|
||||
'hostapd saiu sozinho ({n}) logo ao subir em {n} — a placa pode não suportar de verdade o canal/banda do AP real. Saída: {n}':
|
||||
'hostapd exited on its own ({n}) right after starting on {n} — the adapter may not actually support the real AP\'s channel/band. Output: {n}',
|
||||
'{n} está num modo que o hostapd não consegue usar': '{n} is in a mode hostapd cannot use',
|
||||
'{n} handshake(s), {n} quadro(s) em {n}': '{n} handshake(s), {n} frame(s) in {n}',
|
||||
'Motivo': 'Reason',
|
||||
'Pacotes': 'Packets',
|
||||
'Estado': 'State',
|
||||
'Probes': 'Probes',
|
||||
'Cliente': 'Client',
|
||||
'WPS ativo': 'WPS active',
|
||||
'WPS ativo.': 'WPS active.',
|
||||
'WPS ativo ({n}).': 'WPS active ({n}).',
|
||||
'PMF exigido.': 'PMF required.',
|
||||
'Depois de coletar IVs suficientes:': 'After collecting enough IVs:',
|
||||
'mensagens {n}': 'messages {n}',
|
||||
'{n} · mensagens {n}': '{n} · messages {n}',
|
||||
'senha: {n}': 'password: {n}',
|
||||
'{n} · quebrável': '{n} · crackable',
|
||||
'{n} · canal {n}': '{n} · channel {n}',
|
||||
'{n} ({n})': '{n} ({n})',
|
||||
|
||||
// canais, PMKID/PMF, WPS e relatório
|
||||
'Ocupação dos canais em {n}': 'Channel occupancy on {n}',
|
||||
'Sem dados de canal ainda': 'No channel data yet',
|
||||
'Inicie a captura para o Sabiá medir ocupação e sugerir canais.':
|
||||
'Start capturing so Sabiá can measure occupancy and suggest channels.',
|
||||
'{n} APs · {n} canais ocupados': '{n} APs · {n} busy channels',
|
||||
'{n} AP(s) · recomendado': '{n} AP(s) · recommended',
|
||||
'· recomendado': '· recommended',
|
||||
'aberta/WEP': 'open/WEP',
|
||||
'{n} rede(s) WPA3 analisada(s) — detalhes na aba do alvo e no relatório.':
|
||||
'{n} WPA3 network(s) analyzed — details in the target tab and report.',
|
||||
'Restrito a 1, 6 e 11 para evitar sobreposição.':
|
||||
'Limited to 1, 6 and 11 to avoid overlap.',
|
||||
'Menor pontuação de interferência entre os canais observados.':
|
||||
'Lowest interference score among observed channels.',
|
||||
'Melhor canal': 'Best channel',
|
||||
'Espectro e canais': 'Spectrum and channels',
|
||||
|
||||
// saúde do espectro (canais, estilo SMART)
|
||||
'Boa': 'Good',
|
||||
'Atenção': 'Attention',
|
||||
'Saturado': 'Saturated',
|
||||
'Boa condição': 'Good condition',
|
||||
'Sem canal livre nessa banda': 'No free channel on this band',
|
||||
'Até o melhor canal está saturado': 'Even the best channel is saturated',
|
||||
'Recomendado é DFS — pode cair com radar por perto': 'The recommended channel is DFS — it can drop off if radar is detected nearby',
|
||||
'Espectro congestionado': 'Congested spectrum',
|
||||
'Canal recomendado': 'Recommended channel',
|
||||
'Canais ocupados': 'Busy channels',
|
||||
'APs na banda': 'APs on this band',
|
||||
'Pior canal': 'Worst channel',
|
||||
'Canais DFS': 'DFS channels',
|
||||
'Nessa banda, prefira sempre 1, 6 ou 11 — canais no meio sobrepõem vizinhos.':
|
||||
'On this band, always prefer 1, 6 or 11 — channels in between overlap neighbors.',
|
||||
'Canais DFS liberam mais espaço, mas o rádio é obrigado a sair do ar se detectar radar — tenha um canal não-DFS de reserva.':
|
||||
'DFS channels free up more room, but the radio must go off the air if it detects radar — keep a non-DFS channel as backup.',
|
||||
'Considere mudar o AP para o canal recomendado ou mover pra outra banda.':
|
||||
'Consider moving the AP to the recommended channel or to another band.',
|
||||
'Canais detalhados ({n})': 'Detailed channels ({n})',
|
||||
'Pontuação': 'Score',
|
||||
'APs': 'APs',
|
||||
'{n} AP(s)': '{n} AP(s)',
|
||||
'Recomendado': 'Recommended',
|
||||
'Ainda sem eventos além do primeiro avistamento.':
|
||||
'No events beyond the first sighting yet.',
|
||||
'{n} amostra(s) de sinal. Eventos mais recentes primeiro.':
|
||||
'{n} signal sample(s). Most recent events first.',
|
||||
'nenhuma ferramenta instalada': 'no tool installed',
|
||||
'Senha encontrada: {n}{n}': 'Password found: {n}{n}',
|
||||
'Sem PIN, o reaver usa Pixie Dust; o bully usa o ataque padrão.':
|
||||
'Without a PIN, reaver uses Pixie Dust; bully uses its default attack.',
|
||||
'Instale reaver ou bully para habilitar. Ex.: sudo apt install reaver bully':
|
||||
'Install reaver or bully to enable. E.g.: sudo apt install reaver bully',
|
||||
'A saída do reaver/bully aparece aqui.': 'reaver/bully output appears here.',
|
||||
'Orquestra reaver/bully na interface monitor. O canal do AP é usado automaticamente; o processo pode ser interrompido a qualquer momento.':
|
||||
'Orchestrates reaver/bully on the monitor interface. The AP channel is used automatically; the process can be stopped at any time.',
|
||||
'Ferramenta': 'Tool',
|
||||
'PIN conhecido (opcional)': 'Known PIN (optional)',
|
||||
'Exportar .hc22000': 'Export .hc22000',
|
||||
'Todos .hc22000': 'Export all .hc22000',
|
||||
'Iniciar WPS': 'Start WPS',
|
||||
'Parar job': 'Stop job',
|
||||
'8 dígitos': '8 digits',
|
||||
'nenhum cliente visto': 'no client seen',
|
||||
'Direção': 'Direction',
|
||||
'AP → cliente': 'AP → client',
|
||||
'cliente → AP': 'client → AP',
|
||||
'Dispara deauth nas duas direções e observa se a estação reassocia. Resultado prático, não prova criptográfica.':
|
||||
'Sends deauth in both directions and watches whether the station reassociates. Practical result, not cryptographic proof.',
|
||||
'Estação': 'Station',
|
||||
'Forja um MAC local e envia association request com PMKID para tentar a mensagem 1. Muitos APs só expõem PMKID em roaming real.':
|
||||
'Forge a local MAC and send an association request with PMKID to try for message 1. Many APs only expose PMKID during real roaming.',
|
||||
'Caçar PMKID': 'Hunt PMKID',
|
||||
'Do cliente para o AP (exige estação selecionada).':
|
||||
'From client to AP (requires a selected station).',
|
||||
'Nas duas direções (exige estação selecionada).':
|
||||
'In both directions (requires a selected station).',
|
||||
'{n} quadro(s) {n} em {n} para {n} (motivo {n}).':
|
||||
'{n} {n} frame(s) in {n} to {n} (reason {n}).',
|
||||
'Aguardando saída do reaver/bully…': 'Waiting for reaver/bully output…',
|
||||
'Enviando associação com PMKID…': 'Sending association with PMKID…',
|
||||
'{n} quadro(s) enviados; PMKID não apareceu. {n}':
|
||||
'{n} frame(s) sent; PMKID did not appear. {n}',
|
||||
'Nenhuma estação disponível.': 'No station available.',
|
||||
'Testando por ~4 s…': 'Testing for ~4 s…',
|
||||
'PMKID capturado: {n}': 'PMKID captured: {n}',
|
||||
'PMF não obrigatório': 'PMF not required',
|
||||
'PMF não obrigatório · {n}': 'PMF not required · {n}',
|
||||
'Inconclusivo · {n}': 'Inconclusive · {n}',
|
||||
'Instale reaver ou bully.': 'Install reaver or bully.',
|
||||
'Canal do AP desconhecido.': 'Unknown AP channel.',
|
||||
'Montando o relatório…': 'Building the report…',
|
||||
'não foi possível gerar o relatório': 'could not generate the report',
|
||||
'Pré-visualização A4 · {n} página(s).': 'A4 preview · {n} page(s).',
|
||||
'Pré-visualização A4.': 'A4 preview.',
|
||||
'Paginando o relatório…': 'Paginating the report…',
|
||||
'Não foi possível abrir a impressão; baixe o HTML e abra no navegador.':
|
||||
'Could not open printing; download the HTML and open it in the browser.',
|
||||
'não foi possível gerar o HTML': 'could not generate the HTML',
|
||||
'Relatório': 'Report',
|
||||
'Relatório de auditoria': 'Audit report',
|
||||
'Imprimir / PDF': 'Print / PDF',
|
||||
'Baixar HTML': 'Download HTML',
|
||||
'Pré-visualização paginada em A4.': 'Paginated A4 preview.',
|
||||
'Visualização': 'View',
|
||||
'Relatório paginado': 'Paginated report',
|
||||
'handshake sem SSID, PMKID ou mensagem 2 para exportar':
|
||||
'handshake without SSID, PMKID or message 2 to export',
|
||||
'nenhum handshake com material para .hc22000':
|
||||
'no handshake with material for .hc22000',
|
||||
'direção inválida: use ap, sta ou both': 'invalid direction: use ap, sta or both',
|
||||
'máscara grande demais pra calcular o total': 'mask too large to calculate the total',
|
||||
'máscara tem {n} combinações, acima do limite de {n} — restrinja a máscara (ex.: menos posições ?a/?l) antes de rodar':
|
||||
'mask has {n} combinations, above the limit of {n} — narrow the mask (e.g. fewer ?a/?l positions) before running',
|
||||
'quadro inválido: use deauth ou disassoc': 'invalid frame: use deauth or disassoc',
|
||||
'direção sta/both exige a estação alvo': 'sta/both direction requires the target station',
|
||||
'inicie a captura nesta interface antes do teste PMKID':
|
||||
'start capturing on this interface before the PMKID test',
|
||||
'BSSID ainda não visto nesta captura': 'BSSID not seen in this capture yet',
|
||||
'SSID oculto: impossível montar o association request':
|
||||
'hidden SSID: cannot build the association request',
|
||||
'PMKID observado; exporte em .hc22000 e quebre com hashcat ou pelo Sabiá.':
|
||||
'PMKID observed; export to .hc22000 and crack with hashcat or Sabiá.',
|
||||
'Nenhum PMKID apareceu. O AP pode não usar cache de PMKID ou só responder a roaming real; tente também desautenticar um cliente associado.':
|
||||
'No PMKID appeared. The AP may not cache PMKID or may only answer real roaming; also try deauthenticating an associated client.',
|
||||
'PIN WPS deve ter 8 dígitos': 'WPS PIN must have 8 digits',
|
||||
'a ferramenta terminou sem informar PSK': 'the tool finished without reporting a PSK',
|
||||
'job WPS não encontrado': 'WPS job not found',
|
||||
'Auditoria Wi-Fi · {n}': 'Wi-Fi audit · {n}',
|
||||
'{n} está em modo managed; ative o modo monitor antes do teste PMKID':
|
||||
'{n} is in managed mode; enable monitor mode before the PMKID test',
|
||||
'{n} não encontrado no PATH; instale reaver ou bully':
|
||||
'{n} not found in PATH; install reaver or bully',
|
||||
'{n} está em modo managed; ative o modo monitor antes do ataque WPS':
|
||||
'{n} is in managed mode; enable monitor mode before the WPS attack',
|
||||
'não foi possível executar {n}: {n}': 'could not run {n}: {n}',
|
||||
'{n} terminou com código {n}': '{n} exited with code {n}',
|
||||
|
||||
// achados do WIDS (analysis.rs)
|
||||
'SSID “{n}” com seguranças diferentes': 'SSID “{n}” with different security levels',
|
||||
'O mesmo nome aparece em BSSIDs com níveis de segurança distintos: {n}. Pode ser um evil twin ou um AP mal configurado.':
|
||||
'The same name appears on BSSIDs with different security levels: {n}. It may be an evil twin or a misconfigured AP.',
|
||||
'Rajada de desautenticação': 'Deauthentication burst',
|
||||
'{n} quadros de desautenticação/desassociação no último minuto. Pode ser ataque de desautenticação ou um AP instável.':
|
||||
'{n} deauthentication/disassociation frames in the last minute. It may be a deauth attack or an unstable AP.',
|
||||
'Muitos BSSIDs novos': 'Many new BSSIDs',
|
||||
'{n} BSSIDs apareceram no último minuto — possível beacon flood ou ambiente muito denso.':
|
||||
'{n} BSSIDs appeared in the last minute — possible beacon flood or a very dense environment.',
|
||||
'Rede aberta: {n}': 'Open network: {n}',
|
||||
'Sem cifra no Wi-Fi; o tráfego fica exposto a qualquer estação no alcance.':
|
||||
'No Wi-Fi encryption; traffic is exposed to any station in range.',
|
||||
'WEP em {n}': 'WEP on {n}',
|
||||
'WEP é quebrável em minutos; trate a rede como aberta.':
|
||||
'WEP can be cracked in minutes; treat the network as open.',
|
||||
'WPA1 (TKIP) em {n}': 'WPA1 (TKIP) on {n}',
|
||||
'WPA1/TKIP tem fraquezas conhecidas; migre para WPA2/CCMP ou WPA3.':
|
||||
'WPA1/TKIP has known weaknesses; migrate to WPA2/CCMP or WPA3.',
|
||||
'WPS ativo em {n}': 'WPS active on {n}',
|
||||
'O AP anuncia WPS com configuração travada.': 'The AP advertises WPS with configuration locked.',
|
||||
'WPS sem lock explícito; PIN pode ser testado com reaver/bully.':
|
||||
'WPS without an explicit lock; the PIN can be tested with reaver/bully.',
|
||||
'Sem PMF em {n}': 'No PMF on {n}',
|
||||
'Desautenticação e desassociação não são protegidas; clientes podem ser expulsos para facilitar a captura de handshake.':
|
||||
'Deauthentication and disassociation are unprotected; clients can be expelled to make handshake capture easier.',
|
||||
'PMF inconsistente em {n}': 'Inconsistent PMF on {n}',
|
||||
'O AP anuncia WPA3, mas não anuncia PMF; verifique a configuração.':
|
||||
'The AP advertises WPA3 but not PMF; check the configuration.',
|
||||
'WPA3 com WPS em {n}': 'WPA3 with WPS on {n}',
|
||||
'WPS não faz parte do WPA3 e abre uma via mais fraca de associação.':
|
||||
'WPS is not part of WPA3 and opens a weaker association path.',
|
||||
'primeiro visto': 'first seen',
|
||||
'associou': 'associated',
|
||||
'desautenticado': 'deauthenticated',
|
||||
|
||||
'A estação voltou a se associar.': 'The station reassociated.',
|
||||
'O AP pode não usar cache de PMKID.': 'The AP may not cache PMKID.',
|
||||
|
||||
'A estação voltou a se associar após a desautenticação: PMF não está obrigatório (ou o cliente não o usa).':
|
||||
'The station reassociated after deauthentication: PMF is not required (or the client does not use it).',
|
||||
'A estação continuou trocando quadros depois da desautenticação; o quadro de gerenciamento provavelmente foi aceito.':
|
||||
'The station kept exchanging frames after deauthentication; the management frame was probably accepted.',
|
||||
'A estação não voltou a associar na janela observada. PMF pode estar ativo, ou o cliente simplesmente ficou inativo.':
|
||||
'The station did not reassociate in the observed window. PMF may be active, or the client simply stayed idle.',
|
||||
'Inconclusivo': 'Inconclusive',
|
||||
|
||||
// deauth contínuo e identificação de clientes
|
||||
'Mantém os quadros saindo em série até você parar (ou até sair o handshake). O canal da captura fica travado no AP durante o job.':
|
||||
'Keeps frames going until you stop (or a handshake appears). The capture channel stays locked to the AP during the job.',
|
||||
'Iniciar contínuo': 'Start continuous',
|
||||
'Parar': 'Stop',
|
||||
'Rajada ({n})': 'Burst ({n})',
|
||||
'Pronto. O job contínuo trava a captura no canal do AP e para quando você mandar.':
|
||||
'Ready. The continuous job locks capture to the AP channel and stops when you say so.',
|
||||
'Job {n} · {n} quadro(s){n}{n}': 'Job {n} · {n} frame(s){n}{n}',
|
||||
'Handshake capturado em {n} quadro(s){n}.': 'Handshake captured in {n} frame(s){n}.',
|
||||
'Job {n} {n} · {n} quadro(s){n}.': 'Job {n} {n} · {n} frame(s){n}.',
|
||||
'Escolha um cliente para desautenticar nas direções sta/both.':
|
||||
'Choose a client to deauthenticate in the sta/both directions.',
|
||||
'Forçando reassociação e handshake…': 'Forcing reassociation and handshake…',
|
||||
'Desautenticação contínua iniciada.': 'Continuous deauthentication started.',
|
||||
'Nenhuma ferramenta WPS disponível.': 'No WPS tool available.',
|
||||
'O reaver embutido usa Pixie Dust sem PIN. O bully aparece se estiver instalado no sistema.':
|
||||
'The bundled reaver uses Pixie Dust without a PIN. bully appears if it is installed on the system.',
|
||||
'O reaver embutido não pôde ser extraído nesta execução.':
|
||||
'The bundled reaver could not be extracted in this run.',
|
||||
'Dicionário (vazio = embutido, 9,7 milhões de senhas)': 'Wordlist (empty = bundled, 9.7 million passwords)',
|
||||
'dicionário próprio, opcional': 'custom wordlist, optional',
|
||||
'Dispositivo': 'Device',
|
||||
'MAC aleatório': 'Random MAC',
|
||||
'Cliente {n}': 'Client {n}',
|
||||
'Linha do tempo · {n}': 'Timeline · {n}',
|
||||
'nenhuma ferramenta disponível': 'no tool available',
|
||||
'· canal {n}': '· channel {n}',
|
||||
'· para sozinho no handshake': '· stops on handshake',
|
||||
'job de deauth não encontrado': 'deauth job not found',
|
||||
'já existe um job de desautenticação em execução em {n}':
|
||||
'a deauthentication job is already running on {n}',
|
||||
'inicie a captura em {n} antes de iniciar o job':
|
||||
'start capture on {n} before starting the job',
|
||||
'a captura em {n} não está ativa': 'capture on {n} is not active',
|
||||
'{n} não está disponível; o reaver integrado não pôde ser extraído':
|
||||
'{n} is not available; the bundled reaver could not be extracted',
|
||||
};
|
||||
Reference in new issue
Block a user