---
# System prepended metadata

title: Asean hacking sheild general division Busan korea
tags: [CTF]

---

---
title: Asean hacking sheild general division Busan korea
tags: CTF
---

![photo_2025-11-19_09-00-52](https://hackmd.io/_uploads/rkRr9j9ebx.jpg)

### Congrate to vietnam , malay , indo and 555


#### Chase Underwater Drone
What message did the underwater drone leave?
The characters allowed in the flag are limited to A-Z, '{', and '}' only.
https://drive.google.com/file/d/14TAhVg7VIWVy-8XZfGq3vO0G5LM_baCa/view?usp=sharing
#### solution 
it is drone log


```bash!
import sqlite3
import sys

import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter
import numpy as np

DB_FILE = "challenge.sqlite3"
TABLE_NAME = "GPS"

MIN_LNG = 128.775
MAX_LNG = 128.83
MIN_LAT = 35.065
MAX_LAT = 35.08

DOWNSAMPLE_STEP = 10
N_FRAMES = 80
FPS = 10
OUTPUT_GIF = "drone_path_scatter.gif"

POINT_SIZE = 3
POINT_ALPHA = 0.7
POINT_COLOR = "red"


def main():
    try:
        conn = sqlite3.connect(DB_FILE)
        cursor = conn.cursor()

        query = f"""
        SELECT timeus, lat, lng FROM {TABLE_NAME}
        WHERE alt < 0
          AND (lng BETWEEN {MIN_LNG} AND {MAX_LNG})
          AND (lat BETWEEN {MIN_LAT} AND {MAX_LAT})
        ORDER BY timeus
        """

        cursor.execute(query)
        rows = cursor.fetchall()

        if not rows:
            print("No data found.")
            sys.exit(1)

        rows = rows[::DOWNSAMPLE_STEP]

        timestamps = np.array([r[0] for r in rows])
        latitudes = np.array([r[1] for r in rows])
        longitudes = np.array([r[2] for r in rows])

        n_points = len(latitudes)
        if n_points < 2:
            print("Not enough points.")
            sys.exit(1)

        n_frames_used = min(N_FRAMES, n_points)
        frame_indices = np.linspace(1, n_points, n_frames_used, dtype=int)

        fig, ax = plt.subplots(figsize=(12, 8))
        scat = ax.scatter([], [], s=POINT_SIZE, alpha=POINT_ALPHA, c=POINT_COLOR)

        pad_lat = (latitudes.max() - latitudes.min()) * 0.05
        pad_lng = (longitudes.max() - longitudes.min()) * 0.05

        lat_min = latitudes.min() - pad_lat
        lat_max = latitudes.max() + pad_lat
        lng_min = longitudes.min() - pad_lng
        lng_max = longitudes.max() + pad_lng

        ax.set_xlim(lng_min, lng_max)
        ax.set_ylim(lat_min, lat_max)
        ax.set_xlabel("Longitude")
        ax.set_ylabel("Latitude")
        ax.set_title("Underwater drone path (scatter)")
        ax.grid(True)
        plt.tight_layout()

        def update(frame_idx):
            upto = frame_indices[frame_idx]
            x = longitudes[:upto]
            y = latitudes[:upto]
            points = np.column_stack([x, y])
            scat.set_offsets(points)
            ax.set_title(f"Underwater drone path (scatter) - Frame {frame_idx+1}/{n_frames_used}")
            return scat,

        anim = FuncAnimation(
            fig,
            update,
            frames=n_frames_used,
            interval=100,
            blit=False
        )

        writer = PillowWriter(fps=FPS)
        anim.save(OUTPUT_GIF, writer=writer)
        print(f"Saved GIF to {OUTPUT_GIF}")

    except Exception as e:
        print(f"Error: {e}")
    finally:
        if "conn" in locals():
            conn.close()


if __name__ == "__main__":
    main()

```


Flag: ACS{UNDERTHESEA}

### (misc)Control Room
Find the anomaly hidden in a security control room footage.

https://drive.google.com/file/d/16CKhdzPu_4JXTyCkzvzc0SqDDV_tTFNT/view?usp=sharing

when you extract each frames u will get
QUN 
C 
A 
Te1R 
N 
U 
SQU 
F 
I 
41U 
N 
D
F
DRSM  
L 
A 
05DW 
G 
V8x 
? 
U19 
OMFR 
fSO5 
WMV 
MxQ 
jFM 
MVR 
ZfQ=
combine them all, without 1 character

Flag: ACS{TRAN5P4R3NCY_1S_N0T_INV1S1B1L1TY}


### Last Pixel 
https://drive.google.com/file/d/1d4RY4lnhfR6UgjX8ZK20-BLIwHpsrBYL/view?usp=sharing

┌──(kali㉿kali)-[~/Desktop/longsamnang]
└─$ foremost cat.png                            
Processing: cat.png
|*|
![00000000](https://hackmd.io/_uploads/BJlRsi9x-g.bmp)
Part 1
![image](https://hackmd.io/_uploads/HyEaosce-x.png)

![image](https://hackmd.io/_uploads/rJq2sjcl-l.png)

https://gchq.github.io/CyberChef/#recipe=From_Hex('Auto')Magic(3,true,false,'')&input=RTEgMDUgNTIgMzUgRDEgNTQgMTAgRUUgRDcgQjUgNjggMzIgRDUgNTUgQ0EgQUQgQUIgQTkgQUIgMTQgNkEgRDQgQUMgQjEgMzYgOUMgOTkgRkIgMDcgOUUgNDcgRjUgRDIgNDYgREUgMDAgMDAgMDAgMTk


### Rev
easy lottery korea 

https://drive.google.com/file/d/1fnQZsGuODO1xJ_3_1Qi0O55yGpTzfEP2/view?usp=sharing
ACS{KOREA_LOTTERY_IS_SIMPLE}

### Crypto 

baby crypto
https://drive.google.com/file/d/1ewXxPnNsm1iJN1-Aag_c8YeatK1i1uar/view?usp=sharing

WE'RE GOIN' UP, UP, UP, IT'S OUR MOMENT YOU KNOW TOGETHER WE'RE GLOWING GONNA BE, GONNA BE GOLDEN OH, UP, UP, UP WITH OUR VOICES GONNA BE, GONNA BE GOLDEN YOU ARE MY SODA POP I WANT TO TASTE YOU YOU ARE MY SODA POP I WANT TO TASTE YOU THE FLAG IS YOU KNOW TOGETHER WE'RE GLOWING YOU'RE ALL I CAN THINK OF EVERY DROP I DRINK UP YOU'RE MY SODA POP MY LITTLE SODA POP COOL ME DOWN, YOU'RE SO HOT POUR ME UP, I WON'T STOP YOU'RE MY SODA POP MY LITTLE SODA POP

https://kpop-demon-hunters.fandom.com/wiki/Golden

ASC{Golden}



