63

クライアントが再販するデスクトップ ソフトウェアを開発しています。クライアントは、登録コードが 1 台のコンピューターだけに固有になるように、ソフトウェアを制限したいと考えています。

ネットワーク カードの MAC を使用する以外に、コンピュータを一意に識別するための (Windows と Mac OS X の両方で機能する) 他の手法を持っている人はいますか?

4

15 に答える 15

45

もう 1 つの解決策は、ドングルでライセンス テクノロジを使用することです。これは、ホストの USB または別の I/O ポートに接続する小さなデバイスで、ソフトウェアをアクティブ化するための一意の物理キーとして機能します。

3 つ目の解決策は、ライセンス マネージャーを提供することです。つまり、ソフトウェアが起動すると、ネットワーク上のサーバー (顧客の LAN 上またはインターネット経由でアクセスされる会社) にクエリを実行し、顧客によるソフトウェアの使用が正当であることを検証します。これは「同時ライセンス」に適したソリューションであるため、顧客はソフトウェアを多くのホストにインストールできますが、限られた数のホストで同時に使用するためにライセンスを付与します。 FLEXnet Publisherは、ライセンス管理ソリューションの一例です。

ネットワーク カードの MAC アドレスは、私が以前、特定のホストで実行するソフトウェアのライセンスを取得した会社で働いていたときに使用したソリューションです。

ただし、注意しておきたいのは、この種のライセンスを取得する場合、顧客のライセンスを追跡することが継続的な管理作業になることを予期しなければならないということです。顧客が数百人になると、鍵の変更を求める電話が頻繁にかかってくることに驚かれることでしょう。

「サーバーをギガビット ネットワーク アダプターにアップグレードしましたが、新しいアダプターの MAC アドレスが異なるため、ライセンスが機能しなくなりました。」

そうしないと、顧客がマシン全体を交換し、新しいマシンでソフトウェアを実行するために更新されたライセンスが必要になる場合があります。私が働いていた会社では、ほぼ毎日、これらの電話を受けました。

また、顧客に新しいキーを提供した場合、古いコンピューター (またはネットワーク アダプター) でのソフトウェアの使用を停止するよう顧客を信頼する必要があります。そもそも彼らがライセンスに従うことを信頼できなかった場合、彼らが古いキーを破棄することをどのように信頼できますか?

この管理活動をサポートする方法を計画していない場合は、この方法で製品のライセンスを取得しないでください。とにかく協力してくれた善良な顧客に迷惑をかけるだけです。

于 2009-03-23T00:40:31.633 に答える
10

私はここで悪魔の擁護者を演じて、このようなことはおそらく「公の」場で議論するのが最善ではないことを伝えます.

そうは言っても、他の人が何をしたかを見て、おそらくそれを改善する(またはその一部を取る). あなたが言ったように、MACアドレスはおそらく使用しても問題ありません。Windows などのプログラムはハード ドライブの情報 (シリアル番号) を使用していると聞きました。このサイトによると、Windows アクティベーションは 10 の異なる項目をチェックし、それらを一意のキーにします。

于 2009-03-23T00:25:38.143 に答える
9

私がいじっているアイデアは、ハードウェアに関連するいくつかのシリアル番号または一意の ID を使用し、それらを一緒にハッシュすることです。

アップグレードされるもの: -メモリ -MAC (スプーフィングされる可能性、USB アダプターが接続されるなど)

頻繁にアップグレードされないもの: -CPU -BIOS -マザーボード

WMIC を使用することは、いくつかの情報を取得するための優れた方法です。まず、あまり変更されないものを取得することから始めます。最初の好ましい選択肢として、少なくとも 2 つのシリアル番号またはデバイスのフィンガープリントを生成に使用できるようにしたいと考えています。登録キー。

wmic cpu get DeviceId /format:value

これにより、CPU ID が取得されます。次のコマンドを実行できます。

1 - CPU (cpu:DeviceID) 2 - マザーボード (ベースボード: シリアル番号) 3 - BIOS (bios: シリアル番号)

少なくとも 2 つの入力された値を取得しない場合は、取得します

4 - ネットワーク アダプタ - (nic:MACAddress) 5 - RAM - (memphysical:SerialNumber)

