I Hate Webdesign

Did I mention lately that I hate webdesign? no? let me explain…

While I am quite proficient at writing backend systems in PHP and mySQL, or even taking an existing design and twising it around, chopping it up and changing things, I have no artistic taste when it comes to actually designing things. I have taken on a job for a client, and I now feel that I am out of my depth, it doesnt help that I have absolutely no specification what so ever, none, nada, ziltch… but even still, I should be able to come up with something suitable, but I cant, its just not coming to me… It’s not a particularly complex website, its basicly an online brochure for a catering company so I have settled on using the website baker CMS for doing all of the backend management, it doesnt really need anything more complex than that to do what it needs to do, however this means that 90% of the work to be done on this site is purely design, look and feel… and I hate it.

So far, my design consists of a solid, light coffee color background, some red (to slightly pinkish) text, and a white box with a border… really… is this the best I can do?

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

To the Man Cave!

Purpose: A man cave is loosely a male-only space to retreat to, watch sports matches, or play video games. According to psychiatrist and author Scott Haltzman, it is important for a man to have a place to call his own, referring to a male area to retreat to. Some psychologists claim that a man cave can provide refuge from stressful surroundings and be beneficial to marriage.

Via: Wikipedia

So I have committed myself to building one of these, at present, I have a 15′ x 15′ garage space, ready for the taking. I plan on turning the space into a male friendly (read: full of beer) area with a home cinema setup, a bar and some cool and interesting technology. To date, I already have the Projector & Screen, some basic fittings, some decent insulation for the roof, 2x Wireless access points with which I will be building a P-T-P link, and lots of ideas…

One of the things that I want to do is to install an all LED lighting system composed of high output RGB LED’s – My idea for this is to use an I2C bus linking all of the LED modules with the info and the power over CAT5; as such, I have begun development. I bought some small 3W RGB LED’s from Deal Extreme for developing my proof of concept modules. My PoC so far is comprised of an Seeeduino Mega as the LED controller and unfortunately as I havent made as much progress with my BifferBoard as of yet, I’m currently using a Bus Pirate (v2go) for controlling the I2C bus, the protocol Im using is quite simple, you send the write address of the unit, a # character and then the hexadecimal RGB values, as such the full pallet of colors is available and can be looked up online or from the majority of graphics programs… There are a few points to consider for what you want to use as the LED Controller, if I beef up my C skills, I do intend on moving away from the Arduino plaform and migrating to a smaller lower specced Atmel or PIC uC – resulting in lower costs… the controller so far has a few features…

  • The Default (Startup) Color is programmable from the I2C bus so if there is a power failure etc… the lights will return automatically to a known state.
  • The controller is bus configurable to be Common Cathode OR Common Anode
  • There is more to add here as I complete them, such as disco mode or fade mode, or pre-defined sequences…

I have taken a photo of the test setup I have at present and will provide the sourcode below, I have also been working on a Processing application to play with the idea of doing something similar to the Phillips Ambilight tv where depending on the image on my screen, the lights in the mancave will be a particular color, while I will also post the code for this, its not commented, or pretty, or even working at this point so your on your own with it… I will update as time goes on… anyways, enough jibber jabber, time for some actuall images and real code…

General (Outdated)  Flowchart for the controller:

Picture of the test setup…

And as promised, here is the source for the Arduino:

/* 

Arduino I2C RGB LED Controller

EEPROM Map:
  0x00  configuration block
  0x01  red pwm value
  0x02  green pwm value
  0x03  blue pwm value

*/

#include 
#include 

//PIN Definitions
#define addr0      2
#define addr1      3
#define addr2      4
#define addr3      5
#define redPin     7
#define greenPin   8
#define bluePin    9

//Global Variables
byte redPWM = 0;
byte greenPWM = 0;
byte bluePWM = 0;
byte configBlock = 0;
byte i2cAddress = 0;
byte i2cData[4] = {0, 0, 0, 0};
boolean processQueue = false;

