OVH Cloud OVH Cloud

[WD8] No serie du Disque Dur

36 réponses
Avatar
Phil
Bonjour,

De nombreux développeurs utilisent le numéro de série du disque dur comme
une des méthodes anti-piratage.
Je l'utilise en partie moi aussi depuis plusieurs année.

Mais comme l'informatique évolue rapidement et que je suis à mettre en place
une nouvelle méthode de protection logiciel sur un nouveau projet Windev, je
me pose les questions suivantes qui sont toutes inter-reliées en fait;

1. Cette méthode est-elle encore sécuritaire?
2. Est-ce possible de "cloner" le no de série d'un Disque Dur?
3. Si c'est possible, est-ce facile à faire?

Quelqu'un a les réponses?

Réal Phil

10 réponses

1 2 3 4
Avatar
:-\)
Alors là, je ne m'y attendais pas à celle-là ;-(

Finalement il ne reste plus rien...
Même le dongle est facilement contournable (voir les cracks WD9 qui sont
sortis quelques heures après la diffusion de la version par pcsoft).


"Romain PETIT" a écrit dans le message de news:

Dans son message précédent, :-) a écrit :

Le seul élément physique d'un PC proposant un numéro unique est la carté
réseau (adresse MAC).



Sauf qu'on peut également feinter : http://www.klcconsulting.net/smac/

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)



Avatar
Phil
En effet, je constate qu'il existe plusieurs articles pertinents que je
n'avais malheureusement pas trouvé. Et je comprend maintenat pourquoi.
Il y a pas mal de confusion dans le terme "Serial Number". Plusieurs
confondent entre le Volume, le Volume Number et le Hard Disk Serial
Number.

Le site du premier résultat ;
http://www.thecodeproject.com/system/change_drive_sn.asp offre même un
petit programme pour faire cela très facilement. Quelqu'un a osé
l'essayer pour voir si cela fonctionne vraiment?

Par contre, aussi dans les premiers résultats, il y a ce site d'un
expert des disques durs;
http://www.experts-exchange.com/Operating_Systems/Q_21119960.html
qui précise le terme "serial number" (il y en a deux) et qui affirme
que le no de série du disque dur ne peut pas etre modifié.
--------------------------
There is a serial number stored on the ROM of most new hard drives and
this can not be changed.

There is however also what Microsoft call a "Volume Serial Number"
which is a random 4 byte serial number created when formatting a disk,
which helps to distinguish between disks. This value is stored in the
BIOS parameter block which is in the boot sector, sector 1, of the
drive. This value can be changed.
--------------------------
Hors, le petit programme mentionné plus haut montre bien comme Titre
"Volume Serial Number Changer" et c'est donc ce numéro qui est
modifiable et non le no de série intégré sur le ROM du disque dur.

Maintenant, la question finale est, la fonction Windev
fDisqueInfo("C:",fdNuméroDeSérie) donne-t-elle le "Volume Serial
Number" ou le numéro de série brulé dans le ROM du disque dur?