ビジネス ロジックによっては、利用可能な最初の 2 つのシリアル番号を使用して登録番号を作成できます。常に同じ順序に従えば、再インストールしても登録番号は機能しますが、デバイスが変更されたり、ユーザーが登録番号を無効にする ID の変更をセカンダリ コンピュータにインストールします。技術サポートへの電話の量を減らすために、フィンガープリントを作成するハードウェアの量が最小限であるほど、頭痛の種が最小限に抑えられます。また、アップグレードされる可能性が最も低いアイテムをフィンガープリントしようとすると、頭痛の種がさらに軽減されます。私の好みは上の順です。

Diffie-Hellman 鍵交換スキームを使用して、ハードウェア ID をペイロードとしてユーザーに秘密鍵/公開鍵のペアを生成させ、この情報を登録サーバーに渡し、登録サーバーが公開鍵/秘密鍵を使用してペイロードを復号化し、登録キーを計算してエンド ユーザーに返します。私は JWT を使用して、JWT のペイロードに含まれる公開鍵とやり取りするのが好きです。それが役立つことを願っています。

UUID は上記で言及されており、Windows の cmd.exe から以下のコマンドを使用して取得できる優れたアイデアです。

wmic csproduct get UUID /format:value      

免責事項これらのコマンドは Windows 2000 以降でのみ機能すると思いますが、確認する必要があります。2000 未満のシステムで使用できる可能性がありますが、その時点で、これらのデバイスをサポートしないようにしています。幸運を。*PowerShell を支持して WMI は非推奨になっているようです。

Get-CimInstance -ClassName Win32_Processor | Select SerialNumber

Get-CimInstance -ClassName Win32_BaseBoard | Select SerialNumber

Get-CimInstance -ClassName Win32_Bios | Select SerialNumber

Get-NetAdapter -Physical | Where-Object Status -like Up | Select-Object MacAddress

Get CimInstance -ClassName Win32_PhysicalMemory | Select SerialNumber

ネットワーク アダプター コマンドレットは物理アダプターのみをチェックするため、仮想アダプターを使用および操作することはできません。私は、インストールの理由でスペア NIC を交換できないように、稼働中または使用中の最初のアダプターを使用したいと考えています。

Mac の場合:

system_profiler | grep "Serial Number (system)"

Linux (debian) の場合:

sudo dmidecode -t system | grep "Serial Number"

dmidecode と system_profiler には、Windows の wmic と同様のシリアル番号を取得できる他のコンポーネントがあります。私は mac で作業していないので、正確な仕様のリストを確認することはできませんが、LCD (最小公分母) のリストを作成します。3 つのコマンドすべてがアクセスできる部品のシリアル番号がまとめられ、可能性が最も低いものに手入れされています。アップグレードまたは変更する部品。次に、ハッシュされた上位 2 ~ 3 の数字の組み合わせにより、一意のマシン ID が作成されます。この ID は、もう少し堅牢であり、オペレーティング システムが更新されたデバイスでもクロス プラットフォーム アプリをアクティブ化できます。

于 2017-01-23T16:58:51.537 に答える
5

コンピュータが最終的に交換できる多くの部品で構築されていると仮定した場合、コンピュータを一意に識別する確実な方法はありません。

一部のハードウェア部品(MACアドレス、HDDディスクのシリアル番号、マザーボードのシリアルなど)は、「一意性」のいくつかの優れた情報源ですが、クライアントが部品をアップグレードすることを決定したかどうかはご存知かもしれませんが、ライセンスが依存しています...準備してくださいいくつかのカスタマーサポート。また、一部のパーツはスプーフィングされる可能性があることにも注意してください(MACはその1つです)。

オンラインライセンスチェックも良い方法です。サーバー側ですべてを管理し、独自のルール(クライアント/インストールごとのライセンス数、同時実行性など)を定義することもできますが、注意すべき重要な点は、次の場合に何が起こるかです。接続を確立できませんか?

于 2009-03-23T01:01:58.213 に答える
5

MACアドレスを使用してリクエストキーを生成し、ユーザーにクライアントへの登録を要求します。クライアントには、その要求キーを受け取り、ユーザーがソフトウェアをアクティブ化するために使用できるアクティブ化キーを生成する特別なアプリケーションがあります。一度アクティブ化されると、ソフトウェアは機能し、機能するだけです。検証などのために家に電話をかけることはありません。

