[新手入门] Bugku-PHP_encrypt_1

[复制链接]
查看8681 | 回复0 | 2020-2-11 17:06:24 | 显示全部楼层 |阅读模式
QQ图片20200211170448.png
这是题目给的代码,还有返回值fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA=
  1. # -*- coding: UTF-8 -*-
  2. import base64
  3. # import hashlib

  4. '''
  5. def eccrypt(data):
  6.     key = hashlib.md5('ISCC').hexdigest()
  7.     # print 'key-->', key
  8.     x = 0
  9.     char = ''
  10.     data_len = len(data)  # data的长度
  11.     key_len = len(key)  # key的长度
  12.     for i in range(data_len):
  13.         if x == key_len:
  14.             x = 0
  15.         char += key[x]
  16.         x += 1
  17.     # print 'char-->', char
  18.     flag = ''
  19.     for i in range(data_len):
  20.         flag += chr((ord(data[i]))+(ord(char[i])) % 128)
  21.     # print 'flag-->', flag
  22.     return base64.b64encode(flag)
  23. '''


  24. def detrcy(b64):
  25.     int_b64 = []
  26.     b64de = base64.b64decode(b64)
  27.     # print 'b64de-->', b64de
  28.     # print 'len_b64de-->', len(b64de)
  29.     for i in range(len(b64de)):
  30.         int_b64.append(ord(b64de[i]))
  31.     # print 'int_b64-->',int_b64
  32.     # print 'len_int_b64-->', len(int_b64)
  33.     key = '729623334f0aa2784a1599fd374c120d729623'  # 知道data的长度后直接写出来
  34.     int_key = []
  35.     for i in range(len(key)):
  36.         int_key.append(ord(key[i]))
  37.     # print 'int_key-->', int_key
  38.     flag = ''
  39.     for i in range(len(int_b64)):
  40.         flag += chr((int_b64[i]-int_key[i]+128) % 128)
  41.     print flag


  42. if __name__ == '__main__':
  43.     # str_b64 = eccrypt('XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')
  44.     # print 'str_b64-->', str_b64
  45.     str_b64 = 'fR4aHWwuFCYYVydFRxMqHhhCKBseH1dbFygrRxIWJ1UYFhotFjA='
  46.     # print 'str_b64-->', str_b64
  47.     detrcy(str_b64)
复制代码
解密的代码,得到flag
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

27

主题

27

帖子

147

积分

小有名气

Rank: 3Rank: 3

积分
147