Forensic Sciences Newsletter for Spring 2010

After graduating from GWU's Masters of Forensic Science program this year, it was nice to see they recognized my co-publication in "Digital Forensics Magazine".

J.D. Durick (MFS, 2010), co-published an article with Eric Fitterman titled: "Ghost in the Machine: Forensic Evidence Collection in the Virtual Environment." Digital Forensics Magazine, Issue 2, Spring 2010.

The newsletter can be found here:  GWU_Forensics_newsletter.pdf

Enhanced by Zemanta

bytelocator-0.2 beta released

I added an offset flag so that the user can start from any byte location within the image, results will only show you from that offset on (Default offset is 0).  Additionally, I added more error checking and detailed commenting.  Furthermore, the blocksize has to be a multiple of 512 and the hex string is max'd to size of 16 bytes.  I uploaded it to sourceforge and can bytelocator-0.2 can be found there.  Here is an example of it running:

byte20.png

dd2vmdk - v0.1.1

Added functionality to determine which partition is bootable (or active) as well locate the end of sector marker of the master boot record.  Here is a quick snapshot of the tool:

root@redbox:/data/projects/C/dd2vmdk-0.1.1# ./dd2vmdk -i /data/images/vmpersonal.dd -v /tmp/output.vmdk

Author:   JD Durick <jd@vmforensics.org>
Program:  dd2vmdk
Website:  http://vmforensics.org
Version:  0.1.1

Starting the MBR analysis...
Finding which partition is bootable
Getting cylinders value from partition1...
Getting ending cylinders value from partition1...
Getting sectors per track value from partition1...
Getting number of heads value from partition1...

Image Geometry specifications:
================================
1.  Image location:  /data/images/vmpersonal.dd
1.  VMDK destination:  /tmp/output.vmdk
2.  Number of sectors = 62914560
3.  Number of cylinders:  1023
4.  Number of heads per track:  255
5.  Number of sectors per track: 63
6.  File size in bytes: 32212254720 (30.00 GB)
7.  Size of each sector: 512
8.  Bootable partition:  Partition 1

Two byte signature word:  55AA (End of MBR)

It can be downloaded HERE or you can grab the source code via this link:

svn co https://dd2vmdk.svn.sourceforge.net/svnroot/dd2vmdk dd2vmdk


Enhanced by Zemanta

dd2vmdk - v0.1

Linux's fdisk partition editor showing the par...

Image via Wikipedia

I am in the process of make a bunch of smaller tools instead of one big tool.  mbrChunker will not be broken up into smaller pieces and makes the code more manageable.  dd2vmdk is a *nix-based program that allows you to mount raw disk images (created by dd, dcfldd, dc3dd, ftk imager, etc) by taking the raw image, analyzing the master boot record (physical sector 0), and getting specific information that is need to create a vmdk file.  Version 0.1 has the ability to extract data from the master boot record of any raw image, extracted information such as heads
 cylinders, sectors per track, etc. and create a working vmdk file (monolithic flat disk). 

Running the tool on a dd image of an existing VMDK (30GB) file, these are the results:

root@redbox:/data/projects/C/dd2vmdk# ./dd2vmdk -i /data/images/vmpersonal.dd -v /tmp/dualboot.vmdk
image path = /data/images/vmpersonal.dd
vmdk path = /tmp/dualboot.vmdk
sizeof(off_t) = 8.
total size:  32212254720

Author:   JD Durick <jd@vmforensics.org>
Program:  dd2vmdk
Website:  http://vmforensics.org
Version:  0.1

Image Geometry specifications [/data/images/vmpersonal.dd]
================================
1.  Image location:  /data/images/vmpersonal.dd
1.  VMDK destination:  /tmp/dualboot.vmdk
2.  Number of sectors = 62914560
3.  Number of cylinders:  1023
4.  Number of heads per track:  255
5.  Number of sectors per track: 63
6.  File size in bytes: 32212254720
7.  Size of each sector: 512

You can download  dd2vmdk-0.1.tar.gz HERE and HERE.

Related articles by Zemanta
Enhanced by Zemanta

mbrChunker - 0.3.17 released

The hex byte searching functionality was flawed and had to be rewritten. Additionally, it could not handle files larger than 2-3gb in size but now can handle files of any size given the new redesign. Added a -b flag to give the user customization on how big the buffer will be when searching for your hex string. All three functions, dd2vmdk, MBR analysis, and hex byte string searching work fine under any Linux OS. 

