LINUX.ORG.RU
ФорумAdmin

Как извлечь ESD файл из письма?

 , ,


0

1

Приветствую.

Высылает банк письма в формате DIRECTUM ESD с вложением, которое почтовые клиенты (например, munpack) видят как smime.p7m, при этом само описание вложения письма имеет вид

Content-Type: application/pkcs7-mime; smime-type=enveloped-data;
Content-Disposition: attachment; filename="smime.p7m"
Content-Transfer-Encoding: base64

вариации в духе

openssl smime -decrypt -in smime.p7m -recip bank.crt -noverify -inkey primary.key -out txt.txt

пишут ошибку

unable to load signing key file
139705852929216:error:0909006C:PEM routines:get_name:no start line:../crypto/pem/pem_lib.c:745:Expecting: ANY PRIVATE KEY

очевидно потому что openssl ничего не знает про шифрование ГОСТ

если ключи засунуть в аутлук, то он видит файл ESD в письме и нормально его извлекает

★★★
Ответ на: комментарий от vbr

vbr

munpack и так извлекает файл smime.p7m декодировав его в байты, непонятно почему аутлук видит esd файл, хотя никакого esd даже к тексте письма нет

Pinkbyte

обычный Debian у меня, под винду банк дал ключи, сертификаты и какое то ПО от DIRECTUM, которое декодирует ESD файл, видимо используя КриптоПРО, до засовывания ключией от него через какие то там плагины в openssl я пока не дошел, хотелось бы понять как аутлук/зе_бат видят esd файл в письме!?

wolverin ★★★
() автор топика
Ответ на: комментарий от wolverin

Возможно.

Стандарт достаточно давно появился. Многие(?) программы его поддерживают. На гитхабе есть «питоновое» ПО (и не только) работающее с S/MIME p7m-форматом. Возможно есть примеры добавления «нестандартного» шифрования.

Хотя эта фраза

если ключи засунуть в аутлук, то он видит файл ESD в письме и нормально его извлекает

меня наталкивает на мысль, что всё может быть гораздо проще

P.S. не твой случай?

master_0K
()
Последнее исправление: master_0K (всего исправлений: 1)
Ответ на: комментарий от master_0K

пока не знаю, поскольку даже не знаю формат ключей, единственно что конвертнул cer в crt, поскольку тут хотя бы понятно по расширению

Нашел такой блог

где после

openssl asn1parse -in smime.p7m -inform der

