.NET 如何在 Azure Windows Server 2012 上解密来自 AT&T gophone 的短信

how can .NET, on Azure VWindows Server 2012, decrypt SMS text message from an AT&T gophone

我编写了一个很酷的 .NET Windows 应用程序,它通过 SMS 文本消息或电子邮件与用户进行通信。它像处理电子邮件一样处理 SMS 文本消息。当我的 Windows 服务器 2012 收到来自移动设备的短信或电子邮件时,这两种消息都会到达 C:\inetpub\mailroot\Drop\ 并且我的应用程序会处理它们。

Gmail、Hotmail 等的电子邮件以及 Verizon 的 SMS 都运行良好。但是后来我的朋友过来了,我们测试了他的 AT&T gophone 的接收……Blooey!我从他的移动设备的短信中收到了电子邮件(见下文),一切看起来都很正常,除了实际的短信负载被扰乱了。

如何解扰?首先为什么文字乱码?

X-SENDER: ##########@MMS.ATT.NET
X-RECEIVER: xxxxxxxxxx@xxxxxxx.COM
RECEIVED: FROM BTHCEG-MOMTA01-MMS.MYCINGULAR.NET ([]) BY WITH MICROSOFT SMTPSVC(8.5.9600.16384);
     MON, 5 JUN 2017 17:42:02 -0700
RETURN-PATH: <##########@@MMS.ATT.NET>
RECEIVED: FROM [] ([:14264] HELO=ALPNMS03)
    BY BTHCEG-MOMTA01 (ENVELOPE-FROM <##########@@MMS.ATT.NET>)
    (ECELERITY 3.0.23.37692 R(37717)) WITH ESMTP
    ID D2/65-04620-B5AF5395; MON, 05 JUN 2017 17:42:03 -0700
X-MMS-MESSAGE-TYPE: M-SEND-REQ
X-MMS-TRANSACTION-ID: 1496709721-5
X-MMS-MMS-VERSION: 1.2
TO: PRAY@##########@COM
FROM: ##########@@MMS.ATT.NET
DATE: MON, 5 JUN 2017 20:42:02 -0400 (EDT)
X-MMS-SENDER-VISIBILITY: SHOW
CONTENT-TYPE: MULTIPART/MIXED; 
    BOUNDARY="----=_PART_7984369_300459990.1496709722943"
MIME-VERSION: 1.0
MESSAGE-ID: <1096997833.194273661496709722943.JAVAMAIL.NEMS@ALPNMS03>
X-ORIGINALARRIVALTIME: 06 JUN 2017 00:42:02.0454 (UTC) FILETIME=[B6A1AF60:01D2DE5D]

------=_PART_7984369_300459990.1496709722943
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

...........下面是乱码短信:......

TXKGCHJHEWVYIGLZOIBMB3IGSGVPZGKGDG8GAGF2ZSBWZWFJZSBPBIBOZXIGZMFTAWX5

......实际消息是:"My prayer is: for Heidi to have peace in her family" ------=_PART_7984369_300459990.1496709722943--

X-SENDER: ##########@@MMS.ATT.NET
X-RECEIVER: PRAY@##########@.ORG
RECEIVED: FROM BTHCEG-MOMTA02-MMS.MYCINGULAR.NET ([##########@]) BY PRAYSHEP WITH MICROSOFT SMTPSVC(8.5.9600.16384);
     MON, 5 JUN 2017 18:14:30 -0700
RETURN-PATH: <##########@@MMS.ATT.NET>
RECEIVED: FROM [##########@] ([##########@:51516] HELO=ALPNMS03)
    BY BTHCEG-MOMTA02 (ENVELOPE-FROM <##########@@MMS.ATT.NET>)
    (ECELERITY 3.0.23.37692 R(37717)) WITH ESMTP
    ID 29/CD-12903-7F106395; MON, 05 JUN 2017 18:14:31 -0700
X-MMS-MESSAGE-TYPE: M-SEND-REQ
X-MMS-TRANSACTION-ID: 1496711669-7
X-MMS-MMS-VERSION: 1.2
TO: PRAY@##########@.ORG
FROM: ##########@@MMS.ATT.NET
DATE: MON, 5 JUN 2017 21:14:30 -0400 (EDT)
X-MMS-SENDER-VISIBILITY: SHOW
CONTENT-TYPE: MULTIPART/MIXED; 
    BOUNDARY="----=_PART_7989525_395020720.1496711670941"
MIME-VERSION: 1.0
MESSAGE-ID: <1241288163.194397521496711670942.JAVAMAIL.NEMS@ALPNMS03>
X-ORIGINALARRIVALTIME: 06 JUN 2017 01:14:30.0518 (UTC) FILETIME=[3FC4A960:01D2DE62]

------=_PART_7989525_395020720.1496711670941
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

................. 从短信 SMS 中加扰:................ QWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFHYWFH ......实际是全部 "AAAAAAAAAAAAA..." ------=_PART_7989525_395020720.1496711670941--

所以这个 HttpRequest 是一个 Multi-part 形式。

每个文件在边界之间分割:

BOUNDARY="----=_PART_7984369_300459990.1496709722943"

然后每个文件都有自己的一组信息:

------=_PART_7984369_300459990.1496709722943
CONTENT-TYPE: TEXT/PLAIN; CHARSET=UTF-8
CONTENT-DISPOSITION: ATTACHMENT; FILENAME=TEXT_0.TXT; CHARSET=US-ASCII
CONTENT-ID: 0
CONTENT-LOCATION: TEXT_0.TXT
CONTENT-TRANSFER-ENCODING: BASE64

此边界具有 CONTENT-TRANSFER-ENCODING Header,这意味着其所有内容 (TEXT_0.TXT) 都被编码为 BASE64.

我查看了您发布的消息,它应该区分大小写,导致 TXkgcHJheWVyIGlzOiBmb3IgSGVpZGkgdG8gaGF2ZSBwZWFjZSBpbiBoZXIgZmFtaWx5,因此您可能有一些数据损坏,或者您查看编码的方式正在改变它。

我无法提供代码示例,因为我不确定您使用的是 Webforms 还是 MVC,但这里有一个 example with asp.net MVC Web Api 2