搜索
bottom↓
回复: 36

一款索尼笔记本电池研究,碰到加密问题。

[复制链接]

出0入0汤圆

发表于 2012-8-30 15:52:41 | 显示全部楼层 |阅读模式
     最近在研究一款索尼笔记本电池的协议,笔记本型号是VPCM121AX,最终目的是看能否山寨一块能在这个本上正常使用的电池。抓了些数据观察,但是发现有加密的地方。

     笔记本电池和笔记本之间通过SMbus协议通讯(其实就是I2C,两条线SCL和SDA),笔记本可以通过SMbus总线读取到电池的一些信息,如剩余电量、充放电电流、电压、温度等信息。经过大量数据分析发现,在插入电池的5秒时间内,笔记本会对电池进行判别,如果是非法电池则无法开机。

     具体是这样的,监测发现,在插入电池后,电池和笔记本中的另一条数据线(标识为ID线)上有一系列电平变化动作,接下来笔记本在SMbus总线发一条0x3e读命令给电池,电池回复9字节给笔记本,每次监测发现这9字节数据开始两字节每次相同,剩余7字节每次不同。

    我的猜测是:每次插入电池,笔记本通过ID线传送一些数据给电池,笔记本电池通过约定好的算法将数据处理,接着笔记本通过SMbus总线发送0x3e读命令读取计算结果,通过比对确定是否为原装电池。

    USB逻辑分析仪将ID线上的电平变化按异步串口分析,结果为47字节数据,开始两字节每次相同。

    有没有大侠对这块有了解,可以给些建议。

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2012-8-30 16:00:19 | 显示全部楼层
贴张USB逻辑分析仪图和两组电池识别通讯数据。

第一组数据

ID上数据
Time [s],Serial Data,Parity Error,Framing Error
0.0137357,0x6f,,
0.0149858,0xbf,,
0.0166256,0x03,,
0.0178294,0x3b,,
0.0190363,0x5b,,
0.0201407,0x97,,
0.0212467,0x4c,,
0.0222487,0xb4,,
0.0232551,0xf8,,
0.0248612,0x4e,,
0.0261661,0xb6,,
0.0272719,0xff,,
0.0303659,0xc3,,
0.0315740,0xb3,,
0.0327791,0x7f,,
0.0339872,0x0e,,
0.0351922,0x09,,
0.0364002,0xa8,,
0.0376052,0x47,,
0.0388132,0x6b,,
0.0400182,0x53,,
0.0412263,0xb9,,
0.0460132,0xc5,,
0.0472171,0x17,,
0.0484239,0xa5,,
0.0496278,0xef,,
0.0508346,0x28,,
0.0520384,0x5f,,
0.0532452,0xed,,
0.0544492,0x4a,,
0.0556560,0xc7,,
0.0568598,0x4b,,
0.0580667,0x29,,
0.0592706,0x8a,,
0.0604775,0xc3,,
0.0616813,0x30,,
0.0628882,0x62,,
0.0640920,0x48,,
0.0673342,0xc7,,
0.0685422,0x7b,,
0.0697472,0x14,,
0.0709553,0xb2,,
0.0721603,0x41,,
0.0733683,0xc9,,
0.0745732,0x20,,
0.0757812,0xa1,,
0.0769861,0x53,,
0.0781941,0x26,,

SMbus总线上0x3e命令数据

3.5180406,Start
3.5181241,Setup write to 0x0b. +ACK
3.5183848,Wrote 0x3e to 0x0b. +ACK
3.5187619,Start
3.5187829,Setup read from 0x0b. +ACK
3.5194416,Read 0x08 from 0x0b. +ACK
3.5196974,Read 0xd7 from 0x0b. +ACK
3.5199539,Read 0xc4 from 0x0b. +ACK
3.5202098,Read 0x44 from 0x0b. +ACK
3.5204663,Read 0x72 from 0x0b. +ACK
3.5207228,Read 0x4d from 0x0b. +ACK
3.5209791,Read 0x88 from 0x0b. +ACK
3.5212356,Read 0x19 from 0x0b. +ACK
3.5214920,Read 0x3f from 0x0b. +No ACK
3.5218308,Stop

第二组数据

