|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
本帖最后由 hoebec 于 2022-3-8 21:50 编辑
度娘出的在线解压功能太过强大,号几乎都被封完了,所以尝试迷惑下度娘
据对rar文件加密的了解,如果加密的压缩包切掉前面的几十个字节,后面的数据就应该解压不出来了.只有几十个字节也很容易用其他路径来传递.
下面是一个自动切割/合并的bat脚本,双击运行,拖放文件/文件夹,ENTER
输入的是文件路径就进入切割模式,下一步是输入切割的文件头长度,默认是32.再下一步是输入另外一个切割长度(剩余文件的分卷大小,默认50M,留空则不分卷),运行后生成目标文件夹
输入的是文件夹路径就进入合并模式,把文件夹内所有文件按文件名排序进行合并(数字的排序要注意补零),运行后生成目标文件
- ' 2>nul&cls&@echo off
- ' 2>nul&title Binary-Split
- ' 2>nul&Setlocal Enabledelayedexpansion
- ' 2>nul&Set /p "Input=Input File/Folder:"
- ' 2>nul&Start "" Wscript.exe %0 %Input% //Nologo //e:vbs &exit
- Set objFSO = CreateObject("scripting.filesystemobject")
- Set ADO = CreateObject("Adodb.Stream")
- Input = Wscript.Arguments(0)
- ADO.Type = 1
- ADO.Mode = 3
- If objFSO.FileExists(Input) Then
- Splpresize=InputBox("Split Presize",,"32")
- If IsEmpty(Splpresize) Then Wscript.quit
- Splsufsize=InputBox("Split Sufsize",,"50,000,000")
- If IsEmpty(Splsufsize) Then Wscript.quit
- Splpresize=Int(Splpresize)
- If Splsufsize=Empty Then Splsufsize=0
- Splsufsize=Int(Splsufsize)
- OutputFolder=objFSO.GetParentFolderName(Input)&"\"&objFSO.GetBaseName(Input)&"-Split"
- If not objFSO.FolderExists(OutputFolder) Then objFSO.createFolder(OutputFolder)
- BinarySplitLoop Input,Splpresize,Splsufsize,OutputFolder
- End If
- If objFSO.FolderExists(Input) Then
- For Each i in objFSO.GetFolder(Input).files
- Output=Input&"-Combine."&objFSO.GetExtensionName(i)
- Exit For
- Next
- For Each i in objFSO.GetFolder(Input).files
- n=n+1
- ADO.Open
- ADO.LoadFromFile i
- CombineStr=ADO.Read
- ADO.Close
- ADO.Open
- If n=1 Then
- ADO.Write CombineStr
- ADO.SaveToFile Output,2
- Else
- ADO.LoadFromFile Output
- ADO.position=ADO.size
- ADO.Write CombineStr
- ADO.SaveToFile Output,2
- End If
- ADO.Close
- CombineStr=Empty
- Next
- End If
- Wscript.Echo "done"
- Function BinarySplit(ImpFile,PreSize,ExpPreFile,ExpSufFile)
- ADO.Open
- ADO.LoadFromFile ImpFile
- Splitprestr=ADO.Read(PreSize)
- Splitsuflen=ADO.size-PreSize
- ADO.position=PreSize
- Splitsufstr=ADO.Read(Splitsuflen)
- ADO.Close
- ADO.Open
- ADO.Write Splitprestr
- ADO.SaveToFile ExpPreFile,2
- ADO.Close
- ADO.Open
- ADO.Write Splitsufstr
- ADO.SaveToFile ExpSufFile,2
- ADO.Close
- End Function
- Function BinarySplitLoop(ImpFile,PreSize,SufSize,ExpFolder)
- Outputnum=0
- Outputpre=ExpFolder&"\part"&Outputnum&"."&objFSO.GetExtensionName(ImpFile)
- Outputnum=Outputnum+1
- Outputsuf=ExpFolder&"\part"&Outputnum&"."&objFSO.GetExtensionName(ImpFile)
- Call BinarySplit(ImpFile,PreSize,Outputpre,Outputsuf)
- If SufSize>0 Then
- Splitsufsize=objFSO.GetFile(ImpFile).size-PreSize
- Do while Splitsufsize>SufSize
- Splitsufsize=Splitsufsize-SufSize
- Outputpre=Outputsuf
- Outputnum=Outputnum+1
- Outputsuf=ExpFolder&"\part"&Outputnum&"."&objFSO.GetExtensionName(ImpFile)
- Call BinarySplit(Outputpre,SufSize,Outputpre,Outputsuf)
- Loop
- End If
- End Function
复制代码
切割后的文件头可以使用base64方式转换,直接在帖子上发,下面的bat脚本用来做base64转换/反转
双击运行,输入文件路径或base64编码,ENTER
输入txt文件或base64编码,就会在"我的文档"下生成base64_decode-part0.rar.有些base64编码不能直接通过命令行运行,要先保存到txt文件(不能使用utf-8或unicode)
输入的是非txt文件,就会在文件的同一目录生成base64的txt
- ' 2>nul&cls&@echo off
- ' 2>nul&title Base64-Transfer
- ' 2>nul&Setlocal Enabledelayedexpansion
- ' 2>nul&Set /p "Input=Input File/Base64Code:"
- ' 2>nul&Start "" Wscript.exe %0 %Input% //Nologo //e:vbs &exit
- Set objFSO = CreateObject("scripting.filesystemobject")
- Set WshShell = CreateObject("Wscript.Shell")
- Set ADO = CreateObject("Adodb.Stream")
- Set oXml = CreateObject("MSXML2.DOMDocument")
- Set oNode = oXml.CreateElement("tmpNode")
- Set RE = CreateObject("vbscript.RegExp")
- Input = Wscript.Arguments(0)
- If objFSO.FileExists(Input) Then
- If Lcase(objFSO.GetExtensionName(Input))="txt" Then
- Base64Text=objFSO.OpenTextFile(Input,1).ReadAll
- CodeType=1
- Else
- CodeType=2
- End If
- Else
- Base64Text=Input
- CodeType=1
- End If
- If CodeType=1 Then
- BinaryFile=WshShell.SpecialFolders("MyDocuments")&"\base64_decode-part0.rar"
- oNode.dataType = "bin.base64"
- oNode.Text = Base64Text
- ADO.Type = 1
- ADO.Open
- ADO.Position = 0
- ADO.Write(oNode.NodeTypedValue)
- ADO.SaveToFile BinaryFile,2
- ADO.Close
- End If
- If CodeType=2 Then
- Base64TextFile=objFSO.GetParentFolderName(Input)&"\"&objFSO.GetBaseName(Input)&"-base64.txt"
- oNode.dataType = "bin.base64"
- ADO.CharSet = "ascii"
- ADO.Type = 2
- ADO.Open
- ADO.LoadFromFile(Input)
- ADO.Position = 0
- ADO.Type = 1
- oNode.nodeTypedValue = ADO.Read(-1)
- ADO.Close
- RE.Global = True
- RE.MultiLine = True
- RE.IgnoreCase = True
- RE.Pattern = vbLf
- OutputBase64Text=oNode.Text
- OutputBase64Text = RE.Replace(OutputBase64Text,"")
- Set bt=objFSO.OpenTextFile(Base64TextFile,2,1)
- bt.Write OutputBase64Text
- bt.close
- End If
- Wscript.Echo "done"
复制代码
理论上说,把文件头去掉,度娘无论如何也猜不出里面有什么东西了,也许能提高某些文件的防聚爆能力
一个自动给文件名数字补零的脚本:http://ritdon.com/forum.php?mod=viewthread&tid=8679
实例:
http://ritdon.com/forum.php?mod=viewthread&tid=9509
http://ritdon.com/forum.php?mod=viewthread&tid=9514 |
|