首页
社区
课程
招聘
[分享]ASIS CTF – RANDOM IMAGE
发表于: 2014-5-17 13:06 5802

[分享]ASIS CTF – RANDOM IMAGE

2014-5-17 13:06
5802
这是asis ctf 2014里面的一道150分的Crypto.
    
    题目附件给出了加密后的enc.png(上图),还有一个加密脚本color_crypto.py。

    #!/usr/bin/env python
import Image
import random

def get_color(x, y, r):
  n = (pow(x, 3) + pow(y, 3)) ^ r
  return (n ^ ((n >> 8) << 8 ))

flag_img = Image.open("flag.png")
im = flag_img.load()
r = random.randint(1, pow(2, 256))
print flag_img.size

enc_img = Image.new(flag_img.mode, flag_img.size)
enpix = enc_img.load()

for x in range(flag_img.size[0]):
  for y in range(flag_img.size[1]):
    t = random.randint(1, pow(2, 256)) % 250
    enpix[x,y] = t

for x in range(flag_img.size[0]):
  for y in range(flag_img.size[1]):
    if im[x,y] < 250 :
      s = get_color(x, y, r)
      enpix[x,y] = s
    
enc_img.save('enc' + '.png')

  相信看雪的高手都能看得懂,那就直接上代码:
 
import Image
enc_img = Image.open('enc.png')
enc_pix = enc_img.load()

pow_pix = [(enc_pix[x,y] ^ (x**3 + y**3)) & 0xff
           for x in range(enc_img.size[0])
           for y in range(enc_img.size[1])]

r_LSbyte = max([b for b in range(0x100)], key = pow_pix.count)
flag_img = Image.new(enc_img.mode, enc_img.size)
flag_pix = flag_img.load()

for x in range(enc_img.size[0]):
  for y in range(enc_img.size[1]):
    if ((enc_pix[x, y] ^ (x**3 + y**3)) & 0xff == r_LSbyte):
      flag_pix[x, y] = 0        # original pixel was dark
    else:
      flag_pix[x, y] = 255      # original pixel was bright
  
flag_img.save('flag.png')
    
   
   
  Because 2gether, We Are Ready!

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 3526
活跃值: (4984)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
路过看看
2014-5-17 13:22
0
雪    币: 341
活跃值: (153)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
哇哦。。。这么厉害!
2014-5-17 13:31
0
雪    币: 57
活跃值: (1871)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
又见天易大牛现身。。。
2014-5-17 14:12
0
雪    币: 29
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
看不懂,拖后腿了。。
2014-5-17 14:55
0
雪    币: 557
活跃值: (474)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
6
天易love 写的东西,真不错!
现在愿意乐于奉献的人,在中国真的好少。
2014-6-3 13:04
0
雪    币: 2673
活跃值: (3560)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
7
你分享的心得也不错...
2014-6-3 13:05
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
8
不好意思,这篇是外国人写的。
2014-6-5 18:06
0
雪    币: 2015
活跃值: (902)
能力值: ( LV12,RANK:1000 )
在线值:
发帖
回帖
粉丝
9
牛人太多,感兴趣的人太少,放出来意义不大。
2014-6-5 18:11
0
游客
登录 | 注册 方可回帖
返回