added encodings
This commit is contained in:
parent
67c0f553f7
commit
ff411ed1bd
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -1,5 +1,15 @@
|
||||||
# Revision history for based
|
# Revision history for based
|
||||||
|
|
||||||
## 0.1.0.0 -- YYYY-mm-dd
|
## 0.1.0.0 -- 2022-05-17
|
||||||
|
|
||||||
* First version. Released on an unsuspecting world.
|
* First version. Released on an unsuspecting world.
|
||||||
|
|
||||||
|
## 0.2.0.0 -- 2022-05-19
|
||||||
|
|
||||||
|
* Added the following based and encodings
|
||||||
|
* Decimal to hex
|
||||||
|
* Hex to decmial
|
||||||
|
* Xxencoding
|
||||||
|
* UuEncoding
|
||||||
|
* YEncoding
|
||||||
|
* Quoted-Printable
|
||||||
|
|
70
Main.hs
70
Main.hs
|
@ -4,6 +4,12 @@
|
||||||
module Main where
|
module Main where
|
||||||
import System.Console.CmdArgs
|
import System.Console.CmdArgs
|
||||||
import Control.Arrow
|
import Control.Arrow
|
||||||
|
import Numeric (showHex, showIntAtBase)
|
||||||
|
import Data.Char (intToDigit)
|
||||||
|
import Data.Char (ord, chr)
|
||||||
|
import TextShow (toText)
|
||||||
|
import Text.XML.HXT.DOM.Util (stringToHexString, hexStringToInt, intToHexString, charToHexString, decimalStringToInt)
|
||||||
|
import TextShow.Data.Integral (showbBin, showbHex)
|
||||||
import qualified Data.Either.Unwrap as U
|
import qualified Data.Either.Unwrap as U
|
||||||
import qualified Codec.Binary.Base91 as B91
|
import qualified Codec.Binary.Base91 as B91
|
||||||
import qualified Codec.Binary.Base85 as B85
|
import qualified Codec.Binary.Base85 as B85
|
||||||
|
@ -11,6 +17,10 @@ import qualified Codec.Binary.Base64 as B64
|
||||||
import qualified Data.Word.Base62 as B62
|
import qualified Data.Word.Base62 as B62
|
||||||
import qualified Codec.Binary.Base32 as B32
|
import qualified Codec.Binary.Base32 as B32
|
||||||
import qualified Codec.Binary.Base16 as B16
|
import qualified Codec.Binary.Base16 as B16
|
||||||
|
import qualified Codec.Binary.QuotedPrintable as QP
|
||||||
|
import qualified Codec.Binary.Uu as UU
|
||||||
|
import qualified Codec.Binary.Xx as XX
|
||||||
|
import qualified Codec.Binary.Yenc as Y
|
||||||
import qualified Data.Bytes as Bytes
|
import qualified Data.Bytes as Bytes
|
||||||
import qualified Data.Bytes.Text.Ascii as ASCII
|
import qualified Data.Bytes.Text.Ascii as ASCII
|
||||||
import Data.ByteString.UTF8 as BSU -- from utf8-string
|
import Data.ByteString.UTF8 as BSU -- from utf8-string
|
||||||
|
@ -21,16 +31,28 @@ data Based = Decode {
|
||||||
b85 :: Bool,
|
b85 :: Bool,
|
||||||
b64 :: Bool,
|
b64 :: Bool,
|
||||||
b62 :: Bool,
|
b62 :: Bool,
|
||||||
|
b58 :: Bool,
|
||||||
b32 :: Bool,
|
b32 :: Bool,
|
||||||
b16 :: Bool
|
b16 :: Bool,
|
||||||
|
b10 :: Bool,
|
||||||
|
qp :: Bool,
|
||||||
|
uu :: Bool,
|
||||||
|
xx :: Bool,
|
||||||
|
yenc :: Bool
|
||||||
}
|
}
|
||||||
| Encode {
|
| Encode {
|
||||||
b91 :: Bool,
|
b91 :: Bool,
|
||||||
b85 :: Bool,
|
b85 :: Bool,
|
||||||
b64 :: Bool,
|
b64 :: Bool,
|
||||||
b62 :: Bool,
|
b62 :: Bool,
|
||||||
|
b58 :: Bool,
|
||||||
b32 :: Bool,
|
b32 :: Bool,
|
||||||
b16 :: Bool
|
b16 :: Bool,
|
||||||
|
b10 :: Bool,
|
||||||
|
qp :: Bool,
|
||||||
|
uu :: Bool,
|
||||||
|
xx :: Bool,
|
||||||
|
yenc :: Bool
|
||||||
}
|
}
|
||||||
deriving(Show, Data, Typeable)
|
deriving(Show, Data, Typeable)
|
||||||
|
|
||||||
|
@ -43,11 +65,23 @@ dec64 = C.unpack . U.fromRight . B64.decode . BSU.fromString
|
||||||
enc64 = C.unpack . B64.encode . BSU.fromString
|
enc64 = C.unpack . B64.encode . BSU.fromString
|
||||||
dec62 = show . B62.decode64 . ASCII.fromString
|
dec62 = show . B62.decode64 . ASCII.fromString
|
||||||
enc62 = show . B62.decode64 . ASCII.fromString
|
enc62 = show . B62.decode64 . ASCII.fromString
|
||||||
|
dec58 = show
|
||||||
|
enc58 = show
|
||||||
dec32 = C.unpack . U.fromRight . B32.decode . BSU.fromString
|
dec32 = C.unpack . U.fromRight . B32.decode . BSU.fromString
|
||||||
enc32 = C.unpack . B32.encode . BSU.fromString
|
enc32 = C.unpack . B32.encode . BSU.fromString
|
||||||
dec16 = C.unpack . U.fromRight . B16.decode . BSU.fromString
|
dec16 = C.unpack . U.fromRight . B16.decode . BSU.fromString
|
||||||
enc16 = C.unpack . B16.encode . BSU.fromString
|
enc16 = C.unpack . B16.encode . BSU.fromString
|
||||||
|
dec10 = show . hexStringToInt
|
||||||
|
enc10 = C.unpack . BSU.fromString . intToHexString . decimalStringToInt -- Depending on what you want, do enc10 = show . map ord
|
||||||
|
decqp = C.unpack . U.fromRight . QP.decode . BSU.fromString
|
||||||
|
encqp = C.unpack . QP.encode . BSU.fromString
|
||||||
|
decuu = C.unpack . U.fromRight . UU.decode . BSU.fromString
|
||||||
|
encuu = C.unpack . UU.encode . BSU.fromString
|
||||||
|
decxx = C.unpack . U.fromRight . XX.decode . BSU.fromString
|
||||||
|
encxx = C.unpack . XX.encode . BSU.fromString
|
||||||
|
decy = C.unpack . U.fromRight . Y.decode . BSU.fromString
|
||||||
|
ency = C.unpack . Y.encode . BSU.fromString
|
||||||
|
|
||||||
|
|
||||||
optionHandler Decode{b91=True} = dec91
|
optionHandler Decode{b91=True} = dec91
|
||||||
optionHandler Encode{b91=True} = enc91
|
optionHandler Encode{b91=True} = enc91
|
||||||
|
@ -57,18 +91,36 @@ optionHandler Decode{b64=True} = dec64
|
||||||
optionHandler Encode{b64=True} = enc64
|
optionHandler Encode{b64=True} = enc64
|
||||||
optionHandler Decode{b62=True} = dec62
|
optionHandler Decode{b62=True} = dec62
|
||||||
optionHandler Encode{b62=True} = enc62
|
optionHandler Encode{b62=True} = enc62
|
||||||
|
optionHandler Decode{b58=True} = dec58
|
||||||
|
optionHandler Encode{b58=True} = enc58
|
||||||
optionHandler Decode{b32=True} = dec32
|
optionHandler Decode{b32=True} = dec32
|
||||||
optionHandler Encode{b32=True} = enc32
|
optionHandler Encode{b32=True} = enc32
|
||||||
optionHandler Decode{b16=True} = dec16
|
optionHandler Decode{b16=True} = dec16
|
||||||
optionHandler Encode{b16=True} = enc16
|
optionHandler Encode{b16=True} = enc16
|
||||||
|
optionHandler Decode{b10=True} = dec10
|
||||||
|
optionHandler Encode{b10=True} = enc10
|
||||||
|
optionHandler Decode{qp=True} = decqp
|
||||||
|
optionHandler Encode{qp=True} = encqp
|
||||||
|
optionHandler Encode{uu=True} = decuu
|
||||||
|
optionHandler Decode{uu=True} = encuu
|
||||||
|
optionHandler Decode{xx=True} = decxx
|
||||||
|
optionHandler Encode{xx=True} = encxx
|
||||||
|
optionHandler Decode{yenc=True} = decy
|
||||||
|
optionHandler Encode{yenc=True} = ency
|
||||||
|
|
||||||
decode_ = Decode {
|
decode_ = Decode {
|
||||||
b91 = def &= help "decode base91",
|
b91 = def &= help "decode base91",
|
||||||
b85 = def &= help "decode base85",
|
b85 = def &= help "decode base85",
|
||||||
b64 = def &= help "decode base64",
|
b64 = def &= help "decode base64",
|
||||||
b62 = def &= help "decode base62",
|
b62 = def &= help "decode base62",
|
||||||
|
b58 = def &= help "decode base58",
|
||||||
b32 = def &= help "decode base32",
|
b32 = def &= help "decode base32",
|
||||||
b16 = def &= help "decode base16"
|
b16 = def &= help "decode base16",
|
||||||
|
b10 = def &= help "decode base10 to hex",
|
||||||
|
qp = def &= help "decode quoted-printable",
|
||||||
|
uu = def &= help "decode uu",
|
||||||
|
xx = def &= help "decode xx",
|
||||||
|
yenc = def &= help "decode yEncode"
|
||||||
} &= help "Decode chosen base" &=auto
|
} &= help "Decode chosen base" &=auto
|
||||||
|
|
||||||
encode_ = Encode {
|
encode_ = Encode {
|
||||||
|
@ -76,8 +128,14 @@ encode_ = Encode {
|
||||||
b85 = def &= help "encode base85",
|
b85 = def &= help "encode base85",
|
||||||
b64 = def &= help "encode base64",
|
b64 = def &= help "encode base64",
|
||||||
b62 = def &= help "encode base62",
|
b62 = def &= help "encode base62",
|
||||||
|
b58 = def &= help "encode base58",
|
||||||
b32 = def &= help "encode base32",
|
b32 = def &= help "encode base32",
|
||||||
b16 = def &= help "encode base16"
|
b16 = def &= help "encode base16",
|
||||||
|
b10 = def &= help "encode base10 to hex",
|
||||||
|
qp = def &= help "encode quoted-printable",
|
||||||
|
uu = def &= help "encode uu",
|
||||||
|
xx = def &= help "encode xx",
|
||||||
|
yenc = def &= help "encode yEncode"
|
||||||
} &= help "Encode chosen base"
|
} &= help "Encode chosen base"
|
||||||
|
|
||||||
main = cmdArgs (modes[decode_, encode_] &= help "Anybased, when Cyberchef simply doesn't cut it. " &= program "based" &= summary "Based v0.1") >>= interact . optionHandler
|
main = cmdArgs (modes[decode_, encode_] &= help "Anybased, when Cyberchef simply doesn't cut it. " &= program "based" &= summary "based v0.1") >>= interact . optionHandler
|
||||||
|
|
|
@ -4,13 +4,14 @@ A commandline tool that lets you encode and decode most of the bases.
|
||||||
|
|
||||||
Release binary is statically linked via
|
Release binary is statically linked via
|
||||||
```sh
|
```sh
|
||||||
cabal v2-build --enable-executable-static
|
cabal v2-build --enable-executable-static -O2
|
||||||
```
|
```
|
||||||
|
|
||||||
## Compilation
|
## Compilation
|
||||||
|
|
||||||
* If you want to compile your own build, link it dynamically via
|
* If you want to compile your own build, link it dynamically via
|
||||||
```sh
|
```sh
|
||||||
|
git clone https://git.stefan.works/whx/based.git
|
||||||
cd based/
|
cd based/
|
||||||
cabal install
|
cabal install
|
||||||
cabal run
|
cabal run
|
||||||
|
|
|
@ -27,6 +27,6 @@ executable based
|
||||||
main-is: Main.hs
|
main-is: Main.hs
|
||||||
other-modules: MyLib
|
other-modules: MyLib
|
||||||
-- other-extensions:
|
-- other-extensions:
|
||||||
build-depends: base ^>=4.13.0.0, based, cmdargs, sandi, base62, base91, utf8-string, bytestring, byteslice, either-unwrap
|
build-depends: base ^>=4.13.0.0, based, cmdargs, sandi, base62, base91, utf8-string, bytestring, byteslice, either-unwrap, text-show, hxt
|
||||||
-- hs-source-dirs:
|
-- hs-source-dirs:
|
||||||
default-language: Haskell2010
|
default-language: Haskell2010
|
||||||
|
|
Loading…
Reference in New Issue