Tags: physics. 


Each row in the inout file is an impact position of a bullet, along with its speed, agnle above the horizontal and direction from shooter.
For all the physics behind this challenge, read the original writeup (you can find it [HERE](http://zenhack.it/writeups/SwampCTF2018/orb2/).
I'll write below the script which produces the flag.

import pickle
import numpy as np
import scipy.io
import matplotlib.pyplot as plt

def predict_impact_point(row):
x,y = row[0],row[1]
v = row[2]
theta = row[3]
alpha = row[4]
vx = v * np.cos(theta)*np.cos(alpha)
vy = v * np.cos(theta)*np.sin(alpha)
vz = v * np.sin(theta)
g = 9.81
t = 2*vz / g
return x - vx*t, y - vy*t

data = pickle.load(open('page_of_numbers.p','rb'))
matrix_data = [ ]
res = []
for d in data:
val =predict_impact_point([i for i in d])
matrix_data = np.array(matrix_data)

plt.plot(matrix_data[:,0], matrix_data[:,1],'o')

![The flag](https://zangobot.github.io/assets/2018-04-02-swamp_p2/flag.jpg)

Original writeup (http://zenhack.it/writeups/SwampCTF2018/orb2/).