During an analysis of a compromised satellite uplink, a suspicious dataset was recovered. Intelligence indicates it may encode physical access credentials hidden within the spatial structure of Volnaya’s covert data infrastructure.
The zip extracts to a uplink_spatial_auth.csv
.
x,y,z,label
23.618963638077386,1.6361824037129158,0.1868367359337949,2
21.0,22.0,0.5112963800310468,1
24.90563183083653,9.090546357672864,0.16593716012369497,2
6.0,24.0,0.4936907020272587,1
10.371859590422677,4.076531869693981,0.14996290922730326,2
12.32341650432917,10.006683484159732,0.49200490912773354,2
18.77095749365021,22.418186028569107,0.6504955606738451,2
8.0,24.0,0.45726108303280977,1
0.0,1.0,0.4550723326187745,1
0.0,24.0,0.5449609667697363,1
21.007031964749867,7.159562605323999,0.7641519065275454,0
9.0,18.0,0.5063345257984319,1
20.025075075538577,20.474936506851506,0.4987105026663814,3
12.80158752162755,10.032811674128627,0.9052059051553526,2
24.0,1.0,0.4733030024577274,1
---- continues to line 1824 ----
I am thinking I can get a python script to show me the points in a 3d rendering.
I asked ChatGPT the following:
I have a csv file of 3d points like the following:
x,y,z,label 23.618963638077386,1.6361824037129158,0.1868367359337949,2 21.0,22.0,0.5112963800310468,1 24.90563183083653,9.090546357672864,0.16593716012369497,2 6.0,24.0,0.4936907020272587,1 10.371859590422677,4.076531869693981,0.14996290922730326,2 12.32341650432917,10.006683484159732,0.49200490912773354,2 18.77095749365021,22.418186028569107,0.6504955606738451,2 8.0,24.0,0.45726108303280977,1
Write a python script to render the 3d points with a different color for each label
ChatGPT gave me the following code:
import pandas as pd
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Load CSV data
df = pd.read_csv('points.csv') # Replace with your CSV filename
# Create 3D plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
# Assign a color to each label
labels = df['label'].unique()
colors = plt.cm.get_cmap('tab10', len(labels)) # Up to 10 distinct colors
for i, label in enumerate(labels):
subset = df[df['label'] == label]
ax.scatter(subset['x'], subset['y'], subset['z'], label=f'Label {label}', color=colors(i))
# Labels and legend
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.legend()
plt.title('3D Points by Label')
plt.show()
After running the code:
I notice that there are a bunch of red dots in the middle.
I filtered the list to show just the red dots in the middle. Rotating the view to see it from the top down, I noticed it kind of looks like a QR code:
Unfortunately, I was unable to get my phone camera to just scan it, so I asked ChatGPT to help me convert the points into a reconstructed QR code:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Load data
df = pd.read_csv('points.csv')
# Round x and y to nearest integers (assuming pixel grid)
df['x'] = df['x'].round().astype(int)
df['y'] = df['y'].round().astype(int)
# Normalize to (0,0)
df['x'] -= df['x'].min()
df['y'] -= df['y'].min()
# Determine grid size
width = df['x'].max() + 1
height = df['y'].max() + 1
# Create blank grid
qr = np.zeros((height, width), dtype=int)
# Safely set pixels with integer conversion
for _, row in df[df['label'] == 1].iterrows():
x = int(row['x'])
y = int(row['y'])
qr[y, x] = 1 # Note: row index is Y, column index is X
# Show image
plt.imshow(qr, cmap='gray_r', interpolation='nearest')
plt.axis('off')
plt.title('Reconstructed QR Code (Top View)')
plt.show()
Running the code gave me the following:
Scanning the QR code gave me HTB{clu5t3r_k3y_l34k3d}