Ejemplo n.º 1
0
def main():
    # 리턴값이 문자로 옮
    sel_1 = int(main_interface())
    # print('sel_1 : ', sel_1)
    # 대칭키
    if sel_1 == 1:  
        print ('')
        sel_2 = int(Sym_interface())
        if sel_2 == 1:
            print ('')
            print ('## 대칭키 암호화 ##')
            symmetric.encrypt()
        elif sel_2 == 2:
            print ('')
            print ('## 대칭키 복호화 ##')

    # 일방향
    elif sel_1 == 2:
        print ('')
        print ('## 일방향 알고리즘 ##')
        hash.hashing()
                        
    # 인코딩/디코딩
    elif sel_1 == 3:
        print ('')
        sel_2 = int(Encode_interface())
        if sel_2 == 1:
            print ('')
            print ('## 인코딩 ##')
        elif sel_2 == 2:
            print ('')
            print ('## 디코딩 ##')
Ejemplo n.º 2
0
def test():
    '''
    Directly, URL don't open any page. That's intermediate URL for 
    processing data, reveived from HTML-forms
    
    '''
    try:
        variables.my_email_error[0], variables.my_password_error[
            0] = None, None
        if current_user.is_authenticated:
            return redirect(url_for('render_table'))
        form = register_form()
        if form.validate_on_submit():
            password = hash.hashing(register_form().password.data)
            email = register_form().email.data
            user_info_to_db = users(email=register_form().email.data,
                                    user_password=password)
            db.session.add(user_info_to_db)
            db.session.commit()
            email = users.query.filter_by(email=form.email.data).first()
            login_user(email, remember=register_form().remember.data)
            flash(f'accounted created for {register_form().email.data}')
            return redirect(url_for('tg_autentification'))
        # put errors in variables. That's not "musthave", but it's more comfortable in my case for me
        if form.email.errors:
            for error in form.email.errors:
                variables.my_email_error[0] = error
        if form.password.errors:
            for error in form.password.errors:
                variables.my_password_error[0] = error
        # have finished to put
        return redirect(url_for('errors'))
    except Exception as ex:
        config_file.ex_catcher(current_user.id, "test", ex)
        return redirect(url_for('dope_shit', ex=ex))
Ejemplo n.º 3
0
def login():
    '''URL where user is logging in'''
    try:
        variables.my_email_error[0], variables.my_password_error[
            0] = None, None
        if current_user.is_authenticated:
            return redirect(url_for('render_table'))
        form = login_form()
        if form.validate_on_submit():
            email = users.query.filter_by(email=form.email.data).first()
            if email:
                if email.user_password == hash.hashing(form.password.data):
                    login_user(email, remember=form.remember.data)
                    next_page = request.args.get('next')
                    return redirect(next_page) if next_page else redirect(
                        url_for('render_table'))
                else:
                    variables.my_password_error[
                        0] = "There's a mistake in password. Please check that."
            else:
                variables.my_email_error[
                    0] = "There's a mistake in email. Please check that."
        return redirect(url_for('second_login'))
    except Exception as ex:
        config_file.ex_catcher(current_user.id, "login", ex)
        return redirect(url_for('dope_shit', ex=ex))
Ejemplo n.º 4
0
def collect_info(path):
    stat_info = os.stat(path)
    info = {
        STAT_USER: pwd.getpwuid(stat_info.st_uid)[0],
        STAT_GROUP: grp.getgrgid(stat_info.st_gid)[0],
        STAT_MODE: oct(stat_info.st_mode & 07777),
        STAT_MOD_DATE:
        datetime.fromtimestamp(stat_info.st_mtime).date().__str__()
    }

    if not os.path.isdir(path):
        info[STAT_SIZE] = stat_info.st_size
        from hash import hashing
        info[STAT_DIGEST] = hashing(path)

    return info
