1.功能分析:

  实际工作中经常会遇到alert()之类的函数被防火墙过滤,而把alert()转化为ascii码放到String.fromCharCode()中就可以绕过,之前会一个一个查ascii表,比如a对应97,l对应108...最后得出alert(1)的ascii码97,108,101,114,116,40,49,41   发现这样太费时间,就用写了个python小脚本,方便做测试用.

  后来索性又加了下面这些功能(支持解码),整体写的很挫很糙,但是这个不重要,用着方便就行了~~~

字符串←→ASCII码                       a   →   97

字符←→js-Unicode 特殊符号请在前面加^ a → \\u0061

字符串←→js-16进制 a → \\x61

字符串←→js-8进制 a → \\141

字符串←→html实体编码(16进制) a → a

字符串←→html实体编码(10进制) a → a

2.用法:

  需要安装python3

  python3    kpy.py    模式[a,A,b,B,c...]    字符

  没有python3的话

  用这个exe也阔以~~~

  

  kpy.exe    模式[a,A,b,B,c...]    字符

 

字符串转ascii

python3 kpy.py a alert(1)                                    |
>>97,108,101,114,116,40,49,41

ascii转字符串

python3 kpy.py A 97,108,101,114,116,40,49,41 
>>alert(1)

3.代码分析:

太粗糙的代码,还分析个毛~~
 #coding="utf-8"
import sys usage=''' +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
| 使用方式:python3 kpy.py N(模式:a,b,c...) S(需要转换的字符:) |
+ +
| python3 kpy.py a alert(1) |
+ >>97,108,101,114,116,40,49,41 +
| |
+ a(A) 字符串←→ASCII码 a → 97 +
| b(B) 字符←→js-Unicode 特殊符号请在前面加^ a → \\u0061 |
+ c(C) 字符串←→js-16进制 a → \\x61 +
| d(D) 字符串←→js-8进制 a → \\141 |
+ e(E) 字符串←→html实体编码(16进制) a → a +
| f(F) 字符串←→html实体编码(10进制) a → a |
by:mkdd@kpy
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
'''
print(usage) look=['"','\'','&','<','>']
name=['&quot','&apos',' &amp','&lt','&gt']
num10=['&#34','&#39','&#38','&#60','&#62']
num16=['&#x22','&#x27','&#x26','&#x3c','&#x3e'] # 字符串转ASCII码
def aa(x):
a=[]
for i in x:
a.append(str(ord(i)))
return(','.join(a)) # 字符转 js-Unicode 特殊符号请在前面加^
def ab(x):
a=[]
for i in x:
a.append('\\u'+''*(4-len(str(hex(ord(i)))[2:]))+str(hex(ord(i)))[2:])
return(''.join(a)) # 字符串转 js-16进制
def ac(x):
a=[]
for i in x:
a.append('\\'+str(hex(ord(i)))[1:])
return(''.join(a)) # 字符串转 js-8进制
def ad(x):
a=[]
for i in x:
a.append('\\'+str(oct(ord(i)))[2:])
return(''.join(a)) # 字符串转 html实体编码(16进制)
def ae(x):
a=[]
for i in x:
a.append('&#x'+str(hex(ord(i)))[2:]+';')
return(''.join(a)) # 字符串转 html实体编码(10进制)
def af(x):
a=[]
for i in x:
a.append('&#'+str(ord(i))+';')
return(''.join(a)) # ASCII码转字符串,逗号隔开
def aA(x):
x=x.replace(' ',',').split(',')
for i in range(len(x)):
x[i]=chr(int(x[i]))
return(''.join(x)) # js-Unicode js-16 js-8转字符串
def aB(x):
return x.replace(',','')
def aC(x):
return x.replace(',','')
def aD(x):
return x.replace(',','') def aF(x):
for q in range(len(name)):
x=x.replace(name[q],num10[q])
if x[-1]==';':
x=x[:-1]
return aA(x.replace(';',',').replace('&#','')) def aE(x):
for q in range(len(name)):
x=x.replace(name[q],num16[q])
if x[-1]==';':
x=x[:-1].replace('&#x','').split(';')
for i in range(len(x)):
x[i]=chr(int(x[i],16))
return ''.join(x) b=("a%s(\'%s\')"%(sys.argv[1],sys.argv[2]))
print((20-len(eval(b)))*'-'+('\n'+(20-len(eval(b)))*' '+'|')*5+'\n'+(21-len(eval(b)))*' '+(20-len(eval(b)))*'-'+'→ '+eval(b)+'\n'*8)

