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.
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.
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.
We wtorek 21-września-2004 o godzinie 08:06:53 Titin napisał/aJe 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.
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.
We wtorek 21-września-2004 o godzinie 08:06:53 Titin napisał/aJe 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.
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?
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?
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?
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.
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.
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.
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.
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" <clodhug@wanadoo.fr> a écrit dans le message de news:
38b201c49fa1$31222990$a301280a@phx.gbl...
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.
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.