void setup() {

  //Set PIN I/O's
  pinMode(redPin, OUTPUT);
  pinMode(greenPin, OUTPUT);
  pinMode(bluePin, OUTPUT);
  pinMode(addr0, INPUT);
  pinMode(addr1, INPUT);
  pinMode(addr2, INPUT);
  pinMode(addr3, INPUT);

  //Enable internal pullups
  digitalWrite(addr0, 1);
  digitalWrite(addr1, 1);
  digitalWrite(addr2, 1);
  digitalWrite(addr3, 1);

  //Set I2C Address...
  //i2cAddress = (digitalRead(addr0) | digitalRead(addr1) | digitalRead(addr2) | digitalRead(addr3));
  i2cAddress = 7;

  //Register an event to fire when we receive I2C data then join the bus...
  Wire.onReceive(grabData);
  Wire.begin(i2cAddress);

  //Grab previous settings from EEPROM...
  configBlock = EEPROM.read(0);
  redPWM = EEPROM.read(1);
  greenPWM = EEPROM.read(2);
  bluePWM = EEPROM.read(3);

  //Set the PWM outputs for the LED(s)
  setPWM();

  //I think we're ready to enter the main loop now...

}

void grabData(int data) {
  int i = 0;
  while(Wire.available()) {
     i2cData[i] = Wire.receive();
     i++;
  }
  processQueue = true;
}

void setPWM() {
    if(configBlock == 'A') {
    analogWrite(redPin, 255 - redPWM);
    analogWrite(greenPin, 255 - greenPWM);
    analogWrite(bluePin, 255 - bluePWM);
  } else {
    analogWrite(redPin, redPWM);
    analogWrite(greenPin, greenPWM);
    analogWrite(bluePin, bluePWM);
  }
}

void updateEEPROM() {
  EEPROM.write(0, configBlock);
  EEPROM.write(1, redPWM);
  EEPROM.write(2, bluePWM);
  EEPROM.write(3, greenPWM);
}

void loop() {
  //Check to see if we have something to do...
  while(processQueue == false) {
    //Do nothing... but do it quickly!
    delay(1);
  }

  switch(i2cData[0]) {
    case '#':
      //we have a color
      redPWM = i2cData[1];
      greenPWM = i2cData[2];
      bluePWM = i2cData[3];
      setPWM();
      break;
    case 'D':
      //We're setting the default startup color...
      redPWM = i2cData[1];
      greenPWM = i2cData[2];
      bluePWM = i2cData[3];
      updateEEPROM();
      setPWM();
      break;
    case 'C':
      //we're changing the LED type
      if(i2cData[1] == 'A') {
        configBlock = 'A';
      } else {
        configBlock = 'C';
      }
      updateEEPROM();
      break;
    default:
      //do nothing...
      break;
  }

  processQueue = false;
}

And here is the source for Processing:

import processing.serial.*;

PImage myImage;
Serial myPort;

float[] redpx;
float[] greenpx;
float[] bluepx;

float redtotal;
float greentotal;
float bluetotal;

int imgWidth;
int imgHeight;

void setup() {
    //println(Serial.list());
    myPort = new Serial(this, "COM13", 115200);

    myImage = loadImage("red.jpg");
    myImage.loadPixels();

    redpx = new float[myImage.pixels.length];
    greenpx = new float[myImage.pixels.length];
    bluepx = new float[myImage.pixels.length];

    for(int i=0; i> 16 & 0xFF;
        greenpx[i] = myImage.pixels[i] >> 8 & 0xFF;
        bluepx[i] = myImage.pixels[i] & 0xFF;
    }

    for(int r=0; r < redpx.length; r++) {
        redtotal += redpx[r];
    }
    redtotal = redtotal / redpx.length;

    for(int g=0; g < greenpx.length; g++) {
        greentotal += greenpx[g];
    }
    greentotal = greentotal / greenpx.length;

    for(int b=0; b < bluepx.length; b++) {
        bluetotal += bluepx[b];
    }
    bluetotal = bluetotal / bluepx.length;

    int serialData[] = { 91, 32, 48, 120, 48, 69, 32, 48, 120, 50, 51, 32, floor(redtotal), 32, floor(greentotal), 32, floor(bluetotal), 32, 93, 13};      //used for i2c control through a bus pirate
    //int serialData[] = { 'R', floor(redtotal), 'G', floor(greentotal), 'B', floor(bluetotal), 'C', 'A', 'U' };      //used for serial control through rs232

    for(int j=0; j 0) {
       String inBuffer = myPort.readString();
       if(inBuffer != null) {
        println(inBuffer);
       }
    }

    myImage.updatePixels();
}

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

