目录
\x格式十六转十进制
对应攻防世界web新手题simple_js
查看网页源代码之后看到了一串\x开头的数据
\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30
编写python脚本将其转换为十进制数值
s="\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"
print(s)
运行一下脚本
成功得出十进制数据
十进制转换ASCII值
将十进制通过ASCII码转换得到flag
可以进行手动一个一个的对照
当然 既然是python的文章 肯定是写脚本啦
这里需要用到split方法
split()方法含义:
是将指定字符串按某指定的分隔符进行拆分,拆分将会形成一个字符串的数组并返回。
语法
split() 方法语法:
str.split(str="", num=string.count(str)).
参数
str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
num -- 分割次数。默认为 -1, 即分隔所有。如果参数 num 有指定值,则分隔 num+1 个子字符串
数组中的每元素都各自对应一个索引值,就好比在数据库的表中每行数据纪录都拥有自己的索引ID一样
数组元素的索引值是从0开始计数的,也就是说第一个元素的索引值是0,往后依次加1。
举例:
url = 'C://aaa/image/my.jpg'
filename = url.split('/')[-1] #以‘/ ’为分割符,为字符串数组,以[-1]为索引,保留最后一段
print(filename)
结果是:my.jpg
假如图片的路径为
img_path ="aaa\\bbb\\ccc\\cat.0.jpg"
label = img_path.split("\\")[-1].split(".'')[0]
含义为提取图像绝对路径中,猫或者狗的名cat 或者 dog
第一个split(''\\'')[-1]意思是:将整个路径以“\\”分割成字符串数组,[-1]是索引值,取最后一个索引值是cat.0.jpg
第二个split(''.'')[0]意思是:将cat.0.jpg 以"."分割成字符串数组 "cat","0","jpg",然后取第0个位置索引,值为cat提取出来
至此 拆分部分的代码就可以写出来了
str="55,56,54,79,115,69,114,116,107,49,50"
s=str.split(",") #以","为分隔符 分隔数据
以逗号为分隔符 进行拆分
之后需要写一个循环 用来把每一次拆分出来的数值进行ASCII转换
我这里采用For循环
for i in s:
i = chr(int(i)) #将每组数据转为ASCII码
a = a+i #将每组数据叠加
print(a)
chr()函数是Python中的一个库函数,用于从给定的ASCII码 (整数值)中获取字符值,它接受一个数字(应为ASCII码 )并返回字符
拆分写好了 循环转换写好了 此脚本差不多就完成啦
下面是完整代码:
str="55,56,54,79,115,69,114,116,107,49,50"
s=str.split(",")
a=""
for i in s:
i = chr(int(i))
a = a+i
print(a)
运行一下
转换成功 得到flag!!!