Introduction

A few years ago I used to work with arduino’s a lot. I made a lot of projects with them and I learned a lot about electronics and programming. Mostly using the ESP8266.

Instagram follower display

It uses the TM1638 display to show the amount of followers on your instagram account. It uses a HTTPClient to get the data from the instagram API. It also uses the ESP8266WiFi library to connect to the internet.

A link to the repo can be found here

Introduction

Uptime Kuma is an easy-to-use self-hosted monitoring tool hosted on Github. It allows you to monitor your servers and websites and send you notifications when they go down. It also allows you to monitor your websites and servers from a web interface. It is very easy to setup and use and I will show you how to setup and use it in this article.

Installation

According to the Github page you can install Uptime Kuma via docker or via npm. I will show you how to install it via docker.

Assuming you have docker installed on your server you can install Uptime Kuma by running the following command:

docker run -d --restart=always -p 3001:3001 -v uptime-kuma:/app/data --name uptime-kuma louislam/uptime-kuma:1

Once the container is running you can access the web interface by going to http://your-server-ip:3001

Demo

I use Kuma to monitor my servers (VPN, DNS, Webserver, etc). I have created a status page for some of my servers and it looks like this:

Introduction

During my first year of college I had to make a project for a course called “Programming 3”. The project consisted of 3 tools

  • Tool 1: We had been given a zip file with CSV files in it. The CSV files contained data about the streets in Belgium with segments and points. The tool would read the CSV files, Do some calculations and write the data parsed to a new set of CSV files. Finally a report would be generated and an example can be found below.
  • Tool 2: Would use the data from the CSV files and write it to a database
  • Tool 3: A console application with the abiltiy to do some queries on the database for example: “Give me all the streets in the city of Ghent, How many streets are there in the city of Ghent, How many streets are there in the city of Ghent that are longer than 100 meters”

please note that the tools use dutch for comments and variable names and I offer no warennty that the code is correct or that it will work, the code is provided as is.

Source code: Github

Tool 1

The report generated by the tool looked like this. Each line in the report represents a city and the amount of streets in that city and the total length of all the streets in that city. For example the first line in the report says that there are 123 streets in the city of Aartselaar and the total length of all the streets is 72874,92m, the shortest street is 64,37m and the longest street is 6185,23m

The full report can be found here: rapport.txt

Tool 2

Not much to say about this tool, it just reads the CSV files and writes the data to a database. sqlserver was used as the database.

Tool 3

The CLI application had the following options

in the following image we will query the database for all the streets named Dorpstraat

The weather app is a simple weather app that shows the weather of a city or it will try to get the weather of your current location. Mainly written in html and js. The data is obtained from here and is used to gather the weather data. Gps data is obtained by using navigator.geolocation.getCurrentPosition().

Some features of this app are:

  • Shows the weather of a city
  • Shows the weather of your current location
  • 3 Day forecast
  • Chance of rain
  • Min Max Temperature
  • Wind speed
  • Localstorage to save your last searched city
  • Ability to clean localstorage with the click of a button
  • Auto refreshes every 5 minutes
  • Bootstrap 5

Demo

Demo Demo Demo

Languages used

  • HTML
  • JS
  • CSS

Intorduction

A friend of mine recently asked me if I could help him acquire a RTX 4090. I decided to build a web scraper that would check the stock of a GPU and send a notification to a discord channel using a webhook. The web scraper is written in python and uses the requests library to get the html of the website and the BeautifulSoup library to parse the html. Once the HTML is parsed the script checks if the GPU is in stock using elements in the dom tree. If the GPU is in stock the script sends a notification to a discord channel using a webhook. The web scraper is hosted on a server and is run every 5 minutes using a cron job. The web scraper is run every 5 minutes to prevent the website from blocking the IP address of the server.

The location of the server was chosen based on the location of the website that is being scraped. The website is hosted in the UK so the server is hosted in the UK (London) as well.

The source code can be found here

Another example of a web scraper that I made can be found here It checks the stock of a website that sells servers.

Demo

This is the discord channel that the bot would post in if it found any stock, it would tag the role @everyone so everyone would get a notification. The bot would post a message every 5 minutes if the GPU was in stock. The bot would stop posting once the GPU was out of stock. webhooks You can see that the the bot has checked 4 products on this website and it found 1 product to be in stock. The bot would post a message every 5 minutes if the GPU was in stock. The bot would stop posting once the GPU was out of stock.

And after ordering and waiting a few days, the GPU arrived. Htop

Using the HackRF One to open our garage door

What is the HackRF One?

A HackRF is a software-defined radio (SDR) device that allows users to receive, transmit, and modify a wide range of radio frequencies. It is essentially a tool that enables individuals to experiment with and learn about wireless communication technologies. In the following example you will see an example of how to use the HackRF to open a garage door. Keep in mind that this is a proof of concept and should not be used to open garage doors without the owners permission.

What is a replay attack?

A replay attack, on the other hand, is a type of cyber attack that involves the interception and playback of data that was previously transmitted between two devices. In this attack, a malicious actor captures a message that was sent between two devices (such as a key fob and a car), and then replays that message in an attempt to trick the receiving device into thinking that the original sender is sending the message again.

Combing the two

