Simple script with PIL and qrtools. Find the corners, edges and center, then bruteforce. Works a lot faster than expected, because of QR auto correction I think.```import urllibimport qrtools2 as qrtoolsimport requestsimport numpy as npfrom PIL import Imageimport itertools
images = 'RLUDFB'im_hash = "260058392f57bad8cbf9"while True:	print im_hash, "================="	ims = []	for i in images:		url = "http://qubicrube.pwn.seccon.jp:33654/images/" + im_hash + "_"+ i + ".png"		urllib.urlretrieve(url, "a.png")		print url		im = Image.open("a.png").convert('L')		ims.append(im)	ims_k = {}	for im in ims: 		unit = im.size[0]/3		for i in range(3):			for j in range(3):				qq = (im.crop((i*unit, j*unit, (i+1)*unit, (j+1)*unit)))				col = np.amax(qq)				if col not in ims_k.keys():					ims_k[col] = [[], [], []]				idx = 0				te = np.amin(qq.crop((0,0,unit,20)))>50				le = np.amin(qq.crop((0,0,20,unit)))>50				be = np.amin(qq.crop((0,unit-20,unit,unit)))>50				re = np.amin(qq.crop((unit-20,0,unit,unit)))>50				if te and le:					idx = 0				elif te and re:					idx = 0					qq = qq.rotate(90)				elif le and be:					idx = 0					qq = qq.rotate(270)				elif re and be:					idx = 0					qq = qq.rotate(180)				elif te :					idx = 1				elif le :					idx = 1					qq = qq.rotate(270)				elif re :					idx = 1					qq = qq.rotate(90)				elif be :					idx = 1					qq = qq.rotate(180)				else :					idx = 2				ims_k[col][idx].append(qq)	ims = []	for col in ims_k.keys():		print col		fl = True		ctr = 0		for cor in itertools.permutations(ims_k[col][0]):			if not fl: break 			for cent in itertools.permutations(ims_k[col][1]) :				cp = ims_k[col][2][0]				mat = [cor[0], cent[0], cor[1].rotate(270), cent[1].rotate(90), cp, cent[2].rotate(270), cor[2].rotate(90), cent[3].rotate(180), cor[3].rotate(180)]				q = np.vstack([np.hstack(mat[0:3]), np.hstack(mat[3:6]), np.hstack(mat[6:9])])				im = Image.fromarray(q)				ctr +=1				qr = qrtools.QR()				if qr.decode_image(im.convert('L')) and "36130634" not in qr.data:					fl = False					print qr.data					if "http" in qr.data:						im_hash = requests.get(qr.data).text.split('/images/')[1].split('_')[0]					break
# SECCON{Thanks to Denso Wave for inventing the QR code}```