Crate basecracker

Source
Expand description

§BaseCracker

Build codecov

BaseCracker is a tool to encode, decode and crack encoded data. It can be really useful to crack some random encoded strings in CTFs.

[!IMPORTANT] Archived because Ciphey is already way better for this…

§Installation

From crates.io:

cargo install basecracker

§Current supported encodings

  • base2 / binary (padded by 8)
  • base10 / decimal
  • hexadecimal
  • base32 (RFC4648)
  • base36
  • base58
  • base62
  • base64
  • base85

§Options

Encode, Decode and Crack encoded data, useful to crack some random encoded strings in CTFs.

Usage: basecracker [OPTIONS] <COMMAND>

Commands:
  encode  Encode given plaintext/file using the specified bases
  decode  Decode given cipher/file using the specified bases
  crack   Crack given cipher/file
  help    Print this message or the help of the given subcommand(s)

Options:
  -q, --quiet
          Quiet mode, don't print anything except results
  -v, --verbose
          Verbose mode
  -m, --min-printable-percentage <MIN_PRINTABLE_PERCENTAGE>
          Minimum printable percentage to consider a result valid [default: 0.9]
  -n, --no-newline
          Do not output the trailing newline
  -h, --help
          Print help
  -V, --version
          Print version

§Example

$ basecracker encode "Awsome CTF tool" b64,b85,hex,b32,b62,b58
2eSHB3WFgFiySPWP47oyrMrT6Vb4WXTEv5ZyWdmWWJNJ4H65n2auRW4ZFutQPtXegrNimoCAeUfiQwMAnb4UYg6grcK2WUCTL9LquGa4564JBJK2jAbRfPVjKx9sCgUVdrsUfyMuMR6MipKYERRr
$ basecracker decode 2eSHB3WFgFiySPWP47oyrMrT6Vb4WXTEv5ZyWdmWWJNJ4H65n2auRW4ZFutQPtXegrNimoCAeUfiQwMAnb4UYg6grcK2WUCTL9LquGa4564JBJK2jAbRfPVjKx9sCgUVdrsUfyMuMR6MipKYERRr b64,b85,hex,b32,b62,b58 -r
Awsome CTF tool
$ basecracker crack 2eSHB3WFgFiySPWP47oyrMrT6Vb4WXTEv5ZyWdmWWJNJ4H65n2auRW4ZFutQPtXegrNimoCAeUfiQwMAnb4UYg6grcK2WUCTL9LquGa4564JBJK2jAbRfPVjKx9sCgUVdrsUfyMuMR6MipKYERRr
Recipe: base58,base62,base32,hex,base85,base64
Awsome CTF tool

§Verbose mode

Useful if you want to see the steps of encoding/decoding/cracking

$ basecracker -v crack 2eSHB3WFgFiySPWP47oyrMrT6Vb4WXTEv5ZyWdmWWJNJ4H65n2auRW4ZFutQPtXegrNimoCAeUfiQwMAnb4UYg6grcK2WUCTL9LquGa4564JBJK2jAbRf
PVjKx9sCgUVdrsUfyMuMR6MipKYERRr
Recipe: base58,base62,base32,hex,base85,base64
Applying base58:  9Y91a8AfMC1fYZFb6THWx0VBVu1R6BPhFsVhmAksMcKNLIibCXXnDGACS9woBiiuUhmwYgcEHrO4ZjPlvMVUTBxuOkLovyLgGTL2MOCZml9y
Applying base62:  GUYTIMZUMQ2TMNZQGU3DMYZXGA3TMNTGGRSTMYRXGY2TQNTGGUYTMNRVG43DINTCGU3DMYZXGA3WEMRV
Applying base32:  51434d5670566c70766f4e6b76586f516657646b566c707b25
Applying hex:     QCMVpVlpvoNkvXoQfWdkVlp{%
Applying base85:  QXdzb21lIENURiB0b29s
Applying base64:  Awsome CTF tool

Awsome CTF tool

§License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

§Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Structs§

BaseMetadata
Base Metadata. It contains the name, short name, base, and padding of a base.
CrackData
Crack data.

Enums§

BaseError
Errors that can occur while getting a base.
DecodeError
Errors that can occur while decoding.

Traits§

Base
A base encoding/decoding module.

Functions§

crack
Cracks the given ciphertext using the specified bases and return the result as a tree of steps.
crack_round
Iterates over the given bases and generates a tree of all possible combinations of good bases.
decode
Decodes the given ciphertext using the specified bases and return the result as a vector of steps. E.g. (ciphertext, step1, step2, …, plaintext)
encode
Encodes the given plaintext using the specified bases and return the result as a vector of steps. E.g. (plaintext, step1, step2, …, ciphertext)
get_base_from_name
Get a base from its name or short name.
get_bases
Get a list of all defined bases.
get_bases_from_names
Get a list of bases from a list of names or short names.
get_bases_names
Get a list of all defined bases’ names and short names.
get_recipe
Returns the base sequence of the given node including itself, until the root node.

Type Aliases§

CrackNode
Crack node.
CrackTree
Crack tree.