Описание:
Вот мне и пригодилось табельное оружие! Я даже пару раз выстрелил из него, но войти во вкус не успел: мафиози запрыгнули в машину и смылись, оставив политика нам. Вокруг уже собралась толпа, некоторые снимали на видео нашу перестрелку. Я подошел к ближайшему пареньку с камерой и, на правах представителя закона, изъял ее. Хоть в самолете посмотрю «боевик», в котором и мне нашлась роль.
Много расписывать не буду. 😉 Среди фильма буквы ключа потихоньку появляются. А вот сам скрипт который помог это сделать:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# -*- coding: utf-8 -*- import socket as sock import re import random import os import time import base64, random, hashlib, binascii import pymedia import png H = 85; W = 200 def strToInt(str): j=0 i=0 for char in str[::-1]: j+=ord(char)<<(i*8) i+=1 return j def intToStr(i): s="" while i >0: s+=chr(i&0xff) i=i>>8 return s[::-1] def IsPrime(n): i = 2 N = int(n ** 0.5)+1 while i < N: if n % i == 0: return False i += 1 return True def PrimeMuls(a): res=[] i=2 while IsPrime(a)==0: if IsPrime(i) and a%i == 0: a=int(a/i) res.append(i) print i i=1 i+=1 res.append(a) return sorted(res) def IntToBin(n): digits = [] ln = 16 for i in range(ln): d = (n & (1 << (ln-1-i))) >> (ln-1-i) digits = digits + [d] return digits def BinToInt(digits): n = 0 for i in range(len(digits)): n += digits[len(digits)-i-1] << i return n def DecVideo(): def MakePNG(imgNum): f = open("E:\\CTF\Neoquest2016\\video\\img"+"{:04d}".format(imgNum)+".png", 'wb') w = png.Writer(W, H) w.write(f, arr) f.close() f = open("E:\\CTF\Neoquest2016\\video\\encoded_video", "rb") data = f.read(0x4268) print len(data) arr = [] for i in range(H): # 0x54 arr.append([]) for j in range(W): arr[i].append(ord(data[i*W+j])) arr[i].append(ord(data[i*W+j])) arr[i].append(ord(data[i*W+j])) Seg = 0; imgNum = 0 cntBlk = 0; cntChr = 0; blkN = 0; cntSub = 0; SegCnt = 0 while 1: sN = f.read(1) if len(sN) < 1: break s0 = f.read(1) bN = ord(sN) if (s0 <> chr(0)): cntBlk = 0 MakePNG(imgNum); imgNum += 1; print imgNum header = sN + s0 + f.read(6) Seg = ord(header[4]) SegCnt += 1 #print "================= SEGMENT #", Seg,"=================", hex(ord(header[0])), hex(ord(header[1])) continue bS = ord(f.read(1)); bE = ord(f.read(1)) cntBlk += 1 if blkN <> bN: blkN = bN cntChr = 0 cntSub = 0 cntSub += 1 for i in range(bE - bS + 1): b = ord(f.read(1)) arr[bN-1][(bS+i-1)*3+0] = b arr[bN-1][(bS+i-1)*3+1] = b arr[bN-1][(bS+i-1)*3+2] = b cntChr += 1 f.close() print "Done" DecVideo() |
lol 27 мая 2016
Это не Write-up. Это просто ответ на квест.