TTL加密
python脚本解密
import binascii
f = open('attachment_3.txt', "r")
str = ''
Binary = ''
number = ''
while 1:
num = f.readline()
if not num:
break
if num.rstrip() == '63': # 去掉每行后面的空格
Binary = '00'
elif num.rstrip() == '127':
Binary = '01'
elif num.rstrip() == '191':
Binary = '10'
elif num.rstrip() == '255':
Binary = '11'
str += Binary
for i in range(0, len(str), 8):
number += chr(int(str[i:i + 8], 2))
data = binascii.unhexlify(number)
f2=open('1.txt','wb')
f2.write(data)
f2.close()
有zip头,另存为1.zip,直接解压提示需要密码
,是伪加密,有处09我改为08保存。打开压缩包
base64循环解码,上大佬脚本
# -*- encoding: utf-8 -*-
import base64
f = open('flag.txt','rb').read()
while True:
f = base64.b64decode(f)
if b'{' in f:
print(f)
break
else:
continue
flag{189ff9e5b743ae95f940a6ccc6dbd9ab}
附件
TTL解释:
TTL是IP协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应被丢弃。有很多原因使包在一定时间内不能被传递到目的地。例如,不正确的路由表可能导致包的无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减一,TTL通常表示包在被丢弃前最多能经过的路由器个数。当记数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。
不同的系统会有不一样的TTL,常用的系统默认最大TTL如下:
Linux:64或255。
微软 Windows NT/2K操作系统 ICMP 回显应答的 TTL 字段值为 128。
微软 Windows 95 操作系统 ICMP 回显应答的 TTL 字段值为 32。
window7或window10的默认TTL为127。
FreeBSD和新版本的Red Hat Linux的TTL基数是64
可以通过ping127.0.0.1查看最大的TTL:
每一行都只有一个值,63,255,191等等,不难发现,这些值都为2的n次方减去一后的值,此处为TTL加密。
txt文件里面有很多列ttl值,63,127,191,255
63== 00111111
127== 01111111
191== 10111111
255==11111111
变得只有前面两位,后面6位不变,如果传输4个就是一字节
TTL加密:
简单来说就是,图中63,127,191,255转化为二进制的值分别为 00111111,01111111,10111111,11111111。
发现只有前两位不同,TTL加密就是利用前两位进行加密,将每个前两位重新进行合并,8位为一组。
所以TTL加密的解密方法:
1,将所有前两位合并为8位,并且每八位一组。
2,将上面的每组转化为十六进制的字符