Assuming that the garage door opener uses a rolling code, we can use the HackRF to capture the signal and replay it to open the garage door. The following example will show you how to do this. The first step is to capture the signal. To do this we will use the hackrf_transfer utility. This utility allows us to capture and replay signals. The following command will capture the signal and save it to a file called capture.bin. The -f flag is used to set the frequency, the -s flag is used to set the sample rate, the -a flag is used to set the antenna, the -l flag is used to set the lna gain and the -g flag is used to set the vga gain.

To capture the signal we will use the following command:

hackrf_transfer -r capture.bin -f 433920000 -s 2500000 -a 1 -l 40 -g 40

To replay the signal we will use the following command:

hackrf_transfer -t capture.bin -f 433920000 -s 2500000 -a 1 -l 40 -g 40

Demo

In the following video you will see a script that will exectute the second command which replays the signal. The hackRF is the device on the Left, please note that this is a HackRF one with the portapack module.

Demo Video

Introduction

I have al lot of servers and I use a lot of hosting providers. I have a lot of experience with a lot of providers and I will list some of my personal favorites. I will also list some of the providers I have used in the past and why I don’t use them anymore.

This list is not in any particular order and will be updated from time to time.

Last Updated: 22 March 2023

For a list of server hardware I use, and some of the projects I selfhost check out my server hardware post.

Favourites

  • Hetzner
  • BuyVM
  • incognet.io
  • Terrahost
  • Blazingfast.io
  • Crunchbits [NEW]

Other providers I used in the past

  • Vultr
  • Digital Ocean
  • Azure
  • Kimsufi
  • SoYouStart
  • WebHorizon
  • AdvinServers
  • Hazi.ro
  • Rootnerds
  • aeza.net
  • just.hosting
  • Liteserver
  • PulsedMedia

I build stock checkers for providers like Crunchbits since their products can often go out of stock quickly. Check out my source code for a Crunchbits stock checker on my Github.

please note: I am not affiliated with any of the providers listed above and that I mightve forgotton some providers.

Features

  • Display solo and flex rank of player
  • Automaticaly updates via api

Made with

  • Recyclerview
  • Room
  • Databinding
  • Moshi
  • Lifecycle

Link to repo

Preview:

preview1 preview2

Over the years I have played League Of Legends on multiple accounts. I have always wanted to have a tool that would allow me to manage my accounts. I have tried a few tools but none of them were to my liking. I decided to write my own tool that would allow me to manage my accounts and do some extra things. The tool is fully written in C#, I have released two versions of this program, one for public use and one for private use. The public version is available on Github and the private version will remain unreleased for now. The private version has a few extra features that I don’t want to share with the public but a few of the features are listed below.

Features in the public version

  • Display account information
  • Sign in by double clicking on an account
  • Ability to load and save accounts via json
  • Run on Startup

Demo

This is a demo of the public released version of the program.
Example Video

The private version has a few extra features that are not shown in this demo, these features only change the visual aspect of what someone see’s when they hover your profile, everything reverts back of the public released version of the progto normal after relogging.

  • Change rank (Any rank)
  • Change mastery score
  • Change your profile icon to an icon you don’t own. (Example: Setting your icon id to 501 will result in a placeholder icon)

Besides that I have added other features such as

  • Deleting the friendslist of the account its signed into.
  • Download your match history
  • Set a really long status message as shown here (by default the max length is 25 characters )
  • Easy integration with Fidler to intercept requests and responses
  • Auto accepting whenever a game was found
  • Exporting friendslist to a json file, also able to import a friendslist from that same json file
  • etc..

What is Lookup.GG?

Lookup is a website that allows you to lookup a League of Legends player and see the amount of games they have played on a champion. The website is written in python and uses the Riot Games API to get the data. The data is stored in a mongodb database and is can be updated manually or automatically. The website is hosted on a Hetzner server and is written in python using the flask framework. The idea came from the fact that I wanted to see how many games I had played on a champion and I couldn’t find a website that did that. I also wanted to learn how to use mongodb and flask so I decided to make a website that utilized both. The entire project is written and maintained by me since I started it in 2019.

Currently we have roughly 13 milion playeres tracked and 93 milion games in our database. The website is still in development and we are working on adding more features.

Features

  • Find a player and see the amount of games they have played on a champion
  • Ability to see at what time the match was played
  • Ability to see how many points the player has on a champion
  • Ability to see when the username of a player expires so it can be claimed.
  • Ability to see when the player was last active
  • Ability to see how many times their name has been changed and when it was changed
  • Lookup will try to download all the matches of a player and store them in the database, riot only allows you to download roughly 9 months of data so everything is stored in the DB for future use.
  • Using multihreading to download the matches of a player to speed up the process

Upcoming features

A lot of the endpoints are implemented in the backend but not in the frontend, but this will be added in the future some of them are listed below

  • Ability to see who the player is playing with
  • Ranked statistics (history, winrate, wins and losses)
  • Ability to see when you first played with a player and when you last played with a player.

Obstacles

  • Riot only allows you to download roughly between 9 months and 2 years of data so everything is stored in the DB for future use.
  • Players that have a lot of games played will reach the size limit of a document in mongodb. This is a problem since we need to store all the games in the same document. To fix this we use GridFS.

Tech stack

  • Python
  • MongoDB
  • FastAPI (as of 2023)
  • Hetzner server

Demo

This is my profile and can be used as an example.

Source code

The source code is not public.