Thursday, June 19, 2008

Asus Eee PC Review

The Asus EEE PC is hot, hot, HOT! Who would have thought that a sub-compact laptop would become so popular in a world where “bigger is better”? Everyone wants more storage and bigger screens and more features - and yet these small computers grow in sales every month!

The first surprise is that the Asus EEE PC is a sub-compact laptop that runs on “Linux” and not Windows. Right away that pigeonholes the purchasers to geeks and technophiles. The Macbook and Mac air are both geeky devices, and Mac’s OS share went from 9% to 14% from 2007-2008. Linux use on low-end PC’s is growing, the Everex gPC sold at Wal-Mart online sold out. Consequently, the gPC got pulled from Wal-Mart retail shelves, probably because geeks don’t shop in brick and mortar stores for tech gear. Currently, the Asus Eee PC 4G Surf is in the Amazon top 10 lists for “Computers and Hardware” beating out all Apple models.

Why is it that Makes the Asus Eee PC so popular?

I think one obvious point it that it’s cheaper than an iPhone, but a fully fledged computer. Both the screen and keyboard are smaller than a conventional laptop, but completely usable. If you’re tired of carrying around a PDA type phone with a folding keyboard from hell or tiny thumbkeys - why not just get an Asus EEE PC? It’s probably around the same money.

Features:

- affordable pricetag (from $300-$500)

- Built in camera (0.3 megapixel 30fps)

- Durable Solid State Drive (4-20GB SSD)

- MMC / SD memory card slot and 3 USB Ports

- 512MB - 2GB RAM

- 800×480 screen resolution

- Wifi b/g 10/100 wired connections

- Xandros Linux installed

- Great for Personal Use

- Only 2 lbs

- No bigger than a hardcover book

The company that makes these (Asustek) predicts selling 2 million units in 2008. That’s significant for a Linux based OS. It should be no surprise however that one of the most popular hacks is to convert the Asus Eee PC to Windows XP (if you have a valid license of course). Linux is great, but some of the most popular complaints in Amazon comments for the Eee PC are that it’s not user-friendly or for the first time Linux user. That’s where the geek factor comes into play. The happiest customers for the Eee are geeks that have no problems configuring and using Linux. Even though the Xandros distribution is very user-friendly, your average non-geek might run into problems when plugging in their store bought iPod, printer, or digital camera. Comment squakers will attest to this, but geeks will boast how easy-to-use and configurable it is.

So - it may be no surprise that Asustek is going to play to the masses and release a Windows XP version of the Asus Eee PC installed from the factory. In just the last month the Asus Eee PC 4G and 12G have been released with Windows XP Home installed. The main difference most will notice between the 4G and 12G an increased screen size to 8.3″, allowing a default 1280×600 resolution (much closer to a standard desktop). With the Windows versions selling well, Asus should have no problems reaching their 2008 sales goals.

That does raise the price slightly, but at just over $500 it’s not much more than an Xbox 360 or Playstation 3. All in all the “bang for the buck” is pretty good with the Eee PC considering how much high end gaming systems and cell phones cost. Small portable computers are going to get more and more popular, will you be the next to buy one?

SSH Tunneling In Your Application

Introduction

This article is dedicated to the task of securing MySQL client-server connection using functionality provided by the Secure Shell (SSH) protocol. To be exact, the SSH tunneling concept is utilized. We will review the steps needed to build secure MySQL client applications and implement a sample one ourselves.

MySQL traffic is not the only kind of data that can be tunneled by the Secure Shell. SSH can be used to secure any application-layer TCP-based protocol, such as HTTP, SMTP and POP3. If your application needs to secure such a protocol by tunneling it through a protected SSH connection, this article will be useful to you.

Background

Let’s imagine that we are developing an enterprise application that needs to send requests to a number of SQL servers all over the world and get responses from them (let’s imagine that it’s a super-powerful bank system that stores information about millions of accounts).