Download:

http://vmforensics.org/mbrChunker/mbrChunker-0.3.17.tar.gz
Looks like someone beat me to the punch and converted the Open source VMFS drivers originally written in java to C.  In addition, he added some new features to his vmfs toolset such as extents and allow you to access VMFS through the standard Linux VFS with the help of the FUSE framework.  I suggest all who work with VMFS partitions to check out vmfs-tools.  To get the tools compiled on my ubuntu box, I had to do the following:

root@redbox:/tmp/vmfs-tools-0.2.1# apt-get install libfuse-dev
root@redbox:/tmp/vmfs-tools-0.2.1# apt-get install asciidoc
root@redbox:/tmp/vmfs-tools-0.2.1# apt-get uuid-dev

I was missing these three and was unable to get it compiled until I grabbed these packages via apt-get.  The debugvmfs tool appears to be the best tool for analyzing the VMFS partition.  Here is the options for the programs:
root@redbox:/tmp/vmfs-tools-0.2.1/debugvmfs# ./debugvmfs -h
debugvmfs v0.2.1
Syntax: debugvmfs <device_name...> <command> <args...>

Available commands:
  - cat : Concatenate files and print on standard output
  - ls : List files in specified directory
  - truncate : Truncate file
  - copy_file : Copy a file to VMFS volume
  - chmod : Change permissions
  - mkdir : Create a directory
  - df : Show available free space
  - show_file_blocks : Show file blocks
  - get_file_block : Get file block
  - check_file_blocks : Check file blocks
  - check_vol_bitmaps : Check volume bitmaps
  - show_heartbeats : Show active heartbeats
  - read_block : Read a block
  - dump_block : Dump a block in hex
  - get_block_status : Get block status
  - alloc_block_fixed : Allocate block (fixed)
  - alloc_block : Find and Allocate a block
  - free_block : Free block
  - show_bitmap_item : Show a bitmap item
  - show : Display value(s) for the given variable
  - shell : Opens a shell

Using it on my test VMFS dd image, I get the following:

root@redbox:/tmp/vmfs-tools-0.2.1/debugvmfs# ./debugvmfs /mnt/mnt/evidence/vmfstest.img  ls
.
..
.fbb.sf
.fdc.sf
.pbc.sf
.sbc.sf
.vh.sf
esxconsole-4b2abf93-d71f-2613-1a26-00137268d17a
maldns
Bodog
converted
rootdns
winxp_personal
windows xp - web
xp-web
bodog
win2003


Looking at the TODO file, here is what we can expect from them down the road:
Expected for v0.3.0:
- Test suite
- Make debugvmfs more of a VMFS debugging tool and less of a vmfs-tools testing tool
- Better fsck.vmfs

Expected for v0.5.0:
- Stable internal API
- mkfs.vmfs

Expected for v1.0.0:
- Full write support.

Any time:
- Check if we want to read/update separately metadata header from the metadata
  itself (for example: vmfs_inode_read/vmfs_inode_write)
- Add locking/unlocking/update functions for metadata headers
- Improve build system and portability


The source code looks pretty extensive and they put some time into this project.  I definitely recommend you giving their tool a test drive.


Enhanced by Zemanta

Virtual Forensics talk at Blackhat USA

Unfortunately, I will not be attending BH/defcon this year however there are going to be some good talks.  One of which you shouldn't miss is the one by Christiaan Beek on Virtual Forensics.  He gave a similar talk at BH-Europe however has added some new things for the BH USA version.  Christiaan has a pretty cool site over at http://securitybananas.com/ and definitely recommend you checking out his site.  Another talk that looks to be interesting is from Claudio Criscione on pentesting virutalization, information on this talk can be found here.  Acutally the whole second day in Augustus room 3 and 4 has talks on Cloud Virutalization - all look to be interesting and wishing I was going after all.  Defcon, (I kind of miss the old days of the alexis park hotel) is at the Riviera and looks pretty decent, here is the schedule for the weekend party!

bytelocator v0.1.2 released

Bytelocator v0.1.2 was released, added a -b flag so the user could give the block size value for the buffer to be search rather than be hard coded.  Cleaned up some code and added some more documentation.  Works fine if you are looking for the starting location of any hex byte value, functionality will probably be integrated with other another tool to address mbr analysis.
Enhanced by Zemanta
Was dinking around with the VDDK API's and saw this post and thought I would post if for anyone interested in understanding why you are not able to create a second VMFS partition via fdisk and only via the VI client.  It appears that you need to remove the lock that ESX has on the device! Thought I would pass this tip along...will play with it later tonight...

