谁能告诉我多媒体光盘加密方法!(50分)

  • 主题发起人 主题发起人 zqhwxf
  • 开始时间 开始时间
Z

zqhwxf

Unregistered / Unconfirmed
GUEST, unregistred user!
我要发行多媒体光盘,光盘里有很多FLASH小模块(几百个):),而且不用安装,但是我不想让我光盘的
这些小模块被别人COPY,甚至被看到,不知哪位大虾可以帮忙?我听说像科利华等一些公司的光盘
是用数据包加密成DAT文件,然后通过解密算法访问DAT文件,不知这种方法是怎么实现的!
 
管它什么文件具体到硬盘都是010101码
用汇编读来经某算法过滤 保证没法用(管它用什么工具,得到的永远是乱七八糟的东西)
我最近可能要编图象加密程序 打算用汇编干
兄弟有什么好法 告诉我一声

另,图象文件都有记录图象格式等信息的头 你可以在这儿做文章
具体细节不清楚(所以才用汇编)
 
to cat.yy:
图像没办法的,拿到你能不许别人拷屏么?
 
cat.yy说的汇编方法恐怕很麻烦,不知谁知道科利华的光盘是怎么加密的?
 
<b>不烦</b>,如果你有兴趣 可以把图象以二进制方式打开(你可以用WINDOWS的记事本打开)
会发现:任何图片文件的头部都有个标志,BMP是“BM”,编辑器是靠它识别文件类型的
把它改掉,就没法直接打开(要将它恢复)
注意不要用记事本保存它,记事本是文本编辑器会把它以文本格式保存的,你可以用
二进制编辑器修改并以二进制方式存储,就会看到结果(推荐使用UltraEdit-32编辑器)
Delphi有以二进制方式打开文件的方法,你可以看看,我这两天就要编的
-------------------------------------------
我提供两种思路:
1。直接修改文件头,不改变其他信息
2。将文件以流的形式处理,设计算法对文件的某些(所有)字节加密
这样安全性高,但运算麻烦
 
科利华好像是这样的:

1。将文件加密后改后缀名为dat
2。用自己写得播放器,先读入文件,解密后播放!
 
cat.yy的方法可能不是很适合我,我一张光盘有成百个FLASH模块,这样我要加密很多文件
,而且别人要是整张光盘都COPY怎么办?而且我的模块是FLASH文件不是图片文件!
ZYY04能不能把细节说清楚一点,我现在想把很多的模块放在一个DAT里,然后加密DAT!
 
我说的只能加密文件,若人家光盘复制就无能为力了!
举个简单例子说明:
比如说我有300个flash文件,要分四章用;
我自定义一种二进制文件,先放一个longint数(指向下一个longint数),然后放加密后
的flash文件流;........
每一章的放一个文件中。
 
加密光盘有另外的手段的说,你查一下有灌资料吧,我也不太清楚;
要是软盘我还懂一点。
 
我研究了delphi的文件操作
编了一个加密程序 可加密任何类型文件,提供这里
//----------------------------------------------
procedure TForm1.changAllBtnClick(Sender: TObject);
var
f1,f2:File;
buf:byte;
_fSize,cut:integer;
begin

if not(fromEdit.Text='') then

begin

AssignFile(f1,fromEdit.Text);
AssignFile(f2,toEdit.Text);
Reset(f1,1);
ReWrite(f2,1);
_fSize := FileSize(f1);
try
while _fSize》0do
//<font color=green>用“》”代替“大于号”</font>
begin

BlockRead(f1,buf,SizeOf(Buf),cut);
asm //
not buf //取反加密,这里可以改成别的算法
end;

//
BlockWrite(f2,buf,cut,cut);
//
dec(_fSize);
end;

finally
CloseFile(f2);
CloseFile(f1);
end;

ShowMessage('O.K.');
end else

showmessage('未指定文件名');
end;

 
单个文件加密容易解,多个文件混合就加大解密难度了!
 
我现在的文件很多不能一个一个的加密,有没有整个光盘加密的方法?
 
可以在加密文件名处做文章
加几条语句 让他自己搜索指定中的所有文件(包括子目录)
我正要增加该功能呢!

>>整个光盘加密
1。硬方法:
光驱读盘也要索引的 在光盘的最内圈,如果索引不清 光驱根本不认盘
光盘数据组织的原理应该和软盘差不多
如果你有激光打孔之类的技术条件 也行
2。软方法:
对数据加密。运行光盘中正常的exe在内存中解读。

---------------------------------------------------------
zyy04说的“多个文件混合就加大解密难度了”我不太理解:
管他什么文件不都是以 2 进制形式写在磁盘上吗,从数据存储角度来看
根本不存在文件类型,既然这样“多个文件”只存在数量的问题
顶多费点时间,有难度的问题吗!
 
不好意思,我把“解密”看错了--- 取消对zyy04说的话

关注!!
 
zqhwxf:请自觉提前问题或结束帖子!
 
我在书店里见到过一本关于光盘刻录的书,上面有关于建立能反拷贝的技术,再结合文件加密,我觉得可以了。
 
关键是防止拷贝的技术
 
