PowerShell正则替换实战

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

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

× 用微信扫描并分享


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

查看所有标签

猜你喜欢:

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

安全测试指南(第4版)

安全测试指南(第4版)

OWASP基金会 / 电子工业出版社 / 2016-7-1 / CNY 89.00

软件安全问题也许是这个时代面临的*为重要的技术挑战。Web应用程序让业务、社交等网络活动飞速发展,这同时也加剧了它们对软件安全的要求。我们急需建立一个强大的方法来编写和保护我们的互联网、Web应用程序和数据,并基于工程和科学的原则,用一致的、可重复的和定义的方法来测试软件安全问题。本书正是实现这个目标的重要一步,作为一本安全测试指南,详细讲解了Web应用测试的“4W1H”,即“什么是测试”、“为什......一起来看看 《安全测试指南(第4版)》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

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

在线图片转Base64编码工具

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

URL 编码/解码