损坏文件:
原理:二进制的方式打开文件,逐个字节替换成随机字符;;(受百度云的启发,它把视频全部替换成了0)
两种用法:①用户手动选择文件,破坏完成后弹窗提示;②命令行调用等方式传递参数,破坏完成后不可能弹窗提示;
所以:把实现损坏文件的核心代码(一些函数)写在文件demageFileFun.ahk里,把然后在"demageFile-手动选择.ahk"和"demageFile.ahk"里include demageFileFun.ahk
;为了省事把所有变量都global了
;demageFileFun.ahk
demageFile(fileName) {
global
openFile(fileName)
writeFileTimes()
file.close()
}
openFile(filename){
global
file := FileOpen(filename,"rw")
FileGetSize,size,%filename%
LOOPTIMES := round(RATE * size)
;writeChar一个字节写入一次,所以多少个字节循环多少次;}
writeFileTimes(){
global
wirteFile(0)
;文件的开头,中间,结尾都损坏;wirteFile(round(size * 0.5))
wirteFile(round(size * (1- RATE )))
}
wirteFile(pos) {
;把文件指定位置的后面部分损坏掉;global
file.seek(pos)
loop,%LOOPTIMES%
{
Random, rand , 0, 127
file.Writechar(rand) ;writeChar一次写入一个字节;参数rand是整数也行;
}
}
^escape::exitapp
;2015-12-31 星期四 12:04
;demageFile-手动选择.ahk
#NoTrayIcon
#singleinstance force
if 1=
{
FileSelectFile, deFile
if 1=
exitapp,0
} else {
;可以把文件拖放到图标上的方式来传递参数
deFile =%1%
}
RATE := 0.2
try {
demageFile(deFile)
msgbox 损坏成功
exitapp,0
} catch e {
msgbox 损坏失败
msgbox %e%
exitapp,1
} finally {
file.close()
}
return
#include demageFileFun.ahk
;2015-12-31 星期四 12:04
;demageFile.ahk
#NoTrayIcon
#singleinstance force
if 1=
{
msgbox 必须传入参数:文件名
exitapp,1
}
deFile =%1%
RATE := 0.2
;一次损坏文件的比率try {
demageFile(deFile) ;这里用%1%会出错...
exitapp,0
} catch e {
msgbox %e%
exitapp,1
} finally {
file.close()
}
return
#include demageFileFun.ahk
- 使用说明:
注意:一旦损坏,数据无法恢复;请谨慎使用!!
附件列表
时间: 2024-10-29 19:10:29