[SWPU2019]Network

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,将上面的每组转化为十六进制的字符

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值