I Switched Webhost and Domains

So, there i was, happily browsing the internet and not actually caring about what was going on at my website. For almost a year, maybe two, or three. Then! Suddenly 000webhost, my old host, decided it was time to overhaul their old cpanel. They claimed it hadn’t changed in almost ten years. Forever in internet time. So they sent me an email about it. I didn’t actually care too much about it; at least not until i read their email completely and found out the process involved backing up my website and then restoring it to the new control panel.

It wasn’t actually that big of a deal, it just meant i needed to spend some time on my website and make sure it was all working as it should. Problems arose when i was never able to access the new control panel (they claimed the new and the old would run seamlessly together, but it didn’t). Also, as a free webhost, stuff like ftp backups and php scripts had strict file size limits and time limits too. So, i switched to an inexpensive webhost, paid for four years, and got a real domain while I was at it.

I also spent a week trying to find a good migration plugin, that worked within my old hosts limits and also did all the things i needed it to do. (Half of them don’t even support restoring from backups they create!) I felt really stupid when I noticed the built-in export function that wordpress has.

It should all be here now, if you notice something off send me an email at admin@dageek247.com or post a comment. They all go straight to my personal email and i check that hourly.

Shout out to dot.tk, they’ve hosted my old domain since february 2011, and did a fantastic job of it. I’m using their new paid domains and have high hopes for the next four years with them.

{ Add a Comment }

I commissioned an art piece

It was by Amirai of amarai.net. The theme I asked for was Avatar bending, with a focus on how powerful bending is compared to the actual people doing it. And also blue. I like blue.

Amirai - commission - downscaled


Quite frankly, I absolutely love the result and wholly recommend the artist to anyone interested in paying for some quality art.

{ Add a Comment }

WPA Password Verification Tool

I was going through my computer projects and realised that I never shared this one on my website. It’s a tool, coded in C++ that checks a text file for WPA/WPA2 password compatibility. It is most helpful in network security applications / pentesting when you have a password list and aren’t sure just how much of the list is actually a legitimate password.

For example, we have a text file with these contents:

Good Password
good password

Good Password 1234567890
good password 1234567890




This is a bad password because the character length is way above the maximum limit of 63 characters, and WPA won’t allow such horrible things to exist in the first place anyways.

If we run the tool on it, we get these results:

A picture of the tool in action


Finally, here is the source code of the project. It should be able to be compiled with just about any compiler on any operating system.

#include <iostream>
#include <fstream>
#include <string>

