PDA

Показать полную графическую версию : Работа программы до определенной даты


Страниц : 1 [2]

proxy
03-07-2009, 20:34
С программами только определёнными такое прокатит. »
угу, вот про это ))
100% защиты нет, где нить на 90% ..... ) ....и то, по спицифике, по возможностям ))

FlatX007
04-07-2009, 00:19
По IP адресам (@IPAddress1, @IPAddress2 ....) вообще нестоит делать. Я когда пробовал у меня стояла DVB карта и что же я обнаружил IP адресс который был на @IPAddress1 "перепдыл" на @IPAddress2, потом ещё раз поменялся ... :)

malev
04-07-2009, 13:10
Какие бурные дискуссии в теме, еще раз повторю: программа актуальна при работающем интернете.... хотя для общего понятия принципа защиты полезно. Можно попробовать еще с привязкой к серийнику жесткого диска(или еще чего нибудь), а на случай замены активация через инет, отсылка кода активации и получение на его основе регистрационного кода. Все данные конечно шифровать. Пока считаю для себя полезным сообщение Sylver Dragon, буду проверять.

oszip
04-07-2009, 14:18
Индивидуальный ключ для каждого компьютера.
Регистрация ключа - на сервере в интернет.
Время от времени программа сверяет ключ с сервером.
Если что не так - отключается и перестает работать.

Взломать можно только крякнув программу :)

malev
06-07-2009, 22:26
Возникла идея а что если получать время и дату с сайтов времени?! Но для этого нужно знать протокол sntp. Есть варианты его использования? только не командная строка. А пока реализую версию генерации ключа, в файл с шифрованием. Есть еще функции шифрования кроме _stringencrypt?

proxy
06-07-2009, 23:52
Возникла идея а что если получать время и дату с сайтов времени?! »
да уж проще со своего сайта обращение на php который и вернет дату ...да в принципе все что пожелаешь.
хоть отдельные данные для запрашиваемой лицензии ))

