
Extrair e descriptografar dados do navegador, suportando vários tipos de dados, executável em diversos sistemas operacionais (macOS, Windows, Linux).
<div align="center">
<img src="https://assets.kitploit.com/production/public/readmes/404/f0b8746a193b0f91cfb4fecc354ac19984c7d39a273c210c5591d6af6a972298.png" alt="hack-browser-data logo" width="440px" />
</div>
# HackBrowserData
[](https://github.com/moonD4rk/HackBrowserData/actions/workflows/lint.yml) [](https://github.com/moonD4rk/HackBrowserData/actions/workflows/build.yml) [](https://github.com/moonD4rk/HackBrowserData/actions/workflows/release.yml) [](https://github.com/moonD4rk/HackBrowserData/actions/workflows/test.yml) [](https://codecov.io/gh/moonD4rk/HackBrowserData)
`HackBrowserData` é uma ferramenta de linha de comando para descriptografar e exportar dados do navegador (senhas, histórico, cookies, favoritos, cartões de crédito, histórico de downloads, localStorage, sessionStorage e extensões) a partir do navegador. Ela oferece suporte aos navegadores baseados em Chromium mais populares e ao Firefox no Windows, macOS e Linux, além do Safari no macOS.
Ela também pode descriptografar dados **entre máquinas e sistemas operacionais**: exporte as chaves mestras no host de origem e depois descriptografe uma cópia dos dados offline em qualquer outro host — mesmo para um navegador que o sistema operacional do host do analista não consegue executar (consulte [Descriptografia entre hosts](#cross-host-decryption)).
> Aviso legal: Esta ferramenta destina-se apenas a pesquisa de segurança. Os usuários são responsáveis por todas as responsabilidades legais e relacionadas decorrentes do uso desta ferramenta. O autor original não assume qualquer responsabilidade legal.
## Categorias de Dados Suportadas
| Categoria | Baseados em Chromium | Firefox | Safari |
|:---------------|:--------------:|:-------:|:------:|
| Senha | ✅ | ✅ | ✅ |
| Cookie | ✅ | ✅ | ✅ |
| Favorito | ✅ | ✅ | ✅ |
| Histórico | ✅ | ✅ | ✅ |
| Download | ✅ | ✅ | ✅ |
| Cartão de Crédito | ✅ | - | - |
| Extensão | ✅ | ✅ | ✅ |
| LocalStorage | ✅ | ✅ | ✅ |
| SessionStorage | ✅ | - | - |
## Navegadores Suportados
> No macOS, alguns navegadores baseados em Chromium **exigem a senha do usuário atual** para descriptografar.
>
> A descriptografia de senhas pode falhar no macOS 26.4 ou posterior.
| Navegador | Windows | macOS | Linux |
|:---------------|:-------:|:-----:|:-----:|
| Chrome | ✅² | ✅ | ✅ |
| Chrome Beta | ✅² | ✅ | ✅ |
| Chromium | ✅ | ✅ | ✅ |
| Edge | ✅² | ✅ | ✅ |
| Brave | ✅² | ✅ | ✅ |
| Opera | ✅ | ✅ | ✅ |
| OperaGX | ✅ | ✅ | - |
| Vivaldi | ✅ | ✅ | ✅ |
| Yandex | ✅ | ✅ | - |
| CocCoc | ✅² | ✅ | - |
| Arc | ✅ | ✅ | - |
| DuckDuckGo³ | ✅ | - | - |
| Navegador da Vought³ | ✅ | - | - |
| QQ³ | ✅ | - | - |
| 360 Speed X³ | ✅ | - | - |
| 360 Speed³ | ✅ | - | - |
| DC³ | ✅ | - | - |
| Sogou³ | ✅ | - | - |
| Firefox | ✅ | ✅ | ✅ |
| Safari¹ | - | ✅ | - |
> ¹ O Safari requer Acesso Total ao Disco; ative-o em Ajustes do Sistema → Privacidade e Segurança → Acesso Total ao Disco se a extração retornar resultados vazios.
>
> ² No Windows, a descriptografia de cookies do Chromium 127+ (Chrome / Chrome Beta / Edge / Brave / CocCoc) requer o payload de App-Bound Encryption criado via `make build-windows` — consulte [Compilando a partir do código-fonte](#building-from-source) abaixo.
>
> ³ Esses navegadores existem apenas no Windows, mas seus dados são **descriptografáveis em qualquer SO**: extraia os arquivos com `archive`, exporte as chaves com `dumpkeys` e então descriptografe no macOS ou Linux com `restore` — consulte [Descriptografia entre hosts](#cross-host-decryption).
## Primeiros Passos
### Instalação
A instalação do `HackBrowserData` é muito simples, basta baixar [a versão para o seu sistema](https://github.com/moonD4rk/HackBrowserData/releases) e executar o binário.
> Em algumas situações, esta ferramenta de segurança será tratada como vírus pelo Windows Defender ou por outros softwares antivírus e não poderá ser executada. O código é totalmente open source, você pode modificá-lo e compilá-lo por conta própria.
### Compilando a partir do código-fonte
Requer `Go 1.20+`.
```bash
git clone https://github.com/moonD4rk/HackBrowserData
cd HackBrowserData
go build ./cmd/hack-browser-data/
```
#### Compilação multiplataforma
```bash
# For Windows (standard build, no Chromium 127+ ABE cookie support)
GOOS=windows GOARCH=amd64 go build ./cmd/hack-browser-data/
# For Linux
GOOS=linux GOARCH=amd64 go build ./cmd/hack-browser-data/
```
#### Build no Windows com App-Bound Encryption (opcional)
Chrome / Chrome Beta / Edge / Brave / CocCoc 127+ protegem os cookies com App-Bound Encryption. A descriptografia desses cookies requer um pequeno payload em C — [Zig](https://ziglang.org/) (0.13+) é a toolchain C recomendada (o Makefile chama `zig cc`). O `gcc` do MinGW-w64 também pode compilar os fontes manualmente se você contornar o `make payload`.
```bash
# 1. Install Zig
brew install zig # macOS
scoop install zig # Windows (scoop)
# or download from https://ziglang.org/download/
# 2. Build the payload (outputs internal/abe/payload/abe_extractor_amd64.bin)
make payload
# 3. Build hack-browser-data.exe with the ABE payload embedded
make build-windows
```
O `hack-browser-data.exe` resultante inclui descriptografia completa de cookies ABE no Chromium 127+.
## Uso
```
$ hack-browser-data -h
hack-browser-data decrypts and exports browser data from Chromium-based
browsers, Firefox, and Safari on Windows, macOS, and Linux.
GitHub: https://github.com/moonD4rk/HackBrowserData
Usage:
hack-browser-data [flags]
hack-browser-data [command]
Available Commands:
archive Pack decryption-relevant profile files into a zip for cross-host restore
dump Extract and decrypt browser data (default command)
dumpkeys Export Chromium master keys as JSON for cross-host decryption
help Help about any command
list List detected browsers and profiles
restore Decrypt copied profile data using exported master keys
version Print version information
Flags:
-b, --browser string target browser: all|chrome|firefox|edge|... (default "all")
-c, --category string data categories (comma-separated): all|password,cookie,... (default "all")
-d, --dir string output directory (default "results")
-f, --format string output format: csv|json|cookie-editor (default "json")
-h, --help help for hack-browser-data
--keychain-pw string macOS keychain password (visible in ps and shell history)
--keychain-pw-stdin read the macOS keychain password from the first line of stdin
-p, --profile-path string custom profile dir path, get with chrome://version
-v, --verbose enable debug logging
--zip compress output to zip
Use "hack-browser-data [command] --help" for more information about a command.
```
### `dump` - Extrair e descriptografar dados do navegador (padrão)
Executar `hack-browser-data` sem um subcomando usa `dump` por padrão.
| Flag | Curta | Padrão | Descrição |
|------------------|-------|-----------|--------------------------------------------------------------------------------------------------------------------------------------------|
| `--browser` | `-b` | `all` | Navegador alvo (all\|chrome\|firefox\|edge\|...) |
| `--category` | `-c` | `all` | Categorias de dados, separadas por vírgula (all\|password\|cookie\|bookmark\|history\|download\|creditcard\|extension\|localstorage\|sessionstorage) |
| `--format` | `-f` | `json` | Formato de saída (csv\|json\|cookie-editor) |
| `--dir` | `-d` | `results` | Diretório de saída |
| `--profile-path` | `-p` | | Caminho personalizado do diretório de perfil, obtenha com chrome://version |
| `--keychain-pw` | | | Senha do keychain do macOS (visível em `ps` e no histórico do shell) |
| `--keychain-pw-stdin` | | | Lê a senha do keychain do macOS a partir da primeira linha do stdin |
| `--zip` | | `false` | Compacta a saída em zip |
> `--format cookie-editor` grava os cookies como um array JSON compatível com o formato de importação da extensão de navegador Cookie-Editor; todas as outras categorias são gravadas exatamente como o formato `json` as grava.
### Descriptografia entre hosts
Descriptografe dados do navegador em um **host de análise** que foram coletados em um **host de origem** diferente — incluindo um navegador cujo motor o sistema operacional do analista nem consegue instalar (por exemplo, descriptografar dados do Sogou ou QQ Browser no macOS). Nada vinculado à plataforma (DPAPI, macOS Keychain, Chrome App-Bound Encryption) precisa sair da origem: as chaves mestras são exportadas uma vez, e a descriptografia então é executada inteiramente offline a partir de uma cópia dos dados.
O fluxo de trabalho usa três comandos e dois artefatos transportáveis:
| Etapa | Host | Comando | Produz |
|-------|------|---------|--------|
| 1 | origem | `dumpkeys` | `keys.json` — chaves mestras portáveis |
| 2 | origem | `archive` | `browser-data.zip` — apenas os arquivos necessários para descriptografar |
| 3 | analista | `restore` | saída descriptografada (csv / json / cookie-editor) |
```bash
# On the origin host (any OS) — export the keys and pack the data
hack-browser-data dumpkeys -o keys.json
hack-browser-data archive -o browser-data.zip
# Copy keys.json + browser-data.zip to the analyst host, then decrypt offline
hack-browser-data restore --keys keys.json --data-zip browser-data.zip
```
> `keys.json` contém chaves mestras em texto simples — trate-o como um segredo. `dumpkeys -o` grava-o com permissões `0600`; prefira transmiti-lo por streaming através de um canal seguro em vez de o deixar no disco.
#### `dumpkeys` - Exportar chaves mestras para desencriptação entre hosts
Deriva as chaves mestras de cada instalação do Chromium no host de origem e grava-as como JSON (Firefox / Safari não têm chave portável e são ignorados). Por predefinição, escreve para stdout, para que possa ser encaminhado por pipe via SSH.
| Flag | Curta | Predefinição | Descrição |
|-----------------|-------|----------|-------------------------------------------------|
| `--browser` | `-b` | `all` | Navegador alvo (all\|chrome\|edge\|...) |
| `--output` | `-o` | *stdout* | Ficheiro de saída (gravado com `0600`); stdout se omitido |
| `--keychain-pw` | | | Palavra-passe do keychain do macOS (visível em `ps` / histórico) |
| `--keychain-pw-stdin` | | | Ler a palavra-passe do keychain a partir da primeira linha do stdin |
#### `archive` - Empacotar ficheiros relevantes para desencriptação para transporte
Recolhe apenas os ficheiros de que uma restauração realmente necessita (cookies, dados de login, histórico, …) através do mesmo mecanismo de contorno de ficheiros bloqueados usado na extração, para que os ficheiros SQLite em uso sejam lidos em segurança no Windows. O zip é estruturado como `<browser-key>/<User Data layout>`, para que um único arquivo possa transportar vários navegadores e a restauração permaneça inequívoca. Os nomes das entradas usam sempre barras normais, para que um arquivo produzido no Windows seja restaurado em macOS / Linux.
| Flag | Curta | Predefinição | Descrição |
|--------------|-------|--------------------|-----------------------------------------|
| `--browser` | `-b` | `all` | Navegador alvo (all\|chrome\|edge\|...) |
| `--category` | `-c` | `all` | Categorias de dados, separadas por vírgulas |
| `--output` | `-o` | `browser-data.zip` | Caminho do arquivo de saída |
#### `restore` - Desencriptar dados copiados com chaves exportadas
Reconstrói cada motor Chromium diretamente a partir de `keys.json` e desencripta os dados fornecidos — nunca consulta a tabela de navegadores local do analista, pelo que **os navegadores que pode restaurar são exatamente os cofres no seu `keys.json`**. Forneça os dados de uma de duas formas (exatamente uma é obrigatória):
- `--data-zip` — um zip produzido por `archive`; extraído para um diretório temporário e removido depois.
- `--data-dir` — um diretório. Ou o layout de `archive` (`<browser-key>/...`, vários navegadores de uma vez), ou a raiz `User Data` copiada manualmente de um navegador, que só é inequívoca para um único navegador — por isso combine-a com `-b`.
`-b` é um **filtro opcional** sobre os cofres do dump, não um seletor obrigatório.
| Flag | Curta | Predefinição | Descrição |
|--------------|-------|------------|------------------------------------------------------------|
| `--keys` | | *obrigatório* | Ficheiro de chaves de `dumpkeys` (use `-` para stdin) |
| `--data-zip` | | | Zip de `archive` (mutuamente exclusivo com `--data-dir`) |
| `--data-dir` | | | Diretório de dados copiado (mutuamente exclusivo com `--data-zip`) |
| `--browser` | `-b` | | Restaurar apenas este navegador; tem de corresponder a um cofre em `--keys` |
| `--category` | `-c` | `all` | Categorias de dados, separadas por vírgulas |
| `--format` | `-f` | `json` | Formato de saída (csv\|json\|cookie-editor) |
| `--dir` | `-d` | `results` | Diretório de saída |
| `--zip` | | `false` | Comprimir a saída para zip |
#### Exemplos entre hosts
```bash
# Stream keys over SSH (no keys.json on disk), data copied separately
ssh origin "hack-browser-data dumpkeys" | \
hack-browser-data restore --keys - --data-zip browser-data.zip
# Restore one browser from a hand-copied User Data folder (no archive)
hack-browser-data restore --keys keys.json --data-dir ./chrome-userdata -b chrome
```
### `list` - Lista navegadores e perfis detectados
| Flag | Padrão | Descrição |
|------------|---------|------------------------------------|
| `--detail` | `false` | Mostra contagem de entradas por categoria |
### `version` - Exibe informações da versão
```bash
hack-browser-data version
```
### Flags globais
| Flag | Curto | Descrição |
|-------------|-------|----------------------|
| `--verbose` | `-v` | Ativa o log de depuração |
### Exemplos
```bash
# Extract all data from all browsers (default)
hack-browser-data
# Extract specific browser and categories
hack-browser-data dump -b chrome -c password,cookie
# Export in CSV format to a custom directory (JSON is the default)
hack-browser-data dump -b chrome -f csv -d output
# Export cookies in CookieEditor format
hack-browser-data dump -f cookie-editor
# Compress output to zip
hack-browser-data dump --zip
# List detected browsers and profiles
hack-browser-data list
# List with per-category entry counts
hack-browser-data list --detail
# Use custom profile path
hack-browser-data dump -b chrome -p "/path/to/User Data/Default"
```
## Contribuindo
Acolhemos e agradecemos quaisquer contribuições feitas pela comunidade (issues/pull requests no GitHub, feedback por e-mail, etc.).
Por favor, consulte o [Guia de Contribuição](https://github.com/moond4rk/hackbrowserdata/blob/main/CONTRIBUTING.md) antes de contribuir.
## Contribuidores
<!-- readme: collaborators,contributors -start -->
<table>
<tbody>
<tr>
<td align="center">
<a href="https://github.com/moonD4rk">
<img src="https://assets.kitploit.com/production/public/readmes/404/44d0b68669e8e0dacd488e292509a2402ab1e3aeab453bae2a46e4da488901a3.jpg" width="100;" alt="moonD4rk"/>
<br />
<sub><b>Roger</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Aquilao">
<img src="https://assets.kitploit.com/production/public/readmes/404/94641790bc68653d5da842b0398599dd8e2a0a066993af6746404eb4b7d4b6f1.jpg" width="100;" alt="Aquilao"/>
<br />
<sub><b>Aquilao Official</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/uinfziuna8n">
<img src="https://assets.kitploit.com/production/public/readmes/404/91cadcfbf646473b0d2f0c963b1bb658fbd2a2caf0ad7fa7f0e26d33c1143666.png" width="100;" alt="uinfziuna8n"/>
<br />
<sub><b>uinfziuna8n</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/slimwang">
<img src="https://assets.kitploit.com/production/public/readmes/404/ae95f6647c3edd0d1f7ff9fb61a914a66ee0a79d0c36ded1ad12f3b2387a762d.jpg" width="100;" alt="slimwang"/>
<br />
<sub><b>slimwang</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/stevenlele">
<img src="https://assets.kitploit.com/production/public/readmes/404/78c1411a55b386a085c0ebb27d7715eaf2bc642e4be0cd28bcf2cb07ac47367a.png" width="100;" alt="stevenlele"/>
<br />
<sub><b>stevenlele</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/VMpc">
<img src="https://assets.kitploit.com/production/public/readmes/404/dedd1e0a8c3ba30979212c1d12206e07afed790b08d046de87708fbd62afdc65.jpg" width="100;" alt="VMpc"/>
<br />
<sub><b>Cyrus</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/camandel">
<img src="https://assets.kitploit.com/production/public/readmes/404/2cd6ad6f35039f82455b44c21138ef349f5c04726141d4abb6993626f1b5bf8a.png" width="100;" alt="camandel"/>
<br />
<sub><b>Carlo Mandelli</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/drogers0">
<img src="https://assets.kitploit.com/production/public/readmes/404/cc070e92e126f3e82d8831a9e0c26a511632b31b26897e7e98873be3387826c2/d1fedaac10be0a3fed3c75b25f73f446bf14d3697062f00e74f00ad09a251d6c-display-v1.webp" width="100;" alt="drogers0"/>
<br />
<sub><b>David Rogers</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/ac0d3r">
<img src="https://assets.kitploit.com/production/public/readmes/404/831a1177ca39196573915e9c432e99c23e4a2fe8395bb4a8c6fe5dce99854644.png" width="100;" alt="ac0d3r"/>
<br />
<sub><b>zznQ</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/slark-yuxj">
<img src="https://assets.kitploit.com/production/public/readmes/404/de8491ad2c9b6f3c864e0184cc8d98a73d89e27e2d5eb259a0d91302ba774c42.jpg" width="100;" alt="slark-yuxj"/>
<br />
<sub><b>YuXJ</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/mybonesaremorepowerful92">
<img src="https://assets.kitploit.com/production/public/readmes/404/0e1b00010603bbae39e5aee07788ae636770e32d571f2726a49c51ca333365dd/d527459a5c44c9cc7fde2e1e1adc43a70cd42703d531f18baf950266866cd762-display-v1.webp" width="100;" alt="mybonesaremorepowerful92"/>
<br />
<sub><b>mybonesaremorepowerful92</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/mirefly">
<img src="https://assets.kitploit.com/production/public/readmes/404/9bd36661156b3f531d5b703596cbfc1164891fca3f2ce2d2c2b1a4e991328ce7.jpg" width="100;" alt="mirefly"/>
<br />
<sub><b>mirefly</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/lc6464">
<img src="https://assets.kitploit.com/production/public/readmes/404/e8c2be1d51a2644bc333d057e60a35e6d8934cfac93081250f0e681c1fc2cba1.png" width="100;" alt="lc6464"/>
<br />
<sub><b>LC</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/zhe6652">
<img src="https://assets.kitploit.com/production/public/readmes/404/d140e8c8234378ec844df52df91d4684fd9532ea60ce1e563de052b88e594251.jpg" width="100;" alt="zhe6652"/>
<br />
<sub><b>zhe6652</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/testwill">
<img src="https://assets.kitploit.com/production/public/readmes/404/434c861151e222816c115a471ac69636528d4818c27ef8a58e9265334df234fc.jpg" width="100;" alt="testwill"/>
<br />
<sub><b>guoguangwu</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/freddy77">
<img src="https://assets.kitploit.com/production/public/readmes/404/7b1b900b3204a0b52e1562ca4bbcd8307956cb69b75933a0569a79632a4c9219/3acfc56deea3590632895be65ed7dbe2c522ccdacfe78e209a154199151d173d-display-v1.webp" width="100;" alt="freddy77"/>
<br />
<sub><b>freddy77</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/BeichenDream">
<img src="https://assets.kitploit.com/production/public/readmes/404/df06578b09534ec480577ee1dc43228a1ff97b6216bc35b5b263681e664675de.jpg" width="100;" alt="BeichenDream"/>
<br />
<sub><b>beichen</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/SantiiRepair">
<img src="https://assets.kitploit.com/production/public/readmes/404/994c94cf7c8e36255a9924bd64292483aea59ead9aa2c049cc9f1bc4bd186d32.jpg" width="100;" alt="SantiiRepair"/>
<br />
<sub><b>Santiago Ramirez</b></sub>
</a>
</td>
</tr>
<tr>
<td align="center">
<a href="https://github.com/DUptain1993">
<img src="https://assets.kitploit.com/production/public/readmes/404/3066e87f21c2f95b3316654abab33de2ce3ec4deb54fb300477e35ff19c9395e/4f2b5f09768195f558d4d17c127436f4efaecdf96ce4fe8c4669a5b36c411735-display-v1.webp" width="100;" alt="DUptain1993"/>
<br />
<sub><b>Daniel Uptain </b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/dexhek">
<img src="https://assets.kitploit.com/production/public/readmes/404/af461a29481d3b1faa89114b694c25ab7ff660bb717f7cedc2f163b9f761d348.jpg" width="100;" alt="dexhek"/>
<br />
<sub><b>Ciprian Conache</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/a-urth">
<img src="https://assets.kitploit.com/production/public/readmes/404/a36446eee23860c2470f068797747137fd30478b8c8caaa95cbc3f0804b91742.png" width="100;" alt="a-urth"/>
<br />
<sub><b>a-urth</b></sub>
</a>
</td>
<td align="center">
<a href="https://github.com/Amir-78">
<img src="https://assets.kitploit.com/production/public/readmes/404/97299a4d15c940a8addde4166c4448529efd16521a3aa2a900fb1413c2606990.png" width="100;" alt="Amir-78"/>
<br />
<sub><b>Amir.</b></sub>
</a>
</td>
</tr>
<tbody>
</table>
<!-- readme: collaborators,contributors -end -->
## Stargazers ao longo do tempo
[](https://github.com/moond4rk/HackBrowserData)
## 404StarLink 2.0 - Galaxy
`HackBrowserData` faz parte do 404Team [StarLink-Galaxy](https://github.com/knownsec/404StarLink2.0-Galaxy); se você tiver alguma dúvida sobre o `HackBrowserData` ou quiser encontrar um parceiro para se comunicar, consulte o [grupo Starlink](https://github.com/knownsec/404StarLink2.0-Galaxy#community).
<a href="https://github.com/knownsec/404StarLink2.0-Galaxy" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/404/94f6cf110c996c1a92deed0930ecd46e3390562ce9a6e52cfb2526dab6b0c851.png" align="middle"/></a>
## Licenças de SO da JetBrains
`HackBrowserData` vem sendo desenvolvido com a IDE `GoLand` sob a(s) **licença(s) de código aberto gratuita(s) da JetBrains** concedida(s) pela JetBrains s.r.o., portanto gostaria de expressar meus agradecimentos aqui.
<a href="https://www.jetbrains.com/?from=HackBrowserData" target="_blank"><img src="https://assets.kitploit.com/production/public/readmes/404/2612ef311d28a9e5b5f4fad1ba4ed0c9b37f8ba6803c384f92e5c6bbe1d7f4f8.png" width="256" align="middle"/></a>