tuiHoneyPot

front and back end of my TUI honeypot
Log | Files | Refs | README

database.py (4084B)


      1 import sqlite3
      2 from blueprints.utils import crypto
      3 
      4 connection = sqlite3.connect('db/database.db', check_same_thread=False)
      5 cursor = connection.cursor()
      6 
      7 def user_exists(username):
      8     cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
      9     user = cursor.fetchone()
     10     if user is None:
     11         return False
     12     return True
     13 
     14 def register_user(username, password):
     15     if user_exists(username):
     16         return False
     17 
     18     cursor.execute("INSERT INTO users (username, password) VALUES (?, ?)", (username, crypto.hash_string(password)))
     19     connection.commit()
     20     return True
     21 
     22 def login_user(username, password):
     23     cursor.execute("SELECT * FROM users WHERE username = ? AND password = ?", (username, crypto.hash_string(password)))
     24     user = cursor.fetchone()
     25     if user is None:
     26         return False
     27     cursor.execute("UPDATE users SET isLoggedIn = 1 WHERE username = ?", (username,))
     28     connection.commit()
     29     return True
     30 
     31 def logout_user(username):
     32     cursor.execute("UPDATE users SET isLoggedIn = 0 WHERE username = ?", (username,))
     33     connection.commit()
     34     return True
     35 
     36 def is_banned(username):
     37     cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
     38     user = cursor.fetchone()
     39     if user is None:
     40         return False
     41     return user[5] == 1
     42 
     43 def get_user_id(username):
     44     cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
     45     user = cursor.fetchone()
     46     if user is None:
     47         return None
     48 
     49     return user[0]
     50 
     51 def check_challenge(challenge_id, flag, username):
     52     cursor.execute("SELECT * FROM challenges WHERE id = ? AND flag = ?", (challenge_id, flag))
     53     challenge = cursor.fetchone()
     54     if challenge is None:
     55         return "Wrong flag!"
     56 
     57     user_id = get_user_id(username)
     58     if user_id is None:
     59         return "User does not exist!"
     60 
     61     cursor.execute("SELECT * FROM solved WHERE user_id = ? AND challenge_id = ?", (user_id, challenge_id))
     62     solved = cursor.fetchone()
     63     if solved is not None:
     64         return "Challenge already solved!"
     65 
     66     cursor.execute("INSERT INTO solved (user_id, challenge_id) VALUES (?, ?)", (user_id, challenge_id))
     67     connection.commit()
     68     return "Challenge solved!"
     69 
     70 def get_all_logged_in_users():
     71     cursor.execute("SELECT * FROM users WHERE isLoggedIn = 1")
     72     users = cursor.fetchall()
     73     return users
     74 
     75 def get_all_users():
     76     cursor.execute("SELECT * FROM users")
     77     users = cursor.fetchall()
     78     return users
     79 
     80 def ban_user(user_id):
     81     cursor.execute("UPDATE users SET isBanned = 1 WHERE id = ?", (user_id,))
     82     connection.commit()
     83 
     84 def unban_user(user_id):
     85     cursor.execute("UPDATE users SET isBanned = 0 WHERE id = ?", (user_id,))
     86     connection.commit()
     87 
     88 def get_all_challenges():
     89     cursor.execute("SELECT * FROM challenges")
     90     challenges = cursor.fetchall()
     91     return challenges
     92 
     93 def enable_challenge(challenge_id):
     94     cursor.execute("UPDATE challenges SET enabled = 1 WHERE id = ?", (challenge_id,))
     95     connection.commit()
     96 
     97 def disable_challenge(challenge_id):
     98     cursor.execute("UPDATE challenges SET enabled = 0 WHERE id = ?", (challenge_id,))
     99     connection.commit()
    100 
    101 def is_admin(username):
    102     cursor.execute("SELECT * FROM users WHERE username = ?", (username,))
    103     user = cursor.fetchone()
    104 
    105     if user is None:
    106         return False
    107 
    108     return user[3] == 1
    109 
    110 def get_flag(challenge_id):
    111     cursor.execute("SELECT * FROM challenges WHERE id = ?", (challenge_id,))
    112     challenge = cursor.fetchone()
    113     if challenge is None:
    114         return None
    115 
    116     return challenge[2]
    117 
    118 def add_solve(challenge_id, user_id):
    119     try:
    120         cursor.execute("INSERT INTO solves (userId, challengeId) VALUES (?, ?)", (user_id, challenge_id))
    121         connection.commit()
    122     except:
    123         pass
    124 
    125 def challenge_disabled(challenge_id):
    126     cursor.execute("SELECT * FROM challenges WHERE id = ?", (challenge_id,))
    127     challenge = cursor.fetchone()
    128     if challenge is None:
    129         return True
    130 
    131     return challenge[3] == 0
    132 
    133 
    134 def get_solved_challenges():
    135     cursor.execute("SELECT * FROM solves")
    136     solves = cursor.fetchall()
    137     return solves