ciphr: CLI crypto swiss-army knife

in #crypto6 years ago

Ciphr

Ciphr  is a CLI tool for performing and composing encoding, decoding,  encryption, decryption, hashing, and other various operations on streams  of data. It takes provided data, file data, or data from stdin, and  executes a pipeline of functions on the data stream, writing the  resulting data to stdout. It was designed primarily for use in the  information security domain, mostly for quick or casual data  manipulation for forensics,  penetration testing, or capture-the-flag events; it likely could have  other unforeseen uses, but should be presumed to be an experimental toy  as no effort was made to make included cryptographic functions robust  against attacks (timing attacks, etc), and it is recommended not to use  any included functions in any online security mechanisms.

Installation

gem install ciphr

Usage

$ ciphr -v -h
Usage: ciphr [options] [spec]
   -h, --help
   -v, --verbose
   -n, --no-newline
   -N, --newline
   -x, --xargs-mode
   -0, --null
Available Functions: aliases ([args])
 md4 (input)
 md5 (input)
 sha (input)
 sha1 (input)
 sha224 (input)
 sha256 (input)
 sha384 (input)
 sha512 (input)
 hmac-md4, hmacmd4 (input, key)
 hmac-md5, hmacmd5 (input, key)
 hmac-sha, hmacsha (input, key)
 hmac-sha1, hmacsha1 (input, key)
 hmac-sha224, hmacsha224 (input, key)
 hmac-sha256, hmacsha256 (input, key)
 hmac-sha384, hmacsha384 (input, key)
 hmac-sha512, hmacsha512 (input, key)
 aes-128-cbc, aes128cbc (input, key)
 aes-128-cbc-hmac-sha1, aes128cbchmacsha1 (input, key)
 aes-128-cbc-hmac-sha256, aes128cbchmacsha256 (input, key)
 aes-128-cfb, aes128cfb (input, key)
 aes-128-cfb1, aes128cfb1 (input, key)
 aes-128-cfb8, aes128cfb8 (input, key)
 aes-128-ctr, aes128ctr (input, key)
 aes-128-ecb, aes128ecb (input, key)
 aes-128-ofb, aes128ofb (input, key)
 aes-128-xts, aes128xts (input, key)
 aes-192-cbc, aes192cbc (input, key)
 aes-192-cfb, aes192cfb (input, key)
 aes-192-cfb1, aes192cfb1 (input, key)
 aes-192-cfb8, aes192cfb8 (input, key)
 aes-192-ctr, aes192ctr (input, key)
 aes-192-ecb, aes192ecb (input, key)
 aes-192-ofb, aes192ofb (input, key)
 aes-256-cbc, aes256cbc (input, key)
 aes-256-cbc-hmac-sha1, aes256cbchmacsha1 (input, key)
 aes-256-cbc-hmac-sha256, aes256cbchmacsha256 (input, key)
 aes-256-cfb, aes256cfb (input, key)
 aes-256-cfb1, aes256cfb1 (input, key)
 aes-256-cfb8, aes256cfb8 (input, key)
 aes-256-ctr, aes256ctr (input, key)
 aes-256-ecb, aes256ecb (input, key)
 aes-256-ofb, aes256ofb (input, key)
 aes-256-xts, aes256xts (input, key)
 aes128 (input, key)
 aes192 (input, key)
 aes256 (input, key)
 bf (input, key)
 bf-cbc, bfcbc (input, key)
 bf-cfb, bfcfb (input, key)
 bf-ecb, bfecb (input, key)
 bf-ofb, bfofb (input, key)
 camellia-128-cbc, camellia128cbc (input, key)
 camellia-128-cfb, camellia128cfb (input, key)
 camellia-128-cfb1, camellia128cfb1 (input, key)
 camellia-128-cfb8, camellia128cfb8 (input, key)
 camellia-128-ecb, camellia128ecb (input, key)
 camellia-128-ofb, camellia128ofb (input, key)
 camellia-192-cbc, camellia192cbc (input, key)
 camellia-192-cfb, camellia192cfb (input, key)
 camellia-192-cfb1, camellia192cfb1 (input, key)
 camellia-192-cfb8, camellia192cfb8 (input, key)
 camellia-192-ecb, camellia192ecb (input, key)
 camellia-192-ofb, camellia192ofb (input, key)
 camellia-256-cbc, camellia256cbc (input, key)
 camellia-256-cfb, camellia256cfb (input, key)
 camellia-256-cfb1, camellia256cfb1 (input, key)
 camellia-256-cfb8, camellia256cfb8 (input, key)
 camellia-256-ecb, camellia256ecb (input, key)
 camellia-256-ofb, camellia256ofb (input, key)
 camellia128 (input, key)
 camellia192 (input, key)
 camellia256 (input, key)
 cast (input, key)
 cast-cbc, castcbc (input, key)
 cast5-cbc, cast5cbc (input, key)
 cast5-cfb, cast5cfb (input, key)
 cast5-ecb, cast5ecb (input, key)
 cast5-ofb, cast5ofb (input, key)
 des (input, key)
 des-cbc, descbc (input, key)
 des-cfb, descfb (input, key)
 des-cfb1, descfb1 (input, key)
 des-cfb8, descfb8 (input, key)
 des-ecb, desecb (input, key)
 des-ede, desede (input, key)
 des-ede-cbc, desedecbc (input, key)
 des-ede-cfb, desedecfb (input, key)
 des-ede-ofb, desedeofb (input, key)
 des-ede3, desede3 (input, key)
 des-ede3-cbc, desede3cbc (input, key)
 des-ede3-cfb, desede3cfb (input, key)
 des-ede3-cfb1, desede3cfb1 (input, key)
 des-ede3-cfb8, desede3cfb8 (input, key)
 des-ede3-ofb, desede3ofb (input, key)
 des-ofb, desofb (input, key)
 des3 (input, key)
 desx (input, key)
 desx-cbc, desxcbc (input, key)
 rc2 (input, key)
 rc2-40-cbc, rc240cbc (input, key)
 rc2-64-cbc, rc264cbc (input, key)
 rc2-cbc, rc2cbc (input, key)
 rc2-cfb, rc2cfb (input, key)
 rc2-ecb, rc2ecb (input, key)
 rc2-ofb, rc2ofb (input, key)
 rc4 (input, key)
 rc4-40, rc440 (input, key)
 rc4-hmac-md5, rc4hmacmd5 (input, key)
 seed (input, key)
 seed-cbc, seedcbc (input, key)
 seed-cfb, seedcfb (input, key)
 seed-ecb, seedecb (input, key)
 seed-ofb, seedofb (input, key)
 aes-128-ccm, aes128ccm (input, key)
 aes-128-gcm, aes128gcm (input, key)
 aes-192-ccm, aes192ccm (input, key)
 aes-192-gcm, aes192gcm (input, key)
 aes-256-ccm, aes256ccm (input, key)
 aes-256-gcm, aes256gcm (input, key)
 blowfish (input, key)
 id-aes128-ccm, idaes128ccm (input, key)
 id-aes128-gcm, idaes128gcm (input, key)
 id-aes128-wrap, idaes128wrap (input, key)
 id-aes192-ccm, idaes192ccm (input, key)
 id-aes192-gcm, idaes192gcm (input, key)
 id-aes192-wrap, idaes192wrap (input, key)
 id-aes256-ccm, idaes256ccm (input, key)
 id-aes256-gcm, idaes256gcm (input, key)
 id-aes256-wrap, idaes256wrap (input, key)
 id-smime-alg-cms3deswrap, idsmimealgcms3deswrap (input, key)
 b2, base2, bin, binary (input)
 b8, base8, oct, octal (input)
 b16, base16, hex, hexidecimal (input)
 b32, base32, b32-std, base32-std (input)
 b64, base64, b64-psq, b64-std, base64-psq, base64-std (input)
 b64-ps, b64-utf7, base64-ps, base64-utf7 (input)
 b64-ph, b64-file, base64-ph, base64-file (input)
 b64-hu, b64-url, base64-hu, base64-url (input)
 b64-duh, b64-yui, base64-duh, base64-yui (input)
 b64-dh, b64-xml-name, base64-dh, base64-xml-name (input)
 b64-uc, b64-xml-id, base64-uc, base64-xml-id (input)
 b64-uh, b64-prog-id-1, base64-uh, base64-prog-id-1 (input)
 b64-du, b64-prog-id-2, base64-du, base64-prog-id-2 (input)
 b64-xh, b64-regex, base64-xh, base64-regex (input)
 r2, rad2, radix2 (input)
 r3, rad3, radix3 (input)
 r4, rad4, radix4 (input)
 r5, rad5, radix5 (input)
 r6, rad6, radix6 (input)
 r7, rad7, radix7 (input)
 r8, rad8, radix8 (input)
 r9, rad9, radix9 (input)
 r10, rad10, radix10 (input)
 r11, rad11, radix11 (input)
 r12, rad12, radix12 (input)
 r13, rad13, radix13 (input)
 r14, rad14, radix14 (input)
 r15, rad15, radix15 (input)
 r16, rad16, radix16 (input)
 r17, rad17, radix17 (input)
 r18, rad18, radix18 (input)
 r19, rad19, radix19 (input)
 r20, rad20, radix20 (input)
 r21, rad21, radix21 (input)
 r22, rad22, radix22 (input)
 r23, rad23, radix23 (input)
 r24, rad24, radix24 (input)
 r25, rad25, radix25 (input)
 r26, rad26, radix26 (input)
 r27, rad27, radix27 (input)
 r28, rad28, radix28 (input)
 r29, rad29, radix29 (input)
 r30, rad30, radix30 (input)
 r31, rad31, radix31 (input)
 r32, rad32, radix32 (input)
 r33, rad33, radix33 (input)
 r34, rad34, radix34 (input)
 r35, rad35, radix35 (input)
 r36, rad36, radix36 (input)
 deflate (input)
 gzip, gz (input)
 and-trunc (input, input)
 or-trunc (input, input)
 xor-trunc (input, input)
 and (input, input)
 or (input, input)
 xor (input, input)
 not (input)
 url, uri, cgi (input)
 cat, catenate (input)
 repack (input, ch1, ch2)
 tr, translate (input, ch1, ch2)
 repl, replace (input, search, replace)
 rc4-ruby (input, key)

Examples

$ ciphr '"abc"'
abc
$ ciphr '"abc"' hex
616263
$ ciphr '"abc"' hex ~hex
abc
$ ciphr '"616263"' ~hex
abc
$ ciphr 0x616263
abc
$ ciphr 0x616263 hex
616263
$ ciphr 0b10101010 bin
10101010
$ ciphr 0b10101010 hex
aa
$ ciphr 255 hex
ff
$ ciphr 65
A
$ ciphr '""' md5 hex
d41d8cd98f00b204e9800998ecf8427e
$ echo -n "" | ciphr md5 hex
d41d8cd98f00b204e9800998ecf8427e