python xss相关的编码解码小脚本的更多相关文章

  1. Python学习之==>URL编码解码&if __name__ == '__main__'

    一.URL编码解码 url的编码解码需要用到标准模块urllib中的parse方法 from urllib import parse url = 'http://www.baidu.com?query ...

  2. python 基础篇 06 编码 以及小知识点补充

    本节主要内容: 1. is和==的区别2. 编码的问题 ⼀. is和==的区别1. id()通过id()我们可以查看到⼀个变量表⽰的值在内存中的地址 注  ----<<<在pytho ...

  3. 【Python】二进制转ASCII码小脚本

    #coding:utf-8 #developed by carrypan! import binascii import optparse def main(): usage="%prog ...

  4. 分享几个python小脚本

    by 梁凯 今天我想给大家分享几个python脚本,分别是: 1.公司访问外网认证脚本(最初有同事写过,我优化了一下). 2.统计周报系统所有同事的最近一篇周报. 3.统计测试技术分享里指定一个月所有 ...

  5. python摸爬滚打之day06----小数据池、编码解码

    1.小数据池 代码块:  一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. 一个文件也是一个代码块.而不需要创建一个新的数据. 这样会节省更多的内存区域. 在cmd命令行 ...

  6. python基础3之文件操作、字符编码解码、函数介绍

    内容概要: 一.文件操作 二.字符编码解码 三.函数介绍 一.文件操作 文件操作流程: 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 基本操作: #/usr/bin/env ...

  7. 编码 解码 python

    之前一直对python文件中编码解码糊里糊涂,今天看到一篇文章,觉得把我讲的有点明白了.写个心得吧. 1.编码解码是怎么一回事? Python 里面的编码和解码也就是 unicode 和 str 这两 ...

  8. day06 python is == 编码 解码

    day06 python   一. is 和 == 的区别     == :比较, 判断, 比较的是值: 可以比较数字, 字符串, 列表, 元组, 字典,等     is :是 比较, 比较的是内存地 ...

  9. python Unicode 编码解码

    1 #将Unicode转换成普通的Python字符串:"编码(encode)" 2 unicodestring = u"Hello world" 3 utf8s ...

随机推荐

  1. java将一个List赋值给另一个List

    声明和实例化: 声明:ArrayList a, 仅仅只是声明了一个list变量,其未来作用相当于C++中的引用变量,亦或者相当于一个对象块的索引,但并未为其分配具体的完整的对象所需要的内存空间,其所分 ...

  2. ajax导出表格数据失败的几处坑

    $.ajax({ type:'POST', async:false, url:'/export', data:params, dataType:'json', ... success:function ...

  3. 20175126Apollo 20175126《Java程序设计》结队编程项目——四则运算

    结队编程项目——四则运算 一.项目需求 自动生成小学四则运算题目(加.减.乘.除)统计正确率 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 需求分析: 生成四则运算:需要使用 ...

  4. 牛客小白月赛13 小A的柱状图(单调栈)

    链接:https://ac.nowcoder.com/acm/contest/549/H来源:牛客网 题目描述 柱状图是有一些宽度相等的矩形下端对齐以后横向排列的图形,但是小A的柱状图却不是一个规范的 ...

  5. 记一次win10+oracle11.2安装

    下载安装文件,地址:链接:https://pan.baidu.com/s/1gObmWv5_w2Y4Jlf2-RkBYA 密码:1rx9 安装手册参考:链接:https://pan.baidu.com ...

  6. dwr去除默认错误弹窗

    在开发中,我实在不希望dwr弹出alter,只需要打印错误日志就可以,客户端不需要alert出error或者a server error has occurred. 这样的提示,更不需要alert出堆 ...

  7. mysql 悲观锁与乐观锁的理解

    悲观锁与乐观锁是人们定义出来的概念,你可以理解为一种思想,是处理并发资源的常用手段. 不要把他们与mysql中提供的锁机制(表锁,行锁,排他锁,共享锁)混为一谈. 一.悲观锁 顾名思义,就是对于数据的 ...

  8. node.js中对 redis 的安装和基本操作

    一.win下安装redis https://github.com/MicrosoftArchive/redis/releases 下载Redis-x64-3.2.100.zip,然后解压,放到自定义目 ...

  9. c++11新标准for循环和lambda表达式

    :first-child { margin-top: 0px; } .markdown-preview:not([data-use-github-style]) h1, .markdown-previ ...

  10. 用Java代码通过JDBC连接Hiveserver2

    1.在终端启动hiveserver2#hiveserver2 2.使用beeline连接hive另外打开一个终端,输入如下命令(xavierdb必须是已经存在的数据库)#beeline -u jdbc ...