我们可能会遇到一种情况,就是发现一段代码使用了将字母表对半后,上半段和下半段对应的字母进行调换,这样起到对代码的加密效果,而接下来就是如何使用python写关于这种情况的解密方法。
- 首先可以把代码放在一个文本文件中。
- 然后读取每一行的每一个字符,如果是英文字符,分大小写先得到它原本在字母表中的序数,然后进行加减移位,再得到对应的字母。
- 把这些新的字母拼起来,输出新的文本。
代码如下:
<?cuc
reebe_ercbegvat(0);
rpub "Pbatenghyngvbaf ba lbhe neeviny ng gur ynfg yriry <oe><oe>";
rpub "Lbh ner bayl bar fgrc fubeg bs lbhe svany fhpprff <oe><oe>";
rpub "Ohg vg frrzf n yvggyr qvssvphyg :)<oe><oe>";
pynff Luxgdy{
cebgrpgrq $svyr='onx.cuc';
shapgvba __qrfgehpg(){
vs(!rzcgl($guvf->svyr)) {
vs(fgepue($guvf-> svyr,"\\")===snyfr && fgepue($guvf->svyr, '/')===snyfr)
fubj_fbhepr(qveanzr (__SVYR__).'/'.$guvf ->svyr);
ryfr qvr('Jebat svyranzr.');
}}
shapgvba __jnxrhc(){ $guvf-> svyr='onx.cuc'; }
choyvp shapgvba __gbFgevat(){erghea '' ;}}
vs (!vffrg($_TRG['uhfg'])){ fubj_fbhepr('onx.cuc'); }
ryfr{
$svyr=onfr64_qrpbqr( $_TRG['uhfg']);
rpub hafrevnyvmr($svyr ); }
?>
发现这是一段被加密后的php代码,将她保存在1.txt文本文件中,写解密脚本如下:
def main():
s=open("1.txt",'r')
for line in s.readlines():
line=line.strip(' ')
result=shu(line)
print(result)
def shu(line):
temp=''
z="abcdefghijklmnopqrstuvwxyz"
zz="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(0,len(line)):
if line[i] in z:
m=ord(line[i])-96
if m<=13:
temp+=z[m+12]
else:
temp+=z[m-14]
elif line[i] in zz:
m=ord(line[i])-64
if m<=13:
temp+=zz[m+12]
else:
temp+=zz[m-14]
elif line[i]=='\n':
temp+='\n'
else:
temp+=line[i]
return temp
if __name__ == '__main__':
main()
所以,最终解密后的代码如下:
<?php
error_reporting(0);
echo "Congratulations on your arrival at the last level <br><br>";
echo "You are only one step short of your final success <br><br>";
echo "But it seems a little difficult :)<br><br>";
class Yhktql{
protected $file='bak.php';
function __destruct(){
if(!empty($this->file)) {
if(strchr($this-> file,"\\")===false && strchr($this->file, '/')===false)
show_source(dirname (__FILE__).'/'.$this ->file);
else die('Wrong filename.');
}}
function __wakeup(){ $this-> file='bak.php'; }
public function __toString(){return '' ;}}
if (!isset($_GET['hust'])){ show_source('bak.php'); }
else{
$file=base64_decode( $_GET['hust']);
echo unserialize($file ); }
?>