10
2
Fork 0
has-writeup/aaaa/seeing-stars/seeing-stars.py

51 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
import cv2
import math
import numpy as np
from pwnlib import tubes
import time
def solve(rawdat):
data = []
for line in rawdat.strip().split('\n'):
data.append([int(x) for x in line.split(',')])
x = np.array(data, dtype='uint8').T
im = x # cv2.imread("output.png", cv2.IMREAD_GRAYSCALE)
ret, thresh = cv2.threshold(im.copy(), 127, 255, 0)
kernel = np.ones((5, 5), np.uint8)
dilated = cv2.dilate(thresh.copy(), kernel, iterations = 2)
cnts, hier = cv2.findContours(dilated.copy(), \
cv2.RETR_TREE, \
cv2.CHAIN_APPROX_NONE)
edit = thresh.copy()
cv2.drawContours(edit, cnts, -1, (0, 255, 0), 3)
solve = ''
for c in cnts:
M = cv2.moments(c)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
solve += (str(cX) + "," + str(cY)+'\n')
return solve
TICKET = 'ticket{juliet73678uniform:GIE7kv0AbxY1I813dEkfLYg2PhHMnJcdqhouI2zuDG1md_2TQ1Ikgab5osJoTRFzIg}'
r = tubes.remote.remote('stars.satellitesabove.me', 5013)
r.recvline()
r.send(TICKET+'\n')
going = True
while going:
rawdat = r.recvuntil('Enter', drop=True)
time.sleep(0.5)
r.clean()
solution = solve(rawdat.decode())
r.send(solution+'\n')
time.sleep(0.1)
if r.recvuntil('Left...\n') == b'0 Left...\n':
time.sleep(0.1)
print(r.clean())