|
|
发表于 2025-3-28 06:45:50
|
显示全部楼层
回复 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+'"'
- }}
复制代码 |
|