OVH Cloud OVH Cloud

rendre un fichier in-recopiable et inviolable

7 réponses
Avatar
Titin
Je r=E9alise des programmes et je ne souhaite pas qu'ils=20
soient copi=E9s sur un CD ou autre. Je mets des mots de=20
passe dans protection feuille, classeur et dans la=20
protection des macros, mais ils existe des programmes=20
qui, en moins de 2 font sotter ces mots de passe, alors=20
que dois-je faire?
Merci de vos r=E9ponses qui, je n'en doute pas, vont=20
m'aider.

7 réponses

Avatar
Adam Pietrasiewicz
We wtorek 21-wrze¶nia-2004 o godzinie 08:06:53 Titin napisa³/a


Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.



La verite s'enferme en un mot - impossible.

Il n'existe pas de protection inviolable.

--
Pozdrawiam
Adam Pietrasiewicz
Avatar
christophe-pasde
Tout à fait d'accord,

Le pb est d'évaluer quel type de publique ne doit pas avoir accès.
Ensuite il faut penser que le coût d'une protection efficace doit resté
proportionnel au coût du logiciel.

Tu peux parfaitement équiper ton programme d'un DONGLE, ce qui te permet
de resister à pas mal de pirates, mais pour que ça soit rentable, il
faut soit vendre trés cher le logiciel soit en vendre beaucoup, et si
t'en vend beaucoup ça attire l'intérêt des pirates .....

Il n'en reste pas moins que pour des utilisateurs lambda l'usage des
protection d'excel, plus un petit bout de code bien à toi, peut donner
qq chose de pas cher et "efficace", il y a aussi des solutions anti
debugging, générateur de clef etc ...

il y a quelqu'un, sur ce ng, qui a proposer un betatest pour un outil de
se genre, (Google : objet du message "Nouvelle Protection - Cherche beta
testeurs ?").
ou directement sur son site

http://www.ionworx.com/


Christophe

Adam Pietrasiewicz a écrit :


We wtorek 21-września-2004 o godzinie 08:06:53 Titin napisał/a


Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.




La verite s'enferme en un mot - impossible.

Il n'existe pas de protection inviolable.



Avatar
le_troll
Salut l'ami, ça me fait penser à feu le romancier et baron Guy des
Cars, dans le "Faussaire" je crois, où en fait c'est un artiste peintre qui
finit par être recopié, et conclut qu'en fait, s'il est recopié, c'est comme
une reconnaissance, un témoignage de son oeuvre :o)

--
Merci, @+, bye, Joe
troll75 AROBASE iFrance POINT com
------------------------------------------
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !


"Titin" a écrit dans le message de
news:38b201c49fa1$31222990$
Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.
Avatar
jean-marc
"Titin" wrote in message
news:38b201c49fa1$31222990$

Hello,

Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre.



Pourquoi ? Quel est l'intérêt d'un programme qu'on ne peut
pas copier sur un CD ou autre ??

Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?



Si tes programmes ne sont utiles qu'à toi, tu n'as pas de soucis
à te faire: personne ne va essayer de te les prendre, protection ou non.
Une règle d'or: le temps que des personnes seront prêtes à consacrer à
cracker ton programme va être proportionnel à l'intérêt qu'il présente.

Bref, si ton programme a ne serait ce qu'une vague utilité (pour un tiers),
protection ou pas, il sera copié.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
dav
Titin a écrit :
Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.


tu zip le tout avec un mot de passe, tu mets ça sur une clé USB avec
codage, tu ranges la clé dans une armoire forte....
dav
Avatar
Fred
Bonsoir,

Protéger son travail est légitime. Y parvenir est très compliqué. Cependant,
voici quelques trucs pour créer une petite protection de base :

- A l'exécution du programme, on réalise les opérations suivantes :

