From 24cbf07357319a74a3c3a27d6f3ed9ac8f825952 Mon Sep 17 00:00:00 2001 From: stefan Date: Sun, 5 May 2024 23:45:05 +0200 Subject: [PATCH] added more bases to the solver function --- Main.hs | 18 +++++++++++++++--- based.link | 1 + 2 files changed, 16 insertions(+), 3 deletions(-) create mode 120000 based.link diff --git a/Main.hs b/Main.hs index 916efcf..67bf711 100644 --- a/Main.hs +++ b/Main.hs @@ -6,10 +6,12 @@ import System.Console.CmdArgs import Control.Arrow import Data.Text (pack, unpack) import qualified Data.Text as T +import Data.Text (Text) import qualified Data.Text.Lazy as TL import Data.Text.Lazy.Builder (toLazyText) -import Data.Text.Encoding (encodeUtf8) +import Data.Text.Encoding (decodeUtf8With, decodeUtf8, encodeUtf8) import Data.Maybe (fromJust, fromMaybe) +import Data.Text.Encoding.Error (lenientDecode) import TextShow (toText) import Text.XML.HXT.DOM.Util (hexStringToInt, intToHexString, decimalStringToInt) import TextShow.Data.Integral (showbBin, showbOct) @@ -196,6 +198,9 @@ dec62 input = enc62 :: String -> String enc62 = C.unpack . BSU.fromString. Latin1.toString . (Bytes.fromByteArray . ( B62.encode64 . (intToWord64 . decimalStringToInt))) +-- enc62 :: Text -> Text +-- enc62 text = B62.text128 (fromIntegral (T.length text)) + dec58 :: String -> String -- dec58 = C.unpack . fromJust . B58.decodeBase58 . pack dec58 input = @@ -224,7 +229,7 @@ dec16 input = enc16 :: String -> String enc16 = C.unpack . B16.encode . BSU.fromString -dec10:: String -> String +dec10 :: String -> String dec10 = show . hexStringToInt enc10 :: String -> String @@ -288,6 +293,8 @@ base64Regex = "^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$" base58Regex = "^[1-9A-HJ-NP-Za-km-z]+$" -- incorrect base32Regex = "^(?:[A-Z2-7]{8})*(?:[A-Z2-7]{2}={6}|[A-Z2-7]{4}={4}|[A-Z2-7]{5}={3}|[A-Z2-7]{7}=)?$" base16Regex = "^[0-9A-FXx]*$" +base10Regex = "^[0-9]*$" +base8Regex = "^[0-7]*$" base2Regex = "^[01]*$" urlRegex = "^[a-zA-Z0-9%]*$" @@ -299,6 +306,8 @@ solveEnc input = isBase58 = BSU.fromString input =~ base58Regex :: Bool isBase32 = BSU.fromString input =~ base32Regex :: Bool isBase16 = BSU.fromString input =~ base16Regex :: Bool + isBase10 = BSU.fromString input =~ base10Regex :: Bool + isBase8 = BSU.fromString input =~ base8Regex :: Bool isBase2 = BSU.fromString input =~ base2Regex :: Bool isURL = BSU.fromString input =~ urlRegex :: Bool base91Result = if isBase91 then "\nTrying base91:\n" ++ dec91 input else "" @@ -307,9 +316,11 @@ solveEnc input = base58Result = if isBase58 then "\nTrying base58:\n" ++ dec58 input else "" base32Result = if isBase64 then "\nTrying base32:\n" ++ dec32 input else "" base16Result = if isBase16 then "\nTrying base16:\n" ++ dec16 input else "" + base10Result = if isBase10 then "\nTrying base10:\n" ++ dec10 input else "" base2Result = if isBase2 then "\nTrying base2:\n" ++ dec2 input else "" + base8Result = if isBase8 then "\nTrying base8:\n" ++ dec8 input else "" urlResult = if isURL then "\nTrying URL decode:\n" ++ decurl input else "" - results = filter (not . null) [base91Result, base85Result, base64Result, base58Result, base32Result, base16Result, base2Result, urlResult] + results = filter (not . null) [base91Result, base85Result, base64Result, base58Result, base32Result, base16Result, base10Result, base8Result, base2Result, urlResult] in if null results then "Not able to solve the encoding.\n" @@ -327,6 +338,7 @@ solveEnc input = -- then dec32 input -- else "Not able to solve the encoding.\n" +-- optionHandler :: EncodeOptions -> Text -> Text optionHandler Decode{b91=True} = dec91 optionHandler Encode{b91=True} = enc91 optionHandler Decode{b85=True} = dec85 diff --git a/based.link b/based.link new file mode 120000 index 0000000..400fbda --- /dev/null +++ b/based.link @@ -0,0 +1 @@ +./dist-newstyle/build/aarch64-linux/ghc-9.4.8/based-0.4.2.0/x/based/build/based/based \ No newline at end of file