packages feed

accelerate-examples-1.2.0.0: examples/hashcat/Config.hs

{-# LANGUAGE CPP             #-}
{-# LANGUAGE PatternGuards   #-}
{-# LANGUAGE TemplateHaskell #-}

module Config where

import Data.Label
import System.Console.GetOpt


data Config
  = Config
  {
    -- Input data
    _configStrings              :: [String]
  , _configDict                 :: FilePath
  , _configMaxWords             :: Maybe Int
  , _configSkipWords            :: Int
  -- , _configNoSeq                :: Bool
  }
  deriving Show

$(mkLabels [''Config])

defaults :: Config
defaults = Config
  {
    _configStrings              = []
  , _configDict                 = []
  , _configMaxWords             = Nothing
  , _configSkipWords            = 0
  -- , _configNoSeq                = True
  }


-- | The set of available command-line options
--
options :: [OptDescr (Config -> Config)]
options =
  [ Option      ['s'] []
                (ReqArg (modify configStrings . (:)) "STRING")
                "Lookup the plain text of a given checksum"

  , Option      ['d'] ["dictionary"]
                (ReqArg (set configDict) "FILE")
                "Plain text word list to search against"

  , Option      ['j'] ["skip-words"]
                (ReqArg (set configSkipWords . read) "INT")
                "Skip this many entries from the start of the word list"

  , Option      ['n'] ["max-words"]
                (ReqArg (set configMaxWords . Just . read) "INT")
                "Use at most this many words from the list"

  -- , Option      [] ["noseq"]
  --               (NoArg (set configNoSeq True))
  --               "do not use sequencing"
  ]


-- | Process the command line options
--
header :: [String]
header =
  [ "accelerate-hashcat (c) [2013] The Accelerate Team"
  , ""
  , "Usage: accelerate-hashcat -d dictionary [OPTIONS] [file ...]"
  , ""
  ]

footer :: [String]
footer = [ "" ]