>
>
先天八卦操
cheyenne
Baguafuck-encode:
from PIL import Image
import math
# 生成阳爻
yang = Image.new('RGB', (48, 10), (0, 0, 0))
# 生成阴爻
yin = Image.new('RGB', (48, 10), (0, 0, 0))
tmp = Image.new('RGB', (12, 10), (255, 255, 255))
yin.paste(tmp, (18, 0))
# 生成八卦
def bagua(int):
if 0 <= int <= 7:
s = str(bin(int))[2:].zfill(3)
img = Image.new('RGB', (64, 64), (0, 0, 0))
box = Image.new('RGB', (63, 63), (255, 255, 255))
img.paste(box, (0, 0))
for i in range(3):
if s[2-i] == '0':
img.paste(yang, (8, 7 + i * 20))
elif s[2-i] == '1':
img.paste(yin, (8, 7 + i * 20))
return(img)
dic = {}
for i in range(8):
dic['><+-.,[]'[i]] = i
def baguafuck(code, width, path):
code = code.replace(' ', '').replace('\n', '').replace('\r', '')
l = len(code)
height = math.ceil(l / width)
img = Image.new('RGB', (width * 64, height * 64), (255, 255, 255))
for i in range(l):
x = (i % width) * 64
y = (i // width) * 64
img.paste(bagua(dic
]), (x, y))
img.save(path)
path = 'C:/Users/Administrator/Desktop/8guafuck/'
hw = '++++++++++[->++++++++++<]>++++.---.+++++++..+++.++++++++.--------.+++.------.--------.<'
flag = '+++++++++[->+++++++++<]>++++++++++++++++++.<++++[->++++<]>+.<+++[->---<]>-----.<+++[->+++<]>++++.<+++[->---<]>--.+++++++.++++++++.++++.<+++++++[->-------<]>--.<++++[->----<]>----.<+++++++[->+++++++<]>+++++++++++..+++++++++.<+++++[->-----<]>-.<++++[->----<]>-.<+++++[->-----<]>----.<++++++++[->++++++++<]>++++.<++++[->----<]>------.------.<++++++[->------<]>--.+.<+++++++[->+++++++<]>+++++++++++++.<+++++++++[->---------<]>.<+++++++++[->+++++++++<]>+++++++++++.<'
baguafuck(hw, 22, path + 'helloworld.png')
baguafuck(flag, 22, path + 'flag.png')
Baguafuck-decode:
from PIL import Image
def baguafuck_decode(path):
img = Image.open(path)
w, h = img.size
dic = '><+-.,[]'
code = ''
for y in range(0, h, 64):
for x in range(0, w, 64):
check = img.getpixel((x + 8, y + 7))
tmp = ''
if check == (0, 0, 0):
for k in range(3):
p = img.getpixel((x + 26, y + 47 - 20 * k))
if p == (0, 0, 0):
tmp += '0'
elif p == (255, 255, 255):
tmp += '1'
code += dic[int(tmp, 2)]
print(code)
path = 'C:/Users/Administrator/Desktop/8guafuck/'
baguafuck_decode(path + 'helloworld.png')
baguafuck_decode(path + 'flag.png')
cheyenne
额外IDAT数据块的来源:
https://www.mm683.com/album-fzly/47973
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论