ID线上数据
Time [s],Serial Data,Parity Error,Framing Error
0.0137430,0x6f,,
0.0149920,0xbf,,
0.0159295,0xb0,,
0.0169331,0x98,,
0.0181401,0x95,,
0.0193440,0xf3,,
0.0205510,0xc6,,
0.0217549,0x18,,
0.0229619,0x9a,,
0.0241658,0x5f,,
0.0253728,0x80,,
0.0265767,0x38,,
0.0303698,0xc3,,
0.0315768,0xbe,,
0.0327807,0x90,,
0.0339876,0x3b,,
0.0351915,0x36,,
0.0363984,0x53,,
0.0376022,0xa1,,
0.0388092,0x77,,
0.0400131,0x4e,,
0.0412200,0x3b,,
0.0460110,0xc5,,
0.0472149,0xf9,,
0.0484218,0x15,,
0.0496258,0x82,,
0.0508328,0x37,,
0.0520367,0x5c,,
0.0532437,0xa3,,
0.0544476,0xdf,,
0.0556545,0x95,,
0.0568584,0xf3,,
0.0580653,0xc6,,
0.0592692,0x18,,
0.0604762,0x9a,,
0.0616800,0x5f,,
0.0628869,0x80,,
0.0640908,0x49,,
0.0673272,0xc7,,
0.0685340,0x4d,,
0.0697378,0x83,,
0.0709448,0x5c,,
0.0721485,0x16,,
0.0733554,0x43,,
0.0745592,0x8c,,
0.0757661,0x4e,,
0.0769699,0x4e,,
0.0781768,0x74,,

SMbus总线上0x3e命令数据

3.5180426,Start
3.5181263,Setup write to 0x0b. +ACK
3.5183871,Wrote 0x3e to 0x0b. +ACK
3.5187626,Start
3.5187836,Setup read from 0x0b. +ACK
3.5194416,Read 0x08 from 0x0b. +ACK
3.5196989,Read 0xd7 from 0x0b. +ACK
3.5199544,Read 0x24 from 0x0b. +ACK
3.5202118,Read 0xbf from 0x0b. +ACK
3.5204703,Read 0xdb from 0x0b. +ACK
3.5207268,Read 0x8d from 0x0b. +ACK
3.5209817,Read 0x69 from 0x0b. +ACK
3.5212371,Read 0x99 from 0x0b. +ACK
3.5214941,Read 0x24 from 0x0b. +No ACK
3.5217608,Stop

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入12汤圆

发表于 2012-8-30 16:05:13 | 显示全部楼层
最简单的办法就是,弄块新电池,然后把开机的数据记下来,然后山寨的电池就仿造这个数据,这样就是新电池啦
这个思路是我山寨那个 激光打印机硒鼓上面那个芯片想到的,不过那个简单点,只接读1个全新的芯片,整个克隆下来,管它是神马内容.我只要和你一样就OK

出0入0汤圆

 楼主| 发表于 2012-8-30 16:15:25 | 显示全部楼层
skynet 发表于 2012-8-30 16:05
最简单的办法就是,弄块新电池,然后把开机的数据记下来,然后山寨的电池就仿造这个数据,这样就是新电池啦
这 ...

我试过,copy一次的数据发上去不行的。好多次实验检测发现电池识别那一块数据每次都不一样。ID线每次发出来的数据都不一样。

出0入0汤圆

发表于 2012-8-30 16:57:48 | 显示全部楼层
是不是根据ID线的数据,用一定的算法处理数据后,再把数数据用I2C发送

出0入663汤圆

发表于 2012-8-30 17:06:16 | 显示全部楼层
skynet 发表于 2012-8-30 16:05
最简单的办法就是,弄块新电池,然后把开机的数据记下来,然后山寨的电池就仿造这个数据,这样就是新电池啦
这 ...

很明显就是询问应答机制,抓数据重放是对付不了这种的。
一般的做法是拆开换芯,换的时候要保持不断电,因为加密芯片一掉电就会报废,要先用另外一组电源并联上去再断开旧电芯,换完做个校准就可以恢复青春了。

出0入12汤圆

发表于 2012-8-30 17:07:19 | 显示全部楼层
大佬,你这个办法,太累人啊....
人家是要山寨,寨出来可以........

出0入0汤圆

发表于 2012-8-30 17:17:05 | 显示全部楼层
破解的难度太大了,估计是用HASH,MD5之类的单向算法,,每次主机发不同的数据,电池根据这个数据+内部ID计算出值,回传

破解出来的效果就很好,自己做电池喽

出0入663汤圆

发表于 2012-8-30 17:18:57 | 显示全部楼层
从SMBus总线上是破不了的,专业做法是拆开用Smart Battery Workshop重写EEPROM,很多行家靠这个吃饭,业余搞不定的,只能用上面的不断电换芯方法碰碰运气。

