10
2
Fork 0
has-writeup/aaaa/digital-filters-meh/meh.py

51 lines
1.1 KiB
Python

import numpy as np
import matplotlib.pyplot as plt
from pwn import *
from scipy.spatial.transform import Rotation as R
import time
q_att_ts = []
badnesses = []
LOCAL = False
if LOCAL:
sep = ' '
r = process('octave challenge.m', shell=True)
else:
sep = ','
r = remote('filter.satellitesabove.me', 5014)
r.clean()
r.send('THE_TICKET')
time.sleep(0.1)
def adversary(true_pose):
lie = 0.25
euler = true_pose.as_euler('xyz')
euler[1] = lie
return R.from_euler('xyz',euler)
for i in range(10000):
if LOCAL:
badness = float(r.readline().decode().strip())
log.info(f'[!] badness: {badness}')
badnesses.append(badness)
rl = r.readline(timeout=3)
if rl.startswith(b'Uh oh,'):
r.interactive()
log.info(f'<== [{i}] {rl}')
[w,x,y,z] = [float(x) for x in rl.decode().strip().split()]
true_pose = R.from_quat([x,y,z,w])
new_pose = adversary(true_pose)
[x,y,z,w] = new_pose.as_quat()
msg = sep.join(map(str,[w,x,y,z]))
log.info(f'==> {msg}')
r.send(msg+'\n')