This "lab" is a programming playground for me to try out stuff that I learned or find interested.
You might find most of the projects here useless since my goal was neven to create useful stuff. The projects here are, however, most definitely fun.
Most of the projects here are published under the public domain, with a few exceptions that is using MIT license. Please refer to the LICENSE file in each project for details. If the license for a project is not specified, you are free to assume it as the public domain.
List of services provided by Nato Laboratory.
List of projects I created that I had fun using them or had fun writing them.
A cursed programing language created by me after I finally learned to write compilers. Everyone tries to make their programming language safe, but natolang aims the absolute opposite. ;)
This project is for sarcasm. I used this as my answer to those people saying "Hey, you can <insert unsafe, undefined behavior which archive some weird hacks here> in C! isn't that awwwwwesome?" Not that I like the "safe" language like rustlang, but please, at least, do not play with the undefined behaviors. It can be fun, but please just don't.
Touchscreen and Leap Motion support for Chunithm. Rhythm games are great!
OSK, but for Chunithm.
Nato's Telegram bot.
Convert osu! beatmap file to pulse, so you can control stuff like LEDs with headphone output. I once connected it to a TENS unit and have it simulate my finger muscles so my fingers will click automatically. It works, but I really don't recommend trying it.
Web related projects.
A base-100 clock. I really liked it in the old days and used it as my tabletop clock for a long time. Then I got a nixie tube clock, that replaced it.
An interactive Steam friend relationship map.
- telegram-html-bot (run)
A Telegram bot that runs in a web browser that allows you to modify bot's code on-the-fly and check API request/respond in real-time - an interesting toy.
- neimap (run)
An interactive BGP neighbor map.
A collaborative editor. More like Google Docs w/ only plain-text support. A collaborative notepad.exe.
A web IRC-like client allows you to chat as a Telegram bot.
Some network-related projects. BGP, VPN, DNS, all that kind of fun kinds of stuff.
A fast UDP-based virtual ethernet switch. Basically, a client-to-client layer 2 VPN. Tests show that it can runs at over 90% of the link speed. It was initially designed for ns3 as a part of the SEED internet simulator project but was later generalized as a virtual ethernet switch.
A fast MikroTik's EoIP/EoIPv6 implementation for *nix.
A not-so-fast multi-protocol virtual ethernet switch. It was a class project, so I didn't bother to improve it any more.
A somewhat useable BGP library written in C++11. With support for some modern BGP features (MP-BGP, 4-bytes ASN) and a simple to use deserialization/serialization interface. A BGP FSM is also included. Might not continue development anymore since it was again initially designed for the "legacy" SEED internet simulator.
A BGP speaker that feeds IP blocks that delegated to China to peer. Useful if you try to do some special routing against China's IP block. (e.g., route to/exclude from VPN)
Tiny utilities, mini research, stupid tools, etc.
A MikroTik RouterOS remote DoS vulnerability, found by me when developing the EoIP project.
A low-level ARP sender. Useful for anti-ARP spoofing and ARP spoofing.
A trivial ChinaDNS implementation for demonstration.
A tool that pipe TUN/TAP from/to stdio.
A tool that grabs color and background-color from list of websites. top-300-color.pdf shows the colors used by the top-300 websites.
A DNS spy that get vistor's DNS server.
A crawler that draws the link relation between sites.
The relation between every AS on the Internet.
Set of stupid tools that I created in highschool.
A command line utility for accessing RIPEstat data.
A group analyzer for Tencent QQ.
A common groups analyzer for Tencent Telegram.
Dead projects that I am not likely to be maintaining them ever again. Projects mentioned here are at least useable, projects in nat-lab that are not even mentioned here means they are not useable at all.
A BGP packet deserialization/serialization tool written in C++. Not very usable. C++, for libbgp-legacy. Discontinued.
BGP module for ns3, powered by libbgp. Abandoned since the SEED internet simulator project no longer uses ns3.
distributor client for ns3. Discontinued.
- ns3-bgp-netgen-ng (run)
A web-based UI for creating ns3 networks. Discontinued.
A tool for creating ns3 networks, written in C++, for libbgp-legacy. Discontinued.
An ns3 simulator implementation that allows you to alter the speed of time. Discontinued.
A looking glass server. Discontinued.
Dump BIRD's routing table to JSON. Used by routeview project.