diff --git a/assets/images/blog/blog-1.jpg b/assets/images/blog/blog-1.jpg index 2fcaedc..d2a9a28 100644 Binary files a/assets/images/blog/blog-1.jpg and b/assets/images/blog/blog-1.jpg differ diff --git a/assets/images/blog/blog-2.jpg b/assets/images/blog/blog-2.jpg index d2a9a28..2fcaedc 100644 Binary files a/assets/images/blog/blog-2.jpg and b/assets/images/blog/blog-2.jpg differ diff --git a/assets/images/blog/post-2/binexpl.png b/assets/images/blog/post-2/binexpl.png new file mode 100644 index 0000000..0ee5464 Binary files /dev/null and b/assets/images/blog/post-2/binexpl.png differ diff --git a/assets/images/blog/post-2/infiniteluck.png b/assets/images/blog/post-2/infiniteluck.png new file mode 100644 index 0000000..60c4a72 Binary files /dev/null and b/assets/images/blog/post-2/infiniteluck.png differ diff --git a/assets/images/blog/post-2/infiniteluck_solved.png b/assets/images/blog/post-2/infiniteluck_solved.png new file mode 100644 index 0000000..9bc32bd Binary files /dev/null and b/assets/images/blog/post-2/infiniteluck_solved.png differ diff --git a/assets/images/blog/post-2/ourencissec.png b/assets/images/blog/post-2/ourencissec.png new file mode 100644 index 0000000..3ddd3bd Binary files /dev/null and b/assets/images/blog/post-2/ourencissec.png differ diff --git a/content/blog/post-1.md b/content/blog/post-1.md index 8c2dbeb..adcd495 100644 --- a/content/blog/post-1.md +++ b/content/blog/post-1.md @@ -1,6 +1,6 @@ --- title: "Cyber Defence on the Digital Frontline: A Mission with NATO" -image: "images/blog/blog-2.jpg" +image: "images/blog/blog-1.jpg" date: "2025-05-13 00:00:00 +0000 UTC" description: "An inside look into Howest’s participation in NATO’s world-leading cyber defence exercise, Locked Shields." categories: ["cybersecurity", "event recap"] @@ -27,7 +27,7 @@ The exercise required more than technical fixes. It demanded communication with #### The Black Team: Rapid Response in Action -A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style — “you can wear sunglasses inside” became their unofficial motto. +A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style “you can wear sunglasses inside” became their unofficial motto. Their presence underlined a critical lesson: not every problem fits neatly within a team’s silo. Real-world defence requires flexibility, speed and lateral thinking. diff --git a/content/blog/post-2.md b/content/blog/post-2.md new file mode 100644 index 0000000..75e7578 --- /dev/null +++ b/content/blog/post-2.md @@ -0,0 +1,85 @@ +--- +title: "Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience" +image: "images/blog/post-2/binexpl.png" +date: "2025-03-15 00:00:00 +0000 UTC" +description: "I tackled buffer overflows, reversed Android apps, cracked crypto puzzles, and solved a 'one-in-a-million' guessing game, but the challenge that stuck with me was rebuilding a fragmented DEX in memory." +categories: ["cybersecurity", "CTF", "education"] +draft: false +--- + +# Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience + +On March 14 and 15, I joined the Cyber Security Challenge Belgium qualifiers with three teammates. For two days, we threw ourselves at CTF challenges covering binary exploitation, Android reversing, cryptography, and more. + +What follows is a recap of the challenges I personally worked on, some I solved, some I didn’t—but all of them left me with new skills and new ideas. + +#### A Buffer Overflow to Warm Up + +One of the first challenges I picked involved a binary with a basic stack overflow. I used standard techniques, finding the offset, hijacking the return address, and injecting shellcode. Tools like `pwntools` helped automate the payload crafting. It was a great warm-up and a confidence boost once it worked. + +{{< image src="images/blog/post-2/binexpl.png" caption="Binary Exploitation Flag" alt="alter-text" height="425" width="860" position="center" command="fit" option="q100" class="img-fluid" title="Binary Exploitation Flag" >}} + +#### OurEncIsSec: Zip Bombs and OEIS + +Then there was a more elaborate cryptography challenge: 18 zip files, each password-protected. We cracked the first three passwords using John the Ripper and got numeric values from them. I searched the sequence in OEIS and found it matched [A007408](https://oeis.org/A007408), which gave us the full pattern of passwords. + +Using this, I could extract all zip contents automatically, reconstruct the password-protected message, and finally reveal the flag. + +{{< image src="images/blog/post-2/ourencissec.png" caption="Picture of the solution" alt="alter-text" height="425" width="860" position="center" command="fit" option="q100" class="img-fluid" title="OurEncIsSec being cracked" >}} + +#### Infinite Luck: One in a Million? + +One challenge involved “guessing” a thousand random numbers between 1 and 10. The banner claimed it required infinite luck, but of course, the randomness was seeded. After inspecting the generator, I realized it was deterministic. By precomputing seeds and output sequences, I could match the challenge’s banner to a specific seed and regenerate the entire solution. + +![Infinite Luck Banner](images/blog/post-2/infiniteluck.png) +![Infinite Luck Solved](images/blog/post-2/infiniteluck_solved.png) +{{< image src="images/blog/post-2/infiniteluck.png" caption="Challange picture" alt="alter-text" height="425" width="860" position="center" command="fit" option="q100" class="img-fluid" title="Binary Exploitation Flag" >}} +{{< image src="images/blog/post-2/infiniteluck_solved.png" caption="Correct number order" alt="alter-text" height="425" width="860" position="center" command="fit" option="q100" class="img-fluid" title="Binary Exploitation Flag" >}} + + + +#### Android Reversing: FRIDA and JADX + +Several APKs were part of the qualifier set. I used JADX to decompile them and FRIDA to patch logic at runtime. In one challenge, I bypassed license validation by forcing key methods to return true and unlocking hidden functionality. + +#### The Challenge That Stuck with Me: Rebuilding a Split DEX + +This one stood out. + +The app used a 4×8 button grid. Pressing buttons loaded a sequence of `blockXX` files from assets. These were concatenated in-memory and passed into `InMemoryDexClassLoader` to load a class called `be.dauntless.flag.Flag`. + +```java +Class loadClass = new InMemoryDexClassLoader(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()), getClassLoader()) + .loadClass("be.dauntless.flag.Flag"); +```` + +Each `block` was a fragment of a DEX file, but the app didn’t tell you the right order. I tried manually inspecting the fragments, identifying methods, string constants, and offsets—to infer how to reassemble the full file. I got close, but didn’t crack it in time. + +That challenge stuck with me because it combined static analysis, runtime introspection, and logic reconstruction. It wasn’t just technical, it was creative. + +#### The One That Got Away: TLS Fingerprinting + +Another challenge involved a Go-based TLS server that rejected all client connections unless they matched a specific fingerprint. I used Go’s `tls.Config` to replicate the version, cipher suites, and ALPN: + +```go +tls.Config{ + MinVersion: tls.VersionTLS13, + CipherSuites: []uint16{ + tls.TLS_AES_128_GCM_SHA256, + // ... + }, + NextProtos: []string{"h2"}, +} +``` + +Despite that, the server still refused the connection. I suspect it was using JA4 or similar TLS fingerprinting techniques we couldn’t fully emulate. We had to move on, but I’d love to revisit that one someday. + +#### Final Thoughts + +I didn’t solve everything. But that wasn’t the point. Every challenge was a practical puzzle, something to decode, reverse, bypass, or just understand a little better. + +Working as a team with Evarist, Nathan, and Waut made it even more valuable. We bounced ideas off each other, divided tasks, and got a much broader set of challenges covered. + +The Cyber Security Challenge Belgium qualifiers weren’t easy. But they were the best kind of difficult, the kind that teaches you something whether you solve the problem or not. + + diff --git a/content/project/project-2.md b/content/project/project-2.md index db985f2..3161069 100644 --- a/content/project/project-2.md +++ b/content/project/project-2.md @@ -67,13 +67,13 @@ rc-service nginx start rc-update add nginx ``` -Now my Hugo site is live and served directly as static files—no backend, no database, just HTML, CSS, and JS. +Now my Hugo site is live and served directly as static files, no backend, no database, just HTML, CSS, and JS.
### Why Alpine + Hugo? -Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update—just rebuild and re-upload the `public/` folder. +Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update, just rebuild and re-upload the `public/` folder.
diff --git a/hugo_stats.json b/hugo_stats.json index cadc941..035ff57 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -77,6 +77,11 @@ "btn", "btn-outline-primary", "btn-primary", + "caption-Binary-Exploitation-Flag", + "caption-Challange-picture", + "caption-Correct-number-order", + "caption-OurEncIsSec-Screenshot", + "caption-Picture-of-the-solution", "caption-an-image-caption", "card", "card-body", @@ -263,14 +268,25 @@ "warning" ], "ids": [ + "a-buffer-overflow-to-warm-up", + "android-reversing-frida-and-jadx", + "android-reversing-with-frida-and-jadx", "architecture-overview", "banner", + "binary-exploitation-finding-the-overflow", "blockquote", "blog", + "caption-Binary Exploitation Flag", + "caption-Challange picture", + "caption-Correct number order", + "caption-OurEncIsSec Screenshot", + "caption-Picture of the solution", "caption-an image caption", "code-and-syntax-highlighting", "contact", "creating-the-hugo-site", + "cryptography-and-pattern-matching", + "cryptography-guessing-seeds", "customization", "cyber-defence-on-the-digital-frontline-a-mission-with-nato", "drmdtool", @@ -282,6 +298,7 @@ "final-thoughts", "firstName", "five-things-i-took-away", + "from-android-reversing-to-broken-tls-my-experience-at-the-cyber-security-challenge-belgium-qualifiers", "from-the-battlefield-to-the-classroom", "goals-and-use-case", "heading-1", @@ -296,6 +313,7 @@ "human-factors-and-growth", "image", "index-page", + "infinite-luck-one-in-a-million", "inline-html", "its-not-just-tech", "lastName", @@ -304,6 +322,7 @@ "navbar", "on-a-mission-with-nato-cyber-defence-on-the-frontline", "ordered-list", + "ourencissec-zip-bombs-and-oeis", "paragraph", "phone", "portfolio", @@ -311,12 +330,16 @@ "progress-page", "repository", "resume", + "reversing-rebuilding-and-failing-better-my-cyber-security-challenge-belgium-qualifier-experience", "select-page", "sidebarContent", "skill", "tables", "the-black-team-rapid-response-in-action", + "the-challenge-that-stuck-with-me-rebuilding-a-split-dex", "the-exercise-locked-shields", + "the-go-server-that-didnt-budge", + "the-one-that-got-away-tls-fingerprinting", "toggler", "ui-previews", "unordered-list", @@ -326,6 +349,7 @@ "whats-new", "why-alpine--hugo", "why-it-mattered", + "working-as-a-team", "you-cant-prepare-for-this", "youtube-video" ] diff --git a/public/blog/index.html b/public/blog/index.html index 7f5220c..b076257 100644 --- a/public/blog/index.html +++ b/public/blog/index.html @@ -470,27 +470,27 @@ Cyber Defence on the Digital Frontline: A Mission with NATO +
+ +
+ diff --git a/public/blog/index.xml b/public/blog/index.xml index 15919d3..b780583 100644 --- a/public/blog/index.xml +++ b/public/blog/index.xml @@ -15,5 +15,12 @@ http://192.168.90.54:1313/blog/post-1/ <h1 id="cyber-defence-on-the-digital-frontline-a-mission-with-nato">Cyber Defence on the Digital Frontline: A Mission with NATO</h1> <h4 id="on-a-mission-with-nato-cyber-defence-on-the-frontline">On a Mission with NATO: Cyber Defence on the Frontline</h4> <p>Howest’s ongoing commitment to world-class cybersecurity training took center stage again as six lecturers from the Cyber Security program joined forces with experts from Latvia, Luxembourg and Belgium in one of NATO&rsquo;s most intensive simulations: the Locked Shields exercise, hosted by the Cooperative Cyber Defence Centre of Excellence (CCDCOE). Now in its fifth year of participation, the Howest team shared their firsthand experiences at a special evening talk at Howest Bruges.</p> + + Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience + http://192.168.90.54:1313/blog/post-2/ + Sat, 15 Mar 2025 00:00:00 +0000 + http://192.168.90.54:1313/blog/post-2/ + <h1 id="reversing-rebuilding-and-failing-better-my-cyber-security-challenge-belgium-qualifier-experience">Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience</h1> <p>On March 14 and 15, I joined the Cyber Security Challenge Belgium qualifiers with three teammates. For two days, we threw ourselves at CTF challenges covering binary exploitation, Android reversing, cryptography, and more.</p> + diff --git a/public/blog/post-1/index.html b/public/blog/post-1/index.html index dc29213..eb4662d 100644 --- a/public/blog/post-1/index.html +++ b/public/blog/post-1/index.html @@ -159,8 +159,8 @@ - - + + @@ -487,27 +487,27 @@ Cyber Defence on the Digital Frontline: A Mission with NATOWhat do you do when a rogue process might be malware, or maybe just a poorly named service? What happens when your teammate refuses to act unless something is “officially malicious”? The team faced cultural clashes, communication breakdowns and stress-testing of both systems and people.

The exercise required more than technical fixes. It demanded communication with simulated commanders, media and public stakeholders. Reporting became just as important as patching. It taught participants how to translate technical impact into real-world consequences. Not “port 8443 unreachable”, but “our air defence system is degraded, and we cannot fly planes”.

The Black Team: Rapid Response in Action

-

A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style — “you can wear sunglasses inside” became their unofficial motto.

+

A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style “you can wear sunglasses inside” became their unofficial motto.

Their presence underlined a critical lesson: not every problem fits neatly within a team’s silo. Real-world defence requires flexibility, speed and lateral thinking.

Highlights and Blooper Reel

There were plenty of mishaps. Misfired scripts, team mix-ups, and one case where a DNS setup from a previous year was reused by mistake. Someone tried renaming cut to shutdown, breaking essential operations until it was fixed. Systems rebooted into chaos, a manual was uploaded to public GitHub, and the team had to quickly learn the difference between symbolic links and real binaries.

diff --git a/public/blog/post-2/index.html b/public/blog/post-2/index.html index 89d1c54..54f3aa5 100644 --- a/public/blog/post-2/index.html +++ b/public/blog/post-2/index.html @@ -4,7 +4,7 @@ -Cyber Defence on the Digital Frontline: A Mission with NATO +Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience Cyber Defence on the Digital Frontline: A Mission with NATO +Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience @@ -106,7 +106,7 @@ + content="I tackled buffer overflows, reversed Android apps, cracked crypto puzzles, and solved a 'one-in-a-million' guessing game, but the challenge that stuck with me was rebuilding a fragmented DEX in memory." /> @@ -159,22 +159,22 @@ - - + + + content="summary" /> - - + + + content="image/.png" /> @@ -184,14 +184,14 @@ - - + + - - + + @@ -383,11 +383,11 @@
-

Cyber Defence on the Digital Frontline: A Mission with NATO

+

Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience

@@ -487,31 +491,31 @@ Cyber Defence on the Digital Frontline: A Mission with NATO + alt="Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience" + width="634" + height="156" /> @@ -527,30 +531,485 @@
-

Cyber Defence on the Digital Frontline: A Mission with NATO

-

On a Mission with NATO: Cyber Defence on the Frontline

-

Howest’s ongoing commitment to world-class cybersecurity training took center stage again as six lecturers from the Cyber Security program joined forces with experts from Latvia, Luxembourg and Belgium in one of NATO’s most intensive simulations: the Locked Shields exercise, hosted by the Cooperative Cyber Defence Centre of Excellence (CCDCOE). Now in its fifth year of participation, the Howest team shared their firsthand experiences at a special evening talk at Howest Bruges.

-

The Exercise: Locked Shields

-

Locked Shields is no ordinary simulation. It is a full-scale, live-fire cyber defence exercise involving more than 6,000 machines and a narrative scenario so detailed it includes geopolitics, disinformation and even fictional countries. This year, the Blue Team 03 (our team) defended a simulated nation’s critical infrastructure including power plants, satellites, 5G networks and banking systems, all while under constant attack from a coordinated Red Team using automated scripts and over 28,000 attacks across two days.

-

And yes, every team (Red, Blue, Yellow, White) uses Ansible. For everything.

-

High Stakes, Real Lessons

-

What do you do when a rogue process might be malware, or maybe just a poorly named service? What happens when your teammate refuses to act unless something is “officially malicious”? The team faced cultural clashes, communication breakdowns and stress-testing of both systems and people.

-

The exercise required more than technical fixes. It demanded communication with simulated commanders, media and public stakeholders. Reporting became just as important as patching. It taught participants how to translate technical impact into real-world consequences. Not “port 8443 unreachable”, but “our air defence system is degraded, and we cannot fly planes”.

-

The Black Team: Rapid Response in Action

-

A new but powerful presence in the simulation was the Black Team, a rapid-response unit deployed when problems became too complex for any single team. Acting like special forces, they jumped in when incidents crossed team boundaries or demanded unconventional solutions. Their mission was to find out what was happening, assess the impact and suggest fast, creative responses. Introduced just last year, this team quickly proved its value again in 2025. They even embraced the role with style — “you can wear sunglasses inside” became their unofficial motto.

-

Their presence underlined a critical lesson: not every problem fits neatly within a team’s silo. Real-world defence requires flexibility, speed and lateral thinking.

-

Highlights and Blooper Reel

-

There were plenty of mishaps. Misfired scripts, team mix-ups, and one case where a DNS setup from a previous year was reused by mistake. Someone tried renaming cut to shutdown, breaking essential operations until it was fixed. Systems rebooted into chaos, a manual was uploaded to public GitHub, and the team had to quickly learn the difference between symbolic links and real binaries.

-

Human Factors and Growth

-

From detecting malware with Velociraptor and Q9, to encountering teammates who took orders literally, the learning was intense. One participant noted that while Belgian and Luxembourg teams prioritized knowledge sharing, others preferred strict protocol. This highlighted cultural differences and the importance of interpersonal skills.

-

The biggest lesson? You are never fully prepared. Every iteration of Locked Shields is different. But each one sharpens not only your skills, but also your ability to function as a team under extreme conditions.

-

From the Battlefield to the Classroom

-

This experience directly impacts the classroom. Inspired by the exercise, Howest is introducing new hands-on courses like “Glutamine” in semester five. Students will be dropped into realistic broken networks, with misconfigurations, fake firewalls and simulated threats. It is chaos, but controlled. And that is the point.

-

As one speaker said: “You don’t win Locked Shields. You just survive it better than the rest.”

+

Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience

+

On March 14 and 15, I joined the Cyber Security Challenge Belgium qualifiers with three teammates. For two days, we threw ourselves at CTF challenges covering binary exploitation, Android reversing, cryptography, and more.

+

What follows is a recap of the challenges I personally worked on, some I solved, some I didn’t—but all of them left me with new skills and new ideas.

+

A Buffer Overflow to Warm Up

+

One of the first challenges I picked involved a binary with a basic stack overflow. I used standard techniques, finding the offset, hijacking the return address, and injecting shellcode. Tools like pwntools helped automate the payload crafting. It was a great warm-up and a confidence boost once it worked.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + alter-text + +
+ Binary Exploitation Flag +
+
+ + + + + + + + + + + + + +

OurEncIsSec: Zip Bombs and OEIS

+

Then there was a more elaborate cryptography challenge: 18 zip files, each password-protected. We cracked the first three passwords using John the Ripper and got numeric values from them. I searched the sequence in OEIS and found it matched A007408, which gave us the full pattern of passwords.

+

Using this, I could extract all zip contents automatically, reconstruct the password-protected message, and finally reveal the flag.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + alter-text + +
+ Picture of the solution +
+
+ + + + + + + + + + + +

Infinite Luck: One in a Million?

+

One challenge involved “guessing” a thousand random numbers between 1 and 10. The banner claimed it required infinite luck, but of course, the randomness was seeded. After inspecting the generator, I realized it was deterministic. By precomputing seeds and output sequences, I could match the challenge’s banner to a specific seed and regenerate the entire solution.

+

Infinite Luck Banner +Infinite Luck Solved + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + alter-text + +
+ Challange picture +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + alter-text + +
+ Correct number order +
+
+ + + + + + + + + + +

+

Android Reversing: FRIDA and JADX

+

Several APKs were part of the qualifier set. I used JADX to decompile them and FRIDA to patch logic at runtime. In one challenge, I bypassed license validation by forcing key methods to return true and unlocking hidden functionality.

+

The Challenge That Stuck with Me: Rebuilding a Split DEX

+

This one stood out.

+

The app used a 4×8 button grid. Pressing buttons loaded a sequence of blockXX files from assets. These were concatenated in-memory and passed into InMemoryDexClassLoader to load a class called be.dauntless.flag.Flag.

+
Class loadClass = new InMemoryDexClassLoader(ByteBuffer.wrap(byteArrayOutputStream.toByteArray()), getClassLoader())
+    .loadClass("be.dauntless.flag.Flag");
+

Each block was a fragment of a DEX file, but the app didn’t tell you the right order. I tried manually inspecting the fragments, identifying methods, string constants, and offsets—to infer how to reassemble the full file. I got close, but didn’t crack it in time.

+

That challenge stuck with me because it combined static analysis, runtime introspection, and logic reconstruction. It wasn’t just technical, it was creative.

+

The One That Got Away: TLS Fingerprinting

+

Another challenge involved a Go-based TLS server that rejected all client connections unless they matched a specific fingerprint. I used Go’s tls.Config to replicate the version, cipher suites, and ALPN:

+
tls.Config{
+    MinVersion: tls.VersionTLS13,
+    CipherSuites: []uint16{
+        tls.TLS_AES_128_GCM_SHA256,
+        // ...
+    },
+    NextProtos: []string{"h2"},
+}
+

Despite that, the server still refused the connection. I suspect it was using JA4 or similar TLS fingerprinting techniques we couldn’t fully emulate. We had to move on, but I’d love to revisit that one someday.

Final Thoughts

-

The exercise teaches more than just cybersecurity. It builds trust. It proves that knowing your teammates can be as important as knowing the tools. Whether that comes from a shared flight or a pre-exercise barbecue, it all matters when the pressure hits.

-

Want to see how cyber defence works in real life? This is it.

-
+

I didn’t solve everything. But that wasn’t the point. Every challenge was a practical puzzle, something to decode, reverse, bypass, or just understand a little better.

+

Working as a team with Evarist, Nathan, and Waut made it even more valuable. We bounced ideas off each other, divided tasks, and got a much broader set of challenges covered.

+

The Cyber Security Challenge Belgium qualifiers weren’t easy. But they were the best kind of difficult, the kind that teaches you something whether you solve the problem or not.

diff --git a/public/categories/ctf/index.html b/public/categories/ctf/index.html new file mode 100644 index 0000000..94142c7 --- /dev/null +++ b/public/categories/ctf/index.html @@ -0,0 +1,9373 @@ + + + + + + +CTF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Professors - Personal Portfolio Theme + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + + +
+
+
+
+
+ +

Category

+ +

//CTF

+
+ +
+
+
+
+ + + + +
+ +
+
+
+
+ +
+
+
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/categories/ctf/index.xml b/public/categories/ctf/index.xml new file mode 100644 index 0000000..64336a8 --- /dev/null +++ b/public/categories/ctf/index.xml @@ -0,0 +1,19 @@ + + + + CTF on Professors - Personal Portfolio Theme + http://192.168.90.54:1313/categories/ctf/ + Recent content in CTF on Professors - Personal Portfolio Theme + Hugo + en + Sat, 15 Mar 2025 00:00:00 +0000 + + + From Android Reversing to Broken TLS: My Experience at the Cyber Security Challenge Belgium Qualifiers + http://192.168.90.54:1313/blog/post-2/ + Sat, 15 Mar 2025 00:00:00 +0000 + http://192.168.90.54:1313/blog/post-2/ + <h1 id="from-android-reversing-to-broken-tls-my-experience-at-the-cyber-security-challenge-belgium-qualifiers">From Android Reversing to Broken TLS: My Experience at the Cyber Security Challenge Belgium Qualifiers</h1> <p>On March 14 and 15, I participated in the qualifiers of the 2025 Cyber Security Challenge Belgium. Together with three friends, we formed a team and spent two days on the CTF platform solving as many challenges as we could. This post sums up the problems I personally worked on—some I solved, some I didn’t, all of them worth the effort.</p> + + + diff --git a/public/categories/index.xml b/public/categories/index.xml index 2dc6749..489cb12 100644 --- a/public/categories/index.xml +++ b/public/categories/index.xml @@ -22,6 +22,20 @@ http://192.168.90.54:1313/categories/event-recap/ + + CTF + http://192.168.90.54:1313/categories/ctf/ + Sat, 15 Mar 2025 00:00:00 +0000 + http://192.168.90.54:1313/categories/ctf/ + + + + Education + http://192.168.90.54:1313/categories/education/ + Sat, 15 Mar 2025 00:00:00 +0000 + http://192.168.90.54:1313/categories/education/ + + Book Rack http://192.168.90.54:1313/categories/book-rack/ @@ -36,13 +50,6 @@ http://192.168.90.54:1313/categories/class-room/ - - Education - http://192.168.90.54:1313/categories/education/ - Mon, 01 Jan 0001 00:00:00 +0000 - http://192.168.90.54:1313/categories/education/ - - Library http://192.168.90.54:1313/categories/library/ diff --git a/public/images/blog/blog-1.jpg b/public/images/blog/blog-1.jpg index 2fcaedc..d2a9a28 100644 Binary files a/public/images/blog/blog-1.jpg and b/public/images/blog/blog-1.jpg differ diff --git a/public/images/blog/blog-1_hu_4b1782fd1a15e83b.webp b/public/images/blog/blog-1_hu_4b1782fd1a15e83b.webp new file mode 100644 index 0000000..05ac5cd Binary files /dev/null and b/public/images/blog/blog-1_hu_4b1782fd1a15e83b.webp differ diff --git a/public/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg b/public/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg new file mode 100644 index 0000000..a648ef0 Binary files /dev/null and b/public/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg differ diff --git a/public/images/blog/blog-1_hu_8def6289c64a2dc8.webp b/public/images/blog/blog-1_hu_8def6289c64a2dc8.webp new file mode 100644 index 0000000..d2df11c Binary files /dev/null and b/public/images/blog/blog-1_hu_8def6289c64a2dc8.webp differ diff --git a/public/images/blog/blog-1_hu_c69497547b6be0b8.webp b/public/images/blog/blog-1_hu_c69497547b6be0b8.webp new file mode 100644 index 0000000..761b202 Binary files /dev/null and b/public/images/blog/blog-1_hu_c69497547b6be0b8.webp differ diff --git a/public/images/blog/blog-1_hu_d77be45b273e444.jpg b/public/images/blog/blog-1_hu_d77be45b273e444.jpg new file mode 100644 index 0000000..8166702 Binary files /dev/null and b/public/images/blog/blog-1_hu_d77be45b273e444.jpg differ diff --git a/public/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp b/public/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp new file mode 100644 index 0000000..c3c9b92 Binary files /dev/null and b/public/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp differ diff --git a/public/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp b/public/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp new file mode 100644 index 0000000..504f0cc Binary files /dev/null and b/public/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp differ diff --git a/public/images/blog/blog-2.jpg b/public/images/blog/blog-2.jpg index d2a9a28..2fcaedc 100644 Binary files a/public/images/blog/blog-2.jpg and b/public/images/blog/blog-2.jpg differ diff --git a/public/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg b/public/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg new file mode 100644 index 0000000..b767029 Binary files /dev/null and b/public/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg differ diff --git a/public/images/blog/blog-2_hu_6ceec691ca0ef84f.webp b/public/images/blog/blog-2_hu_6ceec691ca0ef84f.webp new file mode 100644 index 0000000..6cbb625 Binary files /dev/null and b/public/images/blog/blog-2_hu_6ceec691ca0ef84f.webp differ diff --git a/public/images/blog/blog-2_hu_fa6a5ad626b60663.webp b/public/images/blog/blog-2_hu_fa6a5ad626b60663.webp new file mode 100644 index 0000000..ded9740 Binary files /dev/null and b/public/images/blog/blog-2_hu_fa6a5ad626b60663.webp differ diff --git a/public/images/blog/blog1/binexpl.png b/public/images/blog/blog1/binexpl.png new file mode 100644 index 0000000..0ee5464 Binary files /dev/null and b/public/images/blog/blog1/binexpl.png differ diff --git a/public/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp b/public/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp new file mode 100644 index 0000000..414541a Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp differ diff --git a/public/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp b/public/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp new file mode 100644 index 0000000..f55ed6d Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp differ diff --git a/public/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp b/public/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp new file mode 100644 index 0000000..3eb0f51 Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp differ diff --git a/public/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp b/public/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp new file mode 100644 index 0000000..339aabf Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp differ diff --git a/public/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp b/public/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp new file mode 100644 index 0000000..f21d026 Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp differ diff --git a/public/images/blog/blog1/binexpl_hu_afca672637b6b98d.png b/public/images/blog/blog1/binexpl_hu_afca672637b6b98d.png new file mode 100644 index 0000000..977496e Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_afca672637b6b98d.png differ diff --git a/public/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png b/public/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png new file mode 100644 index 0000000..95551cf Binary files /dev/null and b/public/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png differ diff --git a/public/images/blog/post-2/binexpl.png b/public/images/blog/post-2/binexpl.png new file mode 100644 index 0000000..0ee5464 Binary files /dev/null and b/public/images/blog/post-2/binexpl.png differ diff --git a/public/images/blog/post-2/binexpl_hu_2b8858450dae90c.png b/public/images/blog/post-2/binexpl_hu_2b8858450dae90c.png new file mode 100644 index 0000000..e3691c5 Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_2b8858450dae90c.png differ diff --git a/public/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp b/public/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp new file mode 100644 index 0000000..414541a Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp b/public/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp new file mode 100644 index 0000000..f55ed6d Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp b/public/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp new file mode 100644 index 0000000..3eb0f51 Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp b/public/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp new file mode 100644 index 0000000..339aabf Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp b/public/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp new file mode 100644 index 0000000..f21d026 Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_afca672637b6b98d.png b/public/images/blog/post-2/binexpl_hu_afca672637b6b98d.png new file mode 100644 index 0000000..977496e Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_afca672637b6b98d.png differ diff --git a/public/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp b/public/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp new file mode 100644 index 0000000..88ab527 Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp differ diff --git a/public/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png b/public/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png new file mode 100644 index 0000000..95551cf Binary files /dev/null and b/public/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png differ diff --git a/public/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp b/public/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp new file mode 100644 index 0000000..321f5fb Binary files /dev/null and b/public/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp differ diff --git a/public/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png b/public/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png new file mode 100644 index 0000000..4eecc04 Binary files /dev/null and b/public/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png differ diff --git a/public/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png b/public/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png new file mode 100644 index 0000000..e2b5a7b Binary files /dev/null and b/public/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png differ diff --git a/public/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp b/public/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp new file mode 100644 index 0000000..b68c392 Binary files /dev/null and b/public/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp differ diff --git a/public/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png b/public/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png new file mode 100644 index 0000000..94d7490 Binary files /dev/null and b/public/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png differ diff --git a/public/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp b/public/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp new file mode 100644 index 0000000..5514534 Binary files /dev/null and b/public/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp differ diff --git a/public/index.html b/public/index.html index fdb5aba..709e1d1 100644 --- a/public/index.html +++ b/public/index.html @@ -1374,6 +1374,163 @@
+
+ +
+
+ @@ -1454,27 +1611,27 @@ http://192.168.90.54:1313/blog/post-1/ <h1 id="cyber-defence-on-the-digital-frontline-a-mission-with-nato">Cyber Defence on the Digital Frontline: A Mission with NATO</h1> <h4 id="on-a-mission-with-nato-cyber-defence-on-the-frontline">On a Mission with NATO: Cyber Defence on the Frontline</h4> <p>Howest’s ongoing commitment to world-class cybersecurity training took center stage again as six lecturers from the Cyber Security program joined forces with experts from Latvia, Luxembourg and Belgium in one of NATO&rsquo;s most intensive simulations: the Locked Shields exercise, hosted by the Cooperative Cyber Defence Centre of Excellence (CCDCOE). Now in its fifth year of participation, the Howest team shared their firsthand experiences at a special evening talk at Howest Bruges.</p> + + Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience + http://192.168.90.54:1313/blog/post-2/ + Sat, 15 Mar 2025 00:00:00 +0000 + http://192.168.90.54:1313/blog/post-2/ + <h1 id="reversing-rebuilding-and-failing-better-my-cyber-security-challenge-belgium-qualifier-experience">Reversing, Rebuilding, and Failing Better: My Cyber Security Challenge Belgium Qualifier Experience</h1> <p>On March 14 and 15, I joined the Cyber Security Challenge Belgium qualifiers with three teammates. For two days, we threw ourselves at CTF challenges covering binary exploitation, Android reversing, cryptography, and more.</p> + diff --git a/public/project/project-2/index.html b/public/project/project-2/index.html index 0fea093..f639908 100644 --- a/public/project/project-2/index.html +++ b/public/project/project-2/index.html @@ -546,10 +546,10 @@