出0入0汤圆

发表于 2012-8-30 17:48:54 | 显示全部楼层
我一个老乡就是靠这个发家了,他目前已经搞定主流40%电池。目前稳定月入80W左右。非常稳定月入。

出0入0汤圆

发表于 2012-8-30 17:54:08 | 显示全部楼层
还依稀记得那一年小鬼子的电池开始加密了。国内山寨电池行业发生巨大地震。然后几个山寨大老出来放话了。5000W人民币。求破解。当时无数英雄折腰。后来被广州一家很大出名的单片机公司一个团队历时半年据说是日夜奋战破解了。
于是乎所有国内的都开始转破解那家的片子了。于是后面就开始慢慢的有人也弄出来了。

出0入0汤圆

 楼主| 发表于 2012-8-30 17:55:26 | 显示全部楼层
刚才将ID线剪断做实验,发现连接电池的时候笔记本段ID上每隔几秒钟发出0xef;而电池端ID线上无数据,正常情况下第一字节应该是0xbf,前7位为笔记本发,第8位电池拉低。。。感觉ID线像是OC口,笔记本和电池都在ID线上发数据,互相校验的。

出0入0汤圆

发表于 2012-8-30 17:56:13 | 显示全部楼层
我擦80W~~~~

其实这不算什么

在PSP1000的时候有个  神电

那才是电池之王~~~~~

出0入0汤圆

 楼主| 发表于 2012-8-30 17:58:34 | 显示全部楼层
gzhuli 发表于 2012-8-30 17:18
从SMBus总线上是破不了的,专业做法是拆开用Smart Battery Workshop重写EEPROM,很多行家靠这个吃饭,业余 ...

最终目的是能用公司的锂电管理芯片做出索尼兼容电池。目前也就是业余水平做专业的工作了。。。

出0入0汤圆

发表于 2012-8-30 17:58:44 | 显示全部楼层
补充下。现在他说已经是很低利润了。还是稳定月入80W左右,是纯利润哦。不是营业额。现在在深圳房子2套 松山湖一套 老家2套 车子是宝马730 这个是去年一年的成绩。吗的,我是看着他发财的。

出0入0汤圆

 楼主| 发表于 2012-8-30 18:05:27 | 显示全部楼层
terencechang 发表于 2012-8-30 17:58
补充下。现在他说已经是很低利润了。还是稳定月入80W左右,是纯利润哦。不是营业额。现在在深圳房子2套 松 ...

这么牛X。。。看看还是能激励下苦逼的电子攻城师的,哈哈

出0入0汤圆

 楼主| 发表于 2012-8-31 11:41:39 | 显示全部楼层
terencechang 发表于 2012-8-30 17:54
还依稀记得那一年小鬼子的电池开始加密了。国内山寨电池行业发生巨大地震。然后几个山寨大老出来放话了。50 ...

广州一家很大出名的单片机公司?  是ZLG吗?

出0入0汤圆

发表于 2012-8-31 11:56:10 | 显示全部楼层
gzhuli 发表于 2012-8-30 17:06
很明显就是询问应答机制,抓数据重放是对付不了这种的。
一般的做法是拆开换芯,换的时候要保持不断电, ...

早年的电池有防止这个做法的功能:检测到容量剧变直接锁电池,并断输出,永远OVER。特别是用三菱M376XX的芯片的一般都这样。

出0入0汤圆

发表于 2012-8-31 13:31:45 | 显示全部楼层
业余好像也只能不断电换电芯了!

出0入663汤圆

发表于 2012-8-31 13:35:33 | 显示全部楼层
heize 发表于 2012-8-31 13:31
业余好像也只能不断电换电芯了!

也有不少人用SBW demo版重写EEPROM搞定的,如果没加密的话。

出0入0汤圆

发表于 2012-8-31 13:43:52 | 显示全部楼层
sys_suweixiao 发表于 2012-8-30 17:58
最终目的是能用公司的锂电管理芯片做出索尼兼容电池。目前也就是业余水平做专业的工作了。。。 ...

权楼主还是死心吧,

如果去破SONY 的相机电池还可能有戏,这个就真搞不了了。

出0入0汤圆

发表于 2012-8-31 13:44:00 | 显示全部楼层
大廠做電池芯片加密,不僅是保護其商業利益.更多是為了防止用戶自行更換電芯出現安全問題,惹麻煩.
一般來說敢用山寨電池的都不會去考慮買原裝電芯的,所以並沒有因山寨的價格而影響高端的消費觀念.

出0入0汤圆

 楼主| 发表于 2012-8-31 14:21:55 | 显示全部楼层
gzhuli 发表于 2012-8-31 13:35
也有不少人用SBW demo版重写EEPROM搞定的,如果没加密的话。

SBW处理TI BQ系列保护板方案还可以,atmega406方案不行。

出0入0汤圆

 楼主| 发表于 2012-8-31 14:30:20 | 显示全部楼层
fsclub 发表于 2012-8-31 11:56
早年的电池有防止这个做法的功能:检测到容量剧变直接锁电池,并断输出,永远OVER。特别是用三菱M376XX的 ...

换电芯后没必要立即修改FCC的,笔记本电池一般经过几次完全充放电后,通过自动学习校正FCC值,而且每次校正量不会超过FCC的一个百分比,最终调整FCC接近实际值。

出0入0汤圆

 楼主| 发表于 2012-8-31 14:33:33 | 显示全部楼层
手头也有一块非原装的电池,可以正常开机索尼这款笔记本,但是监测ID线发现格式和原装电池不一样:原装的ID线上电平变化每次都可按异步串口数据发送格式分析,但是非原装电池ID线上电平变化不满足异步串口格式。。。

出0入0汤圆

发表于 2012-8-31 14:35:31 来自手机 | 显示全部楼层
不是修改什么fcc,而是不断电换电芯可直接锁死电池,永远over。除非重写上面那个eep。

出0入0汤圆

 楼主| 发表于 2012-8-31 14:44:04 | 显示全部楼层
fsclub 发表于 2012-8-31 14:35
不是修改什么fcc,而是不断电换电芯可直接锁死电池,永远over。除非重写上面那个eep。 ...

原来这样。。。fcc=full charge capacity,这办法挺绝的,貌似很管用。不过要是自己算法上出现点问题影响到fcc,也果断自宫!

出0入663汤圆

发表于 2012-8-31 16:20:40 | 显示全部楼层
fsclub 发表于 2012-8-31 14:35
不是修改什么fcc,而是不断电换电芯可直接锁死电池,永远over。除非重写上面那个eep。 ...

反正也是over了才需要换芯的吧?死马当活马医,over了就算。

出0入0汤圆

发表于 2012-8-31 16:51:33 | 显示全部楼层
gzhuli 发表于 2012-8-31 16:20
反正也是over了才需要换芯的吧?死马当活马医,over了就算。

有的还可支撑半小时当UPS用,一换芯,直接锁死。我见过IBM的电池可能是SONY做的,就是这么变态,那年代还是CY500的CPU,都搞得这么变态。
我试图把电路板上的EEP清零之后,仍然不能输出。

后来直接把电池输出场管短接了,反而可以开机了。。。

出0入12汤圆

发表于 2012-8-31 17:05:10 | 显示全部楼层
哇,胡子大叔,古大湿,把这个破了,也是5000W呢

出0入0汤圆

 楼主| 发表于 2012-9-11 13:57:23 | 显示全部楼层
本帖最后由 sys_suweixiao 于 2012-9-11 14:00 编辑

转:http://bbs.dhgate.com/thread-124402-1-1.html
所谓笔记本电池“加密”,是指笔记本只能使用原机标配的电池或是原装电池,无法使用其他替代电池或是没有成功“解密”的电池。这种“加密”的原理大概是这样:笔记本和电池之间在“电池给笔记本供电”关系的前提下,还要和笔记本之间有一个“通信”或者是“对码”关系,如果两者之间“密码不配对”,笔记本电脑的控制系统会发出指令关闭电源停止工作。

电池使用加密技术的主要原因,一方面是厂家实行对配件产品的垄断,这样既可以在出售笔记本电脑上赚钱,也能在电池这种主要配件上赚钱;另一方面,使用质量低劣的替代电池给笔记本供电造成的故障比较多,使用具备加密功能的电池后,一些生产替代电池的厂家无法生产这种电池,用户只能购买原装电池使用,可以有效防止一些质量低劣的替代电池产品对笔记本的损害。
目前笔记本加密电池主要涉及的品牌有: DELL, SONY, LENOVO/IBM




一般的笔记本电脑电池都是SBS1.1的标准协议,以下品牌使用的是非标的协议:


1、IBM、LENOVO

首先使用了非标的SBS协议,最早期的是在SBS1.1的基础上扩展了三条指令,这个只是些静态的扩展指令,IBM从60以上机型全部使动态滚动码加密算法,如果不解出此加密码,安装Lenovo的电源管理系统会导致出现一条Lenovo的免责声明(就是行内所说的黑三角),接着Lenovo品牌也使用类似的加密算法(应该是从G450、Y450之后的产品)导致无法充电。


2、DELL

DELL比较早接触到的加密机型应该是mini9 1310 1735 1535等几个机型,后面的好像全部是加密的了,根据我的破解经验,DELL使用的是变异的SHA-1算法,到目前为止应该是有5种以上的变异了,mini、1310、1710等是一类,1535、A840、1735等是一类、E6400、E5400、E4300等是一类、1435 V系列是类,最新的N系列是一类,估计后面还会出现更多的变异,这对我们搞解密的人来说是个不小的挑战。目前为止也只有几家能完全解密,一般是以M406为平台,沐龙好像是以bq3060 + MCU作平台的。记得09年做破解分析时无意间发现了DELL的这些加密电脑BIOS里面都有BUG,当时无法做到完全破解只能从BUG入手,算是比较早的能搞出兼容DELL的OEM电池了,在前任东家也出了不少货了,后面DELL可能也发现了这些BUG,在新出的型号或BIOS版本上都修正了这些BUG,最后没办法只能还是走完全破解的路……


3、SONY

SONY的BPS2-3-5系列,所用的是动态查表算法,这些都是些简单的加密算法,最早是加拿大那帮人搞出BQ2060+PIC16F818的版本,但容易出现总线冲突导致无通讯或电池死电,后面应该是德龙第一个用M406搞出兼容性比较好的方案,我是09年4月份用M8搞定这几个机型的,后面又移植到M406、79F329等芯片中去的,从BPS8以后SONY使用了更强的加密算法(据说是SHA-512),直到现在还没有一家能完全攻破此算法。最早是成都瑞新搞出更改电脑BIOS的兼容电池,在百特尔发扬光大。目前也有几家能通过刷电脑BIOS来做的兼容电池方案。

目前为止加密的品牌大至也就这几类了,但据说2011-2012年HP也有可能出加密机型,这个只是传说,有没有不得待到HP真的能出加密才能证实。

出0入4汤圆

发表于 2012-9-17 23:40:37 | 显示全部楼层
正在研究这个,晚上抓了一包hp的数据,准备自己做个后备电池,max1781的方案,应该是没加密的。正在啃芯片 手册,

出0入0汤圆

发表于 2012-9-17 23:50:55 | 显示全部楼层
mark,想不到电池也这么复杂。

出0入0汤圆

发表于 2012-10-15 10:34:36 | 显示全部楼层
sony超变态,那根id线不会是one wire总线的吧

出0入4汤圆

发表于 2013-9-25 21:35:20 | 显示全部楼层
本帖最后由 wajlh 于 2013-9-25 21:36 编辑

不好意思过了这么久才上传数据手册

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-9-15 23:42:20 | 显示全部楼层
本帖最后由 cw628 于 2015-9-15 23:48 编辑

楼主的数据怎么从设备地址是0x0b?不是0x16吗?而且这个命令字(0x3e)应该是个word read协议呀,怎么变成了block read了?



SMbus总线上0x3e命令数据

3.5180406,Start
3.5181241,Setup write to 0x0b. +ACK
3.5183848,Wrote 0x3e to 0x0b. +ACK
3.5187619,Start
3.5187829,Setup read from 0x0b. +ACK
3.5194416,Read 0x08 from 0x0b. +ACK//block read的数据长度为8,后面的确读出了8个字节,应该是block read
3.5196974,Read 0xd7 from 0x0b. +ACK
3.5199539,Read 0xc4 from 0x0b. +ACK
3.5202098,Read 0x44 from 0x0b. +ACK
3.5204663,Read 0x72 from 0x0b. +ACK
3.5207228,Read 0x4d from 0x0b. +ACK
3.5209791,Read 0x88 from 0x0b. +ACK
3.5212356,Read 0x19 from 0x0b. +ACK
3.5214920,Read 0x3f from 0x0b. +No ACK
3.5218308,Stop

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2015-11-25 14:58:02 | 显示全部楼层
不是说搞破解的神通广大吗?没有解不了的单片机,难道还有解不了的电池?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 13:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表