51 lines
1.1 KiB
Python
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('ticket{foxtrot78531papa:GLliqPNOiBYZl7OwLiZCOx2yfdmbyO6cdgrfcNRC8iMPcJgy0YQ_H1kBeWTloVB_-w}\n')
|
|
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')
|