All the data between the application and SQL servers are transferred via the Internet “as is”. As most protocols used by SQL servers do not provide data integrity and confidentiality (and those that do, do it in a quite nontransparent way), all the transferred requests and responses may (and be sure, they will!) become visible to a passive adversary. An active adversary can cause much more serious problems - he can alter the data and no one will detect it.

SSH (Secure Shell) is a protocol that may help in solving this problem. One of its outstanding features is its ability to tunnel different types of connections through a single, confident and integrity-protected connection.

Now you do not have to worry about securing the data transferred over the Internet - SSH will handle this for you. In particular, SSH will take care of the following security aspects:

Strong data encryption according to the latest industry-standard algorithms (AES, Twofish)
Authentication of both client and server computers
Data integrity protection
Stability with regard to different kinds of network attacks
Compression of the data being tunneled
Complete independence of the operating system and network specifics

Tunneling (or forwarding) works in the following way:

SSH client opens a listening port on some local network interface and tells the SSH server that he wishes to forward all connections accepted on this port to some remote host.

When another connection is accepted on the listening port, the SSH client informs the SSH server about this fact and they together establish a logical tunnel for it. At the same time, the SSH server establishes a new TCP connection to the remote host agreed upon in step 1.

The SSH client encrypts all the data it receives from the accepted connection and sends it to the SSH server. The SSH server decrypts the data received from the SSH client and sends it to the remote host.

Please note, that the SSH client acts as a TCP server for the connections it accepts, and the SSH server acts as a TCP client for the connections it establishes to the remote host.

A single SSH connection can tunnel as many application layer connections as needed. This means that you can defend your server by moving all the listening ports (e.g., database and application server ports) to a local network, leaving only the SSH port open. It is much easier to take care of a single port, rather than a dozen different listening ports.

Into the Fire
Let’s develop a small application that illustrates the use of SSH forwarding capabilities. We will consider an important task of securing a connection between a MySQL client application and a MySQL server. Imagine that we need to get information from the database server, which is located a thousand miles away from us, in a secure way.

SecureMySQLClient is the application we are planning to implement. It includes the following modules:

SSH client-side module with forwarding capabilities
MySQL client-side module
User interface for configuring application settings and displaying query results.

The SSH server runs in a remote network and is visible from the Internet. The database (MySQL) server runs in the same network as the SSH server and may not be visible from the Internet.

The process of performing secure data exchange between SecureMySQLClient and the Database server goes as follows:

The SSH client module negotiates a secure connection to the SSH server and establishes forwarding from some local port to the remote MySQL server.
The MySQL client module connects to the listening port opened by the SSH client module.
The SSH client and server set up a logical tunnel for the accepted connection.
The MySQL client sends SELECT to the port opened by the SSH client module, which encrypts it and sends it to the SSH server. The SSH server decrypts the request and sends it to the MySQL server.
The SSH server receives a response from the MySQL server, encrypts it and sends it back to the SSH client, which decrypts it and passes it to the MySQL client module.

Looks too complex? Implementing this is easier than you think.So, let’s go and do it.

We will need the following products installed on the computer before creating the application:

Microsoft Visual Studio .NET 2003, 2005 or 2008.
EldoS SecureBlackbox (.NET edition). Can be downloaded from
http://www.eldos.com/sbbdev/download.php.
MySQL .NET Connector. Can be downloaded from
http://www.mysql.com/products/connector/net/.

Let’s now open Microsoft Visual Studio .NET (we will use the 2005 version) and try to build such an application from scratch.

After the GUI design has been finished, we can go on with the business logic code itself. First, adding references to the following assemblies to our project:

SecureBlackbox
SecureBlackbox.PKI (only in SecureBlackbox 5. SecureBlackbox 6 doesn’t have this assembly)
SecureBlackbox.SSHClient
SecureBlackbox.SSHCommon
MySql.Data

SSHForwarding notifies us about certain situations via its events, so we need to create handlers for some of them:

OnAuthenticationSuccess - Is fired when the client authentication process has been completed.

OnAuthenticationFailed - Is fired if the client was unable to authenticate using particular authentication method. In general, this does not mean that the authentication process completely failed – the client may try several authentication methods consequently and one of them may succeed.

