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正则替换实战
    解密后

× 用微信扫描并分享


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

查看所有标签

猜你喜欢:

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

Tango with Django

Tango with Django

David Maxwell、Leif Azzopardi / Leanpub / 2016-11-12 / USD 19.00

Tango with Django is a beginner's guide to web development using the Python programming language and the popular Django web framework. The book is written in a clear and friendly style teaching you th......一起来看看 《Tango with Django》 这本书的介绍吧!

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

Base64 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具