Chuyển đến nội dung
Diễn đàn CADViet
  • Thông báo

    • Nguyen Hoanh

      CADViet đã hoàn tất nâng cấp   14/09/2017

      Chào các bạn, CADViet đã hoàn tất việc nâng cấp lên phiên bản mới. Tất cả các chức năng đã hoạt động theo kỳ vọng của ban quản trị. Nếu có vấn đề gì cần phản hồi, các bản post ở đây nhé: Trân trọng, Nguyễn Hoành.
Đăng nhập để thực hiện theo  
vbao

code giới hạn thời gian sử dụng File lisp

Các bài được khuyến nghị

MANHHUNGXDA    458
Chỉ đơn giản là tôi không biết được nội dung của file lisp (c:\cadviet\lisp\archanwoo.lsp), và không được tác động đến file lisp. Còn được tác động đến file lisp thì cấy mã bảo mật vào file đó. Với lại nếu đã biết cấy mã bảo mật vào lisp thì chắc chắn đã biết sử dụng đoạn mã đầu tiên của tôi và không có câu hỏi của Ar_Chanwoo.

 

Cách đầu tiên của tôi (bài viết đầu tiên của tôi trong topic này) chính là điều bạn nói.

 

Anh Hoành ơi cho em hỏi tý!

EM có nhiều file lisp (các lisp đều chạy đưọc ), khi Biến nó thành đuôi VLX, thì có 1 số lệnh không chạy đưọc nghĩa là sao nhỉ

EM biến riêng lênhkhộng chạy đưọc đó thành VLX (Bỏ các file lisp khác) thì nó lại chạy đuợc

 

Nghialã thế nào nhỉ??????????????

Giúp em với

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Nộ Thiên    133
Anh Hoành ơi cho em hỏi tý!

EM có nhiều file lisp (các lisp đều chạy đưọc ), khi Biến nó thành đuôi VLX, thì có 1 số lệnh không chạy đưọc nghĩa là sao nhỉ

EM biến riêng lênhkhộng chạy đưọc đó thành VLX (Bỏ các file lisp khác) thì nó lại chạy đuợc

 

Nghialã thế nào nhỉ??????????????

Giúp em với

Chắc là bị trùng tên hàm rồi.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
MANHHUNGXDA    458
Chắc là bị trùng tên hàm rồi.

 

Lúc đầu thì em cũng nghĩ thế, em đã thay đổi rồi mà đâu có đuợc

Load tất cả các lisp đó (bằng lệnh ap) thi lại đuợc.

Chả hiểu tại sao

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
duy782006    1.372
Anh Hoành ơi cho em hỏi tý!

EM có nhiều file lisp (các lisp đều chạy đưọc ), khi Biến nó thành đuôi VLX, thì có 1 số lệnh không chạy đưọc nghĩa là sao nhỉ

EM biến riêng lênhkhộng chạy đưọc đó thành VLX (Bỏ các file lisp khác) thì nó lại chạy đuợc

 

Nghialã thế nào nhỉ??????????????

Giúp em với

Lisp là do bạn viết hay sưu tầm? Nếu sưu tầm thì tôi đoán thế này.

-Có thể trong các lệnh lisp đó có phần kiểm tra người viết cài vào để kiểm tra nội dung 1 dòng nào đó trong file lisp xem có bị thay đổi không (ví dụ dòng thông báo thông tin về tác giả chẳng hạn).

-Khi bạn cho nó thành file VLX thì khi thực hiện thao tác đọc nội dung trong file lisp bị lổi nên lệnh không tiếp tục chạy được.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Snowman    90
Lúc đầu thì em cũng nghĩ thế, em đã thay đổi rồi mà đâu có đuợc

Load tất cả các lisp đó (bằng lệnh ap) thi lại đuợc.

Chả hiểu tại sao

Tôi nghĩ trong các lisp đó dùng các biến toàn cục có tên trùng nhau, khi đưa tất cả vào vlx thì có sự liên hệ lẫn nhau giữa các biến nên dẫn đến lỗi khi chạy. Bạn phải xem lỗi trả về thì mới biết được do biến nào gây ra.

Nếu là tập hợp những lisp sưu tập tổng hợp thì ko nên đưa vào vlx. Vì để tạo vlx, cần phải viết các lisp một cách hệ thống và có tính toán chứ ko thể tùy ý lộn xộn được.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
MANHHUNGXDA    458

Xin cảm ơn các bác:

Tại em làm như sau:

1- Đoạn trên có 1 đoạn để đo cốt cao độ em lại lây defun là COS

2- Đoạn dưói, có 1 đoạn lisp khác mà cần phải tính COS của 1 góc (tên defun hoàn toàn khác)

thế là 2 ông ấy đá nhau:

THật tức cuời phải không các bác!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
khaosat2009    10
Chỉ đơn giản là tôi không biết được nội dung của file lisp (c:\cadviet\lisp\archanwoo.lsp), và không được tác động đến file lisp. Còn được tác động đến file lisp thì cấy mã bảo mật vào file đó. Với lại nếu đã biết cấy mã bảo mật vào lisp thì chắc chắn đã biết sử dụng đoạn mã đầu tiên của tôi và không có câu hỏi của Ar_Chanwoo.

 

Cách đầu tiên của tôi (bài viết đầu tiên của tôi trong topic này) chính là điều bạn nói.

Xin nhờ bác Hoành giúp em để Test một lisp trong một file lisp đó luôn, vì em không biết chen thế nào cho nó chạy được,

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
khaosat2009    10
Đúng như bác Hòanh nói, khóa được người nay chứ không khóa được người gian. Kinh nghiệm tôi từng làm là tạo ra vài cái khóa liên quan với nhau, kiểu như là dùng vài cái register một lúc và các giá trị của tuân theo một thuật tóan mã hóa nào đó. Còn khi đặt khóa register thì chon những khóa gần giống các khóa đã có sẵn của Windows, các giá tri thì dừng nên dùng số mà dùng chuỗi nhị phân. Cũng chẵng an tòan hơn là bao nhưng có lẽ cũng có tác dụng "tung hỏa mù".

Còn người ngay thì thôi khóa làm gì nữa...

 

Tặng bác đọan code này, sau này có rãnh thì tạo ra vài cái khóa bằng chuỗi nhị phân để nhìn cho "Pro"

(DEFUN N2BIT (n / strbit m i)
 (setq strbit "0")
 (If (> n 0)
(progn
  (while (> n 1)
	(setq m n)
	(setq n (Fix (/ n 2)))
	(setq i (- m (* n 2)))
	(setq strbit (strcat (itoa i) strbit))
  )
  (setq strbit (strcat "1" strbit))
)
(setq strbit "000000000")
 )
 (setq l (strlen strbit))
 (while (< l 9)
(setq strbit (strcat "0" strbit))
(setq l (1+ l))
 )  
 (setq strbit (substr strbit 1 8))  
 strbit   
)
(DEFUN BIT2N (strbit / l n i k)
 (setq n 0)
 (setq l (strlen strbit))
 (setq i 0)
 (while  (< i l)	
(setq k (atoi (substr strbit (+ i 1) 1)))	
(setq n (+ n (* k (expt 2 (- l i 1)))))
(setq i (1+ i))
 )
 n
)

Nhờ Bác giúp và hướng dẫn cho việc mã hóa nhị phân lisp như thế nào với đoạn mã trên.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
tdvn    53
Nhờ Bác giúp và hýớng dẫn cho việc mã hóa nhị phân lisp nhý thế nào với ðoạn mã trên.

Thật là kỳ lạ, nếu các bạn ðã là cao thủ thì sẽ tự nghĩ ra cách khoá, còn các bạn ðang học thì tìm hiểu khoá làm gì. Các bạn nên tập trung công sức ðể viết ra lisp hay thì hõn. Rõ ràng một số bạn trên diễn ðàn khi sýu tầm lisp còn chýa hiểu về lisp, còn chýa biết "biến tấu" một lisp sýu tầm ðc mà ðã nghĩ ðến khóa, chẳng lẽ các bạn khóa lisp mình sýu tầm bằng chính cái khoá sýu tầm ðc, có nên không. Chỉ khi nào phần lớn chýõng trình và những modun quan trọng do bạn viết ra, hãy nghĩ ðến khoá

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
dacvien2009    0
Thật là kỳ lạ, nếu các bạn ðã là cao thủ thì sẽ tự nghĩ ra cách khoá, còn các bạn ðang học thì tìm hiểu khoá làm gì. Các bạn nên tập trung công sức ðể viết ra lisp hay thì hõn. Rõ ràng một số bạn trên diễn ðàn khi sýu tầm lisp còn chýa hiểu về lisp, còn chýa biết "biến tấu" một lisp sýu tầm ðc mà ðã nghĩ ðến khóa, chẳng lẽ các bạn khóa lisp mình sýu tầm bằng chính cái khoá sýu tầm ðc, có nên không. Chỉ khi nào phần lớn chýõng trình và những modun quan trọng do bạn viết ra, hãy nghĩ ðến khoá

:cheers: Không đâu anh, trong quá trình học phải xem và vận dụng các cái hay của các bậc đàn anh. Các anh có đưa ra vấn đề trên, thì xin cho em hỏi tí nhé, Nếu anh có biết , xin chỉ giúp... thương em út nhỏ nha. Nếu chưa biết hảy để các anh khác giúp mình. Khóa là vấn đề rất tế nhị, nhưng có những việc cần phải khóa phải không anh. Tôi đã bị một trường hợp cố ý làm thay đổi nội dung trong lisp , Anh có biệt hậu qủa ra sao không.. ?