- On lit le nom de l'ordinateur (COMPUTERNAME) que l'on range dans la
variable, pour l'exemple, szKEY.
- On recherche d'autres identifiants uniques, tels que le nom du disque
dur, son ID... Attention à toujours prendre un élément statique de la
machine. Concaténez ces informations avec votre châine szKEY.
- Encodez cette chaîne avec un message privé.
- Lisez une clé enregistrée dans la base de registre correspondant à une
entrée réservée à votre logiciel.
- Si la clé n'existe pas :
- Demandez à l'utilisateur de vous retourner la clé que vous lui
donnez en la réencodant ou créez une procédure via un serveur Web qui va
poster la clé.
- En retour, après validation, soit automatique, soit manuelle,
vous lui fournissez une clé
- Stockez la valeur de cette clé dans la base de registres et
relancez cette procédure
- Encodez la chaîne avec la clé et comparez le résultat avec la chaîne
magique à obtenir
- Si la chaîne est identique, vous autorisez l'exécution de
l'application, dans le cas contraire, vous fermez votre programme en
indiquant la procédure à suivre pour obtenir une clé valide.

- La procédure qui va vous permettre de générer la clé de retour
consiste à encoder la chaîne reçue avec un code complémentaire pour obtenir
la chaîne magique.

La solidité de cette procédure réside dans la procédure de comparaison
finale. N'hésitez pas à rédiger pleins de fonctions pour offusquer le code.

En résumé, vous générez un numéro de série encodé avec des identifants
propres à la machine de votre utilisateur. Ce numéro de série est ensuite
transmis pour générer un code d'activation. Une fois le code d'activation
entré, il est mémorisé dans la base de registres. A chaque démarrage, le
logiciel vérifie la présence d'une clé valide. Le logiciel ne peut être
copié sur une autre machine puisque le code ne fonctionnera pas ailleurs.

Pour illustrer mon charabiat, voici deux exemples de codes :

Pour générer des codes :

Côté client :

Exemple de création d'une clé :

licenceKey = GetKey(GetBIOSSN & GetUSERInformation & GetUIDisk)


Public Function GetBIOSSN() As String

Dim Bios, BiosSerial, objFSO, objTextFile
On Error Resume Next

For Each Bios In GetObject("winmgmts:").InstancesOf("win32_bios")
BiosSerial = Bios.SerialNumber
Exit For
Next

GetBIOSSN = Trim(BiosSerial)
End Function

Function GetUSERInformation() As String

Dim x As Long
Dim buf As String * 300
On Error Resume Next
x = GetComputerName(buf, 299)
GetUSERInformation = Left(buf, InStr(buf, Chr(0)) - 1)

End Function
Function GetUIDisk() As String

Dim ret As Long
Dim FileHandle As Long
Dim FileInfo As BY_HANDLE_FILE_INFORMATION
Dim lpReOpenBuff As OFSTRUCT
Dim FileTime As SYSTEMTIME
On Error Resume Next

frmSplash.File1 = "c:*.*"
frmSplash.File1.Refresh
fichier = "c:" & frmSplash.File1.List(0)

FileHandle = OpenFile(fichier, lpReOpenBuff, OF_READ)
ret = GetFileInformationByHandle(FileHandle, FileInfo)

ret = FileTimeToSystemTime(FileInfo.ftCreationTime, FileTime)

ret = FileTimeToSystemTime(FileInfo.ftLastAccessTime, FileTime)

ret = FileTimeToSystemTime(FileInfo.ftLastWriteTime, FileTime)

GetUIDisk = FileInfo.dwVolumeSerialNumber

ret = CloseHandle(FileHandle)

End Function

Exemple de chiffrage de la clé :

Function GetKey(ByVal clef As String) As String
dim key1 as string
dim n as integer
dim kk as string
dim i as integer
dim k1 as integer
dim k2 as integer
dim kk2 as string

key1 = ""
n = 1
kk = " "
For i = 1 To Len(clef)
k1 = Asc(Mid(clef, i, 1))
k2 = Asc(Mid(kk, n, 1))
k1 = k1 Xor k2
Mid(kk, n, 1) = Chr(k1)
n = n + 1
If n = 9 Then n = 1
Next i
kk2 = ""
For i = 1 To 8
kk2 = kk2 & Right("00" & Hex(Asc(Mid(kk, i, 1))), 2)
Next i
kk2 = Left(kk2, 4) & "-" & Mid(kk2, 5, 4) & "-" & Mid(kk2, 9, 4) & "-" &
Mid(kk2, 13, 4)

GetKey = kk2

SaveSetting App.EXEName, "Licence", "Key", kk2
End Function

Exemple de vérification de la clé :

function VerifKey(byVal szCode as string) as boolean
dim kk1 as string
dim kk2 as string
dim i as integer
dim t as string

