个别收到的短信乱码,有什么办法还原么。。。

2018-03-06 18:58:45 +08:00
 kokutou

andorid 7.1 和 android 8.1 都这个样。系统是 lineageos

就很个别的几条短信。现在手机里 1200 多条,也就 9 条是这样的乱码。

其中 6 条都是湖北银行的验证码 1069019596599 发的。。。

换了几个短信程序,也显示的是乱码

通过拷贝 mmssms.db ,读出来二进制数据,

用 winhex 切换到 UTF-16 BE 能看到部分中文,但间断的还是乱码。

是中间还需要什么骚操作么。

mmssms.db 里:

mmssms.db 导出二进制放到 winhex 显示:

手机上显示基本就是右边 ASCII 去掉空格的样子。

转换成 UTF-16 BE 能有部分中文。

我想知道有什么办法完全还原这几条短信么。。。

附上一堆 hex

··· 30106D6653C391C294C3B6C2884C3011606D55C29C60C2A85DC3B262104E3A6D6653C3910056004900530041767DC291C3914FC3A1752853614F18C29009752862373002514D5E74C28D39002C5BC2A162795FC3AB002C6DC288C28D39C290017EC2A25305002C70C2B951C3BB00200074002E0063006E002F00520058005800780049005600640020586BC288687533C298C2860020002EC29000C28BC2A256C39E0054 ···

8621 次点击
所在节点    问与答
12 条回复
ysc3839
2018-03-06 22:06:03 +08:00
修改后的 Hex
30 10 6D 66 53 D1 94 F6 88 4C 30 11 60 6D 55 9C 60 A8 5D F2 62 10 4E 3A 6D A6 53 D1 00 56 00 49 00 53 00 41 76 7D 91 D1 4F E1 75 28 53 61 4F 18 90 09 75 28 62 37 30 02 51 4D 5E 74 8D 39 00 2C 5B A1 62 79 5F EB 00 2C 6D 88 8D 39 90 01 7E A2 53 05 00 2C 70 B9 51 FB 00 20 00 74 00 2E 00 63 00 6E 00 2F 00 52 00 58 00 58 00 78 00 49 00 56 00 64 00 20 58 6B 88 68 75 33 98 86 00 20 00 2E 90 00 8B A2 56 DE 00 54
kokutou
2018-03-06 22:10:54 +08:00
@ysc3839 #1
咋处理。。。
能简单说下方法么。。。
ysc3839
2018-03-06 22:13:01 +08:00
@kokutou 搜索 0xC2 和 0xC3,如果后一个字节 >= 0x90 就 += 0x40,然后删掉所有 0xC2 0xC3。
ysc3839
2018-03-06 22:13:57 +08:00
@ysc3839 错了,不是 >= 0x90,是 > 0x90。
wclebb
2018-03-06 22:15:43 +08:00
是不是电信?
kokutou
2018-03-06 22:15:52 +08:00
@ysc3839 #3
感谢大佬。。。

这是 lineageos 的问题还是 android 的问题还是说是湖北银行 /浦发银行的问题?
kokutou
2018-03-06 22:16:05 +08:00
@wclebb #5 对,电信。
难道是电信的问题。。。
ysc3839
2018-03-06 22:25:02 +08:00
@kokutou 不知道,这个方法也是猜出来的。
kokutou
2018-03-06 22:45:55 +08:00
@ysc3839 #8
感谢大佬

全部还原了,然而并没有什么重要的信息。。。😂
wclebb
2018-03-06 22:47:12 +08:00
@kokutou #7 之前用过电信 Android 手机。
也和你一样收到过乱码。

在信息的设置里找找(很久了,不记得是什么),有个编码的,选好了它就能读取了。

你完全用不着这样的。
是的,就这么简单。

或者搜一下
电信 短信 乱码

我相信,一定会有你这个解决方案。
zouxy
2018-03-07 00:13:01 +08:00
我没仔细解码,估计是短信内容超过 140 字节需要两条短信拼接 然后拼接错了.

长短信 每条短信前面有字节标示共几条 当前是第几条

手机底层软件或者运营商短信网关一个出错就会出错.手机出错的可能性大些.

因为短信解码是底层功能,出错了之后保存到数据库就是错的,换短信应用的结果会一样的
cy97cool
2018-03-07 09:31:00 +08:00
对短信内容感兴趣的可以 py:

d="30 10 6D 66 53 D1 94 F6 88 4C 30 11 60 6D 55 9C 60 A8 5D F2 62 10 4E 3A 6D A6 53 D1 00 56 00 49 00 53 00 41 76 7D 91 D1 4F E1 75 28 53 61 4F 18 90 09 75 28 62 37 30 02 51 4D 5E 74 8D 39 00 2C 5B A1 62 79 5F EB 00 2C 6D 88 8D 39 90 01 7E A2 53 05 00 2C 70 B9 51 FB 00 20 00 74 00 2E 00 63 00 6E 00 2F 00 52 00 58 00 58 00 78 00 49 00 56 00 64 00 20 58 6B 88 68 75 33 98 86 00 20 00 2E 90 00 8B A2 56 DE 00 54".split()
x=[int("0x"+i,16) for i in d]
result=[]
for i in range(0,len(x),2):
   result += bytes([ x[i+1], x[i] ]).decode("utf-16")
print("".join(result))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/435485

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX