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.UTF8 as BSU      -- from utf8-string
 | 
				
			||||||
-- import Data.ByteString (singleton)
 | 
					-- import Data.ByteString (singleton)
 | 
				
			||||||
import GHC.Word (Word8)
 | 
					import GHC.Word (Word8)
 | 
				
			||||||
 | 
					-- import Data.Char
 | 
				
			||||||
import qualified Data.ByteString.Char8 as C
 | 
					import qualified Data.ByteString.Char8 as C
 | 
				
			||||||
-- Regex imports
 | 
					-- Regex imports
 | 
				
			||||||
import Text.Regex.TDFA
 | 
					import Text.Regex.TDFA
 | 
				
			||||||
 | 
					import Data.Word (Word8)
 | 
				
			||||||
 | 
					import Data.Char (ord, chr)
 | 
				
			||||||
 | 
					import Data.Maybe (fromMaybe)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
data Based = Decode { 
 | 
					data Based = Decode { 
 | 
				
			||||||
              b91 :: Bool,
 | 
					              b91 :: Bool,
 | 
				
			||||||
| 
						 | 
					@ -118,12 +122,26 @@ octToInt (x : xs) = x + 8 * octToInt xs
 | 
				
			||||||
-- base functions
 | 
					-- base functions
 | 
				
			||||||
-- without the show func, sequences like \n will not be shown as characters but will be executed as newline
 | 
					-- without the show func, sequences like \n will not be shown as characters but will be executed as newline
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dec91 :: String -> String
 | 
					-- dec91 :: String -> String
 | 
				
			||||||
dec91 = C.unpack . B91.decode
 | 
					-- dec91 = C.unpack . B91.decode
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					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
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
--    case singleton . B91.decode input of
 | 
					 | 
				
			||||||
--      Right decoded -> C.unpack decoded
 | 
					 | 
				
			||||||
--      Left _ -> "Error decoding Base91.\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
enc91 :: String -> String
 | 
					enc91 :: String -> String
 | 
				
			||||||
enc91 = B91.encode . BSU.fromString
 | 
					enc91 = B91.encode . BSU.fromString
 | 
				
			||||||
| 
						 | 
					@ -265,16 +283,17 @@ base16Regex = "^[0-9A-FXx]*$"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
solveEnc :: String -> String
 | 
					solveEnc :: String -> String
 | 
				
			||||||
solveEnc input =
 | 
					solveEnc input =
 | 
				
			||||||
   -- let isBase91 = BSU.fromString input =~ base91Regex :: Bool
 | 
					   let isBase91 = BSU.fromString input =~ base91Regex :: Bool
 | 
				
			||||||
   let isBase64 = BSU.fromString input =~ base64Regex :: Bool
 | 
					       isBase64 = BSU.fromString input =~ base64Regex :: Bool
 | 
				
			||||||
       isBase58 = BSU.fromString input =~ base58Regex :: Bool
 | 
					       isBase58 = BSU.fromString input =~ base58Regex :: Bool
 | 
				
			||||||
       isBase32 = BSU.fromString input =~ base32Regex :: Bool
 | 
					       isBase32 = BSU.fromString input =~ base32Regex :: Bool
 | 
				
			||||||
       isBase16 = BSU.fromString input =~ base16Regex :: 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 ""
 | 
					       base64Result = if isBase64 then "\nTrying base64:\n" ++ dec64 input else ""
 | 
				
			||||||
       base58Result = if isBase58 then "\nTrying base58:\n" ++ dec58 input else ""
 | 
					       base58Result = if isBase58 then "\nTrying base58:\n" ++ dec58 input else ""
 | 
				
			||||||
       base32Result = if isBase64 then "\nTrying base32:\n" ++ dec32 input else ""
 | 
					       base32Result = if isBase64 then "\nTrying base32:\n" ++ dec32 input else ""
 | 
				
			||||||
       base16Result = if isBase16 then "\nTrying base16:\n" ++ dec16 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 
 | 
					    in 
 | 
				
			||||||
      if null results
 | 
					      if null results
 | 
				
			||||||
         then "Not able to solve the encoding.\n"
 | 
					         then "Not able to solve the encoding.\n"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue