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
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
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
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." )
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))
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
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)
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'})
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))
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))
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
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
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.")
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'])