Je me répond : selon le test que je viens de faire cette fonction
Windev donne bien le Volume Serial Number - celui qui peut être
modifié ;-( relativement facilement.
Alors quand l'aide de WD mentionne que "fdNuméroDeSérie = Numéro de
série du disque" c'est plus ou moins vrai.

Il nous faudrait une fonction Windev
fDisqueInfo("C:",fdNuméroDeSérieRomDD) pour lire le VRAI no de série
du disque dur.
Est-ce que cela peut se faire de facon détournée? Je ne sais pas mais
j'ai l'impression que cela règlerait une bonne partie de nos
problèmes de sécurité. Ou bien, se trouver tout simplement d'autres
trucs de sécurité combiné au no de série modifiable ;-( pour ne pas
dépendre uniquement du no de série - maintenant qu'on y voit plus
clair.

D'autres avis sur le sujet?
Avatar
Ducados
Salut,
Pour moi, la routine ci-dessous doit te renvoyer le bon serial number.
FONCTION RécupDD(pNumDD)
// 2) J'identifie le disque dur
LOCAL
xRootPath est une chaîne
xVolNameBuffer est une chaîne ASCIIZ sur 255
xVolNameSize est un entier = 255
xVolSerialNumber est un entier
xMaxCompLenght est un entier
xFileSystFlag est un entier
xFileSystNameBuffer est une chaîne ASCIIZ sur 255
xFileSystNameSize est un entier = 255
// Récupération du No de Série
xPartieHaute est un entier sans signe
xPartieBasse est un entier sans signe
xFlag est un booléen

xRootPath = "C:"
SI fDisqueInfo(xRootPath,fdTypeDisque) >0 ALORS
xFlag = AppelDLL32("KERNEL32", "GetVolumeInformationA", ...
&xRootPath, &xVolNameBuffer, ...
xVolNameSize, &xVolSerialNumber, ...
&xMaxCompLenght, &xFileSystFlag, ...
&xFileSystNameBuffer, xFileSystNameSize)
// Teste le résultat
SI xFlag ALORS
pNumDD = NumériqueVersChaine(HiWord(xVolSerialNumber), "04X") + ...
NumériqueVersChaine(LoWord(xVolSerialNumber), "04X")
FIN
FIN

RENVOYER pNumDD

En esperant t'avoir aidé ?
Salutation Daniel
"Phil" a écrit dans le message de
news:
En effet, je constate qu'il existe plusieurs articles pertinents que je
n'avais malheureusement pas trouvé. Et je comprend maintenat pourquoi.
Il y a pas mal de confusion dans le terme "Serial Number". Plusieurs
confondent entre le Volume, le Volume Number et le Hard Disk Serial
Number.

Le site du premier résultat ;
http://www.thecodeproject.com/system/change_drive_sn.asp offre même un
petit programme pour faire cela très facilement. Quelqu'un a osé
l'essayer pour voir si cela fonctionne vraiment?

Par contre, aussi dans les premiers résultats, il y a ce site d'un
expert des disques durs;
http://www.experts-exchange.com/Operating_Systems/Q_21119960.html
qui précise le terme "serial number" (il y en a deux) et qui affirme
que le no de série du disque dur ne peut pas etre modifié.
--------------------------
There is a serial number stored on the ROM of most new hard drives and
this can not be changed.

There is however also what Microsoft call a "Volume Serial Number"
which is a random 4 byte serial number created when formatting a disk,
which helps to distinguish between disks. This value is stored in the
BIOS parameter block which is in the boot sector, sector 1, of the
drive. This value can be changed.
--------------------------
Hors, le petit programme mentionné plus haut montre bien comme Titre
"Volume Serial Number Changer" et c'est donc ce numéro qui est
modifiable et non le no de série intégré sur le ROM du disque dur.

Maintenant, la question finale est, la fonction Windev
fDisqueInfo("C:",fdNuméroDeSérie) donne-t-elle le "Volume Serial
Number" ou le numéro de série brulé dans le ROM du disque dur?

Je me répond : selon le test que je viens de faire cette fonction
Windev donne bien le Volume Serial Number - celui qui peut être
modifié ;-( relativement facilement.
Alors quand l'aide de WD mentionne que "fdNuméroDeSérie = Numéro de
série du disque" c'est plus ou moins vrai.

Il nous faudrait une fonction Windev
fDisqueInfo("C:",fdNuméroDeSérieRomDD) pour lire le VRAI no de série
du disque dur.
Est-ce que cela peut se faire de facon détournée? Je ne sais pas mais
j'ai l'impression que cela règlerait une bonne partie de nos
problèmes de sécurité. Ou bien, se trouver tout simplement d'autres
trucs de sécurité combiné au no de série modifiable ;-( pour ne pas
dépendre uniquement du no de série - maintenant qu'on y voit plus
clair.

D'autres avis sur le sujet?
Avatar
Gilles G.
Ducados a formulé ce mardi :
Salut,
Pour moi, la routine ci-dessous doit te renvoyer le bon serial number.
FONCTION RécupDD(pNumDD)
// 2) J'identifie le disque dur
LOCAL
xRootPath est une chaîne
xVolNameBuffer est une chaîne ASCIIZ sur 255
xVolNameSize est un entier = 255
xVolSerialNumber est un entier
xMaxCompLenght est un entier
xFileSystFlag est un entier
xFileSystNameBuffer est une chaîne ASCIIZ sur 255
xFileSystNameSize est un entier = 255
// Récupération du No de Série
xPartieHaute est un entier sans signe
xPartieBasse est un entier sans signe
xFlag est un booléen

xRootPath = "C:"
SI fDisqueInfo(xRootPath,fdTypeDisque) >0 ALORS
xFlag = AppelDLL32("KERNEL32", "GetVolumeInformationA", ...
&xRootPath, &xVolNameBuffer, ...
xVolNameSize, &xVolSerialNumber, ...
&xMaxCompLenght, &xFileSystFlag, ...
&xFileSystNameBuffer, xFileSystNameSize)
// Teste le résultat
SI xFlag ALORS
pNumDD = NumériqueVersChaine(HiWord(xVolSerialNumber), "04X") + ...
NumériqueVersChaine(LoWord(xVolSerialNumber), "04X")
FIN
FIN

RENVOYER pNumDD



Tu n'as pas l'impression de réinventer la roue?
C'est exactement la même chose que fdisqueinfo(fdNuméroDeSérie) mais en
hexa ;-)
Avatar
Phil
Malheureusement, je viens de tester cette fonction
et cela donne le meme résultat que la fonction
Windev fDisqueInfo("C:", fdNumeroDeSerie) mais
en Hexadécimal.
Avatar
Gilles G.
Phil a écrit :
Bonjour,

De nombreux développeurs utilisent le numéro de série du disque dur comme
une des méthodes anti-piratage.
Je l'utilise en partie moi aussi depuis plusieurs année.

Mais comme l'informatique évolue rapidement et que je suis à mettre en place
une nouvelle méthode de protection logiciel sur un nouveau projet Windev, je
me pose les questions suivantes qui sont toutes inter-reliées en fait;



C'est un petit ou un gros projet??
Tu penses vraiment avoir des pirates compétents dans ta clientèle?

Ma solution :

Mettre à l'écran le numéro de série du disque dur, mais le hasher en
MD5.
Pour ajouter au n° de série Tu peux éventuellement ajouter les infos
systèmes trouvée ici :
HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor/0

Ainsi ils n'auront aucune idée du numéro ayant servi à faire
l'identification et ne pourront donc pas aller le modifier

Générer une clé avec l'algo de ton choix,
hasher en MD5 puis crypter en caractères non imprimables.
Sauver le tout dans un fichier.

Et à l'ouverture gérer la présence de ce fichier et vérifier si
l'enregistrement est correct.

(Le fait de passer par un fichier est préférable au fait de proposer
une fenêtre d'enregistrement).

Un de mes softs a été piraté, mais tout ce qu'ils ont pu faire c'est
générer quelques clés en brute force (et je n'en vois plus depuis
plusieurs mois, puisque je blackliste à distance, ils ont du se
lasser).
Et à priori, personne de suffisemment compétent n'a voulu se pencher
sur le cas d'un générateur, parce que c'est trop compliqué à faire.

Rien n'est incrackable, mais si tu rends la tâche suffisemment pénible
et que ton soft n'est pas l'un des plus utilisé au monde, tu seras
tranquille.

Sinon il y a tout simplement le principe de l'activation Web.
Quand il y a achat, tu met le numéro origine sur ton site sur la partie
dédiée.
Et ensuite, tu fais des warnings en cas d'activation multiples, et au
besoin tu blacklistes la clé, ton logiciel faisant la vérif périodique
de blacklistage.

Voilà!
Avatar
news
Pour rebondir sur vos problèmes d'identification unique d'un PC, existe t-il
un numérode série unique sur le microprocesseur de l'ordinateur ?.
Et celui-ci peut-il être lu? sans toutefois être modifiable....
Le raisonnement sur le disque dur est pertinent mais il existe des stations
bootables sur le réseau qui ne sont pas équipées de DD.

Par ailleurs, s'il est possible de modifier une adresse physique MAC sur un
réseau local, est-il possible d'avoir 2 PC d'un même réseau avec la même
adresse MAC? (même si les adresses IP sont différentes)?

Si ce n'est pas le cas, seule une copie d'une entreprise à une autre devient
possible. dans ce cas à chaque démarrage d'application pourrait-on envisager
une demande d'autorisation envoyée à l'éditeur du logiciel par internet dans
laquelle figurerai le nom du logiciel et le code client utilisateur et
l'autorisation reviendrai au client par internet en utilisation une adresse
ip préenregistrée...
Bon c'est un peu lourd mais si qq donne une copie du logiciel en configurant
les adresses MAC comme chez lui les demandes d'autorisation de
fonctionnement reviendraient à l'entreprise d'origine (propriétaire) et non
à l'entreprise qui utilise une copie contrefaite.

Autre question : que connaissez-vous de la fiabilité des dongles sur port
usb?


"© ---- FX ---- ©" a écrit dans le message de news:
41ec357c$0$22636$
Bonjour Phil,

De nombreux développeurs utilisent le numéro de série du disque dur comme
une des méthodes anti-piratage.
Je l'utilise en partie moi aussi depuis plusieurs année.


Je l'utilise aussi pour des appli pas très sécurisées.

Mais comme l'informatique évolue rapidement et que je suis à mettre en


place
une nouvelle méthode de protection logiciel sur un nouveau projet Windev,


je
me pose les questions suivantes qui sont toutes inter-reliées en fait;




1. Cette méthode est-elle encore sécuritaire?


Non

2. Est-ce possible de "cloner" le no de série d'un Disque Dur?


Oui et c'est on ne peut plus facile

3. Si c'est possible, est-ce facile à faire?


Il existe des utilitaires pour faire cela très rapidement et depuis très
très longtemps.

Bon dev.

Francis



Avatar
Bertrand
>
Autre question : que connaissez-vous de la fiabilité des dongles sur port
usb?




simple illustration : un crack de l'ensemble windev/webdev 9 était
trouvable sur le net à partir du 25/12 je crois.
Ca illustre parfaitement l'absence totale de sécurité de tous les
systèmes actuels de protection.

Il faut vraiment remettre les choses à leur place et identifier le réel
besoin de la-dite protection.
Tout est cassable, avec des outils que l'on trouve très facilement sur
internent.
Leur utilisation n'est pas à la portée du premier venu, mais de
n'importe qui ayant des connaissances moyennes en programmation et
système...

Quelque soit le système que vous utilisez, il est cassable, plus ou
moins facilement.
Ensuite, c'est juste une réflexion par rapport à votre cible
d'utilisateur...
Si la cible est un milieu professionnel par ex, je trouve que c'est
parfaitement inutile : pour un logiciel utilisé dans le cadre de son
activité, il faut être stupide pour prendre le risque de pirater, et de
se couper par la même occasion de tout recours à un support ou autre
service avancé que peut proposer le fournisseur.

La paranoia sur le piratage est parfois très négative : il y a des
situations ou le piratage est bénéfique, car synonyme de diffusion.
Pour en revenir à notre éditeur, je fais parti de ceux qui pensent que
l'utilisation pirate par une population étudiante par exemple de leur
produit ne leur causerait aucun dommage, au contraire : ils
n'acheteraient jamais le produit, mais peuvent plus tard le préconiser
ou orienter une décision d'achat par la connaissance qu'ils en
auraient.
et donc, franchement, à quoi leur sert (à PC-SOFT) leur dongle et sa
soi-disant protection, à part géner les utilisateurs quand ils
l'oublient ?

Bertrand
Avatar
Phil
Bonjour,

C'est un petit ou un gros projet??



Gros et important pour moi.

Tu penses vraiment avoir des pirates compétents dans ta clientèle?



Pas ma clientèle comme un hacker qui trouverait intéressant de le revendre à
une fraction du prix à ma clientèle.

Ma solution :

Mettre à l'écran le numéro de série du disque dur, mais le hasher en
MD5.
Pour ajouter au n° de série Tu peux éventuellement ajouter les infos
systèmes trouvée ici :
HKEY_LOCAL_MACHINE/Hardware/Description/System/CentralProcessor/0

Ainsi ils n'auront aucune idée du numéro ayant servi à faire
l'identification et ne pourront donc pas aller le modifier



J'utilise une idée semblable.
Le HKEY_LOCAL_MACHINE/Hardware.......Processor/0 offre une possibilité
supplémentaire intéressante.

Générer une clé avec l'algo de ton choix,
hasher en MD5 puis crypter en caractères non imprimables.
Sauver le tout dans un fichier.



Cela ressemble à ce que je fais. Et dans un fichier et encrypté aussi.

plusieurs mois, puisque je blackliste à distance, ils ont du se
lasser).



Ça c'est très intéressant! Je crois que c'est un 'must'.
Je n'ai pas encore essayé cette fonction avec Windev. Est-ce difficile à
mettre en place?

Rien n'est incrackable, mais si tu rends la tâche suffisemment pénible
et que ton soft n'est pas l'un des plus utilisé au monde, tu seras
tranquille.



Je crois bien aussi.
Donc, cela veut tout simplement dire (on le sait maintenant plus que jamais)
de ne pas se fier uniquement au Volume Serial Number.

Sinon il y a tout simplement le principe de l'activation Web.
Quand il y a achat, tu met le numéro origine sur ton site sur la partie
dédiée.
Et ensuite, tu fais des warnings en cas d'activation multiples, et au
besoin tu blacklistes la clé, ton logiciel faisant la vérif périodique
de blacklistage.



L'activation Web n'est pas une option pour l'instant parce qu'il y a encore
des clients qui ne sont pas branchés directement sur Internet au magasin
meme où est installé le logiciel. Il faut penser que le logiciel est vendu à
travers le monde. Mais ces clients ont tous accès à Internet soit de leurs
maisons ou au pire de chez un ami.

L'idée de la blacklist ou du controle des mises à jour me sera
indispensable. J'espère pouvoir arriver à monter un systeme sécuritaire et
efficace.

Je crois bien que mon systeme de protection précédent avec la version Foxpro
était excellente.
La situation est que le projet est rajeunie par une migration vers Windev et
je dois repenser une bonne partie de la sécurité anti-piratage que je veux
différente pour maintenant éviter que le client ait à me telephoner pour
obtenir son code d'activation. Problèmes : frais d'interurbains pour le
clients quand outre-mer (se produit très souvent), décalage horaire et
synchronisation.

Je crois bien pour l'instant que je vais fonctionner de la facon suivante.
Je décris la méthode parce je crois qu'elle peut aider d'autres déveoppeurs
sans me nuire.

Le client telecharge et installe le logiciel démonstrateur; soit depuis
Internet, d'un CD ou autre.
Dès sa premiere utilisation, le démo se génère un numéro de série unique de
15 caractères alphanumerique qu'il crypte et inscrit dans une des 150
rubriques d'un fichier qui contient déjà tout un tas d'autres informations
(crypté ou non) comme le no de TVA, etc....

Ce Code devient la base de l'identification de ce logiciel - mais pas la
seule - et ne change plus.
En excluant les O et les 0 pour éviter la confusion, cela donne un code
suffisamment unique avec plus de 59 trilliard de combinaisons possibles
(33^15). À ce code unique ou numéro de série du logiciel s'ajouterait le no
de version de l'application et le no de série du disque dur "déguisé".

Vient le moment de l'acquisition.
Le client me fait parvenir ses coordonnées et le code unique de son démo.
Le paiement est fait et confirmé (carte de crédit ou virement).
Je prépare le module de mise à jour avec les infos du client (nom, adresse,
etc... crypté) et lui envoie. Ce module vérifie qu'il est bien sur le bon
ordinateur, la bonne version du logiciel et le bon disque dur - si oui, la
mise à jour est faite et le logiciel est débridé.

Le nom et adresse du client (inchangeable par lui) apparait sur tous les
rapports et sur toutes les factures à ses clients.

La verification des parametres valides est faites à quelques endroits
statégiques du logiciel - et régulieremnent (cela prend une fraction de
seconde).
En cas de toute anomalie détectée le logiciel retombe en mode démo - ou
avise que la copie est illégale.

En gros, vous en pensez quoi de cette nouvelle méthode de protection?

Réal Phil
Avatar
DAIREAUX Jean-Baptiste
Je ne connais pas le degrés d'importance de ton logiciel pour ton client.

Mais il peut arriver ceci:

Sur la machine où est installé ton logiciel, ils ont un systeme de
sauvegarde.

ils sauvegardent régulierement leurs données et programmes.

vendredi soir 19h15 la machine meurt (ex elle brule)

samedi matin ils restaurent la sauvegarde sur une machine de secours.

Retombent-t-ils en version demo ?

Doivent-ils récuperer une nouvelle clé ?

Quelle est le délai pour redevenir opérationnel ?

Ce sont des questions a prendre en compte aussi dans le systeme de sécurité.

J.B.D.
1 2 3 4