MyCloud PC客户端(1.0.7.17)修改无法使用问题

最近新型肺炎闹得确实很厉害,有感动,有流泪,有不忿。为疫情中的逆行者们祈祷、祝福,谢谢你们的付出,一定要注意安全,平安归来。加油武汉,加油中国。

一直是使用My Cloud搭建私有文件存储,最近升级版本后,在PC上出现了无法使用的问题。

然后在无聊的抓包中,又巧合的发现了问题的所在,并通过修改客户端的PE文件,来修复问题。

接下来,通过简单的过程来说明下是如何发现和处理的。

这是我当前MyCloud的固件版本

My Cloud的系统版本

然后在各个移动端使用没有任何问题,但是在PC端使用时,客户端出现无法连接、无法登陆的问题

My Cloud客户端可以搜索到设备

可以看到在连接时,登陆界面无法显示用户列表,造成无法登陆

My Cloud客户端无用户列表信息

包括在使用云账号远程登陆使用的时候,也提示无法连接设备

而My Cloud的官方PC客户端好像停止了更新,停留在了 1.0.7.17 版本,应该是官方在花长时间准备新的PC版客户端,个人预测如果有新版本,大概率可能会使用 electron 来开发。

好了,言归正传。大致的问题交代完了,由于新型肺炎的问题在家一直在自我隔离,闲来无事,就对 My Cloud 设备进行了通讯抓包,结果发现PC版Client在登陆界面获取设备用户列表时出现了请求失败的情况

1.0.7.17获取用户列表失败

原因分析

由于在MyCloud之前版本是可以正常使用的,主要是在更新设备固件之后出现的问题,目前已经升级了几个版本,达到最新的2.31.204版本,刚开始以为官方会在后续版本中修复问题,结果一直等不到。 所以猜测,应该是官方在新版本的固件中修改了一些流程或者校验的逻辑,而客户端却一直没有更新。

然后在Postman中对用户列表获取的接口进行了下测试,结果竟然意外的响应成功了

1.0.7.17获取用户列表失败

惊了个呆,这下,这个事情好玩儿了,难道是因为PC客户端在请求时的一些Headers参数造成的认证失败?

在对MyCloud PC Client的通讯进行拦截修改后,发现问题主要存在User-Agent:Mozilla/5.0 (Windows; U; zh-CN) AppleWebKit/533.19.4 (KHTML, like Gecko) AdobeAIR/3.5参数值,由于目前MyCloud客户端使用的是AdobeAIR SDK开发,可能在新版本的固件版本中有一些其他的库或者逻辑造成的401 Unauthorized情况。

解决办法

既然已经清楚到知道原因了,无非就是对症下药的途径了。既然是请求接口的Headers问题,那么要么在Client端抹除User-Agent参数,或者在Server端取消掉校验的逻辑。

对于Mycloud固件没有过多的进行研究,那么就选择简单的在Client中进行解决。

通过分析安装Client的安装包进行简单分析,可以看出确实是基于AdobeAIR SDK开发的,而在SDK中提供了底层Web请求框架的封装,所以,可以直接针对依赖文件进行修改。

使用IDA简单对Adobe AIR.dll进行分析,可以在.rdata段中找到相关的定义

.rdata中的定义

通过简单修改数据,从而破坏掉User-Agent的取值

.rdata中的定义

然后,重新进行打开MyCloudPC端客户端,可以发现,已经可以正常使用了。

可以正常显示用户列表

可以进行登陆和使用

朋友们可以根据示例自己完成PE文件修改或者下载我修改后的文件,替换到\Western Digital\WD My Cloud\Adobe AIR\Versions\1.0目录中,暂时只处理了Windows平台。

点击下载修改后的Adobe AIR.dll

如果在使用中还有其他的问题,可以随时与我沟通讨论。

最后在论坛中也找到了相应的下载地址,没有做过详细测试,大家也可以下载试试

WD My Cloud Desktop for Windows: http://downloads.wdc.com/nas/WDMyCloud_win.exe
WD My Cloud Desktop for Mac: http://downloads.wdc.com/nas/WDMyCloud_mac.dmg