It made me LOL

Just spotted this video online and found it quite funny…

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Teamspeak 3 server on Ubuntu

Well, Teamspeak have finally released their new server platform for a public BETA test, although supposedly in this state the code is not meant to be stable, it appears to be working quite well on my Ubuntu server here at home. This is what I done to get it up and running – as a service from init.d no less. Before doing any of the following steps, please be aware that this IS BETA code and WILL contain bugs that may introduce security issues. The first step is to create a user that the Teamspeak executable can run as, this user should have a complex password for security reasons. This user will also not require a shell account.

sudo adduser teamspeak

Fill in the questions presented by the adduser application.

sudo usermod -s /bin/false teamspeak

The above command will change the users shell to be /bin/false ie. no shell. Now it is time to go and get Teamspeak… visit http://www.goteamspeak.com and find the correct package for the architecture you wish to use ie. Teamspeak_3.0.0-Beta5-32bit…

wget http://ftp.4players.de/pub/hosted/ts3/releases/beta-5/teamspeak3-server_linux-x86-3.0.0-beta5.tar.gz tar -zxvf teamspeak3-server_linux-x86-3.0.0-beta5.tar.gz

Now its time to move the new TS3 directory to its new home…

sudo mv ./teamspeak3-server_linux-x86-3.0.0-beta5 /opt/TS3 sudo chown -R teamspeak /opt/TS3

The above will place TS3 in /opt/TS3 and give ownership of the contents to the user teamspeak. It is now possible to run Teamspeak, however as veteran Teamspeak users will know, the first time you run the Teamspeak server you are presented with a username/password combo that cannot be recovered without resetting the server. In TS3 you will also be presented with a `token` (all of this is described in the Teamspeak documentation). So for the first run, the following command will allow you to gather these details, they should be noted carefully for future reference.

sudo start-stop-daemon –chuid teamspeak –chdir /opt/TS3 –start –exec /opt/TS3/ts3server_linux_x86

