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
padding-oracle-attacker — 🔓 Ferramenta CLI e biblioteca para executar ataques de padding oracle facilmente, com suporte para requisições de rede concorrentes e uma interface elegante. | Kitploit
Ferramentas/GitHubGitHub/kishanbagaria/padding-oracle-attacker
Ferramentas de Criptografia/DescriptografiaExploraçãoExploração de Aplicações WebCriptografia
GitHubkishanbagaria/padding-oracle-attacker

padding-oracle-attacker

🔓 Ferramenta CLI e biblioteca para executar ataques de padding oracle facilmente, com suporte para requisições de rede concorrentes e uma interface elegante.

Ver Repositório

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
21632há 4 anosRevisado pelo Kitploit

padding-oracle-attacker

Ferramenta CLI e biblioteca para executar ataques de padding oracle facilmente, com suporte para requisições de rede concorrentes e uma interface elegante.

poattack demonstração de descriptografia

Build Status

Instalar

Certifique-se de que o Node.js está instalado e então execute

root@kitploit:~
$ npm install --global padding-oracle-attacker

ou

root@kitploit:~
$ yarn global add padding-oracle-attacker

Uso da CLI

root@kitploit:~
Usage
  $ padding-oracle-attacker decrypt <url> hex:<ciphertext_hex> <block_size> <error> [options]
  $ padding-oracle-attacker decrypt <url> b64:<ciphertext_b64> <block_size> <error> [options]

  $ padding-oracle-attacker encrypt <url> <plaintext>          <block_size> <error> [options]
  $ padding-oracle-attacker encrypt <url> hex:<plaintext_hex>  <block_size> <error> [options]

  $ padding-oracle-attacker analyze <url> [<block_size>] [options]

Commands
  decrypt                  Encontra o texto simples (foobar) para o texto cifrado fornecido (hex:0123abcd)
  encrypt                  Encontra o texto cifrado (hex:abcd1234) para o texto simples fornecido (foo=bar)
  analyze                  Ajuda a descobrir se a URL é vulnerável ou não, e
                           como a resposta difere quando ocorre um erro de descriptografia
                           (para o argumento <error>)

Arguments
  <url>                    URL a atacar. O payload será inserido no final por padrão. Para especificar
                           um ponto de injeção personalizado, inclua {POPAYLOAD} em um cabeçalho (-H),
                           corpo da requisição (-d) ou na URL
  <block_size>             Tamanho do bloco usado pelo algoritmo de criptografia no servidor
  <error>                  A string presente na resposta quando a descriptografia falha no servidor.
                           Especifique uma string presente no corpo da resposta HTTP (como PaddingException)
                           ou o código de status da resposta HTTP (como 400)

Options
  -c, --concurrency        Requisições a serem enviadas simultaneamente                      [padrão: 128]
      --disable-cache      Desabilitar cache de rede. Salvo em                               [padrão: false]
                           poattack-cache.json.gz.txt por padrão
  -X, --method             Método HTTP a ser usado ao fazer a requisição                     [padrão: GET]
  -H, --header             Cabeçalhos a serem enviados com a requisição.
                             -H 'Cookie: cookie1' -H 'User-Agent: Googlebot/2.1'
  -d, --data               Corpo da requisição.
                             String JSON: {"id": 101, "foo": "bar"}
                             Codificado em URL: id=101&foo=bar
                           Certifique-se de especificar o cabeçalho Content-Type.

  -e, --payload-encoding   Codificação do payload do texto cifrado para {POPAYLOAD}           [padrão: hex]
                             base64          FooBar+/=
                             base64-urlsafe  FooBar-_
                             hex             deadbeef
                             hex-uppercase   DEADBEEF
                             base64(xyz)     base64 personalizado ('xyz' representam os caracteres para '+/=')

  --dont-urlencode-payload Não codificar {POPAYLOAD} na URL                                  [padrão: false]

  --start-from-1st-block   Iniciar o processamento a partir do primeiro bloco em vez           [padrão: false]
                           do último (funciona apenas no modo decrypt)

Examples
  $ poattack decrypt http://localhost:2020/decrypt?ciphertext=
      hex:e3e70d8599206647dbc96952aaa209d75b4e3c494842aa1aa8931f51505df2a8a184e99501914312e2c50320835404e9
      16 400
  $ poattack encrypt http://localhost:2020/decrypt?ciphertext= "foo bar 🦄" 16 400
  $ poattack encrypt http://localhost:2020/decrypt?ciphertext= hex:666f6f2062617220f09fa684 16 400
  $ poattack analyze http://localhost:2020/decrypt?ciphertext=

Aliases
  poattack
  padding-oracle-attack

API da Biblioteca

root@kitploit:~
const { decrypt, encrypt } = require('padding-oracle-attacker')
// or
import { decrypt, encrypt } from 'padding-oracle-attacker'