Các Lisp ở đây cho ra lò, đều là những bậc thầy, đàn anh viết và gợi ý chỉnh sửa cho ta, chớ có ai khóa đâu mà anh lo không góp nhặt được, những gì đã góp nhặt và đem ứng dụng phải được trân trọng chứ anh. :D

Mong được các anh chỉ cho những vấn đề cần khóa, bảo vệ thực thi trong lisp.

Cám ơn và mong tin giúp đỡ.

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
dacvien2009    0
Ví dụ lệnh CUA nằm trong file c:\cadviet\lisp\archanwoo.lsp nhưng người sử dụng không biết tên lệnh là CUA. Khi người sử dụng lệnh TEST, sẽ tương đương như lệnh CUA, nhưng chỉ được 5 lần sử dụng.

Code như sau:

(load "c:/cadviet/lisp/archanwoo.lsp");
(defun c:TEST()
(c:cua)
;;; Doc gia tri
(setq tmp (getcfg "AppData/CADViet/Count")
sl (cond
((or (not tmp) (= tmp "")) "5")
(t tmp)
)
)

;;; Kiem tra va thong bao
(if (/= sl "0")
(progn
;;; Thuc thi ma lenh
(princ (strcat "\nBan con " sl " lan su dung nua"))
;;; Luu gia tri
(setcfg "AppData/CADViet/Count" (itoa (1- (atoi sl))))
)
(princ "\nBan da het han su dung!")
)

(princ)
)

(defun c:RESET()
;;; Reset lai gia tri
(setcfg "AppData/CADViet/Count" "")
(princ)
)

Thuật toán rất đơn giản, bạn đưa them 1 Function Test (bao gồm đọc, kiểm tra và ghi số lần thực hiện lệnh Cua) rồi đặt tất cả các biểu thức của lệnh Cua trong 1 biểu thúc điều kiện , hoặc vòng lặp while. Sau đó mã hoá toàn bộ dưới dạng .fas Vậy đơn giản và tính bảo mật cao hơn. Tất nhiên với các cao thủ thì vẫn chỉ là .. vải thưa che mắt thánh

Em chưa hiểu lắm :

Nhờ các Anh giúp em chỉ cho một cách để giới hạn 1 file.lsp với đọan mã trên.

Mong được các anh giúp, mong tin :D

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
NvThanh    1

Ví dụ lệnh CUA nằm trong file c:\cadviet\lisp\archanwoo.lsp nhưng người sử dụng không biết tên lệnh là CUA. Khi người sử dụng lệnh TEST, sẽ tương đương như lệnh CUA, nhưng chỉ được 5 lần sử dụng.

Code như sau:

(load "c:/cadviet/lisp/archanwoo.lsp");(defun c:TEST()(c:cua);;; Doc gia tri(setq tmp (getcfg "AppData/CADViet/Count")sl (cond((or (not tmp) (= tmp "")) "5")(t tmp)));;; Kiem tra va thong bao(if (/= sl "0")(progn;;; Thuc thi ma lenh(princ (strcat "\nBan con " sl " lan su dung nua"));;; Luu gia tri(setcfg "AppData/CADViet/Count" (itoa (1- (atoi sl)))))(princ "\nBan da het han su dung!"))(princ))(defun c:RESET();;; Reset lai gia tri(setcfg "AppData/CADViet/Count" "")(princ))

Chào các bác, em xin phép được hỏi lại vấn đề này

Em đã thực hiện như bác Nguyen Hoanh, sau khi có thông báo bạn đã hết hạn sử dụng hưng thực ra các lệnh vẫn thực hiện được, các bác có thể giải thích thêm được không ạ, không biết em sai chỗ nào!

Mong hồi âm !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
npham    75

Bạn phải đặt lệnh gọi hàm chính trong điều kiện kiểm tra đúng, hoặc giải phóng hàm chính đi trong điều kiện kiểm tra sai (nếu hàm chính đã được gọi trước đó).

 

Cụ thể ở trên bạn có thể sửa lại

 

(progn

(princ "\nBan da het han su dung!")

(setq c:cua nil)

)

 

Hoac

 

(defun c:cua () (princ "\nBan da het han su dung!"))

 

Về vấn đề bảo mật file lisp, mình gợi ý thế này:

 

. Đọc thông số 1 thiết bị nào đó trên máy (như CPU ID, MainBoard ID, HDD ID v.v....), tạm gọi là serial.

