PowerShell正则替换实战

栏目: 编程工具 · 发布时间: 6年前

内容简介:今年年初,本站用了某兄弟写的Wordpress Open Social 付费版插件,但是该插件和我的网站的另外一个QA插件有冲突,需要注释 Open Social 插件的其中一行代码。以前都是岁月静好,可是从4.0版本开始,原作者对PHP文件源码做了简易的混淆处理。把页面中的字符串转换成了16进制和8进制,导致我升级插件后找不到需要注释的代码行。都是同行,何必相互为难?我的目标就是要把PHP源文件中的字符串从16进制和8进制转换成原始字符串。

今年年初,本站用了某兄弟写的Wordpress Open Social 付费版插件,但是该插件和我的网站的另外一个QA插件有冲突,需要注释 Open Social 插件的其中一行代码。以前都是岁月静好,可是从4.0版本开始,原作者对 PHP 文件源码做了简易的混淆处理。把页面中的字符串转换成了16进制和8进制,导致我升级插件后找不到需要注释的代码行。

都是同行,何必相互为难?

我的目标就是要把PHP源文件中的字符串从16进制和8进制转换成原始字符串。

比如要把: “\x3c\151\x6e\x70\165\x74\x20\x74\x79\160\x65\x3d\x22\x68\x69\x64\x64\x65\x6e\x22\x20\x69\144\x3d\x22”

转换成:

“<input type=”hidden” id=””

字符串是以”\x或者\数字开始,\x打头的是16进制,\数字打头的是8进制

#
# 解密委托
#
$DecodeEvaluator = 
{
    param([string]$Str)

    $Str = $Str.Substring(1,$Str.Length-2)
    $tokens = $str -split '\\' | select -Skip 1
    $result =  $tokens  | foreach {
        $char = $_
        if($char -like 'x*')
        {
            [char]([convert]::ToInt32("0"+$char,16))
        }
        else
        {
            [char]([convert]::ToInt32([int]$char,8))
        }
    }

   $result = '"{0}"' -f ( $result -join '')
   $result

}

$ErrorActionPreference = 'stop'

# 读取源文件
$text = Get-Content D:\test.php -Raw

# 正在替换,并保存新文件
[regex]::Replace($text, '"(\\(x|\d)).*?"', $DecodeEvaluator) | Out-File D:\test2.php
  • PowerShell正则替换实战
    解密前
  • PowerShell正则替换实战
    解密后

× 用微信扫描并分享


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

法治构图

法治构图

季卫东 / 法律出版社 / 2012-7 / 43.00元

《法治构图》作者季卫东从1980年代末开始就一直在思考和阐述上述问题的答案,并把研究的心得陆续形诸文字发表,以期有益于点点滴滴法制改革的实践。《法治构图》就是对相关的代表性论稿的梳理和总结,可以理解为从正当过程到实质价值、从法治到民主的新程序主义建构法学观点的集大成。一起来看看 《法治构图》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试