回复 16# Five66
改一下 ,加上了密码base64解码后包含英文双引号时的处理
将7楼代码第22行换成下面的 ,因为使用的是字符串 ,密码base64解码后可能涉及字符串编码问题 ,简单的判断了下编码
代码没有排除bat本身 ,bat的名字最好取个唯一的名字 ,也就是说最好不要有跟bat对应的文件夹 ,不然对应的文件夹也会压缩处理- $pw="";if($str -match '(?<=uniquecode=")[^"]*(?=")'){
- if($Matches[0]){$pw=$matches[0];$o=$pw.Length%4
- if($o){$pw=$pw+'===='.Substring(0,4-$o)}
- $pwdc=[text.encoding]::utf8.getstring([convert]::FromBase64String($pw))
- if($pwdc -match '\?'){
- write-host "密码的编码可能不是utf8 ,将使用默认编码" -ForegroundColor yellow
- $pwdc=[text.encoding]::default.getstring([convert]::FromBase64String($pw))}
- $pwdc=[regex]::replace($pwdc,'\\+"|""+|"',[scriptblock]::create('"\"+($args[0].value.tochararray() -join "\")'))
- $pw='-p"'+$pwdc+'"'
- }}
复制代码
|