2 releases

0.1.2 Feb 2, 2025
0.1.1 Feb 2, 2025

#904 in Command line utilities

Download history 208/week @ 2025-02-02

208 downloads per month

GPL-3.0-only

155KB
4.5K SLoC

Unkr

unkr is a tool made to decrypt/encrypt using combinations of old school algorithms.

For decryptions I am also developing a bruteforce command.

See examples in documentation. (this README.md is used for tracking progress).

Use Cases

  • cargo run -- bruteforce --string STRING --clue clue --clue clue2
  • use enhanced / encrypt methods when useful
    • cargo run -- encrypt --string HELLOHELLO -- cut:5 vigenere:KEY:ALPHABET transpose:12 swap:0:5:6:4:2:3:1
  • unkr decryptor <decryptor> shows doc for decryptor
  • unkr bruteforce --clues-file ./words
  • unkr bruteforce-combination --clue clue --string string -- permute:4 vigenere:2:3

https://kryptosfan.wordpress.com/k3/k3-solution-3/ http://kryptools.com/hints.htm

Caching

  • save combinations in the form ./md5string/md5clues/{hits,done}:
    • hits file line vigenere:ABC:DEF join;RESULT
    • done file line vigenere join cut;vigenere:3:3 (only applying params)
    • (always save in done)
  • partial cache
    • Partial BruteForce
      • First I do Permute length=3, then length=5 -> cache applies
    • Partial Checkpoint
      • When using Ctrl + C, write all current permutations to cache as vigenere join cut;vigenere:3:3;partial vigenere:ABC:ALPHABET join cut:3
    • vigenere join cut;vigenere:3:3

Perf

TODO

  • combinator.rs
    • clue,clue2 1,2
  • cryptors
    • fold
    • enigma
      • echo HELLOTEST | cargo run -- decrypt -- enigma:B::I:0:II:0:III:0
    • indexcrypt
    • vigenere
      • next impl
    • asciimorse?
    • permutations
  • cut message in parts
  • print better results (with values)
  • finish deserialization for cryptors
  • document shit
  • harmonize method names
  • fix test method names
  • perfs monitoring
  • multithreading
  • profiling
  • when a thread is done, reallocate from another
  • move to get_next
  • read from stdin by default
    • encrypt
    • decrypt
  • always test:
    • all cryptors encrypt(decrypt())
    • all cryptors readable
  • decryptors docs
  • bruteforce finishers?
    • colors
    • join
    • bold
  • useless combination (join join)
  • NumberArgs -> usize
  • Division dispatcher threads
  • remove join?
  • ASD coin
  • numbers in chars ??
  • fuzzer rules in CLI params
  • use EnumIter everywhere ?
  • https://github.com/ashvardanian/StringZilla

Dependencies

~6–15MB
~198K SLoC