Forums

具有自定义EEPROM的i2c工具

开始于 shaun20120 3 years ago10条回复最新回复3年前575意见

您好,

在我的工程师论文中,我遇到了一个小问题。

我正在使用树莓作为与自定义乐橙云app进行通信的接口-我正在使用i2c工具(i2cdetect i2cget和i2cset)。

乐橙云app-之所以称为定制乐橙云app,是因为我不了解制造商和型号(乐橙云app本身被黑色液体覆盖,因此无法识别)。我找到了负责通信的引脚(因此我找到了Vcc GND SDA和SCL)。使用i2cdetect,我发现乐橙云app的地址为0x73。 

我想使用i2cdump从乐橙云app读取某些内容,但是数据一直在变化,并且看起来每个读取的内容都不同:

No size specified (using byte-data access)

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX 00 XX 00 00 XX 00 XX XX 00 XX XX 00 XX XX XX    X.X..X.XX.XX.XXX
10: XX 00 00 XX 00 00 XX XX XX 00 00 XX XX XX XX 00    X..X..XXX..XXXX.
20: XX XX 00 XX XX 00 00 XX XX 00 XX XX XX 00 00 XX    XX.XX..XX.XXX..X
30: 00 00 00 00 XX XX 00 XX 00 00 00 00 XX 00 XX 00    ....XX.X....X.X.
40: 00 00 XX 00 00 XX XX XX 00 00 00 XX XX XX XX 00    ..X..XXX...XXXX.
50: XX XX 00 00 XX XX XX XX 00 00 XX 00 XX XX XX 00    XX..XXXX..X.XXX.
60: XX 00 00 00 XX XX XX XX 00 XX XX XX 00 XX XX XX    X...XXXX.XXX.XXX
70: 00 00 00 00 XX 00 XX 00 00 XX 00 XX XX XX XX XX    ....X.X..X.XXXXX
80: 00 XX XX XX 00 XX 00 XX 00 00 XX 00 00 XX XX XX    .XXX.X.X..X..XXX
90: 00 00 00 XX 00 XX XX XX XX 00 00 XX XX XX XX 00    ...X.XXXX..XXXX.
a0: XX 00 00 XX 00 00 XX XX XX 00 00 XX XX XX 00 XX    X..X..XXX..XXX.X
b0: XX 00 00 XX XX XX 00 XX XX XX 00 XX XX XX XX 00    X..XXX.XXX.XXXX.
c0: XX XX XX XX XX 00 00 00 XX 00 00 00 XX XX 00 XX    XXXXX...X...XX.X
d0: XX XX XX XX XX XX XX XX 00 XX XX XX 00 XX XX 00    XXXXXXXX.XXX.XX.
e0: XX XX XX XX XX XX XX XX 00 XX XX XX 00 XX XX XX    XXXXXXXX.XXX.XXX
f0: 00 00 XX XX 00 XX 00 00 00 00 XX XX 00 XX 00 00    ..XX.X....XX.X..
No size specified (using byte-data access)

     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX 00 00 XX XX 00 00 XX XX XX XX XX XX XX XX XX    X..XX..XXXXXXXXX
10: 00 00 XX XX XX XX XX XX XX XX XX XX XX 00 00 XX    ..XXXXXXXXXXX..X
20: XX XX 00 XX 00 XX XX 00 XX XX XX 00 XX XX XX XX    XX.X.XX.XXX.XXXX
30: XX XX XX XX XX XX 00 XX XX 00 XX 00 00 00 XX XX    XXXXXX.XX.X...XX
40: 00 XX XX XX XX XX XX XX XX 00 00 XX XX 00 XX 00    .XXXXXXXX..XX.X.
50: XX 00 XX 00 XX XX XX 00 XX XX XX 00 00 00 XX XX    X.X.XXX.XXX...XX
60: XX XX XX XX XX XX XX XX 00 00 XX XX 00 XX XX 00    XXXXXXXX..XX.XX.
70: 00 00 XX 00 XX XX XX 00 XX 00 XX XX XX 00 00 XX    ..X.XXX.X.XXX..X
80: XX XX XX 00 00 XX XX XX XX 00 XX XX XX XX XX XX    XXX..XXXX.XXXXXX
90: 00 XX 00 XX 00 XX 00 00 XX XX XX XX XX XX XX XX    .X.X.X..XXXXXXXX
a0: 00 XX XX 00 XX 00 XX 00 00 XX XX XX XX XX XX XX    .XX.X.X..XXXXXXX
b0: XX XX XX 00 XX 00 XX XX XX XX XX XX XX 00 00 XX    XXX.X.XXXXXXX..X
c0: 00 XX 00 XX XX XX XX 00 00 00 XX XX 00 00 XX 00    .X.XXXX...XX..X.
d0: 00 XX XX XX XX XX XX XX XX XX XX 00 XX 00 00 XX    .XXXXXXXXXX.X..X
e0: XX XX 00 XX XX XX XX 00 00 XX XX 00 XX XX XX 00    XX.XXXX..XX.XXX.
f0: 00 XX 00 XX 00 XX XX XX XX 00 XX 00 XX 00 XX XX    .X.X.XXXX.X.X.XX

我在Arduino上也有某种嗅探器。因此,我模拟了相同的地址(0x73),并连接到使用该乐橙云app的计算机。我看到必须进行某种身份验证才能解锁乐橙云app以进行读取,因为每次机器向乐橙云app发送以下消息时:

- --MESSAGE---
CC
B9
--END MESSAGE--
Request

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request

- --MESSAGE---
FE
8B
--END MESSAGE--
Request

- --MESSAGE---
17
75
25
F0
49
1A
--END MESSAGE--
Request

- --MESSAGE---
30
45
--END MESSAGE--
Request

- --MESSAGE---
49
2B
7A
29
DE
5
--END MESSAGE--
Request

- --MESSAGE---
62
17
--END MESSAGE--
Request

- --MESSAGE---
7B
19
4F
0
E3
B6
--END MESSAGE--
Request

- --MESSAGE---
94
E1
--END MESSAGE--
Request

- --MESSAGE---
AD
CF
98
8D
C0
E
--END MESSAGE--
Request

也许可以解释一下嗅探器的工作原理。它显示到达我们所连接地址的所有消息(数据包)为(0x73)。

例如,如果嗅探器的地址为0x73,我们发送以下命令:

i2cget -y 1 0x73 0xff

我们将得到这样的答案:

- --MESSAGE---
FF
--END MESSAGE--
Request


当我们发送:

i2cset -y 1 0x73 0xff 0x01 0x02 0x03

我们得到:

- --MESSAGE---
FF
1
2
3
--END MESSAGE--


因此,如果机器发出请求,则嗅探器显示“请求”。

如果有要设置的内容,我们可以看到它,因为第一个字节是要设置的内存地址,其余字节是要设置的数据。

现在,机器如何立即发送数据以进行设置和请求?

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request

我试图解锁此乐橙云app以重置其值和/或更改它。我没有足够的经验,这是问题所在,但我学得很快。我也无法在互联网上找到有关此案的更多信息。

有什么帮助或想法吗?也许我做错了什么,对此我一无所知?

[-]
回覆者 mr_bandit七月25,2018

“请求”看起来像一个读取命令,以获取信息。通常,顺序是发送带有寄存器号的写操作,然后读取特定数量的字节。在Digikey上找到I2C设备并阅读其数据表。

例如,假设一个ID字符串从地址(意味着I2C中的寄存器说)为0xF0开始,为6个字节。您从寄存器F0开始读取6个字节,并获取ID字符。或者您写入起始寄存器编号(在这种情况下为F0),然后进行6次读取。 

您的“ i2cset -y 1 0x73 0xff 0x01 0x02 0x03”是一个写操作,因此您的嗅探器正在正确地看到该写操作。

尝试将十六进制转换为ASCII。这可以提供线索。但是,CustomSarge对尝试对I2C乐橙云app进行反向工程有多困难。我建议从Sparkfun.com和LadyAda(adafruit.com)的I2C突破板开始,要比较适度,并对此感到满意。获得另一个Arduino,一个作为主机,另一个作为您的嗅探器。

注意:确保主机和从机(以及嗅探器)处于相同的电压水平。您可能会用5v SDA / SCL伤害3.3v乐橙云app,更糟糕的是,低电压乐橙云app与高电压乐橙云app通信很容易失败,因为作为集电极的RX端的触发阈值为0.7vcc:0.7 * 5.0 = 3.5,则对于5v器件,真正的3.3级SAD / SCL永远不会达到“ 1”输入。有时它可以工作,因为您可能刚好超过阈值,例如3.6v或3.55v。我得到一个演出是因为原始工程师炸了那个&&我在头60秒内发现了它。您*无法*“在软件中修复”。

获取一个小的EEPROM并尝试使其工作。您将学到很多东西。 

如果您可以对神秘乐橙云app进行反向工程,则可以为您提供更多的功能。但是CustomSarge仍然存在。您不太可能会弄清楚什么是乐橙云app。您唯一的真正希望是通过弄清楚它在系统中的功能并从那里去缩小它的范围。但是,如果它确实是定制乐橙云app,那么我会想到一个雪球……