それが本当の要件だった場合です。私の最初の仕事は、これは悪い考えだとクライアントに納得させることです。

その理由は、これらのスキームが実際にコードのクラックを防ぐことは決してないからです。しかし、彼らはあなたの本物の顧客の生活をより困難にします。私は、彼らの目標を決して達成しない計画(もちろん、政府のサービスを除いて:-)で本物の顧客を困らせるために邪魔にならない他の業界を考えるのは難しいと思います。

あなたがこれをしなければならないなら、私は契約上の義務を果たすためにトークンの努力をするでしょう(しかしあなたのクライアントにこれを言わないでください)。MACアドレス(または、$DEITYコンピューターにネットワークカードがない場合は乱数)を要求キーとして使用し、プログラムを使用しXORてASCII文字列を使用してアクティベーションキーを取得することは、実行可能なアプローチのように思われます。また、ネットワークカード(またはマザーボード)を変更しただけでソフトウェアが非アクティブ化されないようにするため、両方のキーを保存します。これらのキーは同じコンピューターと見なされ、ソフトウェアが機能しなくなった場合は満足できません。

あなたのコードは関係なくクラックされるでしょう(プログラムがゴミである場合を除いて、そうではないと確信しています)-この方法は、クライアントの会社が何らかの理由で応答しなくなった場合に、本物の顧客にソフトウェアを別のマシンに移動する手段を提供します(サポートをドロップします) 、廃業など)。

ハードウェアのビットの一意性に依存するすべてのスキームの主な問題は、顧客がハードウェアのビットを変更することを選択する可能性があることです。

  • ディスクの内容をより大きなハードディスクにゴースト化すると、HDシリアル番号が変更されます。
  • CPUシリアル番号を使用するということは、最新のIntelbigmuthaCPUにアップグレードすることでソフトウェアを強制終了することを意味します。
  • MACアドレスを使用すると、NICを変更できなくなります。

これらはすべて、これらの値を使用してインストール時にキーを作成し、6か月後に変更された値ではなく、そのキーに対してのみチェックすることで修正できます。つまり、リクエストとアクティベーションの値を保存する必要がありますが、アップグレードでは、ユーザーがソフトウェアを再アクティベートするプロセスを実行する必要はありません。私を信じてください、彼らはそれをしなければならないことであなたを軽蔑するでしょう。

于 2009-03-23T01:43:32.247 に答える
2

マザーボード固有のシリアル番号を使用してはどうですか?

于 2014-02-06T19:47:10.760 に答える
1

You might consider a third-party licensing utility which will more likely get this "right" and also provide you (or your client) with additional options should requirements change (and don't they always?). I'd mention some specific ones by name, but I'm really not intimately familiar them.

于 2009-03-23T01:21:47.900 に答える
1

または、単にアクティベーション コードを持たず、EULA に監査権が記載されていることを確認し、監査権を随時行使することもできます。

オラクルに驚異的な働きをします。

于 2012-08-22T02:40:49.147 に答える
1

私が見た限り、CPUにはシリアル番号が刻印されていました。この情報 (PSN、Pentium シリアル番号) は廃止されました。情報はまだ存在する可能性がありますが、少なくとも P3 の世界では存在しませんでした。また、ホストに使用されるメイン インターフェイスの NIC で MAC アドレスを選択することは、現実的な可能性として考慮されるべきだと思います。クライアントが、販売先のホストにイーサネット インターフェイスが存在することを期待していない場合を除きます。

于 2009-03-23T00:29:19.663 に答える
1

私はこれについていくつかの経験があります。私のソリューションでは、クライアントに製品を販売するときにサービス キーを発行します。

クライアントがアプリケーションをインストールするときに、クライアント マシンのマザーボード シリアルを読み取ってキーを生成します。クライアントは、製品をアクティブ化するために、サービス キーとインストール時に生成されたキーを当社の組織に電子メールで送信することになっています。

アクティベーション キーを発行する際に、組織で管理アプリケーションを維持します。特定のサービス キーのキーのアクティベーション キーは 1 つだけ提供されます。

部数を販売し、問題なく動作します。しかしその後、マザーボードのシリアル番号を提供しないコンピューターがいくつか見つかりました。これらのマシンは、マザーボードのシリアル番号として null 値を返します。まだこの問題を解決しようとしています。

于 2011-05-04T07:50:50.023 に答える