Start here

How to make a bootable USB Flash Drive (Stick) under Windows 7

Making a USB flash drive bootable is fairly easy, just follow the steps below, however the bootable USB stick you make, will only function properly on a computer in BIOS mode.

  1. Start the Command Prompt.
  2. Change drive to the USB device (e.g. E:):
    C:>E:
  3. Start the DISKPART executable:
    E:>diskpart
  4. In the DISKPART window list the disks:
    DISKPART> list disk
    You should now be able se all disks on the system
  5. Select the disk that corresponds to the USB device:
    DISKPART> select disk 1
  6. Prepare the disk with the Clean command:
    DISKPART> clean
  7. Create the primary partition:
    DISKPART> create partition primary
  8. Select the primary partition:
    DISKPART> select partition 1
  9. Mark the selected partition as the active partition
    DISKPART> active
  10. You may now format the partition:
    DISKPART> format fs=fat32 quick
  11. Assign the drive letter to the device:
    DISKPART> assign
  12. Exit the DISKPART executable:
    DISKPART> exit
  13. Insert your Windows 7 installation DVD in your computer
    • Open the command prompt with admnistrative rights
    • Change the directory to the BOOT directory on the DVD.
    • Execute the command BOOTSECT /NT60 [drive letter] from the DVD.  (Drive Letter is your USB stick)
    • Example: 
      E:boot>bootsect /nt60 f:
      Target volumes will be updated with BOOTMGR compatible bootcode.
      F: (\?Volume{7c21f493-5fbf-11df-8c4e-0026b98067f8})
          Successfully updated FAT32 filesystem bootcode.
      Bootcode was successfully updated on all targeted volumes.

This completes the process – what you now have is a bootable USB stick, which is ready to receive the executables that you want to boot up with from the USB port.

by Jens Vejrup Lassen

Creating a Custom Symantec Recovery Disk ISO file for your DVD or USB device

Related articles:
How to clone Windows 7 using Norton Ghost 15 and Microsoft Sysprep

Have you ever needed to create a Ghost image of your computer or apply a Ghost image to your computer on Windows 7? Then you need to create a bootable DVD from which you will be able start the Symantec Recovery Disk.

The Symantec Recovery Disk is a utility that allows you to boot a small OS from the DVD drive or a USB flash drive and utilize various Symantec Tools, i.a. making and restoring Ghost images, using either external storage devices or over the network (LAN).

Creating a customized version of the Recovery Disk is real handy, if you want to avoid entering the product code and other parameters every time you want to use the utility.

Create a Custom Symantec Recovery Disk by following the step-by-step instructions found below:

Prerequisites: Firstly, you should make sure that

  • you have a stationary or laptop PC installed with Windows 7 (any version) and
  • you have installed Norton Ghost 15 on the computer, and have the product code handy
  • you have a copy of the standard Symantec Recovery Disk ISO image, which may be obtained at this link: Symantec Recovery Disk ISO
  • you have extracted the contents of the standard ISO file to a subfolder for later use.
  • you have an available copy of the 32-bit Vista compatible network adapter drivers (Ethernet adapter only as Wireless WILL not work) for the PCs which you will be handling.

When you are sure of the above, proceed as follows:

1. Start Norton Ghost 15 – you will see the following (under the advanced button):

2. Select the Tasks menu from the menu bar, and then select “Create Custom Recovery Disk”. All devices which you wish to use with the disk should be started at this time. click Next.

3. You will see the Symantec Disk Recovery Disk Wizard start page – click Next

4. Specify the location of the subfolder where  theb contents extracted from the standard Symantec Recovery Disk ISO file were saved (see instructions in the Prerequisites section) and click Next.

5. Specify a Disk Label and the name of the new customized ISO file. At this point you can either burn directly to a DVD or save the custom ISO image to a location in the file system for future use (which is the option which worked for me). Note that it is not possible to save the ISO file to the file system and burn it to a DVD/CD simultaneously, you must chose one of the two options.

6. Add or remove drivers in to be included/excluded from the ISO image. This is where you specify Ethernet network adapter drivers for the PCs you will be booting up with the recovery DVD. Remember: Norton Ghost 15 does not recognize wireless adapters, and can only use the 32-bit Vista-compatible drivers for the Ethernet adapters. Click Next.

7. Specify Time Zone, display language and keyboard layout.

8.  Set network option: use a static  or a dynamic IP.

9. Select the Ethernet network driver to boot up on. (Apology for the small error in the above illustration, as Norton Ghost 15 does not recognize Wireless network adapters).

10.  Agree to use the same license number for the Recovery Disk as your license for the Norton Ghost product – this makes yor Recovery Disk legal!

11. Click Finish to complete the creation of the custom recovery ISO file.