http://www.virtualvcp.com/content/view/67/26/

Enhanced by Zemanta

bytelocator v0.1.1 alpha released

Made some changes to byelocator v0.1 and the hex functionality now works by analyzing every 1k chunks as opposed to trying to read in the entire file which was insane.  It is working fine and will get you the starting byte location of any hex string up to 16 bytes long.  Error checking is limited but will be added soon.  You can download bytelocator over at sourceforge.  Here is a small snapshot of the program after it has searched a 6gb file:

root@redbox:~/workspace/bytelocator/Debug# ./bytelocator -x BF1B0650 -i /data/images/sixgbimage.img

Total size of /data/images/sixgbimage.img file:  6448619520 bytes
Parsing the hex string now: BF1B0650

Hex string BF1B0650 was found at starting byte location:  18
Hex string BF1B0650 was found at starting byte location:  193885738
Hex string BF1B0650 was found at starting byte location:  194514442
Hex string BF1B0650 was found at starting byte location:  525033370
Hex string BF1B0650 was found at starting byte location:  1696715251
Hex string BF1B0650 was found at starting byte location:  1774337550
Hex string BF1B0650 was found at starting byte location:  2758859834
Hex string BF1B0650 was found at starting byte location:  3484416018
Hex string BF1B0650 was found at starting byte location:  3909721614
Hex string BF1B0650 was found at starting byte location:  3999533674
Hex string BF1B0650 was found at starting byte location:  4018701866
Hex string BF1B0650 was found at starting byte location:  4077977098
Hex string BF1B0650 was found at starting byte location:  4098838010


Quick stats:
================
Number of bytes that have been read:  6448619520
Number of signature matches found:  13
Total number of bytes in hex string:  4

Enhanced by Zemanta

Release of bytelocator v0.1 prealpha

Command line interface of Unison file synchronizer

Image via Wikipedia

bytelocator is a small C command-line utility that allows you to search for hex byte patterns within any binary file. Its provides information on the byte location within a binary file based on the hex byte pattern you provided.  Additionally, it can be used on images or files where forensics analysis might be needed such as hex patterns within a master boot record.  I just created a project on sourceforge and bytelocator can be found here.  As stated, it is pre-alpha stage so it works and gets you the information you need however contains bugs.  Enjoy.
Enhanced by Zemanta
Had an issue with some code when I was trying to read in files over 4GB in size.  Don't know why, but I was trying to read the whole thing into memory, they do the hex searching.  Here was the original code which worked for smaller 1-2gb files but nothing bigger than 3-4GB:

char *getBuffer(FILE *fptr, long long size) {
   
char *bfr;
    size_t result
;
    printf
("size of file in allocate buffer:  %lld\n", size);
       
//size here is 6448619520

    bfr
= (char*) malloc(sizeof(char) * size);
   
if (bfr == NULL) {
        printf
("Error, malloc failed..\n");
       
exit(EXIT_FAILURE);
   
}
       
//positions fptr to offset location which is 0 here.
    fseek
(fptr, 0, SEEK_SET);
       
//read the entire input file into bfr
    result
= fread(bfr, sizeof(char), size, fptr);
    printf
("result = %lld\n",  (long long) result);
   
if(result != size)
   
{
        printf
("File failed to read\n");
       
exit(5);
   
}
   
return (bfr);
}

