picoCTFの過去問を解くためのサービスであるpycoGymにある問題のWriteupsを記録する
ここではReverse Engineeringにカテゴライズされる問題を扱う
Transformation
Python code ''.join([chr((ord(flag[i]) << 8) + ord(flag[i + 1])) for i in range(0, len(flag), 2)])
で変換された暗号文が与えられる
コードを読むと1バイト文字2つを結合して2バイト文字にしていることが分かるため、その逆変換を行いフラグを得る
逆変換用コード
暗号文を普通の文字列ではなく u'hoge'
とする点に注意
# -*- coding: utf-8 -*-
flag = ''
for c in list(u'灩捯䍔䙻ㄶ形楴獟楮獴㌴摟潦弸彥㜰㍢㐸㙽'):
flag += chr((ord(c) >> 8) & 255)
flag += chr(ord(c) & 255)
print(flag)