Steganography

The exchange of information is greater today than ever before in our history.  This means that the threat of evil misusing these standard channels of communication to send stolen information or a plan against a nation is more likely now than ever (Goel, Garuba, Liu, & Nguyen, 2007).  After the attack of 9-11 it was believed that terrorist were hiding information in pictures using steganography.  The goal of this research paper is to discuss ways in which steganography can be detected.

To understand methods of detecting steganography, it is necessary to define what steganography is and how it works.  Steganography is a general term for a process of hiding information.  The word Steganography has its origin in the Greek language, meaning “covered writing” (Johnson & Jajodia, 1998).  Most commonly steganography will be used to hide messages.

Steganographic data is mostly hidden within a picture file.  The data or message can be stored as a picture hidden within a picture or in the lower level bits of a picture file.  A few other common file types which can be utilized by steganography include audio and document files.  These are more difficult to create then a picture file.  They do offer increased protection against detection (Artz, 2001).

The data is either stored as a picture hidden within the main picture, or in the data that makes up the bits of the picture file.  Other common file types utilized by steganography include document files and audio files, both of which are much harder to create then a steganographic picture file, but offer increased protection against detection (Artz, 2001).

Like many security applications and tools, steganography can be used for a variety of reasons.  Some good purposes could include things like watermarking images for reasons such as copyright protection.  Digital watermarks (also known as fingerprinting, are especially important in copyright material) are similar to steganography in that the watermark is overlaid and appear to be part of the original file and are thus not easily detectable by the average person.  Another use would be to tag notes to online images.

Read entire paper @ google docs.

Google I/O

This would be me, if I was at Google I/O 🙂

Google IO and Tablet

I was able to attend the Google IO Extended downtown St. Paul.  I signed up right away for http://music.google.com… just waiting for an acceptance to my invitation request… anytime now!

Changing Hostname in Ubuntu

To permanently change your host name make sure you hit all the spots.  You can start by looking at the following:

1
sudo hostname NEW_HOST

You will first want to edit your hostname file:

1
sudo vi /etc/hostname

Then run:

1
/etc/init.d/hostname.sh start

After you have done that then change your hosts file:

1
sudo vi /etc/hosts

If you are running this on VMWare you will need to delete this file

There is a file /etc/udev/rules.d/<some number>_persistent-net.rules, where udev caches, which hardware device should get named eth0. Here it looks like this:

1
2
\# PCI device 14xx:16xx (tg3)
ACTION=="add", SUBSYSTEM=="net", DRIVERS=="?*", SYSFS\{address}=="00:11:xx:xx:xx:xx", NAME="eth0"

Make sure that you have configured to use dhcp instead of static ip for your machine. Otherwise it will grab the same ip address of the other machine already on your network.

ECMAScript 5 Showing Up In Browsers

A better JavaScript!  ECMAScript 5 was standardized in late 2009 but only recently has it has started showing up in browsers.

It supersedes the 3rd edition, which was ratified in 1999.  This is in IE 9+.

ECMAScript 5 has actually two modes

  • ES5/Default
  • ES5/Strict – Switching to strict mode requires the statement shown to be placed at the start of a file or function. — ‘use strict’;

Future versions are going to be built on top of ES5/Strict and it is recommended that the default version be avoided.

Douglas Crockford goes through what the features are, what can be used right now and what your kids will be able to use: http://channel9.msdn.com/events/MIX/MIX11/EXT13

Some features:

  • Can use trailing commas:  { “trailing”: “comma”, }  or [ “trailing”, “comma”, ]
  • Constants – Infinity, NaN
  • parseInt works!  parseInt(‘08’) === 8
  • JSON.parse(text, reviver) & JSON.stringify(value, replacer, space)
  • Function.prototype.bind added
  • String.prototype.trim added
  • Array.prototype.every added
  • Array.isArray()
  • get/set: These are the getter and setter functions needed for accessor properties
  • Object.keys (much better than for-in)!
  • Object.create
  • Attributes – Value, Writable, Enumerable, Configurable, Get, Set
  • Can limit the object extensibility which can make the object immutable.
  • Strict mode
    • Reserved words: implements, intereface, let, package, private, protected, etc.
    • No more implied glabal variables within functions
    • “this” is not bound to the global object by function form.

SharePoint Reset Password