имею укорочено

    0:d=0  hl=2 l=inf  cons: SEQUENCE
    2:d=1  hl=2 l=   9 prim: OBJECT            :pkcs7-envelopedData
   13:d=1  hl=2 l=inf  cons: cont [ 0 ]
   15:d=2  hl=2 l=inf  cons: SEQUENCE
   17:d=3  hl=2 l=   1 prim: INTEGER           :00
   20:d=3  hl=4 l=1076 cons: SET
   24:d=4  hl=4 l= 534 cons: SEQUENCE
   28:d=5  hl=2 l=   1 prim: INTEGER           :00
   31:d=5  hl=4 l= 319 cons: SEQUENCE
   35:d=6  hl=4 l= 296 cons: SEQUENCE
   39:d=7  hl=2 l=  24 cons: SET
   41:d=8  hl=2 l=  22 cons: SEQUENCE
   43:d=9  hl=2 l=   5 prim: OBJECT            :OGRN
   50:d=9  hl=2 l=  13 prim: NUMERICSTRING     :1027400000638
   65:d=7  hl=2 l=  26 cons: SET
   67:d=8  hl=2 l=  24 cons: SEQUENCE
   69:d=9  hl=2 l=   8 prim: OBJECT            :INN
   79:d=9  hl=2 l=  12 prim: NUMERICSTRING     :007414006722
   93:d=7  hl=2 l=  11 cons: SET
   95:d=8  hl=2 l=   9 cons: SEQUENCE
   97:d=9  hl=2 l=   3 prim: OBJECT            :countryName
  102:d=9  hl=2 l=   2 prim: PRINTABLESTRING   :RU
  106:d=7  hl=2 l=  31 cons: SET
  108:d=8  hl=2 l=  29 cons: SEQUENCE
  110:d=9  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  115:d=9  hl=2 l=  22 prim: UTF8STRING        :Челябинская
  139:d=7  hl=2 l=  33 cons: SET
  141:d=8  hl=2 l=  31 cons: SEQUENCE
  143:d=9  hl=2 l=   3 prim: OBJECT            :localityName
  148:d=9  hl=2 l=  24 prim: UTF8STRING        :Магнитогорск
  174:d=7  hl=2 l=  34 cons: SET
  176:d=8  hl=2 l=  32 cons: SEQUENCE
  178:d=9  hl=2 l=   3 prim: OBJECT            :streetAddress
  183:d=9  hl=2 l=  25 prim: UTF8STRING        :Ул. Гагарина 17
  210:d=7  hl=2 l=  83 cons: SET
  212:d=8  hl=2 l=  81 cons: SEQUENCE
  214:d=9  hl=2 l=   3 prim: OBJECT            :organizationName
  219:d=9  hl=2 l=  74 prim: UTF8STRING        :"Кредит Урал Банк" (Акционерное общество)
  295:d=7  hl=2 l=  38 cons: SET
  297:d=8  hl=2 l=  36 cons: SEQUENCE
  299:d=9  hl=2 l=   3 prim: OBJECT            :commonName
  304:d=9  hl=2 l=  29 prim: UTF8STRING        :Credit Ural Bank Root CA 2012
  335:d=6  hl=2 l=  17 prim: INTEGER           :010222C1321B9C5194EF11BF02E33FD006
  354:d=5  hl=2 l=  31 cons: SEQUENCE
  356:d=6  hl=2 l=   8 prim: OBJECT            :GOST R 34.10-2012 with 256 bit modulus
  366:d=6  hl=2 l=  19 cons: SEQUENCE
  368:d=7  hl=2 l=   7 prim: OBJECT            :id-GostR3410-2001-CryptoPro-XchA-ParamSet
  377:d=7  hl=2 l=   8 prim: OBJECT            :GOST R 34.11-2012 with 256 bit hash
  387:d=5  hl=3 l= 172 prim: OCTET STRING      [HEX DUMP]:3081A930280420C....
  562:d=4  hl=4 l= 534 cons: SEQUENCE
  566:d=5  hl=2 l=   1 prim: INTEGER           :00
  569:d=5  hl=4 l= 319 cons: SEQUENCE
  573:d=6  hl=4 l= 296 cons: SEQUENCE
  577:d=7  hl=2 l=  24 cons: SET
  579:d=8  hl=2 l=  22 cons: SEQUENCE
  581:d=9  hl=2 l=   5 prim: OBJECT            :OGRN
  588:d=9  hl=2 l=  13 prim: NUMERICSTRING     :1027400000638
  603:d=7  hl=2 l=  26 cons: SET
  605:d=8  hl=2 l=  24 cons: SEQUENCE
  607:d=9  hl=2 l=   8 prim: OBJECT            :INN
  617:d=9  hl=2 l=  12 prim: NUMERICSTRING     :007414006722
  631:d=7  hl=2 l=  11 cons: SET
  633:d=8  hl=2 l=   9 cons: SEQUENCE
  635:d=9  hl=2 l=   3 prim: OBJECT            :countryName
  640:d=9  hl=2 l=   2 prim: PRINTABLESTRING   :RU
  644:d=7  hl=2 l=  31 cons: SET
  646:d=8  hl=2 l=  29 cons: SEQUENCE
  648:d=9  hl=2 l=   3 prim: OBJECT            :stateOrProvinceName
  653:d=9  hl=2 l=  22 prim: UTF8STRING        :Челябинская
  677:d=7  hl=2 l=  33 cons: SET
  679:d=8  hl=2 l=  31 cons: SEQUENCE
  681:d=9  hl=2 l=   3 prim: OBJECT            :localityName
  686:d=9  hl=2 l=  24 prim: UTF8STRING        :Магнитогорск
  712:d=7  hl=2 l=  34 cons: SET
  714:d=8  hl=2 l=  32 cons: SEQUENCE
  716:d=9  hl=2 l=   3 prim: OBJECT            :streetAddress
  721:d=9  hl=2 l=  25 prim: UTF8STRING        :Ул. Гагарина 17
  748:d=7  hl=2 l=  83 cons: SET
  750:d=8  hl=2 l=  81 cons: SEQUENCE
  752:d=9  hl=2 l=   3 prim: OBJECT            :organizationName
  757:d=9  hl=2 l=  74 prim: UTF8STRING        :"Кредит Урал Банк" (Акционерное общество)
  833:d=7  hl=2 l=  38 cons: SET
  835:d=8  hl=2 l=  36 cons: SEQUENCE
  837:d=9  hl=2 l=   3 prim: OBJECT            :commonName
  842:d=9  hl=2 l=  29 prim: UTF8STRING        :Credit Ural Bank Root CA 2012
  873:d=6  hl=2 l=  17 prim: INTEGER           :01BC154D5001DB5094EE1193DB16439CD9
  892:d=5  hl=2 l=  31 cons: SEQUENCE
  894:d=6  hl=2 l=   8 prim: OBJECT            :GOST R 34.10-2012 with 256 bit modulus
  904:d=6  hl=2 l=  19 cons: SEQUENCE
  906:d=7  hl=2 l=   7 prim: OBJECT            :id-GostR3410-2001-CryptoPro-XchA-ParamSet
  915:d=7  hl=2 l=   8 prim: OBJECT            :GOST R 34.11-2012 with 256 bit hash
  925:d=5  hl=3 l= 172 prim: OCTET STRING      [HEX DUMP]:3081A930280420A8....
 1100:d=3  hl=2 l=inf  cons: SEQUENCE
 1102:d=4  hl=2 l=   9 prim: OBJECT            :pkcs7-data
 1113:d=4  hl=2 l=  29 cons: SEQUENCE
 1115:d=5  hl=2 l=   6 prim: OBJECT            :GOST 28147-89
 1123:d=5  hl=2 l=  19 cons: SEQUENCE
 1125:d=6  hl=2 l=   8 prim: OCTET STRING      [HEX DUMP]:FF734FAF5F8D7CFA
 1135:d=6  hl=2 l=   7 prim: OBJECT            :id-Gost28147-89-CryptoPro-A-ParamSet
 1144:d=4  hl=2 l=inf  cons: cont [ 0 ]
 1146:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:97B83EF99FEB...
 2174:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:3C909501947...
 3202:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:8D857DE9FF120....
 4230:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:5A38C5BFD059...
 5258:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:79C821571E2....
 6286:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:EE7DFBD020D8D2....
 7314:d=5  hl=4 l=1024 prim: OCTET STRING      [HEX DUMP]:83D2119F644BA9....
 8342:d=5  hl=4 l=1022 prim: OCTET STRING      [HEX DUMP]:2818FFC0A2905EE....
 9368:d=5  hl=2 l=   0 prim: EOC
 9370:d=4  hl=2 l=   0 prim: EOC
 9372:d=3  hl=2 l=   0 prim: EOC
 9374:d=2  hl=2 l=   0 prim: EOC
 9376:d=1  hl=2 l=   0 prim: EOC

