# sCTF 2016 writeup EN

I joined sCTF as hans and marked 270pts.

The following is the problems that I could submit the correct flag.

Please tell me if there are any better solver because I'm newbie in ctf.

I'd like to learn a lot.

### Banana Boy

The one picture carter.jpg was given.

I found another flame in the file with flag.

flag: sctf{tfw_d4nk_m3m3s_w1ll_a1w4y5_pr3v4il}

### rev1

When I checked the strings in binary using string command, I found a little bit strange characters and that was the flag.

flag: sctf{h4x0r!!!}

### rev2

I forgot how to solve, but I used objdump to find the magic number.

flag: sctf{51196695}

### Tracking

We're lucky because a lot of coordinates of satellites were zero!

I wrote a script as shown in below.

```#coding:utf8
import math
s = [[0,0,0],[2000,0,0],[2000,2000,0],[3000,1500,1700]]

def GetDistances(f):
return line

def CalcLocation(d):
x = (d[0]**2-d[1]**2+s[1][0]**2)/(2*s[1][0])
y = (d[0]**2-d[2]**2-2*s[2][0]*x+s[2][0]**2+s[2][1]**2)/(2*s[2][1])
z = (d[0]**2-d[3]**2-2*s[3][0]*x+s[3][0]**2-2*s[3][1]*y+s[3][1]**2+s[3][2]**2)/(2*s[3][2])
return [x,y,z]

def main():
with open("tracking_re.in","r") as f:
cnt = 0
sum_loc = [0,0,0]

while(True):#main loop
try:
d = GetDistances(f)
except Exception:
break
location = CalcLocation(d)
print(location)
for i in range(0,len(sum_loc)):
sum_loc[i] += location[i]
cnt += 1

#average
print(cnt)
print(sum_loc)
print([sum_loc[0]/cnt,sum_loc[1]/cnt,sum_loc[2]/cnt])

if __name__ == '__main__':
main()
```

I got the following flag.

flag: sctf{537, 516, 487}

### Verticode

We should obtain both colorcodes and characters.

I resized the "code1.png" to 8 x 1075 px and wrote the following script.

```#coding:utf8

import numpy as np
from PIL import Image
from matplotlib import pylab as plt
img_dir = ""
img_name = "code1.png"

img = np.array(Image.open(img_dir + img_name))
plt.imshow(img)
print(img.shape)
for y in range(img.shape[0]):
code = ""
color = -1
if all(img[y][0] == [255,255,0]):#color
color = 4
elif all(img[y][0] == [255,165,0]):
color = 5
elif all(img[y][0] == [128,0,128]):
color = 1
elif all(img[y][0] == [0,128,0]):
color = 3
elif all(img[y][0] == [255,0,0]):
color = 0
elif all(img[y][0] == [0,0,255]):
color = 2

for x in range(1,img.shape[1]):#binary
if img[y][x][0] == 0:
code += "1"
else:
code += "0"
print(chr(int(code,2)-color), end = "")
```

I could not come up with better writing immediately than elif...
That gave me the sentence and I found the flag between "ABC" and "DEF".

flag: sctf{iamtheflagalllowercasenojoke}