Пример #1
0
def getValidLetters(selectedAlphabet):
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("SELECT alphabet FROM alphabet WHERE name = %s",
                [selectedAlphabet])
    alphabet = cur.fetchone()[0]
    return alphabet
Пример #2
0
def getIntro(selectedAlphabet):
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("SELECT intro FROM alphabet WHERE name = %s",
                [selectedAlphabet])
    introText = cur.fetchone()[0]
    return introText
Пример #3
0
def getText(id):
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("SELECT text, language FROM substitution WHERE id = %s", [id])
    txt = cur.fetchone()
    cur.close()
    return txt
Пример #4
0
def check_file():
    file = returnFile()
    read = file.read()
    try:
        with open(private, "r") as myfile:
            key = RSA.importKey(myfile.read())
        decrypted = decrypt(read, key).decode('utf-8')
        items = decrypted.split(",")
        db = database.dbcon()
        cur = db.cursor()
        #n = cur.execute("SELECT date, hashFile FROM timestamps WHERE hashPortal = %s AND hashFile = %s AND date = %s", (items[1], items[0], datetime.strptime(items[2], TIME_FORMAT)))
        n = cur.execute(
            "SELECT date, hashFile FROM timestamps WHERE hashPortal = %s AND hashFile = %s",
            (items[1], items[0]))
        cur.close()
        if n == 0:
            return render_template(
                'timestamp.file.html',
                error=
                "Z danim certifikatom ni bil potrjen noben dokument na tej strani."
            )
        else:
            return render_template('timestamp.file.html',
                                   check="Dokument z zgoščevalno funkcijo " +
                                   items[0] + " je bil potrjen " + items[2])
    except:
        pass
    return render_template(
        'timestamp.file.html',
        error=
        "Prišlo je do napake pri preverjanju certifikata ali pa je certifikat neveljaven, poskusite ponovno."
    )
Пример #5
0
def output():
    signature = getSignature()
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("INSERT INTO timestamps (hashPortal, hashFile, date) VALUES (%s, %s, %s)", (signature[1], signature[0], signature[2]))
    db.commit()
    time = signature[2].strftime(TIME_FORMAT)
    text = ','.join([signature[0], signature[1], time])
    return redirect(url_for('timestamp.file', hash=signature[0], text=text, time=time))
Пример #6
0
def show(idx):
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("SELECT data FROM slika WHERE id = %s", idx)
    r = cur.fetchone()
    cur.close()
    if r == None:
        abort(404)
    response = make_response(r[0])
    response.headers['Content-Type'] = 'image/png'
    return response
Пример #7
0
def leaderboard(difficulty):
    db = database.dbcon()
    cur = db.cursor()
    table = 'SELECT * FROM crypto_leaderboard'
    condition = 'WHERE difficulty = "{}"'.format(difficulty)
    # sort = 'ORDER BY "{}" ASC'.format('time_solved')
    query = ' '.join([table, condition])
    cur.execute(query)
    users = [[decode(x[1]), decode(translation[x[2]]),
              x[3].strftime('%H:%M:%S')] for x in cur.fetchall()]
    users.sort(key=lambda x: datetime.strptime(x[2], '%H:%M:%S'))
    return render_template("substitution.leaderboard.html", users=users)
Пример #8
0
def leaderboard_insert():
    name = request.form['name'].encode('UTF-8')
    time = int(request.form['time_solved'])
    time_solved = datetime.utcfromtimestamp(time)
    difficulty = request.form['difficulty']
    db = database.dbcon()
    cur = db.cursor()
    query = 'INSERT INTO crypto_leaderboard (name, difficulty, time_solved) VALUES (%s, %s, %s)'
    cur.execute(query, (name, difficulty, time_solved))
    cur.execute('COMMIT')
    cur.close()
    return json.dumps({'status': 'OK'})
Пример #9
0
def output():
    signature = getSignature()
    db = database.dbcon()
    cur = db.cursor()
    cur.execute(
        "INSERT INTO timestamps (hashPortal, hashFile, date) VALUES (%s, %s, %s)",
        (signature[1], signature[0], signature[2]))
    db.commit()
    time = signature[2].strftime(TIME_FORMAT)
    text = ','.join([signature[0], signature[1], time])
    return redirect(
        url_for('timestamp.file', hash=signature[0], text=text, time=time))
Пример #10
0
def delete(idx, ret):
    initSession()
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("DELETE FROM slika WHERE id = %s AND session = %s",
                (idx, session['sessid']))
    r = cur.fetchone()
    c = cur.rowcount
    cur.close()
    if c == 0:
        abort(403)
    db.commit()
    return redirect(url_for(".images", idx=ret))
