<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3901191200489940749</id><updated>2012-02-14T13:39:44.554-08:00</updated><category term='preview'/><category term='scripts'/><title type='text'>Linux Sleuthing</title><subtitle type='html'>Linux Sleuthing is a blog to share my adventures with Linux-based data forensics.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>39</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-1965651669598798885</id><published>2012-02-14T13:38:00.000-08:00</published><updated>2012-02-14T13:38:57.987-08:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size: large;"&gt;&lt;b&gt;iOS .sinf Name Calling&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In my ever present quest to identify the true owners of stolen iPods, I made discovery in iOS while examining a Touch that may be probative: the app .sinf files found in the /private/var2/Applications sub folders.&amp;nbsp; According to &lt;a href="http://www.file-extensions.org/sinf-file-extension"&gt;File-Extensions.org&lt;/a&gt;:&lt;br /&gt;&lt;blockquote class="tr_bq" style="font-family: Arial,Helvetica,sans-serif;"&gt;The &lt;strong&gt;SINF file extension&lt;/strong&gt; is associated with applications for Apple iOS operating system that is used in Apple iPhone, iPad and iPod Touch. File contains information about digital rights that are applied in application. The SINF file is stored in an IPA iOS application archive.&lt;/blockquote&gt;I found that by searching the ../Applications directory for .sinf files, and then grepping for the term "name", the Apple Store real name associated with the app can be discovered.&amp;nbsp; On the Linux command line, this can be accomplished very quickly with:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ find private/var2/Applications -name "*.sinf" -exec strings -f {} \; | grep name&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;Modification dates for the files can be used to create a timeline of activity for the device and perhaps demonstrate when new residents moved in, so to speak.&amp;nbsp; The find command can by used with stat to quickly provide a list of date stamps:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ find private/var2/Applications -name "*.sinf" -exec stat &lt;/span&gt;{} \;&lt;/span&gt;&lt;/blockquote&gt;But, even better, you can put it all together in a fairly simple command and create csv output for examination and sorting:&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ find private/ -name "*.sinf" | while read i; do name=$(strings "$i" | grep name); date=$(stat -c %y "$i"); echo -e "$i,$name,$date"; done&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;It appears from content that I have uncovered in a suspected stolen device, that the real name of the Apple Store account used to install the app is embedded in the .sinf file at the time of installation.&amp;nbsp; If this is the case, a stolen device, though it have the device name changed and the true owner's data deleted, may still have applications that were installed with the owners Apple Store account!&amp;nbsp; &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Testing still needs to be done for verification, and I don't currently have any test devices to properly test.&amp;nbsp; If you are able to conduct any validation studies, please comment on this post with your findings.&amp;nbsp; I'll amend this post once I'm able to conduct my own studies or receive reliable findings from others.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-1965651669598798885?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/1965651669598798885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/02/ios.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1965651669598798885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1965651669598798885'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/02/ios.html' title=''/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-9025597037148611108</id><published>2012-01-27T13:43:00.000-08:00</published><updated>2012-01-27T13:43:16.087-08:00</updated><title type='text'>iPod's, what's in a name?</title><content type='html'>&lt;b&gt;iPod Device Names&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;iPod devices have a name.&amp;nbsp; It's set by the user when they initialize the device through iTune's (there are alternate initialization methods, but that is not the focus of this post).&amp;nbsp; When the focus of the investigation is determining the device owner, the device name is a good place to start.&amp;nbsp; The device name, for example, could be "John Doe" and you happen to know who is John Doe, or how to find out.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;Of course, the device name could be 'Pookie', which won't help you out too much.&amp;nbsp; But, don't give up, I've already demonstrated another, even more useful, method for identifying iPod owners through iTune's purchased media.&amp;nbsp; Take a look &lt;a href="http://linuxsleuthing.blogspot.com/2012/01/whose-ipod.html" target="_blank"&gt;here&lt;/a&gt; if that interests you.&lt;br /&gt;&lt;br /&gt;But, I got curious, where in the iPod can you find the device name?&amp;nbsp; It's clearly stored on the device, because, as any iPod owner can tell you, if you navigate from the main menu to the 'About' screen in 'Settings', you'll see something akin to "John Doe's iPod."&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where to Look&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first place to look in a FAT formatted iPod is the volume label of the data volume (aka partition).&amp;nbsp; The current device name is the volume name.&amp;nbsp; You can view it with blkid, or for the forensically inclinded, with the sluethkit at the root level.&lt;br /&gt;&lt;br /&gt;I'll use recent 5th gen Nano I recently examined as an example.&amp;nbsp; I am operating as root because I am examining a device directly: &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# blkid /dev/sdd1&lt;br /&gt;/dev/sdd1: LABEL="PINK PANTHE" UUID="E0B8-3334" TYPE="vfat"&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# fls /dev/sdd1&lt;br /&gt;r/r 3:&amp;nbsp;&amp;nbsp;&amp;nbsp; PINK PANTHE (Volume Label Entry)&lt;br /&gt;d/d 5:&amp;nbsp;&amp;nbsp;&amp;nbsp; iPod_Control&lt;br /&gt;...&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Now, I'm fairly worldly (all my friends are now rolling their eyes), but I suspected when I check Settings | About, the device name on this Nano, I'd find the device name was 'Pink Panther', not the truncated 'Pink Panthe' that was in the volume, which has a limit of 12 characters.&amp;nbsp; And sure enough, that's what I found: 'pink panther.'&lt;br /&gt;&lt;br /&gt;So, if the 'r' in pather isn't in the volume, then the volume is not the source of the data in the About screen.&amp;nbsp; So, what is the source?&amp;nbsp; Turns out, after mounting the device read-only and employing my favorite keyword search utility (more on that one later), the source turns out to be the 'Library.itdb' SQLite database in the 'iPod_Control/iTunes/iTunes Library.itlp/' directory.&lt;br /&gt;&lt;br /&gt;I found the table in which the device name resides as follows:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# sqlite3 '/media/iPod/iPod_Control/iTunes/iTunes Library.itlp/Library.itdb' .dump | grep 'pink panthe'&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;INSERT INTO "container" VALUES(-3226555229562403833,0,333435002,347345556,'pink panther',100,0,1,0,1,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;What I did there was dump the table contents, which shows the commands that were issued to create the database and populate it.&amp;nbsp; The dump, when saved to a file, can be used to backup and restore a database.&amp;nbsp; For my purpose, I see that a list of values, including 'pink panther' was inserted into the 'container' table.&lt;br /&gt;&lt;br /&gt;Now, I can produce a nice query that can be used in future examinations to directly recover the device name from the Library.itdb database:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# sqlite3 -line '/media/iPod/iPod_Control/iTunes/iTunes Library.itlp/Library.itdb' 'select name from container'&lt;br /&gt;&amp;nbsp;name = pink panther&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Now I have two sources for the device name in a FAT formatted device.&amp;nbsp; And, the database query can be used for HFS formatted iPod Classics, presumably.&amp;nbsp; Combine that with the media search for Apple Store account and real name information, and even an unallocated search for MPEG-4 metadata (next post), and you have a robust, though not fool proof methodology for identifying iPod owners.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-9025597037148611108?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/9025597037148611108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/ipods-whats-in-name.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/9025597037148611108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/9025597037148611108'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/ipods-whats-in-name.html' title='iPod&apos;s, what&apos;s in a name?'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-1539388703296809365</id><published>2012-01-19T16:31:00.000-08:00</published><updated>2012-01-19T16:31:12.019-08:00</updated><title type='text'>Whose iPod?</title><content type='html'>&lt;b&gt;&lt;span style="font-size: large;"&gt;iPods, iPods, everywhere...&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;...Which means they are frequently lost or stolen.&amp;nbsp; ...Which means they end up in my office with a request attached stating, "Can you please try to figure out who owns this?"&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Device Name&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;iTunes, the principal means for managing iPod content, allows users to name their device.&amp;nbsp; Usually, owner's put their names, like 'John Doe,' so the the device is reported in iTunes as 'John Doe's iPod.'&amp;nbsp; In a fat32 formatted device, like an iPod Nano, the device name is recorded as the volume label.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;When it comes to linking the device to owners, though, the device name is seldom enough.&amp;nbsp; 'John Doe' might be too common a name, not listed in the phone book or in your records management system.&amp;nbsp; Worse, the device name might be 'Wookie'.&amp;nbsp; What then?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;What Apple Doesn't Tell You&lt;/b&gt;&lt;br /&gt; &lt;br /&gt;The Apple Store, commonly known as the iTunes store, sells media for playback on the device.&amp;nbsp; Music and Video are popular purchases, and are sold in the MPEG-4 format with file extensions of .m4p (music) and .m4v (video).&lt;br /&gt;&lt;br /&gt;The purchaser of this content has to create and use an Apple Store account.&amp;nbsp; For quite some time, the account name is the user's email address.&amp;nbsp; Users provide there real names as part of the creation process, which is necessary for credit card transactions.&amp;nbsp; Very standard business practices, nothing nefarious here.&lt;br /&gt;&lt;br /&gt;The slight of hand comes on download (well, it would have to occur before download for you precise-types).&amp;nbsp; The Apple Store account name and the purchaser's real name are embedded in the media file!&amp;nbsp; MPEG-4 files contain metadata (data about data) such as the Artist, Title, Album, even album cover art.&amp;nbsp; The metadata takes the form of key:value pairs, often referred to as '&lt;a href="http://atomicparsley.sourceforge.net/" target="_blank"&gt;atoms&lt;/a&gt;.'&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Where to look&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The atoms 'name' and 'apID' contain the purchasers real name and account name (email address) respectively.&amp;nbsp; However, no tools I am aware of automatically display this content.&amp;nbsp; The excellent &lt;a href="http://owl.phy.queensu.ca/%7Ephil/exiftool/" target="_blank"&gt;exiftool&lt;/a&gt; by Phil Harvey will display the account name (apID atom, i.e., email address) but not the purchasers real name.&amp;nbsp;&lt;br /&gt;&lt;br /&gt;While Harvey's tool is excellent, it just doesn't do to run exiftool against every media file on an iPod.&amp;nbsp; First, not every media file is an MPEG-4 with Apple Store metadata.&amp;nbsp; iTunes allows users to convert their existing mp3 and CD collections to MPEG-4, for example.&amp;nbsp; These media files take on the .m4a file extension and do not contain purchaser information.&amp;nbsp; Nor do .mp3s, for that matter.&lt;br /&gt;&lt;br /&gt;When I'm in a hurry, which is most of the time, I resort to a straight forward, compound command:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;$ find /media/iPod/iPod_Control/Music -type f -name "*.m4[pv]" | while read i; do strings -f "$i"|grep -E -m1 'name.+'; strings -f "$i"| grep -E -m1 -A2 'apID'; done&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;Am I out of my flipping mind?&amp;nbsp; No.&amp;nbsp; That really works, works well, and works really, really fast.&amp;nbsp; Should I explain it?&amp;nbsp; No, not unless you really want me to.&amp;nbsp; The output looks like this:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/PFLT.m4v: nameJohn Doe&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/PFLT.m4v: 8apID&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/PFLT.m4v: 0data&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/PFLT.m4v: jdoe@email.com&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/QQDN.m4p: nameJohn Doe&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/QQDN.m4p: 8apID&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/QQDN.m4p: 0data&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;/media/iPod/iPod_Control/Music/F49/QQDN.m4p: jdoe@email.com&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Pretty?&amp;nbsp; Maybe not.&amp;nbsp; Does it answer the question of what is the real name and email address of the media purchaser?&amp;nbsp; Yes.&amp;nbsp; And did I mention, really, really fast?&lt;br /&gt;&lt;br /&gt;I'm aware that some people might like or need nicer output for a report of some kind.&amp;nbsp; I wrote a bash script , called &lt;a href="http://code.google.com/p/linuxsleuthing/source/browse/iphone_tools/iphone_music" target="_blank"&gt;iphone_music&lt;/a&gt; that works with exiftool to produce nice output:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;======== /media/iPod/iPod_Control/Music/F49/PFLT.m4v&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;File Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : M4V&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Account&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jdoe@email.com&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Account Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : iTunes&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Real Name&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;John Doe&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;======== /media/iPod/iPod_Control/Music/F49/QQDN.m4p&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;File Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : M4P&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Account&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;jdoe@email.com&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Account Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : iTunes&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Apple Store Real Name&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : John Doe&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Iphone_music is also quite fast and uses the same basic methodology as the find command first demonstrated.&amp;nbsp; Additionally, it can tell you the names, artists, albums, etc. of other media on the device for instances where the owner has no purchased media on the device but can describe the media on board (e.g., .mp3, .m4a).&amp;nbsp; You may have noticed from the paths of the media files demonstrated, iTunes does not name the files after their content.&lt;br /&gt;&lt;br /&gt;Iphone_music can be vastly improved, such as sorting by artist, email, owner name, etc, and I'll likely rewrite the tool in python to facilitate implementing these features.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Final Note (pun intended)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The methods detailed here work on mounted file systems and allocated files.&amp;nbsp; It is possible to find the real name and email address on devices where the media files have been deleted by the iPod thief / finder.&amp;nbsp; I won't detail the process here, but it involves using the &lt;a href="http://www.sleuthkit.org/" target="_blank"&gt;Sleuthkit&lt;/a&gt; to pipe unallocated space to strings and grep for the name and apID atoms.&amp;nbsp; Another method, though slower, would be to use &lt;a href="http://www.cgsecurity.org/wiki/PhotoRec" target="_blank"&gt;photorec&lt;/a&gt; or another file carving tool to recover MPEG-4 files an then use the methods above to search the recovered files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-1539388703296809365?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/1539388703296809365/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/whose-ipod.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1539388703296809365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1539388703296809365'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/whose-ipod.html' title='Whose iPod?'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3622287593252505628</id><published>2012-01-19T14:04:00.000-08:00</published><updated>2012-01-19T14:04:33.417-08:00</updated><title type='text'>Unoconv is number one!</title><content type='html'>I discussed a recent case where I was seeking Enhanced Metafiles and discovered that LibreOffice could be used to open and view them (see, &lt;a href="http://linuxsleuthing.blogspot.com/2011/11/libreoffice-unlikely-image-viewer.html" target="_blank"&gt;LibreOffice: An Unlikely Image Viewer&lt;/a&gt;).&amp;nbsp; I mentioned at the end of that post that unoconv could be used to automate the process of taking the difficult to view EMF files and convert them something very portable, like PDF.&lt;br /&gt;&lt;br /&gt;Today, I actually undertook that task when carving form EMF files produced over 1000 files to be examined.&amp;nbsp; Doing so exposed me to the full capabilities of unoconv, and I'm quite excited about the possibilities.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;What, exactly is unoconv?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;From the man page: "&lt;i&gt;unoconv is a command line utility that can convert any file format that OpenOffice can import, to any file format that OpenOffice is capable of exporting.&lt;/i&gt;"&amp;nbsp; This begs the question: what can OpenOffice (or LibreOffice) import and export?&amp;nbsp; Glad you asked:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ unoconv --show&lt;/span&gt;&lt;/div&gt;&lt;blockquote class="tr_bq"&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The following list of document formats are currently available:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; bib&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - BibTeX [.bib]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; doc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Word 97/2000/XP [.doc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; doc6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Word 6.0 [.doc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; doc95&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Word 95 [.doc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; docbook&amp;nbsp; - DocBook [.xml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; html&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - HTML Document (OpenOffice.org Writer) [.html]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; odt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Open Document Text [.odt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ott&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Open Document Text [.ott]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ooxml&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Office Open XML [.xml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pdb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - AportisDoc (Palm) [.pdb]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pdf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Document Format [.pdf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; psw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Pocket Word [.psw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; rtf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Rich Text Format [.rtf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; latex&amp;nbsp;&amp;nbsp;&amp;nbsp; - LaTeX 2e [.ltx]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 5.0 [.sdw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdw4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 4.0 [.sdw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdw3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 3.0 [.sdw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; stw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Open Office.org 1.0 Text Document Template [.stw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Open Office.org 1.0 Text Document [.sxw]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; text&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Text Encoded [.txt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; txt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Plain Text [.txt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 5.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 4.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarWriter 3.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xhtml&amp;nbsp;&amp;nbsp;&amp;nbsp; - XHTML Document [.html]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The following list of graphics formats are currently available:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; bmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Windows Bitmap [.bmp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; emf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Enhanced Metafile [.emf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; eps&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Encapsulated PostScript [.eps]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; gif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Graphics Interchange Format [.gif]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; html&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - HTML Document (OpenOffice.org Draw) [.html]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; jpg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Joint Photographic Experts Group [.jpg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; met&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OS/2 Metafile [.met]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; odd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Drawing [.odd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; otg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Drawing Template [.otg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pbm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Bitmap [.pbm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Mac Pict [.pct]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pdf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Document Format [.pdf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pgm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Graymap [.pgm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; png&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Network Graphic [.png]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ppm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Pixelmap [.ppm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ras&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Sun Raster Image [.ras]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; std&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Drawing Template [.std]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; svg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Scalable Vector Graphics [.svg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; svm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarView Metafile [.svm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; swf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Macromedia Flash (SWF) [.swf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Drawing [.sxd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxd3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 3.0 [.sxd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxd5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 5.0 [.sxd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; tiff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Tagged Image File Format [.tiff]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 5.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 3.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; wmf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Windows Metafile [.wmf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xhtml&amp;nbsp;&amp;nbsp;&amp;nbsp; - XHTML [.xhtml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - X PixMap [.xpm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The following list of presentation formats are currently available:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; bmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Windows Bitmap [.bmp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; emf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Enhanced Metafile [.emf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; eps&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Encapsulated PostScript [.eps]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; gif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Graphics Interchange Format [.gif]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; html&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - HTML Document (OpenOffice.org Impress) [.html]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; jpg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Joint Photographic Experts Group [.jpg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; met&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OS/2 Metafile [.met]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; odd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Drawing (Impress) [.odd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; odg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Drawing (OpenOffice.org Impress) [.odg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; odp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Presentation [.odp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; otp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Presentation Template [.otp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pbm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Bitmap [.pbm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pct&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Mac Pict [.pct]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pdf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Document Format [.pdf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pgm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Graymap [.pgm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; png&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Network Graphic [.png]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pot&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft PowerPoint 97/2000/XP Template [.pot]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ppm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Pixelmap [.ppm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ppt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft PowerPoint 97/2000/XP [.ppt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pwp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - PlaceWare [.pwp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ras&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Sun Raster Image [.ras]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sda&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 5.0 (OpenOffice.org Impress) [.sda]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarImpress 5.0 [.sdd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdd3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 3.0 (OpenOffice.org Impress) [.sdd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdd4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarImpress 4.0 [.sdd]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sti&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Presentation Template [.sti]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; stp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Presentation Template [.stp]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; svg&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Scalable Vector Graphics [.svg]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; svm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarView Metafile [.svm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; swf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Macromedia Flash (SWF) [.swf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxi&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Presentation [.sxi]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; tiff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Tagged Image File Format [.tiff]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarImpress 5.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 3.0 Template (OpenOffice.org Impress) [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarImpress 4.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarDraw 5.0 Template (OpenOffice.org Impress) [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; wmf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Windows Metafile [.wmf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xhtml&amp;nbsp;&amp;nbsp;&amp;nbsp; - XHTML [.xml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xpm&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - X PixMap [.xpm]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;The following list of spreadsheet formats are currently available:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; csv&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Text CSV [.csv]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; dbf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - dBase [.dbf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; dif&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Data Interchange Format [.dif]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; html&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - HTML Document (OpenOffice.org Calc) [.html]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ods&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Open Document Spreadsheet [.ods]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; ooxml&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 2003 XML [.xml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pdf&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Portable Document Format [.pdf]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenDocument Spreadsheet Template [.pts]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; pxl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Pocket Excel [.pxl]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 5.0 [.sdc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdc4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 4.0 [.sdc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sdc3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 3.0 [.sdc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; slk&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - SYLK [.slk]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; stc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Spreadsheet Template [.stc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; sxc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - OpenOffice.org 1.0 Spreadsheet [.sxc]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 3.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 4.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; vor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - StarCalc 5.0 Template [.vor]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xhtml&amp;nbsp;&amp;nbsp;&amp;nbsp; - XHTML [.xhtml]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xls&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 97/2000/XP [.xls]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xls5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 5.0 [.xls]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xls95&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 95 [.xls]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xlt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 97/2000/XP Template [.xlt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xlt5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 5.0 Template [.xlt]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; xlt95&amp;nbsp;&amp;nbsp;&amp;nbsp; - Microsoft Excel 95 Template [.xlt]&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;So, what's missing?&amp;nbsp; The newer Microsoft 'x' formats: docx, xlsx, etc. (Microsoft Office XML) are not listed, but conversion is still possible!&amp;nbsp; Let you mantra be&amp;nbsp;  "&lt;i&gt;unoconv is a command line utility that can convert any file format that OpenOffice can import, to any file format that OpenOffice is capable of exporting.&lt;/i&gt;"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Using unoconv&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To use unoconv, you first have to start the listener:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ unoconv -l &amp;amp;&amp;nbsp; &lt;span style="color: red;"&gt;#the '&amp;amp;' backgrounds the process and returns control of the&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; terminal winodow to your&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;[1] 9998&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: red;"&gt;#9998 is the process number of the listener.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;We can see that the listener is a python program and the killall command to cancel the listener would have to be directed at python.&amp;nbsp; To avoid killing other processes, 'kill 9998' should be used rather than 'killall python':&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ ps 9998&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; PID TTY&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STAT&amp;nbsp;&amp;nbsp; TIME COMMAND&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;9998 pts/0&amp;nbsp;&amp;nbsp;&amp;nbsp; Sl&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0:00 /usr/bin/python /usr/bin/unoconv -l&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;With the listener running, conversion of documents is straight forward, as we can see from the help:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ unoconv -h&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;usage: unoconv [options] file [file2 ..]&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Convert from and to any format supported by OpenOffice&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;unoconv options:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -c, --connection=string&amp;nbsp; use a custom connection string&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -d, --doctype=type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; specify document type&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (document, graphics, presentation, spreadsheet)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -e, --export=name=value&amp;nbsp; set export filter options&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eg. -e PageRange=1-2&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -f, --format=format&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; specify the output format&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -i, --import=string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set import filter option string&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eg. -i utf8&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -l, --listener&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; start a listener to use by unoconv clients&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -o, --outputpath=name&amp;nbsp;&amp;nbsp;&amp;nbsp; output directory&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --pipe=name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; alternative method of connection using a pipe&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -p, --port=port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; specify the port (default: 2002)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to be used by client or listener&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -s, --server=server&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; specify the server address (default: localhost)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; to be used by client or listener&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -t, --template=file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; import the styles from template (.ott)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -T, --timeout=secs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; timeout after secs if connections to OpenOffice fail&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --show&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; list the available output formats&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --stdout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; write output to stdout&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; -v, --verbose&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; be more and more verbose&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;So, in its simplest form, conversion takes the following form:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ unoconv test.docx&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;The command will finish silently if successful.&amp;nbsp; It creates a .pdf by default in the same directory as the document.&amp;nbsp; Add the -f [fmt] option to convert to a different format, for example:&lt;br /&gt; &lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ unoconv -f txt test.docx&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;When your conversion work is done, close the listener with:&lt;br /&gt; &lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ kill 9998&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you see why unoconv is number one!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3622287593252505628?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3622287593252505628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/unoconv-is-number-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3622287593252505628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3622287593252505628'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2012/01/unoconv-is-number-one.html' title='Unoconv is number one!'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-5586332908255050885</id><published>2011-11-21T14:44:00.000-08:00</published><updated>2011-11-22T10:03:13.565-08:00</updated><title type='text'>LibreOffice: An Unlikely Image Viewer</title><content type='html'>I encountered a series of deleted Enhanced Metafiles (EMF) files during the examination of a Window's-based system the other day.&amp;nbsp; EMF files are second generation &lt;a href="http://en.wikipedia.org/wiki/Windows_Metafile" target="_blank"&gt;Windows Metafiles (WMF)&lt;/a&gt;, and early on in in most forensics careers, forensics examiners are taught to seek out those files as printer artifacts.&amp;nbsp; And, it just so happens, the path of these deleted files and a time stamp analysis suggested these files were in fact printer artifacts. &lt;br /&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;u&gt;Sidebar&lt;/u&gt;: EMF is not only a printer artifact.&amp;nbsp; In fact, its not really accurate to call it a printer artifact.&amp;nbsp; Windows applications, like Microsoft Office, use the EMF format to make images portable between applications.&amp;nbsp; In printing from these applications, the document (even text documents) is converted to an EMF image and sent to the printer.&lt;/blockquote&gt;None of my native Linux image viewers was capable of displaying the EMF files.&amp;nbsp; I was considering downloading and running &lt;a href="http://www.xnview.com/" target="_blank"&gt;XnView&lt;/a&gt;, and excellent image viewer with over 400 supported image formats.&amp;nbsp; The new version being developed, &lt;a href="http://newsgroup.xnview.com/viewtopic.php?f=60&amp;amp;t=24056" target="_blank"&gt;XnViewMP (Multiplatform)&lt;/a&gt;, is capable but unstable, so I didn't relish using it other than as a last resort. (And, as it turns out, EMF is not on the list of supported formats.)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="data:image/png;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" src="data:image/png;base64,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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A little poking around the Internet, and I discovered that &lt;a href="http://www.openoffice.org/" target="_blank"&gt;OpenOffice&lt;/a&gt; supports EMF files.&amp;nbsp; Open Office, for the uninitiated, is and open office sweet with Microsoft Office document compatibility.&amp;nbsp; I have a fork of OpenOffice installed, called &lt;a href="http://www.libreoffice.org/" target="_blank"&gt;LibreOffice&lt;/a&gt;.&amp;nbsp; I opened the Draw program (though Writer would have worked as well), and I dragged the EMF into the document window.&amp;nbsp; Voila!&amp;nbsp; I had a perfect representation of the document sent to the printer.&lt;br /&gt;&lt;br /&gt;LibreOffice can save the image as a PDF for distribution, if required.&amp;nbsp; While it might seem untenable to process numerous images in this manner (opening one at a time in LibreOffice to covert to another format), you may not be limited to this approach.&amp;nbsp; The unoconv program can be used to convert any document that can be opened by LibreOffice into any format that can be written by LibreOffice.&amp;nbsp; Automation, anyone?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-5586332908255050885?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/5586332908255050885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/11/libreoffice-unlikely-image-viewer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5586332908255050885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5586332908255050885'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/11/libreoffice-unlikely-image-viewer.html' title='LibreOffice: An Unlikely Image Viewer'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-2308470416013150488</id><published>2011-11-21T08:33:00.000-08:00</published><updated>2011-11-21T14:44:36.726-08:00</updated><title type='text'>F12 Temptations</title><content type='html'>&lt;div style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/div&gt;&lt;br /&gt;BIOS one-time boot menus are tempting, especially if you are a frequent forensics boot disc user like me.&amp;nbsp;  I use boot discs to conduct preview examinations, something many people know as "device triage," and for imaging.&amp;nbsp;  In fact, boot discs can be essential tools in certain device imaging scenarios (see &lt;a href="http://linuxsleuthing.blogspot.com/2011/02/difficult-disk-imaging.html"&gt;Difficult Disk Imaging&lt;/a&gt;).&amp;nbsp; One-time boot menus make it easy to select alternate boot devices, like CD-ROM or USB, without wading into the BIOS settings.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="data:image/png;base64,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" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" src="data:image/png;base64,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" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;I'm in the habit of accessing the BIOS, however, and not using the boot menu.&amp;nbsp; First, it gives me the opportunity to record the BIOS time settings and evaluate detected hardware, but also because one-time boot menus are not always clearly defined in startup messages.&amp;nbsp; They also vary from BIOS to BIOS, computer model to computer model, even from the same manufacturer!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But Dell does a good job of letting you know how to access their menu: F12.&amp;nbsp; And, there are a lot of Dell computers in the world.&amp;nbsp; And, let's admit it, its a lot easier to access the one-time boot menu (meaning, boot from a different device than default &lt;i&gt;this time&lt;/i&gt;) than to access the BIOS Settings.&amp;nbsp; But, there is a very good reason not to be tempted by this Boot Device Nirvana, and I encountered it this weekend.&lt;br /&gt;&lt;br /&gt;On Friday afternoon, I booted a Dell server with a Linux-based forensics boot disc.&amp;nbsp; It was a hardware-based stripped array.&amp;nbsp; After determining that the server had evidence on board, I chose to image it with &lt;a href="http://guymager.sourceforge.net/" target="_blank"&gt;Guymager&lt;/a&gt;.&amp;nbsp; The process was to take 8 hours, and I went home in the bliss of knowing that when I returned to work on Monday, my image would be waiting for me, along with a hash verification of the source drive (array).&lt;br /&gt;&lt;br /&gt;What I discovered upon my return--both from an email and the condition of my equipment--is there had been a power failure during the imaging process.&amp;nbsp; Well, shortly after, in actuality.&amp;nbsp; But, the server had been set to reboot on power failure, and I failed to note that.&amp;nbsp; What I didn't fail to do, was change to boot order to ensure my book disc booted before the internal drives.&amp;nbsp; Therefore, the system was sitting at the boot disc OS desktop and not running the server!&amp;nbsp; In other words, no data had changed.&amp;nbsp; Had I used a one-time boot menu, this would not have been the case.&lt;br /&gt;&lt;br /&gt;You might be thinking, "Well, it didn't really matter in this case, because the imaging process had completed."&amp;nbsp; To that I say, "Yes, you're right."&amp;nbsp; But, I didn't have a &lt;i&gt;verified&lt;/i&gt; image, because, for an unknown reason, the hash digest of the source device did not match the hash digest of the data in the image.&amp;nbsp; However, because the server booted from the boot disc, and not the internal drives, I was able to hash the source device again and verify the data was the same in the image as on the drive!&lt;br /&gt;&lt;br /&gt;Why did the Guymager source hash differ from the image and from my post-power failure verification?&amp;nbsp; I don't know.&amp;nbsp; But I had the opportunity to check the discrepancy, which is the point of this post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-2308470416013150488?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/2308470416013150488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/11/f12-temptations.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2308470416013150488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2308470416013150488'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/11/f12-temptations.html' title='F12 Temptations'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-7356178968674204242</id><published>2011-08-01T17:13:00.000-07:00</published><updated>2011-08-01T17:13:31.289-07:00</updated><title type='text'>Windows Link Files / Using While Loops</title><content type='html'>A&amp;nbsp;colleague&amp;nbsp;asked today about a tool to decode Microsoft Windows link files. &amp;nbsp;Before I begin to discuss the tool I recommended, I'll briefly describe Windows link files. &amp;nbsp;A &lt;a href="http://en.wikipedia.org/wiki/File_shortcut#Microsoft_Windows"&gt;Windows link file&lt;/a&gt;, commonly known as "shortcuts", has the .lnk extension. &amp;nbsp;It is basically a file with information about another file. &amp;nbsp;It is&amp;nbsp;interpreted&amp;nbsp;by the windows shell, and the shell opens the file pointed to by the link file if all goes well. &amp;nbsp;Link files can be user or system generated. &amp;nbsp;You can learn much more about Windows link files in the &lt;a href="https://docs.google.com/viewer?url=http://computerforensics.parsonage.co.uk/downloads/TheMeaningofLIFE.pdf"&gt;white paper by Harry Parsonage&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;My favorite tool for parsing Windows link files was created by Jake Cunningham who posts tools he creates at the "&lt;a href="http://jafat.sourceforge.net/"&gt;JAFAT: Archive of Forensic Analysis Tools&lt;/a&gt;" website. &amp;nbsp;Jake has created some very well know Safari browser tools, but the tool that has caught my eye is "lnk-parse-1.0.pl". &amp;nbsp;The lnk-parse tool is a perl script that provides the most detail I have ever seen in a link file parser. &amp;nbsp;Here is some sample output:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: text; gutter: false"&gt;Link File:  /WINDOWS/system32/config/systemprofile/Start Menu/Programs/Windows Media Player.lnk&lt;br /&gt;Link Flags:  HAS SHELLIDLIST | POINTS TO FILE/DIR | HAS DESCRIPTION | HAS RELATIVE PATH STRING | NO WORKING DIRECTORY | HAS CMD LINE ARGS | NO CUSTOM ICON |&lt;br /&gt;File Attributes: ARCHIVE&lt;br /&gt;Create Time: Wed Jan 30 2008 05:36:33&lt;br /&gt;Last Accessed time: Wed Jan 30 2008 05:39:37&lt;br /&gt;Last Modified Time: Mon Jul 07 2003 05:00:00&lt;br /&gt;Target Length: 520192&lt;br /&gt;Icon Index: 0&lt;br /&gt;ShowWnd: 1 SW_NORMAL&lt;br /&gt;HotKey: 0&lt;br /&gt;Target is on local volume&lt;br /&gt;Volume Type: Fixed (Hard Disk)&lt;br /&gt;Volume Serial: b0a65d8e&lt;br /&gt;Vol Label: &lt;br /&gt;Base Path: C:\Program Files\Windows Media Player\wmplayer.exe&lt;br /&gt;(App Path:) Remaining Path: &lt;br /&gt;Description: @%SystemRoot%\inf\unregmp2.exe,-155&lt;br /&gt;Relative Path: ..\..\..\..\Program Files\Windows Media Player\wmplayer.exe&lt;br /&gt;Command Line: /prefetch:1&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Lnk-parse takes a single link file as an argument.  But anyone who knows Windows knows there are usually hundreds of link files on a system.  So, how does one quickly find all the link files in a Windows operating system using Linux tools?  I'm going to avoid all the caveats, such a deleted files, renamed files, etc., and make the following assumption:  The examiner is interested in allocated link files that have not been obfuscated by renaming or other anti-forensics techniques.&lt;br /&gt;&lt;br /&gt;The fastest way to find the link files is to mount the Windows file system and search for link files by name.  The search tool to use is the 'find' command.  I'll discuss mounting in another post (I recently wrote a tool to read disk/forensic image partition tables an automatically mount all allocated filesystems), but here I want to show a how a simple while loop can make using commands like lnk-parser on multiple files easy.&lt;br /&gt;&lt;br /&gt;The following command assumes it is being executed from the root of the Windows file system.  Windows file system is a misnomer; I mean a file system in which the Windows operating system is installed.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash; gutter: false"&gt;$ find . -iname "*.lnk" | while read line; do lnk-parse-1.0.pl "$line"; done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I'll break that down by moving the major parts to their own lines:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash"&gt;find . -iname "*.lnk" | \  &lt;br /&gt;while read line  &lt;br /&gt;do &lt;br /&gt;    lnk-parse-1.0.pl "$line"  &lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Line by line:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;find, recursively from the current dir, all files ending with .lnk, regardless of case, and pipe the output to the while loop&lt;/li&gt;&lt;li&gt;"while" there is output from the find command, read each line of output and assign the output (a file name and path) to the variable "line"&lt;/li&gt;&lt;li&gt;a required argument in a while loop, essentially: "do" the following to $line&lt;/li&gt;&lt;li&gt;process $line with lnk-parse-1.0.pl&lt;/li&gt;&lt;li&gt;Finished with this loop cycle, return to while and get another line from "find", if any.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;In 1.23 seconds, I processed all 103 link files in a small Windows XP system.  I could pipe the output to a text file for a report, if necessary.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: bash; gutter: false"&gt;$ find . -iname "*.lnk" | while read line; do lnk-parse-1.0.pl "$line"; done &gt; some_path/link_files.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I use while loops like this all the time.  One gotcha of which to be aware is that variables, assigned within the while loop, don't survive outside of the while loop.  I'll explain that sometime in the future, and provide some strategies on how to handle this.  But for now, if you mimic this usage, you won't run into that issue, you'll save yourself a lot of work, and you'll increase your productivity tremendously.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-7356178968674204242?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/7356178968674204242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/08/windows-link-files-using-while-loops.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/7356178968674204242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/7356178968674204242'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/08/windows-link-files-using-while-loops.html' title='Windows Link Files / Using While Loops'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6863365429524106186</id><published>2011-07-26T15:39:00.000-07:00</published><updated>2011-08-01T10:50:33.733-07:00</updated><title type='text'>BlackBerry Messenger / Google Talk for BlackBerry Save-files</title><content type='html'>My last post, "&lt;a href="http://linuxsleuthing.blogspot.com/2011/07/blackberrytext-message-parsing-aka-why.html"&gt;BlackBerry Text Message Parsing, AKA, Why I use Linux for Forensics&lt;/a&gt;," had unintended but pleasant consequences: it introduced me to BlackBerry forensics expert &lt;a href="http://www.ericjhuber.com/2011/04/interview-with-shafik-punja.html"&gt;Shafik Punja&lt;/a&gt;. &amp;nbsp;I really wrote the post to comment on the versatility of the Linux operating system, and fortunately I erred in calling the file that was the subject of my discussion a "BlackBerry Text Message" save file, rather than the BlackBerry Messenger (BBM) save file that it was. &lt;br /&gt;&lt;br /&gt;Shafik corrected me and taught me a bit more about the file type that I'll share here in the event that you missed his comments. &amp;nbsp;BBM messenger does not save message content by default. &amp;nbsp;It is a user selected option, and only available in BBM v5 and higher. &amp;nbsp;The files can be saved to the device's internal memory or an installed memory card. &amp;nbsp;Google Talk has the same save options and defaults as BBM, and also saves in the same basic format.&lt;br /&gt;&lt;br /&gt;Shafik asked if I could write a program to parse the files. &amp;nbsp;I agreed and quickly converted the basic Bash script in my last post to a more complete program. &amp;nbsp;However, when Shafik tried to run the program in OS X, it failed because OS X and Linux do not utilize the same 'date' command. &amp;nbsp;I was faced with writing a new program for use in OS X, which I wished to support, or make my current script intelligently determine the OS in which it was running and apply the correct date command syntax.&lt;br /&gt;&lt;br /&gt;Nothing seems like a bigger waste to me than to write essentially the same thing twice. &amp;nbsp;Isn't there a way to write a program that doesn't have to be altered based on the operating system in which it is run, I asked? &amp;nbsp;Then a little Australian-accented voice of reason reached my conscious thought: why don't you learn python? &amp;nbsp;For the millionth time: Thank you Michael, good idea.&lt;br /&gt;&lt;br /&gt;Michael Cohen, a software engineer at Google and author/maintainer of &lt;a href="http://code.google.com/p/pyflag/"&gt;pyFLAG&lt;/a&gt;, &lt;a href="http://code.google.com/p/aff4/"&gt;AFF4&lt;/a&gt;,&amp;nbsp;&amp;nbsp;and other tools soon to be released, has suggest many times over that I learn python, but I only recently started to do so. &amp;nbsp;Python is an excellent solution for cross platform programs, and I decided it was time to start.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;The BBM / GTalk file format&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;BBM and GTalk save files are CSV text files with the following basic structure:&lt;br /&gt;&lt;pre class="brush:text; html-script:false"&gt;Application Name, version[newline]&lt;br /&gt;DateCode, "Sender_ID", "Receiver_ID", Message[newline]&lt;br /&gt;...&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The first line of the file is the source application and the application version, separated by a comma.  The version is followed by a newline control code.&lt;br /&gt;&lt;br /&gt;The remaining lines are formatted thus: the line starts with a DateCode consisting of a 21 digit number.  The first 8 digits are the date of the sent message rendered as YYYYMMDD.  The remaining 13 digits are Unix epoch time,  rendered in milliseconds.  In the case of BBM, the sender Hex_ID follows the DateCode, separated by a comma and encapsulated in parenthesis.  Similarly, the receiver's Hex_ID follows.  For GTalk, the sender and receiver are identified by Google Account ID.  Finally, the message, in text, is stored followed by a newline control code.&lt;br /&gt;&lt;br /&gt;One minor issue in rendering the file in a spreadsheet centers on the message field.  Messages are not encapsulated in commas; therefore, messages with commas will not format well in spreadsheets without additional spreadsheet configuration.  This might not be a problem for one file, but would be a major annoyance for many files (one of my colleagues found 23 BBM save files on an SD card).  I determined to encapsulate the message field in quotes to overcome this issue.&lt;br /&gt;&lt;br /&gt;The python3 code I settled on follows:&lt;br /&gt;&lt;pre class="brush:python"&gt;import sys&lt;br /&gt;from time import strftime, localtime&lt;br /&gt;&lt;br /&gt;def main(csv):&lt;br /&gt;    line_no = 0&lt;br /&gt;    with open(csv) as db_file:&lt;br /&gt;        for line in db_file:&lt;br /&gt;            if line_no == 0:&lt;br /&gt;                print(line)&lt;br /&gt;                print('Date,DateCode,Sender,Receiver,Message')&lt;br /&gt;                line_no += 1&lt;br /&gt;            else:&lt;br /&gt;                datecode, sender, receiver, message = line.split(',', 3)&lt;br /&gt;                date = int(datecode[8:18])&lt;br /&gt;                date = strftime('%Y-%m-%d %H:%M:%S (%Z)', localtime(date))&lt;br /&gt;                print('"{}",{},"{}","{}","{}"'.format(date, datecode, sender, receiver, message.strip()))&lt;br /&gt;&lt;br /&gt;if __name__ == '__main__':&lt;br /&gt;    for file in sys.argv[1:]:&lt;br /&gt;        main(file)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I won't try to explain all the code here, because with my rudimentary knowledge of python, I'm likely to misspeak.  I will highlight a couple parts of the script and a couple of nice python features, however.  First, the "if" condition in line 8 is present to skip over date decoding in the first line of the file.  Instead, it prints the line, and adds a line of column headers to help with interpreting the remaining message data.&lt;br /&gt;&lt;br /&gt;Line 13 demonstrates a very nice python feature: multiple value assignment.  Here, I assign data from line 2 and higher, one line at a time (note the 'for' loop) to the datecode, sender, receiver, and message objects.  To work correctly, however, there needs to be four values to assign to the four objects.  The split method divides a string object into a list of strings based on a delimiter.  Here, I configure split to divide on commas a maximum of three times.  This creates a list of four strings.  Remaining commas are ignored and included in the last string, which here is assigned to 'message'.&lt;br /&gt;&lt;br /&gt;Line 14 converts the 'datecode' string to an integer, and line 15 uses the 'strftime' and 'localtime' functions from the 'time' module to convert the Unix epoch time embedded in the datecode to a human-readable format.  I use string slicing, that is, selecting a portion of the datecode string by its position in the string (also called indexing where the starting position is 0), to extract the 10 digits that represent the Unix epoch value.  The last three digits of the datecode are ignored since they represent milliseconds.&lt;br /&gt;&lt;br /&gt;The final line of which to take note is Line 16, where a few things of import are occurring.  First, the interpreted datecode is printed.  The original datecode follows for reference and validation purposes, and then the remainder of the line.  A format method is applied that replaces the brackets place holders in the print string with the objects that are arguments of the format method.  Here, the message object is encapsulated in quotes.  Also, the message object has the strip method applied to remove the newline control code at the end of each message to improve formatting.&lt;br /&gt;&lt;br /&gt;Though I won't comment on it, I'll include the bash script I wrote first for comparison:&lt;br /&gt;&lt;pre class="brush:bash"&gt;line_no=0 #set counter&lt;br /&gt;&lt;br /&gt;cat $1 | while read line&lt;br /&gt;do&lt;br /&gt;    if [ $line_no -eq 0 ]&lt;br /&gt;    then&lt;br /&gt;        echo ${i}  #print first line unaltered&lt;br /&gt;        echo "Date,DateCode,Sender,Receiver,Message"&lt;br /&gt;        line_no=1&lt;br /&gt;    else&lt;br /&gt;        for var in date sent rcvd message&lt;br /&gt;        do&lt;br /&gt;            eval $var="\${line%%,*}"&lt;br /&gt;            [[ "$var" = "message" ]] &amp;amp;&amp;amp; message=$line #ignore commas in message&lt;br /&gt;            line="${line#*,}"&lt;br /&gt;        done&lt;br /&gt;        date=$(date +"%Y-%m-%d %H:%M:%S (%Z)" -d @${date:8:10}) #convert date code and store&lt;br /&gt;        len=$((${#message}-1)) #subtract 1 from remainder length for stripping newline control code&lt;br /&gt;        echo "\"$date\",\"$sent\",\"$rcvd\",\"${message:0:$len}\""&lt;br /&gt;    fi&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6863365429524106186?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6863365429524106186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/blackberry-messenger-google-talk-for.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6863365429524106186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6863365429524106186'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/blackberry-messenger-google-talk-for.html' title='BlackBerry Messenger / Google Talk for BlackBerry Save-files'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6479729749576041182</id><published>2011-07-21T22:00:00.000-07:00</published><updated>2011-07-26T13:08:37.324-07:00</updated><title type='text'>BlackBerry Text Message Parsing, AKA, Why I use Linux for Forensics</title><content type='html'>A little detour from my usual posts to explain why I use Linux for forensics, though my upbringing was in Windows-based tools like EnCase. &amp;nbsp;A colleague contacted me today with a little issue: He had found a BlackBerry text messaging backup file in CSV format (EDIT: This was actually a BlackBerry Messenger save file) on an external memory card, but the date code for each message was perplexing. &amp;nbsp;He asked me if I could help in interpret the code. &amp;nbsp;It looked like the following:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;201010181287467321760&lt;/span&gt;&lt;/blockquote&gt;The full format of the CSV was "date, from(hexID), to(hexID), message." &amp;nbsp;It was obvious to my colleague and me that the first 8 digits of the date code was the date of the message in plain text, i.e., "20101018" or "2010-10-18." &amp;nbsp;My Unix roots made the remaining digits of the numeric string easy to identify: unixepoch in milliseconds, i.e., 1287467321760 milliseconds since 1-1-1970 00:00:00. &lt;br /&gt;&lt;br /&gt;A quick verification with the date command, but truncating the date at seconds (i.e., dividing by 1000):&lt;br /&gt;&lt;pre class="brush:text;gutter:false"&gt;$ date -d @1287467321&lt;br /&gt;Mon Oct 18 22:48:41 PDT 2010&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The converted unixepoch date matches the plain text date.  We seem to have interpreted the code correctly, and now we know the local time of the message as well.&lt;br /&gt;&lt;br /&gt;But of course, using the date command is not why I find Linux so valuable. &amp;nbsp;It because of the ease with which I was able to convert the whole file, having discovered the meaning of the date code. &amp;nbsp;Remember the format of the file? &amp;nbsp;It was "date, from(hexID), to(hexID), message."&lt;br /&gt;&lt;br /&gt;Consider three lines from the file as an example:&lt;br /&gt;&lt;pre class="brush:text;gutter:false"&gt;201010181287467321760,"6C31FB2C","0F315216",Hey&lt;br /&gt;201010191287534544913, Oct 19 17:29:04 PDT 2010,"6C31FB2C","0F315216",Hey, you there?&lt;br /&gt;201010191287534602157,"0F315216","6C31FB2C",Yeah, let's meet.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;A quick, simple while loop to read each line of the Messenger save file, &lt;br /&gt;&lt;pre class="brush:text; gutter: false"&gt;$ cat backup.csv | while read line; do&amp;nbsp;date=${line%%,*}; remainder=${line#*,}; echo "$(date -d @${date:8:10}),$remainder"; done&lt;br /&gt;Mon Oct 18 22:48:41 PDT 2010,"6C31FB2C","0F315216",Hey&lt;br /&gt;Tue Oct 19 17:29:04 PDT 2010,"6C31FB2C","0F315216",Hey, you there?&lt;br /&gt;Tue Oct 19 17:30:02 PDT 2010,"0F315216","6C31FB2C",Yeah, let's meet.&lt;br /&gt;...&lt;/pre&gt;&lt;br /&gt;Let me break that down:&lt;br /&gt;&lt;pre class="brush:bash"&gt;cat backup.csv | while read line  #read a line of the file, assign to variable 'line'&lt;br /&gt;do&lt;br /&gt;  date=${line%%,*}  #read everything up to the first comma, assign to variable 'date'&lt;br /&gt;  remainder=${line#*,}  #read everything beyond the first comma, assign to variable 'remainder'&lt;br /&gt;  echo "$(date -d @${date:8:10}),$remainder" #convert digits 9-18 to local time, print localtime and the remainder of the line to stdout&lt;br /&gt;done&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The key to this solution is something I didn't learn in my initial studies of Bash, but I make extensive use of it now: variable expansion.  I use the various expansions available in Bash 4 to assign portions each line to variables that I could then operate on and print the result.  I won't discuss all available expansions here, but I will explain those I used:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Removing the longest match from the end&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;Consider: Each line contained comma separated values.  I really only needed to operated on the first value -- the date code.  I prefer, as much as possible, to not call external tools, such as cut or awk, so as to not unnecessarily start external processes.  Bash variable expansion makes this possible.  The syntax ${var%%PATTERN} will remove the longest match to PATTERN from the variable 'var'.&lt;br /&gt;&lt;br /&gt;So, in line 3, date=${line%%,*} assigns to the 'date' variable all of the contents of the 'line' variable up to the first comma.  Thus, in the case of the first line, date="201010181287467321760".&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Removing the shortest match from the beginning&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;With the date code isolated in the 'date' variable, we still need to print the rest of the line once we convert the date.  The syntax ${var#PATTERN} will remove the shortest match to PATTERN from the variable 'var'.&lt;br /&gt;&lt;br /&gt;So, in line 4, remainder=${line#*,} assigns to the 'remainder' variable all of the contents of the 'line' variable after the first comma.  Thus, in the case of the first line, remainder=""6C31FB2C","0F315216",Hey"&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Returning a substring of a variable&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;Finally, we need to isolate the unix epoch time from the plain text date in the date code now stored in the variable 'date'.  We do this by indexing.  The syntax ${var:OFFSET:LENGTH} will return a substring of the variable 'var' starting at OFFSET for the specified LENGTH.  The first character in a variable is indexed at offset 0.&lt;br /&gt;&lt;br /&gt;So, in line 5, ${date:8:10} returns 10 characters of the variable 'date' starting at the 9th character (remember, indexing starts at 0).  Thus, we have now fed the unix epoch date string incorporated in the Messenger date code to the unix date command to be converted to local time in a human readable format.&lt;br /&gt;&lt;br /&gt;Line five is a complex command, that indexes the 'date' variable, converts it in a sub-process with the date command, and then echo the result with the contents of the 'remainder' variable appended.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Where to go from here&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;If you have some Bash skills, but want to advance them, I recommend the book "Pro Bash Programming: Scripting the GNU/Linux Shell" by Chris F.A. Johnson from Apress.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6479729749576041182?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6479729749576041182/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/blackberrytext-message-parsing-aka-why.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6479729749576041182'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6479729749576041182'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/blackberrytext-message-parsing-aka-why.html' title='BlackBerry Text Message Parsing, AKA, Why I use Linux for Forensics'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-435077817558487500</id><published>2011-07-19T18:37:00.000-07:00</published><updated>2011-07-22T11:18:49.902-07:00</updated><title type='text'>Mounting Split Raw Images</title><content type='html'>A raw image, made with dd or a variant, is still a common image format, and will not go away soon even as many argue the benefits of forensic images such as the Expert Witness Format (supplied through libewf) and the Advanced Forensic Format (supplied through afflib). &amp;nbsp;But raw images can be difficult to tote around because they are bit for bit copies which makes the copy as large as the original. &amp;nbsp;As such, the images are often split to fit on external media such as DVD.&lt;br /&gt;&lt;br /&gt;But splitting, while solving storage problems, creates a new problem. &amp;nbsp;What if you want to mount the image for examination? &amp;nbsp;True, Sleuthkit can handle the examination of split raw images, but sometimes there is no equal to simply mounting an image during an examination.&lt;br /&gt;&lt;br /&gt;Let me illustrate using a situation I encountered yesterday. &amp;nbsp;A colleague had a split raw image of over 200 segments that he wished to mount and then boot in a virtual machine. &amp;nbsp;He tried to follow &lt;a href="http://linuxsleuthing.blogspot.com/2010/10/booting-disk-images-in-linux.html"&gt;my tutorial&lt;/a&gt;&amp;nbsp; but was unsuccessful, uncertain as to why. &amp;nbsp;When I looked into the situation with him, the issue became clear: xmount, the tool used to create a virtual disk from a disk image, was only mounting the first segment of the split raw image, despite being given all the segments as arguments as is required with Expert Witness Format images. &amp;nbsp;More simply put, xmount does not handle split raw images. &amp;nbsp;It &lt;i&gt;will&lt;/i&gt;&amp;nbsp;handle a single raw image file just fine, however.&lt;br /&gt;&lt;br /&gt;What to do? &amp;nbsp;One could simply cat the files together, but that means doubling storage requirements, at least until the concatenation operation is concluded. &amp;nbsp;That might not be feasible or desirable, and it can be very time consuming. &amp;nbsp;In this case, we were talking 300 GB of data. &amp;nbsp;It would be great to be able to treat the segments as one file, and pass that file to xmount to accomplish the purpose.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Affuse&lt;/b&gt; to the rescue! &amp;nbsp;Affuse is part of the &lt;a href="http://afflib.org/"&gt;afflib&lt;/a&gt; tool suite. &amp;nbsp;It creates a virtual file system using &lt;a href="http://en.wikipedia.org/wiki/Filesystem_in_Userspace"&gt;fuse&lt;/a&gt;&amp;nbsp;and mounts it to a location you specify. &amp;nbsp;You only pass the first segment of the split image as an argument. &amp;nbsp;The command takes the form:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:text;gutter:false"&gt;# affuse image mount_point&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Affuse creates an image.raw file (that is, the name of the segment with '.raw' appended) &amp;nbsp;in the mount point along with a log file. &amp;nbsp;Yes, its that easy. &lt;br /&gt;&lt;br /&gt;To finish the scenario, xmount can then take the image.raw file as an argument to create the virtual disk, thusly:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:text;gutter:false"&gt;# xmount --in dd --out vdi --cache image.cache mount_point/image.raw new_mount_point/&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;This command tells xmount that the input file, image.raw, is raw data, the output desired is a VirtualBox vdi format, that a cache file called "image.cache" is desired to store system changes when the virtual machine is running. &amp;nbsp;The .vdi file will be mounted in the "new_mount_point" directory. &amp;nbsp;If xmount is unfamiliar to you, I recommend you read &lt;a href="http://linuxsleuthing.blogspot.com/2010/10/booting-disk-images-in-linux.html"&gt;my previous post&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;Like affuse, xmount utilizes the fuse file system. &amp;nbsp;Both utilities accept fuse file system arguments as well as tool specific arguments, so read only mounting and permissions options exist (type "man fuse" at the command line for more details). &amp;nbsp;As always, practice on non-case data to become familiar with the tools.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-435077817558487500?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/435077817558487500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/mounting-split-raw-images.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/435077817558487500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/435077817558487500'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/07/mounting-split-raw-images.html' title='Mounting Split Raw Images'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4024839336331756599</id><published>2011-06-29T13:35:00.000-07:00</published><updated>2011-07-22T11:24:31.811-07:00</updated><title type='text'>Google Chrome Download History</title><content type='html'>Google Chrome keeps a wealth of data that is of interest to the forensic examiner. &amp;nbsp;There are tools that look at the browser history and cache, but tools that examine the download history are less frequent. &amp;nbsp;Part of the reason it is overlooked by examiner's, I suspect, is that the download history is a table in the 'History' SQLite database, and not a separate file itself.&lt;br /&gt;&lt;br /&gt;The History database, found in '/home/&lt;user&gt;/.config/chromium/Default' for the open version of chrome, i.e., Chromium, contains the following tables:&lt;/user&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ sqlite3 History .tables&lt;br /&gt;downloads &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; presentation &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;urls &lt;br /&gt;keyword_search_terms &amp;nbsp;segment_usage &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; visit_source &lt;br /&gt;meta &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;segments &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;visits&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;&lt;div&gt;The downloads table is the focus of this post. &amp;nbsp;It is structured as follows:&lt;/div&gt;&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;$ sqlite3 History .schema | grep downloads&lt;br /&gt;CREATE TABLE downloads (id INTEGER PRIMARY KEY,full_path LONGVARCHAR NOT NULL,url LONGVARCHAR NOT NULL,start_time INTEGER NOT NULL,received_bytes INTEGER NOT NULL,total_bytes INTEGER NOT NULL,state INTEGER NOT NULL);&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;For the uninitiated, the table schema tells us that each record contains 'id', 'full_path', 'url', 'start_time', 'received_bytes', 'total_bytes', and 'state' fields. &amp;nbsp;We can extract the data in csv format, as follows:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite -header -csv History "SELECT * FROM downloads"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;That's nice, but the dates are unixepoch and we don't know what the 'state' integer means, though it can be deduced from the 'received_bytes' and 'total_bytes' fields and studying a known source of data. &amp;nbsp;I determined that state 1 and 2 mean "complete" and "incomplete" download respectively.&lt;br /&gt;&lt;br /&gt;To convert unixepoch to local time, we use the SQLite datetime function. &amp;nbsp; We tell datetime to take the start_time integer, interpret it as unixepoch time, and translate to localtime. &amp;nbsp;Exerpted from the rest of the query, it looks like this:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;datetime(start_time,'unixepoch','localtime')&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;For clarity in the output, it would be nice to convert the state integer to its text equivalent. &amp;nbsp;We can do this with the case command. &amp;nbsp;The case command is the if/then statement of SQLite. &amp;nbsp;In its simplest application it takes the form 'CASE&amp;nbsp;&amp;nbsp;WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 END' where x is the field data, w is a comparison value, and r is the result that is returned. &amp;nbsp;It is easiest to understand when we apply it to our current circumstance:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;CASE WHEN state=1 THEN 'complete' WHEN state=2 THEN 'incomplete' ELSE 'unknown' END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Putting it all together, we can obtain nicely formatted output from the downloads table of the Chrome History database with the following command:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite3 -header -csv History "SELECT id,full_path, url, datetime(start_time,'unixepoch','localtime') AS date, received_bytes, total_bytes, CASE WHEN state=1 THEN 'complete' WHEN state=2 THEN 'incomplete' ELSE 'unknown' END AS state FROM downloads"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The caps in the commands are not required, but are designed to make reading the SQLite operators easier. &amp;nbsp;You may have noted the "AS" operators after the datetime function and case expressions. &amp;nbsp;It serves to replace the expressions as the header for that column in your csv output.&lt;br /&gt;&lt;br /&gt;Your output should look like:&lt;br /&gt;&lt;pre class="brush:text;gutter:false"&gt;id,full_path,url,date,received_bytes,total_bytes,state&lt;br /&gt;1,/home/slosleuth/Downloads/keepnote_0.7.3-1_all.deb,http://keepnote.org/keepnote/download/keepnote_0.7.3-1_all.deb,"2011-06-23 12:04:46",500022,500022,complete&lt;br /&gt;2,/home/slosleuth/Downloads/iso/nbcaine2.0.dd.gz,http://www.caine-live.net/Downloads/nbcaine2.0.dd.gz,"2011-06-24 13:25:42",85962197,0,incomplete&lt;br /&gt;3,/home/slosleuth/Downloads/iso/nbcaine2.0gz.md5.txt,http://www.caine-live.net/Downloads/nbcaine2.0gz.md5.txt,"2011-06-24 13:27:23",51,51,complete&lt;br /&gt;&lt;/pre&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;I hope this helps you with SQLite queries in general and specifically to parse the data in the Google Chrome downloads table of the History SQLite database.&amp;nbsp;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4024839336331756599?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4024839336331756599/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/google-chrome-download-history.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4024839336331756599'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4024839336331756599'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/google-chrome-download-history.html' title='Google Chrome Download History'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-5755041891018781630</id><published>2011-06-13T13:16:00.000-07:00</published><updated>2011-06-13T13:16:43.841-07:00</updated><title type='text'>Extending gThumb for forensics</title><content type='html'>I've searched high and low, and many times, for a good image viewer to be used in Linux-based forensics. &amp;nbsp;In the end, and despite some shortcomings, I always end up using &lt;a href="http://live.gnome.org/gthumb"&gt;gThumb&lt;/a&gt;, a GUI image viewer and browser.&amp;nbsp;&amp;nbsp;The advantages of gThumb are that it integrates well with the Gnome desktop environment, has a robust search facility, finds files recursively, and can be extended by the user.&lt;br /&gt;&lt;br /&gt;The focus of this post is extending gThumb. &amp;nbsp;Today, many images are rich in EXIF data, much of which gThumb displays in a property window. &amp;nbsp;However, it misses data like GPS coordinates that can be found in some images like those taken by the iPhone. &amp;nbsp;My favorite tool for reading EXIF data is &lt;a href="http://www.sno.phy.queensu.ca/~phil/exiftool/"&gt;exiftool&lt;/a&gt; by Phil Harvey, but it's a command line tool. &amp;nbsp;So, how does one integrate command line data with a GUI tool like gThumb? &amp;nbsp;Yad!&lt;br /&gt;&lt;br /&gt;No, I didn't just utter an explicative. &amp;nbsp;&lt;a href="http://code.google.com/p/yad/"&gt;Yad&lt;/a&gt; stands for "yet another dialog" and is a fork of the &lt;a href="http://library.gnome.org/users/zenity/stable/"&gt;zenity&lt;/a&gt; project. &amp;nbsp;Zenity is a simple to use GUI front end for command line scripts. &amp;nbsp;However, yad has many more features and is under active development. &amp;nbsp;Yad had many stock dialog boxes, and I will illustrate its use here as I extend gThumb with exiftool by displaying the exiftool output in a yad dialog box.&lt;br /&gt;&lt;br /&gt;gThumb has the option to run user scripts, accessed through the toolbar: Tools | Personalize.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Sv8EAivj038/TfZqVr-Dr9I/AAAAAAAAApY/dkDmPos5iI4/s1600/Menu_019.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Sv8EAivj038/TfZqVr-Dr9I/AAAAAAAAApY/dkDmPos5iI4/s1600/Menu_019.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;This opens the "Command" dialog box. &amp;nbsp;Clicking the "New" button opens the "New Command" dialog where the user command is inputted. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-2clNZqRrt2s/TfZsEQO3p1I/AAAAAAAAApc/nsbqfFx9LCU/s1600/New+Command_023.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="http://4.bp.blogspot.com/-2clNZqRrt2s/TfZsEQO3p1I/AAAAAAAAApc/nsbqfFx9LCU/s320/New+Command_023.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Assuming both yad and exiftool are installed in you operating system, you can create an exiftool extention as follows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Name: exiftool&lt;/blockquote&gt;&lt;blockquote&gt;Command:&amp;nbsp;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;exiftool %F | yad --text-info --title="exiftool: %B" --fontname="Monospace 10" --width=600 --height=800&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;Shortcut: &amp;lt;&lt;i&gt;select from drop down if a shortcut key is desired&lt;/i&gt;&amp;gt;&lt;/blockquote&gt;&lt;blockquote&gt;Terminal command (shell script): leave checked&lt;/blockquote&gt;Save the command and close the main Command box. &amp;nbsp;You can select your new command from the tools menu or by the number pad shortcut you created.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SqYZaDAna1E/TfZuik-MKuI/AAAAAAAAApg/42IcQBc634o/s1600/Menu_024.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-SqYZaDAna1E/TfZuik-MKuI/AAAAAAAAApg/42IcQBc634o/s1600/Menu_024.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;The results appear in a yad "text-info" dialog box:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xZ7D_rViylE/TfZv631lNqI/AAAAAAAAAps/15sRUsIOivQ/s1600/exiftool%253A+%2527f63434304.jpg%2527_026.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-xZ7D_rViylE/TfZv631lNqI/AAAAAAAAAps/15sRUsIOivQ/s320/exiftool%253A+%2527f63434304.jpg%2527_026.png" width="234" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;If you made a mistake, or need to edit your command use the Command window through "Tool | Personalize."&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-n8R1ZB3m6L0/TfZu35vC6VI/AAAAAAAAApk/xExxC9VmGcM/s1600/Edit+Command_022.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="175" src="http://4.bp.blogspot.com/-n8R1ZB3m6L0/TfZu35vC6VI/AAAAAAAAApk/xExxC9VmGcM/s320/Edit+Command_022.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;With this basic format, gThumb extensions are only limited by your creativity!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-5755041891018781630?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/5755041891018781630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/extending-gthumb-for-forensics.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5755041891018781630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5755041891018781630'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/extending-gthumb-for-forensics.html' title='Extending gThumb for forensics'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Sv8EAivj038/TfZqVr-Dr9I/AAAAAAAAApY/dkDmPos5iI4/s72-c/Menu_019.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-2070924310623231772</id><published>2011-06-13T08:28:00.000-07:00</published><updated>2011-06-13T08:28:30.172-07:00</updated><title type='text'>SD Card Construction, (or Burning Ants with a Magnifying Glass)</title><content type='html'>A coworker brought me an SD card today because she could not delete any files from it. &amp;nbsp;I noticed the lock switch was missing from the card, and after inserting the card into a portable reader, I confirmed the card was write protected. &amp;nbsp;This got me curious: just how does the switch on an SD card work? &amp;nbsp;I've relied on it for write protecting evidence, but I didn't really know how reliable the switch was.&lt;br /&gt;&lt;br /&gt;With great gusto, I snapped the card in half to examine its contents. &amp;nbsp;I did it with as much joy of discovery as a young boy has when first focusing the suns rays on ants with a magnifying glass. &amp;nbsp;What I found inside surprised me: a very simple chip occupying about 1/3 of the card housing. &amp;nbsp;I determined--by examining similar cards--that the switch did not bridge any electrical contacts on the chip, so write protection was not a function on the card itself.&lt;br /&gt;&lt;br /&gt;I turned my attention to several card readers I have lying about. &amp;nbsp;One has a very shallow card well, which makes visualizing the electrical contacts quite easy. &amp;nbsp;I noted that on the side of the reader, in a location corresponding to the switch on an SD card, there was a spring-loaded pin. &amp;nbsp;Through &amp;nbsp;experimentation, I determined that the pin, when depressed, allows data to be written to the card. &amp;nbsp;When the pin is extended, write-blocking occurs. &amp;nbsp;The position of the "lock" switch on the card determines the position of the pin.&lt;br /&gt;&lt;br /&gt;Thus, (and to my surprise) write blocking is a really function of the reader, not the card. &amp;nbsp;It is possible for a reader to be constructed or damaged such that the lock switch has no effect! &amp;nbsp;Frequent inspection and testing of a card reader used for forensic analysis is warranted. &lt;br /&gt;&lt;br /&gt;Lesson:&lt;i&gt; know your equipment!&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-2070924310623231772?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/2070924310623231772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/sd-card-construction-or-burning-ants.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2070924310623231772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2070924310623231772'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/sd-card-construction-or-burning-ants.html' title='SD Card Construction, (or Burning Ants with a Magnifying Glass)'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-8192926084227898813</id><published>2011-06-03T17:04:00.000-07:00</published><updated>2011-10-25T11:43:47.007-07:00</updated><title type='text'>Defeating the Droid: Let the Pillaging Begin</title><content type='html'>In my last post, &lt;a href="http://linuxsleuthing.blogspot.com/2011/06/defeating-droid.html"&gt;Defeating the Droid&lt;/a&gt;, I explained how to root an Android phone, at least through version 2.2. &amp;nbsp;Like other mobile devices, Android is a moving target and what works on one phone or one OS version may not work on the next. &amp;nbsp;We left off with a running adb shell with root privileges. &amp;nbsp;But how do we get the data we seek.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Bringing Up the Past&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I mentioned previously that the adb shell is an ASH shell without&amp;nbsp;auto-completion, inline editing, or command history. &amp;nbsp;In other words, this car is a base model without all the bells and whistles with which you might be accustomed. &amp;nbsp;Add to that a limited set of binary tools (no copy, tar, or find commands, for example) and its a bit like standing at the base of a cliff without any climbing tools.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Plan of Attack&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;We need tools, and we need them bad. &amp;nbsp;But we don't want to change any more data on the phone than necessary. &amp;nbsp;So, what to do?&lt;br /&gt;&lt;br /&gt;Android phones use SD cards to store user media, like photos and music. &amp;nbsp;This card should be removed and imaged, following standard forensic imaging protocols, as part of your examination. &amp;nbsp;While the card can be imaged from within the phone, the interface is slow (took 45 minutes to image 16gb) and requires that the phone be placed in USB mass storage mode for the workstation to see it. &amp;nbsp;A locked phone may make this impossible. &lt;br /&gt;&lt;br /&gt;Significantly, removing the card allows us to replace it with one of our own containing tools for accessing data in the phone's internal memory. &amp;nbsp;You can get by quite handily with one small tool: busybox.&lt;br /&gt;&lt;br /&gt;You can copy busybox to the card before inserting it in the phone, but its not a necessity. &amp;nbsp;You can also use the Android Debug Bridge (adb) utility to copy busybox to an installed card using the command:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb push busybox /sdcard&lt;/span&gt;&lt;/blockquote&gt;Finally, the card you use should have enough space to capture the full internal memory of the phone. &amp;nbsp;The adb shell allows us to copy files within the device, but not to our workstations. &amp;nbsp;So, we must copy files to the SD card.&lt;br /&gt;&lt;br /&gt;The size of our SD card can very, depending on the amount of physical memory found in the phone. This can be quite small, as in the case of&amp;nbsp;the original Motorola Droid which has only 256mb of internal storage. &amp;nbsp;However newer devices, like the Droid 2, have significantly more memory with 8gb of internal storage capacity. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Sequential Processing: Starting with "dd"&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I'm experienced in fingerprint development as well as computer forensics. &amp;nbsp;In fingerprint processing, there is a phenomenon known as "Sequential Processing." &amp;nbsp;Sequential processing simply means to do processing in such an order so that the first step does not inhibit the second step, and so on. &amp;nbsp;We actually do this every day in computer forensics: we image a device before before we conduct an examination, and we use the image for the examination so as to not harm the original evidence.&lt;br /&gt;&lt;br /&gt;It is my opinion that we should do physical imaging of the device before logical. &amp;nbsp;The device we are working on has a running operating system and files are changing and being created and deleted as part of the normal process of the phone. &amp;nbsp;Further, a physical image means we can recover deleted files, so we want the physical images before we do anything that could overwrite data. &amp;nbsp;"dd" is the tool of choice here, and it can be deployed quickly (it is part of the resident operating system) and there is no set up involved, i.e., remounting of partitions.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Root the device. &amp;nbsp;See &lt;a href="http://linuxsleuthing.blogspot.com/2011/06/defeating-droid.html"&gt;my previous post&lt;/a&gt; if you don't know what I'm talking about.&lt;/li&gt;&lt;li&gt;Start the adb shell if its not already running. &amp;nbsp;Look for the telltale root prompt to be sure you have "rooted" the device.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb shell&lt;br /&gt;# &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- adb shell prompt&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Determine the devices you want to image. &amp;nbsp;In Android, the devices are called mtdblock devices, and are listed in /proc/mtd.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;# cat /proc/mtd&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;dev: &amp;nbsp; &amp;nbsp;size &amp;nbsp; erasesize &amp;nbsp;name&lt;br /&gt;mtd0: 00180000 00020000 "pds"&lt;br /&gt;mtd1: 00060000 00020000 "misc"&lt;br /&gt;mtd2: 00380000 00020000 "boot"&lt;br /&gt;mtd3: 00480000 00020000 "recovery"&lt;br /&gt;mtd4: 08c60000 00020000 "system"&lt;br /&gt;mtd5: 05ca0000 00020000 "cache"&lt;br /&gt;mtd6: 105c0000 00020000 "userdata"&lt;br /&gt;mtd7: 00200000 00020000 "kpanic"&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ideally, we want to image everything. &amp;nbsp;But of particular interest are the "cache" and "userdata" block devices. &amp;nbsp;The size of each device is listed in&amp;nbsp;hexadecimal code. &amp;nbsp;In the above case, the "cache" device is &amp;nbsp;97124352 bytes [echo $((0x5ca0000))], and the "userdata" device is&amp;nbsp;274464768 bytes [echo $((0x105c0000))]. &amp;nbsp;We need to know how the devices are addressed:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# mount&lt;br /&gt;rootfs / rootfs ro,relatime 0 0&lt;br /&gt;...&lt;br /&gt;/dev/block/mtdblock4 /system yaffs2 ro,relatime 0 0&lt;br /&gt;/dev/block/mtdblock6 /data yaffs2 rw,nosuid,nodev,relatime 0 0&lt;br /&gt;/dev/block/mtdblock5 /cache yaffs2 rw,nosuid,nodev,relatime 0 0&lt;br /&gt;/dev/block/mtdblock0 /config yaffs2 ro,relatime 0 0&lt;br /&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;We see that the "cache" mtdblock device is addressed as /dev/block/mtdblock5 and "userdata" as /dev/block/mtdblock6. &amp;nbsp;We can make a dd image of each as follows:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# dd if=/dev/block/mtdblock5 of=/mnt/sdcard/cache.dd&lt;br /&gt;189696+0 records in&lt;br /&gt;189696+0 records out&lt;br /&gt;97124352 bytes transferred in 24.001 secs (4046679 bytes/sec)&lt;br /&gt;# dd if=/dev/block/mtdblock6 of=/sdcard/data.dd&lt;br /&gt;/dev/block/mtdblock6: read error: I/O error&lt;br /&gt;83808+0 records in&lt;br /&gt;83808+0 records out&lt;br /&gt;42909696 bytes transferred in 8.653 secs (4958938 bytes/sec)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uh, oh, an error. &amp;nbsp;Normally, we overcome dd errors by adding the "conv=noerror" argument, which tells dd to continue on read error. &amp;nbsp;But the Android dd does not support that option. &amp;nbsp;So, what do we do in such a circumstance? &amp;nbsp;Give up? &amp;nbsp;Hardly!&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Phase Two: Busybox&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://www.busybox.net/"&gt;Busybox&lt;/a&gt; can be described as "the swiss army knife of embedded Linux." &amp;nbsp;It is a single executable file, about 1mb in size, containing many common Unix utilities, including cp, find, tar, and yes, dd! &amp;nbsp;In order to use it, we need a version compiled for Android, but I will not discuss how to compile here. It is readily available on the Web and in Android Root kits, but I'd recommend compiling a trusted version if you can. &amp;nbsp;One things certain, you &lt;u&gt;cannot&lt;/u&gt; use the busybox binary from your workstation. &amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;There's a catch to using busybox. &amp;nbsp;We want to place it on our SD card so we don't change anything on the phone's internal memory, but busybox cannot be run from the SD card. &amp;nbsp;"Why?" you ask. &amp;nbsp;I'll show you:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# mount&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&amp;nbsp;...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,&lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;noexec&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;So, to make the busybox on the SD card executable, we need to remount the card with the ability to execute binary files.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;If busybox was not already on your card, push it to the card from a terminal on your workstation.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb push busybox /mnt/sdcard&lt;br /&gt;1255 KB/s (1745016 bytes in 1.356s)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Remount your card with executable permission.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb shell&lt;br /&gt;# mount -o remount,rw /mnt/sdcard /mnt/sdcard&lt;br /&gt;# mount&lt;br /&gt;/dev/block/vold/179:1 /mnt/sdcard vfat rw,dirsync,relatime,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro 0 0&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Change directories to the SD card and optionally start a busybox shell. &amp;nbsp;By starting a busybox shell, we attain inline editting and a shell history. &amp;nbsp;In other words, entering commands becomes easier.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# cd /mnt/sdcard&lt;br /&gt;# ./busybox sh&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Now we can dd that damaged "userdata" mdtblock again, this time passing conv=noerror because we will use the busybox dd. &amp;nbsp;Note: because busybox is not installed on the system or in the path, we have to prepend busybox utilities with ./busybox &lt;utility&gt;. &amp;nbsp;To see a list of available busybox tools, issue "./busybox" alone.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# ./busybox dd if=/dev/block/mtdblock6 of=/mnt/sdcard/data.dd conv=noerror&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/utility&gt;&lt;/li&gt;&lt;li&gt;With busybox, we can also create archives of the logical files on the device. &amp;nbsp;Again, to simplify the discussion, we'll focus on the /cache and /data directories where we saw the respective mtdblock devices were mounted. &amp;nbsp;Why should we archive the logical files when we have physical images made with dd? &amp;nbsp;Because the file systems in the images are "yaffs" and present special problems I won't discuss here. &amp;nbsp;It is enough to say, for now, that your workstation likely doesn't support yaffs by default and you cannot mount and examine the images you created. &amp;nbsp;They are only useful file carving.&lt;br /&gt;&lt;br /&gt;Therefore, we'll use tar to make archives of the /cache and /data directories.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; # ./busybox tar czvf cache.tar.gz /cache&lt;br /&gt;tar: removing leading '/' from member names&lt;br /&gt;cache/&lt;br /&gt;cache/downloadfile-30.jpeg&lt;br /&gt;cache/downloadfile-15.jpeg&lt;br /&gt;...&lt;br /&gt;cache/app/I-Status_Monitor.apk&lt;br /&gt;#&amp;nbsp;./busybox tar czvf data.tar.gz /data&lt;br /&gt;tar: removing leading '/' from member names&lt;br /&gt;data/&lt;br /&gt;data/tombstones/&lt;br /&gt;data/tombstones/tombstone_05&lt;br /&gt;data/tombstones/tombstone_00&lt;br /&gt;...&lt;br /&gt;data/lost+found/&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;b&gt;&lt;u&gt;Wrapping Things Up&lt;/u&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;When you've acquired the images/files that you seek, you need to get the data from the SD card to your workstation. &amp;nbsp;The easiest way is to turn off the phone and remove the card, the read it directly. &amp;nbsp;But you can pull the files from the card with adb, too. &amp;nbsp;You might want to do this if you need the data quickly, or to free up space on a smaller card for more images/archives. &amp;nbsp;To pull the files from the card to your workstation:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Use "adb pull" to move files from the SD installed in the phone to your workstation. &amp;nbsp;The command is run in a terminal on your workstation, NOT in the adb shell. &amp;nbsp;You can exit adb shell or open a new terminal window if you want to remain in the adb shell environment.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# exit &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- exits the busybox shell&lt;/span&gt;&lt;br /&gt;# exit &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- exits the adb shell to your terminal&lt;/span&gt;&lt;br /&gt;# adb pull /mnt/sdcard/cache.tar.gz /some/evidence/directory/&lt;br /&gt;# adb pull /mnt/sdcard/cache.dd /some/evidence/directory/&lt;br /&gt;...&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;When you are done pulling all the files you plan to transfer, remove the exploit from the install directory.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb shell rm /data/local/tmp/ratc.bin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Note: I chose this method of removing the exploit to demonstrate that the adb shell command can pass arguments to the adbd daemon on the phone without dropping into the shell. &amp;nbsp;I hope to use this ability to script the process we've been discussing.&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reboot the phone to kill the exploit and the phone is back in its pre-exam condition.&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;I'll leave the examination of the data you've recovered to you for now. &amp;nbsp;Maybe in a future post, I'll highlight some key files and how to process them (hint: mmssms.db contains text messaging, and cache.cell contains GPS data).&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-8192926084227898813?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/8192926084227898813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/defeating-droid-let-pillaging-begin.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8192926084227898813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8192926084227898813'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/defeating-droid-let-pillaging-begin.html' title='Defeating the Droid: Let the Pillaging Begin'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6558630779852862956</id><published>2011-06-03T13:18:00.000-07:00</published><updated>2011-06-03T13:37:59.858-07:00</updated><title type='text'>Defeating the Droid</title><content type='html'>I received a Motorola Droid 2 for analysis. &amp;nbsp;Processing the 16gb SD card was trivial as it is removable and subject to traditional imaging techniques. &amp;nbsp;But what of the internal phone memory? &amp;nbsp;After a lot of researching, I found there just wasn't a lot of information out there for forensic examiners. &amp;nbsp;I settled on a procedure called "rooting" which I'll document here. &lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Caveat 1&lt;/u&gt;: I wouldn't call this a "forensically sound" approach, per se, in that it makes changes to the phone. But I wouldn't say this leads to automatic disqualification of the evidence, either. &amp;nbsp;The technique was a necessary approach under the circumstance of current technology to meet the needs of my investigation. &amp;nbsp;The techniques and their impacts on the evidence can be explained and therefore may be admissible. &amp;nbsp;Your mileage may vary.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Caveat 2&lt;/u&gt;: The "rooting" process I describe here borrows from common techniques found on the Web that were developed by users of Android phones to gain full access to their devices. &amp;nbsp;But, the process described here differs significantly. Do not follow the user-oriented tutorials for rooting devices as they require you to install files unnecessary to forensics and make significant changes to the device, sometimes erasing user data!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Preparing the Phone&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Luckily, the phone I received was unlocked. I accessed the settings, disabled wireless networking, and placed the device in airplane mode to minimize changes and prevent remote access. I also disabled the password and automatic screen locking, and I determined the OS version (v2.2.2) through "Settings | About Phone", in this case 2.2.2. Two other settings are required: set the device to enter USB debugging mode when connected by USB and set it to stay awake while charging &amp;nbsp;through "Settings | Applications | Development."&lt;br /&gt;&lt;br /&gt;I have since learned that the technique I describe below will work on locked Andriod phones that have USB debugging enabled. &amp;nbsp;Working with another investigator, we rooted a locked Virgin Mobile LG Optimus and a locked HTC Incredible.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Preparing the Workstation&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I downloaded and installed the &lt;a href="http://developer.android.com/sdk/index.html"&gt;Android SDK&lt;/a&gt;&amp;nbsp;which includes the very useful Android Debug Bridge (adb) utility. &amp;nbsp;Installation of the Linux version&amp;nbsp;involves extracting the compressed archive (tar) and copying to a directory of your choice. &amp;nbsp;In my case, I chose '/usr/local'.&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# tar xzvf android-sdk_r11-linux_x86.tgz.tar -C /usr/local&lt;/span&gt;&lt;/blockquote&gt;Update the SDK to ensure you have the latest tools&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# ./usr/local/android-sdk-linux_x86/tools/android update sdk&lt;/span&gt;&lt;/blockquote&gt;Creating a link to adb somewhere in your path, such as /usr/local/bin makes running the utility easy and is recommended. &amp;nbsp;I created a link with the following command:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# ln -s /usr/local/android-sdk-linux_x86/platform-tools/adb /usr/local/bin/adb&lt;/span&gt;&lt;/blockquote&gt;&lt;b&gt;&lt;u&gt;Working with the Android Debug Bridge&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;With the SDK installed and the device connected by USB cable, the command 'adb devices', run as root, will start the adb server and show the serial number of a USB-attached Android device. &amp;nbsp;If the serial number is represented by a series of question marks, kill the sever with 'adb kill-server' and restart with 'adb root'. &amp;nbsp;The Android version and phone model influence whether or not you can start the adbd daemon as root. I recommend attaching only one device at a time so that subsequent commands need not specify the device on which to operate. &amp;nbsp;Use 'adb help' to list all possible commands and a brief description of their use.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Default ADB Shell Access&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;There is limited access to the device file system by dropping into the adb shell with the command 'adb shell'. &amp;nbsp;This is true even if you are root when you start the adb server and if you start the adbd daemon with 'adb root'. &amp;nbsp;You'll note that you have the standard '$' user prompt. &amp;nbsp;In other words, when you launch the adb shell, you are dropped into in a shell console on the running phone with standard user privileges.&lt;br /&gt;&lt;br /&gt;The adb shell is an ASH shell with limited binary tool availability. &amp;nbsp;For example, there are no copy or find commands. &amp;nbsp;There is no inline command editing or shell history. &amp;nbsp;Your limited privileges prevent you from accessing the /data and /cache directories which contain the bulk of the user data you are likely seeking. &amp;nbsp;Other available adb commands (not part of adb shell), can be used to recursively copy files from the device to your local system (adb pull) or place local files into the Android file system (adb push), but your limited privileges still impede you.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Escalating&amp;nbsp;Permissions with Rageagainstthecage&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The solution is to "root" the device. &amp;nbsp;Rooting, in this case, means to escalate your privileges in the adb shell to super-user status. &amp;nbsp;I could not find a rooting method that prevented any changes to the phone's file system (the exploit has to be loaded into a partition on the phone), but &amp;nbsp;I settled on the small 5k 'rageagainstthecage' exploit, &amp;nbsp;which is an &lt;a href="http://intrepidusgroup.com/insight/2010/09/android-root-source-code-looking-at-the-c-skills/"&gt;adb setuid exhaustion attack&lt;/a&gt;. In a nutshell, the exploit crashes the adbd daemon on the phone and prevents it from&amp;nbsp;deescalating root privileges when it restarts. &amp;nbsp;I know of no 'trusted' exploits for forensics, and this seemed the soundest approach to minimize changes to the running operating system on the device.&lt;br /&gt;&lt;br /&gt;A variety of exploits can be downloaded from the &lt;a href="http://www.android-devices.org/2011/03/09/rooting-your-android-phone/"&gt;Android Devices Website&lt;/a&gt;, but it is not the only location for rooting information. &amp;nbsp;The &lt;a href="http://www.xda-developers.com/"&gt;xda-developers&lt;/a&gt; website is another good resource. &amp;nbsp;In the case of the Motorola Droid 2, I'll use the &lt;a href="http://stealth.openwall.net/xSports/RageAgainstTheCage.tgz"&gt;rageagainstthecage&lt;/a&gt; binary file from the developer, which includes the source code for review.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Installing and Running the Exploit&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The process of rooting is straight forward: &amp;nbsp;Push the file to the device, make it executable, and run. &amp;nbsp;The result is a crashed adbd daemon, that when restarted, allows the adb shell to start with root permissions.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Extract the the rageagainstthecage-arm5.bin bin from the tar file.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# tar xzvf RageAgainstTheCage.tgz.tar rageagainstthecage-arm5.bin&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;(optional) Rename rageaginstthecage-arm5.bin to something easy to type, like ratc.bin.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# mv&amp;nbsp;rageagainstthecage-arm5.bin ratc.bin&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Push the file to a user-accessible location on the phone where execution of files is permitted. &amp;nbsp;I'd prefer a different location than the /data partition, but so far this has been my best option.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb push ratc.bin /data/local/tmp/ratc.bin&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Drop into the shell, make the file executable, and run. &amp;nbsp;Note the prompt change after executing adb shell as root.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# adb shell &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- your root terminal&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;$&lt;/span&gt; chmod 0755 /data/local/tmp/ratc.bin &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- adb shell&lt;/span&gt;&lt;br /&gt;$ ./data/local/tmp/ratc.bin&lt;br /&gt;[*] CVE-2010-EASY Android local root exploit (C) 2010 by 743C&lt;br /&gt;&lt;br /&gt;[*] checking NPROC limit ...&lt;br /&gt;[+] RLIMIT_NPROC={1803, 1803}&lt;br /&gt;[*] Searching for adb ...&lt;br /&gt;[+] Found adb as PID 3323&lt;br /&gt;[*] Spawning children. Dont type anything and wait for reset!&lt;br /&gt;[*]&lt;br /&gt;...&lt;br /&gt;[*] adb connection will be reset. restart adb server on desktop and re-login.&lt;br /&gt;$&amp;nbsp;# &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- your root terminal again&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;You will be dumped out of the adb shell back into your terminal. &amp;nbsp;Be patient, as this can take a few moments. &amp;nbsp;The exploit is launching processes and creating a race condition to prevent the adb daemon from&amp;nbsp;deescalating&amp;nbsp;privileges on restart. &amp;nbsp;If you are not dumped from the shell, run the exploit again.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Finally, restart the adb shell (note the root prompt indicating you are now the root user on the device). &lt;u&gt;DO NOT&lt;/u&gt;&amp;nbsp;restart the adb server, as the last system message indicates. &amp;nbsp;It will restart on its own , if needed, when you issue the 'adb shell' command.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; # adb shell&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;#&lt;/span&gt;&lt;span class="Apple-style-span"&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&amp;lt;-- adb shell prompt&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;If you receive the "device not found" error when restarting the adb shell, wait a few moments and try again: then adbd daemon on the phone has not finished restarting.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;There, you've done it! You have rooted the device. &amp;nbsp;The root adb shell will remain until you restart the adbd daemon with 'adb kill-server' or by rebooting the phone. &amp;nbsp;The exploit will remain on the phone until you delete it in the adb shell with:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;# rm&amp;nbsp;/data/local/tmp/ratc.bin&lt;/span&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You are now ready to start copying partitions and/or logical files for your examination... almost. &amp;nbsp;You still lack the tools to copy files, (though not partitions), and copying whole partitions with dd, while possible, isn't as straight forward as it is with physical disks, the primary issue being the yaffs filesystem they contain. &amp;nbsp;Since this post has gotten quite long, I'll discuss those issues if future posts.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6558630779852862956?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6558630779852862956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/defeating-droid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6558630779852862956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6558630779852862956'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/defeating-droid.html' title='Defeating the Droid'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6523829495971589100</id><published>2011-06-02T22:58:00.000-07:00</published><updated>2011-07-22T11:33:12.971-07:00</updated><title type='text'>Decoding Google Chrome timestamps in SQLite databases</title><content type='html'>I had occasion to work with Google Chrome histories today. &amp;nbsp;The timestamp in the History SQLite databases look like unixepoch time at first glance, but they are not. However, the Chrome timestamps are 7 digits longer than unixepoch time.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Unixepoch&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Unixepoch time is the number of seconds elapsed since 01/01/1970 00:00:00. It can be converted in a SQLite statement with the datetime() function thusly:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite&gt; SELECT datetime(time, 'unixepoch', 'localtime') AS time FROM table;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;"&lt;i&gt;time&lt;/i&gt;" is the name of the field containing the (currently) 10-digit date string, e.g., "1307078210", and "&lt;i&gt;table&lt;/i&gt;" is the name of the table containing the time field.&amp;nbsp;&amp;nbsp;The "AS time" displays the column label as "time". Without it, the column takes the full datetime() function as the column name which is a bit ugly and confusing to recipients of the data.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;PRTime&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The extra seven digits in the Chrome timestamp brought to mind Firefox PRTime. PRTime is the number of microseconds since 01/01/1970 00:00:00. The timestamp needs to be converted to unixepoch format before it can be converted to local time through the SQLite datetime() function. This can be done by dividing the value by one-million. In SQLite, this looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite&gt; SELECT datetime(time/1000000, 'unixepoch', 'localtime') AS time FROM table;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Chrome Time (Webkit Format)&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If there is an official name for Chrome time, I don't know it. &amp;nbsp;&lt;i&gt;EDIT: I have learned the name for the Chrome's format is Webkit format). &amp;nbsp;&lt;/i&gt;What I do know, is that Chrome time IS NOT the same as PRTime. &amp;nbsp;Though it is also a microsecond calculation, its base time is 01/01/1601 00:00:00. To calculate local time, Chrome time has to be converted to seconds by dividing by one-million, and then the seconds differential between 01/01/1601&amp;nbsp;00:00:00 and&amp;nbsp;01/01/1970 00:00:00 must be subtracted. But how do we figure that out?&lt;br /&gt;&lt;br /&gt;Two ways, as it turns out. &amp;nbsp;With SQLite itself, or with the Unix date command. &amp;nbsp;This is how:&lt;br /&gt;&lt;br /&gt;SQLITE:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite&gt; SELECT strftime('%s', '1601-01-01 00:00:00');&lt;br /&gt;-11644473600&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;DATE:&lt;br /&gt;&lt;pre class="brush:bash;gutter:false"&gt;$ date +%s -d 'Jan 1 00:00:00 UTC 1601'&lt;br /&gt;-11644473600&lt;/pre&gt;&lt;br /&gt;In both commands above, the "%s" represents unixepoch time. &amp;nbsp;The commands calculate the number of seconds between unixepoch time (1970) and the subsequent date (Chrome time base, 1601). &amp;nbsp;Note that the seconds are negative. &amp;nbsp;Of course, this is because you have to count backwards from 1970 to 1601! &amp;nbsp;With this information, we can convert Chrome time in SQLite like this:&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;sqlite&gt; SELECT datetime((time/1000000)-11644473600, 'unixepoch', 'localtime') AS time FROM table;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Unfortunately, there are more time formats out there than these. &amp;nbsp;You may recall I blogged about Apple's &lt;/span&gt;&lt;a href="http://linuxsleuthing.blogspot.com/2011/02/calculating-embedded-os-x-times.html"&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;Mac Absolute Time&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt; in February. &amp;nbsp;But, armed with this information, You should be able to convert the times formats I've discussed and possibly discover the solution to any others you might encounter.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6523829495971589100?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6523829495971589100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/decoding-google-chrome-timestamps-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6523829495971589100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6523829495971589100'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/06/decoding-google-chrome-timestamps-in.html' title='Decoding Google Chrome timestamps in SQLite databases'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-1758998350738755467</id><published>2011-05-19T23:28:00.000-07:00</published><updated>2011-05-19T23:28:25.008-07:00</updated><title type='text'>Open Source iPhone Exploits</title><content type='html'>There are numerous and costly--and closed source--methods for recovery data from the Apple iPhone, iPod Touch, and iPad. &amp;nbsp;If you are lucky enough to be part of Law Enforcement, then you have free access to &lt;a href="http://www.iphoneinsecurity.com/"&gt;Johnathan Zdziarski's tools&lt;/a&gt; and methodology (Thank you, Johnathan). &amp;nbsp;But what to do if you don't have the proprietary tools, or they just don't work on the version of iOS you encounter?&lt;br /&gt;&lt;br /&gt;Allow me to introduce the &lt;a href="http://www.libimobiledevice.org/"&gt;libimobiledevice&lt;/a&gt; project. &amp;nbsp;It is a library that communicates to the aforementioned Apple devices, with the addition of Apple TV devices, but does not use any proprietary libraries, nor does it require &lt;a href="http://en.wikipedia.org/wiki/IOS_jailbreaking"&gt;jailbreaking&lt;/a&gt; to accomplish its goals. &amp;nbsp; &amp;nbsp;I'll let the description on the project home page take over from here: libimobiledevie "allows other software to easily access the device's filesystem, retrieve information about the device and it's internals, backup/restore the device, manage SpringBoard® icons, manage installed applications, retrieve addressbook/calendars/notes and bookmarks and (using libgpod) synchronize music and video to the device."&lt;br /&gt;&lt;br /&gt;That said, it is not designed as a forensics tool. &amp;nbsp;I may be&amp;nbsp;characterizing&amp;nbsp;it wrongly, but in short, it brings iTunes-like capabilities to Linux. &amp;nbsp;It does not give full filesystem access to the device, just the media folder and sub folders. &amp;nbsp;This means you can access the Photos and videos taken with the device, as well as access the music catalog through your file browser. &amp;nbsp;But be careful--you have read/write access.&lt;br /&gt;&lt;br /&gt;Best practice requires that you disable automounting in your system to avoid changing data on the device when &amp;nbsp;you connect it to your system. &amp;nbsp;This can be done in a Gnome desktop by using gconf-editor to disable automounting in nautilus ( apps | nautilus | preferences | media_automount [uncheck] ). &amp;nbsp;It's a good idea to disable media_automount_open and enable media_autorun_never while you're at it. &amp;nbsp;You won't find your iPhone with fdisk when you connect it, which might leave you wondering just how in the world you're going to mount it? &lt;br /&gt;&lt;br /&gt;Libimobiledevice is&amp;nbsp;incorporated&amp;nbsp;into Ubuntu and Linux Mint Debian Edition (my preference) and uses the &lt;a href="http://en.wikipedia.org/wiki/GVFS"&gt;Gnome Virtual File System (GVFS)&lt;/a&gt; for mounting the Media folder of devices in the .gvfs/ folder of your home directory. &amp;nbsp;But you've disabled automounting, so you need another method that allows read-only mounting. &amp;nbsp;That's handled with ifuse, but you'll likely have to install it. &amp;nbsp;With ifuse, the device can be mount read-only in a location you specifiy. &amp;nbsp;The device is automatically identified unless you choose to identify the device by its UUID (only necessary if you have more than one device connected at a time). &amp;nbsp;You mount with "ifuse [options] location", such as "iphone -o ro /mnt/analysis". &amp;nbsp;If you happen to have a jailbroken device, then adding the '--root' parameter will give you full logical access to the user partition on the device.&lt;br /&gt;&lt;br /&gt;Mounting with ifuse, on a device that has not been jailbroken, gives access to the same to the device as libimobiledevice through GVFS, only with write protection. &amp;nbsp;Media files can be useful, as I indicated in &lt;a href="http://linuxsleuthing.blogspot.com/2011/04/iphone-songs-sing-like-jail-bird.html"&gt;an earlier post&lt;/a&gt;, but how does an investigator get to the meaty stuff, like SMS messages, call history, and the like?&lt;br /&gt;&lt;br /&gt;Well, there are tools that have been built to use the imobiledevice library, aptly called imobiledevice-utils in the Debian package management system. &amp;nbsp;The utilities consist of the following tools:&amp;nbsp;idevicebackup, ideviceimagemounter, idevicescreenshot,&amp;nbsp;ideviceenterrecovery, &amp;nbsp;ideviceinfo, idevicesyslog,&amp;nbsp;idevice_id, and idevicepair. &amp;nbsp;Of particular interest are ideviceinfo, and idevicebackup.&lt;br /&gt;&lt;br /&gt;The ideviceinfo tool displays data about the phone itself, including the device name, serial number, OS version, and phone number. &amp;nbsp;Even locked phones provide useful data, though not as robust as an unlocked phone. &amp;nbsp;The idevicebackup tool works like iTunes backup. &amp;nbsp;It creates a device backup in a location specified by the user. &amp;nbsp;idevicebackup2 is required for iOS 4.3. and above, but can only be obtained by building it from source, which is available through a link on the &lt;a href="http://www.libimobiledevice.org/"&gt;imobiledevice website&lt;/a&gt;. &amp;nbsp;The backup includes photographs, videos, and databases from the device, including SMS messages, call history, address book, etc!&lt;br /&gt;&lt;br /&gt;The files in an iPhone backup are renamed in hex and are referenced in two mbdb databases that index the original name, location and MAC times for the backup files. &amp;nbsp;The &lt;a href="http://stackoverflow.com/questions/3085153/how-to-parse-the-manifest-mbdb-file-in-an-ios-4-0-itunes-backup"&gt;mbdb_parse.py utility&lt;/a&gt; can be used to identify the files. &amp;nbsp;I am working to modify mbdb_parse.py to automate renaming of the files, but the standard output can be used like an ls -lh output. &amp;nbsp;The limitation of mbdb_parse.py is that it displays user/group values in hex and MAC times in unixepoch time. &amp;nbsp;I have been able to modify the program to allow me to rename the files into their original names, but the program is not ready for release as yet.&lt;br /&gt;&lt;br /&gt;I will cover forensic processing of the backup in a later post.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-1758998350738755467?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/1758998350738755467/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/05/open-source-iphone-exploits.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1758998350738755467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1758998350738755467'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/05/open-source-iphone-exploits.html' title='Open Source iPhone Exploits'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-1732865644700439310</id><published>2011-05-04T23:06:00.000-07:00</published><updated>2011-05-04T23:06:54.881-07:00</updated><title type='text'>iPhone Forensics Tools</title><content type='html'>I've written a couple of articles about my experience with iPhone data ("&lt;a href="http://linuxsleuthing.blogspot.com/2011/04/iphone-songs-sing-like-jail-bird.html"&gt;iPhone Sings like a Jailbird&lt;/a&gt;", "&lt;a href="http://linuxsleuthing.blogspot.com/2011/02/recovering-data-from-deleted-sql.html"&gt;Recovering Data from Deleted SQL records&lt;/a&gt;", and "&lt;a href="http://linuxsleuthing.blogspot.com/2011/02/parsing-iphone-sms-database.html"&gt;Parsing the iPhone SMS Database&lt;/a&gt;"), and recently I have been helping others with some iPhone data recovery. &amp;nbsp;Those experiences have led me to create a few simple iPhone forensics tools. &amp;nbsp;I'll list them in name order and briefly describe them:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;iphone_ab&lt;/b&gt;&lt;br /&gt;iphone_ab is a tool to parse the iPhone address book, which is stored in a SQLite file called AddressBook.db. &amp;nbsp;The tool links two tables to produce a simple output containing first and last name, phone number/email address, record creation date and record modification date. &amp;nbsp;There is much more data that can be mined from the database, but this is the basic data that interest most investigators.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;iphone_ch&lt;/b&gt;&lt;br /&gt;iphone_ch is a tool to parse the iPhone call history, which is stored in a SQLite file called call_history.db. &amp;nbsp;The tool reads the 'call' table and reports the date, call type, phone number, and call duration of each record. &amp;nbsp;Unixepoch time is converted to local time and call flags are interpreted (Incoming, Outgoing, etc.).&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;iphone_cs&lt;/b&gt;&lt;br /&gt;iphone_cs is a tool to parse the iPhone consolidated.db, which is a SQLite file that stores gps data used by apps. &amp;nbsp;Experimentation shows that one table in particular, the CellLocationLocal table, records the location of the iPhone handset when it runs apps that use location data. &amp;nbsp;Don't think location data is restricted to mapping apps--I have seen dictionary apps that ask to use your location. &amp;nbsp;Now, why is that? &amp;nbsp;In a word: advertising. &amp;nbsp;iphone_cs will parse the CellLocation, CellLocationLocal, and WifiLocation tables for GPS data and allow the data to be formatted for mapping tools like &lt;a href="http://www.gpsbabel.org/"&gt;gpsbabel&lt;/a&gt; or websites like &lt;a href="http://gpsvisualizer.com/"&gt;GPSVisualizer.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;iphone_images&lt;/b&gt;&lt;br /&gt;iphone_images is a tool that will search a path for images and videos (identified by mime type) and provide the EXIF data by use of the excellent &lt;a href="http://www.sno.phy.queensu.ca/~phil/exiftool/"&gt;exiftool&lt;/a&gt;. &amp;nbsp;Alternatively, files containing GPS data can be parsed to export data suitable for mapping. &amp;nbsp;Finally, videos purchased through the Apple Store can be sifted for the Apple Store user name and real name of the purchaser.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;iphone_music&lt;/b&gt;&lt;br /&gt;iphone_music is a tool that will search a path for audio files, particularly those in the 'iTunes Control/' folder (though not restricted to these files). &amp;nbsp;iTunes uses random filenames for music it transfers to an iPhone or iPod. &amp;nbsp;The tool, at its most basic level, reveals the song name, album, and artist to help owners identify their device by its content (think recovered stolen device). &amp;nbsp;The tool can also produce rich metadata, again, thanks to exiftool, as well as single out those songs purchased through the Apple Store and report Apple Store credentials like iphone_images.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;iphone_sms&lt;/b&gt;&lt;br /&gt;iphone_sms is a tool to parse the iPhone SMS database, located in a file called sms.db. &amp;nbsp;The tool reads the message table and reports the date, message type (sent, received, etc.), phone number, and text message in each record. &amp;nbsp;Unixepoch time is converted to local time and message flags are interpreted (Sent SMS/MMS, Received MMS , etc.).&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;All of the tools, written for &lt;a href="http://en.wikipedia.org/wiki/Bash_(Unix_shell)"&gt;BASH&lt;/a&gt;, attempt to follow the Unix principal of make one tool to do one thing and do it well. &amp;nbsp;They each have a variety of options that can be read by invoking help, e.g., 'iphone_sms -h'. &amp;nbsp;The database tools do not find the target database for you, since your iPhone data may come from a variety of sources (iPhone images, backups, etc.). &amp;nbsp;Output for all files is to stdout (the screen) but may be redirected to a file. &amp;nbsp;For example, to redirect the mapping data from iphone images and videos, the command 'iphone_images -m /private/var/mobile/Media &amp;gt; images_gps.txt' could be used.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I hope you have success with the tools. &amp;nbsp;Please contact me with any errors you detect and/or feature suggestions you might have. &amp;nbsp;I am already contemplating an "export" function to, for example, export the images to a directory that were the source of the GPS data the mapping output from iphone_images.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;You can download iphone_tools &lt;a href="http://sites.google.com/site/slosleuth/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-1732865644700439310?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/1732865644700439310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/05/iphone-forensics-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1732865644700439310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1732865644700439310'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/05/iphone-forensics-tools.html' title='iPhone Forensics Tools'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4970795344277498959</id><published>2011-04-28T21:51:00.000-07:00</published><updated>2011-04-28T21:51:28.834-07:00</updated><title type='text'>iPhone songs sing like a jail bird!</title><content type='html'>I received an iPhone yesterday that was suspected to be stolen. &amp;nbsp;Proving the suspicion was another matter. &amp;nbsp;The was found to have data (photos, mostly) only related to the suspected thief, but the investigator noted that the phones statistics had been reset and suspected the original owners data was deleted. &amp;nbsp;He brought me the phone for examination to prove his hunch. &amp;nbsp;The phone was not reported stolen anywhere that we could find.&lt;br /&gt;&lt;br /&gt;My first thought was the SIM card. &amp;nbsp;Problem was, the phone had no service, and the SIM card only revealed the assigned phone number and carrier. &amp;nbsp;While that might lead to the owner, it would be a while after the drafting and execution of a search warrant. &amp;nbsp;In fact, it could have been weeks before that got us anywhere.&lt;br /&gt;&lt;br /&gt;I obtained some basic phone data with the libimobiledevice-utils package. &amp;nbsp;I quickly learned that the iPhone 3G was running the 4.3.1 iOS. &amp;nbsp;I also quickly discovered that the libimobiledevice package (v1.04) in Debian Testing was not going to help me too much because of a bug. &amp;nbsp;Luckily, it was a known bug, and compiling the latestest stable package (v1.06 at this writing) from &lt;a href="http://libimobiledevice.org/"&gt;libimobiledevice.org&lt;/a&gt;&amp;nbsp;fixed me right up.&lt;br /&gt;&lt;br /&gt;The iPhone tools I use are not yet equipped to obtain the user partition of iOS 4.3 or higher. &amp;nbsp;They cannot image unallocated space in iOS 4 in any event. &amp;nbsp;I have successfully used idevicebackup (one of the libimobiledevice-utils) to backup and iphone and exam the sms, contacts, and other databases, but I could not successfully complete this task because the iPhone refused the backup request (I later did this in Windows with iTunes, however).&lt;br /&gt;&lt;br /&gt;So, there I was without full user&amp;nbsp;partition&amp;nbsp;access, no means to recover deleted files, and that was suspected, and no backup of application databases that might lead to owner identification. &amp;nbsp;I could see photos, and music, and nothing more when I mounted the phone with ifuse. &amp;nbsp;The photos had already been ruled out as a possible source of original owner information. &amp;nbsp;That left the music.&lt;br /&gt;&lt;br /&gt;I knew from previous research that songs and videos purchased through iTunes contain the real name and iTunes username of the purchaser. &amp;nbsp;The username is most often the user's email address, in my experience. &amp;nbsp;The data is stored in the 'name' and 'apID' atoms of the mpeg-4 format. &amp;nbsp;You can learn more about atoms and the format specifications at the &lt;a href="http://atomicparsley.sourceforge.net/"&gt;AtomicParsley website&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I used the find command to locate the .m4p (music) and .m4v (video) files that are indicative of media purchased through iTunes. &amp;nbsp;Of the more that 3k of music files, I found about 50 that were .m4p format and contained three different but related usernames (same last name). &amp;nbsp;Not surprisingly, the names did not match the suspected thief. &amp;nbsp;Each username had an associated email address, but a I was able to cross reference the names with other records and find a burglary victim.&lt;br /&gt;&lt;br /&gt;So, while we are used to the performing artists singing their songs, forensic computer examiners need to keep in mind that iTunes songs sing themselves, providing purchaser real name and username/email address!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4970795344277498959?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4970795344277498959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/04/iphone-songs-sing-like-jail-bird.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4970795344277498959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4970795344277498959'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/04/iphone-songs-sing-like-jail-bird.html' title='iPhone songs sing like a jail bird!'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-8965716695143742575</id><published>2011-03-11T15:48:00.000-08:00</published><updated>2011-07-22T11:46:06.931-07:00</updated><title type='text'>More NSRL Talk</title><content type='html'>I've spent a bit more time study the NSRL problem. &amp;nbsp;It is a fantastic but unwieldy database of hash values that is under&amp;nbsp;utilized&amp;nbsp;(at least in my experience). &amp;nbsp;I spoke in &lt;a href="http://linuxsleuthing.blogspot.com/2011/03/taming-nsrl-hash-db-beast.html"&gt;my last post&lt;/a&gt;&amp;nbsp;about importing the NSRL database into SQLite so the data can be better managed. &amp;nbsp;I added at the end of the post that I had created a pair of shell scripts, '&lt;b&gt;getnsrl&lt;/b&gt;' and '&lt;b&gt;mknsrl&lt;/b&gt;' to automate SQLite creation.&lt;br /&gt;&lt;br /&gt;I am happy to report that I have extended &lt;b&gt;mknsrl&lt;/b&gt; to fully handle the NSRL database. &amp;nbsp;My first version only imported the file table which contains the hash values. &amp;nbsp;I thought, incorrectly, that this would be sufficient for generating has sets. &amp;nbsp;I had not fully understood the NSRL Reference Data Set (RDS) construction, which actually consists of five CSV files:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;NSRLFile.txt&lt;/li&gt;&lt;li&gt;NSRLMfg.txt&lt;/li&gt;&lt;li&gt;NSRLOS.txt&lt;/li&gt;&lt;li&gt;NSRLProd.txt&lt;/li&gt;&lt;li&gt;version.txt&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The NSRLFile.txt is broken into four parts that need to be concatenated together. &amp;nbsp;Currently, this database contains over 62 million lines, far exceeding the capabilities of the spreadsheet programs for which it is formatted. &amp;nbsp;The database consists of 'known' files, not be confused with 'known good' files. &amp;nbsp;The database contains hash values for well know hacker programs, for example, and eliminating them through hashing may be problematic to the investigation. &amp;nbsp;There needed to be a way to export specific hash sets from the RDS for the data to be truly useful.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;getnsrl&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I wrote &lt;b&gt;getnsrl&lt;/b&gt; to make processing the four iso files containing the NSRL RDS easy. &amp;nbsp;The files must be mounted, and the database files extracted from a zip file. &amp;nbsp;&lt;b&gt;getnsrl&lt;/b&gt;&amp;nbsp;does this automatically, appending the names of the NSRLFile.txt CSV files to distinguish them and prevent overwriting. &amp;nbsp;On my system, this takes about four minutes. &amp;nbsp;The user need only put the iso files in a common directory (not required, but easier on the fingers) and issue 'getnsrl RDS*'. &amp;nbsp;The tool provides feedback and start/stop times.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;mknsrl&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;I wrote &lt;b&gt;mknsrl&lt;/b&gt; to allow for easy importation of the CSV files to a standalone SQLite database. &amp;nbsp;It creates virtual tables from the CSV files and then imports them into regular tables. &amp;nbsp;The NSRLFile.txt files are not (and should not be)&amp;nbsp;concatenated&amp;nbsp;before processing as this is done by &lt;b&gt;mknsrl&lt;/b&gt; while inserting the data into the database. &amp;nbsp;Though importing the files to a standard table is not required to use the CSV files with SQLite, I favored this approach because the database can be used independently of the CSV files. &amp;nbsp;I just found it simpler to manage, and it has the added benefit of indexing if the user so chooses, since indexing virtual tables is not possible with SQLite. &amp;nbsp;&lt;b&gt;mknsrl&lt;/b&gt;&amp;nbsp;reports its progress, start/stop times, and some database statistics. &amp;nbsp;It no longer does any indexing (as in the first version). &amp;nbsp;I leave that to the user to decide what to index if indexing is desired. &amp;nbsp;On my system, it took about 12 minutes to import the NSRL RDS data. &amp;nbsp;The statistical analysis can be commented out to save a few minutes, if desired.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Why use mknsrl?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The chief advantage of &lt;b&gt;mknsrl&lt;/b&gt; is database control. &amp;nbsp;Hash sets can be produced of any product in the database, which is not easy to do with the traditional methods for handling the RDS data. &amp;nbsp;NSRL has recommended that the four NSRLFile.txt be concatenated and then reduced to uniq hash values, leaving about 18 million records. &amp;nbsp;The problem is, you can't reliably know the source of the file this way, and you may hash out a program file of interest.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;mknsrl&lt;/b&gt; allows any hash set or group of hash sets to be extracted from the database with a sqlite query in the following form:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;$ sqlite3 -csv -header nsrl.db "select * from file where [expression];"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;I used the following expression to create a hash set of all "Windows" operating systems in about 5 minutes (note the nested SELECT statement that makes this possible):&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush:sql;gutter:false"&gt;$ sqlite3 -csv -header nsrl.db "select * from file where opsystemcode in (select opsystemcode from os where opsystemname like '%Windows%'"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Your ability to create hash sets is limited only by your ability to craft SQLite queries.&lt;br /&gt;&lt;br /&gt;If you would like to look at or use 'getnsrl' or 'mknsrl', you can find them at&amp;nbsp;&lt;a href="https://sites.google.com/site/slosleuth/"&gt;https://sites.google.com/site/slosleuth/&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-8965716695143742575?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/8965716695143742575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/03/more-nsrl-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8965716695143742575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8965716695143742575'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/03/more-nsrl-talk.html' title='More NSRL Talk'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4383525238635645981</id><published>2011-03-08T13:29:00.000-08:00</published><updated>2011-03-09T17:18:21.352-08:00</updated><title type='text'>Taming the NSRL Hash DB Beast</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: large;"&gt;Background&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've been trying to extend Sleuthkit in a variety of ways, such as by adding a table to the Sleuthit databese to capture file/mime types and improve strings extraction over that of the traditional 'blkls | strings &amp;gt; file' variety. &amp;nbsp;I came to the realization that elimination of files through hashing could speed these processes. &amp;nbsp;This is not a new concept to me or anyone else in data forensics, but I do believe hash elimination is under used. &amp;nbsp;I think this is due in large part to the unwieldy size of the&lt;a href="http://www.nsrl.nist.gov/"&gt; National Software Reference Library&lt;/a&gt;&amp;nbsp;(NSRL) hash database.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;The Problem&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As of January 2011, The NSRL data is distributed in 4 .iso files and contains a whopping &amp;nbsp;62,294,036 file entries. &amp;nbsp;The NSRL tries to help you manage the data volume by directing you to concatenate the NRSLFile.txt files (each&amp;nbsp;containing over 4.7 million rows)&amp;nbsp;found in each .iso and then export only rows with unique hash values. &amp;nbsp;Such an action reduces the total number of rows to a paltry 18,840,521. However, the unique operation (easily performed with 'uniq' on the command line) hampers the ability of knowing the application or operating system from which the file came.&lt;br /&gt;&lt;br /&gt;Size is not the only difficulty, however. &amp;nbsp;After all, in most cases, large size just means longer processing time. &amp;nbsp;But the CSV format of the database is a major obstacle. &amp;nbsp;The field separator used in the database is the comma (','). &amp;nbsp;But, many of the filenames listed in the db contain commas, and while, text fields are quoted, numeric fields are not.&amp;nbsp;&amp;nbsp;These conditions are not an obstacle for spread sheets, but keep in mind that OpenOffice Calc can handle only 1,000,000 rows. &amp;nbsp;And, these conditions make it difficult to work with traditional command line text tools like&amp;nbsp;'cut', 'sed', and 'awk'.&lt;br /&gt;&lt;br /&gt;Ideally, it would be best to have the NSRL db in a database like &lt;a href="http://www.sqlite.org/index.html"&gt;SQLite&lt;/a&gt;, where hash sets could be created based on products and operating systems. &amp;nbsp;In this way, one could easily export a hash set for Windows XP if that was the type of system being investigated. &amp;nbsp;However, &lt;a href="http://www.sqlite.org/cvstrac/wiki?p=ImportingFiles"&gt;SQLite splits on all field separators&lt;/a&gt; it encounters regardless of what comes before them (meaning they cannot be escaped). &amp;nbsp;Therefore, trying to import the NSRLFile.txt data fails because there are filenames with commas in them.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;The Solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I am happy to report that there is a solution to the problem with SQLite, however. &amp;nbsp;A &lt;a href="http://www.sqlite.org/cvstrac/attach_get/607/csvfile.zip"&gt;CSV module&lt;/a&gt; has been written to overcome this difficulty. &amp;nbsp;It allows SQLite to query a CSV file directly Using the module is not immediately apparent, so I document the process here:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Decompress the csvfile.zip containing the module source code.&lt;/li&gt;&lt;li&gt;Change to the csvfile/ directory and issue the 'make' command. &amp;nbsp;If you get an error, it is probably because you don't have the SQLite headers installed (libsqlite3-dev package in Debian/Ubuntu).&lt;/li&gt;&lt;li&gt;Copy the resulting virtcsv.so module to somewhere common, like /usr/local/lib because you will need to load the module each time you query the database you create.&lt;/li&gt;&lt;li&gt;Create a new database with 'sqlite3 nrsl.db'.&lt;/li&gt;&lt;li&gt;Load the CSV module at the SQLite prompt with '.load /usr/local/lib/virtcsv.so'&lt;/li&gt;&lt;li&gt;Create a virtual table to connect to the NSRLFile.txt at the SQLite prompt with 'CREATE VIRTUAL TABLE hashes USING CSVFILE(NSRLFile.txt, CP1252, ',', '"');' where:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;hashes is the table name you are creating&lt;/li&gt;&lt;li&gt;NSRLFile.txt is the CSV file you are attaching&lt;/li&gt;&lt;li&gt;CP1252 is the code page Windows Latin 1 (default)&lt;/li&gt;&lt;li&gt;, (comma) is the field separator in the CSV file (default is ';' [semicolon])&lt;/li&gt;&lt;li&gt;" (double quote) is the string delimiter (default)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;View a sample of the data with 'select * from hashes limit 10;'&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The process above shows the process for importing one file. &amp;nbsp;The fact of the matter is, that if you&amp;nbsp;concatenate the four NSRLFile.txt files provided by the NSRL, the file is too large for SQLite to handle. &amp;nbsp;The files need to be imported to individual tables and queried together to produce hash sets. &amp;nbsp;Further, Indexes should be created to speed queries (&lt;b&gt;&lt;i&gt;Edit&lt;/i&gt;&lt;/b&gt;: &lt;i&gt;SQLite will not allow virtual tables to be indexed, so the data must be imported to regular table. &amp;nbsp;I have written a script to automate this, see below.&lt;/i&gt;). &amp;nbsp;I won't go into those process here, but a good online tutorial for using SQL can be found at &lt;a href="http://www.w3schools.com/sql/default.asp"&gt;W3Schools&lt;/a&gt;. &amp;nbsp;Keep in mind that SQL (shown at W3Schools) and SQLite have some differences, but there are few inconsistencies for basic database query.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Edit&lt;/i&gt;&lt;/b&gt;: &lt;i&gt;&amp;nbsp;I've written two scripts to automate the process. &amp;nbsp;The first, '&lt;a href="https://sites.google.com/site/slosleuth/home/getnsrl?attredirects=0&amp;amp;d=1"&gt;getnsrl&lt;/a&gt;', will mount the four RDS .iso files and extract/rename the NSRLFile.txt csv files to ready them for processing. &amp;nbsp;The second, '&lt;a href="https://sites.google.com/site/slosleuth/home/mknsrl?attredirects=0&amp;amp;d=1"&gt;mknsrl&lt;/a&gt;', will create virtual tables from each csv file and import them into a 'hashes' table. &amp;nbsp;It will also index the table based on the operating system the files come from to speed searches and hash table exports.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4383525238635645981?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4383525238635645981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/03/taming-nsrl-hash-db-beast.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4383525238635645981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4383525238635645981'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/03/taming-nsrl-hash-db-beast.html' title='Taming the NSRL Hash DB Beast'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-1715488496002005552</id><published>2011-02-21T16:48:00.000-08:00</published><updated>2011-05-26T21:37:54.086-07:00</updated><title type='text'>"Tracking" Down Credit Card Dumps</title><content type='html'>I have been examining numerous computers and media cards to support fraud investigations in the past year. &amp;nbsp;One group of thieves has been installing skimmers (devices that record magnetic stripe data) in the magnetic stripe readers on doors of certain banking institutions that limit access to their ATMs after hours. &amp;nbsp;Then the thieves install micro video cameras in the light fixtures of the ATMs to capture the users' pin codes. &amp;nbsp;The thieves later match the recorded pin code to the skimmed account number at the door, encode new cards, and pillage bank accounts by getting cash at another ATM location.&lt;br /&gt;&lt;br /&gt;It is not difficult to find the ATM videos on the media cards from the cameras or on the computer hard drives. &amp;nbsp;The credit card/ATM card numbers can be bit tougher, however. &amp;nbsp;Searching for 16 digit numbers in a Windows computer will yield a huge volume of false hits. &amp;nbsp;And, if the operation has been running for a while, many of the account numbers will be deleted. &amp;nbsp; Searching unallocated space is necessary to be thorough and to ensure your suspects' get the full reward of their&amp;nbsp;illicit&amp;nbsp;activities. &lt;br /&gt;&lt;br /&gt;All of the skimmers I have encountered are serial devices that communicate with software made for Windows-based computers by means of a &lt;a href="http://www.prolific.com.tw/eng/products.asp?id=59"&gt;USB-to-serial cable&lt;/a&gt;. &amp;nbsp;The cables do not look dramatically different than a standard USB cable, but they contain a chip that bridges the two protocols. &amp;nbsp;In a Windows computer, a USB driver for the cable must be installed before the program can communicate with the device.&lt;br /&gt;&lt;br /&gt;The applications that communicate with the skimmer devices write the data to disk differently--some create a database while others use text files. &amp;nbsp;In my experience, both formats contain the complete track 1 and/or track 2 data. &amp;nbsp;Magnetic stripes contain three tracks, the first two in common use and encoded with &lt;a href="http://en.wikipedia.org/wiki/Magnetic_stripe"&gt;particular standards&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Track 1 (IATA)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Track 1, known as "International Air Transport Association" format, has alphanumeric data. &amp;nbsp;It takes on the following format (from &lt;a href="http://en.wikipedia.org/wiki/Magnetic_stripe#Financial_cards"&gt;wikipedia&lt;/a&gt;):&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;"&gt;&lt;b&gt;Track 1&lt;/b&gt;, Format B:&lt;/div&gt;&lt;ul style="line-height: 1.5em; list-style-image: url(data:image/png; list-style-type: square; margin-bottom: 0.5em; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Start sentinel&lt;/b&gt;&amp;nbsp;— one character (generally '%')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Format code="B"&lt;/b&gt;&amp;nbsp;— one character (alpha only)&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Primary account number&lt;/b&gt;&amp;nbsp;(PAN)&amp;nbsp;— up to 19 characters. Usually, but not always, matches the&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Credit_card_number" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="Credit card number"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;credit card number&lt;/span&gt;&lt;/a&gt;&amp;nbsp;printed on the front of the card.&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Field Separator&lt;/b&gt;&amp;nbsp;— one character (generally '^')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Name&lt;/b&gt;&amp;nbsp;— two to 26 characters&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Field Separator&lt;/b&gt;&amp;nbsp;— one character (generally '^')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Expiration date&lt;/b&gt;&amp;nbsp;— four characters in the form YYMM.&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Service code&lt;/b&gt;&amp;nbsp;— three characters&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Discretionary data&lt;/b&gt;&amp;nbsp;— may include Pin Verification Key Indicator (PVKI, 1 character), PIN Verification Value (PVV, 4 characters),&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Card_Verification_Value#CVC_.2F_CVV" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="Card Verification Value"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;Card Verification Value or Card Verification Code&lt;/span&gt;&lt;/a&gt;&amp;nbsp;(CVV or CVK, 3 characters)&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;End sentinel&lt;/b&gt;&amp;nbsp;— one character (generally '?')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Longitudinal redundancy check&lt;/b&gt;&amp;nbsp;(&lt;a href="http://en.wikipedia.org/wiki/Longitudinal_redundancy_check" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="Longitudinal redundancy check"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;LRC&lt;/span&gt;&lt;/a&gt;)&amp;nbsp;— it is one character and a validity character calculated from other data on the track. Most reader devices do not return this value when the card is swiped to the presentation layer, and use it only to verify the input internally to the reader.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="line-height: 24px;"&gt;Targeting track 1 data in a grep search is very simple:&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ grep -E ^'%.[0-9]{16,19}\^' &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;file&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Track 2 (ABA)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Track 2, known as the "American Banking Association" format, contains only numeric data.&amp;nbsp;&amp;nbsp;It takes on the following format (from &lt;a href="http://en.wikipedia.org/wiki/Magnetic_stripe#Financial_cards"&gt;wikipedia&lt;/a&gt;):&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: sans-serif; font-size: 13px; line-height: 19px;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="line-height: 1.5em; margin-bottom: 0.5em; margin-left: 0px; margin-right: 0px; margin-top: 0.4em;"&gt;&lt;b&gt;Track 2&lt;/b&gt;: This format was developed by the banking industry (ABA). This track is written with a 5-bit scheme (4 data bits + 1 parity), which allows for sixteen possible characters, which are the numbers 0-9, plus the six characters&amp;nbsp;&lt;code style="background-color: #f9f9f9; font-family: monospace, 'Courier New';"&gt;&amp;nbsp;:&amp;nbsp;; &amp;lt; = &amp;gt;&amp;nbsp;?&amp;nbsp;&lt;/code&gt;. The selection of six punctuation symbols may seem odd, but in fact the sixteen codes simply map to the&amp;nbsp;&lt;a href="http://en.wikipedia.org/wiki/ASCII" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="ASCII"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;ASCII&lt;/span&gt;&lt;/a&gt;&amp;nbsp;range 0x30 through 0x3f, which defines ten digit characters plus those six symbols. The data format is as follows:&lt;/div&gt;&lt;ul style="line-height: 1.5em; list-style-image: url(data:image/png; list-style-type: square; margin-bottom: 0.5em; margin-left: 1.5em; margin-right: 0px; margin-top: 0.3em; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Start sentinel&lt;/b&gt;&amp;nbsp;— one character (generally ';')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Primary account number&lt;/b&gt;&amp;nbsp;(PAN)&amp;nbsp;— up to 19 characters. Usually, but not always, matches the&amp;nbsp;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Credit_card_number" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="Credit card number"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;credit card number&lt;/span&gt;&lt;/a&gt;&amp;nbsp;printed on the front of the card.&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Separator&lt;/b&gt;&amp;nbsp;— one char (generally '=')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Expiration date&lt;/b&gt;&amp;nbsp;— four characters in the form YYMM.&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Service code&lt;/b&gt;&amp;nbsp;— three digits. The first digit specifies the interchange rules, the second specifies authorisation processing and the third specifies the range of services&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Discretionary data&lt;/b&gt;&amp;nbsp;— as in track one&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;End sentinel&lt;/b&gt;&amp;nbsp;— one character (generally '?')&lt;/li&gt;&lt;li style="margin-bottom: 0.1em;"&gt;&lt;b&gt;Longitudinal redundancy check&lt;/b&gt;&amp;nbsp;(&lt;a href="http://en.wikipedia.org/wiki/Longitudinal_redundancy_check" style="background-attachment: initial; background-clip: initial; background-color: initial; background-image: none; background-origin: initial; text-decoration: none;" title="Longitudinal redundancy check"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;LRC&lt;/span&gt;&lt;/a&gt;)&amp;nbsp;— it is one character and a validity character calculated from other data on the track. Most reader devices do not return this value when the card is swiped to the presentation layer, and use it only to verify the input internally to the reader.&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Targeting track 2 data in a grep search is also straight forward, though a reading of the above standard suggests the following search can miss. &amp;nbsp;I haven't seen any different start sentinels or separators than those in the expression:&lt;/div&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ grep -E ^';[0-9]{16,19}=' &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;file&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;Though the preceding search has worked for me, the specifications for track 2 allow for other start sentinels and field separators. &amp;nbsp;A better but slower search would be:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ grep -e ^'[:;&amp;lt;=&amp;gt;?][0-9]{16,19}[:;&amp;lt;=&amp;gt;?]'&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Tracking Down Both Tracks at Once&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I composed the following search to track down both tracks, and display the date and time of the swipe typically captured by the skimmer device. &amp;nbsp;The "-B1" argument shows one line of data before the hit, which is where the date and time are recorded.&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$&amp;nbsp;grep -E -B1 ^'%.[0-9]{16,19}\^|;[0-9]{16,19}=' &lt;/span&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;file&lt;/span&gt;&lt;/i&gt;&lt;/blockquote&gt;You may have noticed the caret ("^") preceding the single quoted search in each of the grep expressions. &amp;nbsp;It requires the expression to be matched at the beginning of a line of data. &amp;nbsp;This is a search optimization. &amp;nbsp;I will now demonstrate two additional optimizations, one for searching allocated files, and the other for unallocated space (using the the sleuthkit tool "blkls"):&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;Searching mounted file systems&lt;/b&gt; (find files, export 7-bit strings, grep for track data):&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ find . -type f | while read i; do strings "$i" |&amp;nbsp;&amp;nbsp;grep -E -B1 -H --label="$i" ^'%.[0-9]{16,19}\^|;[0-9]{16,19}='; done&lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;b&gt;Searching unallocated space of a forensic image&lt;/b&gt; (export unallocated, filter out 7-bit strings showing offset, grep for track data)&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ blkls -o63 image.dd |&amp;nbsp;strings -td &amp;nbsp;| &amp;nbsp;grep -E -B1 ^'%.[0-9]{16,19}\^|;[0-9]{16,19}='&lt;/span&gt;&lt;/blockquote&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-1715488496002005552?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/1715488496002005552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/tracking-down-credit-card-dumps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1715488496002005552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/1715488496002005552'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/tracking-down-credit-card-dumps.html' title='&quot;Tracking&quot; Down Credit Card Dumps'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-8485530922960506612</id><published>2011-02-21T12:08:00.000-08:00</published><updated>2011-02-21T12:08:57.038-08:00</updated><title type='text'>Difficult Disk Imaging</title><content type='html'>In the past few weeks, I've had the opportunity to make forensic disk images of what one might call "non-standard" devices. &amp;nbsp;The devices were a Lenovo Thinkstation D20, an Acer Netbook, and an MacBook Air.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Lenovo Thinkstation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Lenovo presented a few problems. &amp;nbsp;First, it was seized and disassembled by non-computer-forensics professionals. &amp;nbsp;Translated: the drives were removed and not marked as to their bays or cabling. &amp;nbsp;Two drives were identical in size and the third was over three times larger. &amp;nbsp;All were were SAS (Serial Attached SCSI) drives which have non-standard connectors. &amp;nbsp;I had no connectors to remove the drives and image them individually (though cannibalization from the Lenovo was possible), and the computer specs suggested that there was a raid array on the two drives of matching size.&lt;br /&gt;&lt;br /&gt;What did I do? &amp;nbsp;I decided to use&amp;nbsp;&lt;a href="http://www.caine-live.net/"&gt;CAINE, a forensic boot disc&lt;/a&gt;, and an external hard drive. &amp;nbsp;CAINE would allow me to use the Lenovo for the specialized connectors needed for the SAS drives, and allow the hardware controller on the motherboard to&amp;nbsp;reassemble RAID array. &lt;br /&gt;&lt;br /&gt;The first step was to ensure I could boot the system with CAINE. &amp;nbsp;I was unable to boot from CD-ROM using the Lenovo's optical drive (which was unusual, to be sure) but I was able to get a USB version of CAINE booted. &amp;nbsp;I ensured, by adjusting the BIOS, that the USB would be the first device to boot. &lt;br /&gt;&lt;br /&gt;I&amp;nbsp;reinstalled and connect the drives, uncertain as to proper order, and booted CAINE. &amp;nbsp;Lucky for me, the on-board RAID controller detected the disks, reported there have been a change in the devices (the drive order), and then correctly reassembled the array. &amp;nbsp;CAINE reported two drives (the large disk, with the OS as it turns out), and the array. &amp;nbsp;I imaged both to the external drive with &lt;a href="http://guymager.sourceforge.net/"&gt;Guymager&lt;/a&gt;, a graphical front end for &lt;a href="http://sourceforge.net/projects/libewf/"&gt;libewf&lt;/a&gt;, an open sourced disk imaging library and toolset that produces images in expert witness format.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Acer Netbook&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The Acer Netbook was probably the least troublesome device, but did not lend itself well to disassembly. &amp;nbsp;Drive removal and hardware write-blocking are the ideals in forensic disk imaging. &amp;nbsp;However, this isn't always possible or convenient. &amp;nbsp;In the case of the Acer Netbook D255, there was no simple hard disk cover to remove. &amp;nbsp;Hard disk access appears to involve keyboard removal and an underlying cover, or seven case screws and an almost surgical&amp;nbsp;separation&amp;nbsp;of plastic catches. &amp;nbsp;Simply put, I didn't want to break the netbook, and I know that some storage devices have ROM chips that prevent them from being read when disconnected from the particular motherboard anyway.&lt;br /&gt;&lt;br /&gt;Again, CAINE to the rescue. &amp;nbsp;In the case of the ACER, there was no boot menu. &amp;nbsp;Changes to the BIOS were needed to ensure the USB device booted before the internal hard disk. &amp;nbsp;I tried to boot CAINE with an attached USB optical drive and with a USB version of CAINE. &amp;nbsp;The ACER did not register the USB optical drive in the BIOS, but the USB flash drive with CAINE was detected. &amp;nbsp;I booted from the USB, mounted a external hard drive, and imaged the drive with libewf.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;MacBook Air&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This was my first encounter with the MacBook Air. &amp;nbsp;Like the Acer, the construction of the device discouraged&amp;nbsp;disassembly. &amp;nbsp;I know that the Macs won't boot from a FAT formatted USB&amp;nbsp;because of the EFI boot schema. &amp;nbsp;However, booting from CD-ROM is possible by pressing and holding the "C" key immediately after powering the computer.&lt;br /&gt;&lt;br /&gt;I attached a USB CD-ROM drive because the AIR does not have an optical drive like other MacBooks. &amp;nbsp;I initially booted with CAINE, but the graphics drivers were incompatible with the Mac. &amp;nbsp;I attempted a graphics safe-mode boot and a text-only boot, but the same result: a garbled display that made proceeding impossible.&lt;br /&gt;&lt;br /&gt;I obtained a second forensic boot disk called &lt;a href="http://www.deftlinux.net/"&gt;DEFT&lt;/a&gt;. &amp;nbsp;It is a newer release than CAINE and I hoped it had updated graphics drivers that might overcome the problem. &amp;nbsp;The initial boot froze the system. &amp;nbsp;DEFT boots into text mode, and there are no other menu choices. &amp;nbsp;However, a series boot options at the bottom of the boot screen reminded me of some boot issues I have experienced in that past several versions of Ubuntu, on which both these forensics distributions are based. &amp;nbsp;I passed the "nomodeset" option in the F6 menu (curiously named "Password"), &amp;nbsp;and DEFT booted to a text screen. &amp;nbsp;I was also able to but to a GUI with the deft-gui command.&lt;br /&gt;&lt;br /&gt;With this in mind, I revisited CAINE. &amp;nbsp;I have a&amp;nbsp;preference&amp;nbsp;for CAINE because I understand how it works and it's&amp;nbsp;implementation&amp;nbsp;of write-blocking and have tested it. &amp;nbsp;The CAINE developer, &lt;a href="http://www.nannibassetti.com/"&gt;Nanni Bassetti&lt;/a&gt;, is ever-ready to help new users and explain his techniques. &amp;nbsp;I do not know how DEFT works and the information is not readily available, at least not in English. &amp;nbsp;This is not to disparage DEFT in anyway. &amp;nbsp;I'm just trying to highlight the fact that we must use tools that we understand and have tested. &lt;br /&gt;&lt;br /&gt;I again booted the MacBook Air with Caine. &amp;nbsp;At the boot screen, there is no obvious way to pass boot options. &amp;nbsp;However, pressing escape brings up a boot command line. &amp;nbsp;Pressing tab displays the boot options on the original boot screen. &amp;nbsp;I passed the arguments "textonly nomodeset" and CAINE successfully booted to a console. &amp;nbsp;At the console, I was able to start the GUI with "startx". &amp;nbsp;I accomplished imaging as before, with libewf and an external USB hard disk drive.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-8485530922960506612?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/8485530922960506612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/difficult-disk-imaging.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8485530922960506612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/8485530922960506612'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/difficult-disk-imaging.html' title='Difficult Disk Imaging'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-486974326196474889</id><published>2011-02-21T10:29:00.000-08:00</published><updated>2011-02-21T10:29:47.965-08:00</updated><title type='text'>Recovering Data from Deleted SQL records</title><content type='html'>I previously posted about &lt;a href="http://linuxsleuthing.blogspot.com/2011/02/parsing-iphone-sms-database.html"&gt;parsing iPhone SMS database&lt;/a&gt;. &amp;nbsp;The particular focus was the recovery of deleted messages. &amp;nbsp;I explained there are really two types of deleted messages in play here: records flagged as deleted within the database (thus not really deleted at all) and records deleted from the database itself. &amp;nbsp;I discuss the second type of deleted data recovery here.&lt;br /&gt;&lt;br /&gt;A SMS message deleted by the iPhone user is flagged in the database as "deleted." What happens next is not clear to me because I don't currently have an iPhone with which to experiment and I am not a sqlite expert. &amp;nbsp;I am uncertain if the database immediately deletes the record or if that occurs on sync (there are a couple of database "triggers" I don't yet fully understand). &amp;nbsp;If the data is only flagged deleted, then the record can be read with sqlite tools, which is what I discussing in &lt;a href="http://linuxsleuthing.blogspot.com/2011/02/parsing-iphone-sms-database.html"&gt;my previous post&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;But at some point a record can be deleted from the database, and as a result, it is not viewable with sqlite tools. So how do we find that data, and more importantly, how do we distinguish it from the non-deleted data? &amp;nbsp;It helps, at this point, to understand what happens to deleted records in sqlite. &amp;nbsp;When you delete a record, the space allocated to the record gets added to a free-list. &amp;nbsp;In other words, the size of the database doesn't get any smaller with record removal, but the space is marked as available for future records. This remains true until the database is "vacuumed." &lt;br /&gt;&lt;br /&gt;A database can have it's free space removed with the conveniently named "vacuum" command. &amp;nbsp;This rebuilds the entire database, removing the space in the free-list and shrinking the database. &amp;nbsp;Sqlite can be compiled to do this automatically, but fortunately for us, this is not currently the case for the sqlite compilation in iOS. &amp;nbsp;&lt;u&gt;We&lt;/u&gt; can use the vacuum command to help differentiate the data from the deleted records and non-deleted records, however.&lt;br /&gt;&lt;br /&gt;The method I used was simple and would apply to any sqlite database, not just the iPhone sms.db.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make a copy of the sms.db: 'cp sms.db sms.vac.db'&lt;/li&gt;&lt;li&gt;Vacuum the database with: 'sqlite3 sms.vac.db vacuum'&lt;/li&gt;&lt;li&gt;Examine the difference between the vacuumed file and the original file: 'diff sms.db sms.vac.db'&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;There are obvious shortcomings with such a method. &amp;nbsp;The foremost problem is that the data is unstructured, and this causes interpretation difficulties. &amp;nbsp;However, there is no other method of which I know that will produce structured data. &amp;nbsp;And unstructured data can still be useful in an investigation, if only to verify a statement or corroborate another piece of data.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am aware of one attempt at forensic recovery of deleted sqlite records. &amp;nbsp;It is specific to the Firefox browser history. &amp;nbsp;For more information, take a look &lt;a href="http://ff3hr.sourceforge.net/"&gt;here&lt;/a&gt;.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-486974326196474889?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/486974326196474889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/recovering-data-from-deleted-sql.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/486974326196474889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/486974326196474889'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/recovering-data-from-deleted-sql.html' title='Recovering Data from Deleted SQL records'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3348391629519418824</id><published>2011-02-21T09:27:00.000-08:00</published><updated>2011-06-02T22:50:24.752-07:00</updated><title type='text'>Calculating Embedded OS X Times</title><content type='html'>I recently examined a Macintosh computer where I needed to look at Internet History. &amp;nbsp;The only installed browser was Safari, and the history was stored in&amp;nbsp;/Users/&lt;user&gt;/Library/Safari/History.plist, an XML file with visit dates in recorded in epoch format. &amp;nbsp;An example of that time is "314335349.7".&amp;nbsp;&lt;/user&gt;&lt;br /&gt;&lt;user&gt;&lt;br /&gt;&lt;/user&gt;&lt;br /&gt;&lt;user&gt;The tricky thing is realizing that not all so called "epoch" time is the same. &amp;nbsp;In a 'nix system, epoch time is defined as the number of seconds since 01/01/1970 00:00:00. &amp;nbsp;However, the Mac epoch time is defined as the number of seconds since 01/01/2001 00:00:00. &amp;nbsp;&lt;i&gt;EDIT: Mac time is also known as "Mac Absolute Time."&lt;/i&gt;&lt;/user&gt;&lt;br /&gt;&lt;user&gt;&lt;br /&gt;&lt;/user&gt;&lt;br /&gt;Unix epoch time is a simple conversion in Linux. &amp;nbsp;A current time is a ten digit number that resembles "1298307237". &amp;nbsp;To convert that to human-readable date, simply:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ date -d @1298307237&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Mon Feb 21 08:53:57 PST 2011&amp;nbsp;&lt;/span&gt;&lt;/blockquote&gt;The date command defaults to calculating from 1970 and not 2001 as we need for our Mac time conversion. &amp;nbsp;To obtain a proper conversion, we need to tell the date command the starting point of the data calculation thusly:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$&amp;nbsp;date -d "2001-01-01 314335349.7 sec PST"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;Sat Dec 18 03:22:29 PST 2010&lt;/span&gt;&lt;/blockquote&gt;Knowing the format, scripting the conversion should be relatively trivial. &amp;nbsp;I hope this helps someone. &amp;nbsp;I'll know I'll be back to this page often to remind myself of the conversion syntax!&lt;br /&gt;&lt;br /&gt;&lt;i&gt;EDIT: &amp;nbsp;When processing Mac databases, like those found on the iPhone, it is possible to convert the times using SQLite commands. &amp;nbsp;I determined the number of seconds since unixepoch time to Mac Absolute Time with "SELECT strftime('%s', '2001-01-01 00:00:00');" as&amp;nbsp;978307200 seconds. &amp;nbsp;This value can be added to Mac Absolute Time and then converted to local time with the SQLite datetime() function thusly: datetime(time_field&lt;mac_absolute_time&gt;&amp;nbsp;+&amp;nbsp;978307200, 'unixepoch', 'localtime').&lt;/mac_absolute_time&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3348391629519418824?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3348391629519418824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/calculating-embedded-os-x-times.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3348391629519418824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3348391629519418824'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/calculating-embedded-os-x-times.html' title='Calculating Embedded OS X Times'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-788625946494115501</id><published>2011-02-02T17:27:00.000-08:00</published><updated>2011-02-21T10:31:12.939-08:00</updated><title type='text'>Parsing the iPhone SMS Database</title><content type='html'>I was asked recently to help recover deleted messages from an iPhone SMS database. &amp;nbsp;Conveniently, this is called "sms.db" on the iPhone and it is located in the /mobile/Library/SMS/ directory. &amp;nbsp;It is a sqlite3 file type, and there are several GUI tools to read sqlite3 databases, as well as a sqlite3 command line shell.&lt;br /&gt;&lt;br /&gt;It seems like a pretty straight forward exercise at first blush. &amp;nbsp;However,&amp;nbsp;"How do I recover deleted messages from an iPhone database" is not as simple as question as it first seems. &amp;nbsp;When a user chooses to delete a message on the iPhone, the record is flagged as deleted &lt;u&gt;in&lt;/u&gt; the database, &lt;i&gt;but the record is not deleted &lt;u&gt;from&lt;/u&gt; the database.&lt;/i&gt;&amp;nbsp;&amp;nbsp;This means that records flagged as deleted are still recoverable with sqlite3 tools.&lt;br /&gt;&lt;br /&gt;But when the phone is synced with iTunes, the records flagged "deleted" are actually &lt;i&gt;removed&lt;/i&gt; (&lt;i&gt;deleted)&lt;/i&gt; from the database itself and no longer recoverable with sqlite3 tools. &amp;nbsp;However, the data is still within the database, but the space it occupies is added to a "free list" for use by new data. &amp;nbsp;In other words, the data can still be recovered before it is overwritten by new data or the database is "vacuumed", a sqlite3 process that rebuilds the database removing all the free space and reducing the size of the database. &amp;nbsp;As a caveat, sqlite3 can be configured to overwrite records immediately upon deletion, but this is not the case for the iPhone at present.&lt;br /&gt;&lt;br /&gt;So really, there are two types of deleted data to be sought: records flagged as deleted (not really deleted records at all), and records deleted from the database. &amp;nbsp;I'll discuss the first type in the remainder of this discussion. &amp;nbsp;I'll consider ways to recover deleted records &lt;a href="http://linuxsleuthing.blogspot.com/2011/02/recovering-data-from-deleted-sql.html"&gt;in another post&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The sms.db has the following tables:&lt;br /&gt;_SqliteDatabaseProperties, msg_group, group_member, msg_pieces, message&lt;br /&gt;&lt;br /&gt;The message table contains the text messages of interest. &amp;nbsp;The contents of the table can be displayed from the shell with:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;$ sqlite3 -header sms.db "select * from message"&lt;/span&gt;&lt;br /&gt;ROWID|address|date|text|flags|replace|svc_center|group_id|association_id|height|UIFlags|version|subject|country|headers|recipients|read&lt;br /&gt;1|+17132619725|1281033415|Hey, what's up?|2|0||1|0|0|4|0||us|||1&lt;br /&gt;...&lt;/blockquote&gt;As you can see the interesting fields (revealed because the -header argument was used) are "ROWID," "address" (which is the source phone number), "date" (in unix epoch format), "text," and of less obvious value--"flags." &amp;nbsp;Flags indicates the type of message, i.e.,:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;2 = received&lt;/li&gt;&lt;li&gt;3 = sent&lt;/li&gt;&lt;li&gt;33 = Message send failure&lt;/li&gt;&lt;li&gt;129 = deleted&lt;/li&gt;(source:&amp;nbsp;&lt;a href="http://www.uptill3.com/2010/04/20/iphone-forensics-sans-iphone/"&gt;Adam Crosby&lt;/a&gt;) &lt;/ul&gt;With a little sqlite razzle dazzle, we can get a well formatted output in a more human readable form:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;$ sqlite3 -header sms.db "select ROWID as row, case flags when 2 then 'rcvd' when 3 then 'sent' when 33 then 'fail' when 129 then '*del' else 'unkn' end as type, address as phone_no, datetime(date,'unixepoch','localtime') as date, text as message from message"&lt;/span&gt;&lt;br /&gt;row|type|phone_no|date|text&lt;br /&gt;1|rcvd|+17132619725|2010-08-05 11:36:55|Hey, what's up?&lt;br /&gt;...&lt;/blockquote&gt;SQL syntax can be a bit tricky, and look a bit intimidating. &amp;nbsp;But by using internal commands, you can get a tremendous speed boost over using external text tools. &amp;nbsp;By way of explanation, I'll break down the command:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;sqlite3 -header sms.db&lt;/span&gt; &amp;nbsp;#open the database with sqlite and display column names&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;"select&amp;nbsp;&lt;/span&gt;&amp;nbsp;#display the following columns from the table&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;ROWID as row,&lt;/span&gt; &amp;nbsp;#display the ROWID column first, but rename it "row" in the output&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;case flags when 2 then 'rcvd' when 3 then 'sent' when 33 then 'fail' when 129 then '*del' else 'unkn' end as type,&lt;/span&gt; &amp;nbsp;#display the flags column next, but change the "2" flag to "rcvd", "3" to "sent", etc., and rename the row "type"&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;address as phone_no,&lt;/span&gt; &amp;nbsp;#display the address column renamed as "phone_no"&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;datetime(date,'unixepoch','localtime') as date,&lt;/span&gt; &amp;nbsp;#convert the content of the date field to local time and display the column as "date"&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;text as message&lt;/span&gt; &amp;nbsp;#display the text column renamed as "message"&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;from message"&lt;/span&gt; &amp;nbsp;#all the columns of data are read from the message table&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;The command can be simplified if column renaming isn't required. &amp;nbsp;I included it here to make the output as clear as possible, and since the command can be incorporated into a script, it need only be typed once. &amp;nbsp;The quoted part of the command could be inserted into a GUI sqlite browser if that is your tool of preference. &amp;nbsp;The query can be adjusted to show just deleted messages, for example, by appending "where type like '*del'".&lt;br /&gt;&lt;br /&gt;Notice I did not link the data in the message table to any other tables in the database. &amp;nbsp;While this can be done, my task was to seek out deleted messages. &amp;nbsp;And as I said earlier, I will explore methods for recovering deleted records from sqlite databases &lt;a href="http://linuxsleuthing.blogspot.com/2011/02/recovering-data-from-deleted-sql.html"&gt;in a future post&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;As always I welcome any comments or suggestions....&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-788625946494115501?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/788625946494115501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/parsing-iphone-sms-database.html#comment-form' title='32 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/788625946494115501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/788625946494115501'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2011/02/parsing-iphone-sms-database.html' title='Parsing the iPhone SMS Database'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>32</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3345449882145926299</id><published>2010-12-12T22:35:00.000-08:00</published><updated>2010-12-12T22:42:35.287-08:00</updated><title type='text'>TinyCore: A Mighty Platform (Part 2)</title><content type='html'>&lt;a href="http://tinycorelinux.com/welcome.html"&gt;TinyCore Linux&lt;/a&gt; is an ideal platform for building a light weight forensics distribution with the purposes I have in mind (See &lt;a href="http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-1.html"&gt;Part 1&lt;/a&gt; of this post). &amp;nbsp;It is only a 10mb download for the base distribution and boots to a simple GUI desktop. &amp;nbsp;It boots and loads entirely into a ram disk as small as 48mb, but allocates as much ram as possible. &amp;nbsp;The ram disk makes TinyCore very fast because the entire operating system resides in ram and there are no drive seek time delays.&lt;br /&gt;&lt;br /&gt;TinyCore uses a modern kernel with good hardware support and an xvesa video driver which all but insures a working GUI. &amp;nbsp;Applications are installed as modules (called extensions) that can be run at boot time or on demand. &amp;nbsp;The root file system and the applications are read-only and are renewed on every boot eliminating file corruption that can creep into installed software.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;The Basic Structure&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;At its most rudimentary level, TinyCore consists of two files, the kernel (bzimage) and a compressed file system (tinycore.gz). &amp;nbsp;Add to that a means to boot the operating system, such as isolinux, and your full file tree is a simple:&lt;br /&gt;&lt;br /&gt;./boot&lt;br /&gt;./boot/isolinux&lt;br /&gt;./boot/isolinux/isolinux.cfg&lt;br /&gt;./boot/isolinux/isolinux.bin&lt;br /&gt;./boot/isolinux/f4&lt;br /&gt;./boot/isolinux/f2&lt;br /&gt;./boot/isolinux/boot.msg&lt;br /&gt;./boot/isolinux/f3&lt;br /&gt;./boot/isolinux/boot.cat&lt;br /&gt;./boot/bzImage&lt;br /&gt;./boot/tinycore.gz&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Making the Read-Only Environment&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Attached storage devices detected by the kernel are identified by the udev daemon. Udev applies rules to the devices based on their type. &amp;nbsp;In the case of TinyCore, udev calls the /usr/sbin/rebuildfstab script to build the /etc/fstab file which contains the mounting options for the attached devices. &amp;nbsp;When the device is subsequently mounted (devices are not automatically mounted in TinyCore when attached), the mount options in the fstab file are applied. &amp;nbsp;One need only modify rebuildfstab mounting options to make the system mount devices read-only.&lt;br /&gt;&lt;br /&gt;I have been able to modify the rebuildfstab file to mount devices read only and address other forensic mounting issues, like mounting ext3/4 devices as ext2 to avoid any possible journal changes and mounting physical devices as loopback devices to avoid attempted repairs of corrupted file systems on mount.&lt;br /&gt;&lt;br /&gt;The process of modifying, adding, or removing files in the core file system is well documented &lt;a href="http://wiki.tinycorelinux.com/Remastering"&gt;here&lt;/a&gt;. &amp;nbsp;It involves decompressing the tinycore.gz file extracted from a TinyCore iso, making the desired changes, and zipping it back up. &amp;nbsp;The new tinycore.gz can then be remastered into a new iso.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Making Application Modules (Extensions)&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Though new applications can be remastered into the core file system, I favor the modular approach implemented by the TinyCore developers. &amp;nbsp;Applications are compiled and the stored in a read-only squashfs file system. &amp;nbsp;The application, when installed, is mounted into the core file system. &amp;nbsp;Applications can be triggered to mount at boot time, or on demand. &amp;nbsp;On demand ensures quicker boot times and frees more space in the ram disk if the application is not needed in the session. &amp;nbsp;Though there is not gui method for this, installed applications can be "uninstalled" in the middle of the session by simply unmounting them and thus freeing ram allocated to them.&lt;br /&gt;&lt;br /&gt;Though TinyCore has some suitable modules for forensics, like foremost for example, it lacks libraries and application such as &lt;a href="http://sourceforge.net/projects/libewf/"&gt;libewf&lt;/a&gt; (Expert Witness imaging format), &lt;a href="http://afflib/"&gt;afflib&lt;/a&gt; (Advanced Forensics imaging Format), and &lt;a href="http://sleuthkit.org/"&gt;sleuthkit&lt;/a&gt; (disk investigation tool) that a forensics&amp;nbsp;practitioner&amp;nbsp;would desire. &amp;nbsp;If you are familiar with building application from source, however, then building TinyCore application modules is a snap. &amp;nbsp;I have already built libewf, afflib, aimage, and sleuthkit modules and will submit them to the&amp;nbsp;repository&amp;nbsp;once I complete testing. &amp;nbsp;You can take a look at the building method &lt;a href="http://wiki.tinycorelinux.com/Creating+Extensions"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Persistence&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Everything I've mentioned about TinyCore so far mentions "read-only." &amp;nbsp;The rebuildfstab script can be modified to ensure devices are mounted read-only, a must for live forensic examinations. &amp;nbsp;The core file system and application modules are mounted read-only ensuring a "clean" operating system and software environment with each boot. &amp;nbsp;But how does a user save evidence from examinations?&lt;br /&gt;&lt;br /&gt;TinyCore allows the home directory to be &lt;a href="http://wiki.tinycorelinux.com/Backup+-+Restore"&gt;saved&lt;/a&gt; to a storage device. &amp;nbsp;On shutdown, user data is written to the storage device designated by the user. &amp;nbsp;A boot option allows the device to be specified on the next boot to restore the user data, or it can be loaded after boot.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Putting it All Together&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;If you read &lt;a href="http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-1.html"&gt;Part 1&lt;/a&gt; of this post, you know that my goal is the creation of a bootable disc/USB that an investigator with average computer skills (not a computer forensics&amp;nbsp;practitioner) could use to search for and seize evidence from digital storage devices. &amp;nbsp;TinyCore, in my estimation, has it all:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Small size, loads entirely into ram, and fast with a simple GUI&lt;/li&gt;&lt;li&gt;Easily modified and remastered as a read-only environment&lt;/li&gt;&lt;li&gt;Easily add and created application modules with minimal ram impact&lt;/li&gt;&lt;li&gt;Means for easy creation and restoration of persistent storage&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;If one adds to the base a decent file browser, like ROX (I'll explain why I think this file browser is great option for forensic examination another time), a word processor (Abiword) with decent file format support, an audio/video player (VLC), and maybe a few other applications, and you have a light-weight, fast, and safe operating system that an investigator with basic computer skills can use to advance his case.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a basic version of this concept in place and am currently testing and refining. &amp;nbsp;I plan to host it on Google Code to get community feedback and to publish the changes I make to the core operating system. &amp;nbsp;I'll also host the modules I build there (at least until they are accepted into the TinyCore repository). &amp;nbsp;As always, I welcome any feedback.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3345449882145926299?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3345449882145926299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3345449882145926299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3345449882145926299'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-2.html' title='TinyCore: A Mighty Platform (Part 2)'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4125455271535658203</id><published>2010-12-11T15:54:00.000-08:00</published><updated>2010-12-14T11:47:04.089-08:00</updated><title type='text'>TinyCore: A Mighty Platform (Part 1)</title><content type='html'>Last week I rediscovered TinyCore Linux. &amp;nbsp;I had taken a look at it about 6 months ago and was intrigued, but didn't have the time to explore it further. &amp;nbsp;However, I have been seeking a small Linux distribution on which to build a specialized forensics distro, and last week I gave TinyCore another look.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Background&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;I believe there is a need in computer forensics for an investigator with limited training to&amp;nbsp;be able to search for and seized digital evidence from storage devices.&lt;/i&gt;&amp;nbsp;&amp;nbsp;Some of the reason's I believe this are:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;There are not enough trained forensic computer examiners to keep pace with the number of cases involving digital evidence.&lt;/li&gt;&lt;li&gt;The backlog created by a lack of examiners means cases don't get filed for month or even years after the discovery of the crime. &amp;nbsp;Meanwhile, the perpetrator is free to commit more crimes.&lt;/li&gt;&lt;li&gt;Prosecutors are less likely to pursue older cases, in part because witness recall becomes&amp;nbsp;unreliable.&lt;/li&gt;&lt;li&gt;The majority of charges filed against perpetrators are settled out of court through plea bargaining. &amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Therefore, in most circumstances digital storage devices are taken to computer forensics laboratories to search for evidence to support a filing of criminal charges. &amp;nbsp;But the labs are too busy to get to the examinations very quickly, and by the time they do, Prosecutors are reluctant to file charges because of the delayed filing and/or the perpetrators have been committing additional crimes. &amp;nbsp;I know this doesn't describe all situations, but it should ring true with most people in some manner.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Solution&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;The obvious&amp;nbsp;solution&amp;nbsp;is to increase the number of forensic computer examiners and computer forensics laboratories. &amp;nbsp;However, that isn't going to happen, at least not in the near and not-so-near futures. &amp;nbsp;And, since I'm a "work with what I've got" kind of guy, I've been working on another solution:&lt;br /&gt;&lt;br /&gt;Criminal investigators need simple but effective tools to search for and seize evidence from digital storage devices. &amp;nbsp;The tools need to be forensically sound, i.e., they do not alter the original media in any way, but easy enough to use that a basic computer user can feel comfortable and conduct effective examinations.&lt;br /&gt;&lt;br /&gt;Think about it this way: If a criminal investigator could retrieve his own digital evidence, he could file charges immediately, and most of the cases filed would be settled without the need of further forensic computer examination. &amp;nbsp;In cases that do not settle because the digital evidence is disputed, the storage devices could be sent to the computer forensics labs for more traditional analysis.&lt;br /&gt;&lt;br /&gt;More cases filed, more perpetrators convicted, less workload at the lab!&lt;br /&gt;&lt;br /&gt;But how do we create such tools? &amp;nbsp;Forensic boot discs like &lt;a href="http://caine-live.net/"&gt;CAInE&lt;/a&gt;&amp;nbsp;are great for experience investigators, and the latest version contains nautilus scripts to make live examinations like I'm contemplating here possible. &amp;nbsp;But the operating system is resource heavy, slow to boot from CD, and still to complicated for basic criminal investigators (for example, it is confusing and difficult for most basic users to mount a storage device read-write to collect evidence because the CAInE mounting policies rightly auto-mount devices read-only). &amp;nbsp;In other words, CAInE and other existing boot discs are not the right tool for users with limited computer forensics training.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;TinyCore&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;I believe the best tool for criminal investigators with basic computer skills will:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Boot quickly (Criminal investigators may be in the field without the luxury of time.&lt;/li&gt;&lt;li&gt;Work in nearly any machine (basic video drivers, e.g., xvesa)&lt;/li&gt;&lt;li&gt;Not alter the media being examined (i.e., mount devices read-only)&lt;/li&gt;&lt;li&gt;Create an writeable storage location automatically (no command line or confusing the evidence device for the storage device)&lt;/li&gt;&lt;li&gt;Contain programs or scripts that are easily accessible to find evidence files (e.g., nautilus-scripts)&lt;/li&gt;&lt;li&gt;Create reports about files saved as evidence containing file metadata (so evidence can be commented upon by trained investigators, if needed)&lt;/li&gt;&lt;li&gt;Allow for the creation of forensic images (in the event the device cannot be seized).&lt;/li&gt;&lt;/ol&gt;&lt;div&gt;&lt;a href="http://tinycorelinux.com/"&gt;TinyCore&lt;/a&gt; linux appears to be an ideal platform from which to build this tool. &amp;nbsp;And, I'll explain why in &lt;a href="http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-2.html"&gt;Part 2&lt;/a&gt;...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4125455271535658203?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4125455271535658203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4125455271535658203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4125455271535658203'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/12/tinycore-mighty-platform-part-1.html' title='TinyCore: A Mighty Platform (Part 1)'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3466835913025797342</id><published>2010-11-16T17:39:00.000-08:00</published><updated>2010-11-16T17:39:30.263-08:00</updated><title type='text'>Sleepwaking</title><content type='html'>No, the title of this post is not in error. &amp;nbsp;I don't mean "sleepwalking." &amp;nbsp;I meant what I said: &lt;u&gt;sleepwaking&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Those who know me know I am a proponent of "previewing" computers for content before conducting a full forensic exam. &amp;nbsp;There are many reasons for this including the most common purpose: triage. &amp;nbsp;Previewing entails booting the computer with a forensic boot disc such as &lt;a href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt;&amp;nbsp;which prevents writes to the media being examined, and examining the file system(s) on the attached storage devices for evidence related to the investigation. &lt;br /&gt;&lt;br /&gt;There are, of course, limitations to Previewing approach that I won't discuss here, But there is a danger that I feel must be discussed: Previewing the computer that is in a sleep or&amp;nbsp;hibernated&amp;nbsp;state which is commonly (but not exclusively) found in laptop computers. &amp;nbsp;Dropping a forensic boot disc into the CD drive (or using a USB incarnation) will not prevent the computer's operating system from running and changing data on storage device. &amp;nbsp;So, what is a person to do?&lt;br /&gt;&lt;br /&gt;For sake of this discussion, envision a laptop computer with a single internal hard disk drive with an Windows operating system in a&amp;nbsp;hibernated&amp;nbsp;state. &amp;nbsp;Booting the computer after inserting a forensic boot disc will NOT preserve the data on drive, because the BIOS detects the hibernated state and begins restoring the contents of the hyberfil.sys file to RAM and restores the operating system to a running state. &amp;nbsp;If you interrupt this restoration, quickly enough, you will find that the data on the hard disk drive hasn't changed, but metadata (access times) will be changed. &amp;nbsp;Depending on the version of Windows installed, you still may not get a boot selection screen the next time you boot (Windows 7 comes to mind).&lt;br /&gt;&lt;br /&gt;The best practice in my experience is as follows:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;remove the hard drive from the computer.&lt;/li&gt;&lt;li&gt;insert your&amp;nbsp;forensic&amp;nbsp;boot disc .&lt;/li&gt;&lt;li&gt;boot the computer and access the BIOS or boot selection menu&amp;nbsp;(ensure you can select the boot disc as the boot device)&lt;/li&gt;&lt;li&gt;reinstall the hard disk drive.&lt;/li&gt;&lt;li&gt;reboot the computer and boot into your forensic environment. &amp;nbsp;The BIOS will not now automatically attempt to restore the resident OS from&amp;nbsp;hibernation.&lt;/li&gt;&lt;/ol&gt;And don't forget that the hibernated system has saved what is essentially a RAM image in the hyberfil.sys. &amp;nbsp;I guess that's what you call a "twofer." &amp;nbsp;It takes a different shape in Macintosh and Linux systems, but RAM contents are available in those&amp;nbsp;hibernated&amp;nbsp;operating systems, too.&lt;br /&gt;&lt;br /&gt;Of course, true "sleeping" is different than&amp;nbsp;hibernation, though the line has been blurred since Windows Vista. &amp;nbsp;A true "sleep" state suspends the computer, preserving the running state by providing power to RAM in order to retain data. &amp;nbsp;It is usually indicated by a flashing power light and the data disappears scant seconds after loss of power. &amp;nbsp;On the other hand, Windows Vista introduced "Fast Sleep" that also saves the RAM content to hard disk in conjunction with providing power to the RAM. &amp;nbsp;The investigator will have to make his/her own decisions based on the details of the investigation on how to handle a sleeping computer (e.g, wake it and save volatile memory before shutting down the system or abandoning the RAM contents by pulling the drive).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3466835913025797342?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3466835913025797342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/sleepwaking.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3466835913025797342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3466835913025797342'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/sleepwaking.html' title='Sleepwaking'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6019050460592997151</id><published>2010-11-03T15:17:00.000-07:00</published><updated>2010-11-03T15:19:00.852-07:00</updated><title type='text'>Garmin GPS: What you don't know can track you!</title><content type='html'>Garmin GPS devices track their position by default (&lt;i&gt;caveat&lt;/i&gt;: at least every device I have been given to examine!). &amp;nbsp;They will do so, approximately every 30 seconds, when powered on. &amp;nbsp;Notice I said nothing about navigating. &amp;nbsp;Simply powering the devices causes them to start logging their location. &amp;nbsp;While this feature can be disabled, it is buried in the settings and I suspect that most users are not even aware of it.&lt;br /&gt;&lt;br /&gt;The data is stored in a &lt;a href="http://en.wikipedia.org/wiki/GPS_eXchange_Format"&gt;GPX&lt;/a&gt; file, also know as the Global Positioning Satellite (GPS) Exchange Format. &amp;nbsp;The most current track, appropriately named "Current.gpx," is stored in the "/Garmin/GPX" directory on the device. &amp;nbsp;Older tracks are stored in "/Garmin/GPX/Archive" directory. &amp;nbsp;The archives take on the name "&lt;seqence&gt;.gpx," e.g,. "1.gpx," "2.gpx," etc. &amp;nbsp;I have never seen more that 17 archived files, but I don't know if this is a system limitation or just a coincidence that I have seen it more than once. &amp;nbsp;The history can cover quite a time span: my most recent examination revealed a history of 6 months!&lt;/seqence&gt;&lt;br /&gt;&lt;br /&gt;GPX files are in xml. &amp;nbsp;The Current.gpx file can have interesting entries, including the "Home" address of the device owner. &amp;nbsp;I have used this setting to reunite stolen devices with their owners or&amp;nbsp;thieves&amp;nbsp;back to their homes. But the most interesting information is the device track, which consists of a series of GPS waypoints or "trackpoints" recorded by the device. &amp;nbsp;Here is a sample from an archive file:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oJWi-HKKGKE/TNHaTFF49VI/AAAAAAAAAgk/7ZtAEwbP1n8/s1600/Terminal_017.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://1.bp.blogspot.com/_oJWi-HKKGKE/TNHaTFF49VI/AAAAAAAAAgk/7ZtAEwbP1n8/s320/Terminal_017.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;There are many ways to handle a GPX file, but I have found it is most useful to convert it to a &lt;a href="http://kml/"&gt;KML&lt;/a&gt;, or Key Hole Markup Language, file for use with Google Earth. &amp;nbsp;While I know that Google Earth is not an open sourced application, and other tools like "gpxviewer" can map the GPX file directly, most of the people I support are Windows users that have experience with Google Earth.&lt;br /&gt;&lt;br /&gt;There are two methods I am aware of for creating KML files. &amp;nbsp;The first is using an online resource, like &lt;a href="http://www.gpsvisualizer.com/"&gt;GPSVisualizer&lt;/a&gt;. &amp;nbsp;Just complete the online form and upload your file to make a map that meets your requirements. &amp;nbsp;Other formats, besides Google Earth, are possible, including Google Maps, JPG, PNG, SVG, and text.&lt;br /&gt;&lt;br /&gt;I don't like to rely on websites, however, because&amp;nbsp;Internet&amp;nbsp;connectivity&amp;nbsp;is never assured. &amp;nbsp;Enter &lt;a href="http://www.gpsbabel.org/"&gt;GPSBabel&lt;/a&gt;. &amp;nbsp;GPSBabel is a command line tool (gui available) to convert over 100 different types of GPS data formats. &amp;nbsp;A basic conversion can be as simple as:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="color: #222222;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;gpsbabel -i gpx -f input.gpx -o kml -F output.kml&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;There are numerous options, that I won't cover here, to customize your output file. &amp;nbsp;They include labeling the&amp;nbsp;way points&amp;nbsp;with the date and time they were created, allowing you to easily visualize the track. &amp;nbsp;I'd recommend the use of a GUI to familiarize yourself with the customization options, though be aware that the GUIs seldom provide all available options.&lt;br /&gt;&lt;br /&gt;I have used Garmin GPX files to map a suspects' travels and place him them at crime scenes. &amp;nbsp;I hope with this information you will be able to do so, too!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6019050460592997151?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6019050460592997151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/garmin-gps-what-you-dont-know-can-track.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6019050460592997151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6019050460592997151'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/garmin-gps-what-you-dont-know-can-track.html' title='Garmin GPS: What you don&apos;t know can track you!'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oJWi-HKKGKE/TNHaTFF49VI/AAAAAAAAAgk/7ZtAEwbP1n8/s72-c/Terminal_017.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4060674776683366133</id><published>2010-11-03T13:04:00.000-07:00</published><updated>2010-11-03T13:45:38.484-07:00</updated><title type='text'>Sleuthkit 3.2.0 Released</title><content type='html'>A new version of&amp;nbsp;&lt;a href="http://sleuthkit.org/sleuthkit/"&gt;The Sleuth Kit&lt;/a&gt;&amp;nbsp;(TSK), a command line&amp;nbsp;forensics&amp;nbsp;tool set for both Linux and Windows, was released a few days ago. &amp;nbsp;This release brings new automation tools that can greatly speed processing. &amp;nbsp;Brian Carrier, the developer, describes the release thusly:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-size: 13px;"&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;New features include:&lt;br /&gt;&amp;nbsp;&amp;nbsp; • New tsk_recover tool that extracts files from an image to a local directory.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • New tsk_loaddb tool that dumps file system metadata to SQLite database.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • New tsk_getimes tool that collects MAC time data on all file systems (equivalent to fls -m on a series of volumes)&lt;br /&gt;&amp;nbsp;&amp;nbsp; • New tsk_comparedir tool that compares a directory to an image to detect rootkits.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • New C++ TskAuto class that makes it easier to create automated tools that analyze all files.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • Name cleanup out of libraries and into tools.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • img_cat -e and -s flags.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • Changed how default NTFS $Data attribute is named.&lt;br /&gt;&amp;nbsp;&amp;nbsp; • HFS+ Case sensitive flag in fsstat.&lt;br /&gt;&lt;br /&gt;Bug fixes include:&lt;br /&gt;&amp;nbsp;&amp;nbsp; • FAT performance&lt;br /&gt;&amp;nbsp;&amp;nbsp; • Crash fix for corrupt NTFS file&lt;br /&gt;&amp;nbsp;&amp;nbsp; • Adding attribute runs on fragmented files with multiple attributes of the same type.&lt;/span&gt; &lt;/span&gt;&lt;/blockquote&gt;I can personally attest to the benefits of the tsk_loaddb tool. &amp;nbsp;It very quickly creates a sqlite database containing file system metadata for each volume in the forensic image. &amp;nbsp;The database can be queried for any data sought in a fraction of the time it takes to read a file system itself. &lt;br /&gt;&lt;br /&gt;A knowledge of &amp;nbsp;&lt;a href="http://www.w3schools.com/sql/default.asp"&gt;basic sqlite commands&lt;/a&gt; is essential to take advantage of the database, but with that knowledge, it is quite easy to script tools for your use. &amp;nbsp;For example, I wrote a shell script that reads the database and automatically mounts all the partitions read-only for quick evaluation. &amp;nbsp;This, of course, is only one small way that data can be used.&lt;br /&gt;&lt;br /&gt;For a concise overview of all the tools that TSK has to offer, take a look at the wiki located &lt;a href="http://wiki.sleuthkit.org/index.php?title=TSK_Tool_Overview"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4060674776683366133?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4060674776683366133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/sleuthkit-320-released.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4060674776683366133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4060674776683366133'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/11/sleuthkit-320-released.html' title='Sleuthkit 3.2.0 Released'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-6896274008378134711</id><published>2010-10-19T16:01:00.000-07:00</published><updated>2010-10-19T16:05:28.876-07:00</updated><title type='text'>Booting Disk Images in Linux</title><content type='html'>&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;A Picture can be Worth a Thousand Words&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Sometimes there is no substitute for booting a computer to gather data. &amp;nbsp;But the forensic consequences of &amp;nbsp;directly booting the system under investigation are prohibitive. &amp;nbsp;And, while it can be possible to restore a computer image to another hard drive and install that drive in the computer hard drive for booting, this can be costly, very time consuming, and you only get one shot before you've changed the data from original (and repeated boots may be&amp;nbsp;desirable&amp;nbsp;depending on the investigation).&lt;br /&gt;&lt;br /&gt;In response to this, tools like &lt;a href="http://liveview.sourceforge.net/"&gt;LiveView&lt;/a&gt; were created. &amp;nbsp;The concept was to boot the forensic image, rather than restore it, and capture all system changes in a disk cache. &amp;nbsp;The operating system could be booted quickly and repeatedly from an original state. &amp;nbsp;However, I never found LiveView to be very effective, and it the past few years I have avoided Windows-based tools whenever possible &lt;insert favorite="" here="" rant="" windows=""&gt;.&lt;/insert&gt;&lt;br /&gt;&lt;br /&gt;Enter &lt;a href="https://www.pinguin.lu/index.php"&gt;xmount&lt;/a&gt;&amp;nbsp;by Dan Gillen. &amp;nbsp;Xmount will mount raw (dd), Expert Witness Format (ewf, aka, EnCase), and possibly Advanced Forensics Format (aff) images and create a virtual disk that can be run in a virtual machine. &amp;nbsp;Supported virtual disks are raw (&lt;a href="http://wiki.qemu.org/Main_Page"&gt;qemu&lt;/a&gt;), vdi (&lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt;), and vmdk (&lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt;). &amp;nbsp;Xmount is easy to use: its as simple as invoking the command, listing the image type, the virtual disk type desired, assigning a disk cache file, and selecting the disk image to mount. &amp;nbsp;For example:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo xmount --in ewf --out vdi --owcache disk.cache image.E?? /mnt&lt;/span&gt;&lt;/blockquote&gt;Of course, you've only come partway to actually booting that image. &amp;nbsp;You could try to boot the virtual disk in your virtual machine, but if it's a Windows operating system, chances are it will fail.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Open the Flood Gates with "opengates"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Windows operating systems rely on the hardware of the system in which they are installed to boot. &amp;nbsp;Thus, you cannot normally remove a hard disk drive with a Windows operating system, install it in a differently configured system, and expect it to boot. &amp;nbsp;Thus, neither will your virtual disk boot in your virtual machine, unless the configuration of the virtual machine closely matches that of the original system. &amp;nbsp;However, xmount creator Dan Gillen has a solution for us:&amp;nbsp;"&lt;a href="https://www.pinguin.lu/index.php"&gt;opengates&lt;/a&gt;."&lt;br /&gt;&lt;br /&gt;Opengates is a utility to overcome the hardware limitations of Windows Operating systems. &amp;nbsp;It does several other things to make the virtual disk bootable, but one most interesting and useful&amp;nbsp;capability&amp;nbsp;is the removal of user passwords. &amp;nbsp;Opengates is deployed with &lt;a href="http://www.nu2.nu/pebuilder/"&gt;BartPE&lt;/a&gt;, a bootable live windows environment. &amp;nbsp;Gillen provides very clear instructions for creating an opengates enabled BartPE disc with PEbuilder. &amp;nbsp;But in short, you need a Windows XP or 2003 machine (to run PEbuilder), a licensed Windows XP install disc, the opengates software, and about 10 minutes.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Configuring the VM&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;Qemu&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you are using qemu, the steps to a running VM are pretty short. &amp;nbsp;You simply setup your VM with a CD-ROM and the virtual disk. &amp;nbsp;The CD-ROM contains the BartPE disc (I use an ISO I call opengates.iso). &amp;nbsp;I use the command line thusly:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo xmount --in ewf &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;--out dd&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; --cache disk.cache image.E?? /mnt &lt;/span&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ qemu -cdrom opengates.iso -drive file=/mnt/image.dd -boot menu=on&lt;/span&gt;&lt;/blockquote&gt;The "-boot menu=on" argument allows a boot menu to be selected with F12. &amp;nbsp;I boot initially with BartPE, and opengates runs immediately. &amp;nbsp;You can simply take the defaults for most options, the only catches being user password removal and AntiWPA (a Windows Product Activation) workaround. &amp;nbsp;When opengates is done, it displays some necessary VM settings (but Qemu can't be configured--that I know of--with those settings), and reboots the system. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_oJWi-HKKGKE/TL4XuxN6KpI/AAAAAAAAAfs/NpDFs_xVtm0/s1600/Screenshot-QEMU.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_oJWi-HKKGKE/TL4XuxN6KpI/AAAAAAAAAfs/NpDFs_xVtm0/s320/Screenshot-QEMU.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;On the second boot, I boot from the virtual disk. &amp;nbsp;In a recent case, the Windows Vista Business edition did not boot under qemu, however. &amp;nbsp;So, I tried VirtualBox.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;VirtualBox&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VirtualBox can be deployed immediately, using the changes made with opengates under Qemu if desired. &amp;nbsp;The changes are recorded in disk cache set when mounting, and the cache can be reused with subsequent mounts/boots. &amp;nbsp;However, I'm going discuss VirtualBox as though the whole process was centered around its use.&lt;br /&gt;&lt;br /&gt;First, xmount must be used to create the virtual disk:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;$ sudo xmount --in ewf &lt;/span&gt;&lt;span class="Apple-style-span" style="background-color: yellow;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;--out vdi&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt; --cache disk.cache image.E?? /mnt&lt;/span&gt;&lt;/blockquote&gt;Next, start and configure VirtualBox. &amp;nbsp;I recommend the PUEL edition (downloaded from the website) if you plan to use USB, and it is easier to install. &amp;nbsp;Setup your VM, using your opengates enabled BartPE ISO and the xmount virtual disk.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_oJWi-HKKGKE/TL4a62neUEI/AAAAAAAAAfw/xA_TqUhGzeY/s1600/Screenshot-laptop+-+Settings.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="249" src="http://4.bp.blogspot.com/_oJWi-HKKGKE/TL4a62neUEI/AAAAAAAAAfw/xA_TqUhGzeY/s320/Screenshot-laptop+-+Settings.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Boot the ISO, either by using the F12 key or by manipulating the boot order in the VM. &amp;nbsp;Use opengates to configure the virtual disk as indicated in the Qemu section above. &amp;nbsp;Be sure to note the VM settings recommended by opengates and configure your VM accordingly. &amp;nbsp;You may not find exact matching settings based on the VM you are using and the version, but it shouldn't be hard to determine and you'll make them in the System tab. &amp;nbsp;Common settings with be "Mother Board | Enable IO ACPI" and "Processor | Enable PAE/NX"&lt;br /&gt;&lt;br /&gt;If the OS in your image was in a&amp;nbsp;hibernated state, you'll likely not be able to restore it, but there is no harm in trying. &amp;nbsp;If the OS fails to load the hibernation file, it will delete it and boot normally. &amp;nbsp;If all goes well, you should boot into Windows. &amp;nbsp;Remember, all changes are being cached in your disk cache file.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_oJWi-HKKGKE/TL4iwyESnQI/AAAAAAAAAf0/VhPYLL9uvbQ/s1600/laptop+%5BRunning%5D+-+Oracle+VM+VirtualBox_001.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="268" src="http://1.bp.blogspot.com/_oJWi-HKKGKE/TL4iwyESnQI/AAAAAAAAAf0/VhPYLL9uvbQ/s320/laptop+%5BRunning%5D+-+Oracle+VM+VirtualBox_001.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: xx-large;"&gt;Snakes in the Grass&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;A couple of gotchas to look out for&lt;/u&gt;:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Make sure you are using xmount v0.4.4 if you want to use VirtualBox (v3.2.8 or later). &amp;nbsp;A bug in previous versions causes VirtualBox to reject the image. &amp;nbsp;&lt;/li&gt;&lt;li&gt;Make sure you configure your virtual machine with the settings provided by the opengates utility. &amp;nbsp;For example, I needed to configure my VM to use ACPI before the Windows Vista Business OS in my virtual disk would boot.&lt;/li&gt;&lt;li&gt;Make sure you put the virtual disk on the IDE controller. &amp;nbsp;Mine was automatically added to the SATA controller, but would not boot.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-6896274008378134711?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/6896274008378134711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/booting-disk-images-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6896274008378134711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/6896274008378134711'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/booting-disk-images-in-linux.html' title='Booting Disk Images in Linux'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_oJWi-HKKGKE/TL4XuxN6KpI/AAAAAAAAAfs/NpDFs_xVtm0/s72-c/Screenshot-QEMU.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-2174307787501254774</id><published>2010-10-07T12:45:00.000-07:00</published><updated>2010-10-07T12:45:03.135-07:00</updated><title type='text'>Android SMS Parsing</title><content type='html'>&lt;b&gt;There are two ways to skin this cat... but one is much better!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A colleague was looking for help parsing a Android mms/sms database (mmssms.db). &amp;nbsp;It was an archived sqlite file pulled from a computer hard disk drive, apparently created through by a phone/computer sync. &amp;nbsp;The main problem was that the sms table dates were in unix epoch time (with microseconds), ant there were about 2700 entries in the sms table alone.&lt;br /&gt;&lt;br /&gt;Initially, I &amp;nbsp;wrote a command that exported the contents of the "sms" table with sqlite using "select * from sms", read each line, assigned the date data to a variable, removed the microseconds (divide by 1000) from the date data, and used "date -d @$variable" to convert the date. &amp;nbsp;Finally, I tacked on the converted date to the end of the line. &amp;nbsp;The whole thing looked like this:&lt;br /&gt;&lt;blockquote&gt;$ sqlite3 -header mmssms.db "select * from sms" | while read i; do a="$(echo $i)"; b="$(echo "$i" | cut -d '|' -f5 )"; c="$(date -d @$(echo $(($b/1000)))); echo $a\|$c; done&lt;/blockquote&gt;Effective, but not very elegant.&lt;br /&gt;&lt;br /&gt;I suspected there was a way to convert the date in sqlite, and there was. &amp;nbsp;It took me a short while to master it, but essentially, it was "select datetime(date, 'unixepoch', 'localtime') as date from sms". &amp;nbsp;That will only get you the date from each line, however, so the full command looks like this:&lt;br /&gt;&lt;blockquote&gt;$ sqlite3 -header mmssms.db "select _id, thread_id, address, person, datetime(date/1000,'unixepoch','localtime') as date, protocol, read, status, type, reply_path_present, subject, body, service_center, locked from sms"&lt;/blockquote&gt;&amp;nbsp;Still a mouthful, but much faster and cleaner output.&lt;br /&gt;&lt;br /&gt;Finally, I decided that it would be really nice to have all the tables in the database, a total of &amp;nbsp;13, exported to csv for documentation and review. &amp;nbsp;Plus, I needed a way to remember this nifty conversion trick (the same date format is found in Firefox and Chrome histories). &amp;nbsp;So I wrote a program to automate future processing. Two of the tables, sms and threads, had dates that needed to be converted, and the program makes provisions for these tables. &amp;nbsp;You can download it &lt;a href="https://sites.google.com/site/slosleuth/home/parse_android_sms?attredirects=0&amp;amp;d=1"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-2174307787501254774?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/2174307787501254774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/android-sms-parsing.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2174307787501254774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/2174307787501254774'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/android-sms-parsing.html' title='Android SMS Parsing'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3593027146936991450</id><published>2010-10-06T10:51:00.000-07:00</published><updated>2010-10-06T11:26:16.619-07:00</updated><title type='text'>Previewer is Dead, long live CAINE!</title><content type='html'>&lt;b&gt;A brief history...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the summer of 2009, I created a forensic boot disc primarily intended for preview examinations of digital media called, appropriately, "Previewer." &amp;nbsp;It was based on Ubuntu 8.10 and included my home-grown tool, Ipod-ID, a bash script that searches iPod devices for evidence of ownership. &amp;nbsp;Basic use of Previewer was taught at a training event for the Central California chapter of the HTCIA in September, 2009, and investigators from four counties were in attendance.&lt;br /&gt;&lt;br /&gt;Previewer was modeled after &lt;a href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt; 1.0, a forensic boot disc targeted at expert forensic examiners. &amp;nbsp;CAINE was &lt;a href="http://www.caine-live.net/page11/page11.html"&gt;feature rich&lt;/a&gt;, but required a good foundation in computer forensics to fully utilized. &amp;nbsp;My goal was bring a basic forensic examination ability to non-experts so that criminal cases could be filed &lt;i&gt;before &lt;/i&gt;the computer got lost in the computer lab backlog. &amp;nbsp;We debate the merits of that philosophy later.&lt;br /&gt;&lt;br /&gt;With that goal in mind, I wrote a handful of nautilus-scripts to assist layman investigators with examination of digital media, primarily computer hard disk drives. &amp;nbsp;The Nautilus file browser was the main examination tool, the the scripts, accessed with a right click in the file pane, providing examination functionality, including the ability to save data as evidence and produce simple reports about the saved data.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A new beginning...&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Fast forward to today. &amp;nbsp;Previewer remained stagnant after one revision to correct some minor issues with &amp;nbsp;some of the nautilus-scripts. &amp;nbsp;Since then, the Linux kernel has made advancements in hardware support, and the Ubuntu Linux distribution on which Previewer is based has undergone some major changes. &amp;nbsp;More importantly, mounting schemes in most forensics boot discs, including Previewer and CAINE 1.0, were found to be flawed (in limited, but none-the-less important, ways).&lt;br /&gt;&lt;br /&gt;Increased work load and decreased personal free time caused me to turn back the inspiration for Previewer: &lt;a href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt;. &amp;nbsp;CAINE has an active development team and a very capable project manager, &lt;a href="http://www.nannibassetti.com/"&gt;Nanni Bassetti&lt;/a&gt;. &amp;nbsp;CAINE was about to update to version 2.0, and the mount issues were corrected. &amp;nbsp;I contacted Nanni and told him about my scripts and the philosophy behind them. &amp;nbsp;He took a look at the scripts and felt they would be a good addition to CAINE.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.caine-live.net/caine2.0.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="241" src="http://www.caine-live.net/caine2.0.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Therefore, I am happy to announce that &lt;a href="http://www.caine-live.net/index.html"&gt;CAINE 2.0&lt;/a&gt; was release 9/14/2010. &amp;nbsp;It includes a much-improved set of nautilus-scripts from Previewer as well as all the expert tools expected from previous CAINE releases. &amp;nbsp;Anyone accustomed to Previewer should have no trouble with using CAINE 2.0, and in fact, should find it more effective and useful than Previewer. &amp;nbsp;The main "gotcha" is that the administrator account (root) now has a password (i.e, "caine"). &lt;br /&gt;&lt;br /&gt;Please contact Nanni (through the CAINE website) with comments or concerns about the main distribution. &amp;nbsp;You can always contact me regarding the nautilus-scripts (here, by email, or through the CAINE webiste).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3593027146936991450?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3593027146936991450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/previewer-is-dead-long-live-caine.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3593027146936991450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/3593027146936991450'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2010/10/previewer-is-dead-long-live-caine.html' title='Previewer is Dead, long live CAINE!'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-4213174516424902563</id><published>2009-10-20T09:45:00.000-07:00</published><updated>2009-11-03T20:01:48.882-08:00</updated><title type='text'>Processing Vista $RECYCLE.BIN</title><content type='html'>The MS Windows recycle bin differs in Vista from XP.  In XP, an deleted file is moved to the "\Recycler\$SID\ folder where "$SID" is the security identifier of the user deleting the file.  The file is renamed, in the format "D"  An "info2" file is created containing the file's original name, file deleted time, and original file size.  In Linux, the command line tool rifuiti can be used to parse the info2 file.  More information about the XP recycle bin can be found &lt;a href="http://www.cybersecurityinstitute.biz/INFO2.htm"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Vista has a different schema, however.  Deleted files are moved to the "\$RECYCLE.BIN\$SID\" folder, but this time no info2 file is created.  Instead, a pair of files is created: the file itself is renamed randomly beginning with "$R" and an information file containing the 16-bit filename with the same name as the data file only beginning instead with "$I".  Both files take on the extension of the original file.  Deleted folders are subjected to the same deletion scheme, but the files and subdirectories within the deleted folders retain their original names and paths within the directory and are not otherwise represented in the recycle bin.  The original file size and date of deletion are also contained in hex within the file.  More information about the Vista recycle bin can be found &lt;a href="http://www.forensicfocus.com/downloads/forensic-analysis-vista-recycle-bin.pdf"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;In Linux, one can quickly examine all the filenames of deleted files found in the Vista recycle bin.  In the command line, simply change to the "/$RECYLE.BIN/$SID/" directory and issue this simple command:&lt;br /&gt;&lt;blockquote face="courier new" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# strings -el -f \$I*&lt;br /&gt;&lt;/blockquote&gt;The -el flag tells the command to look for 16-bit encoding and "-f" to print the filename of each processed file.  The output resembles the following:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# strings -el -f \$I*&lt;br /&gt;$I3XJZSP.docx: C:\Users\957630\Documents\1234567.docx&lt;br /&gt;$I42NQXL.lnk: C:\Users\Public\Desktop\HP Total Care Advisor.lnk&lt;br /&gt;$I4ULAZJ.url: C:\Users\957630\Desktop\Videos.url&lt;br /&gt;$I96F8EZ.txt: C:\Users\957630\Documents\dm123.txt&lt;br /&gt;$IA7VIFO.lnk: C:\Users\957630\Desktop\Mini400.lnk&lt;br /&gt;...&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;File size and deletion date of files of interest can be determined from a hex view of the file.&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;0000000: 0100 0000 0000 0000 da26 0000 0000 0000  .........&amp;amp;......&lt;br /&gt;0000010: d02a 0401 4c5c c901 4300 3a00 5c00 5500  .*..L\..C.:.\.U.&lt;br /&gt;0000020: 7300 6500 7200 7300 5c00 3900 3500 3700  s.e.r.s.\.9.5.7.&lt;br /&gt;0000030: 3600 3300 3000 5c00 4400 6f00 6300 7500  6.3.0.\.D.o.c.u.&lt;br /&gt;0000040: 6d00 6500 6e00 7400 7300 5c00 3100 3200  m.e.n.t.s.\.1.2.&lt;br /&gt;0000050: 3300 3400 3500 3600 3700 2e00 6400 6f00  3.4.5.6.7...d.o.&lt;br /&gt;0000060: 6300 7800 0000 0000 0000 0000 0000 0000  c.x.............&lt;br /&gt;0000070: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;0000080: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;The first 8-bits of the file is the file header,  the second is the file size, and the third is the deletion date.  Thus, for this file, the original file size was 0xda26 or 55846 bytes:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# echo $((0xda26))&lt;br /&gt;55846&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;And, the file deletion date was 0xd02a04014c5cc901 or "Fri Dec 12 03:23:06 PST 2008."  This determination is a little more difficult and would benefit from a script, but for now, I'll show how its done manually.&lt;br /&gt;&lt;br /&gt;Windows Time is recorded in Little endian format, thus we start with  0x01c95c4c01042ad0 which is 128735545861090000 nanoseconds since January 1, 1601.  We devide by 10,000,000 (to convert from nanoseconds to seconds), and then subtract 11644473600 (the number of seconds between Windows Time and Unix Time, which is the number of seconds since January 1, 1970).  Finally we convert to standard notation with the "date" command.&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;# echo $((0x01c95c4c01042ad0))&lt;br /&gt;128735545861090000&lt;br /&gt;&lt;br /&gt;# echo $((128735545861090000/10000000))&lt;br /&gt;12873554586&lt;br /&gt;&lt;br /&gt;# echo $((12873554586-11644473600))&lt;br /&gt;1229080986&lt;br /&gt;&lt;br /&gt;# date -d @1229080986&lt;br /&gt;Fri Dec 12 03:23:06 PST 2008&lt;br /&gt;&lt;/blockquote&gt;In one command, this looks like:&lt;br /&gt;&lt;blockquote style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;# date -d @$((((0x01c95c4c01042ad0)/10000000)-11644473600))&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Fri Dec 12 03:23:06 PST 2008&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;I'll contemplate writing a script to automate the whole process--filename, file size, deletion date--in the future.  But for now, this will work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-4213174516424902563?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/4213174516424902563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/10/processing-vista-recyclebin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4213174516424902563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/4213174516424902563'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/10/processing-vista-recyclebin.html' title='Processing Vista $RECYCLE.BIN'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-5267445704771337675</id><published>2009-08-04T10:18:00.000-07:00</published><updated>2009-08-04T11:03:33.347-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scripts'/><category scheme='http://www.blogger.com/atom/ns#' term='preview'/><title type='text'>linuxsleuthing code project</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Computers, iPods, Thumbdrives, oh My!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I've been busy with a major case during which many smaller cases have walked through my door.  I began longing for a way for criminal investigators to be able to conduct preview examinations of digital storage devices without having to drop the devices off at the computer lab.&lt;br /&gt;&lt;br /&gt;Many of the questions I receive are relatively simple to answer:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;"Who owns this computer/iPod?"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Does this computer have any illegal images/videos/files?"&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"Are there any emails/chats between X and Y stored on this device?"&lt;/li&gt;&lt;/ul&gt;While I understand a preview examination of a digital storage device &lt;span style="font-weight: bold;"&gt;is not&lt;/span&gt; the equivalent of full forensic examination, the plethora of storage devices and the dwindling number of public sector forensic computer examiners begs for an intermediate solution.  And, while forensically sound boot-discs exist, e.g., &lt;a href="http://www.caine-live.net/"&gt;CAINE&lt;/a&gt; or the FBI's ImageScan, they do not lend themselves to criminal investigators with little or no computer forensics training (CAINE) and/or they only do one thing well (ImageScan).&lt;br /&gt;&lt;br /&gt;My idea is to modify a disc like CAINE to include scripts accessible through a right-click menu that make basic digital storage device examination simpler.  Virtually anyone who uses a computer understands the basics of navigating a file system with a file browser, and Nautilus is the file browser of choice in CAINE which utilizes the Gnome desktop.  Nautilus has a built-in option for right-click scripts, and you'll find five already deployed in CAINE.  The CAINE scripts have limitations and appear to have been obtained from &lt;a href="http://g-scripts.sourceforge.net/"&gt;g-scripts&lt;/a&gt;.  When using them in a filtered file list (e.g., searching for documents in Nautilus), the scripts don't always work, nor are the scripts from a root Nautilus window.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;My Solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I created (and continue to create) a series of Nautilus scripts with which to remaster CAINE or add to an installed Linux distro.  The problem has been that I do this across five different computer platforms, tweaking things as I go, to the point I'm not sure on which computer any particular script resides.  Plus, no one else has access to them for use/testing/improvement, at least until I remaster CAINE and release.  Therefore I have created a the &lt;a href="http://code.google..com/p/linuxsleuthing/"&gt;LinuxSleuthing Google Code Project&lt;/a&gt;.  I'll be populating the site with the scripts I create and encourage any feedback in the form of requests, bugs, suggestions, or improvement to the code.&lt;br /&gt;&lt;br /&gt;The HTCIA Central California Chapter will be conducting training in September in the use of CAINE with many of these scripts, with primary focus on finding and previewing images, basic keyword searching, and iPod ownership identification, so the immediate focus of the scripts posted to the code project will be on these topics.&lt;br /&gt;&lt;br /&gt;The scripts will follow the unix principle of "do one thing and do it well."  They are not designed to run blind, finding all occurrences of index.dat, for example, and parsing them for histories.  It will be up to the user to find the files and apply the parsing script.  While this might sound labor intensive, it allows the user to surgically strike at desired data as time allows rather than wait for whole disk searches.  That said, this concept may morph as real world trials expose flaws or beg enhancements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-5267445704771337675?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://code.google.com/p/linuxsleuthing/' title='linuxsleuthing code project'/><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/5267445704771337675/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/08/linuxsleuthing-code-project.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5267445704771337675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/5267445704771337675'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/08/linuxsleuthing-code-project.html' title='linuxsleuthing code project'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-7767833372234514743</id><published>2009-03-10T11:28:00.000-07:00</published><updated>2012-01-19T14:14:15.053-08:00</updated><title type='text'>Identifying Owners of Stolen iPods</title><content type='html'>&lt;h3&gt;iTunes is your friend&lt;/h3&gt;I have gone from years of computer forensics without ever encountering Apple Products in any meaningful way to seeming only dealing with Apple laptops and iPods.  I've been asked to attempt to identify the previous owners of suspected stolen devices.  Today I'll discuss the iPod.&lt;br /&gt;iPods are obviously small, portable devices that are easily stolen.  I don't own  one myself, so I don't know much about their internal functioning.  I do know from experience that depending on the generation of the device, the file system can by fat32 or hfs+.&lt;br /&gt;&lt;h4&gt;Determining the current username&lt;/h4&gt;One of the first things I discovered in trying to identify the current owner is that the iPod can be plugged into a Windows or Mac computer with iTunes installed, and iTunes will reveal the user name.  Turning on the device and navigating the menu system will do the same.  Neither effort is forensically sound, however, and changes to the stored data can/will occur.&lt;br /&gt;&lt;br /&gt;In an Ubuntu Linux system (properly configured to not automount), the user name is displayed in the Disk Mounter applet or in Nautilus as "&lt;i&gt;User&lt;/i&gt;'s iPod" where User is the volume name of the data partition on the iPod.  You can see this with the SleuthKit's mmls command using something like:&lt;br /&gt;&lt;div style="color: #3366ff;"&gt;# mmls /dev/sdf&lt;/div&gt;The problem with this approach is:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;This is the &lt;u&gt;current&lt;/u&gt; username.  And it's just a username.  If it's something like: Chuck E. Cheese, well you don't have much of a clue as to who the person is.&lt;/li&gt;&lt;li&gt;If the iPod is stolen and the owner data has been changed by theif, then you don't have the victim's username, but instead the suspect's.&lt;/li&gt;&lt;/ol&gt;&lt;h4&gt;Determining the victim's real name/email address&lt;/h4&gt;A little "googling" led me to understand that iTunes purchased music contains the purchaser's email address embedded in the song to help Apple track music pirates.  A little hexeditor fun helped me determine that there is quite a bit of information embedded in the .m4p songs from iTunes, including email address of the purchaser AND the first and last name.  The name's source looks to be the account information from registering with iTunes (which requires credit card payment), but I have not confirmed this.&lt;br /&gt;My approach to determining the victim's real name is to search the unallocated portions of the partition for the tag "name" followed immediately by an alphanumeric character (alphanumeric in the event that I'm incorrect in the assumption that the music purchaser's name coming from the iTunes credit card-verified account). &lt;br /&gt;Using the Sleuthkit's blkls command to extract unallocated blocks, we pipe them through grep to search for the name tag:&lt;br /&gt;# &lt;span style="color: #3366ff;"&gt;blkls /dev/sdf2 | grep -aE 'name[0-9a-zA-Z]+'&lt;/span&gt;&lt;br /&gt;This could be similarly accomplished with:&lt;br /&gt;# &lt;span style="color: #3366ff;"&gt;blkls /dev/sdf2 | grep -aE 'name[[:alnum:]]+'&lt;/span&gt;&lt;br /&gt;The breakdown of the command is as follows:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="color: #3366ff;"&gt;blkls /dev/sdf2&lt;/span&gt; - blkls sends unallocated blocks to standard input (the terminal window).  Rather than choose the raw device /dev/sdf2 and designate an offset, I have chosen to address the partition directly for simplicity.&lt;/li&gt;&lt;li&gt;&lt;span style="color: #3366ff;"&gt;grep -aE&lt;/span&gt; - grep searches the data piped to the terminal.  The -a flag treats the data as binary, display matches in the terminal rather than just reporting match occurred.  The -E treats the following quoted expression as a regular expression rather than matching it literally.&lt;/li&gt;&lt;li&gt;&lt;span style="color: #3366ff;"&gt;'name[0-9a-zA-Z]+'&lt;/span&gt; or &lt;span style="color: #3366ff;"&gt;'name[[:alnum:]]+'&lt;/span&gt; - both expressions mean: search for the ascii string "name" followed immediately by at least one number or letter.&lt;/li&gt;&lt;/ol&gt;The grep search could be run against the allocated data as well, to compare the results to the unallocated data as you assess the likelihood the unallocated matches represent information about a previous owner.&lt;br /&gt;This methodology represents a "down and dirty" approach to determining ownership.  It does not provide a well documented location evidence can be found to prove theft for court purposes.  Consider it a triage approach to determining ownership to propell a case forward.  Further documentation would be needed to produce useful forensic information, such as documenting byte offset, carving the files from which the hits were made, etc., but this exceeds the scope of this article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-7767833372234514743?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/7767833372234514743/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/03/identifying-owners-of-stolen-ipods.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/7767833372234514743'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3901191200489940749/posts/default/7767833372234514743'/><link rel='alternate' type='text/html' href='http://linuxsleuthing.blogspot.com/2009/03/identifying-owners-of-stolen-ipods.html' title='Identifying Owners of Stolen iPods'/><author><name>slo.sleuth</name><uri>http://www.blogger.com/profile/16835949205888689041</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://1.bp.blogspot.com/_oJWi-HKKGKE/S2C-Ol6gDzI/AAAAAAAAAZ4/Yy5FDiTVj5s/S220/brunocb-sherlock-holmes-tux-5975.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3901191200489940749.post-3656487529369463370</id><published>2009-03-10T11:11:00.000-07:00</published><updated>2009-03-10T11:34:05.635-07:00</updated><title type='text'>Using grep to Unearth Old Windows User Names (7/30/08):</title><content type='html'>&lt;h3&gt;Identifying Deleted User Accounts in Windows&lt;/h3&gt;&lt;br /&gt;I was  recently presented with three laptop computers suspected as stolen.  My task was to identify the owners.  I chose to use a Linux forensic boot disk (one that would not automatically mount the partitions) to conduct the examination to avoid disassembling the computers to access the hard disk drives.&lt;br /&gt;&lt;br /&gt;It became apparent on the first computer that the original user account(s) were deleted.  There was a major discrepancy between the single user account (in one of the suspect's names) and in the installation date of the Windows Vista OS.&lt;br /&gt;&lt;br /&gt;After studying Internet Explorer index.dat files recently, I decided to target deleted index.dat content.  IE index.dat files contain the usernames of the active user browsing the web with Internet Explorer, as well as some local file system activities.  I used the following command from the Linux terminal to fish for old user account names:&lt;br /&gt;&lt;br /&gt;$ &lt;span style="color: rgb(51, 102, 255);"&gt;tr '[:cntrl:]' '\n' &lt; /dev/sda | grep -abE --colour=auto '(((:[0-9]{16,16}|Visited):[[:space:]])|Cookie:).+@'&lt;/span&gt; &lt;br /&gt;&lt;br /&gt;The command, broken down, does the following:  &lt;ol&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;tr '[:cntrl:]' '\n'&lt;/span&gt; - translates control characters to line feeds to keep the grep memory buffer from exhausting.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;&lt; /dev/sda&lt;/span&gt; - feeds the raw data from device sda (the laptop hard disk) into the translate command.  The device may be substituted with any file, such as a raw disk image.&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;| grep -abE --colour=auto '(((:[0-9]{16,16}|Visited):[[:space:]])|Cookie:).+@'&lt;/span&gt; finds the Internet Explorer cookie and history index.dat data that contains user names.  The The hits are in color to help them stand out and the results can be redirected to a text file by appending the command with "&gt; grep.results.txt".  Broken down further:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;grep -abE&lt;/span&gt; : a=treat binary as text; b=show byte offset; E=treat as extended regular expression&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;--colour=auto &lt;/span&gt;:  show regex matches in color&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;'(((:[0-9]{16,16}|Visited):[[:space:]])|Cookie:).+@'&lt;/span&gt; : Match expressions ":&lt;16&gt;: &lt;username&gt;@" or "Visited:&lt;user&gt; &lt;username&gt;@" or "Cookie:&lt;user&gt;&lt;username&gt;@" where &lt;username&gt; is &lt;user&gt; any name of one character or more.&lt;/username&gt;&lt;/username&gt;&lt;/username&gt;&lt;/username&gt;&lt;/li&gt;&lt;/ul&gt;Example of Command Output:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;254468840:&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;:2007052620070527:&lt;/span&gt; user@:Host: cis.cuesta.edu&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;286125672:&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Cookie:user@&lt;/span&gt;www.ibm.com/rc&lt;br /&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;161464680:&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Visited: user@&lt;/span&gt;http://encarta.msn.com/proscribed.html&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The rest of the story&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I analyzed the hits and observed user names inconsistent with those in the Vista /USERS directory.  Further examination of the new user names showed they existed previous to the current user account (as determined from the index.dat date code), and urls for the users MySpace page.  The newly discovered user was contacted through his MySpace page and identified the computer as stolen in June, 2007.&lt;br /&gt;&lt;br /&gt;This a simplified discussion of the full process, which included examining the file system to determine existing users using The Sleuthkit.  The purpose of the article is to demonstrate how grep can be used from a boot CD or USB device to locate Windows artifacts that show deleted accounts that can be used to identify the account holders.&lt;br /&gt;&lt;br /&gt;In this case. the hard disk drive being examined was never mounted.  Grep searches can be directed against unallocated sectors through a similar process which I will discuss at a later time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3901191200489940749-3656487529369463370?l=linuxsleuthing.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://linuxsleuthing.blogspot.com/feeds/3656487529369463370/comment
