Vihung1976 > 12-02-22, 11:16 PM
Vihung1976 > 13-02-22, 12:26 AM
(28-07-18, 10:10 PM)maidinhdan Đã viết:(28-07-18, 11:57 AM)niembui Đã viết: Chào các anh/chị
Mình quan tâm " tạo khóa bản quyền cho file access. Anh chị nào có thể nhận dịch vụ tạo dùm mình code này thì làm ơn cho mình hay nha. email buingocniem@gmail.com. Mình có nhu cầu thực, thù lao thỏa thuận. Xin cảm ơn.
QUY TRÌNH TẠO BẢN QUYỀN (LICENSE PRODUCT) BẢO MẬT ỨNG DỤNG
Hướng dẫn các bạn cách tạo License cho ứng dụng. Sau khi, tạo ứng dụng xong, nếu các bạn muốn phân phối ứng dụng của mình theo License product.
Ở bài viết này, mình hướng dẫn các bạn thuật toán cơ bản để bảo mật ứng dụng.
1. Đầu tiên, mình lấy serial number của HDD. Vì serial number HDD là duy nhất, nên ứng dụng mình cài vào máy tính nào thì chỉ sử dụng được một máy, cài đặt vào ổ cứng khác thì ứng dụng sẽ không hoạt động.
2. Tạo khóa token (chuỗi bảo mật).
3. Sử dụng thuật toán Hex, serial number HDD với token của mình. Bạn có thể sử dụng thuật toán MD5, SHA1 hay 1 thuật toán mã hóa bất kỳ
* Các hàm cần chuẩn bị, gồm:
+ Hàm đọc ổ cứng HDD ( hoặc đọc Mainboard,CPU...cái này tùy vào sở thích mỗi người)
+ Hàm mã hóa ký tự;
+ Hàm giải mã ký tự;
+ Hàm mã hóa sang kiểu Hex
+ Hàm giải mã từ kiểu Hex
+ Hàm Mã hóa key đăng ký
+ Hàm giải mã key đăng ký
+ Hàm kiểm tra cái Key đăng ký hợp lệ không ( để dùng mỗi lần User mở máy lên ta sẽ kiểm tra, nếu hợp lệ thì cho chạy chương trình, không thì Out ngay.
* Modules
Mã PHP:Public Function Mahoa(Data As String, Optional Depth As Integer) As String
Dim TempChar As String, TempAsc As Integer, NewData As String, vChar As Integer
For vChar = 1 To Len(Data)
TempChar = mID$(Data, vChar, 1)
TempAsc = Asc(TempChar)
If Depth = 0 Then Depth = 40
If Depth > 254 Then Depth = 254
TempAsc = TempAsc + Depth
If TempAsc > 255 Then TempAsc = TempAsc - 255
TempChar = Chr(TempAsc)
NewData = NewData & TempChar
Next vChar
Mahoa = NewData
End Function
Mã PHP:Public Function GiaiMa(Data As String, Optional Depth As Integer) As String
Dim TempChar As String, TempAsc As Integer, NewData As String, vChar As Integer
For vChar = 1 To Len(Data)
TempChar = mID$(Data, vChar, 1)
TempAsc = Asc(TempChar)
If Depth = 0 Then Depth = 40
If Depth > 254 Then Depth = 254
TempAsc = TempAsc - Depth
If TempAsc < 0 Then TempAsc = TempAsc + 255
TempChar = Chr(TempAsc)
NewData = NewData & TempChar
Next vChar
GiaiMa = NewData
End Function
Mã PHP:Function DocHDD()
Set Discos = GetObject("WINMGMTS:").InstancesOf("Win32_PhysicalMedia")
For Each Disco In Discos
abc = Disco.SerialNumber
If Len(Trim(abc)) > 0 Then Exit For
Next
DocHDD = Trim(abc)
End Function
Mã PHP:Public Function MahoaToHex(tString As String) As String
Dim i As Integer, S As String
S = ""
For i = 1 To Len(tString)
S = S & Right$("00" & Hex(Asc(mID$(tString, i, 1))), 2)
Next i
MahoaToHex = S
End Function
Function GiaiMaFromHex(strHex As String) As String
Dim lngCount As Long
For lngCount = 1 To Len(strHex) Step 2
GiaiMaFromHex = GiaiMaFromHex & Chr("&h" & mID(strHex, lngCount, 2))
Next
End Function
Mã PHP:'---------------------------------------------------------------------------------------
' Procedure/ Ten thu tuc : Ma Hoa Key Dang ky
' Author/ Nguoi khoi tao : maidinhdan@gmail.com
' Tao tren may tinh User : DANAspireV5
' Date/ Ngay tao : 12/31/2016-13:40
' Purpose/Mo ta :
'---------------------------------------------------------------------------------------
'
Function MaHoaKeyDangky(KeyDangky As String) As String
Dim b1 As String, b2 As String, b3 As String, b4 As String, b5 As String, b6 As String, b7 As String, b8 As String
Dim l As Byte
b1 = KeyDangky
b2 = MahoaToHex(b1)
b3 = Mahoa(b2, 45)
l = Len(b3) / 2
k = Left(b3, Len(b3) - Round(l, 0))
q = mID(b3, Len(b3) - Round(l, 0) + 1)
b4 = q & k
b5 = Mahoa(b4, 120)
b6 = Mahoa(b5, 100)
b7 = Mahoa(b6, 80)
b8 = MahoaToHex(b7)
MaHoaKeyDangky = b8
End Function
Mã PHP:'---------------------------------------------------------------------------------------
' Procedure/ Ten thu tuc : Giai Ma Key Dang ky
' Author/ Nguoi khoi tao : maidinhdan@gmail.com
' Tao tren may tinh User : DANAspireV5
' Date/ Ngay tao : 12/31/2016-13:40
' Purpose/Mo ta :
'---------------------------------------------------------------------------------------
'
Function GiaiMaKeyDangky(KeyDangkyDaMaHoa As String) As String
Dim b1 As String, b2 As String, b3 As String, b4 As String, b5 As String, b6 As String, b7 As String, b8 As String
Dim l As Byte
b1 = KeyDangkyDaMaHoa
b2 = GiaiMaFromHex(b1)
b3 = GiaiMa(b2, 80)
b4 = GiaiMa(b3, 100)
b5 = GiaiMa(b4, 120)
l = Len(b5) / 2
k = Left(b5, Len(b5) - Round(l, 0))
q = mID(b5, Len(b5) - Round(l, 0) + 1)
b6 = q & k
b7 = GiaiMa(b6, 45)
b8 = GiaiMaFromHex(b7)
GiaiMaKeyDangky = b8
End Function
Mã PHP:Function KiemtraKey(KeyKichHoatTable As String) As Boolean
On Error GoTo Loi
'Nhap code vao
If GiaiMaKeyDangky(Nz(KeyKichHoatTable)) = DocHDD Then KiemtraKey = True
'
On Error GoTo 0
Exit Function
Loi:
KiemtraKey = False
End Function
* Sau khi có các hàm cần thiết ta thiết kế 2 form:
1. Form dành cho người dùng đăng ký; khi họ bật lên nó sẽ hiển thị khóa đăng ký, họ phải gửi cho bạn khóa này
2. Form cho bản thân ta, tức là, khi người dùng gửi bạn khóa đăng ký bạn sẽ dùng form này để tìm khóa kích hoạt sử dụng chương trình để gửi cho họ
* Demo minh họa theo link bên dưới:
* Bạn nào có nhu cầu nghiên cứu code xin để lại email để gửi bản mdb không khóa.
Thân mến
maidinhdan > 16-04-22, 12:36 AM