moved solve function from Main.hs to src/Encoding/Solve.hs
This commit is contained in:
parent
63a0fd3c05
commit
61313cd558
38
app/Main.hs
38
app/Main.hs
|
@ -5,8 +5,6 @@
|
|||
module Main where
|
||||
import System.Console.CmdArgs
|
||||
import qualified Data.ByteString as B
|
||||
import qualified Data.ByteString.Char8 as BC
|
||||
import Text.Regex.TDFA
|
||||
import Encoding.Base2 (enc2, dec2)
|
||||
import Encoding.Base8 (enc8, dec8)
|
||||
import Encoding.Base10 (enc10, dec10)
|
||||
|
@ -24,6 +22,7 @@ import Encoding.QuotedPrintable (encqp, decqp)
|
|||
import Encoding.UnixToUnix (encuu, decuu)
|
||||
import Encoding.Yenc (ency, decy)
|
||||
import Encoding.Rotate (rotate)
|
||||
import Encoding.Solve (solveEnc)
|
||||
|
||||
|
||||
data Based = Decode {
|
||||
|
@ -69,41 +68,6 @@ data Based = Decode {
|
|||
}
|
||||
deriving(Show, Data, Typeable)
|
||||
|
||||
base91Regex = "^[!-~]*$"
|
||||
base85Regex = "^[0-9A-Za-z!#$%&()*+,-;<=>?@^_`{|}~]+$"
|
||||
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%]*$"
|
||||
|
||||
solveEnc :: BC.ByteString -> BC.ByteString
|
||||
solveEnc input =
|
||||
let isBase91 = input =~ base91Regex :: Bool
|
||||
isBase85 = input =~ base85Regex :: Bool
|
||||
isBase64 = input =~ base64Regex :: Bool
|
||||
isBase58 = input =~ base58Regex :: Bool
|
||||
isBase32 = input =~ base32Regex :: Bool
|
||||
isBase16 = input =~ base16Regex :: Bool
|
||||
isBase10 = input =~ base10Regex :: Bool
|
||||
isBase8 = input =~ base8Regex :: Bool
|
||||
isBase2 = input =~ base2Regex :: Bool
|
||||
isURL = input =~ urlRegex :: Bool
|
||||
base91Result = if isBase91 then BC.pack "\nTrying base91:\n" `BC.append` dec91 input else BC.empty
|
||||
base85Result = if isBase85 then BC.pack "\nTrying base85:\n" `BC.append` dec85 input else BC.empty
|
||||
base64Result = if isBase64 then BC.pack "\nTrying base64:\n" `BC.append` dec64 input else BC.empty
|
||||
base58Result = if isBase58 then BC.pack "\nTrying base58:\n" `BC.append` dec58 input else BC.empty
|
||||
base32Result = if isBase64 then BC.pack "\nTrying base32:\n" `BC.append` dec32 input else BC.empty
|
||||
base16Result = if isBase16 then BC.pack "\nTrying base16:\n" `BC.append` dec16 input else BC.empty
|
||||
base10Result = if isBase10 then BC.pack "\nTrying base10:\n" `BC.append` dec10 input else BC.empty
|
||||
base2Result = if isBase2 then BC.pack "\nTrying base2:\n" `BC.append` dec2 input else BC.empty
|
||||
base8Result = if isBase8 then BC.pack "\nTrying base8:\n" `BC.append` dec8 input else BC.empty
|
||||
urlResult = if isURL then BC.pack "\nTrying URL decode:\n" `BC.append` decurl input else BC.empty
|
||||
in BC.concat [base91Result, base85Result, base64Result, base58Result, base32Result, base16Result, base10Result, base8Result, base2Result, urlResult]
|
||||
|
||||
|
||||
optionHandler :: Based -> B.ByteString -> B.ByteString
|
||||
optionHandler Decode{b91=True} = dec91
|
||||
|
|
|
@ -25,6 +25,7 @@ library
|
|||
Encoding.Xx
|
||||
Encoding.Yenc
|
||||
Encoding.Rotate
|
||||
Encoding.Solve
|
||||
other-modules:
|
||||
-- Data.Bytes.Text.Ascii
|
||||
build-depends:
|
||||
|
@ -42,6 +43,7 @@ library
|
|||
haskoin-core,
|
||||
text,
|
||||
primitive,
|
||||
regex-tdfa,
|
||||
base64-bytestring
|
||||
default-language: Haskell2010
|
||||
|
||||
|
|
|
@ -0,0 +1,58 @@
|
|||
module Encoding.Solve
|
||||
(solveEnc) where
|
||||
|
||||
import qualified Data.ByteString.Char8 as BC
|
||||
import Text.Regex.TDFA
|
||||
import Encoding.Base2 (enc2, dec2)
|
||||
import Encoding.Base8 (enc8, dec8)
|
||||
import Encoding.Base10 (enc10, dec10)
|
||||
import Encoding.Base16 (enc16, dec16)
|
||||
import Encoding.Base32 (enc32, dec32)
|
||||
import Encoding.Base45 (enc45, dec45)
|
||||
import Encoding.Base58 (enc58, dec58)
|
||||
import Encoding.Base62 (enc62, dec62)
|
||||
import Encoding.Base64 (enc64, dec64, enc64url, dec64url)
|
||||
import Encoding.Base85 (enc85, dec85)
|
||||
import Encoding.Base91 (enc91, dec91)
|
||||
import Encoding.Url (encurl, decurl)
|
||||
import Encoding.Xx (encxx, decxx)
|
||||
import Encoding.QuotedPrintable (encqp, decqp)
|
||||
import Encoding.UnixToUnix (encuu, decuu)
|
||||
import Encoding.Yenc (ency, decy)
|
||||
import Encoding.Rotate (rotate)
|
||||
|
||||
|
||||
base91Regex = "^[!-~]*$"
|
||||
base85Regex = "^[0-9A-Za-z!#$%&()*+,-;<=>?@^_`{|}~]+$"
|
||||
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%]*$"
|
||||
|
||||
solveEnc :: BC.ByteString -> BC.ByteString
|
||||
solveEnc input =
|
||||
let isBase91 = input =~ base91Regex :: Bool
|
||||
isBase85 = input =~ base85Regex :: Bool
|
||||
isBase64 = input =~ base64Regex :: Bool
|
||||
isBase58 = input =~ base58Regex :: Bool
|
||||
isBase32 = input =~ base32Regex :: Bool
|
||||
isBase16 = input =~ base16Regex :: Bool
|
||||
isBase10 = input =~ base10Regex :: Bool
|
||||
isBase8 = input =~ base8Regex :: Bool
|
||||
isBase2 = input =~ base2Regex :: Bool
|
||||
isURL = input =~ urlRegex :: Bool
|
||||
base91Result = if isBase91 then BC.pack "\nTrying base91:\n" `BC.append` dec91 input else BC.empty
|
||||
base85Result = if isBase85 then BC.pack "\nTrying base85:\n" `BC.append` dec85 input else BC.empty
|
||||
base64Result = if isBase64 then BC.pack "\nTrying base64:\n" `BC.append` dec64 input else BC.empty
|
||||
base58Result = if isBase58 then BC.pack "\nTrying base58:\n" `BC.append` dec58 input else BC.empty
|
||||
base32Result = if isBase64 then BC.pack "\nTrying base32:\n" `BC.append` dec32 input else BC.empty
|
||||
base16Result = if isBase16 then BC.pack "\nTrying base16:\n" `BC.append` dec16 input else BC.empty
|
||||
base10Result = if isBase10 then BC.pack "\nTrying base10:\n" `BC.append` dec10 input else BC.empty
|
||||
base2Result = if isBase2 then BC.pack "\nTrying base2:\n" `BC.append` dec2 input else BC.empty
|
||||
base8Result = if isBase8 then BC.pack "\nTrying base8:\n" `BC.append` dec8 input else BC.empty
|
||||
urlResult = if isURL then BC.pack "\nTrying URL decode:\n" `BC.append` decurl input else BC.empty
|
||||
in BC.concat [base91Result, base85Result, base64Result, base58Result, base32Result, base16Result, base10Result, base8Result, base2Result, urlResult]
|
Loading…
Reference in New Issue