前言
为什么学习 脚本 ? 当脚本小子的基础也是需要看懂代码的好吧 虽然很多工具都可以解码 进制转换 ascii 但是 前 128位的ascii 可以转 那后 128位呢 一般工具是不识别的所以脚本还需自己学
【ASCII】完整ascii码表0-127 + 扩展表128-255-CSDN博客
前言知识:认识 ascii码表的扩展表 :
学习脚本之前先学习一个知识 那就是切片 字符串的切片其实不难 就是比较难懂
# 假设
a='hello word'
把这个字符两两分组 改怎么做呀
那就需要切片(比如切片的操作其实就是 可以把16进制(16 进制是 2个表示一个ascii字符的所以我们不能直接转换 需要先切片 分为两两分组之后再转位ascii))
b=a[0:2]
学完这个就可以写 16进制转ascii码的脚本了
攻防世界 掀桌子
看着这个题做出的人很多 但是能掌握的很少
c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2 拿到字符串
s='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2' #你要转换的字符串l=len(a)//2 # 因为16进制是 2个字符串表示一个字符 这样的目的是确定 转换为的字符串的长度 // 的目的是 除法的同时进行向下取整flag='' #先定义空值
for i in range(l): #循环 拼接 替换后的ascii码 flag += chr(int(s[i*2:(i+1)*2],16)) # 切片 s[i*2:(i+1)*2] 就是只切两位 i=0是是不是就是s[0:2] 取前两位 16 是当前的进制 int 不能少这个是转整数的 flag+ 就是拼接
print(flag, end='') #输出flag
运行一下
结果发现是 乱码了 其实这个 ascii码的扩展部分
笨方法就是挨个找 但是我们还是使用脚本进行转换
flag = ''
s='c8e9aca0c6f2e5f3e8c4efe7a1a0d4e8e5a0e6ece1e7a0e9f3baa0e8eafae3f9e4eafae2eae4e3eaebfaebe3f5e7e9f3e4e3e8eaf9eaf3e2e4e6f2'
l = len(s)//2
for i in range(l):flag += chr(int(s[i*2:(i+1)*2], 16) % 128) #转 后ascii码
print(flag, end='')
Hi, FreshDog! The flag is: hjzcydjzbjdcjkzkcugisdchjyjsbdfr
最后得出 flag
类推我们也可以写二进制转ascii的脚本