HiraokaHyperTools / msgreader

35 stars 9 forks source link

Attachments from signed mails ignored, only get a smime.p7m file #49

Closed ducphu0ng closed 1 month ago

ducphu0ng commented 2 months ago

Hi,

First of all, thank you for the library!

I'm encountering an issue when handling signed emails. The library isn't able to read the attachments in these emails; the file object only contains one file, "smime.p7m."

Is there a workaround or a way to parse the attachments from signed emails?

I look forward to your response.

Best regards.

kenjiuno commented 2 months ago

Hi.

Unfortunately, achieving it in a pure JavaScript environment is almost impossible as far as I know.

The smime.p7m content can be observed with openssl command.

$ openssl pkcs7 -print -inform DER -in /cygdrive/x/A/smime.p7m
PKCS7:
  type: pkcs7-envelopedData (1.2.840.113549.1.7.3)
  d.enveloped:
    version: 0
    recipientinfo:
        version: 0
        issuer_and_serial:
          issuer: C=JA, L=Osaka, O=Your company, CN=DD CA 20240725201011
          serial: 3
        key_enc_algor:
          algorithm: rsaEncryption (1.2.840.113549.1.1.1)
          parameter: NULL
        enc_key:
          0000 - 44 8e 0d 9b cb 7f 90 81-56 30 1d 04 e8 5c 7a   D.......V0...\z
          000f - f9 8d 92 03 12 65 38 18-22 fb a2 36 36 c1 4f   .....e8."..66.O
          001e - f1 2e 25 0c 27 2f d1 d0-c1 88 f3 be 8a ba e1   ..%.'/.........
          002d - 79 8b a7 24 30 e6 9b 16-46 c6 18 35 29 36 47   y..$0...F..5)6G
          003c - d0 fa d7 cc d8 a1 ce eb-05 1d ca 5b f9 f1 e4   ...........[...
          004b - 5e 56 bc 8b 96 3b 9f d8-b2 5c ed 4e 8f 8b e1   ^V...;...\.N...
          005a - 3d 04 73 64 1d 01 4d 1a-00 a7 3c 7c 75 24 24   =.sd..M...<|u$$
          0069 - 4c de e2 33 82 65 c5 81-05 00 7f 21 05 af 00   L..3.e.....!...
          0078 - d7 c7 71 9d a2 da d8 cb-ea ab 8f 18 b4 67 97   ..q..........g.
          0087 - b9 f6 13 e0 4e 43 f4 4f-12 74 85 32 84 95 cb   ....NC.O.t.2...
          0096 - e6 48 dc e4 35 f4 9e 80-c2 16 de 5f 60 a1 4e   .H..5......_`.N
          00a5 - 7b e4 54 61 f4 2f 6f de-93 00 f2 93 3f a8 05   {.Ta./o.....?..
          00b4 - d2 bf bd 6a 52 46 04 01-b0 f2 dc 34 93 aa 78   ...jRF.....4..x
          00c3 - 14 00 c2 1c 41 4a 7f 29-30 13 ea 3f c2 d9 2f   ....AJ.)0..?../
          00d2 - c9 47 b0 3c 79 4d e7 49-62 3d a3 54 38 36 8f   .G.<yM.Ib=.T86.
          00e1 - 19 2d 9e f7 84 00 2c 0b-dc 99 95 61 d6 6a bf   .-....,....a.j.
          00f0 - 8c 57 85 91 3b 69 49 ea-98 25 4e 26 27 bd d9   .W..;iI..%N&'..
          00ff - 11 17 00 95 40 8d 4a ae-23 15 ec 59 17 da bd   ....@.J.#..Y...
          010e - a2 99 13 51 4a f6 5f be-46 95 14 9c 3a 99 b8   ...QJ._.F...:..
          011d - f0 16 18 78 70 4f f2 6a-a6 55 15 15 fd c5 3f   ...xpO.j.U....?
          012c - 72 9c 82 5f a5 d2 75 e3-e2 cb a4 40 7a ab 8c   r.._..u....@z..
          013b - 3b 09 d2 b8 a7 a9 56 cb-a4 52 aa 90 c1 73 4a   ;.....V..R...sJ
          014a - d5 01 ed 72 09 26 a0 7a-6b a9 b8 37 71 93 1d   ...r.&.zk..7q..
          0159 - b1 25 a3 ac 53 81 68 d4-5a 71 8b 2e 07 e6 5c   .%..S.h.Zq....\
          0168 - c6 9a de 2c dc 67 14 24-a1 3c c0 62 17 58 8c   ...,.g.$.<.b.X.
          0177 - a3 8a cf 4c 92 93 54 14-61 5a 92 41 c7 d1 34   ...L..T.aZ.A..4
          0186 - 3e 9f 73 48 b9 07 c2 17-0f 49 d7 cd 31 fd 60   >.sH.....I..1.`
          0195 - 97 bb 00 cb e8 4f 0e 9b-7e 8b d4 bf 50 9b 24   .....O..~...P.$
          01a4 - 50 b5 d2 26 5f b6 6f 56-73 ac 75 c5 bb 6e d2   P..&_.oVs.u..n.
          01b3 - d2 69 bb e2 93 0d 9b 95-fb fc 4d 48 50 db 10   .i........MHP..
          01c2 - a1 97 5b 59 e7 0f 8c 16-90 dd 56 9e 40 6f 56   ..[Y......V.@oV
          01d1 - 24 62 23 95 14 6f ab 5b-9c 33 09 d2 2a 54 3f   $b#..o.[.3..*T?
          01e0 - 12 20 0f f7 d6 f3 76 0e-f2 53 05 fc f8 81 45   . ....v..S....E
          01ef - cc db 0e 4d c2 6b 0c df-43 53 51 a7 a4 3b 68   ...M.k..CSQ..;h
          01fe - 43 73                                          Cs
    enc_data:
      content_type: pkcs7-data (1.2.840.113549.1.7.1)
      algorithm:
        algorithm: des-ede3-cbc (1.2.840.113549.3.7)
        parameter: OCTET STRING:
          0000 - a8 dd 37 05 4b a0 d5 84-                       ..7.K...
      enc_data:
        0000 - 37 ca 07 84 01 6d ed 47-c4 6e 38 ad 77 d7 98   7....m.G.n8.w..
        000f - 59 b9 2c 93 ae a9 a8 83-d8 44 ec 64 d6 1f f0   Y.,......D.d...
        001e - be 20 ce 02 95 78 a0 53-a8 c8 6a 5c 35 e2 34   . ...x.S..j\5.4
        002d - 7f 5b 6b d3 35 fa de 1d-20 6b ae               .[k.5... k.
-----BEGIN PKCS7-----
MIIC6wYJKoZIhvcNAQcDoIIC3DCCAtgCAQAxggJ0MIICcAIBADBYMFMxCzAJBgNV
BAYTAkpBMQ4wDAYDVQQHEwVPc2FrYTEVMBMGA1UEChMMWW91ciBjb21wYW55MR0w
GwYDVQQDExRERCBDQSAyMDI0MDcyNTIwMTAxMQIBAzANBgkqhkiG9w0BAQEFAASC
AgBEjg2by3+QgVYwHQToXHr5jZIDEmU4GCL7ojY2wU/xLiUMJy/R0MGI876KuuF5
i6ckMOabFkbGGDUpNkfQ+tfM2KHO6wUdylv58eReVryLljuf2LJc7U6Pi+E9BHNk
HQFNGgCnPHx1JCRM3uIzgmXFgQUAfyEFrwDXx3GdotrYy+qrjxi0Z5e59hPgTkP0
TxJ0hTKElcvmSNzkNfSegMIW3l9goU575FRh9C9v3pMA8pM/qAXSv71qUkYEAbDy
3DSTqngUAMIcQUp/KTAT6j/C2S/JR7A8eU3nSWI9o1Q4No8ZLZ73hAAsC9yZlWHW
ar+MV4WRO2lJ6pglTiYnvdkRFwCVQI1KriMV7FkX2r2imRNRSvZfvkaVFJw6mbjw
Fhh4cE/yaqZVFRX9xT9ynIJfpdJ14+LLpEB6q4w7CdK4p6lWy6RSqpDBc0rVAe1y
CSagemupuDdxkx2xJaOsU4Fo1Fpxiy4H5lzGmt4s3GcUJKE8wGIXWIyjis9MkpNU
FGFakkHH0TQ+n3NIuQfCFw9J180x/WCXuwDL6E8Om36L1L9QmyRQtdImX7ZvVnOs
dcW7btLSabvikw2blfv8TUhQ2xChl1tZ5w+MFpDdVp5Ab1YkYiOVFG+rW5wzCdIq
VD8SIA/31vN2DvJTBfz4gUXM2w5NwmsM30NTUaekO2hDczBbBgkqhkiG9w0BBwEw
FAYIKoZIhvcNAwcECKjdNwVLoNWEgDg3ygeEAW3tR8RuOK1315hZuSyTrqmog9hE
7GTWH/C+IM4ClXigU6jIalw14jR/W2vTNfreHSBrrg==
-----END PKCS7-----

And if you have the private key of the recipient, the encryption can be deciphered with openssl.

$ openssl smime -decrypt -binary -inform DER -in /cygdrive/x/A/smime.p7m -out /cygdrive/x/A/smime.eml -inkey /cygdrive/x/A/smime.key

The exposed smime.eml file.

Content-Type: text/plain; charset=utf-8

Hey Alice

The output RFC822 file needs to be parsed with the library which can handle it.

ducphu0ng commented 1 month ago

First of all, thank you for the quick response.

Actually, we managed to extract the attachment. All we have to do is look for an smime.p7m file to recognize if it's a signed file, then parse the MIME content to find the attachment information.

Best regards