Rating: 5.0

mcgriddle (~40 solves)
---

> All CTF players are squares

We are given a PCAP file containing a network chess game. A Class B private address is playing the black pieces against a Class A private address server, which opens Nf3.

![](mcgriddle_pcap.png)

The notable thing is that the player is sending SVGs after each one of its moves, titled with even numbers. These contained strange ASCII, so we extracted them with an amazing PCAP parser *cough* Bash:

`mkdir svgs; i=0; while read p; do echo $p > svgs/$i.svg; ((i+=2)); done < <(strings final.pcap | grep "<svg")`

![](mcgriddle_svgs.png)

101 8x8 grids of characters. Because they are not particularly useful in SVG format, we grabbed the text only:

`i=0; while read p; do echo -n "$i "; echo -n $p | sed -e 's/<[^>]*>//g' | tr -d ' '; ((i+=2)); echo; done < <(strings final.pcap | grep "<svg")`

Which is now clearly base64-encoded data. Our next improvement to the pipeline was to base64-decode the data alongside:

`i=0; while read p; do echo -n "$i "; echo -n $p | sed -e 's/<[^>]*>//g' | tr -d ' '; echo -n ' '; echo -n $p | sed -e 's/<[^>]*>//g' | tr -d ' ' | base64 -d; ((i=i+2)); echo; done < <(strings final.pcap | grep "

Original writeup (https://github.com/hyperreality/ctf-writeups/blob/master/2018-csaw/mcgriddle.md).