From this, you should see the serveradmin user and password. You can now ^C that and be returned to the normal shell, if you cat /opt/TS3/logs/* you will be presented with the token you require to obtain server-admin status on the new server. The last part is to create a script for /etc/init.d/ to launch Teamspeak each time the system is booted to the correct runlevel. /etc/init.d/skeleton provides a suitable framework for this, here is the script I am using, just about… NOTE: Wordpress does not want to format this correctly for me, as such, here is a link to the file in a tar archive. If you follow these instructions and are running a 32bit server, the following file will work out of the box. /etc/init.d/teamspeak This file must then be made executable with

sudo chmod +x /etc/init.d/teamspeak

And finally, the init file must be symlinked to each of the runlevel start dirs using the following…

sudo ln -s ../init.d/teamspeak /etc/rc0.d/K21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc1.d/K21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc2.d/S21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc3.d/S21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc4.d/S21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc5.d/S21teamspeak sudo ln -s ../init.d/teamspeak /etc/rc6.d/K21teamspeak

Viola, you should now have a working Teamspeak 3 server.

BOOTNOTE:

For my initial install, and for the basis of the majority of this, I used this as a reference. Items listed in bold with ** are most likely not the correct file names for the command, I am not close to my server or an available shell to pull the correct parameters at present, but I will update ASAP. As an additional side note, my first impressions of TS3 are very good… It has tons of new features, looks good and the voice quality is very good indeed. My only concern is however the permissions system is very bulky, difficult to understand, and unless you are reasonably familiar with administering a Teamspeak server already, the documentation is not as straight forward as people believe. Still, however, a great job. Well done Teamspeak 3 development team!

UPDATE: Fixed formatting issue, kinda… provided link to pastebin.

UPDATE: Fixed information regarding server executable. Added /etc/init.d/teamspeak file, available for download here, removed pastebin link.

#! /bin/sh
### BEGIN INIT INFO
# Provides:          teamspeak
# Required-Start:    networking
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      S 0 1 6
# Short-Description: TeamSpeak Server Daemon
# Description:       Starts/Stops/Restarts the TeamSpeak Server Daemon
### END INIT INFO

set -e

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DESC="TeamSpeak Server"
NAME=teamspeak
USER=teamspeak
DIR=/opt/tss2_rc2
DAEMON=$DIR/server_linux
#PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Gracefully exit if the package has been removed.
test -x $DAEMON || exit 0

d_start() {
        start-stop-daemon --start --quiet \
                --chuid $USER \
                --chdir $DIR \
                --exec $DAEMON \
                > /dev/null \
                || echo -n " already running"
}

d_stop() {
        start-stop-daemon --stop --quiet \
                --chuid $USER \
                --chdir $DIR \
                --exec $DAEMON \
                || echo -n " not running"
}

case "$1" in
  start)
        echo -n "Starting $DESC: $NAME"
        d_start
        echo "."
        ;;
  stop)
        echo -n "Stopping $DESC: $NAME"
        d_stop
        echo "."
        ;;
  restart|force-reload)
        echo -n "Restarting $DESC: $NAME"
        d_stop
        sleep 15
        d_start
        echo "."
        ;;
  *)
        echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
        exit 3
        ;;
esac

exit 0
Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Brute force SSH attacks.

I have spoken to a good few people and on the matter and one thing they consistantly ask is “How do I know my server is under attack?”, its simple really… if you keep a close eye (in Ubuntu at least) on /var/log/auth.log, you can see all login attempts on the system. Here is an example log of a brute force attack on my very own server…

Dec 7 01:30:02 phonebox sshd[14378]: Invalid user aleph from 60.19.28.27
Dec 7 01:30:02 phonebox sshd[14378]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:30:02 phonebox sshd[14378]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:30:04 phonebox sshd[14378]: Failed password for invalid user aleph from 60.19.28.27 port 16699 ssh2
Dec 7 01:30:08 phonebox sshd[14461]: Invalid user pechantal from 60.19.28.27
Dec 7 01:30:08 phonebox sshd[14461]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:30:08 phonebox sshd[14461]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:30:10 phonebox sshd[14461]: Failed password for invalid user pechantal from 60.19.28.27 port 17732 ssh2
Dec 7 01:30:14 phonebox sshd[14464]: Invalid user komtemp from 60.19.28.27
Dec 7 01:30:14 phonebox sshd[14464]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:30:14 phonebox sshd[14464]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:30:16 phonebox sshd[14464]: Failed password for invalid user komtemp from 60.19.28.27 port 18807 ssh2
Dec 7 01:30:20 phonebox sshd[14466]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27 user=root
Dec 7 01:30:22 phonebox sshd[14466]: Failed password for root from 60.19.28.27 port 19764 ssh2
Dec 7 01:30:54 phonebox sshd[14470]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27 user=root
Dec 7 01:30:56 phonebox sshd[14470]: Failed password for root from 60.19.28.27 port 26354 ssh2
Dec 7 01:30:59 phonebox sshd[14473]: Invalid user test from 60.19.28.27
Dec 7 01:31:00 phonebox sshd[14473]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:00 phonebox sshd[14473]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:01 phonebox sshd[14473]: Failed password for invalid user test from 60.19.28.27 port 27410 ssh2
Dec 7 01:31:05 phonebox sshd[14475]: Invalid user teste from 60.19.28.27
Dec 7 01:31:05 phonebox sshd[14475]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:05 phonebox sshd[14475]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:07 phonebox sshd[14475]: Failed password for invalid user teste from 60.19.28.27 port 28724 ssh2
Dec 7 01:31:10 phonebox sshd[14477]: Invalid user teste from 60.19.28.27
Dec 7 01:31:10 phonebox sshd[14477]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:10 phonebox sshd[14477]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:12 phonebox sshd[14477]: Failed password for invalid user teste from 60.19.28.27 port 29661 ssh2
Dec 7 01:31:15 phonebox sshd[14479]: Invalid user teste from 60.19.28.27
Dec 7 01:31:16 phonebox sshd[14479]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:16 phonebox sshd[14479]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:18 phonebox sshd[14479]: Failed password for invalid user teste from 60.19.28.27 port 30627 ssh2
Dec 7 01:31:21 phonebox sshd[14482]: Invalid user pa$$w0rd from 60.19.28.27
Dec 7 01:31:22 phonebox sshd[14482]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:22 phonebox sshd[14482]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:23 phonebox sshd[14482]: Failed password for invalid user pa$$w0rd from 60.19.28.27 port 31753 ssh2
Dec 7 01:31:26 phonebox sshd[14484]: Invalid user testing from 60.19.28.27
Dec 7 01:31:27 phonebox sshd[14484]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:27 phonebox sshd[14484]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:28 phonebox sshd[14484]: Failed password for invalid user testing from 60.19.28.27 port 32702 ssh2
Dec 7 01:31:32 phonebox sshd[14486]: Invalid user tst from 60.19.28.27
Dec 7 01:31:32 phonebox sshd[14486]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:32 phonebox sshd[14486]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:35 phonebox sshd[14486]: Failed password for invalid user tst from 60.19.28.27 port 33652 ssh2
Dec 7 01:31:38 phonebox sshd[14489]: Invalid user spam from 60.19.28.27
Dec 7 01:31:38 phonebox sshd[14489]: pam_unix(sshd:auth): check pass; user unknown
Dec 7 01:31:38 phonebox sshd[14489]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.19.28.27
Dec 7 01:31:40 phonebox sshd[14489]: Failed password for invalid user spam from 60.19.28.27 port 34704 ssh2

Now, there is a lot more activity in the log than this, however this should give the general idea of what to look out for… If you happen to be lucky enough to have a MikroTik router, you can help slow or prevent this with some creative firewall rules, here are the rules I am using for this, as provided in the MikroTik WiKi.

/ip firewall filter add chain=input protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment=”drop ssh brute forcers” disabled=no
/ip firewall filter add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage3 action=add-src-to-address-list address-list=ssh_blacklist address-list-timeout=10d comment=”" disabled=no
/ip firewall filter add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage2 action=add-src-to-address-list address-list=ssh_stage3 address-list-timeout=1m comment=”" disabled=no
/ip firewall filter add chain=input protocol=tcp dst-port=22 connection-state=new src-address-list=ssh_stage1 action=add-src-to-address-list address-list=ssh_stage2 address-list-timeout=1m comment=”" disabled=no
/ip firewall filter add chain=input protocol=tcp dst-port=22 connection-state=new action=adadd chain=forward protocol=tcp dst-port=22 src-address-list=ssh_blacklist action=drop comment=”drop ssh brute downstream” disabled=nod-src-to-address-list address-list=ssh_stage1 address-list-timeout=1m comment=”" disabled=no

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Embedded Linux Development

I work for a company that is currently utilising Linux on an embedded platform, now I am a big fan of Linux, and I do really like embedded systems… so the natural progression was to go and learn about embedded Linux development. I managed to find a really good book called the Embedded Linux Primer: A Practical Real-World Approach which really is very good. So, as a kind of training exercise, I will be attempting to build my own customer miniture linux distribution (borrowing some things from other projects) for an embedded system. The board I have chosen is the BifferBoard which is available from http://www.bifferboard.com and is a very cheap x86 based system with a lot of handy features such as UART, JTAG, GPIO, Ethernet, really good board and again, really cheap, I paid around €30 for mine…

I do have a few goals that I intend to accheive in the proccess of doing this project and a few additional tools will be imported from other projects… the main requirements that I have are…

  • Very small footprint.
  • Custom compiled kernel that has the bare essentials to support all of the hardware on the board natively, no KLM’s allowed.
  • A working shell environment, Busybox is my target at present.
  • A port of UCI which is extensively used throughout OpenWRT, that really is an awesome configuration utility.
  • A port of the LUCI framwork, again, used extensively throughout OpenWRT.
    • LUCI is a MVC based framework written in LUA that provides superb interaction with the UCI configuration tool.
  • A method of automatically ‘provisioning’ a unit with a set of configuration files
    • Most likely the provisioning will be handled on a back end server somewhere (read: webserver) where the unit it’s self simply checks the server on first boot and will grab the config files if they exist.
  • Support for V4L and webcams. This provides the potential to take a cheap webcam, and a cheap board, and have a cheap IP camera.

More will be added to this list as some of the items are checked off or as a need arises for them. One thing that I cant think of, and I have never been very good at it, is a name for the project. Any ideas? Please do let me know in the comments, one idea I heard was ic-linux…

Since committing to doing this I have built a small development area for myself using my Laptop and some other equipment I had that would be useful, USB hub, old router with DHCP disabled as I dont have a small switch, various tools, memory sticks etc… unfortunately I was doing some work on my room and ended up making a mess of it all so its not exactly picture worthy at the minute, but I will get some put up soon.

Anyway, thats enough rambling on for now…

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Getting Manhunt to run in Windows Vista

RockStar Manhunt

Many people have tried to run Manhunt on Windows Vista but without any luck, through a fair ammount of Googling in the past, I came across this fix…

Step 1:
Download XVI32 from http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm

Step 2:
Back up your manhunt.exe file

Step 3:
Open manhunt.exe in XVI32

Step 4:
From the addreess tab at the top, select “Goto”
Select the hexedecimal option and set the go mode to “Absolute”

Step 5:
In the Goto box, enter in 08DE

Step 6:
If all above went well, you should see a box highlighted containing 6A,
modify this so that it says 2A.

Step 7:
Save the file and exit the editor.

Step 8:
Play.

Thanks to Sonnilivo for the great information relating to this!

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

New project…

Being constant tinkerer that I am, I have a new (old) project in the pipelines! Im actually revisiting an older project of mine that fell by the way-side to make room for constant gaming and neglect of wanting to actually do anything. It all started when I ordered some books from a site that I like and actually read them instead of leaving them sitting on my shelf for a change. And so it begins, in an effort to prove to myself that I can read a book and really learn from what it has to say, BuildFunStuff v2 is in the works. The project is going to consist of the following milestone goals…

  • Designing a custom theme for wordpress that is HTML 4.01 Strict compliant.
  • Writing a full, comprehensive legal disclaimer
  • Writing an accessibility statement
  • Writing a number of fun projects you can build at home with minimal tools
  • Integrating wordpress with Google Adsense
  • Integrating wordpress with Twitter
  • Making a few short video’s to advertise the site and its projects

Of course, not all of these milestones are going to be in the order they are listed in here, in fact the disclaimer has been drafted and is awaiting review. Even the accessability statement is a work in progress, of course the statement cant be finalised until the theme is comlete because who knows what type of whacky accessability stuff I’m going to integrate into it. The theme is most likely going to be based off the 160gs CSS system as I think that would be a useful learning exercise. The projects can all be done in the background as Im working on the rest of the bits and pieces, all in all at present, I’d say I have around 10% of the total work drafted… which really means around 0% of it done since its all going to have to be re-visited… but hey, you have to start somewhere dont you?

Anyway, thats enough jibber jabber for now…

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Roll your Own: Wide Area Network (WAN) pt.2

Ok, so there hasn’t been all that much movement on this project as of yet, but I do have a lot of ideas for it and I am in the proccess of aquiring parts. At the minute, I have the following embedded boards to use,

  • PC Engines Alix .3C
  • PC Engines Wrap .1D
  • PC Engines Wrap .2C
  • PC Engines Wrap .1C
  • RB-532 (Routerboard running MicroTik firmware)
  • RB-564 (Routerboard Expansion Module)

For storage, I have 5x 128mb CF cards and 1x 2GB CF card. I also have 3x PoE injectors (the quick and dirty kind), 3x CM9 radio cards, and 1x 27dBi omni-directional antenna for 2.4GHz (which by the way, is awesome)

For servers, I still have PhoneBox, a 1.6GHz Intel Atom mini-ITX machine, I am working on getting a new, shiny rackmount dual core 1.6GHz machine too so that will be two servers for a start. I have also managed to aquire a racking case thats 600mm deep and has the capacity for around 12u, although it is missing its front bezel rails – I’m fairly confident I can find them somewhere in work. Im working on getting a new (2nd hand) patch pannel to keep everything neat and tidy too. Next on my list of things to do is to get a PSU built that can run all of this equipment with UPS functionality, I do have a 3A power plex box here that I also got from FWI, however it is not working at the moment, I beleive it is the power FET thats gone and it should be a simple chop & change replacement. Failing that, I will design a SLA charging circuit and feed the 12v supply from the transformer, and the 12v supply from the SLA bank into a comparator for fast switching on a power cut. I would like to have a UPS that can maintin the routing infrastructure during an outage for 16-24 hours. As the (soon to be) two Mini-ITX servers also run off 12v, I would like to have these included in the UPS scheme for a few reasons,

  1. A transformer at max-efficiency can only be around 85%, less transformers (power blocks etc…) means less power lost and a smaller electricity bill.
  2. The servers will be running Linux, which in some (lots of) cases, it doesnt like just having its power yanked.
  3. Everthing will be in a centralised location (at least at my station) so it will mean less wiring.
  4. Everything can then be rackmounted, and there would only be a single mains feed.

I am currently trying to draw a sufficient network topology plan including wiring and subnetting for my station to allow for easy management & high security. This also involves selecting what services will be provided on the network here – more on this later.

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter

Roll your Own: Wide Area Network (WAN)

Thanks to my friends over at Fast Wireless Internet, I now have my own ISP grade wireless equipment. I will be using this (hopefully) to build a wireless link from my house in Dublin, to my parents (and my mates) house in Laois. this is a wireless link of over 50km so proper preparation is paramount. The main idea is to have two directional antennae on each site, one for TX and one for RX, coupled with this will be a standard (high gain) omni-directional for spread coverage of the surrounding area.

The main equipment that is going to be used is RouterBoards running the Micro-Tik (Linux based) operating system, 5.8Ghz Wireless cards and some high gain, narrow beam (~7°) dish style antennae. The house in Dublin will have an extended mounting post fixed to the roof, while the house in Laois already has access to a nice big shiny mast (and a wind turbine)

I’m also in the middle of working on some security features for this, y’know wireless isn’t all that secure… so I will be using MAC filtering, WPA2, Radius and possibly passive IDS & Network monitoring. The Micro-Tik will take care of the first two, but I’ll be implementing a PFSense system on a PC Engines Wrap.1D too.

In order to house all of this equipment, I will be building a small(ish) NOC or Network Operations Centre in my attic, an more than likely my mate will just add the new equipment to the NOC thats already on his end. As a part of this NOC build, I will be making (meh, repairing) a 12V UPS and fitting it with some high AH batteries, moving my mini-itx to it, and building a custom P0E power distribution system.

All in all, its going to be a big, interesting project… I’ll keep you posted!

Share this post...
  • Print
  • Digg
  • del.icio.us
  • Google Bookmarks
  • Fark
  • HackerNews
  • Reddit
  • Slashdot
  • StumbleUpon
  • Technorati
  • Twitter