烟盒迷唇 发表于 2018-5-17 10:19:20

不错的资料

luqzcm 发表于 2018-5-17 19:44:53

luqzcm 发表于 2018-5-16 20:50
出现提示:; 错误: 此类型的 LISP 值不能强制转换成 VARIANT:11130

好像是这个语句的问题:(vlax-safe ...

CAD2014

hhh454 发表于 2018-5-18 08:23:40

很厉害,最近也是发现,精简版的CAD都会出现小问题,还是用完整版好点

mokson 发表于 2018-5-19 19:43:30

本帖最后由 mokson 于 2018-5-19 19:45 编辑

如果 vlx 解密为 lsp 就好了。

ttwell 发表于 2018-5-22 12:36:36

感謝樓主的分享
可惜的是,還是可以被解密...

mycad 发表于 2019-8-2 07:47:15

请问楼主,lisp问编译为vlx与楼主加密有啥区别?

烟盒迷唇 发表于 2020-2-5 13:23:45

加密之后编译了用不了呀

wzg356 发表于 2020-11-13 21:32:29

这个加密没问题的,也是cad内部文件的一ge保护模式,故必须有第一句,加密后的把那一句去掉也不行了

算半公开的,以前有人专门写过论文

以前黄明儒在晓东发过一个老外的,但不全,这个是根据那个写的

434939575 发表于 2021-6-26 22:00:20

请问下如果加密了一段代码。能调用就好了。

流氓兔 发表于 2022-2-11 09:39:43

//lsp文件加密文件的解密:

bool unProtected_Lisp_1()

{undefined

char fin;

char fou;

// 选择的文件名称

CString lv_strFileName = _T("");

// 设置文件过滤格式

CString lv_strFilterLSP = _T("lsp文件(*.lsp)|*.lsp|");

CString lv_strFileFilter = lv_strFilterLSP;

// 设置文件后缀名称

CString lv_strName[] = {"", "lsp",""};

CString lv_strExtension = _T("");

CString m_strFilePathName;

CString m_strFileName;

CString m_strExtName;

// 打开保存文件对话框

CFileDialog lv_FileOpenDlg(FALSE, NULL, NULL, OFN_HIDEREADONLY, lv_strFileFilter);

lv_FileOpenDlg.m_ofn.lpstrTitle   =   "【LISP文件解密】 选择已加密的LISP文件:";

if (IDOK != lv_FileOpenDlg.DoModal())

{undefined

return false;

}

else

{undefined

//CString CFileDialog::GetPathName :得到完整文件名,包括目录名和扩展名如:c:/test/test1.txt

//CString CFileDialog::GetFileName :得到完整文件名,包括扩展名如:test1.txt

//CString CFileDialog::GetFileExt:得到完整文件扩展名,如:txt

//CString CFileDialog::GetFileTitle:得到完整文件名,不包括目录名和扩展名如:test1

m_strFilePathName = lv_FileOpenDlg.GetPathName();

m_strFileName = lv_FileOpenDlg.GetFileName();

m_strExtName = lv_FileOpenDlg.GetFileExt();

strcpy(fin,((LPSTR&)m_strFilePathName));

CString m_strOutFilePathName=m_strFilePathName.Left(m_strFilePathName.GetLength()-4);

m_strOutFilePathName.Replace("_pro","");

m_strOutFilePathName+="_res.lsp";

strcpy(fou,((LPSTR&)m_strOutFilePathName));

}

//

FILE *in_file,*out_file;

//register char zf1,zf2;

in_file=fopen(fin,"rb");

if(in_file==NULL)

{undefined

AfxMessageBox("\n不能打开LISP已加密的源文件!");

return false;

}

CString strINdex;

fgets((LPSTR&)strINdex, 28, in_file);

if(strINdex.Find("PROTECTED LISP")==-1)

{undefined

fclose(in_file);

AfxMessageBox("\nLISP文件没有加密,不用解密!");

return false;

}

out_file=fopen(fou,"wb");

if(out_file==NULL)

{undefined

fclose(in_file);

AfxMessageBox("\n不能建立LISP解密文件!");

return false;

}

//30:1Bytes,存储密码字符,如'A'

//fputc('A',out_file);

unsigned char pass_ch;

long strPass=30;

fseek(in_file,strPass,SEEK_SET);

pass_ch=fgetc(in_file);

//fputs(";;AutoCAD unPROTECTED LISP file",out_file);//27个

//fputs("\0x0D\0x0A",out_file);

//putc(0x0A,out_file);//27个 0x0A

//printf("strPass=%s\n",pass_ch);

//CString strFormat;

//strFormat.Format("strPass=%d\n",pass_ch);

//AfxMessageBox(strFormat);

int nIndex=0;

unsigned char old_ch;

unsigned char new_ch;

unsigned int i;

fseek(in_file,31,SEEK_SET);

while (! feof (in_file))

{undefined

old_ch=fgetc(in_file);

//文件结束中断循环

if (old_ch == 0x1A) //0x1A 文件结束

{undefined

break;

}

//若为回车继续循环

if (old_ch == 0x0D) //0x0D 回车

continue;

//异或运算

new_ch = pass_ch ^ old_ch;

//用上一密码字符

if ((new_ch == 0x0D)||(new_ch == 0x1A)) //是 回车 或 文件结束

new_ch=old_ch;

//若为换行,则加回车

if (new_ch == 0x0A) //0x0A 换行

putc (0x0D,out_file); //0x0D 回车

//写入已加密字符

putc(new_ch,out_file);

//左移一位,相当于乘2

i=old_ch; //注意:这里与加密不同!!!

i = i<<1;

//溢出位1,加到末位

if (i>255)

i=i-255;

//产生新的密码字符

pass_ch = (unsigned char) i;

}

fclose (in_file);

//putc(0x1A,out_file);

fclose (out_file);

return true;

}
————————————————
版权声明:本文为CSDN博主「weixin_39902608」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_39902608/article/details/111764004
页: 1 [2] 3
查看完整版本: LSP 加密与解密