из этого выхлопа напрягает Gost и CryptoPro, но видимо ESD файл вложения находится с 1146 по 8342

при этом

$ openssl smime -verify -in smime.p7m -inform der -noverify -signer cert.pem -out textdata
Verification failure
139704294606016:error:21075071:PKCS7 routines:PKCS7_verify:wrong content type:../crypto/pkcs7/pk7_smime.c:223:

продолжаю думать…

wolverin ★★★
() автор топика
Последнее исправление: wolverin (всего исправлений: 1)
Ответ на: комментарий от wolverin

Вчера при написании ответа тебе я сначала растекался насчёт формата и т.д. (это почти всё в итоге я удалил из сообщения). А после загуглил ошибку из начала треда. И добавил ссылку. Ты наверняка её смотрел… или нет?

пока не знаю, поскольку даже не знаю формат ключей

Похоже нет. История там такая: у тамошнего ТС ошибка эта возникала из-за кодировки UTF-8 в файле; после перекодировки в ANSI она ушла. Попутно там поясняют, что PEM содержит ключ в виде простого текста в base64, DER бинарный формат. Это моё поверхностное изложение и неполное, если что.

К чему я это всё излагаю? Посмотри, что файл primary.key в кодировке ANSI. Могу пофантазировать про переводы строк в стиле виндовс и

видимо ESD файл вложения находится с 1146 по 8342

в твоей ссылке приводится пример извлечения содержимого из этого контейнера. Извлеки и сравни с тем, что извлекает оутлук.

master_0K
()
Ответ на: комментарий от wolverin

при этом

$ openssl smime -verify -in smime.p7m -inform der -noverify -signer cert.pem -out textdata
Verification failure
139704294606016:error:21075071:PKCS7 routines:PKCS7_verify:wrong content type:../crypto/pkcs7/pk7_smime.c:223:

Что именно тебя смущает?

master_0K
()