Documentation ¶
Index ¶
- Constants
- Variables
- func Register(name string, backend Driver)
- type ActivityLogEntry
- type ActivityType
- type Backend
- type CLDevices
- type CheckpointFile
- type Config
- type CrackedHash
- type CreateTaskTxn
- type Driver
- type EngineFile
- type EngineFileTxn
- type EngineFileType
- type EntitlementEntry
- type EntitlementType
- type GetPendingTasksRequest
- type GetPendingTasksResponseItem
- type ModifiableTaskRequest
- type PasswordCheckFunc
- type PendingTaskPayloadType
- type PendingTaskStatusChangeItem
- type SearchResults
- type StorageError
- type Task
- type TaskFile
- type TaskFileEngine
- type TaskFileTxn
- type TaskStatus
- type User
- type UserModifyRequest
- type WorkerCrackEngine
- type WorkerPriority
Constants ¶
const ( // TaskFileEngineAll indicates that this file should work on all engines TaskFileEngineAll = 0 // TaskFileEngineHashcat indicates that this task file only works on the hashcat engine TaskFileEngineHashcat = TaskFileEngine(WorkerHashcatEngine) )
Variables ¶
var ( // ErrNotFound is raised whenever a database backend raises it's driver specific ErrNotFound ErrNotFound = errors.New("not found") // ErrAlreadyExists is raised whenever a database backend raises a driver specific document already exists error ErrAlreadyExists = errors.New("already exists") // ErrViolateConstraint is raised whenever a database raises a driver specific constraint (unique) error ErrViolateConstraint = errors.New("constraint violation") )
Functions ¶
Types ¶
type ActivityLogEntry ¶
type ActivityLogEntry struct { OccuredAt time.Time UserUUID string Username string EntityID string StatusCode int Type ActivityType Path string IPAddress string }
ActivityLogEntry describes a change in the system to an entity by a user
type ActivityType ¶
type ActivityType uint8
ActivityType describes an action taken within the system
const ( // ActivtyLogin indicates a logon activity to the system ActivtyLogin ActivityType = iota // ActivityCreatedTask indicates a task was created to the system ActivityCreatedTask // ActivityModifiedTask indicates a task was modified in the system ActivityModifiedTask // ActivityDeletedTask indicates a task was deleted in the system ActivityDeletedTask // ActivityViewTask indicates a task was viewed in the system ActivityViewTask // ActivityViewPasswords indicates passwords were viewed ActivityViewPasswords // ActivityEntitlementRequest indicates an entitled request was requsted in the system ActivityEntitlementRequest // ActivityEntitlementModification indicates a user attempted to modify an entitled entity in the system ActivityEntitlementModification )
type Backend ¶
type Backend interface { Close() error LogActivity(ActivityLogEntry) error GetActivityLog(string) ([]ActivityLogEntry, error) RemoveActivityEntries(string) error NewTaskFileTransaction() (TaskFileTxn, error) GetTaskFileByID(string) (*TaskFile, error) ListTasksForUser(User) ([]TaskFile, error) NewEngineFileTransaction() (EngineFileTxn, error) GetEngineFileByID(storageID string) (*EngineFile, error) GetEngineFilesForUser(User) ([]EngineFile, error) DeleteEngineFile(string) error DeleteTaskFile(string) error // Task Management APIs NewTaskCreateTransaction() (CreateTaskTxn, error) GetTaskByID(string) (*Task, error) ChangeTaskStatus(string, TaskStatus, *string) error TasksSearch(page, limit int, orderby, searchQuery string, isAscending bool, user User) (*SearchResults, error) SaveCrackedHash(taskid, hash, value string, crackedAt time.Time) error GetCrackedPasswords(string) (*[]CrackedHash, error) GetPendingTasks(GetPendingTasksRequest) ([]GetPendingTasksResponseItem, error) UpdateTask(string, ModifiableTaskRequest) error SaveTaskCheckpoint(CheckpointFile) error GetTaskCheckpoint(string) ([]byte, error) DeleteTask(string) error // Rights Management APIs CheckEntitlement(userUUID, entityID string, entType EntitlementType) (bool, error) // GrantEntitlement grants the user access to the record passed in via document GrantEntitlement(user User, document interface{}) (err error) // RevokeEntitlement removes the user's access to the document RevokeEntitlement(user User, document interface{}) (err error) GetEntitlementsForTask(entityID string) ([]EntitlementEntry, error) RemoveEntitlements(string, EntitlementType) error // User Management APIs SearchForUserByPassword(username string, passcheck PasswordCheckFunc) (userRecord *User, err error) CreateUser(user *User) (err error) GetUserByID(userUUID string) (user *User, err error) GetUsers() ([]User, error) EditUser(string, UserModifyRequest) error }
Backend describes all APIs that a backend storage driver should implement
type CLDevices ¶
type CLDevices []int
CLDevices is a list of OpenCL device ID's that a task will use on a specific host Note: One might ask "Schmitt, why is the type saving the integer array as a json array and not a postgres integer[]?" The main reason behind this is time. While the pg driver does have a type for an []int64, the support for it in DBR as well as the overall sql interface in go doesn't play well with it.
type CheckpointFile ¶
CheckpointFile is a file used to restore a task's state within the engine. Note: We may need to revisit this if the files grow in size but as of now, they are only a few hundred bytes.
type Config ¶
type CrackedHash ¶
CrackedHash is a cracked password from a task
type CreateTaskTxn ¶
type CreateTaskTxn interface { CreateTask(t *Task) error GrantEntitlement(userUUID string, t Task) (err error) Rollback() error Commit() error }
CreateTaskTxn describes all the methods needed for the transaction tasked with creating a task
type EngineFile ¶
type EngineFile struct { FileID string FileName string FileSize int64 Description *string UploadedBy string UploadedByUUID string // UUID of the user who initially uploaded the file UploadedAt time.Time LastUpdatedAt time.Time FileType EngineFileType NumberOfEntries int64 SHA1Hash string SavedAt string // The physical location on the server where the file is located }
EngineFile describes a file that is either a dictionary, list of masks, or a rule file for GoCrack
type EngineFileTxn ¶
type EngineFileTxn interface { SaveEngineFile(tf EngineFile) error AddEntitlement(tf EngineFile, userid string) error Rollback() error Commit() error }
type EngineFileType ¶
type EngineFileType uint8
EngineFileType indicates the type of engine file
const ( // EngineFileDictionary indicates the shared file is a list of dictionary words EngineFileDictionary EngineFileType = iota // EngineFileMasks indicates the file is a list of passwords masks (combinations to try) EngineFileMasks // EngineFileRules indicates the file is a mangling rule set and is used to modify dictionary words EngineFileRules )
type EntitlementEntry ¶
EntitlementEntry is created when a user is granted access to a task, file, etc.
type EntitlementType ¶
type EntitlementType uint8
EntitlementType indicates the document type for the entitlement record
const ( EntitlementTask EntitlementType = iota EntitlementTaskFile EntitlementEngineFile )
type GetPendingTasksRequest ¶
type GetPendingTasksRequest struct { Hostname string DevicesInUse CLDevices RunningTasks []string CheckForNewTask bool }
GetPendingTasksRequest is used in the GetPendingTasks API to build a search query and return all actions that a host should take
type GetPendingTasksResponseItem ¶
type GetPendingTasksResponseItem struct { Type PendingTaskPayloadType Payload interface{} }
type ModifiableTaskRequest ¶
type ModifiableTaskRequest struct { AssignedToHost *string AssignedToDevices *CLDevices Status *TaskStatus }
ModifiableTaskRequest defines the fields in `Task` that are allowed to be modified
type PasswordCheckFunc ¶
PasswordCheckFunc defines a function that drivers use for validating a password from a found record. If the password stored in the driver is correct, this function should return true. Otherwise the login will fail
type PendingTaskPayloadType ¶
type PendingTaskPayloadType uint8
PendingTaskPayloadType describes the payload structure & contents
const ( // PendingTaskNewRequest indicates a new task PendingTaskNewRequest PendingTaskPayloadType = 1 << iota // PendingTaskStatusChange indicates a change in task status PendingTaskStatusChange )
type PendingTaskStatusChangeItem ¶
type PendingTaskStatusChangeItem struct { TaskID string NewStatus TaskStatus }
type SearchResults ¶
type SearchResults struct { Results interface{} Total int }
SearchResults includes the results of a search request along with the total number of documents before limits were applied
type StorageError ¶
type StorageError struct {
DriverError error
}
StorageError is a generic error raised by a backend
func (StorageError) Error ¶
func (e StorageError) Error() string
type Task ¶
type Task struct { TaskID string `storm:"id,unique"` TaskName string Status TaskStatus Engine WorkerCrackEngine EnginePayload interface{} // As of now, this can only be shared.HashcatUserOptions Priority WorkerPriority FileID string // FileID is a reference to TaskFile via TaskFile.FileID CreatedBy string CreatedByUUID string // CreatedBy is a reference to User via User.UserUUID CreatedAt time.Time LastUpdatedAt time.Time AssignedToHost string AssignedToDevices *CLDevices Comment *string CaseCode *string NumberCracked int NumberPasswords int Error *string }
Task describes all the properties of a GoCrack cracking task
type TaskFile ¶
type TaskFile struct { FileID string `storm:"unique"` SavedAt string // The physical location on the server where the file is located UploadedAt time.Time UploadedBy string UploadedByUUID string // UUID of the user who initially uploaded the file FileSize int64 FileName string SHA1Hash string ForEngine TaskFileEngine NumberOfPasswords int NumberOfSalts int }
TaskFile describes all the properties of a task file which is a file that contains one or more hashes that can be cracked by a GoCrack engine
type TaskFileEngine ¶
type TaskFileEngine uint8
TaskFileEngine indicates the engine that this task file is for
type TaskFileTxn ¶
type TaskFileTxn interface { SaveTaskFile(tf TaskFile) error AddEntitlement(tf TaskFile, userid string) error Rollback() error Commit() error }
TaskFileTxn describes all the methods needed for a task file transaction
type TaskStatus ¶
type TaskStatus string
TaskStatus indicates the processing status of a Task
const ( TaskStatusQueued TaskStatus = "Queued" TaskStatusDequeued TaskStatus = "Dequeued" TaskStatusRunning TaskStatus = "Running" TaskStatusStopping TaskStatus = "Stopping" TaskStatusStopped TaskStatus = "Stopped" TaskStatusError TaskStatus = "Error" TaskStatusExhausted TaskStatus = "Exhausted" TaskStatusFinished TaskStatus = "Finished" )
func (*TaskStatus) UnmarshalJSON ¶
func (s *TaskStatus) UnmarshalJSON(data []byte) error
type User ¶
type User struct { UserUUID string `storm:"unique"` Username string `storm:"unique"` Password string Enabled *bool EmailAddress string IsSuperUser bool CreatedAt time.Time }
User describes all the properties of a GoCrack user
type UserModifyRequest ¶
UserModifyRequest contains the fields in `User` that are allowed to be modified
type WorkerCrackEngine ¶
type WorkerCrackEngine uint8
WorkerCrackEngine defines the engine the worker uses to crack the password(s)
const ( // WorkerHashcatEngine indicates the task should use the hashcat engine WorkerHashcatEngine WorkerCrackEngine = 1 << iota )
type WorkerPriority ¶
type WorkerPriority int
WorkerPriority describes the priority of the task in relative to the position in queue
const ( WorkerPriorityHigh WorkerPriority = iota WorkerPriorityNormal WorkerPriorityLow )