たとえば、FreeBSDシステムでどのような独自のハードウェア署名を取得できますか?
私は現在イーサネットMACアドレス(getifaddrs(3))を使用していますが、私たち全員が知っているように、これはifconfigで簡単に変更できます。だから別のもの? sysctlには何もありませんか?
私はこれを行うためにCを使用しています。それで、どこを見るべきかを知ることができれば、おそらくそれを得る方法を見つけることができます。
答え1
最初のアプローチは、次を使用することです。hostid
。
マニュアルページには次のように記載されています。
32ビット識別子...通常、ローカルコンピュータのDARPAインターネットアドレス
つまり、デバイスの16進IPアドレスです。
これは、誰かが故障したネットワークカードを交換する必要があっても変更されないことを意味します。
これはまた、ネットワークが設定されていない場合、またはコンピュータがプライベートIPアドレスを使用している場合、一意性が保証されないことを意味します。
実際に設定されていない可能性があり、スーパーユーザーが使用またはsethostid
変更することもできますsysctl
。
sysctl -a
この他には、出力で有用なものが見つかりませんkern.hostid
。
OpenBSDでは使用できますが、hw.uuid
FreeBSDでは使用できません。
その後、次のように役立ついくつかのコマンドがあります。
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システムなどの完全なハードウェア情報を提供します。