Reset password
stsadm -o updatefarmcredentials -userlogin -password
stsadm -o updatefarmcredentials -identitytype NetworkService
iisreset /noforce
More Info:
http://technet.microsoft.com/en-us/library/cc288991.aspx
http://technet.microsoft.com/en-us/library/cc287638.aspx

Git and Submodules

We were looking at using submodules to store all of Windchill code. Currently it is around 10 million lines of code in over 400+ modules. It seems to make sense to have every module a git repo even though some modules are quite small.

I was curious though if when using git submodules we could still have a quick response to the question, “What did I change?”. If you ran “git status” in the super module it responds rather quickly with the modified submodules. Unfortunately it does not respond with the names of the files changed. It wouldn’t be performant to do a git status in each submodule, especially when you know right away which submodules changed. So that is where this script comes in handy.

1
alias cdv="cd /f/Git_Module/git_super_module"
1
2
3
4
5
username@localhost /f/Git_Module/git_super_module (master)
$ function sstat { cdv; for m in $( git status -s | grep -E '^ M' | cut -c4- );
do if [ -e $m/.git ]; then cd $m; ( git diff --name-status HEAD; git ls-files
-o --exclude-standard | sed -e 's/^/A /' ) | sed -e "s,\s, $m/,"; cdv; else ech
o $m; fi; done; }
1
2
3
username@localhost /f/Git_Module/git_super_module (master)
$ sstat
M Folder/Where/File/src/loadFiles/customization/fileModified.xml

Awesome! So now we can see which files were modified in a few seconds (on linux this is less then a second). That is pretty sweet.

Until next time.

Setting Up and Move to Amazon EC2

This is really cool.  I have moved this blog and the dozen or so other websites I maintain to this new server.  I am pretty excited about the initial results.  Though I shouldn’t be surprised by any means.  It is just exciting to see the difference.

The old server and slow internet:

Home Server

 

On stella it got the worst rating, as it should.

Now for the performance of the Amazon EC2 Micro instance:

Amazon Ec2

Talk about a huge difference in time.  It is really the performance of what the website should be.

So far the cloud and the Amazon EC2 setup has not been bad at all.  I configured an Ubuntu 10.10 Maverick x64 instance.

The documentation is pretty good.  It was a bit difficult figuring out which ubuntu cloud instance I should choose from.  I ended up finding the following page useful:

https://help.ubuntu.com/community/EC2StartersGuide#Getting the images

And then to figure out how to login using PuTTY on a windows box since you can’t use the normal username/password combination:

http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html

All in all – the information is available once you can find it.

Enjoy!

Jumped in on Amazon EC2

I have obviously heard all the hype of the cloud infrastructures. Never had a need to jump in and try it though. I have been happy with my server machine that happily runs 24/7 using ubuntu. I have had it running over a full year without having to restart that machine even once. I made the mistake of looking at performance of the server. Not a good idea. I quickly realized that some of the websites I was hosting need to be on a more production like server. Now where do I turn? Maybe the cloud was my answer?

I really enjoy controlling the server so I immediately ruled out Google’s App cloud. It also ruled out the old $7 dollars/month domain hosting sites. Though some do allow ssh access they do not allow you to do upgrades on the server. I am down to only a few select. There may be others out there but it came down to Slicehost and Amazon EC2. Basically, since Amazon had the free year and I have heard so many good things about it. It ended up being a easy choice. The only probably is how much I will pay after the free year is up. I might end up going back to my old server if the cost is too high. Time will tell 🙂

I personally went with the Ubuntu Maverick x64 bit install. Here is the details – https://help.ubuntu.com/community/EC2StartersGuide

Here is some help for connecting with PuTTY for the first time:
http://docs.amazonwebservices.com/AmazonEC2/gsg/2007-01-19/putty.html

Grails vs. Rails vs. Roo!?

There are some great choices out there to choose from when starting a new web development project. Whether you are just doing a simple site or starting your own business. The frameworks, very thankfully, are getting so good. Which one will manage to stand the test of time? The graph below doesn’t mean that the most trend is always going to be the highest one, especially since roo is so fresh and in the past year has been improved dramatically.

passwd: Authentication token manipulation error

There are many reasons why you might get this error but a simple one (not to overlook) is that you have your username on NIS! In my case, I have local and NIS users and forgot that this user was hooked up to NIS.

Instead of using passwd you should be using:

1
yppasswd