Codebase list fudgec2 / 57bb8f5 Data / models.py
57bb8f5

Tree @57bb8f5 (Download .tar.gz)

models.py @57bb8f5raw · history · blame

# coding: utf-8
from sqlalchemy import Column, Date, DateTime, Float, ForeignKey, Index, String, Table, Text, text, create_engine
from sqlalchemy.dialects.mysql import BIGINT, INTEGER #, MEDIUMTEXT, TINYINT, VARCHAR
# from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from Storage.settings import Settings
Base = declarative_base()
metadata = Base.metadata

# TODO: Create a auth log table.

class Users(Base):
    __tablename__='users'
    uid = Column(INTEGER,primary_key=True)
    user_email = Column(String(255), nullable=False)
    password = Column(String(255), nullable=False)
    last_login = Column(String(255), nullable=False)
    authenticated = Column(String, server_default=text("False"))
    admin = Column(String(255), nullable=False)
    first_logon = Column(INTEGER(1), nullable=False, default=0)
    first_logon_guid = Column(String(32), nullable=False, default="0")
    def is_active(self):
        """True, as all users are active."""
        return True

    def get_id(self):
        """Return the email address to satisfy Flask-Login's requirements."""
        return self.user_email

    def is_authenticated(self):
        """Return True if the user is authenticated."""
        return self.authenticated

    def is_anonymous(self):
        """False, as anonymous users aren't supported."""
        return False

class ResponseLogs(Base):
    __tablename__='response_logs'
    log_id = Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    cid = Column(INTEGER(11), nullable=False, index=True)
    uik = Column(INTEGER(11), nullable=False, index=True)
    log_entry = Column(String(255), nullable=False)
    time = Column(INTEGER(11), nullable=False, index=True)

class Implants(Base):
    __tablename__='implants'
    iid=Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    stager_key = Column(String(255), nullable=False, unique=True)
    title = Column(String(255),nullable=False)
    cid = Column(INTEGER(11), nullable=False, index=True )
    file_hash=Column(String(255), nullable=True)
    filename=Column(String(255), nullable=True)
    callback_url = Column(String(255), nullable=False)
    port = Column(INTEGER(5), nullable=False, default=0)
    description = Column(String(255))
    beacon = Column(INTEGER(10))
    initial_delay = Column(INTEGER(10))
    comms_http = Column(INTEGER(1))
    comms_dns = Column(INTEGER(1))
    comms_binary = Column(INTEGER(1))
    obfuscation_level = Column(INTEGER(1), nullable=False)

class GeneratedImplants(Base):
    __tablename__='generated_implants'
    unique_implant_id = Column(INTEGER(16), unique=True,nullable=False, primary_key=True)
    last_check_in = Column(INTEGER(16))
    current_beacon = Column(INTEGER(16))
    iid = Column(INTEGER(11), ForeignKey("implants.iid"), nullable=False, index=True)
    generated_title = Column(String(255),nullable=False)
    time = Column(INTEGER(16), nullable=False)

class ImplantLogs(Base):
    __tablename__='implant_logs'
    log_id = Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    cid = Column(INTEGER(11), nullable=False, index=True)
    uid =Column(INTEGER(11), nullable=False, index=True)
    uik=Column(INTEGER(11), nullable=False, index=True)
    time =Column(INTEGER(11), nullable=False, index=True)
    log_entry =Column(String(255), nullable=False)
    read_by_implant = Column(INTEGER(16),nullable=False, server_default=text("0"))

class Campaigns(Base):
    __tablename__='campaigns'
    cid = Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    title = Column(String(255), nullable=False, unique=True)
    created =Column(INTEGER(11), nullable=False, index=True)
    description = Column(String(255))

class CampaignUsers(Base):
    __tablename__='campaign_users'
    auto_id = Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    cid = Column(INTEGER(11),ForeignKey("campaigns.cid"), nullable=False, index=True )
    uid = Column(INTEGER(11), nullable=False, index=True)
    permissions =Column(INTEGER(1),nullable=False, default=0)

class AppLogs(Base):
    __tablename__='app_logs'
    log_id = Column(INTEGER(16), primary_key=True, index=True, nullable=False)
    type = Column(String(255), nullable=False)
    data = Column(String(255),nullable=False)

class CampaignLogs(Base):
    __tablename__='campaign_logs'
    auto_id = Column(INTEGER(11), nullable=False, index=True, primary_key=True)
    user = Column(INTEGER(8),nullable=False)
    campaign = Column(INTEGER(8),nullable=False)
    time = Column(INTEGER(32),nullable=False)
    log_type = Column(String(32), nullable=False)
    entry = Column(String(1024), nullable=False)


# -- Generate an empty database if non-existent.
engine = create_engine("sqlite:///Storage/{}?check_same_thread=False".format(Settings.database_name), echo=False)
Base.metadata.create_all(engine)