Змея / Говнокод #28621 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 96
  97. 97
  98. 98
  99. 99
print('1 часть тут, 2 в описании')
import re
q = int(input())
b = input()
v = 0
flag = True
if v == 0:
    c = len(re.findall('q', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('w', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('e', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('r', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('t', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('y', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('u', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('i', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('o', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('p', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('a', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('s', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('d', b))
    if c > 1:
        print("NO")
        flag = False
        quit()
    else:
        v = 3
    c = len(re.findall('f', b))

if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('g', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('h', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('j', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('k', b))
if c > 1:
print("NO")
flag = False
quit
else:
v = 3
c = len(re.findall('l', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('m', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('n', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('b', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('v', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('c', b))
if c > 1:
print("NO")
flag = False
quit()
else:
v = 3
c = len(re.findall('x', b))
if c > 1:
flag = False
quit()
print("NO")
else:
v = 3
c = len(re.findall('z', b))
if c > 1:
flag = False
print("NO")
quit()
else:
v = 3
if flag == True:
print("YES")

sashastepuronegro sashastepuronegro, (Updated )

Комментарии (3, +3)

Змея / Говнокод #28618 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
def auth_2FA(request):
    mail = request.POST.get('mail')
    user = User.objects.get(email=mail)
    code2FA = request.POST.get('code2FA')
    if pyotp.TOTP(user.secret).verify(code2FA):
        auth.login(request, user)
        return redirect(settings.HOME_PAGE)
    else:
        ...

# Безопасность
Django, двухфакторка.
Защиты от перебора нет, пароль не проверяется. Зная только mail можно залогиниться перебрав код из 6 цифр

Doorman5302 Doorman5302, (Updated )

Комментарии (12, +12)

Змея / Говнокод #28531 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
key_base_len = random.randint(30,61)
key_base = bytearray(key_base_len)
for i in range(key_base_len):
    key_base[i] = random.randint(0,255)

key = bytearray(8)
key[0] = chip_uid_chksum ^ key_base[ 4 * (key_base_len // 7)]
key[1] = chip_uid_chksum ^ key_base[      key_base_len // 5 ]
key[2] = chip_uid_chksum ^ key_base[      key_base_len // 7 ]
key[3] = chip_uid_chksum ^ key_base[ 6 * (key_base_len // 7)]
key[4] = chip_uid_chksum ^ key_base[ 3 * (key_base_len // 7)]
key[5] = chip_uid_chksum ^ key_base[ 3 * (key_base_len // 5)]
key[6] = chip_uid_chksum ^ key_base[ 5 * (key_base_len // 7)]
key[7] = (chip_id + key[0]) & 0xff

return key, key_base

Китайцы и криптография.

Сначала программатор отдаёт контроллеру key_base, а затем юзает key чтобы ксорить с ним заливаемую прошивку.

bormand bormand, (Updated )

Комментарии (41, +41)

Змея / Говнокод #28524 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
def __get_column_names(table: str) -> tuple:
    try:
        with conn:
            cur.execute("SELECT name FROM PRAGMA_TABLE_INFO(?)", (table,))
            column_names = cur.fetchall()
    except Exception as excpt:
        print(excpt)
    column_names = tuple(i[0] for i in column_names)
    return column_names


def db_register_user(user_data: types.User):
    """
    SQL запрос для внесения данных о пользователе

    Args:
        user_data: telebot User объект, содержащий словарь с параметрами пользователя
    """
    user_data = user_data.to_dict()
    column_names: tuple = __get_column_names('Users')
    user_values = tuple(user_data.get(key) for key in column_names if key in user_data)
    try:
        with conn:
            query = 'INSERT INTO Users cn'.replace('cn', str(column_names))+' VALUES (?,?,?,?,0,3)'
            parameters = (*user_values,)
            conn.execute(query, parameters)
    except Exception as excpt:
        print(excpt)
    conn.close()

На сколько в такой ситуации .format не безопасен? Идея в том, чтобы не объебошится программисту в коде введя неверное значение колонки. Для этого имена колонок берутся из самой базы (есть мысль ещё и типы брать). Есть вариант реализации получше? Спасибо

rockkley94 rockkley94, (Updated )

Комментарии (82, +82)

Змея / Говнокод #28503 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
#!/usr/bin/env python3

import sys
import socket


def main():
    if len(sys.argv) != 2:
        print("Программа ожидает 1 аргумент: доменное имя хоста")
        return 1

    # Input.

    host_name = sys.argv[1]
    print(f"Доменное имя хоста: {host_name}")

    host_ip = socket.gethostbyname(host_name)
    print(f"IP-адрес хоста: {host_ip}")

    host_port = 33433
    timeout = 2 # Seconds.

    receiving_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
    receiving_socket.setsockopt(socket.SOL_IP, socket.IP_HDRINCL, 1)
    receiving_socket.settimeout(timeout)
    receiving_socket.bind(("", host_port))

    sending_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP)
    sending_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

    received_ip = None
    current_hop = 1
    max_hop = 100
    while received_ip != host_ip and current_hop < max_hop:
        sending_socket.setsockopt(socket.IPPROTO_IP, socket.IP_TTL, current_hop)
        sus = True
        for i in range(7):
            try:
                sending_socket.sendto(bytes(str(current_hop), 'utf-8'), (host_ip, host_port))
                data, addr = receiving_socket.recvfrom(1)
                if addr:
                    received_ip = addr[0]
                    print(f"hop: {current_hop} -> {received_ip}")
                    sus = False
                    break
                else:
                    raise "sus"
            except:
                continue
        if sus:
            print(f"hop: {current_hop} -> *")
        current_hop += 1


if __name__ == "__main__":
    main()

Что-то я давно не заходил... был занят, писал утилиту. Лицензия – «MIT».

JloJle4Ka JloJle4Ka, (Updated )

Комментарии (9, +9)