明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5426|回复: 12

[求助][原创]那位高手能够破解这种lisp加密程序

  [复制链接]
发表于 2010-7-18 20:20:00 | 显示全部楼层 |阅读模式

谢谢专家解决问题。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2010-7-18 20:22:00 | 显示全部楼层
用什么解密工具解开本程序。
发表于 2010-7-18 21:54:00 | 显示全部楼层
把所有注释项全都删除就可以了
发表于 2010-7-18 23:24:00 | 显示全部楼层
运行下面的小程序就能去掉以分号开头的行。
  1. (defun c:tt ()
  2. (setq nm (if (/= (type nm) 'STR) "" nm))
  3. (setq nm1 (if (/= (type nm1) 'STR) "" nm1))
  4. (if (setq nm (getfiled "选择源文件" nm "lsp" 4))
  5.   (if (setq nm1 (getfiled "选择保存文件" nm1 "lsp" 1)) (progn
  6.    (setq f1 (open nm "r")
  7.          f2 (open nm "w"))
  8.    (while (setq ll (read-line f1))
  9.     (if (/= (substr ll 1 1) ";") (write-line ll f2))
  10.    )
  11.    (close f1)
  12.    (close f2)
  13.   ))
  14. )
  15. (princ)
  16. )
发表于 2010-7-19 09:09:00 | 显示全部楼层

好像没写入

 

发表于 2010-7-19 10:55:00 | 显示全部楼层
我很久以前的写的lsp文件删除注释工具 试试呢。
清除后效果如下。。
  1. (DEFUN C:AT (/ X Y Z XDAT SS LENG SIZ DSC EXDENT SS2 XDSS XDAT_SS BALLSS         MAT_SEL BH_MAKE QUAD_BALL BALLCFG LAYSEL QUAD_ACT GET_SIZ         BH_STD NORM_PNTS STATUS      )  (SETVAR "blipmode" 0)  (SETQ USO (GETVAR "OSMODE"))  (SETVAR "blipmode" 0)  (SETQ CL (GETVAR "CLAYER"))  (SETQ NWL "BOM")  (SETQ LAYT nil)  (SETQ LAYT (TBLSEARCH "LAYER" NWL))  (IF (NOT LAYT)    (COMMAND "LAYER" "NEW" NWL "")  )  (SETVAR "clayer" NWL)  (SETVAR "CMDECHO" 0)  (DEFUN DTR (A)    (* PI (/ A 180.0))  )  (DEFUN RTD (A)    (/ (* A 180.0) PI)  )  (DEFUN NORM_PNTS (/ ANG ARCA BALLSS Y1 BCX BCY BALLCNT ARK STA ENDA TOTANG          BALLANG X2 X3 Y1 Y2 Y3 STAP ENBH BR STAPX STAPY C ROT       )    (SETQ PT1 (LIST (CAR PT1) (NTH 1 PT1) 0.0))    (SETQ X1 (CAR PT1))    (SETQ Y1 (CAR (CDR PT1)))    (SETQ BALLR (/ (ATOF BALLDIA) 2.0)    ARWS (GETVAR "DIMASZ")    )    (PROGN      (SETVAR "osmode" USO)      (PROGN  (INITGET 1)  (SETQ PT2 (GETPOINT " \nPick a point for arc elbow:"))      )      (PROMPT " \n Pick a point for balloon center:")      (COMMAND "ARC" PT1 PT2 PAUSE)      (SETQ PT3 (GETVAR "LASTPOINT"))      (SETQ ARK (ENTLAST))      (IF OVER  (EXIT)      )      (SETVAR "OSMODE" USO)      (SETQ STA (RTD (CDR (ASSOC 50 (ENTGET ARK)))))      (SETQ ENDA (RTD (CDR (ASSOC 51 (ENTGET ARK)))))      (SETQ ARCA (- STA ENDA))      (SETQ PT4 (TRANS (CDR (ASSOC 10 (ENTGET ARK))) 0 1))      (SETQ BR (CDR (ASSOC 40 (ENTGET ARK))))      (SETQ PT2 (OSNAP PT2 "MID"))      (ENTDEL ARK)      (SETQ MA (RTD (ANGLE PT4 PT2)))      (SETQ C (DISTANCE PT1 PT3))      (SETQ TOTANG (* 2 (RTD (ATAN (/ (/ C 2.0) (SQRT (- (EXPT BR 2)               (EXPT (/ C 2.0) 2)                  )            )           )           )      )       )      )      (SETQ BALLANG (* 2 (RTD (ATAN (/ (/ BALLR 2.0) (SQRT (- (EXPT BR 2)                    (EXPT                    (/ BALLR                       2.0                    ) 2                    )                 )                 )            )            )       )        )      )      (SETQ AA (* 2 (ATAN (/ (/ ARWS 2.0) (SQRT (- (EXPT BR 2)               (EXPT (/ ARWS 2.0) 2)            )            )        )        )         )      )      (SETQ X2 (CAR (TRANS PT3 1 0)))      (SETQ X3 (CAR PT2))      (SETQ Y1 (CAR (CDR PT1)))      (SETQ Y2 (CAR (CDR (TRANS PT3 1 0))))      (SETQ Y3 (CAR (CDR PT2)))      (SETQ STAP (POLAR PT4 (DTR STA) BR))      (SETQ ENBH (POLAR PT4 (DTR ENDA) BR))      (SETQ STAPX (NTH 0 STAP))      (SETQ STAPY (NTH 1 STAP))      (IF (= (RTOS X1 2 4) (RTOS STAPX 2 4))  (SETQ ROT "CW"        AA (* 180 (/ AA PI))  )  (SETQ ROT "CCW"        AA (* -180 (/ AA PI))  )      )      (SETQ AW (* (/ (GETVAR "DIMasz") 0.18) 0.06))      (IF (AND      (> (DISTANCE (INTERS         PT1         PT3         PT2         PT4         nil       ) PT2         ) (DISTANCE PT3 PT4)      )      (< TOTANG 270)    )  (SETQ TOTANG (- 360 TOTANG))      )      (SETQ MID (- (ABS TOTANG) (ABS BALLANG) (ABS AA)))      (IF (= ROT "CCW")  (SETQ MID (* (ABS MID) -1.0))  (SETQ MID (ABS MID))      )      (SETQ USO (GETVAR "osmode"))      (SETVAR "OSMODE" 0)    )  )  (SETQ XDAT nil)  (IF (NOT BALLDIA)    (PROGN      (PROMPT "\nPlease wait, searching for last balloon inserted to pull variables........\n(to override use Balloon settings)")      (IF (SETQ XDSS (SSGET "X" (LIST (QUOTE (-3 ("bhPRO_B"))))))  (PROGN    (SETQ START (CDR (NTH 1 (CDR (LAST (ASSOC -3 (ENTGET                     (SSNAME XDSS                       0                     )                     (QUOTE                      ("bhpro_b")                     )                   )               )               )          )         )          )    )    (IF BALL_OVERIDE      (SETQ BALLDIA (GETCFG "APPDATA/bompro/BALLDIA")      BALL_OVERIDE nil      )      (SETQ BALLDIA (CDR (NTH 0 (CDR (LAST (ASSOC -3 (ENTGET                   (SSNAME XDSS 0)                   (QUOTE                    ("bhpro_b")                   )                 )             )             )              )             )        )      )    )    (SETCFG "APPDATA/bompro/BALLDIA" BALLDIA)    (SETCFG "APPDATA/bompro/start" START)  )  (SETQ BALLDIA (GETCFG "APPDATA/bompro/BALLDIA")        START (GETCFG "APPDATA/bompro/start")  )      )    )  )  (REBOUND)  (WHILE (NOT (= (PROGN       (INITGET 129)       (SETQ PT1 (GETPOINT " \n Pick a point on detail, pick point for Quad balloon or hit enter to EXIT:"))     ) ""        )   )    (SETQ XDAT nil)    (IF (NOT (= PT1 ""))      (PROGN  (IF (SETQ TP (OSNAP PT1 "NEAR"))    (SETQ PT1 TP)  )  (SETQ QUAD nil)  (NORM_PNTS)  (SETVAR "ATTDIA" 0)  (SETVAR "ATTDIA" 1)  (COMMAND)  (IF (NOT QUAD)    (PROGN      (COMMAND "._pline" PT1 "width" "0.0" AW "a" "a" AA "C" PT4         "width" "0.0" "0.0" "a" MID "C" PT4 ""      )    )  )      )    )    (SETQ QUAD nil)  )  (SETVAR "CLAYER" CL)  (SETVAR "osmode" USO)  (PROMPT "\nThank for using a bhPro product... ")  (PRINC))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1明经币 +1 收起 理由
mccad + 1 【好评】好程序

查看全部评分

 楼主| 发表于 2010-7-19 21:46:00 | 显示全部楼层

谢谢专家解决问题。谢谢!

 楼主| 发表于 2010-7-19 22:02:00 | 显示全部楼层
(DEFUN C:AT (/ X Y Z XDAT SS LENG SIZ DSC EXDENT SS2 XDSS XDAT_SS BALLSS MAT_SEL BH_MAKE QUAD_BALL BALLCFG LAYSEL QUAD_ACT GET_SIZ BH_STD NORM_PNTS STATUS) (SETVAR "blipmode" 0) (SETQ USO (GETVAR "OSMODE")) (SETVAR "blipmode" 0) (SETQ CL (GETVAR "CLAYER")) (SETQ NWL "BOM") (SETQ LAYT nil) (SETQ LAYT (TBLSEARCH "LAYER" NWL)) (IF (NOT LAYT) (COMMAND "LAYER" "NEW" NWL "")) (SETVAR "clayer" NWL) (SETVAR "CMDECHO" 0) (DEFUN DTR (A) (* PI (/ A 180.0))) (DEFUN RTD (A) (/ (* A 180.0) PI)) (DEFUN NORM_PNTS (/ ANG ARCA BALLSS Y1 BCX BCY BALLCNT ARK STA ENDA TOTANG BALLANG X2 X3 Y1 Y2 Y3 STAP ENBH BR STAPX STAPY C ROT) (SETQ PT1 (LIST (CAR PT1) (NTH 1 PT1) 0.0)) (SETQ X1 (CAR PT1)) (SETQ Y1 (CAR (CDR PT1))) (SETQ BALLR (/ (ATOF BALLDIA) 2.0) ARWS (GETVAR "DIMASZ")) (PROGN (SETVAR "osmode" USO) (PROGN (INITGET 1) (SETQ PT2 (GETPOINT " \nPick a point for arc elbow:"))) (PROMPT " \n Pick a point for balloon center:") (COMMAND "ARC" PT1 PT2 PAUSE) (SETQ PT3 (GETVAR "LASTPOINT")) (SETQ ARK (ENTLAST)) (IF OVER (EXIT)) (SETVAR "OSMODE" USO) (SETQ STA (RTD (CDR (ASSOC 50 (ENTGET ARK))))) (SETQ ENDA (RTD (CDR (ASSOC 51 (ENTGET ARK))))) (SETQ ARCA (- STA ENDA)) (SETQ PT4 (TRANS (CDR (ASSOC 10 (ENTGET ARK))) 0 1)) (SETQ BR (CDR (ASSOC 40 (ENTGET ARK)))) (SETQ PT2 (OSNAP PT2 "MID")) (ENTDEL ARK) (SETQ MA (RTD (ANGLE PT4 PT2))) (SETQ C (DISTANCE PT1 PT3)) (SETQ TOTANG (* 2 (RTD (ATAN (/ (/ C 2.0) (SQRT (- (EXPT BR 2) (EXPT (/ C 2.0) 2)))))))) (SETQ BALLANG (* 2 (RTD (ATAN (/ (/ BALLR 2.0) (SQRT (- (EXPT BR 2) (EXPT (/ BALLR 2.0) 2)))))))) (SETQ AA (* 2 (ATAN (/ (/ ARWS 2.0) (SQRT (- (EXPT BR 2) (EXPT (/ ARWS 2.0) 2))))))) (SETQ X2 (CAR (TRANS PT3 1 0))) (SETQ X3 (CAR PT2)) (SETQ Y1 (CAR (CDR PT1))) (SETQ Y2 (CAR (CDR (TRANS PT3 1 0)))) (SETQ Y3 (CAR (CDR PT2))) (SETQ STAP (POLAR PT4 (DTR STA) BR)) (SETQ ENBH (POLAR PT4 (DTR ENDA) BR)) (SETQ STAPX (NTH 0 STAP)) (SETQ STAPY (NTH 1 STAP)) (IF (= (RTOS X1 2 4) (RTOS STAPX 2 4)) (SETQ ROT "CW" AA (* 180 (/ AA PI))) (SETQ ROT "CCW" AA (* -180 (/ AA PI)))) (SETQ AW (* (/ (GETVAR "DIMasz") 0.18) 0.06)) (IF (AND (> (DISTANCE (INTERS PT1 PT3 PT2 PT4 nil) PT2) (DISTANCE PT3 PT4)) (< TOTANG 270)) (SETQ TOTANG (- 360 TOTANG))) (SETQ MID (- (ABS TOTANG) (ABS BALLANG) (ABS AA))) (IF (= ROT "CCW") (SETQ MID (* (ABS MID) -1.0)) (SETQ MID (ABS MID))) (SETQ USO (GETVAR "osmode")) (SETVAR "OSMODE" 0))) (SETQ XDAT nil) (IF (NOT BALLDIA) (PROGN (PROMPT "\nPlease wait, searching for last balloon inserted to pull variables........\n(to override use Balloon settings)") (IF (SETQ XDSS (SSGET "X" (LIST (QUOTE (-3 ("bhPRO_B")))))) (PROGN (SETQ START (CDR (NTH 1 (CDR (LAST (ASSOC -3 (ENTGET (SSNAME XDSS 0) (QUOTE ("bhpro_b"))))))))) (IF BALL_OVERIDE (SETQ BALLDIA (GETCFG "APPDATA/bompro/BALLDIA") BALL_OVERIDE nil) (SETQ BALLDIA (CDR (NTH 0 (CDR (LAST (ASSOC -3 (ENTGET (SSNAME XDSS 0) (QUOTE ("bhpro_b")))))))))) (SETCFG "APPDATA/bompro/BALLDIA" BALLDIA) (SETCFG "APPDATA/bompro/start" START)) (SETQ BALLDIA (GETCFG "APPDATA/bompro/BALLDIA") START (GETCFG "APPDATA/bompro/start"))))) (REBOUND) (WHILE (NOT (= (PROGN (INITGET 129) (SETQ PT1 (GETPOINT " \n Pick a point on detail, pick point for Quad balloon or hit enter to EXIT:"))) "")) (SETQ XDAT nil) (IF (NOT (= PT1 "")) (PROGN (IF (SETQ TP (OSNAP PT1 "NEAR")) (SETQ PT1 TP)) (SETQ QUAD nil) (NORM_PNTS) (SETVAR "ATTDIA" 0) (SETVAR "ATTDIA" 1) (COMMAND) (IF (NOT QUAD) (PROGN (COMMAND "._pline" PT1 "width" "0.0" AW "a" "a" AA "C" PT4 "width" "0.0" "0.0" "a" MID "C" PT4 ""))))) (SETQ QUAD nil)) (SETVAR "CLAYER" CL) (SETVAR "osmode" USO) (PROMPT "\nThank for using a bhPro product... ") (PRINC))
 楼主| 发表于 2010-7-19 22:02:00 | 显示全部楼层
怎么我转的是上面的情况呢?谢谢专家解决!
发表于 2010-7-19 22:42:00 | 显示全部楼层
本帖最后由 作者 于 2010-7-20 17:32:18 编辑

去除完注释用lisplink 或者cad自带的visual lisp编辑器优化一下格式就可以了.
很久以前写的了.源码如下.
  1. (defun gps->file-2str(fn / f line re)      (if  (and  (= (type fn) 'STR) (findfile fn))    (progn      (setq f (open (findfile fn) "r") re "")      (while (setq line (read-line f))        (setq re (strcat re line "\n" ))      )      (close f)       re         )    )   )(defun gps->str-2file(str fn / f)      (if  (and  (= (type fn) 'STR) (setq f (open  fn "W")))       (progn        (write-line str f)     (close f)     T   )         )   )(defun gps->open(file / shell)  (vl-load-com)  (setq shell (vlax-create-object "shell.application"))  (vlax-invoke shell "open" file)  (vlax-release-object shell));;;lsp文件删除注释工具 xshrimp V1.0 2007.12.4(defun c:relsp( / file newfilename newstr)(if (setq file (getfiled "选择需要删除注释的lsp文件" "" "lsp" 4))  (progn  (setq newfilename (strcat (vl-filename-directory  file) (vl-filename-base file) "_无注释.lsp"))  (setq newstr (vl-prin1-to-string (read (strcat "(" (gps->file-2str file) ")"))))  (setq newstr (substr newstr 2 (- (strlen newstr) 2)))  (gps->str-2file newstr newfilename)   (gps->open newfilename)  (princ "\nlsp文件删除注释工具 V1.0 2007.12.4")  (princ "\nbug发至xshrimp@163.com.网络U盘http:\\\\shlisp.ys168.com")  (princ "\n启动命令名relsp")  (princ)    )))
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-2 12:34 , Processed in 0.195540 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表