_stringencrypt »
не уж то взломал? ;) коль уж так - попробуй это (http://www.autoitscript.com/forum/index.php?showtopic=76976)...тут целый набор вкусностей

malev
07-07-2009, 11:58
свой сайт хорошо, но не у всех есть да и может быть не доступен а серверов времени куча, правда надо знать протокол...
за ссылку спасибо попробуем.

malev
07-07-2009, 14:00
Набросал черновой примерчик, может кому пригодится:
Создает зашифрованный файл ключ с датой действия по заданным параметрам, буду дорабатывать под свою программу, мне проще у меня дата будет жестко задана в программе, а с ключом будет сверяться, при запуске.
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <GuiEdit.au3>
#include <String.au3>
#include <Date.au3>

#Region ### START Koda GUI section ###
$Form1 = GUICreate("Шифровальщик", 341, 175, 199, 115)
$Button1 = GUICtrlCreateButton("Создать ключ...", 239, 113, 89, 22, 0)
$Button2 = GUICtrlCreateButton("Проверить лицензию", 7, 143, 125, 22, 0)
$inpkey = GUICtrlCreateInput("system.key", 7, 114, 217, 21)
GUICtrlSetState(-1, $GUI_DISABLE)
$Edit1 = GUICtrlCreateEdit("", 7, 21, 216, 88)
GUICtrlSetData(-1, @YEAR & "/" & @MON & "/" & @MDAY)
$InputLevel = GUICtrlCreateInput(3,238, 40, 50, 20, 0x2001)
$UpDownLevel = GUICtrlSetLimit(GUICtrlCreateUpdown($InputLevel), 10, 1)
$Input1 = GUICtrlCreateInput("mypassword", 238, 86, 89, 21, BitOR($ES_PASSWORD,$ES_AUTOHSCROLL))
$Label1 = GUICtrlCreateLabel("Что шифруем: формат даты yyyy/MM/dd", 8, 4, 76, 13)
$Label2 = GUICtrlCreateLabel("Уровень шифра:", 240, 21, 88, 17)
$Label3 = GUICtrlCreateLabel("Пароль шифра:", 240, 66, 82, 17)
$Label4 = GUICtrlCreateLabel("Лицензия: ", 145, 148, 170, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
$stringEnc=_StringEncrypt(1, GUICtrlRead($edit1), $Input1, $InputLevel)
$crFile=FileOpen(GUICtrlRead($inpkey),2)
FileWriteLine($crFile,$stringEnc)
FileClose($crFile)
$uncrFile=FileOpen(GUICtrlRead($inpkey),0)
Case $Button2
$uncrFile=FileOpen(GUICtrlRead($inpkey),0)
$uncrData=_StringEncrypt(0,FileReadLine($uncrFile) , $Input1, $InputLevel)
$lic=_DateDiff('d',_NowCalcDate(),$uncrData)
If $lic<0 then
GUICtrlSetData($label4,"Лицензия: просрочена " & $lic & " дня(ей)")
ElseIf $lic=0 then
GUICtrlSetData($label4,"Лицензия истекает сегодня")
Else
GUICtrlSetData($label4,"Лицензия: действ. " & $lic & " дня(ей)")
Endif
EndSwitch
WEnd

Andress
10-12-2010, 17:12
malev, Набросал черновой примерчик, может кому пригодится: »
Собственно вопрос такой - за счёт чево генерируетса по какому алгоритму? - чтото не могу понять где там движок генерации.
Собственно хочу использовать этот движок + вставить ешё свой, а куда воткнуть не пойму?

FlatX007
11-12-2010, 19:22
Собственно вопрос такой - за счёт чево генерируетса по какому алгоритму? - чтото не могу понять где там движок генерации.
Собственно хочу использовать этот движок + вставить ешё свой, а куда воткнуть не пойму? »


Func _StringEncrypt($i_Encrypt, $s_EncryptText, $s_EncryptPassword, $i_EncryptLevel = 1)
If $i_Encrypt <> 0 And $i_Encrypt <> 1 Then
SetError(1, 0, '')
ElseIf $s_EncryptText = '' Or $s_EncryptPassword = '' Then
SetError(1, 0, '')
Else
If Number($i_EncryptLevel) <= 0 Or Int($i_EncryptLevel) <> $i_EncryptLevel Then $i_EncryptLevel = 1
Local $v_EncryptModified
Local $i_EncryptCountH
Local $i_EncryptCountG
Local $v_EncryptSwap
Local $av_EncryptBox[256][2]
Local $i_EncryptCountA
Local $i_EncryptCountB
Local $i_EncryptCountC
Local $i_EncryptCountD
Local $i_EncryptCountE
Local $v_EncryptCipher
Local $v_EncryptCipherBy
If $i_Encrypt = 1 Then
For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
$i_EncryptCountG = ''
$i_EncryptCountH = ''
$v_EncryptModified = ''
For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
$i_EncryptCountH = 1
Else
$i_EncryptCountH += 1
EndIf
$v_EncryptModified = $v_EncryptModified & Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
Next
$s_EncryptText = $v_EncryptModified
$i_EncryptCountA = ''
$i_EncryptCountB = 0
$i_EncryptCountC = ''
$i_EncryptCountD = ''
$i_EncryptCountE = ''
$v_EncryptCipherBy = ''
$v_EncryptCipher = ''
$v_EncryptSwap = ''
$av_EncryptBox = ''
Local $av_EncryptBox[256][2]
For $i_EncryptCountA = 0 To 255
$av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
$av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
Next
For $i_EncryptCountA = 0 To 255
$i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
$v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
$av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
$av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
Next
For $i_EncryptCountA = 1 To StringLen($s_EncryptText)
$i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
$i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
$i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
$v_EncryptCipherBy = BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountA, 1)), $i_EncryptCountE)
$v_EncryptCipher &= Hex($v_EncryptCipherBy, 2)
Next
$s_EncryptText = $v_EncryptCipher
Next
Else
For $i_EncryptCountF = 0 To $i_EncryptLevel Step 1
$i_EncryptCountB = 0
$i_EncryptCountC = ''
$i_EncryptCountD = ''
$i_EncryptCountE = ''
$v_EncryptCipherBy = ''
$v_EncryptCipher = ''
$v_EncryptSwap = ''
$av_EncryptBox = ''
Local $av_EncryptBox[256][2]
For $i_EncryptCountA = 0 To 255
$av_EncryptBox[$i_EncryptCountA][1] = Asc(StringMid($s_EncryptPassword, Mod($i_EncryptCountA, StringLen($s_EncryptPassword)) + 1, 1))
$av_EncryptBox[$i_EncryptCountA][0] = $i_EncryptCountA
Next
For $i_EncryptCountA = 0 To 255
$i_EncryptCountB = Mod(($i_EncryptCountB + $av_EncryptBox[$i_EncryptCountA][0] + $av_EncryptBox[$i_EncryptCountA][1]), 256)
$v_EncryptSwap = $av_EncryptBox[$i_EncryptCountA][0]
$av_EncryptBox[$i_EncryptCountA][0] = $av_EncryptBox[$i_EncryptCountB][0]
$av_EncryptBox[$i_EncryptCountB][0] = $v_EncryptSwap
Next
For $i_EncryptCountA = 1 To StringLen($s_EncryptText) Step 2
$i_EncryptCountC = Mod(($i_EncryptCountC + 1), 256)
$i_EncryptCountD = Mod(($i_EncryptCountD + $av_EncryptBox[$i_EncryptCountC][0]), 256)
$i_EncryptCountE = $av_EncryptBox[Mod(($av_EncryptBox[$i_EncryptCountC][0] + $av_EncryptBox[$i_EncryptCountD][0]), 256)][0]
$v_EncryptCipherBy = BitXOR(Dec(StringMid($s_EncryptText, $i_EncryptCountA, 2)), $i_EncryptCountE)
$v_EncryptCipher = $v_EncryptCipher & Chr($v_EncryptCipherBy)
Next
$s_EncryptText = $v_EncryptCipher
$i_EncryptCountG = ''
$i_EncryptCountH = ''
$v_EncryptModified = ''
For $i_EncryptCountG = 1 To StringLen($s_EncryptText)
If $i_EncryptCountH = StringLen($s_EncryptPassword) Then
$i_EncryptCountH = 1
Else
$i_EncryptCountH += 1
EndIf
$v_EncryptModified &= Chr(BitXOR(Asc(StringMid($s_EncryptText, $i_EncryptCountG, 1)), Asc(StringMid($s_EncryptPassword, $i_EncryptCountH, 1)), 255))
Next
$s_EncryptText = $v_EncryptModified
Next
EndIf
Return $s_EncryptText
EndIf
EndFunc ;==>_StringEncrypt




© OSzone.net 2001-2012