Category: Uncategorized

  • OwOFetch… dear god…

    So… yes. This is not a drill. This is not a joke. I have started working on a project called OwOFetch. If any of you have used the UwUFetch program, it’s my stupid fork of it. UwUFetch became a fun joke in my friend group, and upon learning that UwUFetch is no longer being maintained, I impusively made a fork and called it OwOFetch. It’s only fitting, right?

    I don’t know if this will become a big project, or if I will eventually get bored and forget about it, but so far I’m going full speed ahead on the project. It’s also a good learning opportunity, as all projects should be!

    I’ve wanted to try putting this on some package managers. The AUR is my first target… I just need to learn how to get packages on there. It can’t be that bad, right?

    I am going to be working on this along with another friend of mine, who goes by @ASexyLordRevan on GitHub. Unlike me, he actually knows how to make ASCII art. He also does Arch/EndeavourOS rices much better than me. Very cool guy!

    For now, it’s Linux only… If you can compile it for anything else, feel free. A tarball can be found on the GitHub Releases Page. Just download it, extract it, and sudo ./install.sh, and owofetch away!

    Cheers,

    • Damien
  • Immortals, a new video game I'm working on!

    For as long as I remember, my username has been AlphaGameDeveloper. I still find it funny how I have not really been into gamedev much. It’s mainly backend server stuff, networking, and other stuff.

    With a few friends of mine, @CombineSoldier14, and @AmanOMG8 (A former Roblox developer, and he knows quite a bit about Unity), and a few others, we are working on a roguelike game called Immortals. Lots of stuff is still being planned out, but here is some information.

    • The game engine will be Unity.
    • The game will be availiable for Windows, and Linux.
      • MacOS if we can pull it off.
    • It’ll be in a medieval sort of theme (swords, shields and all that)

    As for a release date, I can’t give a good date yet, and I suck with deadlines. I might be writing more blog posts as progress continues. We will also potentially make some devlogs on YouTube or something!

    Well, that’s all for now. I cannot wait to keep working on it, and hopefully produce something amazing.

    Cheers,
    AlphaGameDeveloper

    P.S. A bit late, but happy new year 2025!

  • This website is on the Dark Web!

    In recent years, the internet has become increasingly polarized—while the surface web offers accessibility and transparency, the dark web provides a space for anonymity, privacy, and sometimes controversial content. For some, this privacy is paramount, while others use it for more illicit activities. Regardless of the reason, the dark web represents a unique, decentralized part of the internet that has captivated many tech enthusiasts and privacy advocates alike.

    As someone who is always interested in random stuff, I decided to experiment with using Tor to create a dark web proxy for my website. In this post, I’ll walk you through my experience, the process I followed, and the challenges I encountered along the way.

    Hold on… What’s the dark web, exactly?

    Tor (The Onion Router) is a software that allows users to browse the web anonymously by routing their internet traffic through a series of encrypted nodes around the world. This helps to mask the user’s IP address, making it harder for websites and governments to track them.

    The dark web is refers to a portion of the Internet that is only accessible via the network of Tor relays. This makes it so that the website you’re visiting doesn’t know who you are, and you don’t know who the website is!

    Why?

    I just wanted to learn how Tor worked and how to make a website on the dark web. I was also dumbfounded by how you don’t even need to forward any ports on your router, and wanted to learn how the networking works for Tor!

    I also saw this video and I wanted to follow along! Also, why not?

    Steps

    Step #1: Install Tor on the server

    apt update
    apt install tor
    

    Then, I modified the /etc/tor/torrc file, and uncommented the following lines:

    HiddenServiceDir /var/lib/tor/hidden_service/
    HiddenServicePort 80 127.0.0.1:80
    

    This tells Tor to route incoming traffic to the web server running on port 80.

    service tor restart
    

    After restarting Tor, It generated a .onion address for my website! It is located in the /var/lib/tor/hidden_service/hostname file.

    Step #2: Get the web server set up!

    Normally, when I want a web server, I would use Caddy, because it has HTTPS built in by default. However, for this project, I wanted to use Nginx, because I’ve seen lots of other people using it, and also just to learn how to configure it. (Also, I dont need HTTPS here!)

    sudo apt install nginx
    

    Now, we can go to the Onion address found in /var/lib/tor/hidden_service/hostname, and see the default nginx webpage!

    We could stop here if we wanted to, and put static content in /var/www/html, to be served by Nginx, but in this case, I want it to be proxying to my main website!

    My website is hosted on GitHub Pages, so we will need some configuration for nginx. We write the following content to /etc/nginx/sites-availiable/default

    server {
        listen 80;
    
        server_name darkweb-proxy;
    
        location / {
            proxy_pass https://www.alphagame.dev/;
            proxy_set_header Host www.alphagame.dev;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
    

    Be sure to modify the above with your own stuff (unless you want to route here )

    If you have a website on GitHub Pages, you would 100% want to modify the proxy_pass and proxy_set_header Host directives. For example:

    proxy_pass https://username.github.io/repository
    proxy_set_header Host username.github.io
    

    Step #3 (Optional): CUSTOM .ONION ADDRESS!

    Ok, maybe not totally custom. Still, it allows you to personalize your .onion address and make it look a bit nicer. To do that, we can use a tool called mkp224o. Not gonna win any awards for naming, but it’s REALLY COOL!

    What mkp224o will do is brute-force and generate LOTS of .onion addresses, until it’ll find one that we like. Now, this is very computationally expensive. In fact, the longer the prefix you want, the longer it’ll take! If I were to do alphagamedev, that’s only 12 characters, but it’ll take a very long time! Please, keep it short (for testing maybe 5 or 6 letters).

    But first, we need to actually build the app from source!

    Let’s install a few prerequisites, first.

    apt install git gcc libc6-dev libsodium-dev make autoconf
    

    Next, we’ll clone the mkp224o repository from GitHub, and cd into that directory.

    git clone https://github.com/cathugger/mkp224o.git && cd mkp224o
    

    Now, we can build the application from source!

    ./autogen.sh
    ./configure
    make
    

    Congrats!! You compiled your application from source! Let’s use it!

    ./mkp224o alpha -v -n 1 -d ./onion-address -t 4
    

    Let’s run over this command:

    • alpha is our desired prefix. This can be whatever you want (PLEASE keep it short!)
    • -v means we want it to be verbose!
    • -n 1 means we only want one onion address to be generated.
    • -d ./onion-address means that we want it to be stored in the onion-address folder. Feel free to change this!
    • -t 4 means to use 4 CPU threads to speed things up a bit!

    Once that command is done, we will want to copy the contents of the folder with your onion address (named after your onion address in the folder name we gave with the -d switch) to the server!

    cp -r ./onion-address/your-address-name/ /var/lib/tor/hidden_service
    

    Then, we restart Tor, and you’re all good!

    service tor restart
    

    Conclusion

    Creating a dark web version of this site was a very interesting project. It allowed me to explore how Tor works, and also learn a bit about Nginx.

    Although there are technical challenges and security risks involved, the benefits of providing enhanced privacy for visitors are undeniable. If you’re interested in diving deeper into Tor or the dark web, I highly recommend giving this a try!

    This site is availiable on the dark web at alphactgkfzkiukfelpxwmkdh424gp67ci3n4alapgymyitf2nmqpkqd.onion. Pop that address into the Tor Browser

  • Syncing VSCode Extensions

    If you’re like me, you have quite a few extensions running on Visual Studio Code. I also have recently picked up some new macbooks near a dumpster, and turned them into laptops that I use for development when I’m not at home (Forgot to bring my 100-freaking-pound desktop PC and monitor with me :/)

    I have a few extensions that I just expect to work. Stuff like Wakatime, and a few language-specific extensions. It becomes a pain to manually install, uninstall, and manage all your extensions manually. After a quick Google search, I found a feature that comes out-of-the-box with VSCode: Settings Sync. It’s amazing because all I really have to do is login with my GitHub account to VSCode, and it pulls my configs, settings, extensions, you name it. One thing I was amazed by is how fast it was. While setting it up, I deleted an extension for Flutter that I no longer use. It was removed from my other computer in less than a minute.

    This isn’t a tutorial, but this is a really cool feature that I wish I knew about before. One thing that I wish it had is syncing extension configurations. That would be so useful with extensions like Wakatime, being extensions that require an API key to use, but easy to forget about configuring. It’s one of the extensions that you don’t really think about, but you expect to be there. (My Wakatime stats can be found here.)

    That’s all for today.

    Cheers,

    • Damien
  • The Worst Take in Programming

    This is a little post while I am working on the next, but when I saw this, I could not not write about it.

    So yes, I have found the worst take imaginable.

    "variables

    I mean, I should have expected as much from the username OhioRizz99, but SERIOUSLY. Yes, he said he was learning Python
    and HTML doesn’t have variables, but SERIOUSLY. COME ON, IF YOU STARTED LEARNING PYTHON, YOU MUST HAVE LEARNED ABOUT VARIABLES
    AND HOW USEFUL THEY ARE!!!

    Feel free to post your opinions in the new! comments section. This is something I set up shortly after the previous post, and
    think’ll make a nice addition to the website. A post for another day :)

    Cheers,
    Damien

  • How I Got the School Chromebook Wi-Fi Password

    Let me get one thing clear right off the bat–No, I don’t like ChromeOS. I can see the appeal of it for schools, but ChromeOS is just too locked-down for my taste. Yes, you could do enter Developer Mode, or go the simpler route and use the Linux Sandbox to run your native Linux applications, but still, it’s slow, it’s restricted, and it’s still ChromeOS.

    Upon completing middle school, I recieved my school chromebook, a Lenovo 100e Gen 2 (Codename: treeya), powerwashed and free at last. I used it for a bit, and seeing what a unmanaged ChromeOS had to offer. Specifically, I was really looking at the Linux sandbox, as that was a feature that the school disabled and was one of the things I was most excited about checking out. I found it quite underwhelming. I put down the Chromebook and only used it in cases where I would not have access to another laptop, and mainly for web browsing or light development work.

    Fast-foward to April of 2024. I realize that my high school chromebook really sucked. I then used that old chromebook that was collecting dust, and started using it in place of my school chromebook. Noone looked twice. But then, why would they? It has the Chromebook logo on the back, and the school’s bloatware was on the limited user account that I signed into with my school credentials (NOT the owner account, so the Chromebook itself didn’t become managed, merely the single account).

    "Chromebook

    The main account (unmanaged by the school) proved to be quite useless at school. The Chromebooks automatically connect to the school’s Wi-Fi network for them, and this password was not shared between accounts. Of course, us students were not able to see these plaintext passwords. Something I found quite hilarious was how easy it was to gain access to this information! It was intriguing to see how easy it was to get some… let’s say information that was not intended for normal people’s eyeballs. What about, say, the Student Chromebook Wi-Fi network password?

    I like to say that the Chromebooks have a really hard outer shell, but when it’s broken, it’s very soft inside. This is an analogy I use othen when explaining how I did it to other people. The school disabled Developer Mode on their managed chromebooks. This is great–Until you notice how a Chromebook that is not under the school’s control with the same preloaded information on it can be used to get all of it. Me and some friends called this “Operation Marionette”, and I started looking as to what I could get off of it.

    Wi-Fi passwords are located in the /home/chronos/u-(userid)/shill/shill.profile file. This file is only accessable via Developer Mode, as ChromeOS without denies access to anything outside of the /home/chronos/u-(userid)/MyFiles folder, containing, you guessed it, user files. Upon reading the shill.profile file, you get a list of all the Wi-Fi networks that you’ve connected to. From your home and school Wi-Fi passwords, to that airport network that you’ve used once and since forgot about.

    cat shill.profile | more
    

    I hit my spacebar to scroll through the file until I saw the only network I was interested in… The Chromebook Wi-Fi password. Seeing that Rot47 password, I knew that I was doing something right…

    Passphrase=rot47:XXXXXXXXXXX
    

    Using a command that I found to decode this mess of characters, I finally got the 11-character string that I’ve been looking for:

    echo XXXXXXXXXXX | tr '!-~' 'P-~!-O'
    

    There it was, the Wi-Fi password that I’ve been looking for. I then realized that the STAFF Wi-Fi password was already leaked by a few teachers who slipped up and told some students, who then told everyone, rendering this password (which was for a network which was more limited anyway) completely useless. However, I don’t care. This was a really interesting project I did, and I also learned quite a bit about the ChromeOS filesystem. I also learned HOW STINKIN’ EASY IT IS. To be honest, I expected my journey to end with me staring down a hash, which as we all know, cannot be converted back to the password, but this turned out pretty great!

    Also, if any school staff are reading this, just consider this my bug report! ;)

    Cheers,

    • Damien
  • AlphaGameBot Leveling System

    Hey! It’s been a while! Don’t worry though… I’ve been busy with AlphaGameBot, and am
    so excited to reveal the latest feature that I just finished!

    User Leveling. Yes, many Discord bots have that, but this update is BIG! In fact,
    this update caused the most under-the-hood upheaval of any single update to the bot (and
    that includes the WebUI update back in 3.1.x, although that took longer as I didn’t have
    as much experience with MySQL Connector/Python).

    For discord server owners who don’t want this feature (I won’t be offended, it might be annoying if you don’t like this sort of thing), an update (version 3.8.1), and a WebUI update (version 1.4) will allow you to disable this functionality on your server. This will be accessable via /guild settings.

    "demo

    Currently, I have implimented levels 1 (50 messages) through 100 (43,000 messages). If any of you get to level 100, I have no words. I will have to add up to level 200. Actually, I should add a leaderboard (not promising but that’s a possibility of something that can happen in the future.)

    Future Plans

    Remember: These are things that I am thinking about adding, but there is absolutely no promises as to if this will be added.

    1. User Stats Webpages, would show said user’s global stats in all servers that AlphaGameBot is in. URL would be something like alphagamebot.alphagame.dev/webui/user/stats/(username or userid)

    You can now submit feature / command requests and feedback in AlphaGameBot!

    This is a feature that I added quietly, in the /about command. It is in a button that opens a Modal Form (Amazing feature, Discord. Love ya!)

    "AlphaGameBot

    Click ‘Command Suggestions’, and a modal will open:

    "AlphaGameBot

    AlphaGameBot will be verified soon

    Unless you were listening to my mad ramblings in the GitHub Issue that I used to document the thing, this is big news. Soon, we’ll have the nice verified app icon. I have already wrote all the code needed to no longer require Privileged Intents, now we just need to verify it.

    This will be done later this week. Can’t wait!


    Well, that’s all I got for now. If for some reason you’re missing out on all this awesome stuff, you can invite the bot to your server. It’s 100% free and would really help me during hard times while working on this project. I love reading the log message

    Got user count of 651.

    Even though there are 600 of you who use the bot, I just want to say from the bottom of my heart to each and every one of you, Thank you. This bot has been my #1 project ever since I started in December 2023, and I do not see any end in the forseeable future.

    Cheers,

    • Damien Boisvert (AlphaGameDeveloper)

    Links

  • AlphaGameBot WebUI and Database… A rocky start, and also a GoDaddy rant…

    What is AlphaGameBot, exactly?

    AlphaGameBot is a Discord bot that I have been working on since December of this year. Recently, I have been working
    on more complex features that require a backend database to work. This functionality started with a /user stats
    command in AlphaGameBot version 3.1. AlphaGameBot 3.1 also included feature that has been on my bucket-list for…
    well, ever since I even started AlphaGameBot (No, really! Look at the first commit, b713eb4. WebUI code was included, but it
    sucked, and I ended up not including it because of problems like security and also the fact that it was tough to make them
    work together in the same process.)

    WebUI

    You may have noticed how the current WebUI at alphagamebot.alphagame.dev (yes, such a long domain name.
    I will most likely get a new one (that would be my third domain), alphagamebot.dev or alphagame.bot or something lol,
    I just want to see if this bot thing has legs before investing in a domain)

    GoDaddy rant

    Also, (rant incoming) GoDaddy f*cked up all of our domains. For some background, we use OPNSense for
    our home router. It proxies all of our domains to our servers that we have at home, and also handles SSL/TLS (the padlock
    icon, https, secure connection, whatever you may call it) because the .dev TLD requires HTTPS. This was working very
    smoothly, and then out of the blue. It didn’t. Me and my father spent hours trying to fix the issue, and we eventually
    learned that GoDaddy as our registrar disabled their API functionality that allowed OPNSense to automatically
    modify some records to automatically get a new SSL certificate when our old one expires (they last for 2 to 3 months). So,
    predictably, we were unbelievably pissed about this, especially with the fact that I had just bought a new domain with GoDaddy,
    and I can’t migrate until June 20th because they require you to stay with them for 60 days after buying a domain before switching registrars.
    Currently, we are just using Caddy’s certs and uploading it our OPNSense server… When we move to NameCheap, this
    will (hopefully) no longer be an issue.

    Also, we are currently redoing our network (almost) from the ground up so expect some odd stuff with the bot (most will be ok except for
    database-using commands.) I will keep as much uptime as possible, but expect at lease some downtime.

    Cheers,

    • AlphaGameDeveloper
  • Big Changes Coming to AlphaGameBot

    AlphaGameBot, thus far, has not collected much data, and the only data that it does collect, is data that is 100% required to function. Recently, I have been working on a /userstats command,
    which requires AlphaGameBot to track the number of messages sent by a given user. With the launch of AlphaGameBot 3.1, this data will be tracked, and a future version will give functionality to
    opt-out of this. This will come along with the WebUI update to AlphaGameBot, in which you can change your privacy settings. This is currently being worked on, and will hopefully be launched this summer,
    but, as I learned with previous projects, I suck with deadlines, so I cannot give a guarantee with the launch date.

    I would like to reiterate what I already said in the privacy policy. I WILL NOT SELL YOUR DATA. Believe me, I know how much it sucks to have people selling your data behind your
    back. It sucks. Another thing that I want to point out is that YOUR MESSAGES WILL NOT BE SAVED. All that happens when you send a message is that a number in my database goes up by one. That is all that
    happens, as far as your data is concerned. *If you do not believe me, please feel free to check out the GitHub repository. The production version of AlphaGameBot
    always in sync with the master branch on github, so that is the current code.

    Please, if you have any questions, comments, or concerns, email me at damien@alphagame.dev.

    Cheers!
    AlphaGameDeveloper.

    References

  • AlphaGameBot 2.4 Changelog!

    Hey yo!

    AlphaGameBot version 2.4 has been released! Here’s what we got:

    • /dnd command – Roll D&D dice in Discord!
    • Remove Python error in production
    • Add Error Reporting – Now you can report the error by simply pressing a button under the error! This can help with squashing the bugs!

    Cheers,

    • AlphaGameDeveloper

    AlphaGameBot can be found here. The GitHub repository can be found here.