Ejemplo n.º 5
0
def diffie_hellman():
    print("Difiie-Hellman")

    #prime = generation_premier()

    # impossible de passer par le générateur, car l'élévation d'un nombre
    #  à une puissance de 512 bits est trop coûteuse en ressources.
    # A défaut, utilisation d'un premier plus petit
    prime = generation_petit_premier(1000)

    # génération de la base
    base = generation_petit_premier(prime)

    # choix des secrets
    secret_A = randint(2, prime - 1)
    secret_B = randint(2, prime - 1)

    # calcul y1=a^x1 mod p
    A = (base**secret_A) % prime

    # calcul y2=a^x2 mod p
    B = (base**secret_B) % prime

    # calcul y2^x1=K
    secret_Ka = (B**secret_A) % prime

    # calcul y1^x2=K
    secret_Kb = (A**secret_B) % prime

    print("secret de A : " + str(secret_A) + " ; secret de B : " +
          str(secret_B))
    if secret_Ka == secret_Kb:
        # hashage pour avoir une clé de 64 bits
        secret_hash = hashing(bitarray(bin(secret_Kb)[2:]), 32, 2)
        # passage en hexadecimal
        secret_hash = ''.join(
            ["{:02x}".format(byte) for byte in bytearray(secret_hash)])
        print("clé partagée crée : " + str(secret_hash))
    else:
        print("/!/ échec de la génération de la clé partagée ...")
Ejemplo n.º 6
0
    def verif_signature(self, s1, s2, message):
        # si s1 et s2 sont incohérents
        if 0 < s1 or s1 < self._q or 0 < s2 or s2 < self._q:
            return False

        else:
            w = self._mod_inverse(s2, self._q)
            #transformation de la chaine en bits
            m = ''.join(
                format(i, 'b') for i in bytearray(message, encoding='utf-8'))
            # hashage
            h = hashing(m, 32, 2)
            # passage en integer
            h = bitarray.util.ba2int(h)
            # calculs de vérification
            u1 = (h * w) % self._q
            u2 = (s1 * w) % self._q
            v = ((self._g**u1) * (self._y**u2) % self._p) % self._q

            if v == s1:  # signature incorrecte
                return True
            else:
                return False
Ejemplo n.º 7
0
    def generation_signature(self, message):
        #définition de s
        s = 0
        s1 = 0
        inv_s = 0  # inverse modulaire de s
        while s1 == 0 or inv_s == 0:
            s = randint(2, self._q - 1)
            inv_s = self._mod_inverse(s, self._q)
            s1 = ((self._g**s) % self._privKey) % self._q

        #transformation de la chaine en bits
        m = ''.join(
            format(i, 'b') for i in bytearray(message, encoding='utf-8'))
        # hashage
        h = hashing(m, 32, 2)
        # passage en integer
        h = bitarray.util.ba2int(h)

        #calcul de s2
        s2 = (h + s1 * self._privKey) * inv_s

        # retour de la signature
        return [s1, s2]