[-]
回覆者 shaun20120七月26,2018

我同意这不是一件容易的事,现在是荣誉问题,因为我的老师(发起人)说我不会这样做:D最糟糕的部分是我看到人们在这里读过此乐橙云app但不想要与我分享知识:(  

陌生的东西(对我而言)是为什么要写入数据块并最终有一个请求。我的意思是这个结果:

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request

据我了解,该机器希望将数据块写入单元地址0xE5:0x87 0xD4 0xD5 0xB2 0x76。问题是为什么会有请求。看起来好像要读取,但是当您读取数据时,只有内存地址,而没有像这样的任何数据:

- --MESSAGE---
E5
--END MESSAGE--
Request

当乐橙云app正在写入内存并读回以获得一些反馈时,它应该看起来像这样:

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
- --MESSAGE---
E5
--END MESSAGE--
Request

机器正在写入数据,然后正在检查值是否更改。


我处于非常好的位置,因为我拥有与其兼容的乐橙云app和机器,因此我可以看到完整的通信,但是我无法复制此消息(因为它不仅是“ i2cset”):

- --MESSAGE---
E5
87
D4
D5
B2
76
--END MESSAGE--
Request

当我能够做到这一点时,我可以看到之后的乐橙云app功能。



这个话题非常有趣,非常感谢您的回答。我真的很感谢你,因为你节省了时间。

[-]
回覆者 mr_bandit七月26,2018

将示波器放在SDA和SCL上。看完整的波形。您上面的示例足够简短。您假设您的嗅探器正在告诉您真相。可能不是。不信任任何您无法验证的东西

我假设您有一个显微镜,可以在USB驱动器上将波形捕获为jpg。您可以捕获部分,然后使用颜料将它们粘合在一起并注释整个波形。我一直在做这样的事情-就在最近的I2C波形上。

请记住,乐橙云app可能正在执行以下三种操作之一:内存,或者处理数据,或者获取命令并读取/写入其他引脚。最有可能是#1或#3。将EEPROM用于#1,将ADC或总线扩展器用于#3。看看其余的针脚。如果有多余的引脚(没有VCC,GND,SDA,SCL),它们在哪里?

有趣的是为什么他们要装乐橙云app?我会打赌几个大的直板棒(对我来说这是一个相当严肃的赌注),它是一个定制乐橙云app,并且具有与其他组件相连的痕迹。弄清楚*它们*是什么-这是一个大提示。

成功给您!继续努力,您就可以拥有职业生涯逆向工程筹码-别开玩笑。在新墨西哥州的阿尔伯克基市,有一家公司对民用和美军无能为力。 他们拥有使他们能够实时观察乐橙云app实际执行情况(位流)的设备。太酷了!

谷歌的``defcon逆向工程乐橙云app''-我在DEFCON 21演讲中。他们有一些很酷的技巧和技巧,包括让牙医为他们准备X射线乐橙云app。

读 //www.defcon.org/images/defcon-21/dc-21-pres...  但请注意有关化学药品的警告。


[-]
回覆者 shaun20120七月27,2018

首先感谢您的答复。您很高兴牺牲自己的时间来帮助我:)

问题是我没有示波器,但我应该可以从学校使用示波器,但是我对此经验很少。

根据我的观察,我认为该乐橙云app正在执行#1或#2指令,因为它在小板上没有其他引脚,只有SDA,SCL,GND和VCC。乐橙云app位于小板上(如2cm x 2cm)。在板上,我只能看到覆盖有黑色材料的乐橙云app(假设是:))和两个SMD电阻器。

我以为他们可以,因为他们可以。它是批量产品。即使您从侧面取一点底池,筹码仍然有银色的顶部(不是您通常看到的黑色)。因此,不可能从中获得任何名称/模型。我还怀疑该盖子下的乐橙云app已在该制造商的许多设备中使用,这就是为什么他们要封装它。

我将阅读更多内容,并思考接下来可以做什么。我试图从该制造商那里购买其他乐橙云app。电路板的形状不同,但乐橙云app外观相同(也有两个SMD电阻器)。但是用这个乐橙云app我找不到乐橙云app地址(我尝试了SDA,SCL,Vcc和GND的所有组合),但是没有运气。

对我来说,这是一件艰苦而有趣的工作,因为我很多;)

感谢您提供的资源。有太多的想法,您可以通过做这种工作来学习。

再次感谢您;)


[-]
回覆者 mr_bandit七月27,2018

