序言
刚才在存储社区一些帖子上看到关于FIRMWARE的讨论,感觉大家对FIRMWARE还是比较生疏,有的居然想出一些拆掉芯片用编程器烧录后再焊回去的方式,这种方式千万不能使用,因为一些隐含的问题会发生。具体的问题不必多说大家都会明白。
为什么很难获得FIRMWARE?
作为固件程序员,我这里几乎有全部种类的FIRMWARE,但是,有些不能公开,有的是为一些厂商而做的,是规定收取费用的种类,有的是内部测试版本,针对特定的方案而专门编写的,不能公开。一般公开的版本号有特别的规定,不能高于市场正在销售的版本。(FIRMWARE)
Q1:对于普通用户来说,有没有升级硬盘固伯的必要?如果有,什么情况下推荐升级Firmware?
A1:对于普通用户来说,没有必要升级硬盘固件,一般微小的缺陷可以在软件里使用补丁程序解决。除非和适配器的兼容性存在问题或者弥补硬件的某些缺陷,厂家才会推出升级的程序(包括全部升级或部分补丁升级)。这里要着重说一下补丁,补丁具有很严密的针对性,不是每个同型号的产品都适用补丁,不正当的升级会导致严重的问题。(huyiyang)
Q2:如果真的要升级硬盘固件,是如何升级?是否跟升级DVD的Firmware一样?即跟涮新BIOS相似的道理和过程?
A2:PC里的SCSI硬盘升级程序只是一个传送升级代码的程序,是把升级代码送到硬盘缓冲里,然后让硬盘的DSP运行升级代码,升级代码运行过程中执行升级过程并修改EEPROM相应的区域,这时候升级程序进入了状态监视过程。(huyiyang)
你们看到的FIRMWARE为什么和EEPROM的大小不一样,现在该明白是什么原因了吧。
Q3:厂家会不会不断升级Firmware,就像升级驱动程序一样,不断更新版本?如果是的话,Firmeware对于厂商又有何意义?
A3:厂家会不断升级Firmware,并且应用到新生产的产品中去,但是厂家不会公开发布FIRMWARE,只有当厂家判定你的硬盘确实需要升级的时候才会给你。当然对于升级的后果厂家不会承担任何责任。FIRMWARE的作用,打个比方硬盘的控制板是台电脑,FIRMWARE就是操作系统,它包括很多模块:驱动,控制,解码,传送,检测……
这里建议大家不要随便升级硬盘的FIRMWARE,你的硬盘现在能够正常使用就是没有升级的必要,因为升级的后果有不可预见性。一定要小心!!!(huyiyang)
Q4:据说富士通硬盘的Firmware有公开发行的?这是真的否?
A4:对于SCSI公开的只是一部分况且是退出市场的产品型号,你能取得现在正在销售的MAP,MAS的FIRMWARE吗?如果能获得,我认为你是从一些渠道获得的,而不是他们公开发布的。
厂家往往提醒大家不要使用网上流传的一些FIRMWARE,网上流传的一些FIRMWARE很多是好奇者修改的版本。据我所了解,在某BSD论坛上曾经有一个SCSI工具打包发布了一部分FIRMWARE,但是就在这个四月,他们的新版本里删除了那一部分FIRMWARE,具体原因可能是受到厂商的警告。
当然对于一些计算机大厂有自己的FIRMWARE开发能力(象HP,SUN,COMPAQ,IBM,etc)为了自己的整个产品的性能会推出一些较新的FIRMWARE,但是这些FIRMWARE具有特别严密的针对性,发布的版本往往是经过加密换算的,需使用专门提供的升级程序。专门提供的升级程序在升级前会判断你的硬盘是否属于升级范围内的硬盘,升级代码在执行过程中也会判定当前硬盘是不是属于要升级的类型。
另外提醒的是厂家的硬盘生产型号往往是系列的,比方说,现在大部分36,72,148的硬件方案都是一样的,有时候为了生产调配,明明是72G的硬盘,厂家可能会写成36G销售,这样一些非法商人可能会破解FIRMWARE,如果JS能把那些硬盘从36G改变回去成了72G,JS就获利,厂家受到损失。这也是厂家为什么不公开发布FIRMWARE的原因。(
想自由增大或缩小硬盘的容量吗?固件给你答案
事实上硬盘的生产和CPU等配件的生产是一样的,如果你找到了厂家的漏洞也可以“升级”。同一系列的盘体和控制板是可以互换的,比如说36G和73G,大部分时候,厂家会尽量少装盘片在里面,但是有时候赶货固不来时间就会用73G或者148G的盘体,只是修改了型号显示和LBA参数。
例如,在大陆市场很少看到ST336605这个型号,因为盘体就是ST373405,73G的。在IBM微盘也很少看到512MB的,其实就是1GB的。
有些盘体不是也没有关系呀,可以当成坏盘拿回厂商维修更换,知道以前QUANTUM为什么会被收购,IBM为什么出售了硬盘部门吗?大量的非法坏盘造成了巨大的负担。
还有比如上面所说的大厂HP、COMPAQ、IBM、SUN、DELL等,盘体采用硬盘生产商的产品,FIRMWARE是自己写的,在这些大厂的FIRMWARE里往往包含一些各自的特有的或专利的技术,价格也是市面的几倍。(打个比方市面的盘就好象用DOS,大厂的盘就是用WINDOWS,UNIX etc.),一些非法商人擅自修改VENDOR ID 和PRODUCT ID,或者抄袭大厂的FIRMWARE,使之和大厂的表面显示一样,从中谋取暴利。
[高朋]:举个例子:美钻二代有三种容量,10G、15G和20G,其实内部都是一个盘片一个磁头,电路板也一样,只是firmware不同而己。谁有本事也可能把10G的改成20G出售。
如果硬盘能够具备改大,剩下的就是FIRMWARE和一些参数了。
因为涉及到行业秘密,我笼统的说一下,硬盘容量的修改要经过FIRMWARE的判定,当LBA值小于等于厂方标定的容量参数时,可以继续。大于时返回错误信息,终止执行指令。JS们首先破解FIRMWARE的着一模块,让他能接受任意参数,剩下的就是用一些工具改变参数了。如果暴力的拆焊编程方式修改就不存在这个问题,但是会破坏当前硬盘的很多预置信息,甚至破坏电路部分,影响硬盘的性能,当然JS为了利益是不会在乎这一点的。
拿某一个型号的硬盘为例,厂方标定的容量参数LBA最大为222EE00(18G),存储方式为00 EE 22 02,有些人居然把它改成了445DC00(36G)存储方式为00 DC 45 04,JS们修改了FIRMWARE后,那样JS就可以在0-36G之间任意修改容量了,当然还要修改别的东西以保证磁头的移位安全。
这是随便举的例子,即使和你的硬盘参数一样,请也不要尝试!
再说一点,为便于理解我会尽量通俗一些,少用一些专用词多打些比方(有的可能不恰当)。
其实可以把硬盘的控制板看成是一台电脑(没有显示器的)它的FIRMWARE存放的EEPROM就相当于一个硬盘,也是分为很多块(BLOCK)的,不同的功能模块占用着这些BLOCK,如果熟悉计算机的BIOS的人就知道BIOS也是很多功能模块(原理一样)。JS们破解相应的模块就可以了,或者删除模块或者把其他的相应模块嵌入到FIRMWARE里。
当前计算机大厂使用的硬盘都在自己的FIRMWARE里嵌入了一些身份识别的东西,如IBM,普通硬盘上去可能就不好管理,用了他自己的硬盘就特别顺,因为在计算机的硬件除了常规的指令请求外还有一些它们内部自己定义的东西。
我的一个同事居然在业余时间写了个函数模块在他的硬盘里,计算机的程序把参数送到硬盘里执行,执行完毕后再把结果返回给计算机。这才是真正的硬盘加密,很多很牛的程序员都无法破解,因为他们就不知道怎样提取分析那个模块,当前对于很大很大部分SCSI硬盘来说,因为FIRMWARE的严格保密,至今还没有能把FIRMWARE上载到计算机的程序,因为FIRMWARE也没有模块来支持这个功能(就是说备份FIRMWARE是不可能的)。当然对于这样的加密,烙铁是非常有用的。
如果大家感兴趣,好好学习并分析FIRMWARE,以后可以自己加个些功能模块在自己的硬盘FIRMWARE里,做个真正的DIY,另外在数据安全上也不要害怕外国人放什么后门的东西在FIRMWARE里了,任重道远啊。
每个硬盘的FIRMWARE其实使用的指令就是它的DSP的指令系统,学会了相关的系统,你也可以编写自己的FIRMWARE。
toot 回复于:2003-12-26 13:18:17
实用:教你看懂SCSI卡里的错误提示
有人问用SCSI卡里的工具时有时候会出现一些错误信息,怎么能看明白?
这里简单说一下,卡里出现的信息往往是对SCSI卡操作过程中的产生的,自带的工具和电脑程序通过ASPI对卡操作是一样的,这牵扯到ASPI的调用函数,ASPI的函数有7个:
1,00H,适配器咨询
2,01H,获取设备类型
3,02H,执行SCSI命令
4,03H,终止SCSI命令
5,04H,复位SCSI设备,这点要说明的是,由于SCSI是多任务处理,如果出错只能终止相应的SCSI命令而不能复位SCSI适配器,强制复位会导致所有的正在处理的任务全部停止运行,上面我贴出的格式化程序里就没有使用任何复位和终止命令,所以,即使在DOS中SCSI设备格式化进程运行的同时可以干别的工作。
6,05H,设置适配卡的参数
7,06H,取得设备的信息。
函数命令执行过程中程序就进入监控过程,监控程序将从ASPI获得的状态字节来判断运行情况,状态字节最常用的有7种:
1,00H,正在处理中。
2,01H,处理成功。
3,02H,SRB被主机取消
4,04H,出错
5,80H,无效的SRB
6,81H,无效的适配器
7,82H,无效的SCSI设备或者设备没有找到。
SRB。SRB是什么东西?我以前的帖子里几次都出现SRB,SRB是由8个字节组成的头标,它包含一定的参数,参数不同,SRB的功能也不一样。
在实际编程操作过程中,对于SRB的状态一定要不断的进行查询,一直到他的值从开始的00H(处理中)变成不是00H(其他状态码)为止。
说明:很多人好象不关心这写基础的东西,总问怎样修改设备的什么LOGO和序列号。我不明白LOGO是什么东西?是不是制造商和产品型号?我现在就这个问题简单说一下,过程从略,希望大家知道可以从编写FIRMWARE并修改FIRMWARE响应的区域就行了。
一般在FIRMWARE中,每个BLOCK都做了CHECKSUM和CRC检查,预防复制过程中出现错误,错误的FIRMWARE会导致升级设备的失败或者设备损坏,升级操作程序一般不做这个检查,这种检查是FIRMWARE在硬盘里运行时自己检查自身的。具体算法我不能多说了,举个例子说明吧,拿IBM的厂家的一款硬盘为例(随便举的例子用来学习使用,不要用以实验,后果自负,还要说明一点,你可能看到的代码是乱码,那是经过加密变换了的,你还要解秘变换才能看到内容),如果要修改VID和PID:[IBM IC35L146UWDY10-0],相应的BLOCK的CHECKSUM和CRC检查代码为1011387F,如果将VID和PID改成了[STOL STOL.COM.CN]那么相应的BLOCK的CHECKSUM和CRC检查代码就应该改变为0C3E1A5E。
hope365 回复于:2003-12-26 13:44:43
好,顶
lsw 回复于:2003-12-26 19:29:46
不错,厉害
afd7189 回复于:2003-12-26 19:44:42
厉害
秋意正浓 回复于:2003-12-26 20:05:39
好,收藏。
弱智 回复于:2003-12-26 20:34:08
不错的,开了眼界。
jsean 回复于:2003-12-28 20:53:33
不错,了解ing。。。
wheel 回复于:2003-12-29 00:29:10
http://bbs.chinaunix.net/forum/45/20031228/231976.html
孤城 回复于:2003-12-31 10:06:44
好文
秋意正浓 回复于:2004-01-04 22:51:39
人家有表明是转贴(ZT)呀!
苦苦寻找 回复于:2004-01-05 13:33:08
zt是转贴??????
我不知道对不起!!!!!!!!!!!!!
雨燕儿 回复于:2004-04-19 17:22:45
SCSI卡是什么?SCSI硬盘和我们平时的用的IDE硬盘有什么不同吗?升级固件用什么硬件设施吗?谢谢大家
胡朝阳 回复于:2005-02-26 18:51:52
各位高手,小弟有一事请教。
我有台机器他的硬盘是由5个硬盘组成的RAID系统,硬盘型号ST15150N.
他们的firmware是0023,我买了一个同样型号的硬盘但firmware不同,
装上去却不能正常工作,数据存不进。是否跟firmware不同有关?如果是的
话如何修改这个firmware?可以出一定的费用,谢谢!
我的邮箱:huzhaoyang@hotmail.com