TheSwamp
Code Red => AutoLISP (Vanilla / Visual) => Topic started by: Adesu on September 30, 2007, 07:52:21 PM
-
Hi Alls,
I have a program Autolisp, that code just sold to my friend and change fas file too,my question is..is it possible to can't copy to others computer, I hope that code only save at "A" computer, but can't copy to "B" computer.
-
I'm confused, I thought you said he was a friend.
-
That right sold to my friend, but I want after that sold, that code can not copy to others computer , only my friend.
Maybe my friend send to others her friend.
I'm confused, I thought you said he was a friend.
-
If I wrote a program for my friend, let's say Mark, with the understanding it was
solely for his use and not to be copied to other computers, and I clearly expressed
that to him nothing else would be required.
Friend (frĕnd).
1. A person whom one knows, likes, and trusts.
-
The problem not between "me and my friend", but is it possible to can't copy if that code just save at computer "A" and don't copy again at computer "B".
any idea to can't copy or duplicate
-
I would say no.
If I bought a lisp program, which was registered to me and solely for my use, for me to give copies to anyone else would basically be piracy.
If someone I know wanted a copy of it, I would send them to the website where I bought my copy from so they could purchase a copy for themselves, after all you wouldn't ask him for a copy of his AutoCAD program would you, so why should a commercial lisp program be any different?
-
Hi Andy,
Thanks for your comment, it's clear too.
I would say no.
If I bought a lisp program, which was registered to me and solely for my use, for me to give copies to anyone else would basically be piracy.
If someone I know wanted a copy of it, I would send them to the website where I bought my copy from so they could purchase a copy for themselves, after all you wouldn't ask him for a copy of his AutoCAD program would you, so why should a commercial lisp program be any different?
-
Is it so secret program? :-D You can use Hard drive C: serial number:
(defun Get_Hard_Serial(Path / fsObj hSn abPth)
(vl-load-com)
(if
(and
(setq fsObj(vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth(vl-catch-all-apply 'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path))
); end setq
); end vl-catch-all-error-p
); end not
); end and
(progn
(setq cDrv(vlax-invoke-method fsObj 'GetDrive
(vlax-invoke-method fsObj 'GetDriveName abPth
); end vlax-invoke-method
);end vlax-invoke-method
); end setq
(if
(vl-catch-all-error-p
(setq hSn(vl-catch-all-apply 'vlax-get-property
(list cDrv 'SerialNumber))))
(progn
(vlax-release-object cDrv)
(setq hSn nil)
); end progn
); end if
(vlax-release-object fsObj)
); end progn
); end if
hSn
); end of Get_Hard_Serial
Command: (Get_Hard_Serial "c:")
-1066846693
Or AutoCAD serial number...
-
Have fun trying to maintain n copies of your software going the drive serial number route.
An aside, I've not seen much lisp code in my 25+ years, million+ lines coded experience that truly warranted protecting.
What I find truly amusing is the folks that frequently pose questions of this nature typically don't contribute code to news groups et al, but are more frequently harvesters of others' ingenuity. The irony kills me.
I'm not slaggin' on Adesu, just a general observation.
In my opinion of course.
:ugly:
-
25+ years, million+ lines coded experience that truly warranted protecting.
agreed to what said... x2
now, count to ten.... if you can :-)
-
... but are more frequently harvesters of others' ingenuity.
Ahhh! They're on to me! Must reverse tin-foil hat...
-
I hold about the same opinions as well as the previous authors. But there are exceptions. For example I know the person which writes really complex programs and in the labour contract has a condition that his programs can be used only inside of firm and he has not the right distribute this code, and also undertakes to arrange against copying by other users. Contract is contract...
Let's not laugh. Probably we really do not know all details.
-
Hi ASMI,
I have an idea, like this sample.
(defun Get_Hard_Serial(Path / fsObj hSn abPth)
(vl-load-com)
(if
(and
(setq fsObj(vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth(vl-catch-all-apply 'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path))
); end setq
); end vl-catch-all-error-p
); end not
); end and
(progn
(setq cDrv(vlax-invoke-method fsObj 'GetDrive
(vlax-invoke-method fsObj 'GetDriveName abPth
); end vlax-invoke-method
);end vlax-invoke-method
); end setq
(if
(vl-catch-all-error-p
(setq hSn(vl-catch-all-apply 'vlax-get-property
(list cDrv 'SerialNumber))))
(progn
(vlax-release-object cDrv)
(setq hSn nil)
); end progn
); end if
(vlax-release-object fsObj)
); end progn
); end if
hSn
); end of Get_Hard_Serial
(defun your_code (/ p1 p2 p3 p4)
(setq p1 '(0 0 0))
(setq p2 '(10 0 0))
(setq p3 '(10 5 0))
(setq p4 '(0 5 0))
(command "_pline" p1 p2 p3 p4 "c" "")
(princ)
) ; defun
(defun c:test (/ mycom)
(setq code (Get_Hard_Serial "c:"))
(setq mycom -126236818)
(if
(= mycom code)
(your_code)
(alert "\nInvalid computer set, please contact Adesu")
) ; if
(princ)
) ; defun
Is it so secret program? :-D You can use Hard drive C: serial number:
(defun Get_Hard_Serial(Path / fsObj hSn abPth)
(vl-load-com)
(if
(and
(setq fsObj(vlax-create-object "Scripting.FileSystemObject"))
(not
(vl-catch-all-error-p
(setq abPth(vl-catch-all-apply 'vlax-invoke-method
(list fsObj 'GetAbsolutePathName Path))
); end setq
); end vl-catch-all-error-p
); end not
); end and
(progn
(setq cDrv(vlax-invoke-method fsObj 'GetDrive
(vlax-invoke-method fsObj 'GetDriveName abPth
); end vlax-invoke-method
);end vlax-invoke-method
); end setq
(if
(vl-catch-all-error-p
(setq hSn(vl-catch-all-apply 'vlax-get-property
(list cDrv 'SerialNumber))))
(progn
(vlax-release-object cDrv)
(setq hSn nil)
); end progn
); end if
(vlax-release-object fsObj)
); end progn
); end if
hSn
); end of Get_Hard_Serial
Command: (Get_Hard_Serial "c:")
-1066846693
Or AutoCAD serial number...
-
I protect my lisp programs with a key. During the install process, the end user sends me an ‘Install’ code
that’s generated by hardware mapping similar to the Windows Product Activation. The install code is a
136-bit multi-precision integer, which is stored in little endian byte order as a byte array.
The ‘Install’ code can be represented as a sequence of 17 bytes as in
0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX
0x94 0xAA 0x46 0xD6 0x0F 0xBD 0x2C 0xC8
0x00
Anyway with out getting into too much detail, the bit fields are mapped by
Volume serial number system volume
Network adapter MAC
CD-ROM drive hardware identification
Graphics adapter hardware identification
CPU serial number
Hard drive hardware identification
SCSI host adapter hardware identification
IDE controller hardware identification
Processor model
RAM
The cryptographic algorithm use to encrypt the ‘Install’ code, is a proprietary four-round Feistel cipher.
The result is five alpha numeric strings separated by an “-“, as in
FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK
This would be the key that the end user would enter to activate the product.
There are various check points within the program to verify the machine is authorized.
Dan
-
Hi Daniel,
it's good info, and good trick.
-
You may want to research these threads:
encrypt (http://tinyurl.com/2atwuq)
-
Just make sure on providing a way of transferring the application to any other computer, without asking you every time.
-
I have been thinking about bio fingerprinting, maybe generating some sort of install code from this.
-
I been thinking in something like this.... don't know
-
I been thinking in something like this.... don't know
Oh yeah, now you’re talking, I like it.
-
or this....
-
Well, that would work, if you needed a blood sample for a DNA based key.
-
Well, that would work, if you needed a blood sample for a DNA based key.
:)
OK, now in a sem-serious mode I might end up uploading on my show your stuff forum lisp topic, my locklisp project I did using activelock and visual lisp.... one of these days.
-
A way to get Networkadapter MAC , only test OK with XP WSYS
;;Test OK with XP
;;Use WMI to Get Networkadapter MAC.
;;Author : eachy [eachy@xdcad.net]
;;Web : http://www.xdcad.net
;;2005.11.22(xdl-MACAddress)
(defun xdl-MACAddress (/ mac WMIobj con lox sn)
(if (setq WMIobj (vlax-create-object "wbemScripting.SwbemLocator"))
(progn
(setq
con (vl-catch-all-apply
'vlax-invoke
(list WMIobj 'ConnectServer "." "" "" "" "" "" 128 nil)
)
)
(if (vl-catch-all-error-p con)
(setq
con (vlax-invoke WMIobj 'ConnectServer "." "" "" "" "" "")
)
)
(setq lox (vlax-invoke
con
'ExecQuery
"Select * From Win32_NetworkAdapter"
)
)
(vlax-for item lox
(if (vlax-get item 'NetConnectionID)
(progn
(setq sn (vlax-get item 'MACAddress))
(or
(member sn mac)
(setq mac (cons sn mac))
)
)
)
)
(mapcar 'vlax-release-object
(list lox con WMIobj)
)
)
)
(reverse mac)
)
-
... but are more frequently harvesters of others' ingenuity.
Ahhh! They're on to me! Must reverse tin-foil hat...
Remember - shiny side *out*. Foil has two distinct sides for a reason. Most wear it with the wrong way 'round which just keeps the crazy in rather than out. :ugly:
-
I protect my lisp programs with a key. During the install process, the end user sends me an ‘Install’ code
that’s generated by hardware mapping similar to the Windows Product Activation. The install code is a
136-bit multi-precision integer, which is stored in little endian byte order as a byte array.
The ‘Install’ code can be represented as a sequence of 17 bytes as in
0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX 0xXX
0x94 0xAA 0x46 0xD6 0x0F 0xBD 0x2C 0xC8
0x00
Anyway with out getting into too much detail, the bit fields are mapped by
Volume serial number system volume
Network adapter MAC
CD-ROM drive hardware identification
Graphics adapter hardware identification
CPU serial number
Hard drive hardware identification
SCSI host adapter hardware identification
IDE controller hardware identification
Processor model
RAM
The cryptographic algorithm use to encrypt the ‘Install’ code, is a proprietary four-round Feistel cipher.
The result is five alpha numeric strings separated by an “-“, as in
FFFFF-GGGGG-HHHHH-JJJJJ-KKKKK
This would be the key that the end user would enter to activate the product.
There are various check points within the program to verify the machine is authorized.
Dan
Aha 8-) So cool! Can you post your algorithm,Dan?
-
Anyway with out getting into too much detail, the bit fields are mapped by
Volume serial number system volume
Network adapter MAC
CD-ROM drive hardware identification
Graphics adapter hardware identification
CPU serial number
Hard drive hardware identification
SCSI host adapter hardware identification
IDE controller hardware identification
Processor model
RAM
You're in China, better lock down that keyboard and mouse too.
Now tell us you're J/K'ing, cause some might be taking you seriously.
-
You're in China, better lock down that keyboard and mouse too.
Now tell us you're J/K'ing, cause some might be taking you seriously.
Nonsense
-
You're in China, better lock down that keyboard and mouse too.
Now tell us you're J/K'ing, cause some might be taking you seriously.
What do you mean in this post ? How dare you that ?
So give you a chance to change it...
It has dual meaning, 1) hey dude you forgot 2 other pieces of hardware, 2) reports here state China's software piracy problem is still huge, from 45% to 80% depending on who's reporting, China Daily 2010 or BSA 2009.
No other inference implied.
-
You're in China, better lock down that keyboard and mouse too.
Now tell us you're J/K'ing, cause some might be taking you seriously.
What do you mean in this post ? How dare you that ?
So give you a chance to change it...
It has dual meaning, 1) hey dude you forgot 2 other pieces of hardware, 2) reports here state China's software piracy problem is still huge, from 45% to 80% depending on who's reporting, China Daily 2010 or BSA 2009.
No other inference implied.
? :?
Did I misread your post? Did you have more suggestions about Lock a Lisp Routine ? It looks like your code that have been posted works truely well .Any more codes or ideas? Btw, I just want to talk about this topic ,rather than others.
Xia
-
A simple way to add the lock routine to all your lisps there a DOS command that can help, you can copy two files together to make a third.
You make a batch file you change your serial number etc in one file then its simple
Copy serial+lisp1.lsp protlisp1.lsp
Copy serial+lisp2.lsp protlisp2.lsp
How to stop copying you cant but makes it difficult for them we used serial number and protect, got a phone call asking why the software would not work simple answer was trying to run on a friends computer without paying.
-
A simple way to add the lock routine to all your lisps there a DOS command that can help, you can copy two files together to make a third.
You make a batch file you change your serial number etc in one file then its simple
Copy serial+lisp1.lsp protlisp1.lsp
Copy serial+lisp2.lsp protlisp2.lsp
How to stop copying you cant but makes it difficult for them we used serial number and protect, got a phone call asking why the software would not work simple answer was trying to run on a friends computer without paying.
Using copy command in dos mode is a better way to lock routines.There is no way to decompile it.And "Copy serial+lisp1.lsp =protlisp1.lsp",this is a good idea.
-
Use AutoCAD's loginname as the password to activate the code.
I know it can be easily gotten around...but what a hassle to do so.