Writeup: 0ops 2015 - XYZ

Information

  • Category: Misc
  • Points: 150

Writeup

Introduction

Hosts gave us a text file full of float numbers. Each line contains 3 groups of 3 numbers divided by semicolon:

1
2
3
4
5
-4.751373,-2.622809,2.428588;-4.435134,-3.046589,2.406030;-4.788052,-2.661979,2.464709
-4.692748,-2.599611,2.629112;-4.656070,-2.560445,2.592991;-4.788052,-2.661979,2.464709
-4.692748,-2.599611,2.629112;-4.788052,-2.661979,2.464709;-4.435134,-3.046589,2.406030
-4.656070,-2.560445,2.592991;-4.516017,-2.714652,2.570303;-4.751373,-2.622809,2.428588
-4.656070,-2.560445,2.592991;-4.751373,-2.622809,2.428588;-4.788052,-2.661979,2.464709

This plus the challenge name gave us the idea that those floats where space coordinates.

Each point in a 3D space is defined by 3 coordinate.

The file was organised in groups of three points because everything in CG (Computer Graphics) is rendered as a super set of triangles, thus each line actually defines a face (or a triangle).

How to render this stuff?

First thing first, we are given a file which does not appear to correspond to any 3D model exchange file format. But after a brief search we found that blender has a plugin able to read the .raw format.

Raw format is quite similar to the file we are given; it just uses spaces to divide coordinates instead of colon and semicolon.

A simple script was able to make the file compliant to the raw standard.

We then opened the file with blender, which gave us a beautiful representation of the scene:

./blender.png

One of those strings was the flag!