Board Evaluation and Minimax Algorithm

Chess is a great game. It’s even better if you’re good at it. Regrettably, I’ve never taken the time to learn chess strategy, so I decided to rely on the power of computation and game theory instead! …

How I tried harder to attain my Offensive Security Certified Professional (OSCP) certification


Last week, I sat for and passed the Offensive Security Certified Professional (OSCP) exam from Offensive Security. I managed to root 4 out of 5 of the boxes, and achieve 90 out of 100 possible points (70 were required to pass).

Manipulating Decrypted Plaintext

Recently, I participated in a CTF that included a challenge on CBC bit flipping. I learnt about an interesting technique that allows the attacker to arbitrarily change the value of the decoded plaintext in a CBC block cipher.

Cipher Block Chaining (CBC)

Block ciphers such as AES encrypt blocks of text at a time…

Booleanization and XML Crawling

This article is inspired by the “X marks the spot” challenge in picoCTF 2021. For the solution to the challenge, skip to the ‘Exploitation’ section.

While SQL injections are one of the most common web application vulnerabilities, its less notorious twin can be equally, if not more dangerous.


XPath is…

ARP scans and TCP scans with Scapy

What is Network Scanning?

Network Scanning is the process of gathering information about devices in a computer network, through employing network protocols. It is especially relevant for network administrators, penetration testers and, well… hackers.


You should know basic Python. Other than that, not much! I will be writing on some basic network theory before…

Socket programming + Tkinter GUI

I’ve recently delved into the wonderful world of computer networking. One of the fun projects I’ve created is a simple chatroom application that facilitates real-time messaging between different clients.

At any point in this tutorial, you may refer to my source code in GitHub. The aim of this tutorial is…

A more elegant approach to doing the same thing

I’m a fan of The Zen of Python, which says

There should be one — and preferably only one — obvious way to do it.

But in Python, there are in fact many ways to achieve the same objective. …

Implementations and Explanations

We are going to look at 4 different sorting algorithms and their implementation in Python:

  • Bubble Sort
  • Selection Sort
  • Insertion Sort
  • Quicksort

1. Bubble Sort

Time complexity: O(n²)


def bubble(lst):
no_swaps = False
while no_swaps == False:
no_swaps = True
n = 0…

How you can make yourself one with the Twilio API

This pandemic has taken a huge toll on my mental and emotional health. In order to keep me occupied and brighten up the lives of those around me, I started on yet another Python project — this time, a WhatsApp bot that sends me random cat pictures, trending memes, the…

Easily create, delete and switch between virtual environments.

What Is a Virtual Environment?

A virtual environment is an isolated Python environment. Working on a project in an isolated Python environment ensures that project dependencies are kept separate, and allows you to manage Python packages for different projects without breaking system tools or other projects.

For example, if both projects A and B depend…

Zhang Zeyu

Simple is better than complex. Complex is better than complicated.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store