. Ứng với mỗi serial, bạn có 1 hàm mã hóa riêng xuất ra chuỗi, gọi là pass

. Người sử dụng cần phải nhập đúng pass này vào mới có thể sử dụng được

pass được lưu ở đâu đó trên máy, dưới dạng file, hoặc registry. Khi chạy, phần mềm của bạn sẽ đọc pass , đọc ID và so sánh chuỗi mã hóa ID với pass.

 

Về hạn chế số lần, bạn cũng cần phải mã hóa thông tin.

 

Cuối cùng là biên dịch các lsp ra vlx hoặc fas (các hàm mã hóa phải có thủ thuật chống dịch ngược).

 

Lưu ý: Nếu có mã hóa thì làm chơi để học tập thôi :D, chỉ khóa được người ngay, không khóa được người "gian". Mà người ngay thì khóa làm gì chứ. hehe.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
NvThanh    1

Cảm ơn npham, mình đã thực hiện được rồi, tất nhiên mục đích là học tập và khóa người ngay mà :mellow:

mình còn một vấn đề nữa là nếu mình có 3 file lisp muốn hạn chế số lần thực hiện lệnh thì phải viết lại như thế nào ?

Và còn một vấn đề nữa nếu file của mình không phải là lisp mà là file dll có dùng đoạn code trên được không, mình thử nhưng không được không biết sai chỗ nào mong được học hỏi!

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
NvThanh    1

Cảm ơn npham, mình đã thực hiện được rồi, tất nhiên mục đích là học tập và khóa người ngay mà :mellow:

mình còn một vấn đề nữa là nếu mình có 3 file lisp muốn hạn chế số lần thực hiện lệnh thì phải viết lại như thế nào ?

Và còn một vấn đề nữa nếu file của mình không phải là lisp mà là file dll có dùng đoạn code trên được không, mình thử nhưng không được không biết sai chỗ nào mong được học hỏi!

Mong giúp đỡ !

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
npham    75

Tu nhien khong go TV duoc ????

 

Neu 3 file doc lap co ham doc lap thi ban phai dat ham "test" trong moi file

Neu no duoc goi tu 1 ham f nao do thi ban dat dieu kien trong ham f

file dll : Khong biet ban su dung no theo phuong thuc gi

Noi chung phai cu the moi gop y cho ban duoc.

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
NvThanh    1

Tu nhien khong go TV duoc ????

 

Neu 3 file doc lap co ham doc lap thi ban phai dat ham "test" trong moi file

Neu no duoc goi tu 1 ham f nao do thi ban dat dieu kien trong ham f

file dll : Khong biet ban su dung no theo phuong thuc gi

Noi chung phai cu the moi gop y cho ban duoc.

Ví dụ mình có 3 file :

C:/cadviet/vm.lsp

C:/cadviet/vc.lsp

C:/cadviet/vd.lsp

Mình muốn hạn chế số lần dùng 3 lệnh này

Bạn có thể ví dụ cụ thể đặt hàm test cho 3 file được không

Còn file *.dll mình cũng mốn hạn chế lệnh như file *.lsp có được không ?

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
npham    75

Tu nhien khong go TV duoc ????

 

Neu 3 file doc lap co ham doc lap thi ban phai dat ham "test" trong moi file

Neu no duoc goi tu 1 ham f nao do thi ban dat dieu kien trong ham f

file dll : Khong biet ban su dung no theo phuong thuc gi

Noi chung phai cu the moi gop y cho ban duoc.

 

Tốt hơn hết, bạn nên gọp 3 file lại 1 file sau biên dịch (vlx chẳng hạn)

Còn nếu để 3 file độc lập, thì phải rõ cơ cấu file của bạn chứa gì trong đó, mỗi file là 1 hàm độc lập, hay có liên quan gì nhau không.

 

Còn file dll thì khó đấy. Phải làm trong soucre code. Dịch ra dll rồi sao đếm.

 

Tham khảo:

 

(defun c:vm (/)

;Ham kiem tra 
(defun TEST()
(setq sl (getcfg "AppData/CADViet/Count_vm"))
(cond
 ((= sl "") (setq sl "5"))
 ((<= (atoi sl) 0) (setq sl "1"))
 )
(setcfg "AppData/CADViet/Count_vm" (itoa (1- (atoi sl))))
)
; Ham thuc hien cong viec
(defun hamchinh (/)
(prompt "dang thuc hien lenh")
)
;vm
(if (> (atoi (setq sl (test))) 0)
  	(progn
   	(alert (strcat "Ban con " sl " lan su dung"))
   	(hamchinh)
  	)
  	(progn
	(alert "Het so lan su dung")
  (setq hamchinh nil)
 )
 )
)

  • Vote tăng 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

Đăng nhập để thực hiện theo  

×