const { blockCount, totalSize, foundBytes, interBytes } = await decrypt(options)

const { blockCount, totalSize, foundBytes, interBytes, finalRequest } = await encrypt(options)

decrypt(options: Object): Promise

encrypt(options: Object): Promise

Opções obrigatórias
url: string

URL a atacar. O payload será anexado ao final por padrão. Para especificar um ponto de injeção personalizado, inclua {POPAYLOAD} na URL, em um cabeçalho (requestOptions.headers) ou no corpo da requisição (requestOptions.data)

blockSize: number

Tamanho do bloco usado pelo algoritmo de criptografia no servidor.

isDecryptionSuccess: ({ statusCode, headers, body }) => boolean

Função que retorna true se a resposta do servidor indicar que a descriptografia foi bem-sucedida.

ciphertext: Buffer (apenas decrypt)

Texto cifrado a ser descriptografado.

plaintext: Buffer (apenas encrypt)

Texto simples a ser criptografado. O padding será adicionado automaticamente. Exemplo: Buffer.from('foo bar', 'utf8')


Opções opcionais
concurrency: number = 128

Requisições de rede a serem enviadas simultaneamente.

isCacheEnabled: boolean = true

As respostas são armazenadas em cache por padrão e salvas em poattack-cache.json.gz.txt. Defina como false para desabilitar o cache.

requestOptions: { method, headers, data }
requestOptions.method: string

Método HTTP a ser usado ao fazer a requisição. GET por padrão. POST, PUT, DELETE são algumas opções válidas.

requestOptions.headers: { string: string }

Cabeçalhos a serem enviados com a requisição. Exemplo: { 'Content-Type': 'application/x-www-form-urlencoded' }

requestOptions.body: string

Corpo da requisição. Pode ser uma string JSON, parâmetros codificados em URL, etc. O cabeçalho Content-Type deve ser definido manualmente.

logMode: 'full'|'minimal'|'none' = 'full'

full: Registra tudo no console (padrão)
minimal: Registra apenas após o início e a conclusão no console
none: Não registra nada no console

transformPayload: (ciphertext: Buffer) => string

Função para converter o ciphertext em uma string ao fazer uma requisição. Por padrão, o ciphertext é codificado em hex e inserido no ponto de injeção (final da URL, a menos que {POPAYLOAD} esteja presente).


Opções opcionais (apenas decrypt)
alreadyFound: Buffer

Bytes de texto simples já conhecidos/encontrados que podem ser ignorados (a partir do final). Se você fornecer um Buffer de dez bytes, os últimos dez bytes serão ignorados.

initFirstPayloadBlockWithOrigBytes: boolean = false

Inicializar o primeiro bloco de payload com os bytes originais do ciphertext em vez de zeros.
Exemplo: abcdef12345678ff 1111111111111111 em vez de 00000000000000ff 1111111111111111

startFromFirstBlock: boolean = false

Iniciar o processamento a partir do primeiro bloco em vez do último.

makeInitialRequest: boolean = true

Fazer uma requisição inicial com o ciphertext original fornecido e registrar a resposta do servidor no console para permitir que o usuário verifique se as requisições de rede estão sendo enviadas corretamente.


Opções opcionais (apenas encrypt)
makeFinalRequest: boolean = true

Após encontrar os bytes do ciphertext para o novo plaintext, fazer uma requisição final com os bytes encontrados e registrar a resposta do servidor no console.

lastCiphertextBlock: Buffer

Texto cifrado personalizado para o último bloco. O último bloco é apenas zeros por padrão (000000000000000).

Desenvolvendo

padding-oracle-attacker é escrito em TypeScript. Se você deseja modificar os arquivos fonte e executá-los, pode compilar os arquivos para JS primeiro e executá-los usando o node, ou usar o ts-node.
Exemplo: yarn build e depois node dist/cli ... ou simplesmente ts-node src/cli ...

yarn build ou npm run build

Compila os arquivos TypeScript dentro do diretório src para arquivos JS e os envia para o diretório dist.

yarn clean ou npm run clean

Exclui o diretório dist.

yarn lint ou npm run lint

Analisa os arquivos usando o eslint.

yarn test ou npm run test

Analisa e executa os testes usando o ava.

node test/helpers/vulnerable-server.js

Executa o servidor de teste que é vulnerável a ataques de padding oracle em http://localhost:2020

Relacionados

  • PadBuster (Perl)
  • Padding Oracle Attack (Python)
  • python-paddingoracle (Python)
  • Poracle (Ruby)
  • GoPaddy (Go)
  • pax (Go)
  • padre (Go)
  • Padantic (Rust)
  • Padoracle (JavaScript)

Licença

MIT © Kishan Bagaria

Baixar ferramenta