Тема: Возможно ли защитить код на Lisp

Здравствуйте. Написал для фирмы, где работаю, кучу полезных функций облегчающих проектирование пожарных сигнализаций. Возможно ли каким-то образом защитить код написанных программ на AtoLISP от распространения (проще говоря защитить хоть как-то авторские права).

Re: Возможно ли защитить код на Lisp

Хоть как-то, возможно, а абсолютно - нельзя...

Re: Возможно ли защитить код на Lisp

Да, конечно, хоть как-то можно :))). А конкретнее, чтобы код нельзя было прочитать?

Re: Возможно ли защитить код на Lisp

для начала, можно скомпилировать...

Re: Возможно ли защитить код на Lisp

Виктор, судя по тому, что спрашиваешь "чтоб код нельзя было прочитать", и не знаешь про компиляцию, то ты начинающий LISP-программист. И явно переоцениваешь ценность своего кода.
На этом и других форумах найдешь тысячи функций. Хороших и разных. В том числе сотни таких великолепных, которые действительно заслуживают авторского права. Но их публикуют открыто и бесплатно. Если считают нужным. В том числе, и Евгений Елпанов.
Сравни свои работы с другими, и поймешь, что их и не надо защищать. А если компилировать, то не ради того, чтобы "не украли", а чтобы кто-то совсем бестолковый не привел их в нерабочее состояние. Ради "авторских прав" и декомпилировать не будут - просто, если надо, напишут такое же, только работающее лучше и надежнее. Даже для пожарной сигнализации.

Re: Возможно ли защитить код на Lisp

Спасибо ShaggyDoc за комментарий. Я действительно не специалист в программировании на LISP, но программа действительно очень хорошая (в пределах отведенных для нее задач). А защитить код попросило руководство моей фирмы, т.к программа действительно дает приличный прирост в проектировании, и этой программкой начали пользоваться конкурирующая фирма, хотя официально с ней никто не делился данной програмкой.

Re: Возможно ли защитить код на Lisp

> Виктор
Компиляция - не поможет от переноса программы в другую фирму, а только, частично, защитит программу от изменений внутри кода...
Для защиты программы от переноса в другую фирму, необходим целый комплекс задач, т.е. необходимо найти некие незыблемые параметры в вашей фирме, которые трудно воспроизводятся в других местах и не требуют больших затрат на поддержание. Потом, внутрь программы, встраивается проверка этих параметров в разные места программы, как пример, название домена - разрешение на загрузку программы, совпадение ключа, лежащего в сетевой базе данных с прописанным в программе - разрешение на работу программы...
Готовых советов, никто тебе не даст - любое стандартное решение, через небольшой промежуток времени, начинает ломаться стандартными методами...

Re: Возможно ли защитить код на Lisp

> Виктор
А что могут эти функции?
Если они действительно облегчают процесс разработки проектов пожарки, я бы купил ... по разумной цене;-)
Особенно интересует подсчет спецификаций и синхронизация спецификаций на листах с заказной спецификацией.
В общем, если есть предложения, мой адрес сегодня такой: kp05@list.ru

Re: Возможно ли защитить код на Lisp

А словами алгоритм нельзя описать? Типа рекламного описания. Что там такое автоматизировано, что прирост по времени дает. Это только пожарка?

Re: Возможно ли защитить код на Lisp

> ShaggyDoc
"На этом и других форумах..."
А какие еще форумы есть по AutoCAD, кроме этого и dwg.ru ?

Re: Возможно ли защитить код на Lisp

> Малявка
http://forums.augi.com/forumdisplay.php?f=905
http://www.arcada.com.ua/forum/index.ph … 1dcd3e9823
http://www.theswamp.org/index.php?board=2.0
http://www.cadtutor.net/forum/forumdisplay.php?f=21
http://autolisp-exchange.com/forum/index.php
http://forums.augi.com/forumdisplay.php?f=91

Re: Возможно ли защитить код на Lisp

Eсли говорить о англоязычных, то забыли упомянуть основной...
http://discussion.autodesk.com/forum.jspa?forumID=130
А вообще, мне очень нравится почитывать
http://www.cadxp.com/modules.php?op=mod … amp;fid=15

Re: Возможно ли защитить код на Lisp

Ранее самой популярной была конференция Виктора Ткаченко. Тогда dwg.ru еще не было. Но, после пары аварий и потери материалов, практически умерла. Останки наследника здесь:
http://www.cad.dp.ua/cadboard/

Re: Возможно ли защитить код на Lisp

Но, после пары аварий и потери материалов, практически умерла. Останки наследника...

autocad.ru - там же, его преемник caduser.ru, неумолимо двигается следом...

Re: Возможно ли защитить код на Lisp

> Евгений Елпанов
А может ли лисп при копировании  сам себя изменять или портить или добовлять что-либо не нужное,так ,чтоб им нельзя было бы пользоваться?
Это конечно далеко от идеала, но все таки...

Re: Возможно ли защитить код на Lisp

> Алик
ответил здесь:
https://www.caduser.ru/forum/topic43438.html

Re: Возможно ли защитить код на Lisp

> Евгений Елпанов
Что-то про копирование ничего не нашел!
К сожалению!

Re: Возможно ли защитить код на Lisp