int help(char *argv[]) {
std::cout << “Usage: ” << argv[0] << ” <PasswordFile> [Options]” << std::endl;
std::cout << ”  Options:” << std::endl;
std::cout << ”    -wpa  Verify password list using WPA Rules (WPA uses same rules as WPA2)” << std::endl;
//std::cout << ”    -clean    Automatically delete invalid passwords from file” << std::endl;
std::cout << ”    -goodlist Print all valid passwords” << std::endl;
std::cout << ”    -badlist  Print all invalid passwords” << std::endl;
std::cout << ”  Example:” << std::endl;
std::cout << ”    ” << argv[0] << ” passwordlist.txt -wpa -badlist” << std::endl;


int does_exist(char *filetouse) {
//first check to see if the cfg file exists
FILE * pFile;
if(pFile = fopen (filetouse,”r”)) {
//the file exists
} else {
//the file doesnt exist

int verify(int argc, char *argv[]) {
//variables for later usage
//booleans for user options
bool wpa = false;
//bool clean = false;
bool goodlist = false;
bool badlist = false;
//strings for file reading
std::string password;
std::ifstream infile;
//strings for password statistics
int numberoflines = 0;
int numberoftolong = 0;
int numberoftoshort = 0;
int numberofbadchar = 0;
int numberofgood = 0;
int numberofempty = 0;

const char *filetouse = argv[1];

//check all the options
for (int i = 0; i < argc; i++) {
//options are -wpa -clean -goodlist -badlist
std::string options[4] = {“-wpa”,”-clean”,”-goodlist”,”-badlist”};
if(argv[i] == options[0]) {
wpa = true;
/*if(argv[i] == options[1]) {
clean = true;
if(argv[i] == options[2]) {
goodlist = true;
if(argv[i] == options[3]) {
badlist = true;

//read the file line by line and check to see if the passwords are right
infile.open(filetouse); //open the user file
while(getline(infile, password)) { //while not the end of the file
//getline(infile,password); //read the current line to std::string password

//count the lines in the password field
numberoflines += 1;

//check password
if(wpa == true) { //if checking WPA Rules
if(password == “”) { //empty line
//skip empty lines
numberofempty += 1;
} else if(password.size() > 63) {
//password is to big to be used
if(badlist == true) {
std::cout << password << std::endl;
numberoftolong += 1;
} else if(password.size() < 8) {
//password is to small to be used
if(badlist == true) {
std::cout << password << std::endl;
numberoftoshort += 1;
} else if (password.find_first_not_of(“!\”#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ “) != std::string::npos) {
//password contains a bad character
if(badlist == true) {
std::cout << password << std::endl;
numberofbadchar += 1;
} else {
if(goodlist == true) {
std::cout << password << std::endl;
numberofgood += 1;

std::cout << “Checked ” << numberoflines << ” passwords.” << std::endl;
std::cout << ”  ” << numberofempty << ” lines contained no text” << std::endl;
std::cout << ”  ” << numberoftoshort << ” lines were to short” << std::endl;
std::cout << ”  ” << numberoftolong << ” lines were to long” << std::endl;
std::cout << ”  ” << numberofbadchar << ” lines contained illegal characters” << std::endl;
std::cout << ”  ” << numberofgood << ” lines contained good passwords” << std::endl;


int main(int argc, char *argv[]) {
if(argc <= 1){ //not enough options so help is shown
if(help(argv)) {
std::cout << “Fatal error. Quitting program.” << std::endl;
} //else program is working fine
} else { //plenty of options, better check to see if they are the right ones
if(argv[1] == std::string(“help”)) {//display help
if(!help(argv)) {
std::cout << “Fatal error. Quitting program.” << std::endl;
} //else program is working fine
} else {
verify(argc, argv);
} else {
std::cout << “Invalid file” << std::endl;


{ Add a Comment }

How I Explain Bitcoin

On a group of tropical island there are three native tribes each with their own chief and tribesmen. The first island tribe produces fruit and other agricultural foods. The second tribe is able to provide animals as well as meat. The third tribe provides cloth and small kitchen appliances.

Rather than fight and war over these essentials, the three tribe leaders have a meeting to decide the best way to trade their products. One tribe leader says that the best way is to trade in equal measures of weight. This would not work because the cloth and small kitchen appliances tribe would not be able to provide enough weight to get enough things of value.

The second tribe leader suggested they have a monthly trade of equal use between each other. One tribe supplies enough of their item to the other two tribes to last the month. While this would work between the hunters and the farmers, it would not work between the cloth and kitchen appliance tribe because kitchen appliances tend to last longer than meat and corn.

The third tribe leader suggests they use a form of currency. Thus far this is the most agreeable method, but they have a hard time picking a good item to use as money. Gold is too rare, and it was hard for them to make something easy to trade but hard to duplicate.

Then one of them has another idea. Why not go to the mainland and mine large stones to use as money? They would be hard to get, and everyone would agree to use them as trade items. The other two agree on this and the tribes finish their meeting.

The three tribes are happy to spare a few tribesmen to go and mine large stones to use as currency from the mainland, and since they are hard to get, nobody has any issue with gaining to many stones to quickly. However, moving these stones between the islands is a huge pain and a hassle to do. So rather than moving them every time someone buys a a cow or small kitchen appliance, they just decide to say that the stone in a certain spot belongs to this one guy.
This works out well for them. The tribes all agree that each stone has it’s own owner, and that the stone can change hands just by telling the other chief about the exchange. The stone never actually moves, but the trade is easily made, and all the tribes know about it.

On one particular mining trip, the boat carrying the stone and the tribesman gets caught in a storm. The tribesmen survive, but they are forced to drop the stone in the ocean. When they come back and tell the other tribes, they all agree that even though the stone is at the bottom of the ocean, the tribesmen still earned it, and it can still be used as currency. Bitcoins are like the stones. They have no real value, other than what we agree on. There is no real benefit from mining them alone, but they are usable nonetheless. Everyone has a record of who owns what bitcoin, and this record is called the block chain, or history of transfers. There are people who can mine more bitcoins, but it is a huge effort, and not always worth it.

{ Add a Comment }

SMBC Comic Challenge

So, on one of my favorite web comics I read this. The comic is about a an application a person created. The application, dubbed “Conception Connection” takes your birthday, and tells you what events may have aroused you parents when they conceived you. It makes for a great little joke at the end.

Now here is where I come in. At the end of the comic there is a red dot. If you mouse over this dot you will see the text “50 internet points to whoever makes it!”. Being challenged thus, I could not refuse and I created this. It is one of the things I am more proud of, because not only does it work, it looks good doing it. Needless to say, I am very happy with the way it turned out.

You can see the source code for the main script over here, highlighted and looking pretty. Once it has your birthday, it goes over to On This Day and takes the events they have so wonderfully made available for us. It then parses the correct html and makes it available similar to the way shown in the comic. However, the script has to go through about forty different pages looking for events that mach the date correctly, so it takes a lot of bandwidth.

That is why I emailed the owners of On This Day, and asked permission to leave it up and make available for everyone else. To my utter delight, they replied and said it was perfectly fine as long as I put a link to their website on it. Here’s the proof.

I hope you guys enjoy messing with my new toy, I know it was a lot of fun making it. I also know it’s been a little while since I posted anything worthwhile, but I do have other project ideas percolating in my head, one of which I have already started on.  Until then, I wish you all a good morning.

{ Add a Comment }

Site Issues

Hey guys, guess what happened?


I don’t know either. I think what happened to my site was the host (which I would still recommend) stopped my site from taking to much processor on their shared hosting. I understand. If I had a server, I wouldn’t want anyone taking more then his fair share either.


I think the processor hogging was caused by somebody stealing my WordPress password, or to many spam bots. whatever, I changed my passwords and added some security plugins, so it should be okay.

{ Add a Comment }

Interesting Recent Doings

Hey guys, sorry it has taken me so long to make another post or update anything, but its getting close to the end of the school year so I have been fairly busy. Anyways, I figured I needed to give you guys some info on what I’ve been doing lately, or some of the stuff that I have been involved in.

Recently (for a while actually), I have been working with a company called ‘Kanyon‘, and they do (mostly) java software development. I found them through their (java) autotyper, and we hit it off. The java autotyper isn’t open source, but it is free  and it has an almost completely different feature set from my autotyper. We are also working three other projects at Kanyon. If just for the autotyper that can run on any pc with java, you should go check them out.

I have also been working on a project with another guy online (we started it ourselves) called IntrepidZ. Basically it is a Open Source zombie survival game based on the project OctaForge. We have been getting our story for it all set up and have been working on some basic map work for it. If you are any sort of game designer (mapping, graphics design, audiophile, etc) then we would love to have you.

So that’s it. go check out Kanyon and see what you think of the autotyper, and if you can come and help us out with IntrepidZ.

{ Add a Comment }

Linux Autotyper 1.1 Released

Alrighty guys! I have finished the latest and greatest version of my Linux autotyper! Some of the main changes are to the menus, and to the OSD. The OSD now has more info for you, and i made the menus a little better. I also added a suffix / prefix form. All the info is in the readme.

I added a countdown for the OSD, and you can now stop / pause / play the text sending with it. (This removes the need for start/stop function keys.)

As for the suffix / prefix form, It lets you add some text to the end and beginning of the text you send. Some games require you to press enter to type the text, and then enter again to send it. This form (Window?) allows you to do that easily.

Anyway, here is the download link:


There is also a detailed install file with instructions for installing the Linux autotyper.

{ 1 Comment }

Installing / Running The Linux Autotyper

It was recently brought to my attention that I do not have clear instructions for installing the linux autotyper. Well, this post fixes that. So without further adieu, the instructions.


1: First, you need gambas2 installed. I may have a script fixing this later, but not right now. To install gambas2:

1a: Open the terminal by pressing “ctrl” and “Shift” and “t” on your keyboard at the same time.

2: Enter this code in the terminal (command prompt for you new-to-linux people)
sudo apt-get install gambas2

You may or may not have to press ‘y’ to confirm that you want to have gambas2 on your system.

3: Download the latest version of the linux autotyper by clicking this link:
Download here.

4: Extract the downloaded zip file to your desktop.
5: Browse to the extracted folder on your desktop, and open it.
6: Open the folder called “Executable”

7: there are two files, DaGeek247s_Autotyper,gambas, and readme.txt.
Make DaGeek247s_Autotyper.gambas executable.

{ Add a Comment }