Package lib :: Package cuckoo :: Package core :: Module database :: Class Database
[hide private]
[frames] | no frames]

Class Database

source code

object --+
         |
        Database

Analysis queue database.

This class handles the creation of the database user for internal queue management. It also provides some functions for interacting with it.

Nested Classes [hide private]
  __metaclass__
Singleton.
Instance Methods [hide private]
 
__init__(self, dsn=None)
x.__init__(...) initializes x; see help(type(x)) for signature
source code
 
__del__(self)
Disconnects pool.
source code
 
_get_or_create(self, session, model, **kwargs)
Get an ORM instance or create it if not exist.
source code
 
clean_machines(self)
Clean old stored machines and related tables.
source code
 
add_machine(self, name, label, ip, platform, tags, interface, snapshot, resultserver_ip, resultserver_port)
Add a guest machine.
source code
 
set_status(self, task_id, status)
Set task status.
source code
 
fetch(self, lock=True)
Fetches a task waiting to be processed and locks it for running.
source code
 
guest_start(self, task_id, name, label, manager)
Logs guest start.
source code
 
guest_remove(self, guest_id)
Removes a guest start entry.
source code
 
guest_stop(self, guest_id)
Logs guest stop.
source code
 
list_machines(self, locked=False)
Lists virtual machines.
source code
 
lock_machine(self, name=None, platform=None, tags=None)
Places a lock on a free virtual machine.
source code
 
unlock_machine(self, label)
Remove lock form a virtual machine.
source code
 
count_machines_available(self)
How many virtual machines are ready for analysis.
source code
 
set_machine_status(self, label, status)
Set status for a virtual machine.
source code
 
add_error(self, message, task_id)
Add an error related to a task.
source code
 
add(self, obj, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)
Add a task to database.
source code
 
add_path(self, file_path, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)
Add a task to database from file path.
source code
 
add_url(self, url, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)
Add a task to database from url.
source code
 
reschedule(self, task_id)
Reschedule a task.
source code
 
list_tasks(self, limit=None, details=False, category=None, offset=None, status=None, not_status=None)
Retrieve list of task.
source code
 
count_tasks(self, status=None)
Count tasks in the database
source code
 
view_task(self, task_id, details=False)
Retrieve information on a task.
source code
 
delete_task(self, task_id)
Delete information on a task.
source code
 
view_sample(self, sample_id)
Retrieve information on a sample given a sample id.
source code
 
find_sample(self, md5=None, sha256=None)
Search samples by MD5.
source code
 
count_samples(self)
Counts the amount of samples in the database.
source code
 
view_machine(self, name)
Show virtual machine.
source code
 
view_machine_by_label(self, label)
Show virtual machine.
source code
 
view_errors(self, task_id)
Get all errors related to a task.
source code

Inherited from object: __delattr__, __format__, __getattribute__, __hash__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __sizeof__, __str__, __subclasshook__

Properties [hide private]

Inherited from object: __class__

Method Details [hide private]

__init__(self, dsn=None)
(Constructor)

source code 

x.__init__(...) initializes x; see help(type(x)) for signature

Parameters:
  • dsn - database connection string.
Overrides: object.__init__

_get_or_create(self, session, model, **kwargs)

source code 

Get an ORM instance or create it if not exist.

Parameters:
  • session - SQLAlchemy session object
  • model - model to query
Returns:
row instance

add_machine(self, name, label, ip, platform, tags, interface, snapshot, resultserver_ip, resultserver_port)

source code 

Add a guest machine.

Parameters:
  • name - machine id
  • label - machine label
  • ip - machine IP address
  • platform - machine supported platform
  • interface - sniffing interface for this machine
  • snapshot - snapshot name to use instead of the current one, if configured
  • resultserver_ip - IP address of the Result Server
  • resultserver_port - port of the Result Server

set_status(self, task_id, status)

source code 

Set task status.

Parameters:
  • task_id - task identifier
  • status - status string
Returns:
operation status

fetch(self, lock=True)

source code 

Fetches a task waiting to be processed and locks it for running.

Returns:
None or task

guest_start(self, task_id, name, label, manager)

source code 

Logs guest start.

Parameters:
  • task_id - task identifier
  • name - vm name
  • label - vm label
  • manager - vm manager
Returns:
guest row id

guest_stop(self, guest_id)

source code 

Logs guest stop.

Parameters:
  • guest_id - guest log entry id

list_machines(self, locked=False)

source code 

Lists virtual machines.

Returns:
list of virtual machines

lock_machine(self, name=None, platform=None, tags=None)

source code 

Places a lock on a free virtual machine.

Parameters:
  • name - optional virtual machine name
  • platform - optional virtual machine platform
  • tags - optional tags required (list)
Returns:
locked machine

unlock_machine(self, label)

source code 

Remove lock form a virtual machine.

Parameters:
  • label - virtual machine label
Returns:
unlocked machine

count_machines_available(self)

source code 

How many virtual machines are ready for analysis.

Returns:
free virtual machines count

set_machine_status(self, label, status)

source code 

Set status for a virtual machine.

Parameters:
  • label - virtual machine label
  • status - new virtual machine status

add_error(self, message, task_id)

source code 

Add an error related to a task.

Parameters:
  • message - error message
  • task_id - ID of the related task

add(self, obj, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)

source code 

Add a task to database.

Parameters:
  • obj - object to add (File or URL).
  • timeout - selected timeout.
  • options - analysis options.
  • priority - analysis priority.
  • custom - custom options.
  • machine - selected machine.
  • platform - platform.
  • tags - optional tags that must be set for machine selection
  • memory - toggle full memory dump.
  • enforce_timeout - toggle full timeout execution.
  • clock - virtual machine clock time
Returns:
cursor or None.

add_path(self, file_path, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)

source code 

Add a task to database from file path.

Parameters:
  • file_path - sample path.
  • timeout - selected timeout.
  • options - analysis options.
  • priority - analysis priority.
  • custom - custom options.
  • machine - selected machine.
  • platform - platform.
  • tags - Tags required in machine selection
  • memory - toggle full memory dump.
  • enforce_timeout - toggle full timeout execution.
  • clock - virtual machine clock time
Returns:
cursor or None.

add_url(self, url, timeout=0, package='', options='', priority=1, custom='', machine='', platform='', tags=None, memory=False, enforce_timeout=False, clock=None)

source code 

Add a task to database from url.

Parameters:
  • url - url.
  • timeout - selected timeout.
  • options - analysis options.
  • priority - analysis priority.
  • custom - custom options.
  • machine - selected machine.
  • platform - platform.
  • tags - tags for machine selection
  • memory - toggle full memory dump.
  • enforce_timeout - toggle full timeout execution.
  • clock - virtual machine clock time
Returns:
cursor or None.

reschedule(self, task_id)

source code 

Reschedule a task.

Parameters:
  • task_id - ID of the task to reschedule.
Returns:
ID of the newly created task.

list_tasks(self, limit=None, details=False, category=None, offset=None, status=None, not_status=None)

source code 

Retrieve list of task.

Parameters:
  • limit - specify a limit of entries.
  • details - if details about must be included
  • category - filter by category
  • offset - list offset
  • status - filter by task status
  • not_status - exclude this task status from filter
Returns:
list of tasks.

count_tasks(self, status=None)

source code 

Count tasks in the database

Parameters:
  • status - apply a filter according to the task status
Returns:
number of tasks found

view_task(self, task_id, details=False)

source code 

Retrieve information on a task.

Parameters:
  • task_id - ID of the task to query.
Returns:
details on the task.

delete_task(self, task_id)

source code 

Delete information on a task.

Parameters:
  • task_id - ID of the task to query.
Returns:
operation status.

view_sample(self, sample_id)

source code 

Retrieve information on a sample given a sample id.

Parameters:
  • sample_id - ID of the sample to query.
Returns:
details on the sample used in sample: sample_id.

find_sample(self, md5=None, sha256=None)

source code 

Search samples by MD5.

Parameters:
  • md5 - md5 string
Returns:
matches list

view_machine(self, name)

source code 

Show virtual machine.

Returns:
virtual machine's details

view_machine_by_label(self, label)

source code 

Show virtual machine.

Returns:
virtual machine's details

view_errors(self, task_id)

source code 

Get all errors related to a task.

Parameters:
  • task_id - ID of task associated to the errors
Returns:
list of errors.