2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Код в Cygwin
Сообщение06.06.2018, 17:27 


21/05/16
4292
Аделаида
Как можно перевести на Python 10 строчку этого Cygwin кода?
  1. wget http:// feed.twirpx.com/hash-feed.dat 
  2. dd if=hash-feed.dat of=txt.md5 skip=8 bs=1 count=16 
  3. hexdump -C txt.md5 
  4. dd if=hash-feed.dat of=gz.md5 skip=24 bs=1 count=16 
  5. hexdump -C gz.md5 
  6. dd if=hash-feed.dat of=enc.md5 skip=40 bs=1 count=16 
  7. hexdump -C enc.md5 
  8. dd if=hash-feed.dat of=hash-feed.enc skip=1 bs=56 
  9. md5sum hash-feed.enc 
  10. openssl enc -d -des-cbc -iv CA48533E8F405053 -K CA48533E8F405053 -in hash-feed.enc -out hash-feed.gz 
  11. md5sum hash-feed.gz 
  12. gunzip -c hash-feed.gz > hash-feed.txt 
  13. md5sum hash-feed.txt 

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 17:54 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Для начала нужно установить библиотеку: pip install pyOpenSSL. Ну а потом порыться в её документации, чтобы понять что там чему соответствует.

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:05 


21/05/16
4292
Аделаида
Я порылся в документации, написал такой код:
Используется синтаксис Python
import urllib.request
from Cryptodome.Cipher import DES
urllib.request.urlretrieve("http://feed.twirpx.com/hash-feed.dat", "databaseOfHashesWithSignature.dat")
databaseOfHashesWithSignature=open("databaseOfHashesWithSignature.dat", "rb").read()
crypt=databaseOfHashesWithSignature[56:lenOfDatabaseOfHashesWithSignature]
key=b'\xca\x48\x53\x3e\x8f\x40\x50\x53'
des=DES.new(key, DES.MODE_CBC, key)
gzip=des.decrypt(crypt)

Но в переменную gzip записывается что-то не то...

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:09 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
А «что-то не то» — это, собссна, что? И чем оно отличается, от того, что хотелось бы там увидеть?

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:10 


21/05/16
4292
Аделаида
Написать содержимое кучемегабайтовой переменной?

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:11 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Не-не-не ;-) Опишите в двух словах, чем оно вас не устраивает.

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:15 


21/05/16
4292
Аделаида
Не то что выдает программа в Cygwin.

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:20 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
А вы вообще уверены, что они должны выдавать строго одно и то же?

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение06.06.2018, 18:24 


21/05/16
4292
Аделаида
Если я правильно написал питоновский код, то да.

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение07.06.2018, 13:38 


21/05/16
4292
Аделаида
Как мне написать мой питоновский код, чтобы в переменную gzip записывалось то, что выдает программа Cygwin?

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение16.06.2018, 15:43 


21/05/16
4292
Аделаида
kotenok gav в сообщении #1317631 писал(а):
Как можно перевести на Python 10 строчку этого Cygwin кода?
  1. wget http:// feed.twirpx.com/hash-feed.dat 
  2. dd if=hash-feed.dat of=txt.md5 skip=8 bs=1 count=16 
  3. hexdump -C txt.md5 
  4. dd if=hash-feed.dat of=gz.md5 skip=24 bs=1 count=16 
  5. hexdump -C gz.md5 
  6. dd if=hash-feed.dat of=enc.md5 skip=40 bs=1 count=16 
  7. hexdump -C enc.md5 
  8. dd if=hash-feed.dat of=hash-feed.enc skip=1 bs=56 
  9. md5sum hash-feed.enc 
  10. openssl enc -d -des-cbc -iv CA48533E8F405053 -K CA48533E8F405053 -in hash-feed.enc -out hash-feed.gz 
  11. md5sum hash-feed.gz 
  12. gunzip -c hash-feed.gz > hash-feed.txt 
  13. md5sum hash-feed.txt 

