
深入了解 Tesla Model 3 MCU 及其内存eMMC
介绍研究结果之前,我应该首先概述 MCU 板上的一些部分:
- 以太网交换机:Marvell 88EA6321。不确定与它有什么关系。至少MCU 板的
CID
以太网端口(理由见下文)。J15
-
CID
:带有一些 RAM 芯片(4GB?)的 Intel Atom E3950。 - eMMC:MTFC64GJVDN-4M,64GB,采用 169 BGA 封装,连接到英特尔 SoC。
-
gateway
:SPC5748GSMMJ6,具有 PowerPC e200 内核的较小芯片。它将 CAN 接口桥接到以太网世界。 - FTDI FT4232HQ:在英特尔 SoC 和端口
J21
“FTDI USB DEBUG”之间建立串行接口
进入串口控制台到CID
将 FT4232HQ 连接到计算机将产生四个串行设备。看起来只有第一台设备与英特尔 SoC 连接,其他设备似乎断开连接。为什么特斯拉没有选择更便宜的 FT232R 是我无法理解的(也许其他三个是连接的?!)。无论如何,这是我看到的第一件事:
哇!
还有:令人惊讶的是,我得到了谷歌的点击:https://pastebin.com/DbPAunKV不幸的是我不知道 CID 凭据。那太容易了,对吧?😉
连接以太网端口
我将以太网端口连接到 PC;上次(见#1)我在我的真车上这样做,我不知道特斯拉汽车使用的明显常见的网络方案:
CID: 192.168.90.100
IC: 192.168.90.101 # only Model S/X
Gatway: 192.168.90.102
AP: 192.168.90.103
由于我正在处理 Model 3 开发板,因此我将以太网适配器的 IP 设置为192.168.90.101
. 我有点惊讶,有事情发生:
$ sudo nmap -A 192.168.90.100
Starting Nmap 7.70 ( https://nmap.org ) at 2019-08-10 21:11 CEST
Nmap scan report for 192.168.90.100
Host is up (0.00024s latency).
Not shown: 998 filtered ports
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.5 (protocol 2.0)
| ssh-hostkey:
| 2048 e7:b5:43:77:d2:81:11:1f:db:fd:61:66:f4:0e:cf:06 (RSA)
| 256 33:f5:c6:85:a0:bc:bb:18:02:66:52:53:f7:20:aa:dc (ECDSA)
|_ 256 ca:2e:2f:9f:6f:e6:a8:ee:bd:e7:66:97:b6:1a:58:9c (ED25519)
8080/tcp open http aiohttp 2.1.0 (Python 3.6)
|_http-server-header: Python/3.6 aiohttp/2.1.0
|_http-title: Site doesn't have a title (text/html).
MAC Address: A4:34:D9:01:02:03 (Intel Corporate)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.10 - 4.11, Linux 3.2 - 4.9
Network Distance: 1 hop
TRACEROUTE
HOP RTT ADDRESS
1 0.24 ms 192.168.90.100
好的,有一个开放的 SSH 打开,甚至不提示输入密码。目前这是死胡同。但是等等,8080 上发生了什么?!
那很有趣。不幸的是,每个项目都失败了,并且没有做任何有趣的事情。在开发人员网络选项卡上,我看到了这个 JSON 响应:
{"error": "You do not have command permission to perform this task"}
尽管如此,这仍然可能是一个攻击媒介,尽管即使在服务器端 Python 程序可用时也可能很难。我想知道为什么特斯拉让那个端口保持打开状态。也许 MCU 在车祸发生后进行了某种重置?
无论如何,如果有人感兴趣,这里是客户端源代码:https://gist.github.com/lewurm/63fc5bd4e2591a677b298e2bc277d28a
绕回我的真车
带着收集到的知识,我回去了。还记得这篇文章#1吗?我有一个方便地暴露在乘客侧的以太网端口。同样,我将我的以太网适配器配置为192.168.90.101/24
,然后我们开始:
那里也有相同的测试菜单!(软件版本2019.24.4 73fb1ab
)
哇。所以现在我真的很想知道这是怎么回事。
显然我试着点击了一些东西;正如您可以看到一些无害的东西,例如“校准相机”。什么都没发生:查看开发者网络选项卡给了我这个::
{error: "Token 2.0 not found."}
那很奇怪。为什么此处的响应与我们在回收的 MCU 上看到的不同?我内心激动的部分希望以下内容是真实的:有一个漏洞已在较新的软件版本中得到修复。(嗯,但他们为什么还要让那个端口保持打开状态?!)。
这是一个端口扫描(可惜只是一张图片😴):
有一点不同:汽车少了一个主机钥匙。唔?
不知道,暂时继续。
戳网关(未成功)
我记得在https://github.com/Lunars/tesla/wiki/Gateway-Shell阅读过这条指令
$ printf "\x12\x01" |socat - udp:gateway:3500
# Once the port is open, Use netcat (or equivalent tool) to
# create a connection to the newly opened telnet port. If
# successful, you will be prompted with ?.
$ nc gateway 23
?
# Use the password 1q3e5t7u for
# use the same static password. if
# prompted with gw>.
不幸的是,这在两个 MCU 上都不起作用。然而,有一些奇怪的行为:如果我socat
在 MCU 重置后立即执行此命令,它会等待一段时间超时。MCU up后,socat
命令立即被拒绝;也许此时已经在以太网交换机上设置了一些规则?那有意义吗?
不知道,但值得一试。
我从这里去哪里?
最初我不想转储 eMMC,但是在串行控制台上出现这个登录提示只是一个/etc/shadow
破解,现在真的很麻烦。
尝试 eMMC 转储的一种方法是找出引脚(也请参见数据表):
有八个数据引脚(D0
就足够了。速度较慢,但谁在乎一次性转储?)。CMD
,CLK
和Vcc
. 弄清楚这些引脚并不是很简单,正如我已经说过的,我是一个硬件菜鸟。
与此同时,我正在关注德国“TFF”论坛中关于更换 Model S/X MCU 上的 eMMC 的话题。众所周知,特斯拉的软件并不能很好地对待它们,几年后它们可能会磨损,导致块损坏。目前的问题是,服务中心不会只更换 eMMC,而是更换整个 MCU,而且价格昂贵。底线:人们成功地尝试自行更换 eMMC。
所以它不会那么难,对吧?谷歌搜索后,我发现离我家不远的一家商店正在愉快地处理 BGA 焊接。我给他们打了个电话,他们准备好了;很酷的人!
😬
我现在的计划:
- 从 AliExpress 买一个阅读器,大约 80-100 美元,然后把那只小狗扔掉。
- 为我的回收板获取替换 eMMC。有人告诉我重新封装 BGA 封装非常耗时,因此使用新的 eMMC 芯片要简单得多。
也就是说,eMMC 是加密的,这仍然是一个细微的变化,所以最好不要太兴奋(尽管谣言说它不是)。同时,我会耐心等待 eMMC 读卡器从中国运来。
eMMC 存储的引脚映射
移除 eMMC 存储后,我能够追踪引脚布局。也许它对那里的人有用。
文章转载自公众号:车端