12. Your custom recovery ISO file has now been created and saved to a location in the file system.

At this time you may choose to burn the ISO file to a DVD or you may save the ISO to a location in the file system for future use.

In either case you now have a licensed, legal, network enabled Symantec Custom Recovery Disk, which you may use to make a Ghost image of your PC or copy a Ghost image to a PC from an external device or over the network (LAN)

by Jens Vejrup Lassen

Securely Storing passwords in a Database using a Hash Algorithm in Java

By Jens Vejrup Lassen, Bsc.Comp.Sc.

Permalink

While developing a CMS of any kind with a membership or signed up user functionality, you will have to deal with the issue of password confidentialty.

People signing up to use your application trust that your system safeguards their passwords, and one good way of doing this is by using an encryption scheme that creates a hash representing the password. Store the hash rather than the password in the database, thus making it difficult for hackers who may have gained access to database to figure out the original password. This would also apply to systems and database administrators, who would then be no more able to guess a user’s password than a hacker.

How to secure passwords when logging on to the system

When a user enters a new password through the login function, have a module create a hash, which you will store as part of the user’s data. This hash will be used in future whenever your user tries to log in to the application. To achieve this goal I wrote a small convenience class: public class MyHashEncryption using java.security.MessageDigest. The class would be used in a Java program to create and validate hashes.

The methods exposed by the class are:

1. public static MyHashEncryption getInstance(){..
2. public String myhash(String password){..
3. public boolean verify(String myhash, String mypassword){..

To create a hash do like this:

String genhash = MyHashEncryption.getInstance().myhash(passw);

The hash will then look something like this:

91E9602DB42AEAA802754CA7AB149D5E5FDA5624FB3A549C48DFF690226F34ED.

As the method is static you don’t need to create an instance of the class before calling the hashing and verifying methods.

To verify if a known hash corresponds to a given password, do this:

booelan indicator = MyHashEncryption.getInstance().verify(storedhash,passw))

This code returns a boolean you can use directly in a conditional sentence.

Further Information

If you are interested in further information about password security levels see this fine article.
Another way of using the MessageDigest.
Java SHA Hashing Example

The MyHashEncyption Class:

 

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MyHashEncryption {

protected static MyHashEncryption instance;
private String algorithm = "SHA-256";
private int count = 1000;

/**
* This constructor creates a default instance of the class
*/
public MyHashEncryption() {

}

/**
* This method returns a static instance of the class
* and intiates it only once per execution.
* @return
*/
public static MyHashEncryption getInstance() {
if(instance == null) {
instance = new MyHashEncryption();
}
return instance;
}

/**
* This private method uses a phrase (password) to create a hash using the designated
* encyption scheme called algorithm.
* @param password is the phase passed to the algorithm
* @return a hash created by the algorithm, translated to a String value with
* upper case letters before being returned.
*/

private String _myhash(String password){

try {
MessageDigest md = MessageDigest.getInstance(algorithm);
md.update(password.getBytes());

byte byteData[] = md.digest();

StringBuffer hashHexString = new StringBuffer();
for (int i=0;i<byteData.length;i++) {
String hex=Integer.toHexString(0xff & byteData[i]);
if(hex.length()==1) hashHexString.append('0');
hashHexString.append(hex);
}
return hashHexString.toString().toUpperCase();

} catch (NoSuchAlgorithmException e) {
System.out.println("MyHashEncryption.error: "+e.getMessage());
return null;
}
}

/**
* This method accepts a phrase which is passed to the encyption method. The
* resulting hash value (in upper case) is used iteratively to create a new
* hash on the basis of the previous hash. The standard number of iterations is
* 1000.
* @param password is the value used to create a hash
* @return a value which is the result of 1000 recursion through the
* encryption method.
*/

public String myhash(String password){
String resulthash = password;
for(int i = 0; i <count; i++){
resulthash = _myhash(resulthash);
}
return resulthash;
}
/**
*
* @param myhash
* @param mypassword
* @return
*/
public boolean verify(String myhash, String mypassword){

if(myhash.equals(myhash(mypassword)))
return true;
else
return false;
}

}

 

Testing the class

Test the class with this test harness:

import java.util.ArrayList;
import java.util.HashMap;

public class TestMyHashEncryption {
public TestMyHashEncryption() {
super();
}

public static void main(String[] args) {
TestMyHashEncryption testMyHashEncryption = new TestMyHashEncryption();
testMyHashEncryption.testModule();
}

public void testModule(){

ArrayList passwords = new ArrayList();

passwords.add("Skooby%1");
passwords.add("Chile#22");
passwords.add("Buding");
passwords.add("AF5yv7KL");

HashMap hashes = new HashMap();

for(String passw : passwords)
hashes.put(passw, MyHashEncryption.getInstance().myhash(passw));

//test old passwords:

for(String passw : passwords){
String storedhash = hashes.get(passw);
String genhash = MyHashEncryption.getInstance().myhash(passw);

System.out.println("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
System.out.println("Test this password..: "+passw);
System.out.println("Stored hash.........: "+ hashes.get(passw));
System.out.println("Re-generated hash...: "+ genhash);

if( MyHashEncryption.getInstance().verify(storedhash,passw))
System.out.println("Result: stored hash equals re-generated hash");
else
System.out.println("FAIL:stored hash not equal to re-generated hash");

}

}
}

 

Test output

 

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Test password......: Skooby%1
Stored hash........: 81103F1AB734FD61A56AB9644B7E8B909A90A181B837FBFDEADD2F733DDCCCFF
Re-generated hash..: 81103F1AB734FD61A56AB9644B7E8B909A90A181B837FBFDEADD2F733DDCCCFF
Result: stored hash equals re-generated hash
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Test password......: Chile#22
Stored hash........: 2E6D5351E1139AFB71A7E0811A1BDEB3779BC695FB00A10B288DEE335B44D510
Re-generated hash..: 2E6D5351E1139AFB71A7E0811A1BDEB3779BC695FB00A10B288DEE335B44D510
Result: stored hash equals re-generated hash
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Test password......: Buding
Stored hash........: EC253255EA85FBFDA86A2A1F69681AD0F860536EC551AB935407B9A3C2DE5E53
Re-generated hash..: EC253255EA85FBFDA86A2A1F69681AD0F860536EC551AB935407B9A3C2DE5E53
Result: stored hash equals re-generated hash
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Test password......: AF5yv7KL
Stored hash........: EF820D2857DE20C775B4AF0A4A6A2014186B7774A2C2E0C4FB9D735C840A4DD4
Re-generated hash..: EF820D2857DE20C775B4AF0A4A6A2014186B7774A2C2E0C4FB9D735C840A4DD4
Result: stored hash equals re-generated hash
Process exited with exit code 0.

Neural Networks for Robots

This rapport focuses primarily on the principles underlying one particular type of artificial neural network and the programming of a primitive artificial intelligence for controlling a Lego NXT robot. A number of experiments were conducted in this regard which contribute to an assessment of how feasible it is to control robotic movement with the aid of artificial neural networks. A brief presentation of the theoretical basis for artificial neural networks is given to improve the reader’s understanding of the topic. An explanation of iCommand API (a package extension for Java) and its relation to Lego NXT is included. The physical construction of the robot as well as program code which operates it is described, thus enabling the repetition of the experiment. The results of the experiments have shown that it is in fact possible to program an artificial neural network, which a robot may utilize for navigation. However, given the state of existing technology, it seems easier and could possibly give better results to construct a robot controlled by ordinary artificial intelligence rather than a robot controlled by an artificial neural network.

Hent den fulde artikel her

Forfattere: Jens Ehlert Lassen et al…

Permalink:Neurale Network for Robots her.

Teknologi og Forudsigelser

Centrale dele af naturvidenskaben er afhængige af teknologiske fremskridt. Derfor er det en fordel hvis der er en måde at forudsige fremtiden på. Fremtidsforskning som disciplin beskæftiger sig med forskellige metoder til prognosedannelse og forudsigelse af den nære fremtid.

Dette har ledt til spørgsmålene om i hvilken grad man kan forudsige IT-udviklingen, samt hvilke metoder der kan anvendes til dette. Metodernes videnskabelighed spiller en væsentlig rolle i bedømmelsen af deres pålidelighed og bliver derfor nærmere belyst. I denne rapport er tolv metoder til fremtidsforudsigelser beskrevet og analyseret. Ved at undersøge en række forudsigelser, skrevet af forfattere inden for bl.a. datalogi, har projektgruppen forsøgt at kortlægge de teknikker som bl.a. fremtidsforskerne har benyttet. Undersøgelserne viser, at det i et vist omfang er muligt at forudsige udviklingen indenfor IT-området. Det er svært at sige hvilke metoder der blev anvendt i de tidligste forudsigelser, grundet manglende dokumentation.

Moderne analyseinstitutter anvender en kombination af flere forskellige metoder. Det videnskabelige element i metoderne ligger ofte i brugen af statistiske metoder og matematisk modellering. Det viser sig, at forudsigelser om fremkomsten af helt nye teknologier ikke kan forudsiges med nogen høj af præcision, derimod viser det sig, at nye anvendelser af teknologi kan forudsiges med en højere grad af præcision.

Hent den fulde artikel her.

Forfattere: Jens Lassen et al

Permalink Teknologi og Forudsigelser.