MyCloud PC客户端(1.0.7.17)修改无法使用问题
最近新型肺炎闹得确实很厉害,有感动,有流泪,有不忿。为疫情中的逆行者们祈祷、祝福,谢谢你们的付出,一定要注意安全,平安归来。加油武汉,加油中国。
一直是使用My Cloud
搭建私有文件存储,最近升级版本后,在PC上出现了无法使用的问题。
然后在无聊的抓包中,又巧合的发现了问题的所在,并通过修改客户端的PE文件,来修复问题。
接下来,通过简单的过程来说明下是如何发现和处理的。
这是我当前MyCloud
的固件版本
然后在各个移动端使用没有任何问题,但是在PC端使用时,客户端出现无法连接、无法登陆的问题
可以看到在连接时,登陆界面无法显示用户列表,造成无法登陆
包括在使用云账号远程登陆使用的时候,也提示无法连接设备
而My Cloud的官方PC客户端好像停止了更新,停留在了 1.0.7.17 版本,应该是官方在花长时间准备新的PC版客户端,个人预测如果有新版本,大概率可能会使用 electron 来开发。
好了,言归正传。大致的问题交代完了,由于新型肺炎的问题在家一直在自我隔离,闲来无事,就对 My Cloud 设备进行了通讯抓包,结果发现PC版Client
在登陆界面获取设备用户列表时出现了请求失败的情况
** 原因分析 **
由于在MyCloud
之前版本是可以正常使用的,主要是在更新设备固件之后出现的问题,目前已经升级了几个版本,达到最新的2.31.204版本,刚开始以为官方会在后续版本中修复问题,结果一直等不到。 所以猜测,应该是官方在新版本的固件中修改了一些流程或者校验的逻辑,而客户端却一直没有更新。
然后在Postman中对用户列表获取的接口进行了下测试,结果竟然意外的响应成功了
惊了个呆,这下,这个事情好玩儿了,难道是因为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
段中找到相关的定义
通过简单修改数据,从而破坏掉User-Agent
的取值
然后,重新进行打开MyCloud
PC端客户端,可以发现,已经可以正常使用了。
朋友们可以根据示例自己完成PE文件修改或者下载我修改后的文件,替换到\Western Digital\WD My Cloud\Adobe AIR\Versions\1.0
目录中,暂时只处理了Windows
平台。
如果在使用中还有其他的问题,可以随时与我沟通讨论。
最后在论坛中也找到了相应的下载地址,没有做过详细测试,大家也可以下载试试
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