codext 2.0.0__tar.gz → 2.0.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {codext-2.0.0 → codext-2.0.1}/.github/workflows/python-package.yml +1 -1
- {codext-2.0.0 → codext-2.0.1}/PKG-INFO +143 -32
- {codext-2.0.0 → codext-2.0.1}/README.md +137 -31
- {codext-2.0.0 → codext-2.0.1}/docs/mkdocs.yml +5 -1
- {codext-2.0.0 → codext-2.0.1}/docs/pages/cli.md +2 -0
- codext-2.0.1/docs/pages/enc/barcodes.md +180 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/base.md +34 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/binary.md +48 -0
- codext-2.0.0/docs/pages/enc/crypto.md → codext-2.0.1/docs/pages/enc/ciphers.md +212 -17
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/compressions.md +35 -0
- codext-2.0.1/docs/pages/enc/esoteric.md +183 -0
- codext-2.0.1/docs/pages/enc/frequency.md +82 -0
- codext-2.0.1/docs/pages/enc/hashing.md +482 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/languages.md +58 -10
- codext-2.0.1/docs/pages/enc/obfuscation.md +281 -0
- codext-2.0.1/docs/pages/enc/others.md +277 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/stegano.md +2 -1
- codext-2.0.1/docs/pages/enc/web.md +109 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/features.md +4 -1
- {codext-2.0.0 → codext-2.0.1}/docs/pages/guessing.md +48 -13
- {codext-2.0.0 → codext-2.0.1}/docs/pages/howto.md +2 -2
- {codext-2.0.0 → codext-2.0.1}/docs/pages/index.md +6 -0
- {codext-2.0.0 → codext-2.0.1}/pyproject.toml +9 -0
- {codext-2.0.0 → codext-2.0.1}/requirements.txt +1 -0
- codext-2.0.1/src/codext/VERSION.txt +1 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/__common__.py +87 -399
- {codext-2.0.0 → codext-2.0.1}/src/codext/__init__.py +2 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/__main__.py +37 -1
- codext-2.0.1/src/codext/barcodes/__init__.py +6 -0
- codext-2.0.1/src/codext/barcodes/aztec.py +726 -0
- codext-2.0.1/src/codext/barcodes/datamatrix.py +669 -0
- codext-2.0.1/src/codext/barcodes/fakeqr.py +216 -0
- codext-2.0.1/src/codext/barcodes/pdf417.py +865 -0
- codext-2.0.1/src/codext/barcodes/qr.py +671 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/__init__.py +4 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/_base.py +68 -14
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/_base2n.py +12 -2
- codext-2.0.1/src/codext/base/base128.py +80 -0
- codext-2.0.1/src/codext/base/base131072.py +219 -0
- codext-2.0.1/src/codext/base/base256.py +52 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base45.py +4 -1
- codext-2.0.1/src/codext/base/base69.py +73 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/__init__.py +2 -0
- codext-2.0.1/src/codext/binary/hamming.py +87 -0
- codext-2.0.1/src/codext/binary/manchester.py +108 -0
- codext-2.0.1/src/codext/binary/nrzi.py +52 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/checksums/__init__.py +1 -0
- codext-2.0.1/src/codext/checksums/fletcher.py +39 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/__init__.py +10 -1
- codext-2.0.1/src/codext/ciphers/_jsfloat.py +104 -0
- codext-2.0.1/src/codext/ciphers/_square.py +67 -0
- codext-2.0.1/src/codext/ciphers/aer256.py +35 -0
- codext-2.0.1/src/codext/ciphers/armon64.py +37 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/bazeries.py +7 -18
- codext-2.0.1/src/codext/ciphers/enigma.py +150 -0
- codext-2.0.1/src/codext/ciphers/ezip64.py +35 -0
- codext-2.0.1/src/codext/ciphers/foursquare.py +74 -0
- codext-2.0.1/src/codext/ciphers/fractionatedmorse.py +91 -0
- codext-2.0.1/src/codext/ciphers/okto3.py +35 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/playfair.py +13 -32
- codext-2.0.1/src/codext/ciphers/twosquare.py +82 -0
- codext-2.0.1/src/codext/ciphers/vernam.py +39 -0
- codext-2.0.1/src/codext/ciphers/zara128.py +33 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/__init__.py +2 -0
- codext-2.0.1/src/codext/compressions/huffman.py +137 -0
- codext-2.0.1/src/codext/compressions/zstd.py +60 -0
- codext-2.0.1/src/codext/esoteric/__init__.py +10 -0
- codext-2.0.1/src/codext/esoteric/_brainfuck.py +89 -0
- codext-2.0.1/src/codext/esoteric/befunge.py +249 -0
- codext-2.0.1/src/codext/esoteric/brainfuck.py +67 -0
- codext-2.0.1/src/codext/esoteric/church.py +228 -0
- codext-2.0.1/src/codext/esoteric/cow.py +160 -0
- codext-2.0.1/src/codext/esoteric/lolcode.py +709 -0
- codext-2.0.1/src/codext/esoteric/malbolge.py +198 -0
- codext-2.0.1/src/codext/esoteric/ook.py +103 -0
- codext-2.0.1/src/codext/esoteric/piet.py +430 -0
- codext-2.0.1/src/codext/esoteric/pikalang.py +66 -0
- codext-2.0.1/src/codext/frequency/__init__.py +4 -0
- codext-2.0.1/src/codext/frequency/_ita2.py +40 -0
- codext-2.0.1/src/codext/frequency/coquelet.py +98 -0
- codext-2.0.1/src/codext/frequency/dtmf.py +182 -0
- codext-2.0.1/src/codext/frequency/piccolo.py +106 -0
- codext-2.0.1/src/codext/guess.py +428 -0
- codext-2.0.1/src/codext/hashing/__init__.py +29 -0
- codext-2.0.1/src/codext/hashing/_descrypt.py +50 -0
- codext-2.0.1/src/codext/hashing/_h64.py +52 -0
- codext-2.0.1/src/codext/hashing/argon2.py +42 -0
- codext-2.0.1/src/codext/hashing/bcrypt.py +107 -0
- codext-2.0.1/src/codext/hashing/cisco.py +41 -0
- codext-2.0.1/src/codext/hashing/cryptvariants.py +136 -0
- codext-2.0.1/src/codext/hashing/ctph.py +92 -0
- codext-2.0.1/src/codext/hashing/fnv.py +59 -0
- codext-2.0.1/src/codext/hashing/gost.py +137 -0
- codext-2.0.1/src/codext/hashing/hmac.py +31 -0
- codext-2.0.1/src/codext/hashing/keccak.py +87 -0
- codext-2.0.1/src/codext/hashing/ldap.py +32 -0
- codext-2.0.1/src/codext/hashing/md.py +154 -0
- codext-2.0.1/src/codext/hashing/mscash.py +40 -0
- codext-2.0.1/src/codext/hashing/mssql.py +35 -0
- codext-2.0.1/src/codext/hashing/mysql.py +35 -0
- codext-2.0.1/src/codext/hashing/oracle.py +49 -0
- codext-2.0.1/src/codext/hashing/phpass.py +38 -0
- codext-2.0.1/src/codext/hashing/postgres.py +25 -0
- codext-2.0.1/src/codext/hashing/ripemd.py +73 -0
- codext-2.0.1/src/codext/hashing/scrypt.py +44 -0
- codext-2.0.1/src/codext/hashing/sha.py +60 -0
- codext-2.0.1/src/codext/hashing/snefru.py +268 -0
- codext-2.0.1/src/codext/hashing/whirlpool.py +87 -0
- codext-2.0.1/src/codext/hashing/windows.py +101 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/__init__.py +2 -0
- codext-2.0.1/src/codext/languages/fancy.py +119 -0
- codext-2.0.1/src/codext/languages/galactic.py +116 -0
- codext-2.0.1/src/codext/languages/tap.py +103 -0
- codext-2.0.1/src/codext/languages/upsidedown.py +58 -0
- codext-2.0.1/src/codext/obfuscation/__init__.py +17 -0
- codext-2.0.1/src/codext/obfuscation/_jsbase64.py +79 -0
- codext-2.0.1/src/codext/obfuscation/_jsuri.py +55 -0
- codext-2.0.1/src/codext/obfuscation/arabica2rs.py +77 -0
- codext-2.0.1/src/codext/obfuscation/atom128.py +30 -0
- codext-2.0.1/src/codext/obfuscation/chinzo72c.py +78 -0
- codext-2.0.1/src/codext/obfuscation/cisco.py +65 -0
- codext-2.0.1/src/codext/obfuscation/esab46.py +30 -0
- codext-2.0.1/src/codext/obfuscation/feron74.py +30 -0
- codext-2.0.1/src/codext/obfuscation/gila7.py +30 -0
- codext-2.0.1/src/codext/obfuscation/hazz15.py +31 -0
- codext-2.0.1/src/codext/obfuscation/hindia4x.py +86 -0
- codext-2.0.1/src/codext/obfuscation/japooc2s.py +83 -0
- codext-2.0.1/src/codext/obfuscation/korex3s.py +70 -0
- codext-2.0.1/src/codext/obfuscation/megan35.py +31 -0
- codext-2.0.1/src/codext/obfuscation/tigo3fx.py +31 -0
- codext-2.0.1/src/codext/obfuscation/tripo5.py +31 -0
- codext-2.0.1/src/codext/obfuscation/zong22.py +31 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/__init__.py +6 -0
- codext-2.0.1/src/codext/others/asn1.py +482 -0
- codext-2.0.1/src/codext/others/dvorak.py +45 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/letters.py +3 -1
- codext-2.0.1/src/codext/others/ns3.py +93 -0
- codext-2.0.1/src/codext/others/soundex.py +482 -0
- codext-2.0.1/src/codext/others/telegraph.py +278 -0
- codext-2.0.1/src/codext/others/xy.py +30 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/sms.py +2 -1
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/whitespace.py +30 -9
- codext-2.0.1/src/codext/strength.py +164 -0
- codext-2.0.1/src/codext/web/__init__.py +7 -0
- codext-2.0.1/src/codext/web/_javascript.py +59 -0
- codext-2.0.1/src/codext/web/aaencode.py +103 -0
- codext-2.0.1/src/codext/web/jjencode.py +135 -0
- codext-2.0.1/src/codext/web/jsfuck.py +635 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext.egg-info/PKG-INFO +143 -32
- codext-2.0.1/src/codext.egg-info/SOURCES.txt +265 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext.egg-info/entry_points.txt +4 -0
- codext-2.0.1/src/codext.egg-info/requires.txt +13 -0
- {codext-2.0.0 → codext-2.0.1}/tests/test_base.py +70 -0
- {codext-2.0.0 → codext-2.0.1}/tests/test_common.py +109 -5
- codext-2.0.1/tests/test_manual.py +1327 -0
- codext-2.0.0/docs/pages/enc/hashing.md +0 -139
- codext-2.0.0/docs/pages/enc/others.md +0 -135
- codext-2.0.0/docs/pages/enc/web.md +0 -38
- codext-2.0.0/src/codext/VERSION.txt +0 -1
- codext-2.0.0/src/codext/binary/manchester.py +0 -58
- codext-2.0.0/src/codext/hashing/__init__.py +0 -8
- codext-2.0.0/src/codext/hashing/md.py +0 -66
- codext-2.0.0/src/codext/hashing/sha.py +0 -33
- codext-2.0.0/src/codext/languages/galactic.py +0 -40
- codext-2.0.0/src/codext/languages/tap.py +0 -45
- codext-2.0.0/src/codext/web/__init__.py +0 -4
- codext-2.0.0/src/codext.egg-info/SOURCES.txt +0 -163
- codext-2.0.0/src/codext.egg-info/requires.txt +0 -4
- codext-2.0.0/tests/test_manual.py +0 -245
- {codext-2.0.0 → codext-2.0.1}/.github/ISSUE_TEMPLATE/add-encoding.yml +0 -0
- {codext-2.0.0 → codext-2.0.1}/.github/copilot-instructions.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/.github/dependabot.yml +0 -0
- {codext-2.0.0 → codext-2.0.1}/.github/prompts/add_codec.prompt.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/.github/pull_request_template.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/.github/workflows/security.yml +0 -0
- {codext-2.0.0 → codext-2.0.1}/.gitignore +0 -0
- {codext-2.0.0 → codext-2.0.1}/.readthedocs.yaml +0 -0
- {codext-2.0.0 → codext-2.0.1}/LICENSE +0 -0
- {codext-2.0.0 → codext-2.0.1}/SECURITY.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/coverage.svg +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/hakin9-codext.pdf +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/contributing.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/css/extra.css +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/demos/using-bases.gif +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/demos/using-codext.gif +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/demos/using-debase.gif +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/enc/common.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/img/banner.png +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/img/icon.png +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/img/logo.png +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/pages/manipulations.md +0 -0
- {codext-2.0.0 → codext-2.0.1}/docs/requirements.txt +0 -0
- {codext-2.0.0 → codext-2.0.1}/setup.cfg +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/__info__.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base100.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base1024.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base122.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base38.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base65536.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base85.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/base91.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/baseN.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/bech32.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/base/leb128.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/_universal.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/baudot.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/bcd.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/chucknorris.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/elias.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/excess3.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/fibonacci.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/gray.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/binary/rotate.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/checksums/adler.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/checksums/crc.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/checksums/luhn.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/adfgx.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/affine.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/atbash.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/bacon.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/barbie.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/bifid.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/chaocipher.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/columnar.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/hill.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/nihilist.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/phillips.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/polybius.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/railfence.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/rot.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/scytale.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/shift.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/skip.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/vic.py +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/vigenere.py +14 -14
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/xor.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/__init__.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/a1z26.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/cases.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/dummy.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/octal.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/common/ordinal.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/gzipp.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/lz77.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/lz78.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/pkzip.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/compressions/rle.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/hashing/blake.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/hashing/crypt.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/hashing/mmh3.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/hashing/shake.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/braille.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/ipsum.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/leetspeak.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/morse.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/navajo.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/radio.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/southpark.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/languages/tomtom.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/macros.json +0 -0
- {codext-2.0.0/src/codext/crypto → codext-2.0.1/src/codext/obfuscation}/citrix.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/binhex.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/dna.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/kbshift.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/markdown.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/uuencode.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/xxencode.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/others/yenc.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/__init__.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/hexagram.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/klopf.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/resistor.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/rick.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/tags.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/stegano/zerowidth.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/web/html.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext/web/url.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext.egg-info/dependency_links.txt +0 -0
- {codext-2.0.0 → codext-2.0.1}/src/codext.egg-info/top_level.txt +0 -0
- {codext-2.0.0 → codext-2.0.1}/tests/__init__.py +0 -0
- {codext-2.0.0 → codext-2.0.1}/tests/test_generated.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codext
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.1
|
|
4
4
|
Summary: Native codecs extension
|
|
5
5
|
Author-email: Alexandre D'Hondt <alexandre.dhondt@gmail.com>
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE
|
|
@@ -692,8 +692,13 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
692
692
|
Requires-Python: <4,>=3.10
|
|
693
693
|
Description-Content-Type: text/markdown
|
|
694
694
|
License-File: LICENSE
|
|
695
|
+
Requires-Dist: backports.zstd; python_version < "3.14"
|
|
695
696
|
Requires-Dist: legacycrypt; python_version >= "3.13"
|
|
696
697
|
Requires-Dist: markdown2>=2.5.4
|
|
698
|
+
Provides-Extra: argon2
|
|
699
|
+
Requires-Dist: argon2-cffi>=21.0.0; extra == "argon2"
|
|
700
|
+
Provides-Extra: bcrypt
|
|
701
|
+
Requires-Dist: bcrypt>=4.0.0; extra == "bcrypt"
|
|
697
702
|
Dynamic: license-file
|
|
698
703
|
|
|
699
704
|
<p align="center" id="top"><img src="https://github.com/dhondta/python-codext/raw/main/docs/pages/img/logo.png"></p>
|
|
@@ -709,7 +714,7 @@ Dynamic: license-file
|
|
|
709
714
|
[](https://zenodo.org/badge/latestdoi/236679865)
|
|
710
715
|
[](https://pypi.python.org/pypi/codext/)
|
|
711
716
|
|
|
712
|
-
[**CodExt**](https://github.com/dhondta/python-codext) is a library (Python 3.10 or later) that extends the native [`codecs`](https://docs.python.org/3/library/codecs) library (namely for adding new custom encodings and character mappings) and provides **
|
|
717
|
+
[**CodExt**](https://github.com/dhondta/python-codext) is a library (Python 3.10 or later) that extends the native [`codecs`](https://docs.python.org/3/library/codecs) library (namely for adding new custom encodings and character mappings) and provides **150+ new codecs**, hence its name combining *CODecs EXTension*. It also features a **guess mode** for decoding multiple layers of encoding and **CLI tools** for convenience.
|
|
713
718
|
|
|
714
719
|
```sh
|
|
715
720
|
$ pip install codext
|
|
@@ -957,6 +962,14 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
957
962
|
|
|
958
963
|
## List of codecs
|
|
959
964
|
|
|
965
|
+
#### [Barcodes](https://python-codext.readthedocs.io/en/latest/enc/barcodes.html)
|
|
966
|
+
|
|
967
|
+
- [X] `aztec`: real (scannable) Aztec code (ISO/IEC 24778) ; optimal high-level compaction, error correction percentage given in the name (e.g. `aztec-33` ; 23% by default), rendered as an image or, with `aztec-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
968
|
+
- [X] `datamatrix`: real (scannable) Data Matrix barcode (ISO/IEC 16022, ECC200) ; most compact of the ASCII, C40, Text, X12 and EDIFACT schemes, square or rectangular (`datamatrix-rect`), rendered as an image or, with `datamatrix-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
969
|
+
- [X] `fakeqr`: hides the input bits as the modules of something that looks like a QR code but is not one, either an image or, with the `fakeqr-text` variant, plain text (the 8 QR masks are available as `fakeqr-0` to `fakeqr-7`)
|
|
970
|
+
- [X] `pdf417`: real (scannable) PDF417 stacked barcode (ISO/IEC 15438) ; most compact of the Text, Byte and Numeric modes, error correction level given in the name (e.g. `pdf417-5` ; 2 by default), rendered as an image or, with `pdf417-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
971
|
+
- [X] `qr`: real (scannable) QR code ; byte mode, error correction level given in the name (`qr-l`, `qr-m`, `qr-q`, `qr-h` ; M by default), rendered as an image or, with `qr-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
972
|
+
|
|
960
973
|
#### [BaseXX](https://python-codext.readthedocs.io/en/latest/enc/base.html)
|
|
961
974
|
|
|
962
975
|
- [X] `base1`: useless, but for the sake of completeness
|
|
@@ -977,14 +990,19 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
977
990
|
- [X] `base63`: similar to `base62` with the "`_`" added
|
|
978
991
|
- [X] `base64`: classical conversion according to RFC4648 with its variant URL (or *file*) (it also holds a variant with letters and digits inverted)
|
|
979
992
|
- [X] `base67`: custom conversion using some more special characters (also with a variant with letters and digits inverted)
|
|
993
|
+
- [X] `base69`: [Base69](https://github.com/pshihn/base69) encoding (chunks of 7 bytes, 2 characters per 7 bits)
|
|
980
994
|
- [X] `base85`: all variants of Base85 ([Ascii85](https://fr.wikipedia.org/wiki/Ascii85), [z85](https://rfc.zeromq.org/spec/32), [Adobe](https://dencode.com/string/ascii85), [(x)btoa](https://dencode.com/string/ascii85), [RFC1924](https://datatracker.ietf.org/doc/html/rfc1924), [XML](https://datatracker.ietf.org/doc/html/draft-kwiatkowski-base85-for-xml-00))
|
|
981
995
|
- [X] `base91`: [Base91](http://base91.sourceforge.net) custom conversion
|
|
982
996
|
- [X] `base100` (or *emoji*): [Base100](https://github.com/AdamNiederer/base100) custom conversion
|
|
983
|
-
- [X] `base122`: [
|
|
997
|
+
- [X] `base122`: [Base122](http://blog.kevinalbs.com/base122) custom conversion
|
|
998
|
+
- [X] `base128`: conversion to the ASCII charset (with control characters)
|
|
999
|
+
- [X] `base128-latin1`: [Base128](https://github.com/rpuntaie/base128) with printable characters (digits, letters and Latin-1)
|
|
1000
|
+
- [X] `base256`: [Base256](https://github.com/KvanTTT/BaseNcoding) with one printable character per byte
|
|
984
1001
|
- [X] `base1024` (or *ecoji*): [Ecoji](https://github.com/keith-turner/ecoji) custom conversion (10 bits per emoji, versions 1 and 2)
|
|
985
1002
|
- [X] `base2048`: [Base2048](https://github.com/qntm/base2048) custom conversion (11 bits per character, optimised for Twitter)
|
|
986
1003
|
- [X] `base32768`: [Base32768](https://github.com/qntm/base32768) custom conversion (15 bits per character, optimised for UTF-16)
|
|
987
1004
|
- [X] `base65536`: [Base65536](https://github.com/qntm/base65536) custom conversion (16 bits per character, optimised for UTF-32)
|
|
1005
|
+
- [X] `base131072`: Base131072 conversion (17 bits per character), as implemented by the [base131072](https://docs.rs/base131072) Rust crate
|
|
988
1006
|
- [X] `bech32`: [Bech32](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki) encoding with a human-readable part ; `bech32m` for its [Bech32m](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki) variant
|
|
989
1007
|
- [X] `leb128` (or *varint*): [LEB128](https://en.wikipedia.org/wiki/LEB128) encoding of lists of integers ; `sleb128` for its signed variant
|
|
990
1008
|
- [X] `base-genericN`: see [base encodings](https://python-codext.readthedocs.io/en/latest/enc/base.html) ; supports any possible base
|
|
@@ -1000,46 +1018,30 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
1000
1018
|
- [X] `bcd-extended0`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `0000`
|
|
1001
1019
|
- [X] `bcd-extended1`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `1111`
|
|
1002
1020
|
- [X] `chuck-norris`: Chuck Norris unary code (runs of the 7-bit ASCII bits written with blocks of zeros)
|
|
1021
|
+
- [X] `differential-manchester`: line code writing the bits as transitions at the start of their periods (also inverted)
|
|
1003
1022
|
- [X] `elias-gamma`, `elias-delta`: Elias universal codes, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
1004
1023
|
- [X] `excess3`: uses Excess-3 (aka Stibitz code) binary encoding to convert characters from their ordinals
|
|
1005
1024
|
- [X] `fibonacci`: Fibonacci universal code, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
1006
1025
|
- [X] `gray`: aka reflected binary code
|
|
1026
|
+
- [X] `hamming`: Hamming(7,4) error-correcting code, correcting single-bit errors (and detecting double-bit errors with `hamming84`)
|
|
1007
1027
|
- [X] `manchester`: XORes each bit of the input with `01`
|
|
1008
1028
|
- [X] `manchester-inverted`: variant of `manchester` ; XORes each bit of the input with `10`
|
|
1029
|
+
- [X] `nrzi`: Non-Return-to-Zero Inverted line code, writing 1 (or 0 with `nrzi-space`) as a transition
|
|
1009
1030
|
- [X] `rotateN`: rotates characters by the specified number of bits (*N* belongs to [1, 7] ; Python 3 only)
|
|
1010
1031
|
|
|
1011
1032
|
#### [Checksums](https://python-codext.readthedocs.io/en/latest/enc/hashing.html#checksums)
|
|
1012
1033
|
|
|
1013
1034
|
- [X] `adler`: Adler32 algorithm (relies on `zlib`)
|
|
1014
1035
|
- [X] `crc`: CRC of lengths 8, 10-17, 21, 24, 30-32, 40, 64, 82 with a variety of polynoms
|
|
1036
|
+
- [X] `fletcher`: Fletcher-16, -32 and -64 checksums
|
|
1015
1037
|
- [X] `luhn`: Luhn mod N algorithm
|
|
1016
1038
|
|
|
1017
|
-
#### [
|
|
1018
|
-
|
|
1019
|
-
- [X] `a1z26`: keeps words whitespace-separated and uses a custom character separator
|
|
1020
|
-
- [X] `cases`: set of case-related encodings (including camel-, kebab-, lower-, pascal-, upper-, snake- and swap-case, slugify, capitalize, title)
|
|
1021
|
-
- [X] `dummy`: set of simple encodings (including integer, replace, reverse, word-reverse, substite and strip-spaces)
|
|
1022
|
-
- [X] `octal`: dummy octal conversion (converts to 3-digits groups)
|
|
1023
|
-
- [X] `octal-spaced`: variant of `octal` ; dummy octal conversion, handling whitespace separators
|
|
1024
|
-
- [X] `ordinal`: dummy character ordinals conversion (converts to 3-digits groups)
|
|
1025
|
-
- [X] `ordinal-spaced`: variant of `ordinal` ; dummy character ordinals conversion, handling whitespace separators
|
|
1026
|
-
|
|
1027
|
-
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions.html)
|
|
1028
|
-
|
|
1029
|
-
- [X] `gzip`: standard Gzip compression/decompression
|
|
1030
|
-
- [X] `lz77`: compresses the given data with the algorithm of Lempel and Ziv of 1977
|
|
1031
|
-
- [X] `lz78`: compresses the given data with the algorithm of Lempel and Ziv of 1978
|
|
1032
|
-
- [X] `pkzip_deflate`: standard Zip-deflate compression/decompression
|
|
1033
|
-
- [X] `pkzip_bzip2`: standard BZip2 compression/decompression
|
|
1034
|
-
- [X] `pkzip_lzma`: standard LZMA compression/decompression
|
|
1035
|
-
- [X] `rle`: compresses runs of identical characters with Run-Length Encoding (count before or after each character, compact, bytes or repeated-byte escape variants)
|
|
1036
|
-
|
|
1037
|
-
> :warning: Compression functions are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
1038
|
-
|
|
1039
|
-
#### [Cryptography](https://python-codext.readthedocs.io/en/latest/enc/crypto.html)
|
|
1039
|
+
#### [Ciphers](https://python-codext.readthedocs.io/en/latest/enc/ciphers.html)
|
|
1040
1040
|
|
|
1041
1041
|
- [X] `adfgx`: aka ADFGX Cipher (Polybius square and columnar transposition) ; `adfgvx` for its 6x6 variant
|
|
1042
|
+
- [X] `aer256`: aka AER-256 (toy cipher with float arithmetic, from online JavaScript tools)
|
|
1042
1043
|
- [X] `affine`: aka Affine Cipher
|
|
1044
|
+
- [X] `armon64`: aka ARMON-64 (variant of AER-256 with a fourth operation)
|
|
1043
1045
|
- [X] `atbash`: aka Atbash Cipher
|
|
1044
1046
|
- [X] `autoclave`: aka Autoclave/Autokey Cipher (variant of Vigenere Cipher)
|
|
1045
1047
|
- [X] `bacon`: aka Baconian Cipher
|
|
@@ -1048,11 +1050,15 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
1048
1050
|
- [X] `beaufort`: aka Beaufort Cipher (variant of Vigenere Cipher)
|
|
1049
1051
|
- [X] `bifid`: aka Bifid Cipher (Delastelle's fractionation with a 5x5 Polybius square) ; `trifid` for its 3x3x3 cube variant
|
|
1050
1052
|
- [X] `chaocipher`: aka Chaocipher (two alphabets permuted after each letter)
|
|
1051
|
-
- [X] `citrix`: aka Citrix CTX1 password encoding
|
|
1052
1053
|
- [X] `columnar`: aka Columnar Transposition Cipher (keyword-ordered columns ; a second keyword gives the double transposition)
|
|
1054
|
+
- [X] `enigma`: aka Enigma machine (Enigma I, M3 and M4, with reflector, rotors, rings, positions and plugboard)
|
|
1055
|
+
- [X] `ezip64`: aka EZIP-64 (variant of ARMON-64 with smaller blocks)
|
|
1056
|
+
- [X] `foursquare`: aka Four-square Cipher (bigrams substituted with two keyed squares and two plain ones)
|
|
1057
|
+
- [X] `fractionated-morse`: aka Fractionated Morse Cipher (Morse code split into groups of three symbols, each replaced by a letter of a keyed alphabet)
|
|
1053
1058
|
- [X] `gronsfeld`: aka Gronsfeld Cipher (variant of Vigenere Cipher with a numeric key)
|
|
1054
1059
|
- [X] `hill`: aka Hill Cipher (blocks of letters multiplied by a key matrix modulo 26)
|
|
1055
1060
|
- [X] `nihilist`: aka Nihilist Cipher (sums of the Polybius coordinates of the text and of a repeated key)
|
|
1061
|
+
- [X] `okto3`: aka OKTO3 (variant of AER-256 with a fourth operation and smaller blocks)
|
|
1056
1062
|
- [X] `playfair`: aka Playfair Cipher
|
|
1057
1063
|
- [X] `phillips`: aka Phillips Cipher (polyalphabetic block cipher with 8 key squares)
|
|
1058
1064
|
- [X] `polybius`: aka Polybius Square Cipher
|
|
@@ -1063,43 +1069,145 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
1063
1069
|
- [X] `shiftN`: shift ordinals (*N* belongs to [1,255])
|
|
1064
1070
|
- [X] `skip`: aka Skip Cipher (transposition reading every N-th character, looping on the text)
|
|
1065
1071
|
- [X] `trithemius`: aka Trithemius Cipher (variant of Vigenere Cipher)
|
|
1072
|
+
- [X] `twosquare`: aka Two-square Cipher or Double Playfair (bigrams substituted with two keyed squares, vertically or horizontally)
|
|
1073
|
+
- [X] `vernam`: aka Vernam Cipher (XOR with a repeating key)
|
|
1066
1074
|
- [X] `vic`: aka VIC Cipher
|
|
1067
1075
|
- [X] `vigenere`: aka Vigenere Cipher
|
|
1068
1076
|
- [X] `xorN`: XOR with a single byte (*N* belongs to [1,255])
|
|
1077
|
+
- [X] `zara128`: aka ZARA-128 (variant of AER-256 with additions only and smaller blocks)
|
|
1078
|
+
|
|
1079
|
+
> :warning: Ciphers are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
1080
|
+
|
|
1081
|
+
#### [Common](https://python-codext.readthedocs.io/en/latest/enc/common.html)
|
|
1082
|
+
|
|
1083
|
+
- [X] `a1z26`: keeps words whitespace-separated and uses a custom character separator
|
|
1084
|
+
- [X] `cases`: set of case-related encodings (including camel-, kebab-, lower-, pascal-, upper-, snake- and swap-case, slugify, capitalize, title)
|
|
1085
|
+
- [X] `dummy`: set of simple encodings (including integer, replace, reverse, word-reverse, substite and strip-spaces)
|
|
1086
|
+
- [X] `octal`: dummy octal conversion (converts to 3-digits groups)
|
|
1087
|
+
- [X] `octal-spaced`: variant of `octal` ; dummy octal conversion, handling whitespace separators
|
|
1088
|
+
- [X] `ordinal`: dummy character ordinals conversion (converts to 3-digits groups)
|
|
1089
|
+
- [X] `ordinal-spaced`: variant of `ordinal` ; dummy character ordinals conversion, handling whitespace separators
|
|
1069
1090
|
|
|
1070
|
-
|
|
1091
|
+
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions.html)
|
|
1092
|
+
|
|
1093
|
+
- [X] `gzip`: standard Gzip compression/decompression
|
|
1094
|
+
- [X] `huffman`: canonical Huffman coding of the bytes, with a self-describing header
|
|
1095
|
+
- [X] `lz77`: compresses the given data with the algorithm of Lempel and Ziv of 1977
|
|
1096
|
+
- [X] `lz78`: compresses the given data with the algorithm of Lempel and Ziv of 1978
|
|
1097
|
+
- [X] `pkzip_deflate`: standard Zip-deflate compression/decompression
|
|
1098
|
+
- [X] `pkzip_bzip2`: standard BZip2 compression/decompression
|
|
1099
|
+
- [X] `pkzip_lzma`: standard LZMA compression/decompression
|
|
1100
|
+
- [X] `rle`: compresses runs of identical characters with Run-Length Encoding (count before or after each character, compact, bytes or repeated-byte escape variants)
|
|
1101
|
+
- [X] `zstd`: Zstandard compression/decompression (relies on `compression.zstd` from Python 3.14, on `backports.zstd` before)
|
|
1102
|
+
|
|
1103
|
+
> :warning: Compression functions are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
1104
|
+
|
|
1105
|
+
#### [Esoteric](https://python-codext.readthedocs.io/en/latest/enc/esoteric.html)
|
|
1106
|
+
|
|
1107
|
+
- [X] `befunge`: Befunge-93, two-dimensional esoteric language (encoding generates a program printing the text)
|
|
1108
|
+
- [X] `brainfuck`: well-known esoteric programming language (encoding generates a program printing the text)
|
|
1109
|
+
- [X] `church`: Church encoding in the lambda calculus (encoding generates a lambda term of the list of the numerals of the bytes)
|
|
1110
|
+
- [X] `cow`: esoteric language made of variations of "moo" (Brainfuck-like, with a register and integer output)
|
|
1111
|
+
- [X] `lolcode`: esoteric language inspired by lolcats (encoding generates a program printing the text), also with lowercase keywords
|
|
1112
|
+
- [X] `malbolge`: esoteric language designed to be as difficult to program in as possible (encoding generates a program printing the text)
|
|
1113
|
+
- [X] `ook`: Brainfuck derivative for orang-utans (`Ook.`, `Ook?` and `Ook!`), also in its short form
|
|
1114
|
+
- [X] `piet`: esoteric language whose programs are images looking like abstract paintings (encoding generates a PNG image of a program printing the text)
|
|
1115
|
+
- [X] `pikalang`: Brainfuck derivative using Pikachu's vocabulary
|
|
1116
|
+
|
|
1117
|
+
#### [Frequency](https://python-codext.readthedocs.io/en/latest/enc/frequency.html)
|
|
1118
|
+
|
|
1119
|
+
- [X] `coquelet`: Coquelet 13 and 8 (aka Mk 1 and Mk 2), radio teleprinter systems sending each ITA-2 character as two audio tones (gives their frequencies in Hz)
|
|
1120
|
+
- [X] `dtmf`: Dual-Tone Multi-Frequency telephone keypad signaling (gives the frequencies of the tones in Hz, or a WAV recording with `dtmf-wav`, decoded with the Goertzel algorithm)
|
|
1121
|
+
- [X] `piccolo`: Piccolo I, II (aka Mk 6) and III, radio teleprinter systems sending each ITA-2 character as one or two audio tones (gives their frequencies in Hz)
|
|
1071
1122
|
|
|
1072
1123
|
#### [Hashing](https://python-codext.readthedocs.io/en/latest/enc/hashing.html)
|
|
1073
1124
|
|
|
1125
|
+
- [X] `argon2`: aka Argon2 (RFC 9106) with its i, d and id variants (relies on `argon2-cffi`, e.g. with `pip install codext[argon2]`)
|
|
1126
|
+
- [X] `bcrypt`: aka bcrypt password hash (relies on `bcrypt` when available, e.g. with `pip install codext[bcrypt]`, pure Python otherwise)
|
|
1127
|
+
- [X] `bigcrypt`: aka BigCrypt (DES-based crypt variant for long passwords)
|
|
1074
1128
|
- [X] `blake`: includes BLAKE2b and BLAKE2s (Python 3 only ; relies on `hashlib`)
|
|
1129
|
+
- [X] `bsd-nthash`: NT hash in the `$3$$` modular crypt format of modern BSD
|
|
1130
|
+
- [X] `bsdi-crypt`: aka BSDi extended DES crypt (parametrized with the number of rounds)
|
|
1131
|
+
- [X] `cisco-asa`: Cisco ASA password hash (parametrized with the user name)
|
|
1132
|
+
- [X] `cisco-pix`: Cisco PIX password hash (parametrized with the user name)
|
|
1075
1133
|
- [X] `crypt`: Unix's crypt hash for passwords (Python 3 and Unix only ; relies on `crypt`)
|
|
1076
|
-
- [X] `
|
|
1077
|
-
- [X] `
|
|
1134
|
+
- [X] `crypt16`: aka crypt16 (DES-based crypt variant with two computations)
|
|
1135
|
+
- [X] `ctph`: context triggered piecewise hash of the ctph.js library (as used by CyberChef)
|
|
1136
|
+
- [X] `fnv`: aka Fowler-Noll-Vo ; includes FNV-1 and FNV-1a in 32, 64, 128, 256, 512 and 1024 bits
|
|
1137
|
+
- [X] `gosthash`: aka Streebog (GOST R 34.11-2012) in 256 and 512 bits
|
|
1138
|
+
- [X] `hmac`: keyed-hash message authentication code with MD5, SHA-1, SHA-2, SHA-3 or BLAKE2 (relies on `hmac`)
|
|
1139
|
+
- [X] `keccak`: original Keccak (pre-SHA-3 padding, as used e.g. by Ethereum) in 224, 256, 384 and 512 bits
|
|
1140
|
+
- [X] `ldap-md5`: RFC 2307 LDAP password schemes ; `ldap-sha1`, `ldap-salted-md5` and `ldap-salted-sha1` for the SHA-1 and salted variants
|
|
1141
|
+
- [X] `lm`: aka LAN Manager hash, the legacy Windows password hash (with a pure Python DES)
|
|
1142
|
+
- [X] `md`: aka Message Digest ; includes MD2, MD4 (relies on `hashlib` when available, pure Python otherwise), MD5 (relies on `hashlib`) and MD6 (digest sizes multiple of 8, up to 512 bits)
|
|
1143
|
+
- [X] `mscash`: aka MS-CASH / Domain Cached Credentials v1 (parametrized with the user name) ; `mscash2` for v2 (PBKDF2)
|
|
1144
|
+
- [X] `mssql2000`: Microsoft SQL Server 2000 password hash ; `mssql2005` for the 2005 version
|
|
1145
|
+
- [X] `mysql`: MySQL password hashes ; includes the MySQL 3.23 hash and the MySQL 4.1+ native password hash
|
|
1146
|
+
- [X] `ntlm`: aka NT hash, the Windows password hash (MD4 of the UTF-16LE password)
|
|
1147
|
+
- [X] `oracle10`: legacy Oracle 10g password hash (parametrized with the user name) ; `oracle11` for the 11g version
|
|
1148
|
+
- [X] `phpass`: portable PHP password hash (parametrized with the iteration count ; used e.g. by WordPress)
|
|
1149
|
+
- [X] `ripemd160`: aka RIPEMD-160 (relies on `hashlib` when available, pure Python otherwise)
|
|
1150
|
+
- [X] `scrypt`: aka scrypt (RFC 7914), parameterized with its cost ln, block size r and parallelism p (relies on `hashlib`)
|
|
1151
|
+
- [X] `sha`: aka Secure Hash Algorithms ; includes SHA0, SHA1, 224, 256, 384, 512 (Python2/3) but also SHA3-224, -256, -384 and -512 (Python 3 only ; relies on `hashlib`)
|
|
1078
1152
|
- [X] `shake`: aka SHAKE hashing (Python 3 only ; relies on `hashlib`)
|
|
1153
|
+
- [X] `snefru`: aka Snefru (Merkle's hash function) in 32 to 480 bits, with 2 to 8 passes
|
|
1154
|
+
- [X] `ssdeep`: ssdeep fuzzy hash (context triggered piecewise hash, same output as libfuzzy)
|
|
1155
|
+
- [X] `sun-md5-crypt`: aka Sun MD5 crypt (parametrized with the number of rounds)
|
|
1156
|
+
- [X] `whirlpool`: aka Whirlpool (relies on `hashlib` when available, pure Python otherwise)
|
|
1079
1157
|
|
|
1080
1158
|
> :warning: Hash functions are of course definitely **NOT** encoding functions ; they are implemented for convenience with the `.encode(...)` API from `codecs` and useful for chaning codecs.
|
|
1081
1159
|
|
|
1082
1160
|
#### [Languages](https://python-codext.readthedocs.io/en/latest/enc/languages.html)
|
|
1083
1161
|
|
|
1084
1162
|
- [X] `braille`: well-known braille language (Python 3 only)
|
|
1163
|
+
- [X] `fancy`: Unicode styled alphabets (mathematical bold, italic, script, fraktur, double-struck, ..., circled and parenthesized letters), also `fullwidth` and `smallcaps`
|
|
1085
1164
|
- [X] `ipsum`: aka lorem ipsum
|
|
1086
|
-
- [X] `galactic`: aka
|
|
1165
|
+
- [X] `galactic`: aka Standard Galactic Alphabet or Minecraft enchantment language (as written by most online translators)
|
|
1087
1166
|
- [X] `leetspeak`: based on minimalistic elite speaking rules
|
|
1088
1167
|
- [X] `morse`: uses whitespace as a separator
|
|
1089
1168
|
- [X] `navajo`: only handles letters (not full words from the Navajo dictionary)
|
|
1090
1169
|
- [X] `radio`: aka NATO or radio phonetic alphabet
|
|
1091
1170
|
- [X] `southpark`: converts letters to Kenny's language from Southpark (whitespace is also handled)
|
|
1092
1171
|
- [X] `southpark-icase`: case insensitive variant of `southpark`
|
|
1093
|
-
- [X] `tap`: converts text to tap/knock code, commonly used by prisoners
|
|
1172
|
+
- [X] `tap`: converts text to tap/knock code, commonly used by prisoners (as written by cryptii)
|
|
1094
1173
|
- [X] `tomtom`: similar to `morse`, using slashes and backslashes
|
|
1174
|
+
- [X] `upsidedown`: upside-down (flip) text, with turned Unicode characters in reverse order
|
|
1175
|
+
|
|
1176
|
+
#### [Obfuscation](https://python-codext.readthedocs.io/en/latest/enc/obfuscation.html)
|
|
1177
|
+
|
|
1178
|
+
- [X] `arabica-2rs`: aka ARABICA-2RS (URI-encoded text substituted by Arabic letters, from online JavaScript tools)
|
|
1179
|
+
- [X] `atom128`: aka ATOM-128 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1180
|
+
- [X] `chinzo-72c`: aka CHINZO-72C (URI-encoded text substituted by Chinese characters, from online JavaScript tools)
|
|
1181
|
+
- [X] `cisco-type7`: aka Cisco IOS type 7 password encoding
|
|
1182
|
+
- [X] `citrix`: aka Citrix CTX1 password encoding
|
|
1183
|
+
- [X] `esab46`: aka ESAB-46 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1184
|
+
- [X] `feron74`: aka FERON-74 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1185
|
+
- [X] `gila7`: aka GILA7 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1186
|
+
- [X] `hazz15`: aka HAZZ-15 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1187
|
+
- [X] `hindia-4x`: aka HINDIA-4X (URI-encoded text substituted by Bengali and Devanagari characters, from online JavaScript tools)
|
|
1188
|
+
- [X] `japoo-c2s`: aka JAPOO-C2S (URI-encoded text substituted by Chinese and Japanese characters, from online JavaScript tools)
|
|
1189
|
+
- [X] `korex-3s`: aka KOREX-3S (URI-encoded text substituted by Korean characters, from online JavaScript tools)
|
|
1190
|
+
- [X] `megan35`: aka MEGAN-35 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1191
|
+
- [X] `tigo-3fx`: aka TIGO-3FX (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1192
|
+
- [X] `tripo-5`: aka TRIPO-5 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1193
|
+
- [X] `zong22`: aka ZONG22 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
1095
1194
|
|
|
1096
1195
|
#### [Others](https://python-codext.readthedocs.io/en/latest/enc/others.html)
|
|
1097
1196
|
|
|
1197
|
+
- [X] `asn1`: readable dump of ASN.1 BER/DER elements (e.g. certificates and keys), encoded back to DER
|
|
1198
|
+
- [X] `ber`: text as an ASN.1 BER string element (decoding indefinite lengths and segmented strings)
|
|
1098
1199
|
- [X] `binhex`: BinHex 4.0 (`.hqx`), the binary-to-text encoding of the classic Mac OS
|
|
1200
|
+
- [X] `der`: text as an ASN.1 DER string element (UTF8String)
|
|
1099
1201
|
- [X] `dna`: implements the 8 rules of DNA sequences (N belongs to [1,8])
|
|
1202
|
+
- [X] `dvorak`: text typed with the Dvorak keyboard layout instead of QWERTY
|
|
1203
|
+
- [X] `kbshift`: keyboard-row shift on multiple layouts (azerty, qwerty, dvorak, ...), parameterized with the layout and shift
|
|
1100
1204
|
- [X] `letter-indices`: encodes consonants and/or vowels with their corresponding indices
|
|
1101
1205
|
- [X] `markdown`: unidirectional encoding from Markdown to HTML
|
|
1206
|
+
- [X] `ns3`: ZyXEL NDMS V2 configuration password scrambling (aka NS3)
|
|
1207
|
+
- [X] `soundex`: Soundex phonetic codes (decoding gives English words with the same codes)
|
|
1208
|
+
- [X] `telegraph`: Chinese telegraph code, with the codebooks of Mainland China and Taiwan
|
|
1102
1209
|
- [X] `xx`: XXencode, a UUencode variant with an alphanumeric alphabet (`+`, `-`, digits and letters)
|
|
1210
|
+
- [X] `xy`: binary written with two symbols, `x` and `y` by default (aka X-Y)
|
|
1103
1211
|
- [X] `yenc`: Usenet binary-to-text encoding (raw, wrapped or framed with header, trailer and CRC32)
|
|
1104
1212
|
|
|
1105
1213
|
#### [Steganography](https://python-codext.readthedocs.io/en/latest/enc/stegano.html)
|
|
@@ -1116,7 +1224,10 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
1116
1224
|
|
|
1117
1225
|
#### [Web](https://python-codext.readthedocs.io/en/latest/enc/web.html)
|
|
1118
1226
|
|
|
1227
|
+
- [X] `aaencode`: JavaScript obfuscation with Japanese-style emoticons (encoding generates a program running the code)
|
|
1119
1228
|
- [X] `html`: implements entities according to [this reference](https://dev.w3.org/html5/html-author/charref)
|
|
1229
|
+
- [X] `jjencode`: JavaScript obfuscation with only symbols (encoding generates a program running the code)
|
|
1230
|
+
- [X] `jsfuck`: JavaScript with only six characters (`[]()!+`) ; encoding generates an expression giving the text, or a program running the code with `jsfuck-eval`
|
|
1120
1231
|
- [X] `url`: aka URL encoding
|
|
1121
1232
|
|
|
1122
1233
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://zenodo.org/badge/latestdoi/236679865)
|
|
12
12
|
[](https://pypi.python.org/pypi/codext/)
|
|
13
13
|
|
|
14
|
-
[**CodExt**](https://github.com/dhondta/python-codext) is a library (Python 3.10 or later) that extends the native [`codecs`](https://docs.python.org/3/library/codecs) library (namely for adding new custom encodings and character mappings) and provides **
|
|
14
|
+
[**CodExt**](https://github.com/dhondta/python-codext) is a library (Python 3.10 or later) that extends the native [`codecs`](https://docs.python.org/3/library/codecs) library (namely for adding new custom encodings and character mappings) and provides **150+ new codecs**, hence its name combining *CODecs EXTension*. It also features a **guess mode** for decoding multiple layers of encoding and **CLI tools** for convenience.
|
|
15
15
|
|
|
16
16
|
```sh
|
|
17
17
|
$ pip install codext
|
|
@@ -259,6 +259,14 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
259
259
|
|
|
260
260
|
## List of codecs
|
|
261
261
|
|
|
262
|
+
#### [Barcodes](https://python-codext.readthedocs.io/en/latest/enc/barcodes.html)
|
|
263
|
+
|
|
264
|
+
- [X] `aztec`: real (scannable) Aztec code (ISO/IEC 24778) ; optimal high-level compaction, error correction percentage given in the name (e.g. `aztec-33` ; 23% by default), rendered as an image or, with `aztec-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
265
|
+
- [X] `datamatrix`: real (scannable) Data Matrix barcode (ISO/IEC 16022, ECC200) ; most compact of the ASCII, C40, Text, X12 and EDIFACT schemes, square or rectangular (`datamatrix-rect`), rendered as an image or, with `datamatrix-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
266
|
+
- [X] `fakeqr`: hides the input bits as the modules of something that looks like a QR code but is not one, either an image or, with the `fakeqr-text` variant, plain text (the 8 QR masks are available as `fakeqr-0` to `fakeqr-7`)
|
|
267
|
+
- [X] `pdf417`: real (scannable) PDF417 stacked barcode (ISO/IEC 15438) ; most compact of the Text, Byte and Numeric modes, error correction level given in the name (e.g. `pdf417-5` ; 2 by default), rendered as an image or, with `pdf417-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
268
|
+
- [X] `qr`: real (scannable) QR code ; byte mode, error correction level given in the name (`qr-l`, `qr-m`, `qr-q`, `qr-h` ; M by default), rendered as an image or, with `qr-text`, as plain text ; decoding applies Reed-Solomon error correction
|
|
269
|
+
|
|
262
270
|
#### [BaseXX](https://python-codext.readthedocs.io/en/latest/enc/base.html)
|
|
263
271
|
|
|
264
272
|
- [X] `base1`: useless, but for the sake of completeness
|
|
@@ -279,14 +287,19 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
279
287
|
- [X] `base63`: similar to `base62` with the "`_`" added
|
|
280
288
|
- [X] `base64`: classical conversion according to RFC4648 with its variant URL (or *file*) (it also holds a variant with letters and digits inverted)
|
|
281
289
|
- [X] `base67`: custom conversion using some more special characters (also with a variant with letters and digits inverted)
|
|
290
|
+
- [X] `base69`: [Base69](https://github.com/pshihn/base69) encoding (chunks of 7 bytes, 2 characters per 7 bits)
|
|
282
291
|
- [X] `base85`: all variants of Base85 ([Ascii85](https://fr.wikipedia.org/wiki/Ascii85), [z85](https://rfc.zeromq.org/spec/32), [Adobe](https://dencode.com/string/ascii85), [(x)btoa](https://dencode.com/string/ascii85), [RFC1924](https://datatracker.ietf.org/doc/html/rfc1924), [XML](https://datatracker.ietf.org/doc/html/draft-kwiatkowski-base85-for-xml-00))
|
|
283
292
|
- [X] `base91`: [Base91](http://base91.sourceforge.net) custom conversion
|
|
284
293
|
- [X] `base100` (or *emoji*): [Base100](https://github.com/AdamNiederer/base100) custom conversion
|
|
285
|
-
- [X] `base122`: [
|
|
294
|
+
- [X] `base122`: [Base122](http://blog.kevinalbs.com/base122) custom conversion
|
|
295
|
+
- [X] `base128`: conversion to the ASCII charset (with control characters)
|
|
296
|
+
- [X] `base128-latin1`: [Base128](https://github.com/rpuntaie/base128) with printable characters (digits, letters and Latin-1)
|
|
297
|
+
- [X] `base256`: [Base256](https://github.com/KvanTTT/BaseNcoding) with one printable character per byte
|
|
286
298
|
- [X] `base1024` (or *ecoji*): [Ecoji](https://github.com/keith-turner/ecoji) custom conversion (10 bits per emoji, versions 1 and 2)
|
|
287
299
|
- [X] `base2048`: [Base2048](https://github.com/qntm/base2048) custom conversion (11 bits per character, optimised for Twitter)
|
|
288
300
|
- [X] `base32768`: [Base32768](https://github.com/qntm/base32768) custom conversion (15 bits per character, optimised for UTF-16)
|
|
289
301
|
- [X] `base65536`: [Base65536](https://github.com/qntm/base65536) custom conversion (16 bits per character, optimised for UTF-32)
|
|
302
|
+
- [X] `base131072`: Base131072 conversion (17 bits per character), as implemented by the [base131072](https://docs.rs/base131072) Rust crate
|
|
290
303
|
- [X] `bech32`: [Bech32](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki) encoding with a human-readable part ; `bech32m` for its [Bech32m](https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki) variant
|
|
291
304
|
- [X] `leb128` (or *varint*): [LEB128](https://en.wikipedia.org/wiki/LEB128) encoding of lists of integers ; `sleb128` for its signed variant
|
|
292
305
|
- [X] `base-genericN`: see [base encodings](https://python-codext.readthedocs.io/en/latest/enc/base.html) ; supports any possible base
|
|
@@ -302,46 +315,30 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
302
315
|
- [X] `bcd-extended0`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `0000`
|
|
303
316
|
- [X] `bcd-extended1`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `1111`
|
|
304
317
|
- [X] `chuck-norris`: Chuck Norris unary code (runs of the 7-bit ASCII bits written with blocks of zeros)
|
|
318
|
+
- [X] `differential-manchester`: line code writing the bits as transitions at the start of their periods (also inverted)
|
|
305
319
|
- [X] `elias-gamma`, `elias-delta`: Elias universal codes, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
306
320
|
- [X] `excess3`: uses Excess-3 (aka Stibitz code) binary encoding to convert characters from their ordinals
|
|
307
321
|
- [X] `fibonacci`: Fibonacci universal code, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
308
322
|
- [X] `gray`: aka reflected binary code
|
|
323
|
+
- [X] `hamming`: Hamming(7,4) error-correcting code, correcting single-bit errors (and detecting double-bit errors with `hamming84`)
|
|
309
324
|
- [X] `manchester`: XORes each bit of the input with `01`
|
|
310
325
|
- [X] `manchester-inverted`: variant of `manchester` ; XORes each bit of the input with `10`
|
|
326
|
+
- [X] `nrzi`: Non-Return-to-Zero Inverted line code, writing 1 (or 0 with `nrzi-space`) as a transition
|
|
311
327
|
- [X] `rotateN`: rotates characters by the specified number of bits (*N* belongs to [1, 7] ; Python 3 only)
|
|
312
328
|
|
|
313
329
|
#### [Checksums](https://python-codext.readthedocs.io/en/latest/enc/hashing.html#checksums)
|
|
314
330
|
|
|
315
331
|
- [X] `adler`: Adler32 algorithm (relies on `zlib`)
|
|
316
332
|
- [X] `crc`: CRC of lengths 8, 10-17, 21, 24, 30-32, 40, 64, 82 with a variety of polynoms
|
|
333
|
+
- [X] `fletcher`: Fletcher-16, -32 and -64 checksums
|
|
317
334
|
- [X] `luhn`: Luhn mod N algorithm
|
|
318
335
|
|
|
319
|
-
#### [
|
|
320
|
-
|
|
321
|
-
- [X] `a1z26`: keeps words whitespace-separated and uses a custom character separator
|
|
322
|
-
- [X] `cases`: set of case-related encodings (including camel-, kebab-, lower-, pascal-, upper-, snake- and swap-case, slugify, capitalize, title)
|
|
323
|
-
- [X] `dummy`: set of simple encodings (including integer, replace, reverse, word-reverse, substite and strip-spaces)
|
|
324
|
-
- [X] `octal`: dummy octal conversion (converts to 3-digits groups)
|
|
325
|
-
- [X] `octal-spaced`: variant of `octal` ; dummy octal conversion, handling whitespace separators
|
|
326
|
-
- [X] `ordinal`: dummy character ordinals conversion (converts to 3-digits groups)
|
|
327
|
-
- [X] `ordinal-spaced`: variant of `ordinal` ; dummy character ordinals conversion, handling whitespace separators
|
|
328
|
-
|
|
329
|
-
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions.html)
|
|
330
|
-
|
|
331
|
-
- [X] `gzip`: standard Gzip compression/decompression
|
|
332
|
-
- [X] `lz77`: compresses the given data with the algorithm of Lempel and Ziv of 1977
|
|
333
|
-
- [X] `lz78`: compresses the given data with the algorithm of Lempel and Ziv of 1978
|
|
334
|
-
- [X] `pkzip_deflate`: standard Zip-deflate compression/decompression
|
|
335
|
-
- [X] `pkzip_bzip2`: standard BZip2 compression/decompression
|
|
336
|
-
- [X] `pkzip_lzma`: standard LZMA compression/decompression
|
|
337
|
-
- [X] `rle`: compresses runs of identical characters with Run-Length Encoding (count before or after each character, compact, bytes or repeated-byte escape variants)
|
|
338
|
-
|
|
339
|
-
> :warning: Compression functions are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
340
|
-
|
|
341
|
-
#### [Cryptography](https://python-codext.readthedocs.io/en/latest/enc/crypto.html)
|
|
336
|
+
#### [Ciphers](https://python-codext.readthedocs.io/en/latest/enc/ciphers.html)
|
|
342
337
|
|
|
343
338
|
- [X] `adfgx`: aka ADFGX Cipher (Polybius square and columnar transposition) ; `adfgvx` for its 6x6 variant
|
|
339
|
+
- [X] `aer256`: aka AER-256 (toy cipher with float arithmetic, from online JavaScript tools)
|
|
344
340
|
- [X] `affine`: aka Affine Cipher
|
|
341
|
+
- [X] `armon64`: aka ARMON-64 (variant of AER-256 with a fourth operation)
|
|
345
342
|
- [X] `atbash`: aka Atbash Cipher
|
|
346
343
|
- [X] `autoclave`: aka Autoclave/Autokey Cipher (variant of Vigenere Cipher)
|
|
347
344
|
- [X] `bacon`: aka Baconian Cipher
|
|
@@ -350,11 +347,15 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
350
347
|
- [X] `beaufort`: aka Beaufort Cipher (variant of Vigenere Cipher)
|
|
351
348
|
- [X] `bifid`: aka Bifid Cipher (Delastelle's fractionation with a 5x5 Polybius square) ; `trifid` for its 3x3x3 cube variant
|
|
352
349
|
- [X] `chaocipher`: aka Chaocipher (two alphabets permuted after each letter)
|
|
353
|
-
- [X] `citrix`: aka Citrix CTX1 password encoding
|
|
354
350
|
- [X] `columnar`: aka Columnar Transposition Cipher (keyword-ordered columns ; a second keyword gives the double transposition)
|
|
351
|
+
- [X] `enigma`: aka Enigma machine (Enigma I, M3 and M4, with reflector, rotors, rings, positions and plugboard)
|
|
352
|
+
- [X] `ezip64`: aka EZIP-64 (variant of ARMON-64 with smaller blocks)
|
|
353
|
+
- [X] `foursquare`: aka Four-square Cipher (bigrams substituted with two keyed squares and two plain ones)
|
|
354
|
+
- [X] `fractionated-morse`: aka Fractionated Morse Cipher (Morse code split into groups of three symbols, each replaced by a letter of a keyed alphabet)
|
|
355
355
|
- [X] `gronsfeld`: aka Gronsfeld Cipher (variant of Vigenere Cipher with a numeric key)
|
|
356
356
|
- [X] `hill`: aka Hill Cipher (blocks of letters multiplied by a key matrix modulo 26)
|
|
357
357
|
- [X] `nihilist`: aka Nihilist Cipher (sums of the Polybius coordinates of the text and of a repeated key)
|
|
358
|
+
- [X] `okto3`: aka OKTO3 (variant of AER-256 with a fourth operation and smaller blocks)
|
|
358
359
|
- [X] `playfair`: aka Playfair Cipher
|
|
359
360
|
- [X] `phillips`: aka Phillips Cipher (polyalphabetic block cipher with 8 key squares)
|
|
360
361
|
- [X] `polybius`: aka Polybius Square Cipher
|
|
@@ -365,43 +366,145 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
365
366
|
- [X] `shiftN`: shift ordinals (*N* belongs to [1,255])
|
|
366
367
|
- [X] `skip`: aka Skip Cipher (transposition reading every N-th character, looping on the text)
|
|
367
368
|
- [X] `trithemius`: aka Trithemius Cipher (variant of Vigenere Cipher)
|
|
369
|
+
- [X] `twosquare`: aka Two-square Cipher or Double Playfair (bigrams substituted with two keyed squares, vertically or horizontally)
|
|
370
|
+
- [X] `vernam`: aka Vernam Cipher (XOR with a repeating key)
|
|
368
371
|
- [X] `vic`: aka VIC Cipher
|
|
369
372
|
- [X] `vigenere`: aka Vigenere Cipher
|
|
370
373
|
- [X] `xorN`: XOR with a single byte (*N* belongs to [1,255])
|
|
374
|
+
- [X] `zara128`: aka ZARA-128 (variant of AER-256 with additions only and smaller blocks)
|
|
375
|
+
|
|
376
|
+
> :warning: Ciphers are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
377
|
+
|
|
378
|
+
#### [Common](https://python-codext.readthedocs.io/en/latest/enc/common.html)
|
|
379
|
+
|
|
380
|
+
- [X] `a1z26`: keeps words whitespace-separated and uses a custom character separator
|
|
381
|
+
- [X] `cases`: set of case-related encodings (including camel-, kebab-, lower-, pascal-, upper-, snake- and swap-case, slugify, capitalize, title)
|
|
382
|
+
- [X] `dummy`: set of simple encodings (including integer, replace, reverse, word-reverse, substite and strip-spaces)
|
|
383
|
+
- [X] `octal`: dummy octal conversion (converts to 3-digits groups)
|
|
384
|
+
- [X] `octal-spaced`: variant of `octal` ; dummy octal conversion, handling whitespace separators
|
|
385
|
+
- [X] `ordinal`: dummy character ordinals conversion (converts to 3-digits groups)
|
|
386
|
+
- [X] `ordinal-spaced`: variant of `ordinal` ; dummy character ordinals conversion, handling whitespace separators
|
|
371
387
|
|
|
372
|
-
|
|
388
|
+
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions.html)
|
|
389
|
+
|
|
390
|
+
- [X] `gzip`: standard Gzip compression/decompression
|
|
391
|
+
- [X] `huffman`: canonical Huffman coding of the bytes, with a self-describing header
|
|
392
|
+
- [X] `lz77`: compresses the given data with the algorithm of Lempel and Ziv of 1977
|
|
393
|
+
- [X] `lz78`: compresses the given data with the algorithm of Lempel and Ziv of 1978
|
|
394
|
+
- [X] `pkzip_deflate`: standard Zip-deflate compression/decompression
|
|
395
|
+
- [X] `pkzip_bzip2`: standard BZip2 compression/decompression
|
|
396
|
+
- [X] `pkzip_lzma`: standard LZMA compression/decompression
|
|
397
|
+
- [X] `rle`: compresses runs of identical characters with Run-Length Encoding (count before or after each character, compact, bytes or repeated-byte escape variants)
|
|
398
|
+
- [X] `zstd`: Zstandard compression/decompression (relies on `compression.zstd` from Python 3.14, on `backports.zstd` before)
|
|
399
|
+
|
|
400
|
+
> :warning: Compression functions are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
401
|
+
|
|
402
|
+
#### [Esoteric](https://python-codext.readthedocs.io/en/latest/enc/esoteric.html)
|
|
403
|
+
|
|
404
|
+
- [X] `befunge`: Befunge-93, two-dimensional esoteric language (encoding generates a program printing the text)
|
|
405
|
+
- [X] `brainfuck`: well-known esoteric programming language (encoding generates a program printing the text)
|
|
406
|
+
- [X] `church`: Church encoding in the lambda calculus (encoding generates a lambda term of the list of the numerals of the bytes)
|
|
407
|
+
- [X] `cow`: esoteric language made of variations of "moo" (Brainfuck-like, with a register and integer output)
|
|
408
|
+
- [X] `lolcode`: esoteric language inspired by lolcats (encoding generates a program printing the text), also with lowercase keywords
|
|
409
|
+
- [X] `malbolge`: esoteric language designed to be as difficult to program in as possible (encoding generates a program printing the text)
|
|
410
|
+
- [X] `ook`: Brainfuck derivative for orang-utans (`Ook.`, `Ook?` and `Ook!`), also in its short form
|
|
411
|
+
- [X] `piet`: esoteric language whose programs are images looking like abstract paintings (encoding generates a PNG image of a program printing the text)
|
|
412
|
+
- [X] `pikalang`: Brainfuck derivative using Pikachu's vocabulary
|
|
413
|
+
|
|
414
|
+
#### [Frequency](https://python-codext.readthedocs.io/en/latest/enc/frequency.html)
|
|
415
|
+
|
|
416
|
+
- [X] `coquelet`: Coquelet 13 and 8 (aka Mk 1 and Mk 2), radio teleprinter systems sending each ITA-2 character as two audio tones (gives their frequencies in Hz)
|
|
417
|
+
- [X] `dtmf`: Dual-Tone Multi-Frequency telephone keypad signaling (gives the frequencies of the tones in Hz, or a WAV recording with `dtmf-wav`, decoded with the Goertzel algorithm)
|
|
418
|
+
- [X] `piccolo`: Piccolo I, II (aka Mk 6) and III, radio teleprinter systems sending each ITA-2 character as one or two audio tones (gives their frequencies in Hz)
|
|
373
419
|
|
|
374
420
|
#### [Hashing](https://python-codext.readthedocs.io/en/latest/enc/hashing.html)
|
|
375
421
|
|
|
422
|
+
- [X] `argon2`: aka Argon2 (RFC 9106) with its i, d and id variants (relies on `argon2-cffi`, e.g. with `pip install codext[argon2]`)
|
|
423
|
+
- [X] `bcrypt`: aka bcrypt password hash (relies on `bcrypt` when available, e.g. with `pip install codext[bcrypt]`, pure Python otherwise)
|
|
424
|
+
- [X] `bigcrypt`: aka BigCrypt (DES-based crypt variant for long passwords)
|
|
376
425
|
- [X] `blake`: includes BLAKE2b and BLAKE2s (Python 3 only ; relies on `hashlib`)
|
|
426
|
+
- [X] `bsd-nthash`: NT hash in the `$3$$` modular crypt format of modern BSD
|
|
427
|
+
- [X] `bsdi-crypt`: aka BSDi extended DES crypt (parametrized with the number of rounds)
|
|
428
|
+
- [X] `cisco-asa`: Cisco ASA password hash (parametrized with the user name)
|
|
429
|
+
- [X] `cisco-pix`: Cisco PIX password hash (parametrized with the user name)
|
|
377
430
|
- [X] `crypt`: Unix's crypt hash for passwords (Python 3 and Unix only ; relies on `crypt`)
|
|
378
|
-
- [X] `
|
|
379
|
-
- [X] `
|
|
431
|
+
- [X] `crypt16`: aka crypt16 (DES-based crypt variant with two computations)
|
|
432
|
+
- [X] `ctph`: context triggered piecewise hash of the ctph.js library (as used by CyberChef)
|
|
433
|
+
- [X] `fnv`: aka Fowler-Noll-Vo ; includes FNV-1 and FNV-1a in 32, 64, 128, 256, 512 and 1024 bits
|
|
434
|
+
- [X] `gosthash`: aka Streebog (GOST R 34.11-2012) in 256 and 512 bits
|
|
435
|
+
- [X] `hmac`: keyed-hash message authentication code with MD5, SHA-1, SHA-2, SHA-3 or BLAKE2 (relies on `hmac`)
|
|
436
|
+
- [X] `keccak`: original Keccak (pre-SHA-3 padding, as used e.g. by Ethereum) in 224, 256, 384 and 512 bits
|
|
437
|
+
- [X] `ldap-md5`: RFC 2307 LDAP password schemes ; `ldap-sha1`, `ldap-salted-md5` and `ldap-salted-sha1` for the SHA-1 and salted variants
|
|
438
|
+
- [X] `lm`: aka LAN Manager hash, the legacy Windows password hash (with a pure Python DES)
|
|
439
|
+
- [X] `md`: aka Message Digest ; includes MD2, MD4 (relies on `hashlib` when available, pure Python otherwise), MD5 (relies on `hashlib`) and MD6 (digest sizes multiple of 8, up to 512 bits)
|
|
440
|
+
- [X] `mscash`: aka MS-CASH / Domain Cached Credentials v1 (parametrized with the user name) ; `mscash2` for v2 (PBKDF2)
|
|
441
|
+
- [X] `mssql2000`: Microsoft SQL Server 2000 password hash ; `mssql2005` for the 2005 version
|
|
442
|
+
- [X] `mysql`: MySQL password hashes ; includes the MySQL 3.23 hash and the MySQL 4.1+ native password hash
|
|
443
|
+
- [X] `ntlm`: aka NT hash, the Windows password hash (MD4 of the UTF-16LE password)
|
|
444
|
+
- [X] `oracle10`: legacy Oracle 10g password hash (parametrized with the user name) ; `oracle11` for the 11g version
|
|
445
|
+
- [X] `phpass`: portable PHP password hash (parametrized with the iteration count ; used e.g. by WordPress)
|
|
446
|
+
- [X] `ripemd160`: aka RIPEMD-160 (relies on `hashlib` when available, pure Python otherwise)
|
|
447
|
+
- [X] `scrypt`: aka scrypt (RFC 7914), parameterized with its cost ln, block size r and parallelism p (relies on `hashlib`)
|
|
448
|
+
- [X] `sha`: aka Secure Hash Algorithms ; includes SHA0, SHA1, 224, 256, 384, 512 (Python2/3) but also SHA3-224, -256, -384 and -512 (Python 3 only ; relies on `hashlib`)
|
|
380
449
|
- [X] `shake`: aka SHAKE hashing (Python 3 only ; relies on `hashlib`)
|
|
450
|
+
- [X] `snefru`: aka Snefru (Merkle's hash function) in 32 to 480 bits, with 2 to 8 passes
|
|
451
|
+
- [X] `ssdeep`: ssdeep fuzzy hash (context triggered piecewise hash, same output as libfuzzy)
|
|
452
|
+
- [X] `sun-md5-crypt`: aka Sun MD5 crypt (parametrized with the number of rounds)
|
|
453
|
+
- [X] `whirlpool`: aka Whirlpool (relies on `hashlib` when available, pure Python otherwise)
|
|
381
454
|
|
|
382
455
|
> :warning: Hash functions are of course definitely **NOT** encoding functions ; they are implemented for convenience with the `.encode(...)` API from `codecs` and useful for chaning codecs.
|
|
383
456
|
|
|
384
457
|
#### [Languages](https://python-codext.readthedocs.io/en/latest/enc/languages.html)
|
|
385
458
|
|
|
386
459
|
- [X] `braille`: well-known braille language (Python 3 only)
|
|
460
|
+
- [X] `fancy`: Unicode styled alphabets (mathematical bold, italic, script, fraktur, double-struck, ..., circled and parenthesized letters), also `fullwidth` and `smallcaps`
|
|
387
461
|
- [X] `ipsum`: aka lorem ipsum
|
|
388
|
-
- [X] `galactic`: aka
|
|
462
|
+
- [X] `galactic`: aka Standard Galactic Alphabet or Minecraft enchantment language (as written by most online translators)
|
|
389
463
|
- [X] `leetspeak`: based on minimalistic elite speaking rules
|
|
390
464
|
- [X] `morse`: uses whitespace as a separator
|
|
391
465
|
- [X] `navajo`: only handles letters (not full words from the Navajo dictionary)
|
|
392
466
|
- [X] `radio`: aka NATO or radio phonetic alphabet
|
|
393
467
|
- [X] `southpark`: converts letters to Kenny's language from Southpark (whitespace is also handled)
|
|
394
468
|
- [X] `southpark-icase`: case insensitive variant of `southpark`
|
|
395
|
-
- [X] `tap`: converts text to tap/knock code, commonly used by prisoners
|
|
469
|
+
- [X] `tap`: converts text to tap/knock code, commonly used by prisoners (as written by cryptii)
|
|
396
470
|
- [X] `tomtom`: similar to `morse`, using slashes and backslashes
|
|
471
|
+
- [X] `upsidedown`: upside-down (flip) text, with turned Unicode characters in reverse order
|
|
472
|
+
|
|
473
|
+
#### [Obfuscation](https://python-codext.readthedocs.io/en/latest/enc/obfuscation.html)
|
|
474
|
+
|
|
475
|
+
- [X] `arabica-2rs`: aka ARABICA-2RS (URI-encoded text substituted by Arabic letters, from online JavaScript tools)
|
|
476
|
+
- [X] `atom128`: aka ATOM-128 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
477
|
+
- [X] `chinzo-72c`: aka CHINZO-72C (URI-encoded text substituted by Chinese characters, from online JavaScript tools)
|
|
478
|
+
- [X] `cisco-type7`: aka Cisco IOS type 7 password encoding
|
|
479
|
+
- [X] `citrix`: aka Citrix CTX1 password encoding
|
|
480
|
+
- [X] `esab46`: aka ESAB-46 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
481
|
+
- [X] `feron74`: aka FERON-74 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
482
|
+
- [X] `gila7`: aka GILA7 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
483
|
+
- [X] `hazz15`: aka HAZZ-15 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
484
|
+
- [X] `hindia-4x`: aka HINDIA-4X (URI-encoded text substituted by Bengali and Devanagari characters, from online JavaScript tools)
|
|
485
|
+
- [X] `japoo-c2s`: aka JAPOO-C2S (URI-encoded text substituted by Chinese and Japanese characters, from online JavaScript tools)
|
|
486
|
+
- [X] `korex-3s`: aka KOREX-3S (URI-encoded text substituted by Korean characters, from online JavaScript tools)
|
|
487
|
+
- [X] `megan35`: aka MEGAN-35 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
488
|
+
- [X] `tigo-3fx`: aka TIGO-3FX (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
489
|
+
- [X] `tripo-5`: aka TRIPO-5 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
490
|
+
- [X] `zong22`: aka ZONG22 (Base64 with a shuffled alphabet, from online JavaScript tools)
|
|
397
491
|
|
|
398
492
|
#### [Others](https://python-codext.readthedocs.io/en/latest/enc/others.html)
|
|
399
493
|
|
|
494
|
+
- [X] `asn1`: readable dump of ASN.1 BER/DER elements (e.g. certificates and keys), encoded back to DER
|
|
495
|
+
- [X] `ber`: text as an ASN.1 BER string element (decoding indefinite lengths and segmented strings)
|
|
400
496
|
- [X] `binhex`: BinHex 4.0 (`.hqx`), the binary-to-text encoding of the classic Mac OS
|
|
497
|
+
- [X] `der`: text as an ASN.1 DER string element (UTF8String)
|
|
401
498
|
- [X] `dna`: implements the 8 rules of DNA sequences (N belongs to [1,8])
|
|
499
|
+
- [X] `dvorak`: text typed with the Dvorak keyboard layout instead of QWERTY
|
|
500
|
+
- [X] `kbshift`: keyboard-row shift on multiple layouts (azerty, qwerty, dvorak, ...), parameterized with the layout and shift
|
|
402
501
|
- [X] `letter-indices`: encodes consonants and/or vowels with their corresponding indices
|
|
403
502
|
- [X] `markdown`: unidirectional encoding from Markdown to HTML
|
|
503
|
+
- [X] `ns3`: ZyXEL NDMS V2 configuration password scrambling (aka NS3)
|
|
504
|
+
- [X] `soundex`: Soundex phonetic codes (decoding gives English words with the same codes)
|
|
505
|
+
- [X] `telegraph`: Chinese telegraph code, with the codebooks of Mainland China and Taiwan
|
|
404
506
|
- [X] `xx`: XXencode, a UUencode variant with an alphanumeric alphabet (`+`, `-`, digits and letters)
|
|
507
|
+
- [X] `xy`: binary written with two symbols, `x` and `y` by default (aka X-Y)
|
|
405
508
|
- [X] `yenc`: Usenet binary-to-text encoding (raw, wrapped or framed with header, trailer and CRC32)
|
|
406
509
|
|
|
407
510
|
#### [Steganography](https://python-codext.readthedocs.io/en/latest/enc/stegano.html)
|
|
@@ -418,7 +521,10 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
418
521
|
|
|
419
522
|
#### [Web](https://python-codext.readthedocs.io/en/latest/enc/web.html)
|
|
420
523
|
|
|
524
|
+
- [X] `aaencode`: JavaScript obfuscation with Japanese-style emoticons (encoding generates a program running the code)
|
|
421
525
|
- [X] `html`: implements entities according to [this reference](https://dev.w3.org/html5/html-author/charref)
|
|
526
|
+
- [X] `jjencode`: JavaScript obfuscation with only symbols (encoding generates a program running the code)
|
|
527
|
+
- [X] `jsfuck`: JavaScript with only six characters (`[]()!+`) ; encoding generates an expression giving the text, or a program running the code with `jsfuck-eval`
|
|
422
528
|
- [X] `url`: aka URL encoding
|
|
423
529
|
|
|
424
530
|
|
|
@@ -11,13 +11,17 @@ nav:
|
|
|
11
11
|
- Features: features.md
|
|
12
12
|
- 'Guess mode': guessing.md
|
|
13
13
|
- Encodings:
|
|
14
|
+
- Barcodes: enc/barcodes.md
|
|
14
15
|
- Base: enc/base.md
|
|
15
16
|
- Binary: enc/binary.md
|
|
17
|
+
- Ciphers: enc/ciphers.md
|
|
16
18
|
- Common: enc/common.md
|
|
17
19
|
- Compressions: enc/compressions.md
|
|
18
|
-
-
|
|
20
|
+
- Esoteric: enc/esoteric.md
|
|
21
|
+
- Frequency: enc/frequency.md
|
|
19
22
|
- Hashing: enc/hashing.md
|
|
20
23
|
- Languages: enc/languages.md
|
|
24
|
+
- Obfuscation: enc/obfuscation.md
|
|
21
25
|
- Others: enc/others.md
|
|
22
26
|
- Steganography: enc/stegano.md
|
|
23
27
|
- Web: enc/web.md
|