class File(elixir.Entity): #parent = elixir.ManyToOne('File') #children = elixir.OneToMany('File') evidence = elixir.ManyToOne('Evidence') filesystem = elixir.ManyToOne('Filesystem') state = elixir.ManyToOne('FileState') filename = elixir.Field(elixir.Unicode(300), index=True) filesize = elixir.Field(elixir.Integer) fullpath = elixir.ManyToOne('FullPath') extension = elixir.ManyToOne('Extension') mimetype = elixir.ManyToOne('MimeType') md5 = elixir.ManyToOne('Md5') sha1 = elixir.ManyToOne('Sha1') sha256 = elixir.ManyToOne('Sha256') ssdeep = elixir.ManyToOne('Ssdeep') def fullFileSpec(self, hashtype='md5'): fp = os.path.join(self.fullpath.fullpath, self.filename) fsize = fritutils.humanize(self.filesize) hashes = { 'md5': self.md5.md5, 'sha1': self.sha1.sha1, 'sha256': self.sha256.sha256, 'ssdeep': self.ssdeep.ssdeep } fhash = 'NO_HASH_COMPUTED' if hashes[hashtype]: fhash = hashes[hashtype] specs = '%s,%s,%s: "%s" ,%s/%s,"%s"' % ( self.state.state, fsize, hashtype, fhash, self.evidence.configName, self.filesystem.configName, fp) return specs def __repr__(self): return os.path.join(self.fullpath.fullpath, self.filename)
class Blackboard(elixir.Entity): elixir.using_options(tablename='blackboard') MyType = elixir.Field(elixir.Unicode(255)) TargetType = elixir.Field(elixir.Unicode(255)) GlobalJobId = elixir.Field(elixir.Unicode(255), primary_key=True) ProcId = elixir.Field(elixir.Integer) AutoClusterId = elixir.Field(elixir.Integer) AutoClusterAttrs = elixir.Field(elixir.Unicode(255)) WantMatchDiagnostics = elixir.Field(elixir.Boolean) LastMatchTime = elixir.Field(elixir.DateTime) LastRejMatchTime = elixir.Field(elixir.DateTime) NumJobMatches = elixir.Field(elixir.Integer) OrigMaxHosts = elixir.Field(elixir.Integer) LastJobStatus = elixir.Field(elixir.Integer) JobStatus = elixir.Field(elixir.Integer) EnteredCurrentStatus = elixir.Field(elixir.DateTime) LastSuspensionTime = elixir.Field(elixir.DateTime) CurrentHosts = elixir.Field(elixir.Integer) ClaimId = elixir.Field(elixir.Unicode(255)) PublicClaimId = elixir.Field(elixir.Unicode(255)) StartdIpAddr = elixir.Field(elixir.Unicode(255)) RemoteHost = elixir.Field(elixir.Unicode(255)) RemoteSlotID = elixir.Field(elixir.Integer) StartdPrincipal = elixir.Field(elixir.Unicode(255)) ShadowBday = elixir.Field(elixir.DateTime) JobStartDate = elixir.Field(elixir.DateTime) JobCurrentStartDate = elixir.Field(elixir.DateTime) NumShadowStarts = elixir.Field(elixir.Integer) JobRunCount = elixir.Field(elixir.Integer) ClusterId = elixir.Field(elixir.Integer) QDate = elixir.Field(elixir.DateTime) CompletionDate = elixir.Field(elixir.DateTime) Owner = elixir.Field(elixir.Unicode(255)) RemoteWallClockTime = elixir.Field(elixir.Float) LocalUserCpu = elixir.Field(elixir.Float) LocalSysCpu = elixir.Field(elixir.Float) RemoteUserCpu = elixir.Field(elixir.Float) RemoteSysCpu = elixir.Field(elixir.Float) ExitStatus = elixir.Field(elixir.Integer) NumCkpts_RAW = elixir.Field(elixir.Integer) NumCkpts = elixir.Field(elixir.Integer) NumJobStarts = elixir.Field(elixir.Integer) NumRestarts = elixir.Field(elixir.Integer) NumSystemHolds = elixir.Field(elixir.Integer) CommittedTime = elixir.Field(elixir.DateTime) TotalSuspensions = elixir.Field(elixir.Integer) CumulativeSuspensionTime = elixir.Field(elixir.Integer) ExitBySignal = elixir.Field(elixir.Boolean) CondorVersion = elixir.Field(elixir.Unicode(255)) CondorPlatform = elixir.Field(elixir.Unicode(255)) RootDir = elixir.Field(elixir.Unicode(255)) Iwd = elixir.Field(elixir.Unicode(255)) JobUniverse = elixir.Field(elixir.Integer) Cmd = elixir.Field(elixir.Unicode(255)) MinHosts = elixir.Field(elixir.Integer) MaxHosts = elixir.Field(elixir.Integer) WantRemoteSyscalls = elixir.Field(elixir.Boolean) WantCheckpoint = elixir.Field(elixir.Boolean) RequestCpus = elixir.Field(elixir.Integer) JobPrio = elixir.Field(elixir.Integer) User = elixir.Field(elixir.Unicode(255)) NiceUser = elixir.Field(elixir.Boolean) JobNotification = elixir.Field(elixir.Integer) WantRemoteIO = elixir.Field(elixir.Boolean) UserLog = elixir.Field(elixir.Unicode(255)) CoreSize = elixir.Field(elixir.Integer) KillSig = elixir.Field(elixir.Unicode(255)) Rank = elixir.Field(elixir.Float) In = elixir.Field(elixir.Unicode(255)) TransferIn = elixir.Field(elixir.Boolean) Out = elixir.Field(elixir.Unicode(255)) StreamOut = elixir.Field(elixir.Boolean) Err = elixir.Field(elixir.Unicode(255)) StreamErr = elixir.Field(elixir.Boolean) BufferSize = elixir.Field(elixir.Integer) BufferBlockSize = elixir.Field(elixir.Integer) ShouldTransferFiles = elixir.Field(elixir.Unicode(255)) WhenToTransferOutput = elixir.Field(elixir.Unicode(255)) TransferFiles = elixir.Field(elixir.Unicode(255)) ImageSize_RAW = elixir.Field(elixir.Integer) ImageSize = elixir.Field(elixir.Integer) ExecutableSize_RAW = elixir.Field(elixir.Integer) ExecutableSize = elixir.Field(elixir.Integer) DiskUsage_RAW = elixir.Field(elixir.Integer) DiskUsage = elixir.Field(elixir.Integer) RequestMemory = elixir.Field(elixir.Unicode(255)) RequestDisk = elixir.Field(elixir.Unicode(255)) Requirements = elixir.Field(elixir.Unicode(255)) FileSystemDomain = elixir.Field(elixir.Unicode(255)) JobLeaseDuration = elixir.Field(elixir.Integer) PeriodicHold = elixir.Field(elixir.Boolean) PeriodicRelease = elixir.Field(elixir.Boolean) PeriodicRemove = elixir.Field(elixir.Boolean) OnExitHold = elixir.Field(elixir.Boolean) OnExitRemove = elixir.Field(elixir.Boolean) LeaveJobInQueue = elixir.Field(elixir.Boolean) DAGNodeName = elixir.Field(elixir.Unicode(255)) DAGParentNodeNames = elixir.Field(elixir.Unicode(255)) DAGManJobId = elixir.Field(elixir.Unicode(255)) HookKeyword = elixir.Field(elixir.Unicode(255)) Environment = elixir.Field(elixir.UnicodeText()) Arguments = elixir.Field(elixir.Unicode(255)) MyAddress = elixir.Field(elixir.Unicode(255)) LastJobLeaseRenewal = elixir.Field(elixir.DateTime) TransferKey = elixir.Field(elixir.Unicode(255)) TransferSocket = elixir.Field(elixir.Unicode(255)) ShadowIpAddr = elixir.Field(elixir.Unicode(255)) ShadowVersion = elixir.Field(elixir.Unicode(255)) UidDomain = elixir.Field(elixir.Unicode(255)) OrigCmd = elixir.Field(elixir.Unicode(255)) OrigIwd = elixir.Field(elixir.Unicode(255)) StarterIpAddr = elixir.Field(elixir.Unicode(255)) JobState = elixir.Field(elixir.Unicode(255)) NumPids = elixir.Field(elixir.Integer) JobPid = elixir.Field(elixir.Integer) JobDuration = elixir.Field(elixir.Float) ExitCode = elixir.Field(elixir.Integer) Dataset = elixir.Field(elixir.Unicode(255)) Instances = elixir.Field(elixir.Integer) def __repr__(self): return ('Blackboard(GlobalJobId=%s, ExitCode=%s)' % (self.GlobalJobId, str(self.ExitCode))) def todict(self): return (dict([(key, val) for (key, val) in self.__dict__.items() if not key.startswith('_')]))
class Person(e.Entity): name = e.Field(e.Unicode(60), primary_key=True)
class Movie(e.Entity): title = e.Field(e.Unicode(30), primary_key=True) year = e.Field(e.Integer, primary_key=True) description = e.Field(e.UnicodeText, deferred=True) director = e.ManyToOne('Director') genres = e.ManyToMany('Genre')
class Genre(e.Entity): name = e.Field(e.Unicode(15), primary_key=True) movies = e.ManyToMany('Movie') def __repr__(self): return '<Genre "%s">' % self.name
class Sha256(elixir.Entity): sha256 = elixir.Field(elixir.Unicode(64), index=True) files = elixir.OneToMany('File')
class Sha1(elixir.Entity): sha1 = elixir.Field(elixir.Unicode(40), index=True) files = elixir.OneToMany('File')
class Md5(elixir.Entity): md5 = elixir.Field(elixir.Unicode(32), index=True) files = elixir.OneToMany('File')
class MimeType(elixir.Entity): mimetype = elixir.Field(elixir.Unicode(150)) files = elixir.OneToMany('File')
class FullPath(elixir.Entity): fullpath = elixir.Field(elixir.Unicode(900), index=True) files = elixir.OneToMany('File')
class Extension(elixir.Entity): extension = elixir.Field(elixir.Unicode(50), index=True) files = elixir.OneToMany('File')
class FileState(elixir.Entity): state = elixir.Field(elixir.Unicode(20))
class Filesystem(elixir.Entity): evidence = elixir.ManyToOne('Evidence') configName = elixir.Field(elixir.Unicode(300))
class Evidence(elixir.Entity): name = elixir.Field(elixir.Unicode(300)) configName = elixir.Field(elixir.Unicode(300))
class Ssdeep(elixir.Entity): ssdeep = elixir.Field(elixir.Unicode(150), index=True) files = elixir.OneToMany('File')