kk1 = GetSetting(App.EXEName, "Licence", "Key", "")
kk2 = szCode

kk1 = Replace(kk1, "-", "")
kk2 = Replace(kk2, "-", "")

For i = 1 To 13
t = t & Chr(Val("&h" & Mid(kk1, i * 2 - 1, 2)) Xor Val("&h" &
Mid(kk2, i * 2 - 1, 2)))
Next i

If t = "MONCODESECRET" Then
VerifKey=true
Else
VerifKeyúlse
End If
end function

Côté serveur ou chez vous :

function GetCode(ByVal cleFournie as String) as String
dim clef as string
dim kk as string
dim x as integer
dim n as integer
dim i as integer
dim c as integer
dim k as string

clef = "MONCODESECRET"
kk = Replace(cleFournie , "-", "")
kk = Left(kk, 16)
x = 1
For i = 1 To 26 Step 2
n = Val("&h" & Mid(kk, i, 2))

c = n Xor Asc(Mid(clef, x, 1))

k = k & Right("00" & Hex(c), 2)
x = x + 1
Next i

GetCode = k
end function

Bons tests,

Frédéric Puteaux.
"Titin" a écrit dans le message de news:
38b201c49fa1$31222990$
Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.
Avatar
Quasimodo
on 9/22/2004, Fred supposed :
Bonsoir,

Protéger son travail est légitime. Y parvenir est très compliqué. Cependant,
voici quelques trucs pour créer une petite protection de base :

- A l'exécution du programme, on réalise les opérations suivantes :

- On lit le nom de l'ordinateur (COMPUTERNAME) que l'on range dans la
variable, pour l'exemple, szKEY.
- On recherche d'autres identifiants uniques, tels que le nom du disque
dur, son ID... Attention à toujours prendre un élément statique de la
machine. Concaténez ces informations avec votre châine szKEY.
- Encodez cette chaîne avec un message privé.
- Lisez une clé enregistrée dans la base de registre correspondant à une
entrée réservée à votre logiciel.
- Si la clé n'existe pas :
- Demandez à l'utilisateur de vous retourner la clé que vous lui
donnez en la réencodant ou créez une procédure via un serveur Web qui va
poster la clé.
- En retour, après validation, soit automatique, soit manuelle,
vous lui fournissez une clé
- Stockez la valeur de cette clé dans la base de registres et
relancez cette procédure
- Encodez la chaîne avec la clé et comparez le résultat avec la chaîne
magique à obtenir
- Si la chaîne est identique, vous autorisez l'exécution de
l'application, dans le cas contraire, vous fermez votre programme en
indiquant la procédure à suivre pour obtenir une clé valide.

- La procédure qui va vous permettre de générer la clé de retour
consiste à encoder la chaîne reçue avec un code complémentaire pour obtenir
la chaîne magique.

La solidité de cette procédure réside dans la procédure de comparaison
finale. N'hésitez pas à rédiger pleins de fonctions pour offusquer le code.

En résumé, vous générez un numéro de série encodé avec des identifants
propres à la machine de votre utilisateur. Ce numéro de série est ensuite
transmis pour générer un code d'activation. Une fois le code d'activation
entré, il est mémorisé dans la base de registres. A chaque démarrage, le
logiciel vérifie la présence d'une clé valide. Le logiciel ne peut être
copié sur une autre machine puisque le code ne fonctionnera pas ailleurs.

Pour illustrer mon charabiat, voici deux exemples de codes :

Pour générer des codes :

Côté client :

Exemple de création d'une clé :

licenceKey = GetKey(GetBIOSSN & GetUSERInformation & GetUIDisk)


Public Function GetBIOSSN() As String

Dim Bios, BiosSerial, objFSO, objTextFile
On Error Resume Next

For Each Bios In GetObject("winmgmts:").InstancesOf("win32_bios")
BiosSerial = Bios.SerialNumber
Exit For
Next

GetBIOSSN = Trim(BiosSerial)
End Function

Function GetUSERInformation() As String

Dim x As Long
Dim buf As String * 300
On Error Resume Next
x = GetComputerName(buf, 299)
GetUSERInformation = Left(buf, InStr(buf, Chr(0)) - 1)

End Function
Function GetUIDisk() As String

