O Canivete Suíço Cibernético - uma aplicação web para criptografia, codificação, compressão e análise de dados
# CyberChef
[](https://github.com/gchq/CyberChef/actions?query=workflow%3A%22Master+Build%2C+Test+%26+Deploy%22)
[](https://www.npmjs.com/package/cyberchef)
[](https://github.com/gchq/CyberChef/blob/master/LICENSE)
[](https://gitter.im/gchq/CyberChef?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
#### *O Canivete Suíço Cibernético*
O CyberChef é uma aplicação web simples e intuitiva para realizar todo o tipo de operações "cibernéticas" dentro de um navegador web. Estas operações incluem codificação simples como XOR e Base64, encriptação mais complexa como AES, DES e Blowfish, criação de binários e hexdumps, compressão e descompressão de dados, cálculo de hashes e checksums, análise de IPv6 e X.509, alteração de codificações de caracteres e muito mais.
A ferramenta foi concebida para permitir que analistas, tanto técnicos como não técnicos, manipulem dados de formas complexas sem terem de lidar com ferramentas ou algoritmos complexos. Foi concebida, projetada, construída e melhorada incrementalmente por um analista no seu tempo de inovação de 10% ao longo de vários anos.
## Conteúdos
- [Site oficial](#official-website)
- [Executar Localmente](#running-locally)
- [Com Docker](#with-docker)
- [A partir do código-fonte](#from-source)
- [Como funciona](#how-it-works)
- [Funcionalidades](#features)
- [Deep linking](#deep-linking)
- [Suporte do navegador](#browser-support)
- [Suporte para Node.js](#nodejs-support)
- [Segurança](#security)
- [Contribuição](#contributing)
- [Licenciamento](#licencing)
## Site oficial
[O site oficial do CyberChef pode ser encontrado aqui][1] - divirta-se!
## Executar Localmente
Pode executar o CyberChef com Docker (sem necessidade de toolchain) ou compilá-lo a partir do código-fonte com Node.js.
### Com Docker
**Pré-requisitos**
- [Docker](https://www.docker.com/products/docker-desktop/)
- O Docker Desktop deve estar aberto e em execução na sua máquina
#### Opção 1: Compilar a Imagem Docker Você Mesmo
1. Compile a imagem docker
```bash
docker build --tag cyberchef --ulimit nofile=10000 .
```
2. Execute o contentor docker
```bash
docker run -it -p 8080:8080 cyberchef
```
3. Navegue até `http://localhost:8080` no seu navegador
#### Opção 2: Utilizar a Imagem Docker Pré-compilada
Se preferir evitar o processo de compilação, pode utilizar a imagem pré-compilada
```bash
docker run -it -p 8080:8080 ghcr.io/gchq/cyberchef:latest
```
Tal como antes, navegue até `http://localhost:8080` no seu navegador.
Esta imagem é compilada e publicada através dos nossos [GitHub Workflows](https://github.com/gchq/cyberchef/blob/master/.github/workflows/releases.yml).
### A partir do código-fonte
Se quiser desenvolver o CyberChef ou executá-lo sem Docker, pode compilá-lo diretamente com Node.js.
**Pré-requisitos**
- [Node.js](https://nodejs.org/) `v24` (consulte [Suporte para Node.js](#nodejs-support))
> [!NOTE]
> Pode utilizar o [nvm](https://github.com/nvm-sh/nvm) para gerir versões do Node.js e utilizar a versão de desenvolvimento atual em [este projeto](https://github.com/gchq/cyberchef/blob/master/.nvmrc) para evitar conflitos com outros projetos na sua máquina.
**Configuração**
```bash
git clone https://github.com/gchq/CyberChef.git
cd CyberChef
npm install
```
**Tarefas comuns**
| Comando | Descrição |
| --- | --- |
| `npm start` | Executa o servidor de desenvolvimento com recarga automática em `http://localhost:8080`. |
| `npm run build` | Produz uma compilação de produção no diretório `build/prod`. |
| `npm test` | Executa as suítes de testes do Node.js e das operações. |
| `npm run testui` | Executa os testes do navegador (UI). |
| `npm run lint` | Verifica o código de acordo com as regras de linting. |
| `npm run newop` | Cria uma nova operação através do script interativo de início rápido. |
Se encontrar um erro de falta de memória ao compilar receitas grandes, aumente o tamanho do heap do Node com `npm run setheapsize`.
## Como funciona
Existem quatro áreas principais no CyberChef:
1. A caixa **input** no canto superior direito, onde pode colar, escrever ou arrastar o texto ou ficheiro sobre o qual pretende operar.
2. A caixa **output** no canto inferior direito, onde o resultado do seu processamento será apresentado.
3. A lista de **operations** no extremo esquerdo, onde pode encontrar todas as operações que o CyberChef é capaz de realizar em listas categorizadas, ou através de pesquisa.
4. A área **recipe** no centro, onde pode arrastar as operações que pretende utilizar e especificar argumentos e opções.
Pode utilizar quantas operações quiser, de formas simples ou complexas. Alguns exemplos são:
- [Descodificar uma string codificada em Base64][2]
- [Converter uma data e hora para um fuso horário diferente][3]
- [Analisar um endereço IPv6 Teredo][4]
- [Converter dados de um hexdump e depois descomprimir][5]
- [Desencriptar e desmontar shellcode][6]
- [Apresentar múltiplos timestamps como datas completas][7]
- [Realizar diferentes operações em dados de diferentes tipos][8]
- [Utilizar partes do input como argumentos para operações][9]
- [Realizar a desencriptação AES, extraindo o IV do início do stream cifrado][10]
- [Uma forma mais simples de realizar a mesma desencriptação AES][13]
- [Detetar automaticamente várias camadas de codificação aninhada][12]
## Funcionalidades
- Arrastar e soltar
- As operações podem ser arrastadas para dentro e para fora da lista de receitas, ou reorganizadas.
- Ficheiros até 2GB podem ser arrastados para a caixa de input para serem carregados diretamente no navegador.
- Auto Bake
- Sempre que modifica o input ou a receita, o CyberChef fará automaticamente o "bake" por si e produzirá o output imediatamente.
- Isto pode ser desativado e operado manualmente se estiver a afetar o desempenho (se o input for muito grande, por exemplo).
- Deteção automática de codificação
- O CyberChef utiliza [várias técnicas](https://github.com/gchq/CyberChef/wiki/Automatic-detection-of-encoded-data-using-CyberChef-Magic) para tentar detetar automaticamente em que codificações os seus dados se encontram. Se encontrar uma operação adequada que dê sentido aos seus dados, apresenta o ícone 'magic' no campo Output, no qual pode clicar para descodificar os seus dados.
- Breakpoints
- Pode definir breakpoints em qualquer operação da sua receita para pausar a execução antes de a executar.
- Também pode percorrer a receita operação a operação para ver o aspeto dos dados em cada fase.
- Guardar e carregar receitas
- Se criar uma receita fantástica que saiba que vai querer utilizar novamente, basta clicar em "Save recipe" e adicioná-la ao seu armazenamento local. Estará à sua espera na próxima vez que visitar o CyberChef.
- Também pode copiar o URL, que inclui a sua receita e o input, para o partilhar facilmente com outras pessoas.
- Pesquisa
- Se souber o nome da operação que pretende ou uma palavra associada a ela, comece a escrevê-la no campo de pesquisa e todas as operações correspondentes serão imediatamente apresentadas.
- Realce
- Quando realça texto no input ou no output, os valores de offset e length serão apresentados e, se possível, os dados correspondentes serão realçados no output ou no input, respetivamente (exemplo: [realce a palavra 'question' no input para ver onde aparece no output][11]).
- Guardar em ficheiro e carregar de ficheiro
- Pode guardar o output num ficheiro a qualquer momento ou carregar um ficheiro arrastando-o e soltando-o no campo de input. São suportados ficheiros até cerca de 2GB (dependendo do seu navegador); no entanto, algumas operações podem demorar muito tempo a executar sobre esta quantidade de dados.
- O CyberChef é totalmente client-side
- Deve notar-se que nenhuma da sua configuração de receita ou input (quer sejam textos ou ficheiros) é alguma vez enviada para o servidor web do CyberChef - todo o processamento é realizado dentro do seu navegador, no seu próprio computador.
- Devido a esta funcionalidade, o CyberChef pode ser descarregado e executado localmente. Pode utilizar o link no canto superior esquerdo da aplicação para descarregar uma cópia completa do CyberChef e colocá-la numa máquina virtual, partilhá-la com outras pessoas, ou alojá-la numa rede fechada.
## Deep linking
Ao manipular o hash do URL do CyberChef, pode alterar as definições iniciais com as quais a página abre.
O formato é `https://gchq.github.io/CyberChef/#recipe=Operation()&input=...`
Os argumentos suportados são `recipe`, `input` (codificado em Base64) e `theme`.
## Suporte do navegador
O CyberChef foi construído para suportar
- Google Chrome 50+
- Mozilla Firefox 38+
## Suporte para Node.js
O CyberChef foi construído para suportar totalmente o Node.js `v24` e também é testado contra o Node.js `v26` antes de se tornar a versão LTS ativa. Para mais informações, consulte a página wiki ["Node API"](https://github.com/gchq/CyberChef/wiki/Node-API)
## Segurança
Consulte a [política de segurança do CyberChef](https://github.com/gchq/cyberchef/blob/master/SECURITY.md).
## Contribuição
Contribuir com uma nova operação para o CyberChef é super fácil! O script de início rápido irá guiá-lo pelo processo. Se sabe escrever JavaScript básico, sabe escrever uma operação do CyberChef.
Um tutorial de instalação, guias de como adicionar novas operações e temas, descrições da estrutura do repositório, tipos de dados disponíveis e convenções de codificação podem ser encontrados na página wiki ["Contributing"](https://github.com/gchq/CyberChef/wiki/Contributing).
- Faça push das suas alterações para o seu fork.
- Submeta um pull request. Se estiver a fazer isto pela primeira vez, ser-lhe-á pedido que assine o [GCHQ Contributor Licence Agreement](https://cla-assistant.io/gchq/CyberChef) através do assistente de CLA no pull request. Isto também perguntará se concorda que a GCHQ o contacte sobre um gesto de agradecimento pela sua contribuição, ou sobre oportunidades de emprego na GCHQ.
## Licenciamento
O CyberChef é disponibilizado sob a [Licença Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0) e é abrangido pelo [Crown Copyright](https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/).
[1]: https://gchq.github.io/CyberChef
[2]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[3]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[4]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[5]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[6]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[7]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[8]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[9]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[10]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[11]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[12]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1
[13]: https://gchq.github.io/CyberChef/#recipe=From_Base64('A-Za-z0-9%2B/%3D',true)&input=VTI4Z2JHOXVaeUJoYm1RZ2RHaGhibXR6SUdadmNpQmhiR3dnZEdobElHWnBjMmd1