FastFiber

Beveiliging LISP

Gestart door bvoorhorst, do 25 10 2007, 19:26:51

Vorige topic - Volgende topic

bvoorhorst

Beste CAD-collega's

Vraagje:
Ik ben in het bezit van nogal persoonlijke handige LISP-routines, deze hebben voor mij nogal een flinke waarde. (tijd wat het gekost heeft om deze te maken). Graag zou ik iets in mijn LISP -routines willen toevoegen dat het werkt t/m bijv. AutoCAD 2007 als beveiliging. Mocht het dan een keer gebeuren dat mijn LISP-routines op straat komen te liggen, dat deze werken t/m bijv. 2007. Dat ik bijv. vanaf 2008 weer iets nieuws kan ontwikkelen of kan her-introduceren.

Of weet iemand anders nog een mogelijkheid om mijn LISP-routines te beveilgen....

*Opmerking: Ik zet mijn LISP om in een .fas bestand, dit lijkt mij niet te wijzigen, toch???

Groeten, Björn

Petperm

#1
Vroeger had je voor zoiets een MsDOS-programma: 'Kelvinate'. De lisp routines werden daardoor onleesbaar en konden toch ingeladen worden in AutoCAD. Ik weet dat het werkte met AutoLisp, maar van VisualLisp ben ik niet zeker.
Kijk in de bijlage voor .zip met de executables. Er is een uitleg in de .txt file
PetPerm

WebRacer

#2
de makkelijkste beveiliging is de volgende:

je voegt al uw lispen toe (in vlisp) aan een project.
je maakt een vlx (= dcl + lsp)
er zit een lisp in met deze lijnen:
(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit)))

(vl-load-com)
(princ "\nOm mijn lispen beetje te beveiligen... graag een paswoord")
(setq psw (getstring "\nGeef het paswoord op:  "))
(IF (/= psw
"quad")
  (progn
    (princ "\nPaswoord is niet correct... helaas")
    (reset-lisp)(exit))
  (princ "\nToegang is in orde veel fun..."))

het paswoord is hoofdlettergevoellig...
hoe werkt het?
in de reset-functie plaats je alle aanwezige functies (defun c:-fincties)... bij een fout paswoord zullen deze commando's niets meer doen
bij een juist paswoord zal alles werken.

Dit is een heel eenvoudige beveiliging, niet zo veilig omdat het paswoord kan doorgegeven worden... maar om straat-taferelen te vermijden is dit goed.

?

HofCAD

#3
Citaat van: bvoorhorst op do 25 10 2007, 19:26:51
Beste CAD-collega's

Vraagje:
Ik ben in het bezit van nogal persoonlijke handige LISP-routines, deze hebben voor mij nogal een flinke waarde. (tijd wat het gekost heeft om deze te maken). Graag zou ik iets in mijn LISP -routines willen toevoegen dat het werkt t/m bijv. AutoCAD 2007 als beveiliging. Mocht het dan een keer gebeuren dat mijn LISP-routines op straat komen te liggen, dat deze werken t/m bijv. 2007. Dat ik bijv. vanaf 2008 weer iets nieuws kan ontwikkelen of kan her-introduceren.

Of weet iemand anders nog een mogelijkheid om mijn LISP-routines te beveilgen....

*Opmerking: Ik zet mijn LISP om in een .fas bestand, dit lijkt mij niet te wijzigen, toch???

Groeten, Björn

Beste Björn,

Inplaats van met een paswoord(wachtwoord) te werken kan je ook in het
voorbeeld van WebRacer ook testen of de AutoCAD variabele _PKSER
juist is.
De getallenreeksen  857-40300647, 857-40508734, 341-58273573,343-72919106
en 345-17363685 zijn bijvoorbeeld de Serial Numbers van AutoCADpakketten
waarop je applicatie mag draaien.