贴片电阻器可能是I2C上拉电阻。使用电表(系统关闭时),查找乐橙云app上的哪些引脚连接到上拉电阻。提示:两个电阻的一侧都连接到VCC,因此请找到连接在一起的两端。另一端连接到乐橙云app上的SDA和SCL引脚。查看I2C乐橙云app的简单原理图。

您确实需要使用显微镜。在您的学校使用一个。如果您有足够的资源,请购买一台显微镜-rigol的DS1054Z为350美元。我不会告诉你,有一个免费的黑客工具可以将其从50MHz更改为100MHz...。 //www.rigolna.com/products/digital-oscillosc...  -这也是4个频道。如果可以,请始终使用4通道镜。

设备地址的标准技巧是全部尝试-正确的地址将对其进行确认。 (发送地址以进行读取或写入,并在发送测试地址以重置乐橙云app后执行STOP)。此外,您还有一个正常工作的系统。 SDA和SCL线的作用域将为您提供地址。

在我看来,这可能是加密乐橙云app。数据似乎在改变的事实,并且被灌输是有力的线索。给定系统,这有意义吗?盒子的功能是什么?

[-]
回覆者 shaun20120七月30,2018

投资350 $超出了我的预算:P

是的,这就是我确定乐橙云app的引脚和地址的方式(始终有效)。首先我找到了地和Vcc,因为它很容易,因为应该总是5v或3.3v(恒定)。后来只剩下两种可能(SDA和SCL顺序),所以我连接了两种可能的方式,并用“ i2cdetect”扫描乐橙云app。在所有情况下,它都能正常工作,我能够找到乐橙云app地址和正确的引脚。

与新乐橙云app不同。没有恒定的5v或3.3v。我发现的最大v是3.3v,所以我假设乐橙云app是3.3v。另一方面,我认为这可能是一些I2C协议,但做了一些修改,因为连接空闲时没有电源。另外,SCL引脚的作用类似于接地引脚,因此在Vcc和SDA的情况下,它为我提供了3.3v的正电压:/

出售该乐橙云app的全部目的是我已经在自己的车上内置了平板电脑(也包括在我的论文中),并且我正在尝试读取包含有关配件信息的乐橙云app。因此,根据乐橙云app的详细信息,我将关闭电源或在某些系统上运行,但是已经完成了。对我来说最重要的是读取乐橙云app之一(加密的乐橙云app或更改了通信方式的这一乐橙云app)。

当我用尽所有想法时,主题变得越来越复杂。

1)我无法复制发送到乐橙云app的消息。看起来该设备想要在乐橙云app的内存中设置一些数据,但它也会请求(某些东西)。

2)我找不到设备的地址。引脚顺序与上面遇到问题的乐橙云app相同。但是交流中有一些东西。我认为SCL有时会扎根,因为我可以测量SCL和(Vcc或SDA)之间的V。


[-]
回覆者 shaun20120七月30,2018

现在我读到,能够检测其他乐橙云app可能是由于时钟拉长所致。是否可以?如果是,该如何做才能使用命令“ i2cdetect”进行时钟扩展?

[-]
回覆者 mr_bandit2018年8月2日

这就是为什么您需要在显微镜上查看信号的原因。它会告诉您从站是否正在延长时钟。否则,您将在黑暗中摸索。从您的学校借钱,看看朋友是否有一个-不管需要什么。

而且,是的,我知道作为一名学生,您可能没有350美元可投入使用,但是一旦开始工作,您将拥有这笔钱。作为处理电子产品的工程师,它将成为您有史以来最有价值的工具之一。并获得一个4通道示波器-您将发现一个2通道示波器至少需要一个以上的输入。

[-]
回覆者 CustomSarge七月25,2018

1>如果灌封料坚硬/“易碎”。如果是这样,请仔细暴露IC顶部的品牌/型号。

2>如果灌封料较软,则轻轻加热并刮下乐橙云app顶部,以进行品牌/模型加工。

因为没有&模型,您将无处可去。没有功能,参数分配或寄存器布局的知识,这是不可能的。抱歉...<<<)))

[-]
回覆者 shaun20120七月26,2018

就像我说的那样,这并不容易-我知道。非常感谢您的答复,并感谢您的宝贵时间。

乐橙云app上的黑东西很硬,但乐橙云app本身很小(SMD?)。

最好的部分是我对论文进行了其他乐橙云app的逆向工程(但它没有用),并且还具有身份验证方法。我能够通过连接到机器的嗅探器来跟踪它,该机器正在模拟乐橙云app。我花了一只蛾,但是是的。

这是一个有趣的过程,因为我在论文中学到了很多东西,没有什么是不可能的:D:D