<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"><channel><title>Matt Spraggs - Matt Spraggs</title><link>https://www.mattspraggs.co.uk/</link><description></description><lastBuildDate>Sat, 31 Jan 2026 00:00:00 +0000</lastBuildDate><item><title>Go, Strings and Timing Attacks</title><link>https://www.mattspraggs.co.uk/go-strings-and-timing-attacks.html</link><description>&lt;p&gt;I actually quite like Go. Sure, it's not perfect, but I really like how brutally
simple it is. There's very few frills, and this makes code easy to understand,
most of the time.&lt;/p&gt;
&lt;p&gt;One of the things I find really interesting about Go is how it implements string
comparsions. Let's say you're building an internet-facing application with user
accounts. The site doesn't matter so much as long as there's some user input
that must be checked for validity. It could be a discount code, or perhaps you
want to check whether a particular username exists already. The crucial point is
that, for whatever reason, you've decided to do this validation in Go&lt;sup id="sf-go-strings-and-timing-attacks-1-back"&gt;&lt;a href="#sf-go-strings-and-timing-attacks-1" class="simple-footnote" title="This might seem pretty unlikely in practice, but you would be amazed at how common it is."&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;
&lt;p&gt;At some point you may need to compare two strings, either to authenticate a user
or for some other reason. This is pretty simple in Go:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;luckyGiveaway&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;"GIMMEFREESTUFF"&lt;/span&gt;

