烟盒迷唇
发表于 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