
Igor
12.09.2016
13:08:56
такие большие куски кода наверное лучше файлом сразу

Igor
12.09.2016
13:08:58
Я на постебина скину.

Igor
12.09.2016
13:09:00
или на pastebin, да :)

Igor
12.09.2016
13:09:24
http://pastebin.com/6Eifhr1v

Google

Igor
12.09.2016
13:09:51
Всё работает. Но на этапе ввода пароля ошибка. У меня писало что-то про encode. Потом после строчки ввода пароля я добавил:
password = password.encode('utf-8')
И появилась ошибка:
ValueError: IV must be 16 bytes long
Подскажите что не так? Пожалуйста.

Stanislav
12.09.2016
13:11:23
41 строчку показывает?
Возможно файл пустой

Igor
12.09.2016
13:12:02
File "sokolov.py", line 78, in <module>
encrypt(SHA256.new(password).digest(), str(Tfiles))
File "sokolov.py", line 16, in encrypt
encryptor = AES.new(key, AES.MODE_CBC, IV)
File "/usr/local/lib/python3.5/site-packages/Crypto/Cipher/AES.py", line 95, in new
return AESCipher(key, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/Crypto/Cipher/AES.py", line 59, in __init__
blockalgo.BlockAlgo.__init__(self, _AES, key, *args, **kwargs)
File "/usr/local/lib/python3.5/site-packages/Crypto/Cipher/blockalgo.py", line 141, in __init__
self._cipher = factory.new(key, *args, **kwargs)
ValueError: IV must be 16 bytes long
вот полный трейс

Stanislav
12.09.2016
13:15:00
У тебя 2 аккаунта?

Igor
12.09.2016
13:15:50
я запустил у себя просто :)

Zart
12.09.2016
13:16:00

Igor
12.09.2016
13:16:16

Igor
12.09.2016
13:17:33
Не подскажешь в чём проблема?

Dmitriy
12.09.2016
13:20:00
проблема стандартная, не зависит от языка
вектор инициализации должен быть строго указанной длины
как и ключ

Google

Dmitriy
12.09.2016
13:20:48
IV must be 16 bytes
пишет даже

Igor
12.09.2016
13:21:41
Хм...

Zart
12.09.2016
13:21:44

Igor
12.09.2016
13:22:17
То есть пароль должен вводить указанной длины?

Igor
12.09.2016
13:22:42
но это, кстати, странно, потому что вот же, положила
IV = ''
for i in range(16):
IV += chr(random.randint(0, 0xFF))

Zart
12.09.2016
13:22:43
IV - не пароль

Владимир
12.09.2016
13:23:40
IV - вектор инициализации

Igor
12.09.2016
13:23:41
угу, это что-то вроде соли (salt) или секретного ключа, точно не уверен
если совсем грубо говоря

Zart
12.09.2016
13:23:59
эм

Igor
12.09.2016
13:24:35
Так в какую сторону смотреть? Или что мне делать?)

Zart
12.09.2016
13:24:42
http://progbook.ru/kriptografiya/1374-bernet-kriptografiya-oficialnoe-rukovodstvo-rsa-security.html

Владимир
12.09.2016
13:26:04
len(IV)
Так в какую сторону смотреть? Или что мне делать?)
и посмотри размер

Igor
12.09.2016
13:26:20
там 16

Zart
12.09.2016
13:26:33
16 ЮНИКОДНЫХ символов...

Igor
12.09.2016
13:26:42
Ну?

Владимир
12.09.2016
13:26:45
на основании чего там 16?

Igor
12.09.2016
13:26:45
Это я понял.

Google

Igor
12.09.2016
13:26:47
aaaa :)

Zart
12.09.2016
13:27:14
chr(x) хоть и возвращает байтовые строки, но у него там 3.5й питон и IV=''
поэтому всё это счастливо конвертируется похоже в херню...

Igor
12.09.2016
13:27:32
In [8]: sys.getsizeof(IV)
Out[8]: 89
заебись