> Алик
Сам по себе лисп не может знать скопировали его или нет. Но как выход можно "привязать" лисп к конкретному компьютеру. В примере Евгения вместо даты можно подставить, например, серийный номер HDD или CPU или MAC адресс.

Re: Возможно ли защитить код на Lisp

> Vovka
Ой, а можно на примере, это очень интересно!
Теоретически понятно, а вот практически, как заставить лисп залезть в компютер и подсмотреть например серийный номер HDD или CPU или MAC адресс и потом сравнить с тем, что внем прописан.
Заранее спасибо!

Re: Возможно ли защитить код на Lisp

> Vovka
*** можно подставить, например, серийный номер HDD или CPU или MAC адресс. ***
Можно ли чистым лиспов(влиспом) без вызова внешних программ добраться до этих характеристик?

Re: Возможно ли защитить код на Lisp

> Алик

> Yuriy
проще всего дело обстоит c типом CPU

(getenv "PROCESSOR_IDENTIFIER")

вот MAC адрес

(defun vk_GetMacAddress
       (/ LocatorObj ServiceObj  ObjectSetObj OutList)
  (setq LocatorObj (vlax-create-object "WbemScripting.SWbemLocator"))
  (setq    ServiceObj
     (vlax-invoke
       LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  )
  (setq    ObjectSetObj
     (vlax-invoke
       ServiceObj
       'ExecQuery
       "SELECT MACAddress FROM Win32_NetworkAdapter"
     )
  )
  (vlax-for Obj    ObjectSetObj
    (setq OutList (cons (vlax-get Obj 'MACAddress) OutList))
  )
  (foreach Obj (list LocatorObj ServiceObj  ObjectSetObj)
    (and Obj (vlax-release-object Obj))
  )
  (vl-remove nil OutList)
)

и хуже всего дело с HDD

(defun vk_GetHDDID (/           LocatorObj      ServiceObj
            ObjectSetObj1  ObjectSetObj2  OutList1
            OutList2
           )
  (setq LocatorObj (vlax-create-object "WbemScripting.SWbemLocator"))
  (setq    ServiceObj
     (vlax-invoke
       LocatorObj 'ConnectServer nil nil nil nil nil nil nil nil)
  )
  (setq    ObjectSetObj1 (vlax-invoke
            ServiceObj
            'ExecQuery
            "Select * from Win32_DiskDrive"
              )
    ObjectSetObj2 (vlax-invoke
            ServiceObj
            'ExecQuery
            "Select * from Win32_PhysicalMedia"
              )
  )
  (vlax-for Obj    ObjectSetObj1
    (setq OutList1 (cons (vlax-get Obj 'Model) OutList1))
  )
  (vlax-for Obj    ObjectSetObj2
    (setq OutList2 (cons (vlax-get Obj 'SerialNumber) OutList2))
  )
  (foreach var (list LocatorObj ServiceObj ObjectSetObj1 ObjectSetObj2)
    (and var (vlax-release-object var))
  )
  (mapcar 'cons OutList1 OutList2)
)

работает только в ХР и не работает с SATA

Re: Возможно ли защитить код на Lisp

> Vovka
Спасибо Vovka!
В ближайшее время опробую.

Re: Возможно ли защитить код на Lisp

!> Vovka (2008-07-28 00:13:40)
Уважаемый  Vovka!
Я очень слаб в лиспе, очень Вас прошу о помощи!
Мне необходимо вставить в существующий лисп проверку MAC адрес и разрешить или запретить использование данного лиспа.
Можно ли привести пример?
С уважением!

Re: Возможно ли защитить код на Lisp

я немного подправил vk_GetMacAddress, что бы исключить wan

(and
  (defun vk_GetMacAddress
     (/ LocatorObj ServiceObj SecurityObj ObjectSetObj OutList)
    (setq LocatorObj (vlax-create-object "WbemScripting.SWbemLocator"))
    (setq ServiceObj
       (vlax-invoke
         LocatorObj         'ConnectServer         nil
         nil       nil     nil       nil         nil
         nil       nil
        )
    )
    (setq ObjectSetObj
       (vlax-invoke
         ServiceObj
         'ExecQuery
         "Select * from Win32_NetworkAdapter"
       )
    )
    (vlax-for Obj ObjectSetObj
      (if (wcmatch (vl-princ-to-string (vlax-get Obj 'AdapterType))
           "Ethernet 802.*"
      )
    (setq OutList (cons (vlax-get Obj 'MACAddress) OutList))
      )
    )
    (foreach Obj (list LocatorObj ServiceObj SecurityObj ObjectSetObj)
      (and Obj (vlax-release-object Obj))
    )
    OutList
  )
  (vl-position "XX:XX:XX:XX:XX:XX" (vk_GetMacAddress))
  (defun C:TEST (/) (alert "Йоу"))
)

вместо "XX:XX:XX:XX:XX:XX" пишете реальный МАСадрес, вместо (defun C:TEST (/) (alert "Йоу")) пишете свою функцию.
все это пишете в файл .lsp и компилируете в .fas

Re: Возможно ли защитить код на Lisp

> Vovka
Огромное спасибо,Vovka, однако, почему-то не работает, пишет:
error: no function definition:
VLAX-CREATE-OBJECT
Спасибо!