你可以把文件藏在光盘的隐藏目录中,
隐藏目录无法用DIR/A或浏览器看到,
只能用完全路径才能访问到(就像跳舞毯光盘无法复制到硬盘上一样)
具体原理如下:(你需要一定的刻录知识)
在每个目录或档案前面都有一段说明或记录,第几个 byte 到第几个 byte 是记录什么都有一定的规定。各位可以在 ISO 档内找到您要的目录(档案)名後,由此名字往前开始算,第一个 byte 就是上表的第 33 个 byte。同理,倒数第二到第五个 bytes 就是上表的第 29 到 32 个 bytes 的地方。而所有的数字当然都要用十六进位表示。
制作一个 ISO 档本文的 ISO 档 (又叫 Image 档) 是以 Easy CD Pro 所制作的, 用别的软体可能会不太一样.制作的方法请看以下图示 :把资料轨准备好, 设定档名规则可为 ISO 9660 或 Joliet 皆可. 最後烧录时设定为存成 Image 档, 而不是烧进光碟. 不过要把一片空白片放进烧录机才可以, 不管是不是要直接烧录. 目录记录区举例说明假设有一个 ISO 档,里面有一个目录,叫 "TEST". 这里需要Norton Utility (8.0 版以前) 的 Diskedit.exe , 或是 UltraEdit 也可以, 来找 ASCII 字串: "TEST",首先会找到两个像这样的地方: (但这不是我们要的位置)再往下找就会再看到一个像这样的地方:就是这里!我们来看看从 "TEST" 开始,回头算起的 33 个 bytes。
(就目录而言其它 ISO 档应该也是差不多要找三次才是要改的位置,不过读完本篇後您就会判断那个位置才对了。而档案的话仅找一次就可以到达我们要改的地方。)
  其中最後的 54 45 53 54 就是目录名 "TEST",倒数第一个 byte 是 04,就是第 33 个 byte "Length of File Identifier",在这里 "TEST" 一共占了四个Bytes,所以是 04。
再看看倒数第 15 到 21 个 bytes,也就是表一中第 19 到 25 个 bytes 的位置,这里是记录该目录建立的日期和时间。其中 62 08 0E 换算成十进位就是 98 08 14 也就是日期是 1998 年 8 月 14 日。
再看看第 11 到第 18 个 bytes ,"Data Length" ,如果是个 档案 的话,这就是该档案的大小 (File size)。如果是个 目录 的话,则一律是 00 08 00 00 00 00 08 00 ,即 2048 bytes,也就是一个目录名就要占了一个 sector。
再看看开头第 3 到第 10 个 bytes 的位置: 1A 00 00 00 00 00 00 1A ,其实就是: 1A 00 00 00。也就是此目录在 ISO 档中所占的位置的第一个 sector 的 Logical Block Address。
Joliet 及 ISO 9660 规则请注意:如果你是用 Joilet 档名规则制作 Image 档,档名及目录的记录区有两个位置,都必须修改,照本文件改的话会只改到一处,另一处没改到,因此,所制作的隐藏目录及超大档只在do
S / Win 3.1 下才有效,在 Windows 95 底下都会原形毕露.如果用 ISO 9660 档名规则的话,只有一个记录区,可以用本文件的方法修改,在 Windows 95 底下也可以保持隐藏目录及超大档。
下图以 Easy CD Pro 为例, 显示 ISO 9660 及 Joliet 档名规则设定的位置。
底下先谈到用 ISO 9660 规则制作 ISO 档时的改法 :超大档案
  我们在制造超大档案时就是改 "Data Length" 这个位置(把活动的游标放在档名的第一个字母上,向左按 23 次 ),把它改成我们要的数字,例如 2 giga bytes,那么在 dir 那片光碟时就会出现一个 2 giga 的档案。
十进位跟十六进位数字要互相转换时, 您需要一个 Shareware: NUMCONV.EXE ,或者用 Win95 / 98 本身的小算盘 (改成工程型) 也可以 : 如下图:举例来说,要把档案大小改成 20,000,000 bytes,先转换成 16 进位,得到 : 1312D00 也就是01 31 2D 00,那么第 11 到第 18 个 bytes就要改成 :00 2D 31 01 01 31 2D 00
  或者只改第 11 到第 14 个 bytes 也可以。如下:00 2D 31 01       
  如果该档案是个执行档,或许还可以执行。也可以 copy 到硬碟,因为 20,000,000也不算太大。这就是一个可以用的超大档案,可以用来伪装,以及某种程度的保护。
如果把它改成 2,000,000,000 会怎样呢?换算结果是 77359400 ,那么就改为:00 94 35 77 77 35 94 00或:00 94 35 77        
  这次不能执行也无法 copy 了。这就成了一个没有用的超大档案 (或垃圾档)。 隐藏目录
  再看看倒数第 8 个 byte (把活动的游标放在目录名的第一个字母上,向左按 8 次),也就是第 26 个 byte : "File Flags"。一个 Byte 是八个 bit ,这八个 bit 每一个都是一个旗标,记录这个目录或档案的属性。从 0 到 7 的排列是这样的:7 6 5 4  3 2 1 0
  目前是 02 ,也就是这样:0 0 0 0  0 0 1 0 
  即 bit 1 是 1。查表一得知当此 bit 为 1 时是表示这是一个目录。

  Bit 0 是 1 时便给了它一个隐藏属性 (H attribute)。所以如果把它改成 03 ,就会变成隐藏目录,但是可以用工具程式或 dir/a 看到。像这样:0 0 0 0  0 0 1 1 
  我们要做的是那种用 DIR/A 或工具程式看不到,但是用 "CD 目录名" 却又进得去的那种隐藏目录。事实上笔者是用 "尝试错误法" (没有烧进 CD,而是用 EASY-CD MM/PRO FOR WIN3.1 所附的模拟功能,把 ISO 档模拟成 CD。) 发现从 04 到 07都可以变成这种隐藏目录。也就是至少 bit 2 必需是 1。像这样:0 0 0 0  0 1 0 0 0 0 0 0  0 1 0 1 0 0 0 0  0 1 1 0 0 0 0 0  0 1 1 1 
  所以要制作这种隐藏目录就是把这个 byte 改成 04 (or 05~07)。
 
多人接受答案了。
 
后退
顶部