&lt;span class="kd"&gt;type&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Order&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kd"&gt;struct&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="c1"&gt;// ...&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nx"&gt;DiscountCode&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;validateDiscount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;order &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/go-strings-and-timing-attacks.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 31 Jan 2026 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2026-01-31:/go-strings-and-timing-attacks.html</guid><category>Blog</category><category>Cybersecurity</category><category>Go</category></item><item><title>StackSmash CTF: Refreshments</title><link>https://www.mattspraggs.co.uk/stacksmash-ctf-refreshments.html</link><description>&lt;p&gt;Hack The Box ran a CTF earlier in the year based exclusively around binary
exploitation. &lt;a href="https://ctf.hackthebox.com/event/details/stacksmash-ctf-2538"&gt;StackSmash
CTF&lt;/a&gt; contained six
challenges across two and a bit days.&lt;/p&gt;
&lt;p&gt;This is a deep dive into Refreshments, rated hard for difficulty. I'd be lying
if I said I solved this challenge without help, but there's a few aspects to the
official write-up that aren't really covered anywhere, so I figured it might be
useful to document those here.&lt;/p&gt;
&lt;h3&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;As with all other challenges in StackSmash, Refreshments is a binary
exploitation challenge. Let's start with the usual binary analyses:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;checksec&lt;span class="w"&gt; &lt;/span&gt;refreshments
&lt;span class="go"&gt;[*] './refreshments'&lt;/span&gt;
&lt;span class="go"&gt;    Arch:       amd64-64-little&lt;/span&gt;
&lt;span class="go"&gt;    RELRO:      Full RELRO&lt;/span&gt;
&lt;span class="go"&gt;    Stack:      Canary found&lt;/span&gt;
&lt;span class="go"&gt;    NX:         NX enabled&lt;/span&gt;
&lt;span class="go"&gt;    PIE:        PIE enabled&lt;/span&gt;
&lt;span class="go"&gt;    RUNPATH:    b'./glibc/'&lt;/span&gt;
&lt;span class="go"&gt;    SHSTK:      Enabled&lt;/span&gt;
&lt;span class="go"&gt;    IBT:        Enabled&lt;/span&gt;
&lt;span class="go"&gt;    Stripped:   No&lt;/span&gt;
&lt;span class="gp"&gt;$ &lt;/span&gt;./glibc/ld-linux-x86-64.so.2&lt;span class="w"&gt; &lt;/span&gt;glibc/libc.so.6&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;grep&lt;span class="w"&gt; &lt;/span&gt;version
&lt;span class="go"&gt;GNU C Library (GNU libc) stable release version 2.23, by Roland McGrath et al.&lt;/span&gt;
&lt;span class="go"&gt;Compiled by GNU &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/stacksmash-ctf-refreshments.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 25 Oct 2025 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2025-10-25:/stacksmash-ctf-refreshments.html</guid><category>Blog</category><category>Binary Exploitation</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Blue</title><link>https://www.mattspraggs.co.uk/hack-the-box-blue.html</link><description>&lt;p&gt;It's been a while, but this is my last write-up of the machines in the
&lt;a href="https://www.hackthebox.com"&gt;Hack The Box&lt;/a&gt; Beginner Track. This machine is
called Blue.&lt;/p&gt;
&lt;h3&gt;Enumeration&lt;/h3&gt;
&lt;p&gt;As with several of the other challenges, all we're given to start with is the IP
address of the target. Let's start with a simple &lt;code&gt;nmap&lt;/code&gt; port scan:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;nmap&lt;span class="w"&gt; &lt;/span&gt;-A&lt;span class="w"&gt; &lt;/span&gt;-Pn&lt;span class="w"&gt; &lt;/span&gt;blue.htb
&lt;span class="go"&gt;Starting Nmap 7.93 ( https://nmap.org ) at 2023-10-23 23:03 BST&lt;/span&gt;
&lt;span class="go"&gt;Nmap scan report for blue.htb (10.129.126.4)&lt;/span&gt;
&lt;span class="go"&gt;Host is up (0.045s latency).&lt;/span&gt;
&lt;span class="go"&gt;rDNS record for 10.129.126.4: blue&lt;/span&gt;
&lt;span class="go"&gt;Not shown: 991 closed tcp ports (conn-refused)&lt;/span&gt;
&lt;span class="go"&gt;PORT      STATE SERVICE      VERSION&lt;/span&gt;
&lt;span class="go"&gt;135/tcp   open  msrpc        Microsoft Windows RPC&lt;/span&gt;
&lt;span class="go"&gt;139/tcp   open  netbios-ssn  Microsoft Windows netbios-ssn&lt;/span&gt;
&lt;span class="go"&gt;445/tcp   open  microsoft-ds Windows 7 Professional 7601 Service Pack 1 microsoft-ds (workgroup: WORKGROUP)&lt;/span&gt;
&lt;span class="go"&gt;49152/tcp open  msrpc        Microsoft Windows RPC&lt;/span&gt;
&lt;span class="go"&gt;49153/tcp open  msrpc        Microsoft Windows RPC&lt;/span&gt;
&lt;span class="go"&gt;49154/tcp &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-blue.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 31 Oct 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-10-31:/hack-the-box-blue.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Snow Scan</title><link>https://www.mattspraggs.co.uk/hack-the-box-snow-scan.html</link><description>&lt;p&gt;Thought Machine recently entered the
&lt;a href="https://www.hackthebox.com/events/htb-business-ctf-2023"&gt;Hack The Box (HTB) Business CTF 2023&lt;/a&gt;.
This is a capture the flag (CTF) contest open to companies. Keen to put my
skills to the test, I naively joined our small team.&lt;/p&gt;
&lt;p&gt;The contest was organised by category, with challenges ranging from hacking
(emulated) SCADA devices (industrial control systems) to breaking blockchain
systems.&lt;/p&gt;
&lt;p&gt;Perhaps unsurprisingly, the challenges were waaaay harder than I expected. There
were various difficulty levels, but they were pretty far removed from the levels
on regular HTB machines and challenges.&lt;/p&gt;
&lt;p&gt;Needless to say, I didn't contribute much to my team's effort. I completed the
Drilling Platform challenge and most of Intelligence Service. I started on the
Snow Scan challenge as well, but I ran out of time.&lt;/p&gt;
&lt;p&gt;Being an "easy" challenge, I naively expected it to fall well within my
abilities. Surely I could do this? After the main contest finished, what &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-snow-scan.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 22 Aug 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-08-22:/hack-the-box-snow-scan.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Under Construction</title><link>https://www.mattspraggs.co.uk/hack-the-box-under-construction.html</link><description>&lt;p&gt;This is my seventh write-up of the &lt;a href="https://www.hackthebox.com"&gt;Hack The Box&lt;/a&gt;
Beginner Track. This is the first machine or challenge in the track labelled
"medium" difficulty. The others have so far been "easy", so this could be a bit
more involved than what we've seen so far. Let's dive in.&lt;/p&gt;
&lt;h3&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;As with &lt;a href="https://www.mattspraggs.co.uk/hack-the-box-you-know-0xdiablos.html"&gt;You Know 0xDiablos&lt;/a&gt; and
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-weak-rsa.html"&gt;Weak RSA&lt;/a&gt;, we're given a zip archive to
download, along with an IP/port combination. The former appears to contain the
source for a &lt;a href="https://en.wikipedia.org/wiki/Node.js"&gt;Node.js&lt;/a&gt; web app. Visiting
the IP/port, we see the following in the browser:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Login page" src="https://www.mattspraggs.co.uk/images/hack-the-box-under-construction/login.png"&gt;&lt;/p&gt;
&lt;p&gt;We don't have an account to log in with, so let's try registering a user.
Surprisingly, this works, and we can now log in with the new account:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Home page" src="https://www.mattspraggs.co.uk/images/hack-the-box-under-construction/homepage.png"&gt;&lt;/p&gt;
&lt;p&gt;Looks like the site is still a work in progress. Using the source code, perhaps
there's a weakness we can leverage to get past this page &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-under-construction.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 25 Jul 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-07-25:/hack-the-box-under-construction.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Netmon</title><link>https://www.mattspraggs.co.uk/hack-the-box-netmon.html</link><description>&lt;p&gt;This is my sixth write-up of the &lt;a href="https://www.backthebox.com/"&gt;Hack The Box&lt;/a&gt;
Beginner Track. This challenge is called Netmon.&lt;/p&gt;
&lt;h3&gt;Enumeration&lt;/h3&gt;
&lt;p&gt;Similarly to &lt;a href="https://www.mattspraggs.co.uk/hack-the-box-lame.html"&gt;Lame&lt;/a&gt; and
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-jerry.html"&gt;Jerry&lt;/a&gt;, we're given the IP address of the
machine we need to break into. As in those cases, we start by running &lt;code&gt;nmap&lt;/code&gt;
against the target:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;nmap&lt;span class="w"&gt; &lt;/span&gt;-A&lt;span class="w"&gt; &lt;/span&gt;-Pn&lt;span class="w"&gt; &lt;/span&gt;netmon.htb
&lt;span class="go"&gt;Starting Nmap 7.92 ( https://nmap.org ) at 2023-04-03 22:47 BST&lt;/span&gt;
&lt;span class="go"&gt;Stats: 0:00:07 elapsed; 0 hosts completed (1 up), 1 undergoing Service Scan&lt;/span&gt;
&lt;span class="go"&gt;Service scan Timing: About 20.00% done; ETC: 22:48 (0:00:24 remaining)&lt;/span&gt;
&lt;span class="go"&gt;Stats: 0:00:10 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan&lt;/span&gt;
&lt;span class="go"&gt;NSE Timing: About 99.27% done; ETC: 22:47 (0:00:00 remaining)&lt;/span&gt;
&lt;span class="go"&gt;Stats: 0:00:15 elapsed; 0 hosts completed (1 up), 1 undergoing Script Scan&lt;/span&gt;
&lt;span class="go"&gt;NSE Timing: About 95.00% done; ETC: 22:47 (0:00:00 remaining)&lt;/span&gt;
&lt;span class="go"&gt;Nmap scan report &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-netmon.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 23 May 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-05-23:/hack-the-box-netmon.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: You Know 0xDiablos</title><link>https://www.mattspraggs.co.uk/hack-the-box-you-know-0xdiablos.html</link><description>&lt;p&gt;I've been steadily working my way through the
&lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt; Beginner Track, writing each
challenge up here as I go. This is the fifth write-up. So far the challenges
have ranged from
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-lame.html"&gt;exploiting well-known vulnerabilities in Windows&lt;/a&gt;
to &lt;a href="https://www.mattspraggs.co.uk/hack-the-box-weak-rsa.html"&gt;breaking weak RSA public keys&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;This challenge is a little different to the ones we've covered on the track so
far. We're given a file to download &lt;em&gt;and&lt;/em&gt; an IP/port to attack. Downloading the
file, named &lt;code&gt;vuln&lt;/code&gt;, it looks like a Linux executable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;vuln
&lt;span class="go"&gt;vuln: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, BuildID[sha1]=ab7f19bb67c16ae453d4959fba4e6841d930a6dd, for GNU/Linux 3.2.0, not stripped&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Intriguing... We can use &lt;a href="https://linux.die.net/man/1/objdump"&gt;&lt;code&gt;objdump&lt;/code&gt;&lt;/a&gt; to
examine the executable's symbols:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;objdump -t vuln

&lt;span class="go"&gt;vuln:     file format elf32-i386&lt;/span&gt;

&lt;span class="go"&gt;SYMBOL TABLE:&lt;/span&gt;
&lt;span class="go"&gt;...&lt;/span&gt;
&lt;span class="go"&gt;00000000       F *UND*    00000000              printf@@GLIBC_2.0&lt;/span&gt;
&lt;span class="go"&gt;00000000       F *UND*    00000000              gets@@GLIBC_2.0&lt;/span&gt;
&lt;span class="go"&gt;08049391 g &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-you-know-0xdiablos.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Thu, 27 Apr 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-04-27:/hack-the-box-you-know-0xdiablos.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Jerry</title><link>https://www.mattspraggs.co.uk/hack-the-box-jerry.html</link><description>&lt;p&gt;This is my fourth write-up in a series on the
&lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt; Beginner Track. This challenge is
called Jerry, and it's a lot more like a classic
&lt;a href="https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)"&gt;CTF&lt;/a&gt; than the
previous two in my view,
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-find-the-easy-pass.html"&gt;Find the Easy Pass&lt;/a&gt; and
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-weak-rsa.html"&gt;Weak RSA&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Enumeration&lt;/h3&gt;
&lt;p&gt;Firing up the box and our attack machine, let's start with a straightforward
&lt;a href="https://nmap.org/"&gt;Nmap&lt;/a&gt; scan:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;nmap&lt;span class="w"&gt; &lt;/span&gt;-Pn&lt;span class="w"&gt; &lt;/span&gt;-A&lt;span class="w"&gt; &lt;/span&gt;-T4&lt;span class="w"&gt; &lt;/span&gt;jerry.htb
&lt;span class="go"&gt;Starting Nmap 7.92 ( https://nmap.org ) at 2022-12-11 16:11 GMT&lt;/span&gt;
&lt;span class="go"&gt;Nmap scan report for jerry.htb (10.129.24.108)&lt;/span&gt;
&lt;span class="go"&gt;Host is up (0.014s latency).&lt;/span&gt;
&lt;span class="go"&gt;Not shown: 999 filtered tcp ports (no-response)&lt;/span&gt;
&lt;span class="go"&gt;PORT     STATE SERVICE VERSION&lt;/span&gt;
&lt;span class="go"&gt;8080/tcp open  http    Apache Tomcat/Coyote JSP engine 1.1&lt;/span&gt;
&lt;span class="go"&gt;|_http-title: Apache Tomcat/7.0.88&lt;/span&gt;
&lt;span class="go"&gt;|_http-favicon: Apache Tomcat&lt;/span&gt;
&lt;span class="go"&gt;|_http-server-header: Apache-Coyote/1.1&lt;/span&gt;

&lt;span class="go"&gt;Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .&lt;/span&gt;
&lt;span class="go"&gt;Nmap done: 1 IP address (1 host up) scanned &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-jerry.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Wed, 12 Apr 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-04-12:/hack-the-box-jerry.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Weak RSA</title><link>https://www.mattspraggs.co.uk/hack-the-box-weak-rsa.html</link><description>&lt;p&gt;This is the third in a series of write-ups of challenges from the
&lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt; Beginner Track.&lt;/p&gt;
&lt;h3&gt;The Challenge&lt;/h3&gt;
&lt;p&gt;The previous challenge,
&lt;a href="https://www.mattspraggs.co.uk/hack-the-box-find-the-easy-pass.html"&gt;Find The Easy Pass&lt;/a&gt;, gave us a
Windows executable to reverse engineer. In this sense it didn't align with my
expectations of what a
&lt;a href="https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)"&gt;CTF&lt;/a&gt; involves.&lt;/p&gt;
&lt;p&gt;This challenge, Weak RSA, is similar in the sense that we're given two files to
download. This time though, neither of them are executable:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;key.pub
&lt;span class="go"&gt;key.pub: ASCII text&lt;/span&gt;
&lt;span class="gp"&gt;$ &lt;/span&gt;file&lt;span class="w"&gt; &lt;/span&gt;flag.enc&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="go"&gt;flag.enc: data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Looking at the contents of &lt;code&gt;key.pub&lt;/code&gt;, it looks like an RSA public key:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;cat&lt;span class="w"&gt; &lt;/span&gt;key.pub&lt;span class="w"&gt; &lt;/span&gt;
&lt;span class="go"&gt;-----BEGIN PUBLIC KEY-----&lt;/span&gt;
&lt;span class="go"&gt;MIIBHzANBgkqhkiG9w0BAQEFAAOCAQwAMIIBBwKBgQMwO3kPsUnaNAbUlaubn7ip&lt;/span&gt;
&lt;span class="go"&gt;4pNEXjvUOxjvLwUhtybr6Ng4undLtSQPCPf7ygoUKh1KYeqXMpTmhKjRos3xioTy&lt;/span&gt;
&lt;span class="go"&gt;23CZuOl3WIsLiRKSVYyqBc9d8rxjNMXuUIOiNO38ealcR4p44zfHI66INPuKmTG3&lt;/span&gt;
&lt;span class="go"&gt;RQP/6p5hv1PYcWmErEeDewKBgGEXxgRIsTlFGrW2C2JXoSvakMCWD60eAH0W2PpD&lt;/span&gt;
&lt;span class="go"&gt;qlqqOFD8JA5UFK0roQkOjhLWSVu8c6DLpWJQQlXHPqP702qIg/gx2o0bm4EzrCEJ&lt;/span&gt;
&lt;span class="go"&gt;4gYo6Ax+U7q6TOWhQpiBHnC0ojE8kUoqMhfALpUaruTJ6zmj8IA1e1M6bMqVF8sr&lt;/span&gt;
&lt;span class="go"&gt;lb/N&lt;/span&gt;
&lt;span class="go"&gt;-----END PUBLIC KEY-----&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;We can confirm this with &lt;a href="https://www.openssl.org/"&gt;OpenSSL&lt;/a&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="gp"&gt;$ &lt;/span&gt;openssl&lt;span class="w"&gt; &lt;/span&gt;rsa&lt;span class="w"&gt; &lt;/span&gt;-pubin&lt;span class="w"&gt; &lt;/span&gt;-in&lt;span class="w"&gt; &lt;/span&gt;key.pub&lt;span class="w"&gt; &lt;/span&gt;-text&lt;span class="w"&gt; &lt;/span&gt;-noout
&lt;span class="go"&gt;RSA Public-Key: (1026 bit)&lt;/span&gt;
&lt;span class="go"&gt;Modulus:&lt;/span&gt;
&lt;span class="go"&gt;    03:30:3b:79:0f:b1:49:da:34:06:d4 &amp;#8230;&amp;#160;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-weak-rsa.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Fri, 31 Mar 2023 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-03-31:/hack-the-box-weak-rsa.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Find The Easy Pass</title><link>https://www.mattspraggs.co.uk/hack-the-box-find-the-easy-pass.html</link><description>&lt;p&gt;This is the second in a series of write-ups of challenges from the
&lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt; Beginner Track.&lt;/p&gt;
&lt;p&gt;In my first write-up, &lt;a href="https://www.mattspraggs.co.uk/hack-the-box-lame.html"&gt;Lame&lt;/a&gt;, I talked about
how &lt;a href="https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)"&gt;capture the flag&lt;/a&gt;
(CTF) challenges can generally be broken down into three phases: enumeration,
gaining a foothold, and privilege escalation.&lt;/p&gt;
&lt;p&gt;This challenge, Find The Easy Pass, is a bit different from a regular CTF,
because there is no machine to break into. Instead, we're given a Windows
executable file.&lt;/p&gt;
&lt;p&gt;Leaving aside the question of whether it's safe to run random executables you
downloaded from the internet, this is what appears when the file is launched:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Password prompt" src="https://www.mattspraggs.co.uk/images/hack-the-box-find-the-easy-pass/main_window.png"&gt;&lt;/p&gt;
&lt;p&gt;Entering a possible password into the text box and clicking &lt;em&gt;Check Password&lt;/em&gt;
tells us whether we have the right password:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Wrong password" src="https://www.mattspraggs.co.uk/images/hack-the-box-find-the-easy-pass/wrong_password.png"&gt;&lt;/p&gt;
&lt;p&gt;Given the name of the challenge, it's pretty clear that the password is the flag
we have to find.&lt;/p&gt;
&lt;p&gt;We have a program that we can use to &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-find-the-easy-pass.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sun, 22 Jan 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-01-22:/hack-the-box-find-the-easy-pass.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>Hack The Box: Lame</title><link>https://www.mattspraggs.co.uk/hack-the-box-lame.html</link><description>&lt;p&gt;I've been doing a lot of &lt;a href="https://www.hackthebox.com/"&gt;Hack The Box&lt;/a&gt; lately. For
those who don't know, Hack The Box (HTB) is a playground for would-be hackers to
test their skills against machines with various security vulnerabilities. The
point isn't to use these skills for nefarious or illegal purposes. Instead, the
aim is to train people to think more critically about potential security
weaknesses in software so that they can design and implement systems with
security in mind. Each machine on HTB has a digital flag (typically a file on
the machine containing some secret string) that the hacker must capture. This
type of set up is called
&lt;a href="https://en.wikipedia.org/wiki/Capture_the_flag_(cybersecurity)"&gt;capture the flag&lt;/a&gt;,
or CTF.&lt;/p&gt;
&lt;p&gt;Newcomers to HTB can start with the Starting Point machines to familiarise
themselves with the CTF process. Generally speaking, gaining admin privileges on
a target machine is achieved in three stages:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enumeration - determining the services the target is running &amp;#8230;&amp;#160;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/hack-the-box-lame.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Mon, 02 Jan 2023 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2023-01-02:/hack-the-box-lame.html</guid><category>Blog</category><category>CTF</category><category>Cybersecurity</category><category>Hack The Box</category></item><item><title>West Coast Road Trip: Highlights</title><link>https://www.mattspraggs.co.uk/west-coast-road-trip-highlights.html</link><description>&lt;p&gt;With travel restrictions easing after COVID-19, we went on a long-overdue honeymoon road trip to the western United States.&amp;nbsp;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Thu, 29 Dec 2022 00:00:00 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2022-12-29:/west-coast-road-trip-highlights.html</guid><category>Blog</category><category>Travel</category></item><item><title>Rust + WebAssembly + JavaScript = Joy</title><link>https://www.mattspraggs.co.uk/rust-webassembly-javascript-joy.html</link><description>&lt;p&gt;Despite the title, this blog post doesn't start with Rust. Instead, it starts
with the tradgedy of the ongoing global COVID-19 pandemic.
&lt;a href="https://www.youtube.com/channel/UCoxcjq-8xIDTYp3uz647V5A"&gt;Numberphile&lt;/a&gt; had
recently uploaded a &lt;a href="https://www.youtube.com/watch?v=k6nLfCbAzgo"&gt;video&lt;/a&gt; about
the SIR model, which describes the spread of an infectious disease. The simple
yet powerful nature of the model and its relevance to current events struck a
chord with me: I had to code this up for myself.&lt;/p&gt;
&lt;p&gt;Python seemed like the best candidate for the job, given the existence of
numerical libraries such as NumPy and SciPy. My first iteration needed just
35 lines of code, a testament to Python's expressiveness and the well-designed
library interfaces.&lt;/p&gt;
&lt;p&gt;The next step seemed clear to me: how cool would it be to put this on the web?
Sure, it's a simple model, but one of great relevance given recent events, so
maybe it might interest some.&lt;/p&gt;
&lt;p&gt;I weighed my options. I had a &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/rust-webassembly-javascript-joy.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sun, 12 Apr 2020 00:00:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2020-04-12:/rust-webassembly-javascript-joy.html</guid><category>Blog</category><category>Rust</category><category>JavaScript</category><category>WebAssembly</category><category>SIR Model</category></item><item><title>Coming to you Live from a Cloudfront Server Near you!</title><link>https://www.mattspraggs.co.uk/coming-to-you-live-from-a-cloudfront-server-near-you.html</link><description>&lt;p&gt;Wow... it's been a year since I last wrote here.&lt;/p&gt;
&lt;p&gt;Awkward.&lt;/p&gt;
&lt;p&gt;I do have some excuses. This time last year I was in the middle of getting ready
to get married. It's not exactly something you can do over a weekend. Unless you
get married in Vegas. Maybe. Anyway, we didn't go to Vegas. &lt;/p&gt;
&lt;p&gt;Not long after that I started job-hunting again after feeling the urge for
something new. Like so many things, this expanded to fill almost all of my free
time, since the application process for development roles is apparently more
stressful than doing a presentation in front of thousands of people. Or maybe
that's just me? Not sure. In any case, it was a big time sink.&lt;/p&gt;
&lt;p&gt;Then we moved flat. I was offered a job in London, and commuting from
Southampton was about as much fun as trimming your toenails with a hammer, so
my wife &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/coming-to-you-live-from-a-cloudfront-server-near-you.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Thu, 18 Jul 2019 23:36:00 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2019-07-18:/coming-to-you-live-from-a-cloudfront-server-near-you.html</guid><category>Blog</category><category>AWS</category><category>Engineering</category></item><item><title>Loxx: Implementing Bob Nystrom's Lox in C++14</title><link>https://www.mattspraggs.co.uk/loxx-implementing-bob-nystroms-lox-in-c14.html</link><description>&lt;p&gt;Last autumn I discovered &lt;a href="https://craftinginterpreters.com"&gt;Crafting
Interpreters&lt;/a&gt;, a book by Bob Nystrom that gives readers a comprehensive guide to writing interpreters for a toy programming language, Lox. To me the world of compilers and interpreters has always been a total mystery. Okay, so I know what a syntax tree is, and I've occassionally even been brave enough to look at the assembly output for a program I've written. Also doesn't parsing need to happen at some point? Anyway, I was pretty intrigued, so in I dived.&lt;/p&gt;
&lt;p&gt;Bob's book is divided into two parts. The first details how to write a tree-walking interpreter in Java. Code is parsed and a syntax tree is generated from it, which is then evaluated in-place. By his own admission, this isn't a particularly efficient way to evaluate code, so the second part of the book describes how to write a stack-based virtual machine in C, which &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/loxx-implementing-bob-nystroms-lox-in-c14.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 29 May 2018 22:24:03 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2018-05-29:/loxx-implementing-bob-nystroms-lox-in-c14.html</guid><category>Blog</category><category>Compilers</category><category>C++</category></item><item><title>Embedded Software Practices: My Take</title><link>https://www.mattspraggs.co.uk/embedded-software-practices-my-take.html</link><description>&lt;p&gt;A friend and I were discussing the relative merits of LabVIEW the other day. Coming from a theoretical, software-focused background, I struggle with LabVIEW, which I think hides too many of the underlying workings of a program from the user for the sake of simplicity. My friend, on the other hand, does a lot of experimental engineering work and loves that LabVIEW frees him from the need to look at line after line of code.&lt;/p&gt;
&lt;p&gt;This got me thinking: should engineers, particularly those working in electronics, be more prepared to work with low-level code? I mean obviously they work with it already, but my (admittedly limited) experience so far is that few engineers take the time to engineer software that is clear, testable and maintainable. In a world where both hardware and software are advancing at an exponential rate, shouldn't we be cultivating engineers who at least appreciate the need &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/embedded-software-practices-my-take.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Wed, 25 Oct 2017 19:55:32 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2017-10-25:/embedded-software-practices-my-take.html</guid><category>Blog</category><category>Engineering</category><category>LabVIEW</category></item><item><title>Windows 10/Microsoft Rant</title><link>https://www.mattspraggs.co.uk/windows-10microsoft-rant.html</link><description>&lt;p&gt;&lt;em&gt;Note: This shitpost was originally going to be titled "Windows 10: My Take", but I changed it, for reasons that should become immediately apparent in the next paragraph.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;You know what really pisses me off with Microsoft's latest OS offering? Windows fricking update. Specifically: why Microsoft hasn't addressed the age-old problem of having updates that can only be installed during the shutdown/restart process.&lt;/p&gt;
&lt;p&gt;Okay, so it's true that I have just been through this little lesson in tedium, all because I had to restart my computer for unrelated reasons, but still. Given that, in &lt;a href="http://www.businessinsider.com/this-is-what-happened-to-windows-9-2014-10?IR=T"&gt;the words of Tony Prophet&lt;/a&gt;, Microsoft's corporate vice president, "Windows 10 is not going to be an incremental step from Windows 8.1," you'd think this is one of the issues they could address. It's true that I have little to no understanding of the internals of Windows, and I appreciate that part of Tony's &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/windows-10microsoft-rant.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Fri, 12 May 2017 15:58:38 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2017-05-12:/windows-10microsoft-rant.html</guid><category>Blog</category><category>Reviews</category></item><item><title>"New" Job!</title><link>https://www.mattspraggs.co.uk/new-job.html</link><description>&lt;p&gt;So the title of this post was originally going to be "New Job!", but since I've been in my current post since September I figured that might be a bit misleading, so I added some lovely quotes to make it feel less like a blatant lie.&lt;/p&gt;
&lt;p&gt;Since the end of my PhD I've been working in the department of Electronics and Computer Science at the University of Southampton, doing software engineering as part of a project called &lt;a href="https://smartmove.soton.ac.uk"&gt;SMARTmove&lt;/a&gt;. The project aims to rehabilitate the upper limbs of stroke patients using a technique known as &lt;a href="https://en.wikipedia.org/wiki/Functional_electrical_stimulation"&gt;functional electrical stimulation&lt;/a&gt; (FES). By electrically stimulating the arm muscles of stroke patients as they attempt a series of functional tasks it is anticipated that they will recover some control over the arm that was debilitated by the stroke.&lt;/p&gt;
&lt;p&gt;The electrical stimulation is provided via an electrode array printed onto a wearable sleeve, and the patient's &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/new-job.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Tue, 21 Feb 2017 17:38:51 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2017-02-21:/new-job.html</guid><category>Blog</category><category>Employment</category><category>C#</category></item><item><title>Updates and such</title><link>https://www.mattspraggs.co.uk/updates-and-such.html</link><description>&lt;p&gt;I'm acutely aware I haven't written here for... &lt;strong&gt;[looks for last post]&lt;/strong&gt; nearly
six months. This is mainly due to being busy, which in turn has fostered a
"sure, I'll write another blog post, when I have time" sort of mentality. I
started thinking this in September and, well, here we are.&lt;/p&gt;
&lt;p&gt;To force me to get my act together and start writing here again, I offer you
this mediocre excuse for a meaningful blog post. This isn't going to be very
long but is going to be a bit more wishy-washy, so if you don't care for that
sort of thing, feel free to ignore the rest of this and check back here later.&lt;/p&gt;
&lt;p&gt;So anyway, what's kept me so busy for the past few months? Well, finishing my
PhD by way of writing my thesis was the main thing. The actual writing part
filled up my summer entirely &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/updates-and-such.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Thu, 15 Dec 2016 10:35:13 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2016-12-15:/updates-and-such.html</guid><category>Blog</category><category>Engineering</category><category>Employment</category><category>Lattice QCD</category></item><item><title>Brexit</title><link>https://www.mattspraggs.co.uk/brexit.html</link><description>&lt;p&gt;It's been a while since I last posted here. Sorry. I hope you can forgive me in the fullness of time.&lt;/p&gt;
&lt;p&gt;So Thursday the UK decided to leave the EU for some bizarre reason that I still don't fully understand. Many of those who voted to remain feel angry and cheated out of what may have been a more prosperous future than they are now faced with. However, I don't want to rant and rave about how we've made a terrible mistake. I've already done that on Facebook.&lt;/p&gt;
&lt;p&gt;Sickeningly, there are already stories and rumours of open racism and/or xenophobia between citizens and EU migrants. As a country we cannot let this happen. This is something we have to fight before it becomes a societal norm.&lt;/p&gt;
&lt;p&gt;Here's my simple request, regardless of how you voted: next time you see or hear someone dishing out the racial or xenophobic abuse &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/brexit.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 25 Jun 2016 12:38:30 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2016-06-25:/brexit.html</guid><category>Blog</category><category>Politics</category><category>Brexit</category></item><item><title>Upgrading Mesa on Debian Stable (Jessie)</title><link>https://www.mattspraggs.co.uk/upgrading-mesa-on-debian-stable-jessie.html</link><description>&lt;p&gt;Hello! Belated merry Christmas and a very happy New Year!&lt;/p&gt;
&lt;p&gt;Right, now the social niceties are out the way let's get down to it. I play
World of Warcraft (WoW). There, I said it. No/some shame. I also run Linux. LMDE
2 Betsy to be exact. That's Linux Mint but based on the Debian repositories, so
I'm not shackled to the whims of Canonical. WoW is targetted at Windows and OSX,
but that's okay, as Wine &lt;a href="https://appdb.winehq.org/objectManager.php?sClass=version&amp;amp;iId=32314"&gt;handles WoW fairly
well&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;LMDE Betsy is currently based on Debian stable (Jessie), which uses Mesa 10.3.2.
Let's see how the Battle.net desktop client renders with this setup:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Battle.net rendered poorly" src="https://www.mattspraggs.co.uk/images/upgrading-mesa-debian-stable-jessie/broken.png"&gt;&lt;/p&gt;
&lt;p&gt;Erm... right... obviously some issues there. Reading around a while back, I
learned that this is because I'm running an Intel chipset with an old version of
Mesa. To get things looking pretty, I'd need Mesa 10.4 or later. So now &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/upgrading-mesa-on-debian-stable-jessie.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Wed, 06 Jan 2016 17:45:13 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2016-01-06:/upgrading-mesa-on-debian-stable-jessie.html</guid><category>Blog</category><category>Tech Help</category><category>Gaming</category><category>Linux</category></item><item><title>How to Get Around the Telegraph's Article Limit</title><link>https://www.mattspraggs.co.uk/how-to-get-around-the-telegraphs-article-limit.html</link><description>&lt;p&gt;If you read &lt;a href="http://www.telegraph.co.uk"&gt;The Telegraph&lt;/a&gt; online, you might have seen this appear recently:&lt;/p&gt;
&lt;p&gt;&lt;img alt="Telegraph Article Limit" src="https://www.mattspraggs.co.uk/images/how-get-around-telegraphs-article-limit/limit.png"&gt;&lt;/p&gt;
&lt;p&gt;Today I discovered how easy this is to get around: just delete the cookies The Telegraph deposits on your computer. To do this on Firefox, check out &lt;a href="https://support.mozilla.org/en-US/kb/delete-cookies-remove-info-websites-stored#w_delete-cookies-for-a-single-site"&gt;this link&lt;/a&gt;, and for Chrome, check &lt;a href=""&gt;this link&lt;/a&gt; out. Finally, for Internet Explorer, click &lt;a href="https://support.microsoft.com/en-gb/kb/278835"&gt;here&lt;/a&gt; for IE 6 to 9 and &lt;a href="http://windows.microsoft.com/en-gb/internet-explorer/delete-manage-cookies#ie=ie-11"&gt;here&lt;/a&gt; for IE 10 to 11.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sun, 27 Sep 2015 19:05:45 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-09-27:/how-to-get-around-the-telegraphs-article-limit.html</guid><category>Blog</category><category>Tech Help</category></item><item><title>Jeremy Corbyn: One Week In</title><link>https://www.mattspraggs.co.uk/jeremy-corbyn-one-week-in.html</link><description>&lt;p&gt;I didn't put Jeremy Corbyn on my ballot for the Labour leadership. He came across as very genuine during the leadership campaign, but I just couldn't get behind his policies. We lost the election because we didn't appeal to enough of the electorate, so running for the leadership with policies that only appeal to one segment of society seemed like pure folly.&lt;/p&gt;
&lt;p&gt;So as you might imagine I was pretty disappointed when the election result was announced. Corbyn was of course tipped to win, but winning in the first round of vote counting with a landslide majority certainly demonstrated a strong mandate for his leadership. I wasn't happy, but I couldn't argue with the democratic process.&lt;/p&gt;
&lt;p&gt;The next few days were like watching a train crash in agonisingly slow motion. Here's a list of Corbyn-related blunders I can think of off the top of my head right now:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dropping out &amp;#8230;&amp;#160;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/jeremy-corbyn-one-week-in.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 19 Sep 2015 15:25:03 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-09-19:/jeremy-corbyn-one-week-in.html</guid><category>Blog</category><category>Politics</category></item><item><title>Jurassic World Review</title><link>https://www.mattspraggs.co.uk/jurassic-world-review.html</link><description>&lt;p&gt;&lt;strong&gt;The &lt;a href="https://www.youtube.com/watch?v=RFinNxS5KN4"&gt;latest in the franchise&lt;/a&gt; doesn't quite capture the charm of the original, but with plenty of nods to the first film, eye-popping visuals and intense action scenes, you'll be thoroughly entertained to the end.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I really liked the first Jurassic Park film, like so many others, and I'm an even bigger fan of the book. So when rumours started circulating a few years ago that another film was in the works, I was pretty excited. Naturally, Spielberg wanted to ensure that the screenplay would be great, no doubt wanting to avoid a repeat of Jurassic Park III, so for many years production of Jurassic World was held up by several rewrites.&lt;/p&gt;
&lt;p&gt;The film is set twenty-two years after the incident in the first film. InGen has been bought out by &lt;a href="http://www.masraniglobal.com/"&gt;Masrani Global&lt;/a&gt;, which has achieved what the former never did: a theme park home to living dinosaurs.&lt;/p&gt;
&lt;p&gt;The filmmakers &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/jurassic-world-review.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sun, 14 Jun 2015 11:48:43 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-06-14:/jurassic-world-review.html</guid><category>Blog</category><category>Movies</category><category>Reviews</category></item><item><title>LEGO and Arduino: This Is the Droid You're Looking For</title><link>https://www.mattspraggs.co.uk/lego-and-arduino-this-is-the-droid-youre-looking-for.html</link><description>&lt;p&gt;Like any self-respecting geek, as soon as I heard about the
&lt;a href="http://www.arduino.cc/"&gt;Arduino&lt;/a&gt;, I wanted one. Admittedly I was pretty late to
the party, way past what could pass for fashionably late, as I only found out
about it a year and a half ago. But anyway, no sooner had I heard about it than
I was adding an Arduino Uno to my basket and checking out on Amazon.&lt;/p&gt;
&lt;p&gt;I diligently worked my way through the first few projects in the book that came
with the Uno, which provides a nice and gentle introduction to electronic
circuits. Inevitably I started dreaming up grand designs for what I was going to
do with my new toy. I had visions of some artificially intelligent robot that
could rove amiably around my flat without smashing into anything, learning the
layout as it went, and perhaps letting me know if it's going to rain later &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/lego-and-arduino-this-is-the-droid-youre-looking-for.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Mon, 08 Jun 2015 21:15:29 +0100</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-06-08:/lego-and-arduino-this-is-the-droid-youre-looking-for.html</guid><category>Blog</category><category>Web Development</category><category>Arduino</category><category>HTML</category><category>C++</category></item><item><title>Southampton Code Dojo - March 2015</title><link>https://www.mattspraggs.co.uk/southampton-code-dojo-march-2015.html</link><description>&lt;p&gt;I went along to the most recent &lt;a href="https://www.southamptoncodedojo.com/"&gt;Southampton Code Dojo&lt;/a&gt; last week (12th March). I'd been meaning to go along for a while, and given how much I enjoyed the Game Jam in January (see &lt;a href="http://mattspraggs.co.uk/blog/posts/global-game-jam-2015-part-i"&gt;here&lt;/a&gt;), I signed up earlier this month. The Dojo is basically a meet-up in the Southampton area for those interested in programming/coding, taking place on the second Thursday of each month. Unlike the Game Jam, which lasts all weekend, the Dojo takes place in two hours on one evening.&lt;/p&gt;
&lt;p&gt;I managed to get off to a good start by showing up a bit late, a result of me being under the strange notion that the event was being held in the Nuffield Theatre. The first twenty minutes were dedicated to mingling, getting to know people and having some free pizza and beer. During this time, we generated a list of potential projects for the &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/southampton-code-dojo-march-2015.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Thu, 19 Mar 2015 20:26:53 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-03-19:/southampton-code-dojo-march-2015.html</guid><category>Blog</category><category>Python</category></item><item><title>Global Game Jam 2015 (Part II)</title><link>https://www.mattspraggs.co.uk/global-game-jam-2015-part-ii.html</link><description>&lt;p&gt;Click &lt;a href="https://www.mattspraggs.co.uk/global-game-jam-2015-part-i.html"&gt;here&lt;/a&gt; for part I.&lt;/p&gt;
&lt;p&gt;Much of Saturday was spent laying down the game code. I worked on some of the game backend, creating an object-orientated interface to the game world and levels. The world would be split into several rooms, and each room would contain a series of blocks, some of which the player could interact with. Inspired by &lt;a href="http://www.spelunkyworld.com/"&gt;Spelunky&lt;/a&gt;, we decided to store our level layouts in ASCII files to simplify level editing.&lt;/p&gt;
&lt;p&gt;At 6pm on Saturday a mini-showcase was held. This was supposed to be an intermediate deadline to work towards to try and get something playable that could be worked with over the next 21 hours. By this point we had code that compiled and a character that could be moved around the screen. But the rest of world and all the game physics were missing, so we still had some way to go. In actuality &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/global-game-jam-2015-part-ii.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 07 Feb 2015 23:01:40 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-02-07:/global-game-jam-2015-part-ii.html</guid><category>Blog</category><category>Global Game Jam</category><category>Gaming</category><category>SDL</category><category>C++</category></item><item><title>Global Game Jam 2015 (Part I)</title><link>https://www.mattspraggs.co.uk/global-game-jam-2015-part-i.html</link><description>&lt;p&gt;It's 10pm on Friday night and I'm sat in the computer lab in &lt;a href="http://www.ecs.soton.ac.uk/"&gt;ECS&lt;/a&gt; at the University of Southampton. My mind is racing, full of what needs to be done and what I have to do; it's hard not to feel a little overwhelmed. No, this isn't some desperate slog in the last chance saloon to make a university assignment deadline. Earlier this year I signed up to take part in the &lt;a href="http://globalgamejam.org/"&gt;Global Game Jam 2015&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'd never written a computer game before, and the opportunity to get stuck in and work with others to produce something like a game really grabbed me. So, perhaps naively, I signed up. But still, I couldn't help but feel a little apprehensive. I wouldn't describe myself as a hardcore gamer. I play &lt;a href="http://www.teamfortress.com/"&gt;TF2&lt;/a&gt;, &lt;a href="http://minecraft.net"&gt;Minecraft&lt;/a&gt; and &lt;a href="http://eu.battle.net/wow/en/"&gt;WoW&lt;/a&gt; on occasion, but I've never really got past the casual stage of gaming. Did I have enough &amp;#8230;&amp;#160;&lt;a class="read-more" href="https://www.mattspraggs.co.uk/global-game-jam-2015-part-i.html"&gt;&lt;span&gt;Read more&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Matt Spraggs</dc:creator><pubDate>Sat, 31 Jan 2015 00:27:27 +0000</pubDate><guid isPermaLink="false">tag:www.mattspraggs.co.uk,2015-01-31:/global-game-jam-2015-part-i.html</guid><category>Blog</category><category>Gaming</category><category>SDL</category><category>C++</category></item></channel></rss>