[61dctf]bbencode
时间:2020-04-21
本文章向大家介绍[61dctf]bbencode,主要包括[61dctf]bbencode使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目
flag = open("flag", "r").read().strip() assert len(flag) == 32 def str2num(s): return int(s.encode('hex'), 16) def bbencode(n): a = 0 for i in bin(n)[2:]: a = a << 1 if (int(i)): a = a ^ n if a >> 256: a = a ^ 0x10000000000000000000000000000000000000000000000000000000000000223L return a print bbencode(str2num(flag)) #result:61406787709715709430385495960238216763226399960658358000016620560764164045692
可以看到算法是异或然后位移,当a长度为257bits时,结束并异或一个key
可以理解为在 2^(256) 下的一个环,遍历2^256一定可以找到原文
但是实际上并不需要遍历2^256这么多次
类似于流密码生成器一样,并不是256位就会生成2**256的密钥流
简单爆破就出来了
#flag = open("flag", "r").read().strip() #assert len(flag) == 32 def str2num(s): return int(s.encode('hex'), 16) def num2str(n): return str(hex(n)[2:-1]) def bbencode(n): a = 0 for i in bin(n)[2:]: a = a << 1 if (int(i)): a = a ^ n if a >> 256: a = a ^ 0x10000000000000000000000000000000000000000000000000000000000000223L return a #print bbencode(str2num(flag)) #result:61406787709715709430385495960238216763226399960658358000016620560764164045692 flag = 61406787709715709430385495960238216763226399960658358000016620560764164045692 for i in range(2**16): flag = bbencode(flag) if 'flag'.encode('hex') in num2str(flag): print num2str(flag).decode('hex')
原文地址:https://www.cnblogs.com/p201721410013/p/12746192.html
- 【Go 语言社区】算法课程 第一季 第6节 建立三角形
- 最近的几个技术问题总结和答疑(五)(r9笔记第9天)
- hive学习笔记——Hive表中数据的导入和导出
- Java案例-求和与打印九九乘法表
- hive学习笔记——Hive表的创建
- 和开发讨论的一个数据变更需求(r9笔记第8天)
- Java案例-分数查等级程序
- Go语言的标准输入-scan 和bufio
- Java案例-判断给定年份是闰年
- 分分钟搭建Oracle环境 (r9笔记第23天)
- Java面试系列25-spring(4)-国际化、加入web容器,标签、事务等
- Java面试系列24-spring(3)-配置文件相关问题
- Java基础-day03-基础题
- 简单易学的机器学习算法——EM算法
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 使用k8s部署springboot+redis简单应用
- React Ref 使用总结
- Python人脸识别—我的眼里只有你
- 函数式编程是如何提升代码的扩展性
- 浏览器中的跨域问题与 CORS
- 微信小程序怎么做链接可以链到小程序的其它页面。
- 如何实现一个 3D 效果的魔方
- FlutterDojo设计之道—状态管理之路(三)
- 微信头像加国旗
- FlutterDojo设计之道—状态管理之路(四)
- FlutterDojo设计之道—状态管理之路(五)
- Python高级进阶(一)Python框架之Django入门
- python 自动化测试(2):针对密码输入框为密码控件时的解决方案
- 微信小程序开发之视图容器swiper
- WINDOWS服务器同时安装多个版本的MYSQL的方法,MQYSQL5和MQYSQL8的共存。