OnError - Is fired if some protocol error occurs during the session. Usually this leads to a connection closure. The exact error can be detected via the error code passed to it.

OnKeyValidate - Is used to pass the received server key to the application. Please note that incorrect handling of this event may result in a serious security breach. The handler of this event should verify that the passed key corresponds to the remote server (and warn the user if it does not). If the key is valid, the handler should set the Validate parameter to true. The sample does not perform key checkup for the sake of simplicity.

OnOpen - Is fired when the SSH connection is established and the component is ready to tunnel data. We will use the handler of this event to kick the MySQL client component.

OnClose - Is fired when the SSH connection is closed.

OnConnectionOpen - Is fired when a new tunnel is created. The corresponding tunneled connection object is passed as parameter.

OnConnectionClose - Is fired when an existing tunnel is closed.

Implementing two core methods, SetupSSHConnection() and RunQuery(). The first one initializes the SSHForwarding object and establishes an SSH session to the remote server by calling its Open() method, and the second one sends the query to the MySQL server.

The code of the SetupSSHConnection() method is pretty simple:

private void SetupSSHConnection()

{

// Specifying address and port of SSH server

Forwarding.Address = tbSSHAddress.Text;

Forwarding.Port = Convert.ToInt32(tbSSHPort.Text);

// Setting credentials for authentication on SSH server

Forwarding.Username = tbUsername.Text;

Forwarding.Password = tbPassword.Text;

// Specifying network interface and port number to be opened locally

Forwarding.ForwardedHost = “”;

Forwarding.ForwardedPort = Convert.ToInt32(tbFwdPort.Text);

// Specifying destination host where the server should forward the data to.

// Please note, that the destination should be specified according to

// SSH servers point of view. E.g., 127.0.0.1 will stand for

// SSH servers localhost, not SSH clients one.

Forwarding.DestHost = tbDBAddress.Text;

Forwarding.DestPort = Convert.ToInt32(tbDBPort.Text);

// Opening SSH connection

Forwarding.Open();

}

A bit more complex is the code of the RunQuery() method (to be exact, the code of RunQueryThreadFunc() method, which is invoked in a separate thread by the RunQuery() method):

private void RunQueryThreadFunc()

