Tags: tesseract opencv forensics scripting
Rating:
### Writeup
As you can see, there is a video with a lot of binary text. What you need to do is split the video into images, then use the tool called 'Tesseract'(The answer to the description) to take the text from each image and finally convert to ascii. Solve script -
```py
from PIL import Image
from PIL import ImageDraw
from PIL import ImageFont
import pytesseract
import cv2
flag_video = cv2.VideoFlag_video('../Attachment/flag.avi') # Opening the video
img_number = 0
#========Splitting the video into frames=======
while (True):
success, img = flag_video.read()
if success:
cv2.imwrite(f'img_{img_number}.png', img)
else:
break
img_number = img_number+1
flag_video.release()
#=======Reading the data from each frame and storing into a variable=======
flag = []
for i in range(114):
x = pytesseract.image_to_string(Image.open(f'img_{i}'+'.png'))
for j in x:
if j in '01':
flag.append(j)
else:
continue
#=======Decoding the binary into text and printing the flag=======
decoded_flag=''
for i in flag:
decoded_flag += str(i)
decoded_flag = [chr(int(decoded_flag[i:i+8],2)) for i in range(0, len(decoded_flag), 8)]
print(''.join(decoded_flag))
```
Credits - https://techtutorialsx.com/ and https://geeksforgeeks.org/
### Flag - n00bz{7h1s_1s_4_v3ry_l0ng_fl4g_s0_th4t_y0u_c4nn0t_s0lv3_7h3_ch4ll3ng3_m4nu4lly_b7w_73s3r4c7_1s_4_v3ry_g00d_t00l!}