And configured /etc/nginx/conf.d/default.conf to serve files from /var/www/html. Then I enabled and started nginx:

rc-service nginx start
 rc-update add nginx
-

Now my Hugo site is live and served directly as static files—no backend, no database, just HTML, CSS, and JS.

+

Now my Hugo site is live and served directly as static files, no backend, no database, just HTML, CSS, and JS.


Why Alpine + Hugo?

-

Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update—just rebuild and re-upload the public/ folder.

+

Alpine Linux is minimal and fast, perfect for serving static sites with low resource usage. Combined with Hugo’s speed and flexibility, I get a complete, performant setup that I fully control. It’s secure, lightweight, and easy to update, just rebuild and re-upload the public/ folder.


This setup is perfect if you want full control and minimal overhead for a personal blog or portfolio.

diff --git a/public/sitemap.xml b/public/sitemap.xml index 05fcced..eed7d3d 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -28,12 +28,19 @@ http://192.168.90.54:1313/blog/ 2025-05-13T00:00:00+00:00 + + http://192.168.90.54:1313/categories/ctf/ + 2025-03-15T00:00:00+00:00 + + http://192.168.90.54:1313/categories/education/ + 2025-03-15T00:00:00+00:00 + + http://192.168.90.54:1313/blog/post-2/ + 2025-03-15T00:00:00+00:00 http://192.168.90.54:1313/categories/book-rack/ http://192.168.90.54:1313/categories/class-room/ - - http://192.168.90.54:1313/categories/education/ http://192.168.90.54:1313/categories/library/ diff --git a/resources/_gen/images/images/blog/blog-1_hu_40013eb3c01bb49d.webp b/resources/_gen/images/images/blog/blog-1_hu_40013eb3c01bb49d.webp new file mode 100644 index 0000000..db209b8 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_40013eb3c01bb49d.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_4b1782fd1a15e83b.webp b/resources/_gen/images/images/blog/blog-1_hu_4b1782fd1a15e83b.webp new file mode 100644 index 0000000..05ac5cd Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_4b1782fd1a15e83b.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_79d0c49c4813d1f.webp b/resources/_gen/images/images/blog/blog-1_hu_79d0c49c4813d1f.webp new file mode 100644 index 0000000..5b4c406 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_79d0c49c4813d1f.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg b/resources/_gen/images/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg new file mode 100644 index 0000000..a648ef0 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_8dd81870b6dccbe7.jpg differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_8def6289c64a2dc8.webp b/resources/_gen/images/images/blog/blog-1_hu_8def6289c64a2dc8.webp new file mode 100644 index 0000000..d2df11c Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_8def6289c64a2dc8.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_9cc0ad66ad871209.jpg b/resources/_gen/images/images/blog/blog-1_hu_9cc0ad66ad871209.jpg new file mode 100644 index 0000000..20ec202 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_9cc0ad66ad871209.jpg differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_a918b4531cb8d14.jpg b/resources/_gen/images/images/blog/blog-1_hu_a918b4531cb8d14.jpg new file mode 100644 index 0000000..712c3af Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_a918b4531cb8d14.jpg differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_c69497547b6be0b8.webp b/resources/_gen/images/images/blog/blog-1_hu_c69497547b6be0b8.webp new file mode 100644 index 0000000..761b202 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_c69497547b6be0b8.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_d77be45b273e444.jpg b/resources/_gen/images/images/blog/blog-1_hu_d77be45b273e444.jpg new file mode 100644 index 0000000..8166702 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_d77be45b273e444.jpg differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp b/resources/_gen/images/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp new file mode 100644 index 0000000..c3c9b92 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_dcdbc2fa445f98d0.webp differ diff --git a/resources/_gen/images/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp b/resources/_gen/images/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp new file mode 100644 index 0000000..504f0cc Binary files /dev/null and b/resources/_gen/images/images/blog/blog-1_hu_f9ab0f5f2b4013b3.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg b/resources/_gen/images/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg new file mode 100644 index 0000000..b767029 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_15ef236ad8ece8ed.jpg differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_2c19d5ff68a990f9.webp b/resources/_gen/images/images/blog/blog-2_hu_2c19d5ff68a990f9.webp new file mode 100644 index 0000000..500f5b8 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_2c19d5ff68a990f9.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_6ceec691ca0ef84f.webp b/resources/_gen/images/images/blog/blog-2_hu_6ceec691ca0ef84f.webp new file mode 100644 index 0000000..6cbb625 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_6ceec691ca0ef84f.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_73a220b7626cb3be.webp b/resources/_gen/images/images/blog/blog-2_hu_73a220b7626cb3be.webp new file mode 100644 index 0000000..3b2544f Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_73a220b7626cb3be.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_abfb5918c4409d03.webp b/resources/_gen/images/images/blog/blog-2_hu_abfb5918c4409d03.webp new file mode 100644 index 0000000..6fb907d Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_abfb5918c4409d03.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_d55a0be3dbcf57b7.webp b/resources/_gen/images/images/blog/blog-2_hu_d55a0be3dbcf57b7.webp new file mode 100644 index 0000000..e0802d6 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_d55a0be3dbcf57b7.webp differ diff --git a/resources/_gen/images/images/blog/blog-2_hu_fa6a5ad626b60663.webp b/resources/_gen/images/images/blog/blog-2_hu_fa6a5ad626b60663.webp new file mode 100644 index 0000000..ded9740 Binary files /dev/null and b/resources/_gen/images/images/blog/blog-2_hu_fa6a5ad626b60663.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_10a7992adeb04ee3.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_10a7992adeb04ee3.webp new file mode 100644 index 0000000..4c254de Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_10a7992adeb04ee3.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp new file mode 100644 index 0000000..414541a Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_3d36b409c72f3586.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_53322d3a0ed5e5f5.png b/resources/_gen/images/images/blog/blog1/binexpl_hu_53322d3a0ed5e5f5.png new file mode 100644 index 0000000..8639a9c Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_53322d3a0ed5e5f5.png differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp new file mode 100644 index 0000000..f55ed6d Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_62abc2aca7882dbf.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp new file mode 100644 index 0000000..3eb0f51 Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_6c7b74fb7ea6923.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp new file mode 100644 index 0000000..339aabf Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_87c8bee28ebae804.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp new file mode 100644 index 0000000..f21d026 Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_935160fb8df57d09.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_9c9eea2ec402f1e0.webp b/resources/_gen/images/images/blog/blog1/binexpl_hu_9c9eea2ec402f1e0.webp new file mode 100644 index 0000000..6000a5e Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_9c9eea2ec402f1e0.webp differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_afca672637b6b98d.png b/resources/_gen/images/images/blog/blog1/binexpl_hu_afca672637b6b98d.png new file mode 100644 index 0000000..977496e Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_afca672637b6b98d.png differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_efa32c38b92f4bc5.png b/resources/_gen/images/images/blog/blog1/binexpl_hu_efa32c38b92f4bc5.png new file mode 100644 index 0000000..806e4de Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_efa32c38b92f4bc5.png differ diff --git a/resources/_gen/images/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png b/resources/_gen/images/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png new file mode 100644 index 0000000..95551cf Binary files /dev/null and b/resources/_gen/images/images/blog/blog1/binexpl_hu_fd757ee89fe03225.png differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_10a7992adeb04ee3.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_10a7992adeb04ee3.webp new file mode 100644 index 0000000..4c254de Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_10a7992adeb04ee3.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_2b8858450dae90c.png b/resources/_gen/images/images/blog/post-2/binexpl_hu_2b8858450dae90c.png new file mode 100644 index 0000000..e3691c5 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_2b8858450dae90c.png differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp new file mode 100644 index 0000000..414541a Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_3d36b409c72f3586.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_53322d3a0ed5e5f5.png b/resources/_gen/images/images/blog/post-2/binexpl_hu_53322d3a0ed5e5f5.png new file mode 100644 index 0000000..8639a9c Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_53322d3a0ed5e5f5.png differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp new file mode 100644 index 0000000..f55ed6d Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_62abc2aca7882dbf.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp new file mode 100644 index 0000000..3eb0f51 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_6c7b74fb7ea6923.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp new file mode 100644 index 0000000..339aabf Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_87c8bee28ebae804.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp new file mode 100644 index 0000000..f21d026 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_935160fb8df57d09.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_9c9eea2ec402f1e0.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_9c9eea2ec402f1e0.webp new file mode 100644 index 0000000..6000a5e Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_9c9eea2ec402f1e0.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_afca672637b6b98d.png b/resources/_gen/images/images/blog/post-2/binexpl_hu_afca672637b6b98d.png new file mode 100644 index 0000000..977496e Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_afca672637b6b98d.png differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp b/resources/_gen/images/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp new file mode 100644 index 0000000..88ab527 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_c4ad8346ff8a0dac.webp differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_efa32c38b92f4bc5.png b/resources/_gen/images/images/blog/post-2/binexpl_hu_efa32c38b92f4bc5.png new file mode 100644 index 0000000..806e4de Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_efa32c38b92f4bc5.png differ diff --git a/resources/_gen/images/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png b/resources/_gen/images/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png new file mode 100644 index 0000000..95551cf Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/binexpl_hu_fd757ee89fe03225.png differ diff --git a/resources/_gen/images/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp b/resources/_gen/images/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp new file mode 100644 index 0000000..321f5fb Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/infiniteluck_hu_953e025153d002b1.webp differ diff --git a/resources/_gen/images/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png b/resources/_gen/images/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png new file mode 100644 index 0000000..4eecc04 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/infiniteluck_hu_b9a0d6c771061779.png differ diff --git a/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png b/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png new file mode 100644 index 0000000..e2b5a7b Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_a866f113a85dec5c.png differ diff --git a/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp b/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp new file mode 100644 index 0000000..b68c392 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/infiniteluck_solved_hu_d93ed737be1e3c68.webp differ diff --git a/resources/_gen/images/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png b/resources/_gen/images/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png new file mode 100644 index 0000000..94d7490 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/ourencissec_hu_12ab834545d390f3.png differ diff --git a/resources/_gen/images/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp b/resources/_gen/images/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp new file mode 100644 index 0000000..5514534 Binary files /dev/null and b/resources/_gen/images/images/blog/post-2/ourencissec_hu_d55d42cf9aa95894.webp differ