The new code now fixes that and will now have to break it up into chunks
first, then do the hex searching. Here is the somewhat working code I put
together tonight to make it work:

 while((rdbytes = fread(filebuffer, sizeof(unsigned char), sizeof(filebuffer), fptr)) > 0) {
       // printf("%d bytes read and number of runs:  %d.\n", rdbytes, runs);
        bufferptr = filebuffer;

        if(rdbytes > (BUFSIZE -1)) {
            for(z = 0; z < BUFSIZE; z++) {
                for (k = 0; k < BUFSIZE; k++) {
                    if (*bufferptr == buffer[cursearch]) {
                        cursearch++;
                        if (cursearch > (counter - 1)) {
                            cursearch = 0;
                            startingoffset = 0;
                            startingoffset = k - (counter - 1);
                            if(runs < 2) {
                                printf("Hex string %s was found at byte location:  %d\n",
                                       hexstring, startingoffset);
                            } else{
                                printf("Hex string %s was found at byte location:  %d\n",
                                       hexstring, startingoffset+BUFSIZE);
                            }
                       
                            matches++;
                        }
                    } else {
                        cursearch = 0;
                    }
                    bufferptr++;
                }
                printf("[%d]: %02X\n", offsetctr, filebuffer[z] & 0xff);
                offsetctr++;
            }
        }


This is somewhat of a workaround where BUFSIZE is a const value and I read
in to the buffer 2 or 4k of bytes, do the analysis and hex searching, then
print out the matches. However, I will now have to address the problem
of finding a string hit on the last byte within a buffer. Looks like
I am going to have to test follow on buffers. I know there is a better way
in doing all this but I am tired and can't really think straight!! I was
fortunate to get some help from the guys at stackoverflow.com.


Enhanced by Zemanta

mbrChunker - v0.3.15 has been released

Binary executable file

Image via Wikipedia

A new feature has been added that allows the end-user to search for hex byte patterns within your forensics images (or any binary file). It allows for you to enter any number of bytes for your hex pattern. It returns via stdout all locations within your binary file where that byte hex pattern was found and its corresponding byte offset location. Specifically, I want to incorporate this functionality against large dd imaged VMFS partitions which would grab all master boot record sectors and analyze them for the user.  Below is a snapshot of the features of mbrChunker 0.3.15:

root@redbox:/data/projects/C/mbrChunker-0.3-release# ./mbrChunker -h
Program: mbrChunker
Author:  JD Durick <jd@vmforensics.org>
Website: http://vmforensics.org

Description:  mbrChunker is a *nix-based program that allows you to mount raw disk images
as well as perform analysis on partition tables within the master boot record.  Furthermore,
mbrChunker can search for hex patterns within any type of binary file
Usage: ./mbrChunker -i <path to dd image> -v <output path of vmdk>...

OPTIONS:
   -i image file name that you will be analyzing
   -v VMDK metadata file that you will be creating for your dd2vmdk conversion
   -a creation of a metadata file to be created (file location required)
   -x search for hex code patterns within your file (not 0x80, just 80)
Examples:
./mbrChunker -x <hex bytes> -i /data/images/testsector.img
./mbrChunker -i <raw image path location> -v <vmdk output file location>
./mbrChunker -i <raw image path location> -a <output of analysis file>

The code is still raw but workable and if it helps someone else, then great.

enjoy...



Enhanced by Zemanta
Network and Information Security Agency

Image via Wikipedia

I don't know how I missed this but in Nov. 2009, ENISA came out with the Cloud Computing Risk Assessment guide.  Below is a snippet on the document and what it actually entails:

ENISA, supported by a group of subject matter expert comprising representatives from Industries, Academia and Governmental Organizations, has conducted, in the context of the Emerging and Future Risk Framework project, an risks assessment on cloud computing business model and technologies. The result is an in-depth and independent analysis that outlines some of the information security benefits and key security risks of cloud computing. The report provide also a set of practical recommendations.Produced by ENISA with contributions from a group of subject matter expert comprising representatives from Industry, Academia and Governmental Organizations, a risk assessment of cloud computing business model and technologies. This is an in-depth and independent analysis that outlines some of the information security benefits and key security risks of cloud computing. The report provide also a set of practical recommendations. It is produced in the context of the Emerging and Future Risk Framework project.   You can download it HERE.
Enhanced by Zemanta
Tux, the Linux penguin

Image via Wikipedia

As you know from previous post, I talked about the Virtual Disk Development Kit (VDDK) whihe is a collection of C libraries, code samples, utilities, and documentation to help you create or access VMware virtual disk storage.  After downloading them on my ubuntu box, I gave the sample program a try to see how the thing works before I start modifiying it for my own use.  Below are my steps for fixing/patching the sample program that uses the VDDK libraries.

Fixing VDDK sample program and make sure it compiles correctly

1.  Install VDDK 1.1 from http://www.vmware.com/support/developer/vddk/
2.  Find the sample source in /usr/share/doc/vmware-vix-disklib/sample
3.  You should find the following:

root@*****:/data/vmwareproject/CODE/sampleprogram# ll /usr/share/doc/vmware-vix-disklib/sample
total 48
-r--r--r-- 1 root root   158 2009-12-04 08:02 Makefile
-r--r--r-- 1 root root 41718 2009-12-04 08:02 vixDiskLibSample.cpp
root@*****:/data/vmwareproject/CODE/sampleprogram#

4.  Make sure you edit your /etc/ld.so.conf file, here is what is should look like:


root@stalker:/data/vmwareproject/CODE/sampleprogram# more /etc/ld.so.conf
include /etc/ld.so.conf.d/*.conf
include /usr/lib/vmware-vix-disklib/lib32

root@stalker:/data/vmwareproject/CODE/sampleprogram#


5.  After editing the /etc/ld.so.conf file, run "ldconfig"
6. cp -r /usr/share/doc/vmware-vix-disklib/sample  to /tmp
7.  cd /tmp
8.  run "make"
9.  There is a problem with the vixDiskLibSample.cpp file and does not contain all the header files...here is the error you should get...
10..  Run make
 
Results:

root@stalker:/data/vmwareproject/CODE/sampleprogram# make
g++ -o vix-disklib-sample `pkg-config --cflags --libs vix-disklib` vixDiskLibSample.cpp
vixDiskLibSample.cpp: In function 'int PrintUsage()':
vixDiskLibSample.cpp:506: error: 'printf' was not declared in this scope
vixDiskLibSample.cpp: In function 'int main(int, char**)':
vixDiskLibSample.cpp:587: error: 'strdup' was not declared in this scope
vixDiskLibSample.cpp:606: error: 'printf' was not declared in this scope
vixDiskLibSample.cpp: In function 'int ParseArguments(int, char**)':
vixDiskLibSample.cpp:674: error: 'strcmp' was not declared in this scope
vixDiskLibSample.cpp: In function 'void DoFill()':
vixDiskLibSample.cpp:971: error: 'memset' was not declared in this scope
vixDiskLibSample.cpp: In function 'void DoDumpMetadata()':
vixDiskLibSample.cpp:1092: error: 'strlen' was not declared in this scope
vixDiskLibSample.cpp: In function 'void DumpBytes(const unsigned char*, size_t, int)':
vixDiskLibSample.cpp:1184: error: 'printf' was not declared in this scope
vixDiskLibSample.cpp:1199: error: 'printf' was not declared in this scope
make: *** [vix-disklib-sample] Error 1


11.  To fix this, create a patch and execute the patch on your file.  The steps below outline this for you.

root@******:/data/vmwareproject/CODE/sampleprogram# more create_patch_file.txt
Script started on Fri 04 Dec 2009 10:21:27 AM EST
root@******:/data/vmwareproject/CODE/sampleprogram# diff -uN vixDiskLibSample.cpp vixDiskLibSample_new.cpp > vixDiskLibSample.patch
root@@******:/:/data/vmwareproject/CODE/sampleprogram# more vixDiskLibSample.patch
--- vixDiskLibSample.cpp    2009-12-04 10:17:49.187001708 -0500
+++ vixDiskLibSample_new.cpp    2009-12-04 10:18:28.086448746 -0500
@@ -23,6 +23,9 @@
 #include <string>
 #include <vector>
 #include <stdexcept>
+// JD Durick added this in to account for printf and memset function calls - 12/04/09
+#include <stdio.h>
+#include <string.h>
 
 #include "vixDiskLib.h"
 
root@@******:/:/data/vmwareproject/CODE/sampleprogram# ll
total 104
-rw-r--r-- 1 root root   361 2009-12-04 10:21 vixDiskLibSample.patch
-rw-r--r-- 1 root root     0 2009-12-04 10:21 create_patch_file.txt
-r--r--r-- 1 root root 41843 2009-12-04 10:18 vixDiskLibSample_new.cpp
-r--r--r-- 1 root root 41718 2009-12-04 10:17 vixDiskLibSample.cpp
drwxr-xr-x 2 root root  4096 2009-12-04 10:09 new/
drwxr-xr-x 2 root root  4096 2009-12-04 10:09 orig/
-r--r--r-- 1 root root   158 2009-12-04 10:00 Makefile
root@@******:/:/data/vmwareproject/CODE/sampleprogram# patch vixDiskLibSample.cpp < vi
xDiskLibSample.patch
patching file vixDiskLibSample.cpp
You have new mail in /var/mail/root
root@@******:/:/data/vmwareproject/CODE/sampleprogram# make
g++ -o vix-disklib-sample `pkg-config --cflags --libs vix-disklib` vixDiskLibSample.cpp
root@@******:/:/data/vmwareproject/CODE/sampleprogram# exit
exit

Script done on Fri 04 Dec 2009 10:24:07 AM EST
root@@******:/:/data/vmwareproject/CODE/sampleprogram#


At this point, everything should work fine.
Enhanced by Zemanta

mbrChunker - v0.2.1 released...

Samsung HD753LJ hard disk drive (750 GB storag...

Image via Wikipedia

Added some extra functionality to mbrChunker with version 0.2 - mbrChunker can now parse each of the primary partition entries, analyze each of the 16 byte entries for information such as boot indicator, starting head, starting sector, starting cylinder, system ID, ending head, ending sector, ending cylinder, and total sectors. It also validates the partition types of each of the partition entries. As of now, the tool can convert DD images into a flat VMDK file and analyze each of the partition entries found within the master boot record (physical sector 0) of a hard drive.  If you want to give it a try, you can download mbrChunker-0.2.1.tar.gz off my website or from Freshmeat.Below are some links from my friend zemanta!

Below is a quick snapshot of the analysis portion of the tool:

View image

Related articles by Zemanta:
Enhanced by Zemanta
In the /dev/random category, starting July 3rd, live poker is now available in Charles Town, WVA which means that I am about 1 hour from a LEGAL poker room.  It sure beats doing those 3.5 hour trips to Atlantic City!  Will be trying to make it up there in the next month or so.
Enhanced by Zemanta
I just got my copy of Virtualization and Forensics by Diane Barrett and Gregory Kipper and will be reading it over the weekend.  In the next few weeks or so, I will be commenting on the book as it was just released by Amazon on June 1st - given that there is not a whole lot of documentation on the subject, I am eager to see what this book actually entails.  To give you an idea of what the book talks about here is some of the areas within the TOC.  I do recommend buying the book if you are interested in this subject area.

Chapter 1:  How virtualization happens?
Chapter 2:  Server Virtualization
Chapter 3:  Desktop Virtualization
Chapter 4:  Portable virtualization, emulators, and appliances
Chapter 5:  Investigating Dead virtual environments
Chapter 6:  Investigation live virtual environments
Chapter 7:  Finding and imaging virtual environments
Chapter 8:  Virtual environments and compliance

and more....


As always, I like to provide some related articles to VM Forensics:

Enhanced by Zemanta

TSK 3.1.3 is available

Logo Open Source Initiative

Image via Wikipedia

Just saw on the forums that the sleuthkit 3.1.3 is now available.  Additionally, Brian Carrier's slides from Sleuth Kit and Open Source Digital Forensics Conference in Chantilly, VA is now available.  For anyone who has been using forensics tools on *nix boxes, you have to have used TSK.
Enhanced by Zemanta

Parsing DNS traffic out with dnsview.pl

| 1 Comment
A while back, I was looking for data within dns traffic and wrote this perl script called dns view. Basically, it took in gzipped tcpdump files within a directory, read through the directory, opened the files, searched for various terms within the packet payload. I used a config file, checked for the header and verified that it was a tcpdump file by looking at the first 20 bytes of the tcpdump file. There is some hard coded lines in there so beware but thought I would post it in case it might help someone else search for data within the packet payload of DNS traffic. BTW, the code is beta at best and has not been tested thoroughly - but should work for you!

Recent Comments

  • Jimmy Carlson: Thanks for the post, good stuff! read more
  • Judson Loo: I'm really loving the blog, and hope this, as well read more
  • JD: Glad you like it, if you have any specific questions read more
  • Adelia Wildermuth: I just now found your blog page and wanted to read more
  • JD: Thanks...it sort of a combination of me writing tools focusing read more
  • jd: @hunter, I migrated my old website (labgeek.net) which focused more read more
  • gary love 20gb laptop hard drive: This can be fairly ridiculous but I truly do think read more
  • Backlinks: hey there I just wanted to comment your blog and read more
  • zaklady bukmacherskie: Great info, thanks for useful article. I'm waiting for more read more
  • Agustin Ackerly: I will get back. Love reading about technology. read more

Recent Assets

  • byte20.png
  • mbrchunk.png
  • comparevmshots2.jpg
  • comparevmshots.jpg

Find recent content on the main index or look in the archives to find all content.

Projects currently working on:
bytelocator: dd2vmdk: