codext 1.16.5__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.1/.github/dependabot.yml +15 -0
- codext-2.0.1/.github/workflows/python-package.yml +141 -0
- codext-2.0.1/.github/workflows/security.yml +31 -0
- codext-1.16.5/.readthedocs.yml → codext-2.0.1/.readthedocs.yaml +2 -2
- {codext-1.16.5 → codext-2.0.1}/PKG-INFO +180 -42
- {codext-1.16.5 → codext-2.0.1}/README.md +173 -40
- codext-2.0.1/SECURITY.md +17 -0
- {codext-1.16.5 → codext-2.0.1}/docs/mkdocs.yml +29 -9
- {codext-1.16.5 → codext-2.0.1}/docs/pages/cli.md +2 -0
- codext-2.0.1/docs/pages/contributing.md +32 -0
- codext-2.0.1/docs/pages/enc/barcodes.md +180 -0
- codext-2.0.1/docs/pages/enc/base.md +269 -0
- codext-2.0.1/docs/pages/enc/binary.md +281 -0
- codext-2.0.1/docs/pages/enc/ciphers.md +755 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/enc/common.md +2 -2
- codext-2.0.1/docs/pages/enc/compressions.md +143 -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-1.16.5 → 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-1.16.5 → codext-2.0.1}/docs/pages/enc/stegano.md +52 -1
- codext-2.0.1/docs/pages/enc/web.md +109 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/features.md +4 -1
- {codext-1.16.5 → codext-2.0.1}/docs/pages/guessing.md +49 -14
- {codext-1.16.5 → codext-2.0.1}/docs/pages/howto.md +6 -6
- codext-2.0.1/docs/pages/index.md +15 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/manipulations.md +2 -2
- codext-2.0.1/docs/requirements.txt +6 -0
- {codext-1.16.5 → codext-2.0.1}/pyproject.toml +47 -2
- {codext-1.16.5 → codext-2.0.1}/requirements.txt +1 -0
- codext-2.0.1/src/codext/VERSION.txt +1 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/__common__.py +231 -448
- codext-2.0.1/src/codext/__init__.py +32 -0
- codext-1.16.5/src/codext/__init__.py → codext-2.0.1/src/codext/__main__.py +45 -30
- 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-1.16.5 → codext-2.0.1}/src/codext/base/__init__.py +9 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/_base.py +76 -14
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/_base2n.py +16 -2
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/base100.py +7 -1
- codext-2.0.1/src/codext/base/base1024.py +177 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/base122.py +8 -0
- 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.1/src/codext/base/base38.py +62 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/base45.py +11 -1
- codext-2.0.1/src/codext/base/base65536.py +158 -0
- codext-2.0.1/src/codext/base/base69.py +73 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/base85.py +13 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/base91.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/base/baseN.py +15 -0
- codext-2.0.1/src/codext/base/bech32.py +119 -0
- codext-2.0.1/src/codext/base/leb128.py +73 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/binary/__init__.py +5 -0
- codext-2.0.1/src/codext/binary/_universal.py +57 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/binary/baudot.py +12 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/binary/bcd.py +7 -0
- codext-2.0.1/src/codext/binary/chucknorris.py +59 -0
- codext-2.0.1/src/codext/binary/elias.py +78 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/binary/excess3.py +7 -0
- codext-2.0.1/src/codext/binary/fibonacci.py +65 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/binary/gray.py +6 -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-1.16.5 → codext-2.0.1}/src/codext/binary/rotate.py +11 -7
- {codext-1.16.5 → codext-2.0.1}/src/codext/checksums/__init__.py +1 -0
- codext-2.0.1/src/codext/checksums/adler.py +21 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/checksums/crc.py +9 -1
- codext-2.0.1/src/codext/checksums/fletcher.py +39 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/checksums/luhn.py +8 -1
- codext-2.0.1/src/codext/ciphers/__init__.py +33 -0
- 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/adfgx.py +124 -0
- codext-2.0.1/src/codext/ciphers/aer256.py +35 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/affine.py +5 -0
- codext-2.0.1/src/codext/ciphers/armon64.py +37 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/atbash.py +5 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/bacon.py +5 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/barbie.py +4 -2
- codext-2.0.1/src/codext/ciphers/bazeries.py +121 -0
- codext-2.0.1/src/codext/ciphers/bifid.py +87 -0
- codext-2.0.1/src/codext/ciphers/chaocipher.py +77 -0
- codext-2.0.1/src/codext/ciphers/columnar.py +80 -0
- 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/hill.py +110 -0
- codext-2.0.1/src/codext/ciphers/nihilist.py +86 -0
- codext-2.0.1/src/codext/ciphers/okto3.py +35 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/playfair.py +40 -45
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/polybius.py +6 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/railfence.py +6 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/rot.py +8 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/scytale.py +6 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/shift.py +3 -0
- codext-2.0.1/src/codext/ciphers/skip.py +59 -0
- codext-2.0.1/src/codext/ciphers/twosquare.py +82 -0
- codext-2.0.1/src/codext/ciphers/vernam.py +39 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/vic.py +9 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/vigenere.py +54 -3
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/xor.py +3 -0
- codext-2.0.1/src/codext/ciphers/zara128.py +33 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/a1z26.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/cases.py +6 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/dummy.py +6 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/octal.py +3 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/ordinal.py +3 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/compressions/__init__.py +3 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/compressions/gzipp.py +6 -0
- codext-2.0.1/src/codext/compressions/huffman.py +137 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/compressions/lz77.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/compressions/lz78.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/compressions/pkzip.py +6 -0
- codext-2.0.1/src/codext/compressions/rle.py +116 -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-1.16.5 → codext-2.0.1}/src/codext/hashing/blake.py +7 -1
- codext-2.0.1/src/codext/hashing/cisco.py +41 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/hashing/crypt.py +7 -1
- 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-1.16.5 → codext-2.0.1}/src/codext/hashing/mmh3.py +6 -1
- 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-1.16.5 → codext-2.0.1}/src/codext/hashing/shake.py +5 -1
- 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-1.16.5 → codext-2.0.1}/src/codext/languages/__init__.py +2 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/braille.py +6 -0
- codext-2.0.1/src/codext/languages/fancy.py +119 -0
- codext-2.0.1/src/codext/languages/galactic.py +116 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/ipsum.py +8 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/leetspeak.py +6 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/morse.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/navajo.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/radio.py +6 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/southpark.py +7 -0
- codext-2.0.1/src/codext/languages/tap.py +103 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/languages/tomtom.py +6 -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-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/obfuscation}/citrix.py +4 -2
- 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.1/src/codext/others/__init__.py +16 -0
- codext-2.0.1/src/codext/others/asn1.py +482 -0
- codext-2.0.1/src/codext/others/binhex.py +125 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/others/dna.py +4 -2
- codext-2.0.1/src/codext/others/dvorak.py +45 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/others/kbshift.py +5 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/others/letters.py +8 -1
- {codext-1.16.5 → codext-2.0.1}/src/codext/others/markdown.py +6 -0
- 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-1.16.5 → codext-2.0.1}/src/codext/others/uuencode.py +8 -0
- codext-2.0.1/src/codext/others/xxencode.py +83 -0
- codext-2.0.1/src/codext/others/xy.py +30 -0
- codext-2.0.1/src/codext/others/yenc.py +121 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/__init__.py +2 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/hexagram.py +7 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/klopf.py +6 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/resistor.py +6 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/rick.py +4 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/sms.py +8 -1
- codext-2.0.1/src/codext/stegano/tags.py +62 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/stegano/whitespace.py +38 -9
- codext-2.0.1/src/codext/stegano/zerowidth.py +112 -0
- 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-1.16.5 → codext-2.0.1}/src/codext/web/html.py +8 -0
- codext-2.0.1/src/codext/web/jjencode.py +135 -0
- codext-2.0.1/src/codext/web/jsfuck.py +635 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/web/url.py +6 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext.egg-info/PKG-INFO +180 -42
- codext-2.0.1/src/codext.egg-info/SOURCES.txt +265 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext.egg-info/entry_points.txt +10 -1
- codext-2.0.1/src/codext.egg-info/requires.txt +13 -0
- {codext-1.16.5 → codext-2.0.1}/tests/test_base.py +80 -0
- {codext-1.16.5 → codext-2.0.1}/tests/test_common.py +109 -5
- {codext-1.16.5 → codext-2.0.1}/tests/test_generated.py +3 -8
- codext-2.0.1/tests/test_manual.py +1327 -0
- codext-1.16.5/.coveragerc +0 -24
- codext-1.16.5/.github/workflows/python-package.yml +0 -128
- codext-1.16.5/docs/pages/enc/base.md +0 -172
- codext-1.16.5/docs/pages/enc/binary.md +0 -166
- codext-1.16.5/docs/pages/enc/compressions.md +0 -75
- codext-1.16.5/docs/pages/enc/crypto.md +0 -356
- codext-1.16.5/docs/pages/enc/hashing.md +0 -139
- codext-1.16.5/docs/pages/enc/others.md +0 -79
- codext-1.16.5/docs/pages/enc/web.md +0 -38
- codext-1.16.5/docs/pages/index.md +0 -9
- codext-1.16.5/docs/requirements.txt +0 -5
- codext-1.16.5/pytest.ini +0 -2
- codext-1.16.5/src/codext/VERSION.txt +0 -1
- codext-1.16.5/src/codext/binary/manchester.py +0 -50
- codext-1.16.5/src/codext/checksums/adler.py +0 -17
- codext-1.16.5/src/codext/crypto/__init__.py +0 -16
- codext-1.16.5/src/codext/hashing/__init__.py +0 -8
- codext-1.16.5/src/codext/hashing/md.py +0 -59
- codext-1.16.5/src/codext/hashing/sha.py +0 -27
- codext-1.16.5/src/codext/languages/galactic.py +0 -34
- codext-1.16.5/src/codext/languages/tap.py +0 -38
- codext-1.16.5/src/codext/others/__init__.py +0 -7
- codext-1.16.5/src/codext/web/__init__.py +0 -4
- codext-1.16.5/src/codext.egg-info/SOURCES.txt +0 -137
- codext-1.16.5/src/codext.egg-info/requires.txt +0 -4
- codext-1.16.5/tests/test_manual.py +0 -203
- {codext-1.16.5 → codext-2.0.1}/.github/ISSUE_TEMPLATE/add-encoding.yml +0 -0
- {codext-1.16.5 → codext-2.0.1}/.github/copilot-instructions.md +0 -0
- {codext-1.16.5 → codext-2.0.1}/.github/prompts/add_codec.prompt.md +0 -0
- {codext-1.16.5 → codext-2.0.1}/.github/pull_request_template.md +0 -0
- {codext-1.16.5 → codext-2.0.1}/.gitignore +0 -0
- {codext-1.16.5 → codext-2.0.1}/LICENSE +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/coverage.svg +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/hakin9-codext.pdf +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/css/extra.css +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/demos/using-bases.gif +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/demos/using-codext.gif +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/demos/using-debase.gif +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/img/banner.png +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/img/icon.png +0 -0
- {codext-1.16.5 → codext-2.0.1}/docs/pages/img/logo.png +0 -0
- {codext-1.16.5 → codext-2.0.1}/setup.cfg +0 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/__info__.py +0 -0
- {codext-1.16.5/src/codext/crypto → codext-2.0.1/src/codext/ciphers}/phillips.py +0 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/common/__init__.py +0 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext/macros.json +0 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext.egg-info/dependency_links.txt +0 -0
- {codext-1.16.5 → codext-2.0.1}/src/codext.egg-info/top_level.txt +0 -0
- {codext-1.16.5 → codext-2.0.1}/tests/__init__.py +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
- package-ecosystem: github-actions
|
|
4
|
+
directory: /
|
|
5
|
+
schedule:
|
|
6
|
+
interval: monthly
|
|
7
|
+
groups:
|
|
8
|
+
actions:
|
|
9
|
+
patterns: ["*"]
|
|
10
|
+
- package-ecosystem: pip
|
|
11
|
+
directory: /
|
|
12
|
+
schedule:
|
|
13
|
+
interval: monthly
|
|
14
|
+
# dependencies are minimum versions (>=) ; only open security updates, not routine upgrades
|
|
15
|
+
open-pull-requests-limit: 0
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
# This workflow will install Python dependencies, run tests and lint with a variety of Python versions
|
|
2
|
+
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python
|
|
3
|
+
|
|
4
|
+
name: build
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [ "main" ]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ "main" ]
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
|
|
15
|
+
jobs:
|
|
16
|
+
prepare:
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
outputs:
|
|
19
|
+
package: ${{ steps.pkg.outputs.package }}
|
|
20
|
+
pypi_url: ${{ steps.pkg.outputs.pypi_url }}
|
|
21
|
+
steps:
|
|
22
|
+
- name: Compute package name from the repository's
|
|
23
|
+
id: pkg
|
|
24
|
+
run: |
|
|
25
|
+
name="${GITHUB_REPOSITORY##*/}"
|
|
26
|
+
echo "package=${name#python-}" >> $GITHUB_OUTPUT
|
|
27
|
+
echo "pypi_url=https://pypi.org/p/${name#python-}" >> $GITHUB_OUTPUT
|
|
28
|
+
build:
|
|
29
|
+
needs: prepare
|
|
30
|
+
runs-on: ${{ matrix.os }}
|
|
31
|
+
strategy:
|
|
32
|
+
fail-fast: false
|
|
33
|
+
matrix:
|
|
34
|
+
os: [ubuntu-latest]
|
|
35
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
36
|
+
env:
|
|
37
|
+
package: ${{ needs.prepare.outputs.package }}
|
|
38
|
+
cov_python_version: "3.13"
|
|
39
|
+
steps:
|
|
40
|
+
- uses: actions/checkout@v7
|
|
41
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
42
|
+
uses: actions/setup-python@v7
|
|
43
|
+
with:
|
|
44
|
+
python-version: ${{ matrix.python-version }}
|
|
45
|
+
- name: Install ${{ env.package }}
|
|
46
|
+
run: |
|
|
47
|
+
python -m pip install --upgrade pip
|
|
48
|
+
python -m pip install pytest pytest-cov
|
|
49
|
+
pip install -r requirements.txt
|
|
50
|
+
pip install "tinyscript>=1.31"
|
|
51
|
+
pip install .[bcrypt]
|
|
52
|
+
- name: Test ${{ env.package }} with pytest
|
|
53
|
+
run: |
|
|
54
|
+
pytest --cov=$package --cov-report=xml
|
|
55
|
+
- name: Upload coverage report
|
|
56
|
+
if: matrix.python-version == env.cov_python_version
|
|
57
|
+
uses: actions/upload-artifact@v7
|
|
58
|
+
with:
|
|
59
|
+
name: coverage-report
|
|
60
|
+
path: coverage.xml
|
|
61
|
+
coverage:
|
|
62
|
+
# only publish the badge for commits on main (not for pull requests)
|
|
63
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
64
|
+
needs: build
|
|
65
|
+
permissions:
|
|
66
|
+
contents: write
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
env:
|
|
69
|
+
cov_badge_path: docs/coverage.svg
|
|
70
|
+
steps:
|
|
71
|
+
- uses: actions/checkout@v7
|
|
72
|
+
- name: Set up Python
|
|
73
|
+
uses: actions/setup-python@v7
|
|
74
|
+
with:
|
|
75
|
+
python-version: "3.13"
|
|
76
|
+
- name: Download coverage report
|
|
77
|
+
uses: actions/download-artifact@v8
|
|
78
|
+
with:
|
|
79
|
+
name: coverage-report
|
|
80
|
+
- name: Make coverage badge
|
|
81
|
+
run: |
|
|
82
|
+
pip install genbadge[coverage]
|
|
83
|
+
genbadge coverage -i coverage.xml -o $cov_badge_path
|
|
84
|
+
- name: Push coverage badge
|
|
85
|
+
run: |
|
|
86
|
+
# keep the badge alone on an orphan branch so that main is never modified by the workflow
|
|
87
|
+
git config --local user.email "github-actions[bot]@users.noreply.github.com"
|
|
88
|
+
git config --local user.name "github-actions[bot]"
|
|
89
|
+
if git fetch --depth=1 origin coverage-badge 2>/dev/null && \
|
|
90
|
+
git show FETCH_HEAD:$cov_badge_path | cmp -s - $cov_badge_path; then
|
|
91
|
+
echo "Coverage badge unchanged"
|
|
92
|
+
exit 0
|
|
93
|
+
fi
|
|
94
|
+
git checkout --orphan coverage-badge
|
|
95
|
+
git rm -rqf --cached .
|
|
96
|
+
git add $cov_badge_path
|
|
97
|
+
git commit -m "Update coverage badge"
|
|
98
|
+
git push origin coverage-badge --force
|
|
99
|
+
deploy:
|
|
100
|
+
# only release from main, never from pull requests
|
|
101
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
102
|
+
environment:
|
|
103
|
+
name: pypi
|
|
104
|
+
url: ${{ needs.prepare.outputs.pypi_url }}
|
|
105
|
+
permissions:
|
|
106
|
+
contents: read
|
|
107
|
+
id-token: write # for PyPI trusted publishing (OIDC)
|
|
108
|
+
runs-on: ubuntu-latest
|
|
109
|
+
needs: [prepare, build]
|
|
110
|
+
env:
|
|
111
|
+
package: ${{ needs.prepare.outputs.package }}
|
|
112
|
+
steps:
|
|
113
|
+
- uses: actions/checkout@v7
|
|
114
|
+
- name: Check whether the version is already on PyPI
|
|
115
|
+
# comparing with PyPI (not with the previous commit) also releases a version whose push did not trigger a deploy
|
|
116
|
+
id: version
|
|
117
|
+
run: |
|
|
118
|
+
version=$(tr -d '[:space:]' < src/$package/VERSION.txt)
|
|
119
|
+
status=$(curl -s -o /dev/null -w '%{http_code}' --retry 3 "https://pypi.org/pypi/$package/$version/json")
|
|
120
|
+
case "$status" in
|
|
121
|
+
200) echo "Version $version is already on PyPI" ; echo "new=false" >> "$GITHUB_OUTPUT" ;;
|
|
122
|
+
404) echo "Version $version is not on PyPI yet" ; echo "new=true" >> "$GITHUB_OUTPUT" ;;
|
|
123
|
+
*) echo "::error::Unexpected HTTP status $status from PyPI" ; exit 1 ;;
|
|
124
|
+
esac
|
|
125
|
+
- if: steps.version.outputs.new == 'true'
|
|
126
|
+
name: Set up Python
|
|
127
|
+
uses: actions/setup-python@v7
|
|
128
|
+
with:
|
|
129
|
+
python-version: "3.13"
|
|
130
|
+
- if: steps.version.outputs.new == 'true'
|
|
131
|
+
name: Cleanup README
|
|
132
|
+
run: |
|
|
133
|
+
sed -ri 's/^(##*)\s*:.*:\s*/\1 /g' README.md
|
|
134
|
+
awk '{if (match($0,"## Supporters")) exit; print}' README.md > README
|
|
135
|
+
mv -f README README.md
|
|
136
|
+
- if: steps.version.outputs.new == 'true'
|
|
137
|
+
name: Build ${{ needs.prepare.outputs.package }} package
|
|
138
|
+
run: python -m pip install --upgrade build && python -m build
|
|
139
|
+
- if: steps.version.outputs.new == 'true'
|
|
140
|
+
name: Publish to PyPI
|
|
141
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# This workflow audits the project's dependencies for known vulnerabilities
|
|
2
|
+
# It is separate from python-package.yml so that a new advisory never blocks a release
|
|
3
|
+
|
|
4
|
+
name: security
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
push:
|
|
8
|
+
branches: [ "main" ]
|
|
9
|
+
pull_request:
|
|
10
|
+
branches: [ "main" ]
|
|
11
|
+
schedule:
|
|
12
|
+
- cron: "0 6 * * 1" # weekly, catches new advisories between pushes
|
|
13
|
+
workflow_dispatch:
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
jobs:
|
|
19
|
+
pip-audit:
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v7
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@v7
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.13"
|
|
27
|
+
- name: Install pip-audit
|
|
28
|
+
run: python -m pip install --upgrade pip pip-audit
|
|
29
|
+
- name: Audit dependencies
|
|
30
|
+
# audit the project path (not the environment) so that the runner's own packages are not reported
|
|
31
|
+
run: pip-audit .
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codext
|
|
3
|
-
Version:
|
|
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
|
|
@@ -689,11 +689,16 @@ Classifier: Intended Audience :: Developers
|
|
|
689
689
|
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
|
|
690
690
|
Classifier: Programming Language :: Python :: 3
|
|
691
691
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
692
|
-
Requires-Python: <4,>=3.
|
|
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>
|
|
@@ -701,15 +706,15 @@ Dynamic: license-file
|
|
|
701
706
|
<h3 align="center">Encode/decode anything.</h3>
|
|
702
707
|
|
|
703
708
|
[](https://pypi.python.org/pypi/codext/)
|
|
709
|
+
[](https://pypi.python.org/pypi/codext/)
|
|
704
710
|
[](https://python-codext.readthedocs.io/en/latest/?badge=latest)
|
|
705
711
|
[](https://github.com/dhondta/python-codext/actions/workflows/python-package.yml)
|
|
712
|
+
[](https://github.com/dhondta/python-codext/actions/workflows/security.yml)
|
|
706
713
|
[](#)
|
|
707
|
-
[](https://pypi.python.org/pypi/codext/)
|
|
708
|
-
[](https://snyk.io/test/github/dhondta/python-codext?targetFile=requirements.txt)
|
|
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 (
|
|
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
|
|
@@ -717,7 +722,7 @@ $ pip install codext
|
|
|
717
722
|
|
|
718
723
|
Want to contribute a new codec ? | Want to contribute a new macro ?
|
|
719
724
|
:----------------------------------:|:------------------------------------:
|
|
720
|
-
Check the [documentation](https://python-codext.readthedocs.io/en/latest/howto) first<br>Then [PR](https://github.com/dhondta/python-codext/pulls) your new codec | [PR](https://github.com/dhondta/python-codext/pulls) your updated version of [`macros.json`](https://github.com/dhondta/python-codext/blob/main/codext/macros.json)
|
|
725
|
+
Check the [documentation](https://python-codext.readthedocs.io/en/latest/howto.html) first<br>Then [PR](https://github.com/dhondta/python-codext/pulls) your new codec | [PR](https://github.com/dhondta/python-codext/pulls) your updated version of [`macros.json`](https://github.com/dhondta/python-codext/blob/main/src/codext/macros.json)
|
|
721
726
|
|
|
722
727
|
## Demonstrations
|
|
723
728
|
|
|
@@ -957,7 +962,15 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
957
962
|
|
|
958
963
|
## List of codecs
|
|
959
964
|
|
|
960
|
-
#### [
|
|
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
|
+
|
|
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
|
|
963
976
|
- [X] `base2`: simple conversion to binary (with a variant with a reversed alphabet)
|
|
@@ -970,21 +983,33 @@ CACTCGGTCGGCCATATGTTCGGCCATATGTTCGTCTGTTCACTCGCCCATACACT
|
|
|
970
983
|
- [X] `base26`: conversion to alphabet letters
|
|
971
984
|
- [X] `base32`: classical conversion according to the RFC4648 with all its variants ([zbase32](https://philzimmermann.com/docs/human-oriented-base-32-encoding.txt), extended hexadecimal, [geohash](https://en.wikipedia.org/wiki/Geohash), [Crockford](https://www.crockford.com/base32))
|
|
972
985
|
- [X] `base36`: [Base36](https://en.wikipedia.org/wiki/Base36) conversion to letters and digits (with a variant inverting both groups)
|
|
986
|
+
- [X] `base38`: [Base38](https://github.com/project-chip/connectedhomeip/blob/master/src/setup_payload/Base38Encode.cpp) encoding of the Matter setup QR codes (chunks of 3 bytes)
|
|
973
987
|
- [X] `base45`: [Base45](https://datatracker.ietf.org/doc/html/draft-faltstrom-base45-04.txt) DRAFT algorithm (with a variant inverting letters and digits)
|
|
974
988
|
- [X] `base58`: multiple versions of [Base58](https://en.bitcoinwiki.org/wiki/Base58) (bitcoin, flickr, ripple)
|
|
975
989
|
- [X] `base62`: [Base62](https://en.wikipedia.org/wiki/Base62) conversion to lower- and uppercase letters and digits (with a variant with letters and digits inverted)
|
|
976
990
|
- [X] `base63`: similar to `base62` with the "`_`" added
|
|
977
991
|
- [X] `base64`: classical conversion according to RFC4648 with its variant URL (or *file*) (it also holds a variant with letters and digits inverted)
|
|
978
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)
|
|
979
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))
|
|
980
995
|
- [X] `base91`: [Base91](http://base91.sourceforge.net) custom conversion
|
|
981
996
|
- [X] `base100` (or *emoji*): [Base100](https://github.com/AdamNiederer/base100) custom conversion
|
|
982
|
-
- [X] `base122`: [
|
|
983
|
-
- [X] `
|
|
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
|
|
1001
|
+
- [X] `base1024` (or *ecoji*): [Ecoji](https://github.com/keith-turner/ecoji) custom conversion (10 bits per emoji, versions 1 and 2)
|
|
1002
|
+
- [X] `base2048`: [Base2048](https://github.com/qntm/base2048) custom conversion (11 bits per character, optimised for Twitter)
|
|
1003
|
+
- [X] `base32768`: [Base32768](https://github.com/qntm/base32768) custom conversion (15 bits per character, optimised for UTF-16)
|
|
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
|
|
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
|
|
1007
|
+
- [X] `leb128` (or *varint*): [LEB128](https://en.wikipedia.org/wiki/LEB128) encoding of lists of integers ; `sleb128` for its signed variant
|
|
1008
|
+
- [X] `base-genericN`: see [base encodings](https://python-codext.readthedocs.io/en/latest/enc/base.html) ; supports any possible base
|
|
984
1009
|
|
|
985
1010
|
This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `base85` codec.
|
|
986
1011
|
|
|
987
|
-
#### [Binary](https://python-codext.readthedocs.io/en/latest/enc/binary)
|
|
1012
|
+
#### [Binary](https://python-codext.readthedocs.io/en/latest/enc/binary.html)
|
|
988
1013
|
|
|
989
1014
|
- [X] `baudot`: supports CCITT-1, CCITT-2, EU/FR, ITA1, ITA2, MTK-2 (Python3 only), UK, ...
|
|
990
1015
|
- [X] `baudot-spaced`: variant of `baudot` ; groups of 5 bits are whitespace-separated
|
|
@@ -992,19 +1017,68 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
992
1017
|
- [X] `bcd`: _Binary Coded Decimal_, encodes characters from their (zero-left-padded) ordinals
|
|
993
1018
|
- [X] `bcd-extended0`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `0000`
|
|
994
1019
|
- [X] `bcd-extended1`: variant of `bcd` ; encodes characters from their (zero-left-padded) ordinals using prefix bits `1111`
|
|
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)
|
|
1022
|
+
- [X] `elias-gamma`, `elias-delta`: Elias universal codes, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
995
1023
|
- [X] `excess3`: uses Excess-3 (aka Stibitz code) binary encoding to convert characters from their ordinals
|
|
1024
|
+
- [X] `fibonacci`: Fibonacci universal code, encoding characters from their ordinals (or lists of integers with `-integers`)
|
|
996
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`)
|
|
997
1027
|
- [X] `manchester`: XORes each bit of the input with `01`
|
|
998
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
|
|
999
1030
|
- [X] `rotateN`: rotates characters by the specified number of bits (*N* belongs to [1, 7] ; Python 3 only)
|
|
1000
1031
|
|
|
1001
|
-
#### [Checksums](https://python-codext.readthedocs.io/en/latest/enc/checksums)
|
|
1032
|
+
#### [Checksums](https://python-codext.readthedocs.io/en/latest/enc/hashing.html#checksums)
|
|
1002
1033
|
|
|
1003
1034
|
- [X] `adler`: Adler32 algorithm (relies on `zlib`)
|
|
1004
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
|
|
1005
1037
|
- [X] `luhn`: Luhn mod N algorithm
|
|
1006
1038
|
|
|
1007
|
-
#### [
|
|
1039
|
+
#### [Ciphers](https://python-codext.readthedocs.io/en/latest/enc/ciphers.html)
|
|
1040
|
+
|
|
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)
|
|
1043
|
+
- [X] `affine`: aka Affine Cipher
|
|
1044
|
+
- [X] `armon64`: aka ARMON-64 (variant of AER-256 with a fourth operation)
|
|
1045
|
+
- [X] `atbash`: aka Atbash Cipher
|
|
1046
|
+
- [X] `autoclave`: aka Autoclave/Autokey Cipher (variant of Vigenere Cipher)
|
|
1047
|
+
- [X] `bacon`: aka Baconian Cipher
|
|
1048
|
+
- [X] `barbie-N`: aka Barbie Typewriter (*N* belongs to [1, 4])
|
|
1049
|
+
- [X] `bazeries`: aka Bazeries Cipher (two Polybius grids and a transposition keyed by a number)
|
|
1050
|
+
- [X] `beaufort`: aka Beaufort Cipher (variant of Vigenere Cipher)
|
|
1051
|
+
- [X] `bifid`: aka Bifid Cipher (Delastelle's fractionation with a 5x5 Polybius square) ; `trifid` for its 3x3x3 cube variant
|
|
1052
|
+
- [X] `chaocipher`: aka Chaocipher (two alphabets permuted after each letter)
|
|
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)
|
|
1058
|
+
- [X] `gronsfeld`: aka Gronsfeld Cipher (variant of Vigenere Cipher with a numeric key)
|
|
1059
|
+
- [X] `hill`: aka Hill Cipher (blocks of letters multiplied by a key matrix modulo 26)
|
|
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)
|
|
1062
|
+
- [X] `playfair`: aka Playfair Cipher
|
|
1063
|
+
- [X] `phillips`: aka Phillips Cipher (polyalphabetic block cipher with 8 key squares)
|
|
1064
|
+
- [X] `polybius`: aka Polybius Square Cipher
|
|
1065
|
+
- [X] `porta`: aka Porta Cipher (reciprocal variant of Vigenere Cipher with 13 alphabets)
|
|
1066
|
+
- [X] `railfence`: aka Rail Fence Cipher
|
|
1067
|
+
- [X] `rotN`: aka Caesar cipher (*N* belongs to [1,25])
|
|
1068
|
+
- [X] `scytaleN`: encrypts using the number of letters on the rod (*N* belongs to [1,[)
|
|
1069
|
+
- [X] `shiftN`: shift ordinals (*N* belongs to [1,255])
|
|
1070
|
+
- [X] `skip`: aka Skip Cipher (transposition reading every N-th character, looping on the text)
|
|
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)
|
|
1074
|
+
- [X] `vic`: aka VIC Cipher
|
|
1075
|
+
- [X] `vigenere`: aka Vigenere Cipher
|
|
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)
|
|
1008
1082
|
|
|
1009
1083
|
- [X] `a1z26`: keeps words whitespace-separated and uses a custom character separator
|
|
1010
1084
|
- [X] `cases`: set of case-related encodings (including camel-, kebab-, lower-, pascal-, upper-, snake- and swap-case, slugify, capitalize, title)
|
|
@@ -1014,83 +1088,147 @@ This category also contains `ascii85`, `adobe`, `[x]btoa`, `zeromq` with the `ba
|
|
|
1014
1088
|
- [X] `ordinal`: dummy character ordinals conversion (converts to 3-digits groups)
|
|
1015
1089
|
- [X] `ordinal-spaced`: variant of `ordinal` ; dummy character ordinals conversion, handling whitespace separators
|
|
1016
1090
|
|
|
1017
|
-
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions)
|
|
1091
|
+
#### [Compression](https://python-codext.readthedocs.io/en/latest/enc/compressions.html)
|
|
1018
1092
|
|
|
1019
1093
|
- [X] `gzip`: standard Gzip compression/decompression
|
|
1094
|
+
- [X] `huffman`: canonical Huffman coding of the bytes, with a self-describing header
|
|
1020
1095
|
- [X] `lz77`: compresses the given data with the algorithm of Lempel and Ziv of 1977
|
|
1021
1096
|
- [X] `lz78`: compresses the given data with the algorithm of Lempel and Ziv of 1978
|
|
1022
1097
|
- [X] `pkzip_deflate`: standard Zip-deflate compression/decompression
|
|
1023
1098
|
- [X] `pkzip_bzip2`: standard BZip2 compression/decompression
|
|
1024
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)
|
|
1025
1102
|
|
|
1026
1103
|
> :warning: Compression functions are of course definitely **NOT** encoding functions ; they are implemented for leveraging the `.encode(...)` API from `codecs`.
|
|
1027
1104
|
|
|
1028
|
-
#### [
|
|
1105
|
+
#### [Esoteric](https://python-codext.readthedocs.io/en/latest/enc/esoteric.html)
|
|
1029
1106
|
|
|
1030
|
-
- [X] `
|
|
1031
|
-
- [X] `
|
|
1032
|
-
- [X] `
|
|
1033
|
-
- [X] `
|
|
1034
|
-
- [X] `
|
|
1035
|
-
- [X] `
|
|
1036
|
-
- [X] `
|
|
1037
|
-
- [X] `
|
|
1038
|
-
- [X] `
|
|
1039
|
-
- [X] `polybius`: aka Polybius Square Cipher
|
|
1040
|
-
- [X] `railfence`: aka Rail Fence Cipher
|
|
1041
|
-
- [X] `rotN`: aka Caesar cipher (*N* belongs to [1,25])
|
|
1042
|
-
- [X] `scytaleN`: encrypts using the number of letters on the rod (*N* belongs to [1,[)
|
|
1043
|
-
- [X] `shiftN`: shift ordinals (*N* belongs to [1,255])
|
|
1044
|
-
- [X] `trithemius`: aka Trithemius Cipher (variant of Vigenere Cipher)
|
|
1045
|
-
- [X] `vic`: aka VIC Cipher
|
|
1046
|
-
- [X] `vigenere`: aka Vigenere Cipher
|
|
1047
|
-
- [X] `xorN`: XOR with a single byte (*N* belongs to [1,255])
|
|
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
|
|
1048
1116
|
|
|
1049
|
-
|
|
1117
|
+
#### [Frequency](https://python-codext.readthedocs.io/en/latest/enc/frequency.html)
|
|
1050
1118
|
|
|
1051
|
-
|
|
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)
|
|
1052
1122
|
|
|
1123
|
+
#### [Hashing](https://python-codext.readthedocs.io/en/latest/enc/hashing.html)
|
|
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)
|
|
1053
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)
|
|
1054
1133
|
- [X] `crypt`: Unix's crypt hash for passwords (Python 3 and Unix only ; relies on `crypt`)
|
|
1055
|
-
- [X] `
|
|
1056
|
-
- [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`)
|
|
1057
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)
|
|
1058
1157
|
|
|
1059
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.
|
|
1060
1159
|
|
|
1061
|
-
#### [Languages](https://python-codext.readthedocs.io/en/latest/enc/languages)
|
|
1160
|
+
#### [Languages](https://python-codext.readthedocs.io/en/latest/enc/languages.html)
|
|
1062
1161
|
|
|
1063
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`
|
|
1064
1164
|
- [X] `ipsum`: aka lorem ipsum
|
|
1065
|
-
- [X] `galactic`: aka
|
|
1165
|
+
- [X] `galactic`: aka Standard Galactic Alphabet or Minecraft enchantment language (as written by most online translators)
|
|
1066
1166
|
- [X] `leetspeak`: based on minimalistic elite speaking rules
|
|
1067
1167
|
- [X] `morse`: uses whitespace as a separator
|
|
1068
1168
|
- [X] `navajo`: only handles letters (not full words from the Navajo dictionary)
|
|
1069
1169
|
- [X] `radio`: aka NATO or radio phonetic alphabet
|
|
1070
1170
|
- [X] `southpark`: converts letters to Kenny's language from Southpark (whitespace is also handled)
|
|
1071
1171
|
- [X] `southpark-icase`: case insensitive variant of `southpark`
|
|
1072
|
-
- [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)
|
|
1073
1173
|
- [X] `tomtom`: similar to `morse`, using slashes and backslashes
|
|
1174
|
+
- [X] `upsidedown`: upside-down (flip) text, with turned Unicode characters in reverse order
|
|
1074
1175
|
|
|
1075
|
-
#### [
|
|
1176
|
+
#### [Obfuscation](https://python-codext.readthedocs.io/en/latest/enc/obfuscation.html)
|
|
1076
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)
|
|
1194
|
+
|
|
1195
|
+
#### [Others](https://python-codext.readthedocs.io/en/latest/enc/others.html)
|
|
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)
|
|
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)
|
|
1077
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
|
|
1078
1204
|
- [X] `letter-indices`: encodes consonants and/or vowels with their corresponding indices
|
|
1079
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
|
|
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)
|
|
1211
|
+
- [X] `yenc`: Usenet binary-to-text encoding (raw, wrapped or framed with header, trailer and CRC32)
|
|
1080
1212
|
|
|
1081
|
-
#### [Steganography](https://python-codext.readthedocs.io/en/latest/enc/stegano)
|
|
1213
|
+
#### [Steganography](https://python-codext.readthedocs.io/en/latest/enc/stegano.html)
|
|
1082
1214
|
|
|
1083
1215
|
- [X] `hexagram`: uses Base64 and encodes the result to a charset of [I Ching hexagrams](https://en.wikipedia.org/wiki/Hexagram_%28I_Ching%29) (as implemented [here](https://github.com/qntm/hexagram-encode))
|
|
1084
1216
|
- [X] `klopf`: aka Klopf code ; Polybius square with trivial alphabetical distribution
|
|
1085
1217
|
- [X] `resistor`: aka resistor color codes
|
|
1086
1218
|
- [X] `rick`: aka Rick cipher (in reference to Rick Astley's song "*Never gonna give you up*")
|
|
1087
1219
|
- [X] `sms`: also called _T9 code_ ; uses "`-`" as a separator for encoding, "`-`" or "`_`" or whitespace for decoding
|
|
1220
|
+
- [X] `unicode-tags`: aka ASCII smuggling ; hides ASCII text in invisible Unicode tag characters
|
|
1088
1221
|
- [X] `whitespace`: replaces bits with whitespaces and tabs
|
|
1089
1222
|
- [X] `whitespace_after_before`: variant of `whitespace` ; encodes characters as new characters with whitespaces before and after according to an equation described in the codec name (e.g. "`whitespace+2*after-3*before`")
|
|
1223
|
+
- [X] `zero-width`: hides text in invisible zero-width characters (binary, ternary and quinary variants, compatible with zwsp-steg)
|
|
1090
1224
|
|
|
1091
|
-
#### [Web](https://python-codext.readthedocs.io/en/latest/enc/web)
|
|
1225
|
+
#### [Web](https://python-codext.readthedocs.io/en/latest/enc/web.html)
|
|
1092
1226
|
|
|
1227
|
+
- [X] `aaencode`: JavaScript obfuscation with Japanese-style emoticons (encoding generates a program running the code)
|
|
1093
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`
|
|
1094
1231
|
- [X] `url`: aka URL encoding
|
|
1095
1232
|
|
|
1096
1233
|
|
|
1234
|
+
<p align="center"><a href="#top"><img src="https://img.shields.io/badge/Back%20to%20top--lightgrey?style=social" alt="Back to top" height="20"/></a></p>
|