Это у меня появилось в результате следующей беседы с админом Твирпкса:
я писал(а):
Здравствуйте, уважаемый Админ!
Мне не совсем понятно, что делает ваша программа DupCheck (https://github.com/twirpx/twirpx-com-pu ... Program.cs) со скачанной датабазой? Если не трудно, то, пожалуйста, разьясните мне.
Спасибо!

Админ писал(а):
Расшифровывает и разжимает список хешей имеющихся файлов. Затем сверяет хеши с файлами в заданной папке.

я писал(а):
А каким образом программа расшифровывает список хешей?

Админ писал(а):
Через DESCryptoServiceProvider

я писал(а):
А как она проверяет подпись датабазы, ее хеш и какая датабаза получается в конце?

Админ писал(а):
Сравнивает хеш скачанного файла базы данных с эталоном.

я писал(а):
А откуда она берет эталон, как проверяет подпись и какая база получается в конце?

Админ писал(а):
Скачанный файл = 8 байт сигнатура + 16 байт md5 хэш txt-потока + 16 байт md5 хэш gzip-потока + 16 байт md5 хэш шифрованного потока + собственно шифрованный поток.
gzip-поток = расшифровать_DES(шифрованный поток, ключ)
ключ = 5350408F3E5348CA
txt-поток = разархивировать_GZIP(gzip-поток)

txt-поток:
file_id size hash1 hash2 ... hashN
file_id size hash1 hash2 ... hashN
file_id size hash1 hash2 ... hashN
file_id size hash1 hash2 ... hashN

я писал(а):
А как может быть такой ключ? Ведь DES использует 8-байтный ключ?

Админ писал(а):
53 50 40 8F 3E 53 48 CA
А это сколько по вашему байтов?

я писал(а):
Тогда хеш не совпадает:
Хеш от gzip-потока - 90 21 12 52 175 4 125 99 25 42 12 248 124 230 48 191.
Байты с 25 позиции по 40: 86 36 45 8 177 99 92 99 175 229 150 99 91 105 169 48.

Админ писал(а):
Значит неправильно читаете ключ. Возможно задом наперед)

я писал(а):
Ключ правильный.
Сейчас пересчитаю.

Админ писал(а):
Или IV не выставляете = ключу (это так себе, конечно, практика, но, тем не менее, это реализовано именно так).

Ну или режимы неправильные - в программе используются дефолтный для .NET режим CBC PKCS7.

я писал(а):
Я пробовал несколько режимов (включая CBC).
А что такое IV?

Админ писал(а):
[url]Initialization_vector_(IV)[/url]

я писал(а):
Хорошо, и какой IV?

А, равно ключу.
Сейчас проверю такой вариант.

Все равно не то.

Админ писал(а):
Вот вам разбор из linux/cygwin командной строки:

Код:
wget http:// feed.twirpx.com/hash-feed.dat

dd if=hash-feed.dat of=txt.md5 skip=8 bs=1 count=16
hexdump -C txt.md5

dd if=hash-feed.dat of=gz.md5 skip=24 bs=1 count=16
hexdump -C gz.md5

dd if=hash-feed.dat of=enc.md5 skip=40 bs=1 count=16
hexdump -C enc.md5

dd if=hash-feed.dat of=hash-feed.enc skip=1 bs=56
md5sum hash-feed.enc

openssl enc -d -des-cbc -iv CA48533E8F405053 -K CA48533E8F405053 -in hash-feed.enc -out hash-feed.gz
md5sum hash-feed.gz

gunzip -c hash-feed.gz > hash-feed.txt
md5sum hash-feed.txt

 Профиль  
                  
 
 Re: Код в Cygwin
Сообщение24.06.2018, 15:16 


21/05/16
4292
Аделаида
Хорошо, а есть библиотека crypto в OpenSSL на питоне?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group