Пример #11
0
def indices(level, language=None):
    db = database.dbcon()
    cur = db.cursor()
    if language == None:
        cur.execute("SELECT id FROM substitution WHERE level = %s ORDER BY id",
                    [level_trans.get(level, level)])
    else:
        cur.execute("SELECT id FROM substitution WHERE level = %s AND language = %s ORDER BY id",
                    [level_trans.get(level, level), language])
    ids = [x[0] for x in cur.fetchall()]
    cur.close()
    if level in level_trans:
        random.seed("Random seed:)%d" % level)
        random.shuffle(ids)
        random.seed()
    return ids
Пример #12
0
def get_all_words():
    db = database.dbcon()
    cur = db.cursor()
    cur.execute("SELECT Word FROM Words")
    row = cur.fetchone()

    listOfWords = ""
    max = 0
    while row is not None:
        if (len(row[0]) > max):
            max = len(row[0])
        if listOfWords != "":
            listOfWords += ","
        listOfWords += (row[0])
        row = cur.fetchone()

    #print(max)
    return listOfWords
Пример #13
0
def check_file():
    file = returnFile()
    read = file.read()
    try:
        with open(private, "r") as myfile:
            key = RSA.importKey(myfile.read())
        decrypted = decrypt(read, key).decode('utf-8')
        items = decrypted.split(",")
        db = database.dbcon()
        cur = db.cursor()
        #n = cur.execute("SELECT date, hashFile FROM timestamps WHERE hashPortal = %s AND hashFile = %s AND date = %s", (items[1], items[0], datetime.strptime(items[2], TIME_FORMAT)))
        n = cur.execute("SELECT date, hashFile FROM timestamps WHERE hashPortal = %s AND hashFile = %s", (items[1], items[0]))
        cur.close()
        if n == 0:
            return render_template('timestamp.file.html',
                                   error="Z danim certifikatom ni bil potrjen noben dokument na tej strani.")
        else:
            return render_template('timestamp.file.html', check="Dokument z zgoščevalno funkcijo " + items[0] + " je bil potrjen " + items[2])
    except:
        pass
    return render_template('timestamp.file.html',
                           error="Prišlo je do napake pri preverjanju certifikata ali pa je certifikat neveljaven, poskusite ponovno.")
Пример #14
0
def images(idx=None):
    initSession()
    db = database.dbcon()
    cur = db.cursor()
    if request.method == 'POST':
        text = request.form["text"].encode("utf-8") + '\0'
        newname = request.form["newname"]
        try:
            offset = int(request.form["offset"])
        except:
            offset = 0
        if len(newname) > 0:
            cur.execute("SELECT data FROM slika WHERE id = %s", idx)
            r = cur.fetchone()
            inimg = Image.open(StringIO(r[0]))
            data = tobytes(inimg)
            if offset < 0 or offset > len(data) - 7:
                offset = 0
            last = min(len(text), (len(data) - (offset%8))/8)
            stego = [x for x in data]
            for i in range(last):
                o = ord(text[i])
                for j in range(8):
                    stego[offset+8*i+j] = chr((ord(data[offset+8*i+j]) & 0xFE) | ((o >> (7-j)) & 1))
            try:
                outimg = Image.frombytes(inimg.mode, inimg.size, ''.join(stego))
                out = StringIO()
                outimg.save(out, format="PNG")
                png = out.getvalue()
                out.close()
                cur.execute("INSERT INTO slika (name, data, session) VALUES (%s, %s, %s)",
                            (newname, png, session['sessid']))
                db.commit()
                return redirect(url_for(".images", idx = cur.lastrowid))
            except:
                text = text[:-1]
                error = True
                errstr = u"Datoteka že obstaja!"
        else:
            text = text[:-1]
            error = True
            errstr = u"Ime datoteke ni navedeno!"
    else:
        text = ""
        newname = ""
        offset = 0
        error = False
        errstr = ""
    cur.execute("SELECT id, name, DATE_FORMAT(time, '%e.%c.%Y %H:%i') AS ftime, session FROM slika ORDER BY time DESC")
    imgs = cur.fetchall()
    if idx == None and len(imgs) > 0:
        idx = imgs[-1][0]
    if idx == None:
        r = None
    else:
        cur.execute("SELECT name, data FROM slika WHERE id = %s", idx)
        r = cur.fetchone()
    cur.close()
    if r == None:
        name, data = None, ""
    else:
        name, png = r
        img = Image.open(StringIO(png))
        data = tobytes(img)
        if newname == "":
            m = re.match(r'^(.*[^0-9])[0-9]*$', name)
            if m == None:
                newname = "slika" + str(random.randrange(1000))
            else:
                newname = m.group(1) + str(random.randrange(1000))
    return render_template("steganography.images.html", idx=idx, name=name,
                    data=''.join("%d" % (ord(x)&1) for x in data), imgs=imgs,
                    text=text, newname=newname, offset=offset,
                    error=error, errstr=errstr, session=session['sessid'])