Zart
12.09.2016
13:27:42
поправь на IV=b''
sys.getsizeof это размер питоновой обёртки, а не данных внутре
тебе про len не зря сказали

Владимир
12.09.2016
13:29:04
IV = b'Sixteen byte key'

Zart
12.09.2016
13:29:55
IV = b'return 4;// roll' # классега!

Владимир
12.09.2016
13:30:19
хотя если по госту какому делатЬ ,то там должны быть заданы дефолтные векторы инициализации

Zart
12.09.2016
13:32:16
по госту 8)))

Igor
12.09.2016
13:32:18
filesize = str(os.path.getsize(filename)).zfill(16)
IV = ''

Igor
12.09.2016
13:32:18
Сюда вставить?

Zart
12.09.2016
13:32:50
поправить да

Igor
12.09.2016
13:32:50
filesize = str(os.path.getsize(filename)).zfill(16)
IV = ''
Сюда?

Zart
12.09.2016
13:33:08
буковку b влепить, ага

Igor
12.09.2016
13:33:12
IV = b'return 4;

Владимир
12.09.2016
13:33:15
for i in range(16):
IV += chr(random.randint(0, 0xFF))
после вот этого

Google

Igor
12.09.2016
13:33:22
А почему 4?

Владимир
12.09.2016
13:33:24
или нахер это удалить

Zart
12.09.2016
13:33:41
не, либо b'' и цикл, либо выкинуть цикл на мороз и оставить b'16 chars here'

Igor
12.09.2016
13:34:00
Чуваки)

Zart
12.09.2016
13:34:02

Igor
12.09.2016
13:34:13
Куда вставлять?
for i in range(16):
IV += chr(random.randint(0, 0xFF))
Поле этого?

Admin
ERROR: S client not available

Igor
12.09.2016
13:34:31
Или этого?
filesize = str(os.path.getsize(filename)).zfill(16)
IV = ''

Zart
12.09.2016
13:34:48
проще говоря, код который ты скачал, был написан под второй питон
для третьего надо исправлять типы данных

Владимир
12.09.2016
13:35:46
я это уже человеку в скайпе писал
проще говоря, код который ты скачал, был написан под второй питон
curl -1 wttr.in/Minsk
забавная штука
кстати, под 2 питон не факт что была написано, input используется.
во 2 raw_input было бы

Zart
12.09.2016
13:42:05
input во втором тоже есть

Google

Igor
12.09.2016
13:42:06
Я на inut исправил)
raw убрал

Владимир
12.09.2016
13:42:24
во 2 он переменную бы такую искал

Zart
12.09.2016
13:42:25
убийца - садовник!

Владимир
12.09.2016
13:42:29
тогда все понятно
преступление раскрыто

Igor
12.09.2016
13:44:53
То есть нужно читать про типы данных 2 и 3 питона? И сравнивать? Куда копать подскажите. Пойду читать)

Zart
12.09.2016
13:46:17
ну так самая огромная разница между 2 и 3 - в типе строк по дефолту..

Igor
12.09.2016
13:47:00
Куда копать в моём случае? Чтобы заработало.

Zart
12.09.2016
13:47:26
тебе хренадцатый раз повторить про IV? правда не факт что это починит остальной код

Владимир
12.09.2016
14:04:15
поставь 2 питон
и будет счастье, на мой взгляд быстрее будет, чем разбираться в разнице между 2 и 3 питоном

F
12.09.2016
14:09:24
с нуля лучше сразу 3 питон осваивать
они же сами пишут что 2 - легаси

Janek
12.09.2016
14:09:51
С самого нуля
Как был у меня
Еще полгода назад

⬗VLAD⌶K⬖
12.09.2016
14:19:49
посоны подскажите, из ком. строки питон не запускается, в переменных средах всё норм

b0g3r
12.09.2016
14:20:12
Пруф

Владимир
12.09.2016
14:23:56
promt рестартовал?
Эта группа больше не существует