(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit))
)
(setq pks (getvar "_PKSER"))
(if (and (/= pks "857-40300647")(/= pks "857-40508734")
(/= pks "341-58273573") (/= pks "343-72919106")(/= pks "345-17363685"))
  (progn
    (princ "\nGeen goed Serial Number... helaas")
    (reset-lisp)(exit))
  (princ "\nToegang is in orde veel fun..."))


Een alternatief hierop is, dat je bij een bepaald Serial Number
een algoritme een paswoord laat bepalen(versleutelen), wat uitgelezen
wordt in een configuratie file.
In je programma laat je testen of het paswoord uit de configuratie file
past bij het Serial Number van AutoCAD.

Als je met de tijd wil werken dan bijv.
(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit))
)
(setq tijd (rtos (getvar "cdate") 2 6))
(if (/= (substr tijd 1 4) "2007")
  (progn
    (princ "\nU proefjaar is om... helaas")
    (reset-lisp)(exit))
  (princ "\nToegang is in orde veel fun..."))


Als je met de AutoCAD versie wil werken, dan bijv.
(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit))
)
(setq acv (substr (getvar "ACADVER") 1 4))
(if (/= acv "17.0")
  (progn
    (princ "\nWerkt niet bij deze versie... helaas")
    (reset-lisp)(exit))
  (princ "\nToegang is in orde veel fun..."))


Als je met de AutoLisp versie wil werken, dan bijv.

(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit))
)
(if (/= (wcmatch (ver) "*2007*") T)
  (progn
    (princ "\nWerkt niet bij deze versie... helaas")
    (reset-lisp)(exit))
  (princ "\nToegang is in orde veel fun..."))


Natuurlijk kun je ook combinaties van bijv. wachtwoord, serial numbers,
tijd, AutoCAD versies en AutoLisp versies maken.
Waarbij de combinatie van serial numbers met  AutoCAD of  AutoLisp versies
onlogisch is.

Ook kan je met een 'geheim' tekst bestand (bijv. c:\temp\weg.bak) werken,
waarin een wachtwoord staat(bijv. oefening).

(defun reset-lisp ()
  (defun c:lisp1 () (exit))
  (defun c:lisp2 () (exit))
)
(setq fdir (findfile "c:\\temp\\weg.bak"))
(if fdir
(progn (setq fdes (open fdir "r"))
(setq tmp (read-line fdes))
(close fdes)
))
(if (/= tmp "oefening")
(progn
(setq fdir nil tmp nil)
(princ "\nDe applicatie is nog niet geconfigureerd... helaas")
(reset-lisp)(exit))
(progn (setq fdir nil tmp nil)
(princ "\nToegang is in orde veel fun...")))


Ook kan je op je de computers waarop je programma's moeten draaien
een programma zetten, wat vanuit je programma's wordt opgeroepen
en wat een random getal juist moet versleutelen.
Indien je programma's dan de juist versleutelde code terug ontvangt,
lopen je programma's en anders niet.

(defun c:pass( / oke code)
(princ (strcat "\nDe code is " (vl-string-translate "1234567890-" "GxWdEgHAjQZ" (getvar "_pkser"))))
(setq oke nil)
(While (not oke)
(setq code (getstring "\nDe code aub: "))
(if (= (getvar "_pkser")  (vl-string-translate "GxWdEgHAjQZ" "1234567890-" code))
(progn (setq oke T) (princ "\n De code is geaccepteerd.")))
)
(princ)
)


Een ander idee is, om nooit het hoofdprogramma samen met de nevenprogramma's
op een datadrager te zetten; en dus altijd gescheiden te houden.
Indien men alleen het hoofdprogramma heeft , kan men er niets mee aanvangen
en zo ook als men alleen de nevenprogramma's heeft.

Plaats de programma's op een USB stick met een paswoord.

Of plaats de programma's in een word document met een paswoord
en paste de inhoud op de commandoregel.

Of plaats de programma's in een email wat je naar jezelf stuurt.

Met vriendelijke groet,
HofCAD CSI

PS
Met kennis geheim houden, kan je je rijk doen maken of wanen.
Met kennis delen, kan je je hart vullen.
ACADcadabra