{

MySqlConnection MySQLConnection = new MySqlConnection();

// forming connection string

string connString = “database=” + tbDBName.Text + “;Connect Timeout=30;user id=” + tbDBUsername.Text + “; pwd=” + tbDBPassword.Text + “;”;

if (cbUseTunnelling.Checked)

{

// specifying local destination if forwarding is enabled

connString = connString + “server=127.0.0.1; port=” + tbFwdPort.Text;

}

else

{

// specifying real MySQL server location if forwarding is not used

connString = connString + “server=” + tbDBAddress.Text + “; port=” + tbDBPort.Text;

}

MySQLConnection.ConnectionString = connString;

try

{

// opening MySQL connection

MySqlCommand cmd = new MySqlCommand(tbQuery.Text, MySQLConnection);

Log(”Connecting to MySQL server…”);

MySQLConnection.Open();

Log(”Connection to MySQL server established. Version: ” + MySQLConnection.ServerVersion + “.”);

// reading query results

MySqlDataReader reader = cmd.ExecuteReader();

try

{

for (int i = 0; i <>

{

AddQueryColumn(reader.GetName(i));

}

while (reader.Read())

{

string[] values = new string[reader.FieldCount];

for (int i = 0; i <>

{

values[i] = reader.GetString(i);

}

AddQueryValues(values);

}

}

finally

{

// closing both MySQL and SSH connections

Log(”Closing MySQL connection”);

reader.Close();

MySQLConnection.Close();

Forwarding.Close();

}

}

catch (Exception ex)

{

Log(”MySQL connection failed (” + ex.Message + “)”);

}

}

And, that’s all But there is one more thing I need to draw your attention to. As both SSH and MySQL protocols run in separate threads and access GUI controls from those threads, we need to handle the GUI access in a special way to prevent a cross-thread problems. I will illustrate this with the example of the Log() method:

delegate void LogFunc(string S);

private void Log(string S)

{

if (lvLog.InvokeRequired)

{

LogFunc d = new LogFunc(Log);

Invoke(d, new object[] { S });

}

else

{

ListViewItem item = new ListViewItem();

item.Text = DateTime.Now.ToShortTimeString();

item.SubItems.Add(S);

lvLog.Items.Add(item);

}

}

Finally, the application is finished, and we may try it in work. So clicking F5 and specifying the following settings in the text fields of the application form:

SSH server location, username and password used to authenticate to it.
Database server address, port, username, password, database name and query. Remember that database server address should be specified as it is visible from the SSH server.
Turning on the “Use tunneling” checkbox.

Now click the Start button and wait for the query results. If all the parameters have been specified correctly, we should get something like this:

Features and requirements

SSH protocol provides (and SecureBlackbox implements) the following features:

Strong data encryption using AES, Twofish, Triple DES, Serpent and many other symmetric algorithms with key lengths up to 256 bits
Client authentication using one or multiple authentication types (password-based, public key-based, X.509 certificate-based, interactive challenge-response authentication)
Server authentication
Strong key exchange based on DH or RSA public key algorithms
Data integrity protection
Compression of tunneled data
Multiplexing several tunneled connections through a single SSH connection

SecureBlackbox provides the following functionality as well:

Comprehensive standards-compliant implementation of the SSH protocol (both client and server sides)
Support for cryptographic tokens as storage for keys and certificates
Windows system certificate stores support
Professional and fast customer support

SecureBlackbox is available in .NET, VCL and ActiveX editions. This means that you can use the components in projects implemented in C#, VB.NET, Object Pascal (Delphi and Kylix), FreePascal, VB6 and C++ languages.

SecureBlackbox (.NET edition) is available for Microsoft .NET Framework 1.1, 2.0, 3.0 and 3.5, and .NET Compact Framework.

My Recommendations On Removing Spyway And Malware

I am a PC engineer at the easyPC company who has serviced over 2000 clients PCs in the last year alone. My advice is comes from my personal experience and previous testing of many of the spyware removal programs out there.

First of all understanding the difference between Viruses & Spayware:

If you are currently running a very popular virus protection software like Norton or McAffee and believe that your software will do the ‘complete’ job then you are completely mistaken. We have run a complete virus check on a particular PC and have found nothing. After the scan has been complete we have immediately run a Spyware scan and have found hundreds of Spyware infections on the same PC. This confuses the majority of people due to the fact that both viruses and spyware seem to be the same.

Viruses…

Some viruses are programmed to damage the computer by damaging programs, deleting files, or reformatting the hard disk. Others are not designed to do any damage, but simply replicate themselves and perhaps make their presence known by presenting text, video, or audio messages. Even these benign viruses can create problems for the computer user. They typically take up computer memory used by legitimate programs. As a result, they often cause erratic behavior and can result in system crashes. In addition, many viruses are bug-ridden, and these bugs may lead to system crashes and data loss.

Spyware…

Spyware programs can collect various types of personal information, such as Internet surfing habit, sites that have visited, but can also interfere with user control of the computer in other ways, such as installing additional software, redirecting Web browser activity, accessing websites blindly that will cause more harmful viruses, or diverting advertising revenue to a third party. Spyware can even change computer settings, resulting in slow connection speeds, different home pages, and loss of Internet or other programs

From testing all the differnt software out there the following seem to be the most popular
- spyware doctor
- adaware pro
- counterspy
- spyware sweeper

But the best by far is Spybot search and destroy by safer-networking. First of all run this program with the internet turned off and after a fresh reboot. When you do run this for the first time, dont be alarmed at the amount of infections that it finds and that your virus protection has completely missed.

After scanning which usually takes 20-30mins, spybot ‘may’ ask you to reboot and rescan. If this is the case then do so. The reason for this is because some of the spyware infections can not be removed at the time of that scan because they are currently running and need to be shut off to remove.

Once completed reboot again and you will find your PC will be running so much faster.

Security And The Auto Complete Feature

The security of your computer is important on both private as well as business applications.

Many have found the use of the auto complete features associated with many browsers a popular way to avoid keystrokes. After all what could be more convenient than simply filling in a form for informational purposes and allow that saved information to be brought up with a single click?

The auto complete feature is especially popular with email programs. You simply type a few letters related to the email address and if it is in your system you may receive multiple choices that include those letters. You choose the correct email address and click send. The process is quick and has found many appreciative users.

Even word processors can use auto complete technology. For instance if you begin to type today’s date you may find a suggested date that you simply click saving some typing time. Many have come to rely on the feature to make checkout in ecommerce quick and painless.

I’d like to provide an argument for refraining from using some auto complete technology in the world of online business.

The use of this technology in a word processor is generally a great tool simply because it does not rely on any personal data and is primarily designed to assist in popular words, dates and letter writing.

However, when it comes to filling in a one-click web browser auto complete feature there are a couple of scenarios I’d like you to consider.

Barb owns a small, but growing online business. She hired Pam on a part time basis to help with product fulfillment. Pam was a good worker and was allowed to use the company computer from time to time. Without intending to do so Pam clicked a box that filled in auto complete data and she was able to view personal data that Barb might not have shared with Pam under other circumstances. Perhaps nothing ever happens with the data, but if Barb had to do it over again she may not have used auto complete.

Brian is a hacker. He doesn’t consider himself malicious although his actions may say otherwise. He tries to find ways into other computers to explore the holes that may exist in a system. As he is exploring one afternoon he found a vulnerability in Barb’s computer security. One of the pieces of data Brian may be looking for is to see if Barb has used an auto complete feature. He can gain plenty of information and has the potential to gain password information because Barb settled for convenience over caution.

Barb would never have given out this information to just anyone, yet more than one person has access to her computer and this information was easily obtained.

Many businesses are also disabling the ability for their computers to store and remember passwords. If a site is accessed where a password is stored it becomes very easy for a third party to investigate online accounts, buying habits and potentially make an online purchase under your name and using your credit information.

It may seem a small thing, but evaluating your use of auto complete technology may be an issue worth your attention.

Website Sales Purpose

When designing a website, it is important that webmasters ask some general questions before they begin the design process…

What Is The Purpose Of Your Website?

Many companies use websites to establish their brand. Others use websites as a communication tool. Some companies see websites as sales vehicles and “billboards”. Still others use their website as an educational tool. And some may be any combination of the above. The website must have a purpose in order for it to be effective.

What Is It That You Are Trying To Accomplish With The Website?

A strong understanding of the website will allow a webmaster to emphasize the action they want the website visitor to take on the website. By defining and understanding the purpose of the website, webmasters and publishers can better structure the information on the website. Information can be provided with the appropriate emphasis and navigation. An ideal website will lead the web visitor to take the action the webmaster wants.

Who Is Your Audience?

You must identify and understand your target audience. Understanding your demographic will allow you to cater content specific to that group.

What Are The Objectives Of The Website?

You also need to determine what the objective of your website is. What are you attempting to accomplish? Are you trying to sell something? Are you looking for downloads, or is sales your real objective? Is your website trying to promote a specific product or service? Do you want your visitors to take a specific action? Is the intent to profit from ad space in general or to have website visitor’s click on specific ads? Are you trying to build a brand? Do you want visitors to purchase a product, or provide an email address?

When attempting to solicit a specific action, there are some general guidelines that you should follow. Your website should be designed to solicit the action you desire, so the navigation should intuitively lead the visitor to take the desired action. If clicking a link is the goal, then that link should be clearly indicated and prominent on the page. This will not only help insure that the maximum number of visitors will be able to adequately view and navigate your content, but it will also help prompt those visitors to take the action you wish to have occur.

For example: Many software companies struggle with the action they wish to solicit from the website visitor. Software companies and eBook publishers are often guilty of pushing users to download, at the expense of the actual sale. Some companies prefer to have users download prior to making a purchase decision, while others lose impulse purchasers by only pushing the download rather than the sale.

In Order To Maximize The Websites Sales Purpose And Objectives, Follow These Simple Steps…

Address Compatibility Issues

If a website visitor is unable to view the website’s content, they are obviously going to be unable to complete the desired action. The compatibility issues could be related to technology or usability. Avoid using technologies that require the website visitor to download a plug-in before they can view the website content. If providing content using flash is important to you, you should also provide a flash-free version as well. Also, do not alienate website visitors who might have a disability — use proper web construct, provide alt tags for images, and avoid using a color scheme that will cause confusion.

Define A Clear Navigation Path

A website’s navigation should provide the visitor with a clear path. Information architecture is the organization and categorization of online content — the process of creating clarity and organizing online information in a purposeful, and logical way. Prioritize and emphasize the most important items on the website. Give visitors a clear path to what they are seeking. Each and every page should intuitively provide them links to additional information and purchase options.

Minimize Distractions

Minimize choices and other website distractions. Website visitors should be provided a clear path of action. Do not provide the website visitor an abundance of choices — studies show that a large number of choices often puts the consumer off. It is generally recommended that you provide no more than 3 choices. Keep your message concise and on-topic. Website visitors will often just scan a webpage rather than reading it, so bulleted lists and headlines might be used to emphasize your message.

It may sound like a cliche, but it’s the little things that can make the biggest difference. Pay attention to all aspects of your website. Defining the specific website objectives and purpose will help to encourage the desired action or behavior from your website visitors.

Optimizing Your Website by Using Proper File Formats and Color Settings

When creating web pages, make sure to create smaller file sizes to accommodate all modem speeds and the time it takes to transfer images. Files can be reduced in size by using file compression, also called optimizing an image. When an image is compressed it will lose some of its quality, which is known as a lossy compression. The lossy compression is the most common type being used today. The higher the compression the worse the quality of the image or graphic. When increasing the resolution of a picture the size of the file will also increase. The most common file formats are jpeg and gif formats.

The jpeg format, also known as Joint Photographic Experts Group, is the most preferred file format for the web. It works best for photos and images that contain several gradients or progression of color. This format works by discarding pixel detail and simplifying the image. The higher the compression, the more the image quality will deteriorate. If a minimum file compression is used, it will still reduce the file size but it will not drastically change the image appearance.

The gif format, also known as Graphics Interchange Format, breaks down the image into lines and then it scans the lines for repeated information. It discards any repeating information it finds. The number of colors can be reduced by using this format. The gif format is used only if you have an image that contains flat areas of color, patterns, text and animations. The maximum amount if colors is 256 and the minimum amount is two. This is the only format that supports images that are going to be placed on a transparent background. Which eliminates any white boxes that would appear around and image.

Battery News - How to Extend Battery Life in Your Laptop

There are three things that every laptop owner should know about extending battery life in their laptop to avoid the situation that we have all been in too many times. We are doing something important on the computer or hadn’t had the chance to save - thinking that we have enough time before the battery dies, and the screen goes black. The battery has powered down, without reprieve for your work! Here are some tips and tricks that can help to prolong battery life in your laptop from the guys over at BatteryFuel:

Avoid functions that take up large amount of battery power. This means Movies, and running more than two or three programs. As well, change the settings when using the laptop battery as the main source of power. These functions can be found by right clicking on the battery icon, or via the control panel. Adjusting these functions can save up to an hour of battery life.

When using the laptop ensure that it is not using valuable battery power to maintain a safe temperature for the machine. Using, and changing the battery battery at room temperature can increase the capabilities of the battery and extend the life.

Charge your battery fully - allow the battery to die completely to maintain the life of the battery. Partially charging the battery life can decrease the life of the battery substantially. Consider this when using the laptop, or shortening the charging time of the battery should you have to move. Once the laptop has been plugged in, allow the battery to charge fully for the best effects for the computer, and the battery.