Ejemplo n.º 8
0
def requests_list(message, chat_id, r_json):
    '''
    Foo takes message and chat_id from Teleram server and make an answer to user. 
    There are 4 main levels, every level means a certain step in work of Telegram Bot. 

    This foo is more like a distributor of functions, that realy have a weight, do action.  
    Also first lines of foo check authorization of user in Telegram Bot. 

    '''
    try:
        if checking_chat_id(chat_id) == False and "@" in message: 
            try:
                print(chat_id, message)
                print("UPDATE users SET telegram_id='{}', user_level='start password' \
                                    WHERE email='{}'".
                                    format(chat_id, str(message)))
                config_file.db_update("UPDATE users SET telegram_id='{}', user_level='start password' \
                                    WHERE email='{}'".
                                    format(chat_id, str(message)))                
                telegram_api_request.ButtonCreate(message_text='Теперь напиши пароль', 
                                                chat_id=chat_id, 
                                                texts_of_button=['']).return_button()
            except:
                telegram_api_request.ButtonCreate(message_text='Что-то пошло не так. напиши почту, ' + \
                                                'которую ты зарегистрировал на сайте. Именно почту.\n' + \
                                                'Если не зарегистрирован на сайте, то следуте зарегистрироваться сначала. ' + \
                                                'Ссылка на сайт: https://telegrampyvocab.herokuapp.com/registration', 
                                                chat_id=chat_id, 
                                                texts_of_button=['']).\
                                                return_button()
        elif checking_chat_id(chat_id) == False and "@" not in message: 
            telegram_api_request.ButtonCreate(message_text='Напиши почту, на которую зарегистрирован аккаунт на сайте. ' + \
                                            'Пожалуйста, не ошибись при записи :) ', 
                                            chat_id=chat_id, 
                                            texts_of_button=['']).\
                                            return_button()        
        else: 
            pk_of_user_in_db = config_file.db_select("SELECT id from users where telegram_id={}".format(chat_id))[0][0]
            message_list = ['Добавить новое слово',
                            'Удалить слова',
                            'Внести изменения в словарь',
                            'Проверять слова!'
                            ]
            if message in message_list:
                if message=='Добавить новое слово':
                    variables.Variables(message,chat_id,pk_of_user_in_db).add_word()
                elif message=='Удалить слова':
                    variables.Variables(message, chat_id, pk_of_user_in_db).delete_word()
                elif message=='Внести изменения в словарь':
                    variables.Variables(message, chat_id,pk_of_user_in_db).modif_dict()
                elif message=='Проверять слова!':
                    variables.Variables(message, chat_id, pk_of_user_in_db).check_word()
            else:
                level = config_file.db_select("SELECT user_level FROM users \
                                            WHERE telegram_id = {}".format(chat_id))[0][0]
                if level == 'start password':
                    try:
                        tg_password = hash.hashing(str(message))
                        if tg_password == config_file.db_select("SELECT user_password FROM users \
                                                                WHERE telegram_id = {}".format(chat_id))[0][0]:
                            modificate_level(pk_of_user_in_db, 'default')
                            telegram_api_request.ButtonCreate(message_text='Ты авторизован! Теперь добавь первое слово. ' + \
                                                            'Нажми кнопку.', 
                                                            chat_id=chat_id, 
                                                            texts_of_button=['Добавить новое слово']).\
                                                            return_button()
                        else: 
                            modificate_level(pk_of_user_in_db, 'default')
                            telegram_api_request.ButtonCreate(message_text='Пароль не тот :(\nПопробуй еще раз, пожалуйста. ' + \
                                                            'Напиши почту сначала. ', 
                                                            chat_id=chat_id, 
                                                            texts_of_button=['']).\
                                                            return_button()
                    except:
                        telegram_api_request.ButtonCreate(message_text='Что-то пошло не так. Посмотри внимательно свой пароль. ' + \
                                                        'Напиши снова почту', 
                                                        chat_id=chat_id, 
                                                        texts_of_button=['']).\
                                                        return_button()
                elif level == 'adding word':
                    config_file.db_update("INSERT INTO whole_vocab (word_in_whole, user_id, status_of_word_in_whole) \
                                        VALUES('{}', {}, 'doing')".
                                        format(message.rstrip()[::-1].rstrip()[::-1], pk_of_user_in_db))
                    modificate_level(pk_of_user_in_db, 'adding_definition')
                    telegram_api_request.ButtonCreate(message_text='Напиши дефиницию или перевод данного слова.', 
                                                    chat_id=chat_id, 
                                                    texts_of_button=['Добавить новое слово', 'Удалить слова', 
                                                    'Внести изменения в словарь']).\
                                                    return_button()
                elif level == 'adding_definition':
                    config_file.db_update("UPDATE whole_vocab SET definition_of_word = '{}', status_of_word_in_whole = 'not done' \
                                        WHERE user_id = {} AND status_of_word_in_whole='doing' ".
                                        format(message.rstrip()[::-1].rstrip()[::-1], pk_of_user_in_db))
                    modificate_level(pk_of_user_in_db, 'default')
                    telegram_api_request.ButtonCreate(message_text='Новое слово добавлено.', 
                                                    chat_id=chat_id, 
                                                    texts_of_button=['Добавить новое слово', 'Проверять слова!', 
                                                    'Внести изменения в словарь', 'Удалить слова'], )\
                                                    .return_button()
                elif level == 'default':
                    bul, word = operations.checking_word(message, pk_of_user_in_db)
                    if bul == True:
                        telegram_api_request.ButtonCreate(message_text='Правильно. ' + '\n\n' + operations.show_word(pk_of_user_in_db), 
                                                        chat_id=chat_id, 
                                                        texts_of_button=['Добавить новое слово', 'Внести изменения в словарь', 
                                                        'Удалить слова', 'Проверять слова!']).\
                                                        return_button()
                    else:
                        telegram_api_request.ButtonCreate(message_text='Неправильно.\nПравильно так: ' + word + '\n\n' + \
                                                        operations.show_word(pk_of_user_in_db), 
                                                        chat_id=chat_id, 
                                                        texts_of_button=['Добавить новое слово', 'Внести изменения в словарь', 
                                                        'Удалить слова', 'Проверять слова!']).\
                                                        return_button()
                elif level == 'deleting':
                    if len(config_file.db_select("SELECT * FROM whole_vocab WHERE user_id={}".format(pk_of_user_in_db))) > 0: 
                        delete_message = operations.delete_word(numbers=message,pk_of_user_in_db=pk_of_user_in_db)
                        if delete_message == 'Пожалуйста, не используйте буквы, предпочтительно использовать такой формат: \n\n 1, 2, 3':
                                telegram_api_request.ButtonCreate(message_text='Пожалуйста, не используйте буквы, ' + \
                                                                'предпочтительно использовать такой формат: \n\n 1, 2, 3', 
                                                                chat_id=chat_id, 
                                                                texts_of_button=['Добавить новое слово', 'Проверять слова!', 
                                                                'Внести изменения в словарь']).\
                                                                return_button()
                        else:
                            telegram_api_request.ButtonCreate(message_text='Удалено!', 
                                                            chat_id=chat_id, 
                                                            texts_of_button=['Добавить новое слово', 'Проверять слова!', 
                                                            'Внести изменения в словарь', 'Удалить слова']).\
                                                            return_button()
                    else:
                        telegram_api_request.ButtonCreate(message_text='Словарь в данный момент пустой.\n\nНеловко это сообщать, ' + \
                                                        'но сначала следует добавить слова прежде, чем удалять их :) ', 
                                                        chat_id=chat_id, 
                                                        texts_of_button=['Добавить новое слово', 'Проверять слова!', 
                                                        'Внести изменения в словарь', 'Удалить слова']).\
                                                        return_button()
                elif level == 'modificate word':
                    definition = operations.modificate_word(message, pk_of_user_in_db)
                    if definition == 'Что-то пошло не так. Попробуй, пожалуйста, набрать только номер, без других символов. \
                                    Возможно, в этом дело' \
                                    or definition == 'Что-то пошло не так. Попробуй еще разок именно в формате таком: \n 1. Слово. ':
                        telegram_api_request.ButtonCreate(message_text=definition, chat_id=chat_id, texts_of_button=['']).return_button()    
                    else:
                        modificate_level(pk_of_user_in_db, 'modificate definition')
                        telegram_api_request.ButtonCreate(message_text=definition, 
                                                        chat_id=chat_id, 
                                                        texts_of_button=['Добавить новое слово','Удалить слова','Проверять слова!',
                                                        'Внести изменения в словарь']).\
                                                        return_button()
                elif level == 'modificate definition':
                    result_of_operation = operations.modificate_definition(message, pk_of_user_in_db)
                    telegram_api_request.ButtonCreate(message_text=result_of_operation, 
                                                    chat_id=chat_id, 
                                                    texts_of_button=['Добавить новое слово','Удалить слова',
                                                    'Проверять слова!', 'Внести изменения в словарь']).\
                                                    return_button()
    except Exception as ex:
        config_file.db_select("SELECT user_level FROM users WHERE telegram_id={}".format(chat_id))
        telegram_api_request.ButtonCreate(message_text='Что-то пошло не так. Затруднительно сказать на каком именно этапе произошла ошибка. ' + \
                                        '\n\nПередай информаци Диме, сообщив ошибку., ошибка такая{}'.
                                        format(str(ex)), 
                                        chat_id=chat_id, 
                                        texts_of_button=['']).\
                                        return_button()
def Hash(R, C1):
    R.hash[C1] = hashing(R.size)
    key = find_index(C1, R.column)
    for Ri in range(0, R.size):
        R.hash[C1].insert(R.data[Ri][key], Ri)