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, Супермодераторы



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

Сейчас этот форум просматривают: worm2


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

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