PowerShell正则替换实战

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

内容简介:今年年初,本站用了某兄弟写的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正则替换实战
    解密后

× 用微信扫描并分享


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

查看所有标签

猜你喜欢:

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

Fluent Python

Fluent Python

Luciano Ramalho / O'Reilly Media / 2015-8-20 / USD 39.99

Learn how to write idiomatic, effective Python code by leveraging its best features. Python's simplicity quickly lets you become productive with it, but this often means you aren’t using everything th......一起来看看 《Fluent Python》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具