Dim ret As Long
Dim FileHandle As Long
Dim FileInfo As BY_HANDLE_FILE_INFORMATION
Dim lpReOpenBuff As OFSTRUCT
Dim FileTime As SYSTEMTIME
On Error Resume Next

frmSplash.File1 = "c:*.*"
frmSplash.File1.Refresh
fichier = "c:" & frmSplash.File1.List(0)

FileHandle = OpenFile(fichier, lpReOpenBuff, OF_READ)
ret = GetFileInformationByHandle(FileHandle, FileInfo)

ret = FileTimeToSystemTime(FileInfo.ftCreationTime, FileTime)

ret = FileTimeToSystemTime(FileInfo.ftLastAccessTime, FileTime)

ret = FileTimeToSystemTime(FileInfo.ftLastWriteTime, FileTime)

GetUIDisk = FileInfo.dwVolumeSerialNumber

ret = CloseHandle(FileHandle)

End Function

Exemple de chiffrage de la clé :

Function GetKey(ByVal clef As String) As String
dim key1 as string
dim n as integer
dim kk as string
dim i as integer
dim k1 as integer
dim k2 as integer
dim kk2 as string

key1 = ""
n = 1
kk = " "
For i = 1 To Len(clef)
k1 = Asc(Mid(clef, i, 1))
k2 = Asc(Mid(kk, n, 1))
k1 = k1 Xor k2
Mid(kk, n, 1) = Chr(k1)
n = n + 1
If n = 9 Then n = 1
Next i
kk2 = ""
For i = 1 To 8
kk2 = kk2 & Right("00" & Hex(Asc(Mid(kk, i, 1))), 2)
Next i
kk2 = Left(kk2, 4) & "-" & Mid(kk2, 5, 4) & "-" & Mid(kk2, 9, 4) & "-" &
Mid(kk2, 13, 4)

GetKey = kk2

SaveSetting App.EXEName, "Licence", "Key", kk2
End Function

Exemple de vérification de la clé :

function VerifKey(byVal szCode as string) as boolean
dim kk1 as string
dim kk2 as string
dim i as integer
dim t as string

kk1 = GetSetting(App.EXEName, "Licence", "Key", "")
kk2 = szCode

kk1 = Replace(kk1, "-", "")
kk2 = Replace(kk2, "-", "")

For i = 1 To 13
t = t & Chr(Val("&h" & Mid(kk1, i * 2 - 1, 2)) Xor Val("&h" &
Mid(kk2, i * 2 - 1, 2)))
Next i

If t = "MONCODESECRET" Then
VerifKey=true
Else
VerifKeyúlse
End If
end function

Côté serveur ou chez vous :

function GetCode(ByVal cleFournie as String) as String
dim clef as string
dim kk as string
dim x as integer
dim n as integer
dim i as integer
dim c as integer
dim k as string

clef = "MONCODESECRET"
kk = Replace(cleFournie , "-", "")
kk = Left(kk, 16)
x = 1
For i = 1 To 26 Step 2
n = Val("&h" & Mid(kk, i, 2))

c = n Xor Asc(Mid(clef, x, 1))

k = k & Right("00" & Hex(c), 2)
x = x + 1
Next i

GetCode = k
end function

Bons tests,

Frédéric Puteaux.
"Titin" a écrit dans le message de news:
38b201c49fa1$31222990$
Je réalise des programmes et je ne souhaite pas qu'ils
soient copiés sur un CD ou autre. Je mets des mots de
passe dans protection feuille, classeur et dans la
protection des macros, mais ils existe des programmes
qui, en moins de 2 font sotter ces mots de passe, alors
que dois-je faire?
Merci de vos réponses qui, je n'en doute pas, vont
m'aider.



Bonjour,
Ca semble cool. Mais bon, je pense qu'avec un programme du type softice
et une manip du type comparaison de deux registres et un saut vers le
registre cible, votre clef tombera asser rapidement. Ce n'est qu'une
simple comparaison de valeur. Peut être je me trompe, mais il existe un
max de tuto sur le net concernant ce type de sécurité et comment la
bypasser. Vous allez mettre plus de temps à créer votre système de
clef, qu'à la bypasser.
!!! Je ne prône pas le piratage mais votre système me laisse un peux
perplexe et je me réfère aux threads précédent : Christophe et
Jean-Marc.

@+ Quaz

--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com