在Linux上,我可以使用smartctl
获取硬盘驱动器的供应商,型号,固件版本和序列号:
# smartctl -a /dev/sdb smartctl 5.40 2010-07-12 r3124 [x86_64-unknown-linux-gnu] (local build) Copyright (C) 2002-10 by Bruce Allen, http://smartmontools.sourceforge.net Device: SEAGATE ST9300603SS Version: 0006 Serial number: 6SE1ZCSR0000B121LU63 Device type: disk Transport protocol: SAS
硬盘的序列号(这里是6SE1ZCSR0000B121LU63
)是否保证全球唯一? 它是唯一的特定供应商? 甚至是一个特定的模型?
S / N不保证是唯一的。 但是由于不同的制造商使用不同的scheme来生成S / N,所以它们大多是独特的。 另外制造商没有任何理由制造一个S / N的两个或多个硬盘。 我可以说,如果他们这样做,将使保修回报非常困难。 他们将如何充分利用不同的设备? 这是S / N的目的。
实际上碰撞实际上是不可能的
有些情况下,软件被绑定到HDD模式和S / N。 当硬盘坏了,重新configuration所有的系统会带来很大的痛苦。 在这种情况下,可以select复制旧的硬盘。 需要专门的软件和/或硬件来重写硬盘中的序列号和型号,但是这是可能的。 它可以节省很多时间和/或金钱。
当人们想要在游戏机XBOX上安装更大的硬盘时,他们会在市场上购买更便宜的普通硬盘,然后通过专门的软件调整这些硬盘来适应XBOX。 这个程序改写了HDD的型号,S / N和一些隐藏信息,所以XBOX“认为”硬盘是原厂的。 在这里寻找指导。
如果你真的想获得唯一的硬盘ID,可以尝试用这种接口挖掘硬盘的SAS协议规格和规格。 你会发现有趣的事情
在SAS中,设备和端口名称是传输协议中全球唯一的名称。 端口标识符是端口在域内标识的值,并用作SAS地址。 Phy标识符在设备中是唯一的。
也从这里
SAS域中的每个SAS端口都有一个SCSI端口标识符,用于唯一标识SAS域内的端口。 它由设备制造商分配,就像以太网设备的MAC地址一样,并且通常也是全球唯一的。 SAS设备使用这些端口标识符来解决相互之间的通信问题。
您可以阅读这些ID并使用它们来分散设备。
简短的回答:为了我的目的,我认为他们是独一无二的。
很长的答案:每个制造商都有自己的序列号命名scheme,但不能保证在整个制造商中是全球唯一的,但是每个制造商应该是唯一的,毕竟他们希望能够识别特定的单位。
由于每个人都有自己的模式,实际上碰撞实际上是不太可能的,但是模型和序列号的组合应该是唯一的(只要在生产过程中没有人干扰)。
我认为每个供应商都使用自己的序列化产品,每个序列都是独一无二的。
他们保证是全球独一无二的吗? 可能不是按惯例。
他们很可能是全球独一无二的? 是
此外,大多数时间序列是指示在前面的型号,然后是批号等的序列的总和。
它不是独一无二的机会非常非常渺茫。
序列号根据定义是独特的产品,但是在不知道制造商和产品的情况下,它们本身几乎没有用处。
从技术上讲,序号是从1到无穷大的整数。
其他任何东西都应该被称为识别码,或简称为ID。
硬盘“序列号”是制造商,型号和序列号代码的组合,所以实际上应该是唯一的。
令人惊讶的是,我最近购买了一批华硕笔记本 – 每一个都有相同的硬盘序列号(我用它来保护我的软件)因此,没有任何安全性(基于磁盘序列号)
我正在寻找一种保护我的软件到特定计算机的替代方法
还记得以前的软件是用一个“软件狗”出售的,软件狗必须插入电脑才能运行
我最近做了一些代码,通过驱动序列号来识别使用我们软件的计算机。 在我给新代码的大约11家商店中,有3家商店的硬盘驱动器有重复的序列号。 看来,硬盘序列号不是非常一致的唯一。 显然,我将不得不find另一种方法来唯一标识正在使用的计算机。