百度杯十一月Reverse03的checkflag代码
2017-02-24 15:05
134 查看
import sys def debug(): global a for i in range(0,9): for j in range(0,9): if a[i][j][0] == 0xFFEEFFEE: print '0', elif a[i][j][0] == 0xFEFEFEFE: print '1', elif a[i][j][0] == 0xEFEFEFEF: print '2', elif a[i][j][0] == 0xEEFFEEFF: print '3', print def check(): global a count = 0 for i in range(0,9): for j in range(0,9): count = (count + a[i][j][0]) & 0xFFFFFFFF if count == 0xFC9CFC4D: return True else: return False def init(): global a for i in range(0,9): for j in range(0,9): a[i][j][0] = 0xFFEEFFEE a[i][j][2] = a[i][j][4] = 0xEFEFEFEF if i == 0: a[i][j][1] = 0xFEFEFEFE else: a[i][j][1] = 0xEFEFEFEF if j == 0: a[i][j][3] = 0xFEFEFEFE else: a[i][j][3] = 0xEFEFEFEF s = 'b1ngzl' for i in s: x = (ord(i) / 16) % 9 y = (ord(i) % 16) % 9 a[x][y][0] = 0xEEFFEEFF def checkflag(s): global a global num length = len(s) ^ 4 for i in range(length): x = (ord(s[i]) / 16) % 9 y = (ord(s[i]) % 16) % 9 if a[x][y][1] != 0xFEFEFEFE: a[x-1][y][0] = a[x-1][y][0] ^ 0x11111111 if a[x][y][2] != 0xFEFEFEFE: a[x+1][y][0] = a[x-1][y][0] ^ 0x11111111 if a[x][y][3] != 0xFEFEFEFE: a[x][y-1][0] = a[x-1][y][0] ^ 0x11111111 if a[x][y][4] != 0xFEFEFEFE: a[x][y+1][0] = a[x-1][y][0] ^ 0x11111111 if check() == True: print 'flag is right' else: print 'flag is wrong' if __name__ == '__main__': a = [[[0] * 10 for i in range(10)] for j in range(10)] init() flag = '34567DEFG1234' checkflag(flag) debug()
相关文章推荐
- i春秋百度杯十一月第二场WriteUp
- 一图读懂十一月创投趋势,百度成月度最活跃大公司 | 藏宝图
- 百度杯”CTF比赛(十一月场)
- 百度2011年实习生招聘核心研发岗位笔试试题
- 百度2011.10.16校园招聘会笔试题
- Android 百度自动更新(升级)SDK的流程简介
- 百度Echarts-聊城市公交线网
- 百度SEO优化那些事(5月14日)相约天极传媒
- 百度BAE环境下WordPress搭建过程
- 百度坐标转换
- Java maven项目集成ueditor(百度本编辑器)插件详解
- 百度旗下社交音乐媒体平台“ting”全体验
- 百度Push服务SDK用户手册(iOS版)
- 百度2016笔试(算法春招实习)
- 百度运维部专场招聘会
- 百度2013笔试题
- thinkphp 如何调用百度echarts 数据报表插件
- 尝试Ping百度域名后的思考
- 百度名片之CMMI