BSDのユニークなハードウェア署名?

BSDのユニークなハードウェア署名?

たとえば、FreeBSDシステムでどのような独自のハードウェア署名を取得できますか?

私は現在イーサネットMACアドレス(getifaddrs(3))を使用していますが、私たち全員が知っているように、これはifconfigで簡単に変更できます。だから別のもの? sysctlには何もありませんか?

私はこれを行うためにCを使用しています。それで、どこを見るべきかを知ることができれば、おそらくそれを得る方法を見つけることができます。

答え1

最初のアプローチは、次を使用することです。hostid

マニュアルページには次のように記載されています。

32ビット識別子...通常、ローカルコンピュータのDARPAインターネットアドレス

つまり、デバイスの16進IPアドレスです。

これは、誰かが故障したネットワークカードを交換する必要があっても変更されないことを意味します。
これはまた、ネットワークが設定されていない場合、またはコンピュータがプライベートIPアドレスを使用している場合、一意性が保証されないことを意味します。

実際に設定されていない可能性があり、スーパーユーザーが使用またはsethostid変更することもできますsysctl

sysctl -aこの他には、出力で有用なものが見つかりませんkern.hostid
OpenBSDでは使用できますが、hw.uuidFreeBSDでは使用できません。

その後、次のように役立ついくつかのコマンドがあります。

ほとんどは電話で作業します。ioctl関連情報装備

Cでこれを行う必要がある場合は、以下を見てください。ソースコード上記のコマンドの詳細は次のとおりです。

また、見ることができますlibvolume_idまたはlibblkidルートファイルシステムのIDを取得します。ポートなので、基本システムの一部ではありませんが、そのうちの1つは標準デスクトップインストールの一部としてインストールできます。

また見なさい:Unixシリーズシステムで一意のIDを取得する

答え2

Linuxには、メモリモジュール(DMIを介して提供される場合)、ディスク、CPUなどを含む多くの既存のハードウェアからS / Nを抽出するための「dmidecode」というツールがあります。これは役に立つかもしれませんが、実際に機械を交換しなくても、これらの多くが変更される可能性があることに注意してください。

FreeBSDに同じツールがあるかどうかはわかりませんが、空白を埋めることができるものがあると確信しています。

答え3

dmidecode は FreeBSD で使用できます。私はFreeBSD 8.2-RELEASEにdmidecode-2.12をインストールしました。

Linuxシステムなどの完全なハードウェア情報を提供します。

関連情報