added b91 to solver function
This commit is contained in:
		
							parent
							
								
									f21e343ef3
								
							
						
					
					
						commit
						37ee336508
					
				
							
								
								
									
										35
									
								
								Main.hs
								
								
								
								
							
							
						
						
									
										35
									
								
								Main.hs
								
								
								
								
							| 
						 | 
				
			
			@ -34,9 +34,13 @@ import Data.Bytes.Get (getWord64host)
 | 
			
		|||
import Data.ByteString.UTF8 as BSU      -- from utf8-string
 | 
			
		||||
-- import Data.ByteString (singleton)
 | 
			
		||||
import GHC.Word (Word8)
 | 
			
		||||
-- import Data.Char
 | 
			
		||||
import qualified Data.ByteString.Char8 as C
 | 
			
		||||
-- Regex imports
 | 
			
		||||
import Text.Regex.TDFA
 | 
			
		||||
import Data.Word (Word8)
 | 
			
		||||
import Data.Char (ord, chr)
 | 
			
		||||
import Data.Maybe (fromMaybe)
 | 
			
		||||
 | 
			
		||||
data Based = Decode { 
 | 
			
		||||
              b91 :: Bool,
 | 
			
		||||
| 
						 | 
				
			
			@ -118,12 +122,26 @@ octToInt (x : xs) = x + 8 * octToInt xs
 | 
			
		|||
-- base functions
 | 
			
		||||
-- without the show func, sequences like \n will not be shown as characters but will be executed as newline
 | 
			
		||||
 | 
			
		||||
dec91 :: String -> String
 | 
			
		||||
dec91 = C.unpack . B91.decode
 | 
			
		||||
-- dec91 :: String -> String
 | 
			
		||||
-- dec91 = C.unpack . B91.decode
 | 
			
		||||
 | 
			
		||||
--    case singleton . B91.decode input of
 | 
			
		||||
--      Right decoded -> C.unpack decoded
 | 
			
		||||
--      Left _ -> "Error decoding Base91.\n"
 | 
			
		||||
dec91 :: String -> String
 | 
			
		||||
dec91 input =
 | 
			
		||||
  case B91.decode input :: BSU.ByteString of
 | 
			
		||||
    decoded -> C.unpack decoded
 | 
			
		||||
 | 
			
		||||
-- toWord8 :: String -> [Word8]
 | 
			
		||||
-- toWord8 = map (fromIntegral . fromEnum)
 | 
			
		||||
 | 
			
		||||
-- dec91 :: String -> String
 | 
			
		||||
-- dec91 input = 
 | 
			
		||||
--    map (chr . fromIntegral) (B91.decode input :: [Word8])
 | 
			
		||||
 | 
			
		||||
-- or
 | 
			
		||||
    -- case B91.decode input :: [Word8] of
 | 
			
		||||
        -- Right decoded -> map (toEnum . fromIntegral) decoded
 | 
			
		||||
        -- Left err -> "Error decoding Base91: " ++ err
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
enc91 :: String -> String
 | 
			
		||||
enc91 = B91.encode . BSU.fromString
 | 
			
		||||
| 
						 | 
				
			
			@ -265,16 +283,17 @@ base16Regex = "^[0-9A-FXx]*$"
 | 
			
		|||
 | 
			
		||||
solveEnc :: String -> String
 | 
			
		||||
solveEnc input =
 | 
			
		||||
   -- let isBase91 = BSU.fromString input =~ base91Regex :: Bool
 | 
			
		||||
   let isBase64 = BSU.fromString input =~ base64Regex :: Bool
 | 
			
		||||
   let isBase91 = BSU.fromString input =~ base91Regex :: Bool
 | 
			
		||||
       isBase64 = BSU.fromString input =~ base64Regex :: Bool
 | 
			
		||||
       isBase58 = BSU.fromString input =~ base58Regex :: Bool
 | 
			
		||||
       isBase32 = BSU.fromString input =~ base32Regex :: Bool
 | 
			
		||||
       isBase16 = BSU.fromString input =~ base16Regex :: Bool
 | 
			
		||||
       base91Result = if isBase91 then "\nTrying base91:\n" ++ dec91 input else ""
 | 
			
		||||
       base64Result = if isBase64 then "\nTrying base64:\n" ++ dec64 input else ""
 | 
			
		||||
       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 "" 
 | 
			
		||||
       results = filter (not . null) [base64Result, base32Result, base16Result]
 | 
			
		||||
       results = filter (not . null) [base91Result, base64Result, base32Result, base16Result]
 | 
			
		||||
    in 
 | 
			
		||||
      if null results
 | 
			
		||||
         then "Not able to solve the encoding.\n"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue