<?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-30542938</id><updated>2012-01-18T13:08:16.433-05:00</updated><category term='linux'/><category term='volatility'/><category term='modifications'/><category term='blackhat dc'/><category term='docs'/><category term='installation'/><category term='tools'/><category term='news'/><category term='cygwin'/><category term='timeline'/><category term='vmware'/><category term='registry'/><category term='CentOS'/><category term='elf'/><category term='PTK'/><category term='memory'/><category term='john jay'/><category term='links'/><category term='nothing'/><category term='permeate'/><category term='misc'/><category term='hope'/><category term='life'/><category term='CEIC'/><category term='VDP'/><category term='OMFW'/><category term='misc forensic'/><category term='fun stuff'/><category term='PyFlag'/><category term='nyc4sec'/><category term='queens college'/><category term='microsoft'/><category term='open question'/><category term='EnScript'/><category term='work'/><category term='xp'/><category term='conferences'/><category term='vista'/><category term='talks'/><category term='google'/><category term='kcore'/><title type='text'>JL's stuff</title><subtitle type='html'>a boring blog about my interests, projects and research...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30542938.post-4639704636010662439</id><published>2011-09-13T08:26:00.007-04:00</published><updated>2011-09-28T17:06:31.505-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OMFW'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='timeline'/><category scheme='http://www.blogger.com/atom/ns#' term='VDP'/><category scheme='http://www.blogger.com/atom/ns#' term='docs'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Volatility 2.0: Timeliner, RegistryAPI, evtlogs and more</title><content type='html'>Back in July &lt;a href="http://gleeda.blogspot.com/2011/08/volatility-20-and-omfw.html"&gt;I gave a talk&lt;/a&gt; at &lt;a href="https://www.volatilesystems.com/default/omfw"&gt;OMFW&lt;/a&gt; about extracting timeline data from a memory sample using the Volatility framework.  Now has come the time to release the plugins that came along with that talk.  &lt;br /&gt;&lt;br /&gt;In addition to the plugins I &lt;a href="http://jls-scripts.googlecode.com/files/Timeliner%20Release%20Documentation.pdf"&gt;have included a whitepaper&lt;/a&gt; on how these plugins were created and used.  It is released more in hopes that people will see how to use the framework and be able to write their own plugins or extend existing ones.&lt;br /&gt;&lt;br /&gt;I have included all these plugins in a zip file:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;$ unzip -l timeliner_9-2011.zip &lt;br /&gt;Archive:  timeliner_9-2011.zip&lt;br /&gt;  Length     Date   Time    Name&lt;br /&gt; --------    ----   ----    ----&lt;br /&gt;    14455  09-28-11 14:40   volatility/plugins/timeliner.py&lt;br /&gt;    10789  09-27-11 09:24   volatility/plugins/evtlogs.py&lt;br /&gt;   147458  09-09-11 11:03   volatility/plugins/malware.py&lt;br /&gt;    13559  09-22-11 19:09   volatility/plugins/registryapi.py&lt;br /&gt;     8554  09-18-11 21:33   volatility/plugins/getsids.py&lt;br /&gt;    40993  09-22-11 16:29   volatility/plugins/getservicesids.py&lt;br /&gt; --------                   -------&lt;br /&gt;   235808                   6 files&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;evtlogs.py: plugin to parse Evt logs from XP/2K3&lt;/li&gt;&lt;li&gt;registryapi.py: plugin for routine registry actions&lt;/li&gt;&lt;li&gt;getservicesids.py: plugin to collect and calculate service SIDs (used with the new getsids and evtlogs&lt;/li&gt;&lt;li&gt;timeliner.py: the timeline creating script that pulls everything together&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mnin.blogspot.com/"&gt;MHL&lt;/a&gt;'s &lt;a href="http://malwarecookbook.googlecode.com/svn/trunk/malware.py"&gt;malware malware plugins (malware.py)&lt;/a&gt; are included only for convenience.  You can also download them from his repository and check there for updates.&lt;br /&gt;&lt;br /&gt;I would like to thank MHL and AW for their valuable feedback and Bertha M for extensive testing of the timeliner plugins.  The links to the paper and plugins are below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jls-scripts.googlecode.com/files/Timeliner%20Release%20Documentation.pdf"&gt;Timeliner Release Documentation&lt;/a&gt; (PDF)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jls-scripts.googlecode.com/files/timeliner_9-2011.zip"&gt;timeliner plugins&lt;/a&gt; (ZIP)&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Note: Any updates to these plugins will appear in my &lt;a href="https://github.com/gleeda/Volatility-Plugins"&gt;github repository&lt;/a&gt; first.&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4639704636010662439?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4639704636010662439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4639704636010662439' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4639704636010662439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4639704636010662439'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/09/volatility-20-timeliner-registryapi.html' title='Volatility 2.0: Timeliner, RegistryAPI, evtlogs and more'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-121776687494767990</id><published>2011-08-08T14:27:00.003-04:00</published><updated>2011-08-08T14:47:33.240-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OMFW'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Volatility 2.0 and OMFW</title><content type='html'>In case you missed it, &lt;a href="http://volatility.tumblr.com/post/8427878763/volatility-2-0-release-open-memory-forensics-workshop"&gt;Volatility 2.0 has been released&lt;/a&gt;!  Please download it and test it out and let us know if you have any problems via the &lt;a href="http://code.google.com/p/volatility/issues/list"&gt;"issues area" of the Google Code project&lt;/a&gt;.  We have &lt;a href="http://code.google.com/p/volatility/w/list"&gt;lots of documentation&lt;/a&gt; and for those on Windows who don't like to install Python, there is a standalone executable available in the &lt;a href="http://code.google.com/p/volatility/downloads/list"&gt;downloads section&lt;/a&gt;.  Make sure to check out the &lt;a href="http://code.google.com/p/volatility/wiki/FAQ"&gt;FAQ wiki&lt;/a&gt; which contains information on what is supported and how to use &lt;a href="http://mnin.blogspot.com/"&gt;MHL&lt;/a&gt;'s malware plugins.&lt;br /&gt;&lt;br /&gt;Some &lt;a href="https://www.volatilesystems.com/default/omfw"&gt;OMFW&lt;/a&gt; materials have been released:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://amnesia.gtisc.gatech.edu/~moyix/OMFW_Virtuoso.pdf"&gt;Moyix's slides&lt;/a&gt; (pdf).&lt;br /&gt;&lt;a href="http://mnin.blogspot.com/2011/06/examining-stuxnets-footprint-in-memory.html"&gt;MHL's Stuxnet blogpost and slides&lt;/a&gt;.&lt;br /&gt;&lt;a href="https://docs.google.com/leaf?id=0B7mg0ZBnpGuOZjVlYjJmMWMtYTgyYy00OGVlLTkxNmYtZWM2YmJjNzc1Zjc0&amp;hl=en_US"&gt;My slides&lt;/a&gt; (google docs)&lt;br /&gt;&lt;br /&gt;You can help with the development of Volatility by giving us suggestions for plugins, writing documentation or donating malware samples.  Check out the &lt;a href="http://code.google.com/p/volatility/wiki/FAQ"&gt;FAQ&lt;/a&gt; for how to do all of the above.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-121776687494767990?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/121776687494767990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=121776687494767990' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/121776687494767990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/121776687494767990'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/08/volatility-20-and-omfw.html' title='Volatility 2.0 and OMFW'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7365930716092054803</id><published>2011-04-30T22:17:00.003-04:00</published><updated>2012-01-06T08:32:22.080-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Volatility 1.4 UserAssist plugin</title><content type='html'>From a computer forensics standpoint, userassist keys can provide a lot of information about user activity (see the &lt;a href="http://windowsir.blogspot.com/2011/04/using-regripper.html"&gt;Harlan's posts&lt;/a&gt; for more information).  &lt;br /&gt;&lt;br /&gt;After looking at &lt;a href="http://blog.didierstevens.com/"&gt;Didier Steven&lt;/a&gt;'s article on userassist keys for Windows 7 from &lt;a href="http://intotheboxes.wordpress.com/2010/01/01/into-the-boxes-issue-0x0/"&gt;Into the Boxes issue 0x0&lt;/a&gt; and RegRipper, I decided to write up a plugin that would pull out UserAssist keys from all versions of windows for &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One thing I decided to add was an enumeration of GUIDs to human friendly folder names, which were obtained from &lt;a href="http://msdn.microsoft.com/en-us/library/dd378457%28v=vs.85%29.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The plugin is available &lt;a href="https://github.com/gleeda/Volatility-Plugins/raw/master/userassist.py"&gt;in my git repository&lt;/a&gt;.  Simply download and place into your volatility/plugins directory and you're set.&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;Update: This plugin is now part of the core &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility code&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Example Output&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Below you can see some snippets of output for Windows 7.  The fields are pretty self explanatory, though you can read Didier Steven's article for more details.  The hex dump is the actual data from which this information was parsed, just so you can verify it yourself.&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ ./vol.py -f win7.vmem --profile=Win7SP0x86 userassist --no-cache&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \??\C:\Users\admin\ntuser.dat&lt;br /&gt;Key name: Count&lt;br /&gt;Last updated: 2010-07-06 22:40:25 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_BINARY    Microsoft.Windows.GettingStarted : &lt;br /&gt;Count:          14&lt;br /&gt;Focus Count:    21&lt;br /&gt;Time Focused:   0:07:00.500000&lt;br /&gt;Last updated:   2010-03-09 19:49:20 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 0E 00 00 00 15 00 00 00 A0 68 06 00    .............h..&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF EC FE 7B 9C    ..............{.&lt;br /&gt;0040   C1 BF CA 01 00 00 00 00                            ........&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_CTLSESSION : &lt;br /&gt;Count:          187&lt;br /&gt;Focus Count:    1205&lt;br /&gt;Time Focused:   6:25:06.216000&lt;br /&gt;Last updated:   1970-01-01 00:00:00 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 BB 00 00 00 B5 04 00 00 B4 90 60 01    ..............`.&lt;br /&gt;0010   10 00 00 00 39 00 00 00 E9 67 28 00 7B 00 44 00    ....9....g(.{.D.&lt;br /&gt;0020   36 00 35 00 32 00 33 00 31 00 42 00 30 00 2D 00    6.5.2.3.1.B.0.-.&lt;br /&gt;0030   42 00 32 00 46 00 31 00 2D 00 34 00 38 00 35 00    B.2.F.1.-.4.8.5.&lt;br /&gt;&lt;br /&gt;[snip]&lt;br /&gt;&lt;br /&gt;REG_BINARY    %windir%\system32\displayswitch.exe : &lt;br /&gt;Count:          13&lt;br /&gt;Focus Count:    19&lt;br /&gt;Time Focused:   0:06:20.500000&lt;br /&gt;Last updated:   2010-03-09 19:49:20 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 0D 00 00 00 13 00 00 00 60 CC 05 00    ............`...&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF EC FE 7B 9C    ..............{.&lt;br /&gt;0040   C1 BF CA 01 00 00 00 00                            ........&lt;br /&gt;&lt;br /&gt;REG_BINARY    %windir%\system32\calc.exe : &lt;br /&gt;Count:          12&lt;br /&gt;Focus Count:    17&lt;br /&gt;Time Focused:   0:05:40.500000&lt;br /&gt;Last updated:   2010-03-09 19:49:20 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 0C 00 00 00 11 00 00 00 20 30 05 00    ............ 0..&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF EC FE 7B 9C    ..............{.&lt;br /&gt;0040   C1 BF CA 01 00 00 00 00                            ........&lt;br /&gt;                          ........&lt;br /&gt;&lt;br /&gt;REG_BINARY    Z:\vmware-share\apps\odbg110\OLLYDBG.EXE : &lt;br /&gt;Count:          11&lt;br /&gt;Focus Count:    266&lt;br /&gt;Time Focused:   1:19:58.045000&lt;br /&gt;Last updated:   2010-03-18 01:56:31 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 0B 00 00 00 0A 01 00 00 69 34 49 00    ............i4I.&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF 70 3B CB 3A    ............p;.:&lt;br /&gt;0040   3E C6 CA 01 00 00 00 00                            &gt;.......&lt;br /&gt;&lt;br /&gt;REG_BINARY    %ProgramFiles%\Microsoft SDKs\Windows\v7.0\Bin\vsstools\vshadow.exe : &lt;br /&gt;Count:          0&lt;br /&gt;Focus Count:    67&lt;br /&gt;Time Focused:   0:06:12.811000&lt;br /&gt;Last updated:   1970-01-01 00:00:00 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 00 00 00 00 43 00 00 00 57 AE 05 00    ........C...W...&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF 00 00 00 00    ................&lt;br /&gt;0040   00 00 00 00 00 00 00 00                            ........&lt;br /&gt;&lt;br /&gt;REG_BINARY    %windir%\regedit.exe : &lt;br /&gt;Count:          2&lt;br /&gt;Focus Count:    8&lt;br /&gt;Time Focused:   0:03:22.626000&lt;br /&gt;Last updated:   2010-03-17 23:40:36 &lt;br /&gt;&lt;br /&gt;0000   00 00 00 00 02 00 00 00 08 00 00 00 8E 15 03 00    ................&lt;br /&gt;0010   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0020   00 00 80 BF 00 00 80 BF 00 00 80 BF 00 00 80 BF    ................&lt;br /&gt;0030   00 00 80 BF 00 00 80 BF FF FF FF FF 90 3A 93 3E    .............:.&gt;&lt;br /&gt;0040   2B C6 CA 01 00 00 00 00                            +.......&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Here you can see an example of output from Windows XP:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ ./vol.py -f XPSP3.vmem --profile=WinXPSP3x86 userassist --no-cache&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\Administrator\NTUSER.DAT&lt;br /&gt;Key name: Count&lt;br /&gt;Last updated: 2010-11-24 16:35:34 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_BINARY    UEME_CTLSESSION : &lt;br /&gt;0000   91 52 5B 0E 1F 00 00 00                            .R[.....&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_CTLCUACount:ctor : &lt;br /&gt;ID:             1&lt;br /&gt;Count:          2&lt;br /&gt;Last updated:   1970-01-01 00:00:00 &lt;br /&gt;&lt;br /&gt;0000   01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00    ................&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPATH    : &lt;br /&gt;ID:             31&lt;br /&gt;Count:          589&lt;br /&gt;Last updated:   2010-11-24 16:30:49 &lt;br /&gt;&lt;br /&gt;0000   1F 00 00 00 52 02 00 00 A0 91 09 F4 F4 8B CB 01    ....R...........&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPATH:D:\SETUP.EXE : &lt;br /&gt;ID:             30&lt;br /&gt;Count:          6&lt;br /&gt;Last updated:   2010-09-20 15:02:47 &lt;br /&gt;&lt;br /&gt;0000   1E 00 00 00 0B 00 00 00 E0 85 39 E3 D4 58 CB 01    ..........9..X..&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPIDL    : &lt;br /&gt;ID:             31&lt;br /&gt;Count:          124&lt;br /&gt;Last updated:   2010-11-24 14:19:29 &lt;br /&gt;&lt;br /&gt;0000   1F 00 00 00 81 00 00 00 50 78 79 9B E2 8B CB 01    ........Pxy.....&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPIDL:%csidl2%\Microsoft Visual Basic 6.0 : &lt;br /&gt;ID:             1&lt;br /&gt;Count:          2&lt;br /&gt;Last updated:   2009-05-12 02:28:10 &lt;br /&gt;&lt;br /&gt;0000   01 00 00 00 02 00 00 00 B0 1E DB 4A A9 D2 C9 01    ...........J....&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPATH:C:\Program Files\Microsoft Visual Studio\VB98\VB6.EXE : &lt;br /&gt;ID:             1&lt;br /&gt;Count:          1&lt;br /&gt;Last updated:   2009-05-12 02:28:10 &lt;br /&gt;&lt;br /&gt;0000   01 00 00 00 06 00 00 00 50 62 FC 4A A9 D2 C9 01    ........Pb.J....&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPIDL:C:\Documents and Settings\All Users\Start Menu\Windows Update.lnk : &lt;br /&gt;ID:             1&lt;br /&gt;Count:          1&lt;br /&gt;Last updated:   2009-05-12 02:28:36 &lt;br /&gt;&lt;br /&gt;0000   01 00 00 00 06 00 00 00 F0 D0 A1 5A A9 D2 C9 01    ...........Z....&lt;br /&gt;&lt;br /&gt;REG_BINARY    UEME_RUNPATH:C:\WINDOWS\system32\wupdmgr.exe : &lt;br /&gt;ID:             31&lt;br /&gt;Count:          2&lt;br /&gt;Last updated:   2010-11-24 14:50:05 &lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Shoutz to ikelos for helping me optimize this :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;Into the Boxes issue 0x0 &lt;a href="http://intotheboxes.wordpress.com/2010/01/01/into-the-boxes-issue-0x0/"&gt;http://intotheboxes.wordpress.com/2010/01/01/into-the-boxes-issue-0x0/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;RegRipper &lt;a href="http://regripper.wordpress.com/"&gt;http://regripper.wordpress.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7365930716092054803?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7365930716092054803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7365930716092054803' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7365930716092054803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7365930716092054803'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/04/volatility-14-userassist-plugin.html' title='Volatility 1.4 UserAssist plugin'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3465301702995917044</id><published>2011-04-05T10:11:00.014-04:00</published><updated>2011-11-15T09:53:04.011-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='VDP'/><title type='text'>What's the Difference? [A Brief Volatility 1.4 Plugin Tutorial]</title><content type='html'>So if you come to this blog, you've most likely heard of &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility&lt;/a&gt;.  You're probably also a user... maybe you've written some plugins, maybe not.  Most people tend to fall into the latter category, though they may be be power users.  Today I thought I'd go over a few things that might make it easier for people to start writing their own plugins for simple useful things, because even though the Volatility 1.4 isn't officially released doesn't mean that you can't &lt;a href="http://gleeda.blogspot.com/2011/03/volatility-14-getplugins-script.html"&gt;enjoy it in the meantime&lt;/a&gt; :-)  &lt;br /&gt;&lt;br /&gt;A common way that people start their analysis is to look at differences in output of plugins that represent what the OS knows about (pslist/modules/connections/sockets etc) vs scanning for possible hidden/unlinked items.  Examples of this can be seen in Jesse Kornblum's &lt;a href="http://jessekornblum.livejournal.com/265048.html"&gt;pstotal&lt;/a&gt;, &lt;a href="http://blog.commandlinekungfu.com/2010/12/episode-127-making-difference.html"&gt;Command Line Kung Fu's Making a Difference&lt;/a&gt; and &lt;a href="http://mnin.blogspot.com/"&gt;MHL&lt;/a&gt;'s &lt;a href="http://code.google.com/p/volatility/wiki/CommandReference#psxview"&gt;psxview&lt;/a&gt; (which actually is very useful).  &lt;br /&gt;&lt;br /&gt;If you look at some of these examples, you might think to yourself that it's difficult to write a plugin to get a process difference, but it's really not!  You can use &lt;a href="http://docs.python.org/tutorial/classes.html#inheritance"&gt;inheritance&lt;/a&gt; to make your life easier.  &lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;PSList vs. PSScan2&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Below is a complete plugin for printing out the difference between &lt;tt&gt;pslist&lt;/tt&gt; and &lt;tt&gt;psscan2&lt;/tt&gt;, which we will go over in detail.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  1 import volatility.plugins.taskmods as taskmods&lt;br /&gt;  2 import volatility.plugins.filescan as filescan&lt;br /&gt;  3 &lt;br /&gt;  4 class PSDiff(filescan.PSScan2):&lt;br /&gt;  5     """Print processes found in psscan2, but not in pslist"""&lt;br /&gt;  6     &lt;br /&gt;  7     def __init__(self, config, *args):&lt;br /&gt;  8         filescan.PSScan2.__init__(self, config, *args)&lt;br /&gt;  9     &lt;br /&gt; 10     def calculate(self):&lt;br /&gt; 11         pslist = taskmods.PSList(self._config).calculate()&lt;br /&gt; 12         pids = []&lt;br /&gt; 13         for task in pslist:&lt;br /&gt; 14             pids.append(task.UniqueProcessId.v())&lt;br /&gt; 15         &lt;br /&gt; 16         psscan = filescan.PSScan2.calculate(self)&lt;br /&gt; 17         for task in psscan:&lt;br /&gt; 18             if task.UniqueProcessId.v() not in pids:&lt;br /&gt; 19                 yield task&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;First you need to import the plugin files that contain the classes you want to inherit into your plugin file.  In this case PSList is defined in volatility/plugins/taskmods.py and PSScan2 is defined in volatility/plugins/filescan.py.  You can see the import in lines (1-2).  Now you have to define the class for your plugin (line 4).  Try to give it a meaningful name for what it does, here we will name it PSDiff.  Classes should be named in &lt;a href="http://en.wikipedia.org/wiki/CamelCase"&gt;CamelCase&lt;/a&gt;.  In the parentheses after the class name we will specify which classes we want to inherit.  Since we want processes that are only found in psscan2 output, we will use the &lt;tt&gt;render_text&lt;/tt&gt; output function of psscan2 without having to redefine it.  Therefore, since we want for our new class to be more like psscan2, we choose this class to inherit.  We specify it as &lt;tt&gt;filescan.PSScan2&lt;/tt&gt; because we had imported the plugin file as "filescan" and the class for pssscan2 is named "PSScan2". &lt;br /&gt;&lt;br /&gt;Next on line 5, we add a description of what this plugin does as a multiline comment.  Whatever you type here will appear in the &lt;a href="http://code.google.com/p/volatility/wiki/Vol14PluginInterface#Base_Class"&gt;help function&lt;/a&gt; when you run &lt;tt&gt;python vol.py [plugin] -h&lt;/tt&gt;, or just &lt;tt&gt;python vol.py -h&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;Lines 7-8 are the &lt;a href="http://code.google.com/p/volatility/wiki/Vol14PluginInterface#Options"&gt;initialization and options section&lt;/a&gt; of the plugin.  We are not adding any command line options to this plugin and are just initializing the PSScan2 class that we inherited.&lt;br /&gt;&lt;br /&gt;Lines 10-19 define the &lt;a href="http://code.google.com/p/volatility/wiki/Vol14PluginInterface#Calculating"&gt;calculate&lt;/a&gt; part of our plugin, or what we want the plugin to do.  In this case we only want to print out processes that are found by psscan2 and not pslist, so should decide how to do that... Since processes &lt;b&gt;should&lt;/b&gt; have unique process IDs (PIDs) to specify unique processes.  So PIDs that are found in psscan2, but not in pslist will be printed.  &lt;br /&gt;&lt;br /&gt;Let's walk through the calculate function.  First we gather all processes that pslist knows about (line 11).  We call the &lt;tt&gt;taskmods.PSList&lt;/tt&gt; class, give it our configuration (self._config) so that it can know what profile to use and call its calculate function, which returns eprocess objects (and really is just DllList's calculate function, but we'll ignore that for now).  In line 12, we define an empty &lt;a href="http://docs.python.org/tutorial/introduction.html#lists"&gt;list&lt;/a&gt; to store PIDs from &lt;tt&gt;pslist&lt;/tt&gt; in order to compare to &lt;tt&gt;psscan2&lt;/tt&gt;'s PIDs.  Lines 13-14 collect all the PIDs &lt;tt&gt;pslist&lt;/tt&gt; knows about.&lt;br /&gt;&lt;br /&gt;Now lines 16-19 repeat the process for &lt;tt&gt;psscan2&lt;/tt&gt; except that instead of collecting PIDs into a list, we check to see if the PID we've encountered is already in the list of PIDs from &lt;tt&gt;pslist&lt;/tt&gt;.  If it isn't, then we &lt;a href="http://docs.python.org/tutorial/classes.html#generators"&gt;yield&lt;/a&gt; the task that contains that PID so that it will be caught by &lt;tt&gt;psscan2&lt;/tt&gt;'s &lt;a href="http://code.google.com/p/volatility/wiki/Vol14PluginInterface#Rendering"&gt;render_text&lt;/a&gt; function and output onto the screen.&lt;br /&gt;&lt;br /&gt;The output?  Here you can see what it looks like on a Windows 7 image:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ python vol.py -f win7.dd --profile=Win7SP0x86 psdiff &lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Offset      Name             PID    PPID   PDB        Time created             Time exited             &lt;br /&gt;---------- ---------------- ------ ------ ---------- ------------------------ ------------------------ &lt;br /&gt;0x3eac6030 SearchProtocol     2448   1168 0x3ecf15c0 2010-06-16 23:30:52      2010-06-16 23:33:14     &lt;br /&gt;0x3eb10030 SearchFilterHo     1812   1168 0x3ecf1480 2010-06-16 23:31:02      2010-06-16 23:33:14     &lt;br /&gt;0x3f0576a0 svchost.exe        2836    508 0x3ecf15c0 2010-06-16 17:02:34      2010-06-16 17:08:43     &lt;br /&gt;0x3faa66e8 dllhost.exe         948    628 0x3ecf1540 2010-06-16 23:32:15      2010-06-16 23:32:21     &lt;br /&gt;0x3fbcf920 dllhost.exe        3776    628 0x3ecf11e0 2010-06-16 23:32:09      2010-06-16 23:32:15   &lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The only difference in this case seems to be exited processes.&lt;br /&gt;&lt;br /&gt;Here you can see a run on Moyix's &lt;a href="http://moyix.blogspot.com/2010/07/plugin-post-robust-process-scanner.html"&gt;ds_fuzz image&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img psdiff&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Offset      Name             PID    PPID   PDB        Time created             Time exited             &lt;br /&gt;---------- ---------------- ------ ------ ---------- ------------------------ ------------------------ &lt;br /&gt;0x0181b748 alg.exe             992    660 0x08140260 2008-11-15 23:43:25                              &lt;br /&gt;0x0185dda0 cmd.exe             940   1516 0x081401a0 2008-11-26 07:43:39      2008-11-26 07:45:49     &lt;br /&gt;0x018af020 taskmgr.exe         808    620 0x08140280 2008-11-26 07:45:22      2008-11-26 07:45:40     &lt;br /&gt;0x019456e8 csrss.exe           592    360 0x08140040 2008-11-15 23:42:56                              &lt;br /&gt;0x01946020 svchost.exe         828    660 0x081400c0 2008-11-15 23:42:57                              &lt;br /&gt;0x019467e0 services.exe        660    616 0x08140080 2008-11-15 23:42:56                              &lt;br /&gt;0x0194f658 svchost.exe        1016    660 0x08140100 2008-11-15 23:42:57                              &lt;br /&gt;0x019533c8 svchost.exe         924    660 0x081400e0 2008-11-15 23:42:57&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suppose you are concerned that a PID could have been overwritten somehow (DKOM).  You could rewrite the plugin to use _EPROCESS offsets instead of PIDs for a check:&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  1 import volatility.plugins.taskmods as taskmods&lt;br /&gt;  2 import volatility.plugins.filescan as filescan&lt;br /&gt;  3 &lt;br /&gt;  4 class PSDiff(filescan.PSScan2):&lt;br /&gt;  5     """Print processes found in psscan2, but not in pslist"""&lt;br /&gt;  6 &lt;br /&gt;  7     def __init__(self, config, *args):&lt;br /&gt;  8         filescan.PSScan2.__init__(self, config, *args)&lt;br /&gt;  9 &lt;br /&gt; 10     def calculate(self):&lt;br /&gt; 11         pslist = taskmods.PSList(self._config).calculate()&lt;br /&gt; 12         offsets = []&lt;br /&gt; 13         for task in pslist:&lt;br /&gt; 14             offsets.append(task.obj_vm.vtop(task.obj_offset))&lt;br /&gt; 15 &lt;br /&gt; 16         psscan = filescan.PSScan2.calculate(self)&lt;br /&gt; 17         for task in psscan:&lt;br /&gt; 18             if task.obj_offset not in offsets:&lt;br /&gt; 19                 yield task&lt;br /&gt;&lt;/pre&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The changes are in lines 12, 14 and 18.  The idea is the same as our PID plugin above, only with offsets.  So we rename our list to &lt;tt&gt;offsets&lt;/tt&gt; to make it clearer (line 12).  We append the physical address of where our _EPROCESS object is found (line 14), this is because scanners like &lt;tt&gt;psscan2&lt;/tt&gt; only output physical addresses so we want to make sure that the addresses from &lt;tt&gt;pslist&lt;/tt&gt; are the same.  In line 18 we check to see if our _EPROCESS object offset found by &lt;tt&gt;psscan2&lt;/tt&gt; is already found by &lt;tt&gt;pslist&lt;/tt&gt; and if not we yield it so that its information will be printed.  Output is the same as what we saw above for our two test images.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Conclusion&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;So there you have it.  You can use the same idea for comparing output from &lt;tt&gt;modules&lt;/tt&gt; and &lt;tt&gt;modscan&lt;/tt&gt;, &lt;tt&gt;connections&lt;/tt&gt; and &lt;tt&gt;connscan2&lt;/tt&gt;, &lt;tt&gt;sockets&lt;/tt&gt; and &lt;tt&gt;sockscan&lt;/tt&gt; or &lt;tt&gt;files&lt;/tt&gt; and &lt;tt&gt;filescan&lt;/tt&gt; etc...  (I'm leaving this as an exercise for the reader ;-)). &lt;br /&gt;&lt;br /&gt;You can check also out the references below for further reading on Python and Volatility.  Make sure to read the &lt;a href="http://code.google.com/p/volatility/wiki/PluginWritersGuide"&gt;Volatility Plugin Writers Guide&lt;/a&gt; that Mike Auty and Scudette put together.&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;Update:&lt;/font&gt; I just noticed that MHL also gave the Command Line Kung Fu crew a psdiff example.  You can check out another way of doing things &lt;a href="http://blog.commandlinekungfu.com/2010/12/episode-127-making-difference.html"&gt;over there&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;Update 2:&lt;/font&gt; I just updated the code to work with the current changes in the svn (we moved psscan2 to filescan).&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;References&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Google Python Class &lt;a href="http://code.google.com/edu/languages/google-python-class/"&gt;http://code.google.com/edu/languages/google-python-class/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Python 2.7 Tutorial &lt;a href="http://docs.python.org/tutorial/"&gt;http://docs.python.org/tutorial/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Volatility Plugin Writers Guide &lt;a href="http://code.google.com/p/volatility/wiki/PluginWritersGuide"&gt;http://code.google.com/p/volatility/wiki/PluginWritersGuide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3465301702995917044?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3465301702995917044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3465301702995917044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3465301702995917044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3465301702995917044'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/04/whats-difference-brief-volatility-14.html' title='What&apos;s the Difference? [A Brief Volatility 1.4 Plugin Tutorial]'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1196252315690264907</id><published>2011-04-04T12:16:00.008-04:00</published><updated>2011-04-04T14:19:51.369-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>OT: Maze Generator Update</title><content type='html'>Since my QC (venus) website is no longer active, I thought I'd put the files for &lt;a href="http://gleeda.blogspot.com/2008/07/maze-generator.html"&gt;a maze generator&lt;/a&gt; some place where they can be accessed, especially since I have received emails about it...  Here is the original information that was on venus before it disappeared:&lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;Maze Generator Using Disjoint Sets&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;I recently went through several files of mine that had been stored away from my undergrad days.  So I thought I might share them.  Someone might like them.  I have not changed any of the code since it was first written.  I have only changed the formatting of a couple of files to make them easier to read and modified the comment header slightly (also for readability).  Everything is well commented, which was my style at the time :-) Hopefully I have not erased anything important as I was doing these modifications, but I have no patience to test it at the moment. Oh, and I added a GPL for my code only, just in case (though no one will really want this... :-P )&lt;br /&gt;&lt;br /&gt;This particular project is from &lt;a href="http://www.compsci.hunter.cuny.edu/~sweiss/"&gt;Prof Stewart Weiss'&lt;/a&gt; CS 335 class, and consisted of writing a program that would generate mazes.  It was compiled under Visual Studio 6.0 C++.  We had studied &lt;a href="http://en.wikipedia.org/wiki/Disjoint_sets"&gt;Disjoint Sets&lt;/a&gt; in our class and were allowed to use code from &lt;a href="http://www.cs.fiu.edu/~weiss/"&gt;Mark Allen Weiss'&lt;/a&gt; &lt;a href="http://www.cs.fiu.edu/~weiss/#dsaac++3"&gt;book&lt;/a&gt; from which we were studying.  In addition to printing out to a text file, for extra credit we could output a graphical representation of the maze.  For this I used code from &lt;a href="http://www.cs.duke.edu/csed/tapestry/"&gt;Owen L. Astrachan's book&lt;/a&gt; which I think is from &lt;a href="http://www.cs.duke.edu/csed/tapestry/graphics.html"&gt;CMU Graphics&lt;/a&gt;.  Two example outputs can be seen below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-G_IzZVXbMCI/TZnvlihDZ-I/AAAAAAAAA0s/aWS8EVNDmHg/s1600/5X5-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 115px; height: 109px;" src="http://1.bp.blogspot.com/-G_IzZVXbMCI/TZnvlihDZ-I/AAAAAAAAA0s/aWS8EVNDmHg/s400/5X5-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5591763840556820450" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-QDocdW-5v_w/TZnvtmyD_qI/AAAAAAAAA00/LGdjFljglA4/s1600/25X40-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 281px;" src="http://1.bp.blogspot.com/-QDocdW-5v_w/TZnvtmyD_qI/AAAAAAAAA00/LGdjFljglA4/s400/25X40-1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5591763979140857506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;Other outputs include (for the two unknowns,&lt;br /&gt;sorry I forgot what I punched in and have no patience to create more&lt;br /&gt;mazes or count cells):&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/raw/master/maze/mazes/5X5.txt"&gt;5X5.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="mazes/25X40.txt"&gt;25X40.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/raw/master/maze/mazes/25X40.txt"&gt;40X30.txt&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/raw/master/maze/mazes/maze-output.txt"&gt;unknown dimensions 1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/raw/master/maze/mazes/maze-output1.txt"&gt;unknown dimensions 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;The idea is fairly simple.  The maze is broken up into cells.  We will use the idea of disjoint sets: in the beginning each cell is in its own set.  Cells are randomly chosen to remove a wall (and one of the four walls is also randomly chosen) and as the wall is removed, the cell and its new neighbor are then placed in the same set.  You keep doing this until all cells are within the first (entry) cell's set.  At this point you have a maze.&lt;br /&gt;&lt;br /&gt;You should make sure that once a cell is in the main (entry cell's) set, it should&lt;br /&gt;never be picked again to remove wall.  You also have to be careful not&lt;br /&gt;to remove the outer border walls, thus creating alternate exits :-)&lt;br /&gt;&lt;br /&gt;The disjoint sets class was modified from the original given in the book.  There was a problem with the find() function so it was changed. Also, I added extra functions to make it fit with the maze class.  I also created a vector of cells for the maze (see Cell class and Maze class below).  I would have done things differently if I were doing writing this now, but this was in the beginning of my programming experience.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;Here are the disjoint sets files&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/DisjSets.h"&gt;DisjSets.h&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/DisjSets.cpp"&gt;DisjSets.cpp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I created a Cell class to represent each cell of the maze.  This way I could control the walls of the cells and keep track of which walls were still up or down when I printed out the maze.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;Here are the Cell class files&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/Cell.h"&gt;Cell.h&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/cell.cpp"&gt;cell.cpp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Next I wrote a Maze class to keep track of all of the cells.  At first I thought to implement this using a 2-dimensional array, but ultimately decided to use a linear vector (defined in DisjSets) folded onto itself.  There is also a list used to contain all cells of the maze.  This is not the maze itself, but rather the cells that have not yet been placed into the main set in order to create a maze.  I did this to cut down on run time because you do not want to remove walls from cells that have already become part of the main set and randomly picking cells most likely leads to picking cells that have already been chosen (especially towards the end).  So keeping a pool of possible choices was the only logical thing to do to cut down on run time.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;Here are the Maze class files&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/maze.h"&gt;maze.h&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/maze.cpp"&gt;maze.cpp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Now for the main part of the program.  At the time I was obsessed&lt;br /&gt;with making the main() function as small as possible:&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;int main(){&lt;br /&gt;    string resp;&lt;br /&gt;&lt;br /&gt;    while(true){&lt;br /&gt;&lt;br /&gt;        getMazeInfo();&lt;br /&gt;&lt;br /&gt;        cout&amp;lt;&amp;lt;"To quit press 'q', otherwise press a key"&amp;lt;&amp;lt;endl;&lt;br /&gt;        cin&amp;gt;&amp;gt;resp;&lt;br /&gt;&lt;br /&gt;        if(resp=="q")&lt;br /&gt;            break;&lt;br /&gt;&lt;br /&gt;    }//end while&lt;br /&gt;&lt;br /&gt;    return 0;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;Granted it could have been smaller... :-)  It basically loops forever creating mazes of whatever size (I think 50x60 is the max) is requested and stops when the user wants to leave.  The code is NOT perfect.  Just glancing over ASSN3Main.cpp, I see a buffer overflow error could occur in the getMazeInfo() function.  Plus there were better ways now of dealing with the graphics. (Yes I COULD fix it, but then I would find other things and before you know it this would explode into a full time project...Ok.  Maybe I'm exaggerating).  Perhaps some day when I have more time I will rewrite this little application.  It's kinda fun to create mazes...&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;The main code:&lt;li&gt;&lt;a href="https://github.com/gleeda/Old-Schoolwork/blob/master/maze/ASSN3Main.cpp"&gt;ASSN3Main.cpp&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I am releasing all of the code in gzip files as well as a precompiled executable.  You can use &lt;a href="http://www.7-zip.org/"&gt;7zip&lt;/a&gt; to open the files.  If you use the executable, you will see a message box saying something about how this was compiled with the student version and can't be used as commercial software or some such.  Just push Ok and you're set.  After you input the dimensions and the name of the output file to which you would like the maze saved, a graphical window will pop up.  Click it with the mouse and the maze should display.  You have to push ESC to get out of the graphical maze window.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://jls-scripts.googlecode.com/files/maze-allcode.tgz"&gt;maze-allcode.tgz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://jls-scripts.googlecode.com/files/maze-exe.tgz"&gt;maze-exe.tgz&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Hopefully I have managed to include all of the code that is needed.  Let me know if something is missing.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1196252315690264907?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1196252315690264907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1196252315690264907' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1196252315690264907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1196252315690264907'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/04/ot-maze-generator-update.html' title='OT: Maze Generator Update'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-G_IzZVXbMCI/TZnvlihDZ-I/AAAAAAAAA0s/aWS8EVNDmHg/s72-c/5X5-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7269800149682567091</id><published>2011-04-03T16:51:00.007-04:00</published><updated>2011-04-04T08:09:20.170-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='registry'/><title type='text'>Windows Registry Paths (_CMHIVE)</title><content type='html'>A little while ago I helped get the registry stuff working on images other than XP for &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility 1.4&lt;/a&gt;.  There are some differences in how the paths/names of the hives are stored, that I thought I might go over here.&lt;br /&gt;&lt;br /&gt;In XP we have the following structure for a &lt;a href="http://code.google.com/p/volatility/source/browse/branches/Volatility-1.4_rc1/volatility/plugins/overlays/windows/xp_sp3_x86_vtypes.py#1932"&gt;registry hive&lt;/a&gt;:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;'_CMHIVE' : [ 0x49c, {&lt;br /&gt;   'Hive' : [ 0x0, ['_HHIVE']],&lt;br /&gt;   'FileHandles' : [ 0x210, ['array', 3, ['pointer', ['void']]]],&lt;br /&gt;   'NotifyList' : [ 0x21c, ['_LIST_ENTRY']],&lt;br /&gt;   'HiveList' : [ 0x224, ['_LIST_ENTRY']],&lt;br /&gt;   'HiveLock' : [ 0x22c, ['pointer', ['_FAST_MUTEX']]],&lt;br /&gt;   'ViewLock' : [ 0x230, ['pointer', ['_FAST_MUTEX']]],&lt;br /&gt;   'LRUViewListHead' : [ 0x234, ['_LIST_ENTRY']],&lt;br /&gt;   'PinViewListHead' : [ 0x23c, ['_LIST_ENTRY']],&lt;br /&gt;   'FileObject' : [ 0x244, ['pointer', ['_FILE_OBJECT']]],&lt;br /&gt;   'FileFullPath' : [ 0x248, ['_UNICODE_STRING']],&lt;br /&gt;   'FileUserName' : [ 0x250, ['_UNICODE_STRING']],&lt;br /&gt;   'MappedViews' : [ 0x258, ['unsigned short']],&lt;br /&gt;   'PinnedViews' : [ 0x25a, ['unsigned short']],&lt;br /&gt;   'UseCount' : [ 0x25c, ['unsigned long']],&lt;br /&gt;   'SecurityCount' : [ 0x260, ['unsigned long']],&lt;br /&gt;   'SecurityCacheSize' : [ 0x264, ['unsigned long']],&lt;br /&gt;   'SecurityHitHint' : [ 0x268, ['long']],&lt;br /&gt;   'SecurityCache' : [ 0x26c, ['pointer', ['_CM_KEY_SECURITY_CACHE_ENTRY']]],&lt;br /&gt;   'SecurityHash' : [ 0x270, ['array', 64, ['_LIST_ENTRY']]],&lt;br /&gt;   'UnloadEvent' : [ 0x470, ['pointer', ['_KEVENT']]],&lt;br /&gt;   'RootKcb' : [ 0x474, ['pointer', ['_CM_KEY_CONTROL_BLOCK']]],&lt;br /&gt;   'Frozen' : [ 0x478, ['unsigned char']],&lt;br /&gt;   'UnloadWorkItem' : [ 0x47c, ['pointer', ['_WORK_QUEUE_ITEM']]],&lt;br /&gt;   'GrowOnlyMode' : [ 0x480, ['unsigned char']],&lt;br /&gt;   'GrowOffset' : [ 0x484, ['unsigned long']],&lt;br /&gt;   'KcbConvertListHead' : [ 0x488, ['_LIST_ENTRY']],&lt;br /&gt;   'KnodeConvertListHead' : [ 0x490, ['_LIST_ENTRY']],&lt;br /&gt;   'CellRemapArray' : [ 0x498, ['pointer', ['_CM_CELL_REMAP_BLOCK']]],&lt;br /&gt;} ],&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;When running the hivelist command from Volatility on an XP or Windows 2003 image, the name of the hive is obtained from the &lt;tt&gt;FileFullPath&lt;/tt&gt; entry above.  This is more of a generic name prefixed with "\Device\HarddiskVolume1".  There is also a &lt;tt&gt;FileUserName&lt;/tt&gt; entry in &lt;tt&gt;_CMHIVE&lt;/tt&gt;, which may contain the actual path to the hive on disk.  Here are a few examples:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\WINDOWS\system32\config\SECURITY&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SECURITY&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\WINDOWS\system32\config\software&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SOFTWARE&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT&lt;br /&gt;FileUserName: \??\C:\Documents and Settings\NetworkService\ntuser.dat&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;As I said, we get the same results for &lt;a href="http://code.google.com/p/volatility/source/browse/branches/Volatility-1.4_rc1/volatility/plugins/overlays/windows/win2k3_sp2_x86_vtypes.py#2896"&gt;Windows 2003&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Starting with Windows Vista, we have an extra member in &lt;tt&gt;&lt;a href="http://code.google.com/p/volatility/source/browse/branches/Volatility-1.4_rc1/volatility/plugins/overlays/windows/vista_sp0_x86_vtypes.py#2695"&gt;_CMHIVE&lt;/a&gt;&lt;/tt&gt;, named &lt;tt&gt;HiveRootPath&lt;/tt&gt; which contains another registry name starting either with (\REGISTRY\MACHINE or \REGISTRY\USER).  Here we can see output from a modified hivelist plugin, each hive is separated by asterisks:&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\HARDWARE&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\SMI\Store\Machine\SCHEMA.DAT&lt;br /&gt;FileUserName: \??\C:\Windows\System32\SMI\Store\Machine\SCHEMA.DAT&lt;br /&gt;HiveRootPath: \registry\machine\Schema&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SOFTWARE&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SOFTWARE&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\config\DEFAULT&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\DEFAULT&lt;br /&gt;HiveRootPath: \REGISTRY\USER\.DEFAULT&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\config\SAM&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SAM&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SAM&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\config\SECURITY&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SECURITY&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SECURITY&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\System32\config\COMPONENTS&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\COMPONENTS&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\COMPONENTS&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Boot\BCD&lt;br /&gt;FileUserName: \Device\HarddiskVolume1\Boot\BCD&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\BCD00000000&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\ServiceProfiles\NetworkService\NTUSER.DAT&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\USER\S-1-5-20&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Windows\ServiceProfiles\LocalService\NTUSER.DAT&lt;br /&gt;FileUserName: \??\C:\Windows\ServiceProfiles\LocalService\ntuser.dat&lt;br /&gt;HiveRootPath: \REGISTRY\USER\S-1-5-19&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Users\user\NTUSER.DAT&lt;br /&gt;FileUserName: \??\C:\Users\user\ntuser.dat&lt;br /&gt;HiveRootPath: \Registry\User\S-1-5-21-3861645159-1226237480-2911178601-1000&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath: \Device\HarddiskVolume1\Users\user\AppData\Local\Microsoft\Windows\UsrClass.dat&lt;br /&gt;FileUserName: \??\C:\Users\user\AppData\Local\Microsoft\Windows\UsrClass.dat&lt;br /&gt;HiveRootPath: \Registry\User\S-1-5-21-3861645159-1226237480-2911178601-1000_Classes&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SYSTEM&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You can see that there are a couple of registries that only have HiveRootPath populated (\REGISTRY\MACHINE\SYSTEM and \REGISTRY\MACHINE\HARDWARE).  \REGISTRY\MACHINE\HARDWARE is a volatile hive that contains hardware information populated during bootup[1], we will explore this key a bit later...  We get the same output for all service packs of Vista as well as Windows 2008 (which is closely related to Vista SP1/2).&lt;br /&gt;&lt;br /&gt;For Windows 7 we get slightly different results.  Even though &lt;tt&gt;FileFullPath&lt;/tt&gt; is defined in &lt;tt&gt;&lt;a href="http://code.google.com/p/volatility/source/browse/branches/Volatility-1.4_rc1/volatility/plugins/overlays/windows/win7_sp0_x86_vtypes.py#3753"&gt;_CMHIVE&lt;/a&gt;&lt;/tt&gt; for Windows 7, it does not appear to be used at all:&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SECURITY&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SECURITY&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \??\C:\System Volume Information\Syscache.hve&lt;br /&gt;HiveRootPath: \REGISTRY\A\{43bcec53-795b-11df-9d3d-000c29bf81c3}&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SYSTEM&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\HARDWARE&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\DEFAULT&lt;br /&gt;HiveRootPath: \REGISTRY\USER\.DEFAULT&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName:&lt;br /&gt;HiveRootPath: \REGISTRY\USER\S-1-5-20&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT&lt;br /&gt;HiveRootPath: \REGISTRY\USER\S-1-5-19&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \Device\HarddiskVolume1\Boot\BCD&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\BCD00000000&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SOFTWARE&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SOFTWARE&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \??\C:\Users\user\ntuser.dat&lt;br /&gt;HiveRootPath: \Registry\User\S-1-5-21-1665533257-296859758-874228692-1000&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \??\C:\Users\user\AppData\Local\Microsoft\Windows\UsrClass.dat&lt;br /&gt;HiveRootPath: \Registry\User\S-1-5-21-1665533257-296859758-874228692-1000_Classes&lt;br /&gt;************************************************************************&lt;br /&gt;FileFullPath:&lt;br /&gt;FileUserName: \SystemRoot\System32\Config\SAM&lt;br /&gt;HiveRootPath: \REGISTRY\MACHINE\SAM&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Therefore in Windows 7 output of hivelist, you will see &lt;tt&gt;FileUserName&lt;/tt&gt; paths when they are defined or &lt;tt&gt;HiveRootPath&lt;/tt&gt; paths if they are not:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;Virtual     Physical    Name&lt;br /&gt;0x963e39d0  0x1d41a9d0  \SystemRoot\System32\Config\SECURITY&lt;br /&gt;0xa057a7a8  0x3518e7a8  \??\C:\System Volume Information\Syscache.hve&lt;br /&gt;0x82ba6140  0x02ba6140  [no name]&lt;br /&gt;0x87a0c008  0x28027008  [no name]&lt;br /&gt;0x87a1c008  0x27fb5008  \REGISTRY\MACHINE\SYSTEM&lt;br /&gt;0x87a429d0  0x27f9d9d0  \REGISTRY\MACHINE\HARDWARE&lt;br /&gt;0x87abc898  0x1fd97898  \SystemRoot\System32\Config\DEFAULT&lt;br /&gt;0x8849e008  0x27dc0008  \REGISTRY\USER\S-1-5-20&lt;br /&gt;0x88521008  0x1be07008  \??\C:\Windows\ServiceProfiles\LocalService\NTUSER.DAT&lt;br /&gt;0x8bb309d0  0x25bac9d0  \Device\HarddiskVolume1\Boot\BCD&lt;br /&gt;0x8bb328d8  0x25bb58d8  \SystemRoot\System32\Config\SOFTWARE&lt;br /&gt;0x91a9a9d0  0x1787c9d0  \??\C:\Users\user\ntuser.dat&lt;br /&gt;0x91f2d9d0  0x13b949d0  \??\C:\Users\user\AppData\Local\Microsoft\Windows\UsrClass.dat&lt;br /&gt;0x963bf008  0x1fa36008  \SystemRoot\System32\Config\SAM&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Getting Registry Paths from the SYSTEM Registry&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;You can also obtain a list of registry files were loaded by the system by checking the "SYSTEM\CurrentControlSet\Control\Hivelist" key[1]:&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ python vol.py -f VistaSP2x86.dmp --profile=VistaSP2x86 printkey -K 'controlset001\control\hivelist'&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \REGISTRY\MACHINE\SYSTEM&lt;br /&gt;Key name: hivelist (V)&lt;br /&gt;Last updated: 2010-11-30 18:05:20 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\HARDWARE : (V) &lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\SECURITY : (V) \Device\HarddiskVolume1\Windows\System32\config\SECURITY&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\SOFTWARE : (V) \Device\HarddiskVolume1\Windows\System32\config\SOFTWARE&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\SYSTEM : (V) \Device\HarddiskVolume1\Windows\System32\config\SYSTEM&lt;br /&gt;REG_SZ        \REGISTRY\USER\.DEFAULT : (V) \Device\HarddiskVolume1\Windows\System32\config\DEFAULT&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\SAM : (V) \Device\HarddiskVolume1\Windows\System32\config\SAM&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\COMPONENTS : (V) \Device\HarddiskVolume1\Windows\System32\config\COMPONENTS&lt;br /&gt;REG_SZ        \REGISTRY\MACHINE\BCD00000000 : (V) \Device\HarddiskVolume1\Boot\BCD&lt;br /&gt;REG_SZ        \REGISTRY\USER\S-1-5-20 : (V) \Device\HarddiskVolume1\Windows\ServiceProfiles\NetworkService\NTUSER.DAT&lt;br /&gt;REG_SZ        \REGISTRY\USER\S-1-5-19 : (V) \Device\HarddiskVolume1\Windows\ServiceProfiles\LocalService\NTUSER.DAT&lt;br /&gt;REG_SZ        \registry\machine\Schema : (V) \Device\HarddiskVolume1\Windows\System32\SMI\Store\Machine\SCHEMA.DAT&lt;br /&gt;REG_SZ        \Registry\User\S-1-5-21-3861645159-1226237480-2911178601-1000 : (V) \Device\HarddiskVolume1\Users\user\NTUSER.DAT&lt;br /&gt;REG_SZ        \Registry\User\S-1-5-21-3861645159-1226237480-2911178601-1000_Classes : (V) \Device\HarddiskVolume1\Users\user\AppData\Local\Microsoft\Windows\UsrClass.dat&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;References&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;[1] Mark Russinovich, David Solomon and Alex Ionescu &lt;i&gt;Windows Internals 5th Edition&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;[2] Moyix, &lt;a href="http://moyix.blogspot.com/2008/02/enumerating-registry-hives.html"&gt;Enumerating Registry Hives&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7269800149682567091?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7269800149682567091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7269800149682567091' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7269800149682567091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7269800149682567091'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/04/windows-registry-paths.html' title='Windows Registry Paths (_CMHIVE)'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5025795687750562361</id><published>2011-03-30T08:41:00.004-04:00</published><updated>2011-03-30T08:52:26.354-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Update: Volatility printkey Plugin</title><content type='html'>You don't have to use &lt;a href="http://gleeda.blogspot.com/2011/03/modified-volatlity-printkey-plugin.html"&gt;the printkey plugin I released&lt;/a&gt; to get bruteforce action.  It has been incorporated into the Volatility SVN (thanks to Mike Auty :-)).&lt;br /&gt;&lt;br /&gt;So by default you don't have to issue an offset anymore:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img printkey -K 'ControlSet001\Control\ComputerName\ComputerName' &lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system&lt;br /&gt;Key name: ComputerName (S)&lt;br /&gt;Last updated: 2008-10-21 17:48:29 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ComputerName    : (S) GINEVRA&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;And keys from multiple hives will also appear with a separator: &lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img printkey -K 'Software\Microsoft\Windows NT\CurrentVersion\Winlogon'&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:38:23 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\default&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:39:40 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:38:53 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;----------------------------&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\moyix\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-09-19 20:29:52 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5025795687750562361?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5025795687750562361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5025795687750562361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5025795687750562361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5025795687750562361'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/03/update-volatility-printkey-plugin.html' title='Update: Volatility printkey Plugin'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7896362516680218037</id><published>2011-03-25T15:13:00.012-04:00</published><updated>2011-03-30T08:51:53.814-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Modified Volatility printkey Plugin</title><content type='html'>As a lot of you already know, Volatility has some pretty cool &lt;a href="http://code.google.com/p/volatility/wiki/CommandReference#Registry"&gt;registry plugins&lt;/a&gt;.  You can use &lt;a href="http://code.google.com/p/volatility/wiki/CommandReference#hivescan"&gt;hivescan&lt;/a&gt; to look for registry hives (CMHIVE), &lt;a href="http://code.google.com/p/volatility/wiki/CommandReference#hivelist"&gt;hivelist&lt;/a&gt; to locate virtual and physical addresses of registry hives and &lt;a href="http://code.google.com/p/volatility/wiki/CommandReference#printkey"&gt;printkey&lt;/a&gt; to print out keys for a specified hive, whose virtual address is found from hivelist.&lt;br /&gt;&lt;br /&gt;In Volatility 1.3, you had to specify CMHIVE offset (obtained from hivescan) for hivelist in order to get the virtual address for a hive to use with printkey.  In Volatility 1.4, hivelist &lt;a href="http://docs.python.org/tutorial/classes.html#inheritance"&gt;inherits&lt;/a&gt; hivescan and obtains the CMHIVE offsets removing one extra step and making it easier for the user.&lt;br /&gt;&lt;br /&gt;We still have to provide a virtual address (obtained by hivelist) to printkey in order to print a key from a particular registry.  Suppose you don't know which registry contains the key, or you are a little clumsy about which offset you gave printkey, or maybe you want the same key from multiple hives (like all users for example).  Well, I know I've personally had some of these issues and I'm sure others have as well ;-)&lt;br /&gt;&lt;br /&gt;Recently I modified printkey to include a "brute-force" option to try to obtain a particular key from all hives and thought I'd share this in case anyone else might find it useful.  The idea works similar to how hivelist was written to inherit from hivescan; printkey inherits hivelist and can obtain the offsets for all hives if run in brute-force mode.  It also retains the previous usage so you can specify an offset.  &lt;br /&gt;&lt;br /&gt;Let's see some examples.  So suppose we want to get the computer name from this image.  How do we get that?  So normally you have to get a list of registry hives:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img hivelist&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Virtual     Physical    Name&lt;br /&gt;0xe1ada008  0x0b46c008  \Device\HarddiskVolume1\Documents and Settings\moyix\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat&lt;br /&gt;0xe1ad0880  0x0b339880  \Device\HarddiskVolume1\Documents and Settings\moyix\NTUSER.DAT&lt;br /&gt;0xe1ac09e8  0x0b21b9e8  \Device\HarddiskVolume1\Documents and Settings\LocalService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat&lt;br /&gt;0xe1a9f008  0x0b28b008  \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT&lt;br /&gt;0xe1797a60  0x0951da60  \Device\HarddiskVolume1\Documents and Settings\NetworkService\Local Settings\Application Data\Microsoft\Windows\UsrClass.dat&lt;br /&gt;0xe1790820  0x0960f820  \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT&lt;br /&gt;0xe1534820  0x032a9820  \Device\HarddiskVolume1\WINDOWS\system32\config\software&lt;br /&gt;0xe1536820  0x032ab820  \Device\HarddiskVolume1\WINDOWS\system32\config\SECURITY&lt;br /&gt;0xe14771f8  0x07fc91f8  \Device\HarddiskVolume1\WINDOWS\system32\config\default&lt;br /&gt;0xe1482008  0x07f93008  \Device\HarddiskVolume1\WINDOWS\system32\config\SAM&lt;br /&gt;0xe13725b8  0x0241d5b8  [no name]&lt;br /&gt;&lt;font color="red"&gt;0xe1018388&lt;/font&gt;  0x02200388  \Device\HarddiskVolume1\WINDOWS\system32\config\system&lt;br /&gt;0xe1008b60  0x020c4b60  [no name]&lt;br /&gt;0x80670a8c  0x00670a8c  [no name]&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;From the SYSTEM registry we need this key: ControlSet001\Control\ComputerName\ComputerName  We find the &lt;b&gt;virtual offset&lt;/b&gt; and specify that in the commandline along with the key:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img  printkey -o &lt;font color="red"&gt;0xe1018388&lt;/font&gt; -K 'ControlSet001\Control\ComputerName\ComputerName'&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system&lt;br /&gt;Key name: ComputerName (S)&lt;br /&gt;Last updated: 2008-10-21 17:48:29 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ComputerName    : (S) GINEVRA&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Nice.  Ok, suppose you didn't know you needed to get this information from the SYSTEM registry.  You can use the brute-force option (&lt;font color="red"&gt;&lt;b&gt;-b&lt;/b&gt;&lt;/font&gt;):&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;$ python vol.py -f ds_fuzz_hidden_proc.img printkey &lt;font color="red"&gt;&lt;b&gt;-b&lt;/b&gt;&lt;/font&gt; -K 'ControlSet001\Control\ComputerName\ComputerName' &lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of S-1-5-21-725345543-1292428093-2147272213-1003_Classes&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of $$$PROTO.HIV&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of S-1-5-19_Classes&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of $$$PROTO.HIV&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of S-1-5-20_Classes&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of $$$PROTO.HIV&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of $$$PROTO.HIV&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of SECURITY&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of $$$PROTO.HIV&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of SAM&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of HARDWARE&lt;br /&gt;&lt;b&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system&lt;br /&gt;Key name: ComputerName (S)&lt;br /&gt;Last updated: 2008-10-21 17:48:29 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ComputerName    : (S) GINEVRA&lt;/b&gt;&lt;br /&gt;WARNING : volatility.win32.rawreg: Couldn't find subkey ControlSet001 of REGISTRY&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Hrmmmm.... notice that you get a lot of debug warnings in addition to the correct output for this key.  This is because normally you would want to know if the key is not found and as each hive is queried for the key, failed attempts appear in output.  However in this case, we know it's not going to be found in all of the registries, so we don't care about these warnings.  You could comment out the piece of code in volatility/win32/rawreg.py that gives this warning, or you could use another plugin supplied by Mike Auty called disablewarnings.py  This plugin (disablewarnings.py) is located in the "contrib/plugins" folder when you first download Volatility from the Google SVN.  In order to use it, you must first move it to your plugins directory.  So from the Volatility root folder do the following:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ mv contrib/plugins/disablewarnings.py volatility/plugins&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Now we can run the printkey plugin with brute-force option and disable debug statements with two extra switches: &lt;font color="red"&gt;&lt;b&gt;-d -W&lt;/b&gt;&lt;/font&gt;:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img printkey &lt;font color="red"&gt;&lt;b&gt;-b -d -W&lt;/b&gt;&lt;/font&gt; -K 'ControlSet001\Control\ComputerName\ComputerName' &lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\system&lt;br /&gt;Key name: ComputerName (S)&lt;br /&gt;Last updated: 2008-10-21 17:48:29 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ComputerName    : (S) GINEVRA&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;Want to see output from multiple hives?  Let's look at the  Software\Microsoft\Windows NT\CurrentVersion\WinLogon  key from user hives:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ python vol.py -f ds_fuzz_hidden_proc.img printkey -K 'Software\Microsoft\Windows NT\CurrentVersion\WinLogon' -b -d -W&lt;br /&gt;Volatile Systems Volatility Framework 1.4_rc1&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\moyix\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-09-19 20:29:52 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\LocalService\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:38:53 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\Documents and Settings\NetworkService\NTUSER.DAT&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:38:23 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;Legend: (S) = Stable   (V) = Volatile&lt;br /&gt;&lt;br /&gt;Registry: \Device\HarddiskVolume1\WINDOWS\system32\config\default&lt;br /&gt;Key name: Winlogon (S)&lt;br /&gt;Last updated: 2008-11-26 07:39:40 &lt;br /&gt;&lt;br /&gt;Subkeys:&lt;br /&gt;&lt;br /&gt;Values:&lt;br /&gt;REG_SZ        ParseAutoexec   : (S) 1&lt;br /&gt;REG_SZ        ExcludeProfileDirs : (S) Local Settings;Temporary Internet Files;History;Temp&lt;br /&gt;REG_DWORD     BuildNumber     : (S) 2600&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Notice that the output is also slightly different, since printkey specifies which hive it got the information from (Registry: [Path])&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;Update: this modification is now in the SVN &lt;a href="http://gleeda.blogspot.com/2011/03/update-volatility-printkey-plugin.html"&gt;see here&lt;/a&gt;&lt;/font&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7896362516680218037?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7896362516680218037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7896362516680218037' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7896362516680218037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7896362516680218037'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/03/modified-volatlity-printkey-plugin.html' title='Modified Volatility printkey Plugin'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8710992379436243596</id><published>2011-03-22T16:03:00.004-04:00</published><updated>2011-03-22T16:30:23.877-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>John Jay Center for Cybercrime Studies Talk: 3/29/11 2PM</title><content type='html'>There's an upcoming talk at &lt;a href="http://www.jjay.cuny.edu/centers/cybercrime_studies/index.php"&gt;The Center for Cybercrime Studies&lt;/a&gt;, &lt;a href="http://www.jjay.cuny.edu/"&gt;John Jay College of Criminal Justice&lt;/a&gt; next week (Tuesday March 29th, 2011 2:00 PM) that may interest some of you in the NYC area:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;font size="4"&gt;Cyber Criminals: Who are they? Why are they successful? How do we respond?&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Kim Peretti&lt;br /&gt;&lt;br /&gt;Director, Forensic Services Practices&lt;br /&gt;PricewaterhouseCoopers LLP&lt;br /&gt;&lt;br /&gt;Formerly Senior Counsel&lt;br /&gt;US Dept. of Justice, Criminal Division&lt;br /&gt;Computer Crime and Intellectual Property Section &lt;br /&gt;&lt;br /&gt;This session will walk through recent prosecutions of sophisticated hacking rings in order to provide insight into the individuals behind these types of crimes and why they are successful.  This presentation will also discuss the emerging area of cyber forensics and methods by which entities can better prevent, detect, and respond to cyber attacks on their systems.&lt;br /&gt;&lt;/blockquote&gt; &lt;br /&gt;&lt;br /&gt;Events will take place at&lt;br /&gt;&lt;a href="http://www.jjay.cuny.edu/"&gt;John Jay College of Criminal Justice&lt;/a&gt;&lt;br /&gt;899 Tenth Avenue&lt;br /&gt;Room 630T, Haaren Hall&lt;br /&gt;&lt;br /&gt;(between 58th and 59th Streets.)&lt;br /&gt;RSVP to Nicole Daniels (&lt;a href="mailto:ndaniels@jjay.cuny.edu"&gt;ndaniels@jjay.cuny.edu&lt;/a&gt;: 212.237.8920).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8710992379436243596?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8710992379436243596/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8710992379436243596' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8710992379436243596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8710992379436243596'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/03/john-jay-center-for-cybercrime-studies.html' title='John Jay Center for Cybercrime Studies Talk: 3/29/11 2PM'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8569805488036439550</id><published>2011-03-22T09:48:00.006-04:00</published><updated>2011-03-22T16:06:56.401-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Volatility 1.4 get_plugins Script</title><content type='html'>For those who can't wait for the official release of 1.4: I've updated the &lt;a href="http://code.google.com/p/volatility/wiki/FullInstallation" target="_blank"&gt;Volatility Full Dev Installation Wiki&lt;/a&gt; to include installation on Linux.  &lt;br /&gt;&lt;br /&gt;In case you want to automate installation you can use the new &lt;a href="https://github.com/gleeda/misc-scripts/raw/master/get_plugins_1.4.bsh" target="_blank"&gt;get_plugins&lt;/a&gt; script.  I've only tested it on Mac OSX and Ubuntu, but it should still install dependencies and Volatility 1.4 on other Linux distributions (provided that you have your supporting libraries like libpcre installed already).  Feel free to look at the code before running however :-)&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;Caveat:&lt;/b&gt;&lt;/font&gt; There is still an issue with the Distorm3 library on &lt;font color="red"&gt;Mac OSX&lt;/font&gt; and you'll have to compile and install that one manually.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8569805488036439550?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8569805488036439550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8569805488036439550' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8569805488036439550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8569805488036439550'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/03/volatility-14-getplugins-script.html' title='Volatility 1.4 get_plugins Script'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-785975193381831372</id><published>2011-01-05T16:18:00.005-05:00</published><updated>2011-01-05T16:40:36.766-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='nyc4sec'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>NYC4SEC Meeting 1/19/2011</title><content type='html'>There is an &lt;a href="http://www.nyc4sec.info/calendar/15814644/"&gt;NYC4SEC meeting&lt;/a&gt; this month on 1/19/2011.  This month our speaker is &lt;a href="https://twitter.com/codeslack"&gt;Jon Stewart&lt;/a&gt; who will be giving a talk about his new tool: Lightgrep.  Details are below:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;u&gt;&lt;a href="http://www.nyc4sec.info/calendar/15814644/"&gt;Lightgrep - Fast Keyword Searching for Forensics&lt;/a&gt;&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dislike waiting 5 days for your keyword search to complete? Been brought to tears by thousands of keywords? Lost faith in your forensics tools when they didn't find all the hits they should have? Come to this talk to see the first public demonstration of Lightgrep, a new regular expressions search tool designed specifically for forensics.&lt;br /&gt;&lt;br /&gt;Search is a fundamental part of forensics, useful not only for discovering relevant documents and snippets of text, but also artifacts, files in unallocated space, and file signature analysis. We will discuss the basic principles behind how a grep search works, why it's important to consider how multiple keywords are handled, and how to validate a search tool's results. Finally, we'll show Lightgrep, a tool that allows for fast searching for thousands of keywords, with full EnCase integration.&lt;br /&gt;&lt;br /&gt;Please join us on Wednesday, January 19th, 7:00pm at John Jay College - &lt;a href="http://web.jjay.cuny.edu/~fcm/index.php"&gt;Forensic Computing&lt;/a&gt; Program and the &lt;a href="http://www.jjay.cuny.edu/centers/cybercrime_studies/index.php"&gt;Center for Cybercrime Studies&lt;/a&gt;&lt;br /&gt;899 Tenth Avenue - btwn 58th &amp; 59th&lt;br /&gt;Room 610T - 6th Floor&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Jon Stewart is a software developer and co-founder of &lt;a href="http://www.lightboxtechnologies.com/"&gt;Lightbox Technologies&lt;/a&gt;, Inc. Prior to Lightbox, Jon was a senior developer and consultant with Guidance Software, where he worked heavily on the EnScript programming language and created EnCase eDiscovery. Jon lives in Arlington, VA and blogs regularly about EnScript, programming, and forensics at &lt;a href="http://codeslack.blogspot.com/"&gt;http://codeslack.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to &lt;a href="http://www.nyc4sec.info/calendar/15814644/"&gt;RSVP&lt;/a&gt;!!!&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://twitter.com/DouglasBrush"&gt;Douglas Brush&lt;/a&gt;, &lt;a href="http://www.systemic-inquiry.com/"&gt;Prof Bilal Khan&lt;/a&gt;, &lt;a href="http://web.math.jjay.cuny.edu/index.php"&gt;Prof Douglas Salane&lt;/a&gt; and Prof Richard Lovely for helping to make this possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-785975193381831372?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/785975193381831372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=785975193381831372' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/785975193381831372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/785975193381831372'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2011/01/nyc4sec-meeting-1192011.html' title='NYC4SEC Meeting 1/19/2011'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5202103353625550250</id><published>2010-12-12T14:15:00.005-05:00</published><updated>2010-12-12T14:39:46.282-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Identifying Memory Images</title><content type='html'>Have you ever been given a memory image to examine and not known what OS it was?  Or maybe you were told it was X when it was really Y?  Or perhaps you have a collection of images that may not be labeled correctly?  &lt;br /&gt;&lt;br /&gt;So how do you figure out the OS of an unknown Windows image?  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font size=4&gt;Strings&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You could use strings to look for clues of the OS type.  For example looking for the version numbers [1].  You can often find this in close proximity to a DLL name.  Two examples (XP and Windows 7) are below:&lt;br /&gt;&lt;br /&gt;Windows XP: 5.1.2600&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;2546060:&lt;b&gt;5.1.2600.0&lt;/b&gt; (xpclient.010817-1148)&lt;br /&gt;2546134:InternalName&lt;br /&gt;2546160:HCAppRes.dll&lt;br /&gt;2546194:LegalCopyright&lt;br /&gt;2546226: Microsoft Corporation. All rights reserved.&lt;br /&gt;2546322:OriginalFilename&lt;br /&gt;2546356:HCAppRes.dll&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Windows 7: 6.1.7600.16385 (win7_rtm.090713-1255)&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;1335896:&lt;b&gt;6.1.7600.16385 (win7_rtm.090713-1255)&lt;/b&gt;&lt;br /&gt;1335978:InternalName&lt;br /&gt;1336004:BlbEvents.dll&lt;br /&gt;1336038:LegalCopyright&lt;br /&gt;1336070: Microsoft Corporation. All rights reserved.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;How do you determine if the memory image is from a x86 or x64 machine?  Well, here you can look for environmental variables like PROCESSOR_ARCHITECTURE and PROCESSOR_ARCHITEW6432 (used for WOW64) [2].  An example from x86 and x64 machines:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PROCESSOR_ARCHITECTURE&lt;/span&gt;=x86&lt;br /&gt;PROCESSOR_IDENTIFIER=x86 Family 6 Model 37 Stepping 5, GenuineIntel&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PROCESSOR_ARCHITECTURE&lt;/span&gt;=AMD64&lt;br /&gt;PROCESSOR_IDENTIFIER=Intel64&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PROCESSOR_ARCHITECTURE&lt;/span&gt;=x86&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PROCESSOR_ARCHITEW6432&lt;/span&gt;=AMD64&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;More details about these variables can be found &lt;a href="http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Still, this is more labor intensive than it need be.  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font size=4&gt;Using _DBGKD_DEBUG_DATA_HEADER64&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Remembering a &lt;a href="http://moyix.blogspot.com/2008/04/finding-kernel-global-variables-in.html"&gt;blogpost Moyix wrote about finding kernel global variables in Windows&lt;/a&gt; I figured each OS would have a different size after the OwnerTag defined in wdbgext.h:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;typedef struct _DBGKD_DEBUG_DATA_HEADER64 {&lt;br /&gt;   LIST_ENTRY64 List;&lt;br /&gt;   ULONG           OwnerTag;  //"KDBG"&lt;br /&gt;   ULONG           Size;      //Different for each OS&lt;br /&gt;} DBGKD_DEBUG_DATA_HEADER64, *PDBGKD_DEBUG_DATA_HEADER64;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;Moyix gives us the pattern to search for regarding x86 OSes since the end of LIST_ENTRY64 will be 0 for x86 machines [3]:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;\x00\x00\x00\x00\x00\x00\x00\x00KDBG&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;First let's try to find the sizes for each OS:&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;$ xxd xpsp3x86.dd |less&lt;br /&gt;[skip]&lt;br /&gt;0000b70: 6780 0000 0000 0000 0000 4b44 4247 &lt;b&gt;9002&lt;/b&gt;  g.........KDBG..&lt;br /&gt;[skip]&lt;br /&gt;&lt;br /&gt;$ xxd win7x86.dd |less&lt;br /&gt;[skip]&lt;br /&gt;0000bf0: ffff ffec 6fbb 83ec 6fbb 8300 0000 0000  ....o...o.......&lt;br /&gt;0000c00: 0000 004b 4442 47&lt;b&gt;40 03&lt;/b&gt;00 0000 8084 8300  ...KDBG@........&lt;br /&gt;[skip]&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;After examining XP, W2K3, Vista, W2K8 and Windows 7 machines (and different service packs), this is what we get (Windows 2000 value not done personally, but taken from Moyix's blog [3]):&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt; &lt;b&gt;OS&lt;/b&gt;              &lt;b&gt;Size&lt;/b&gt;&lt;br /&gt; Windows 2000    \x08\x02&lt;br /&gt; XP              \x90\x02&lt;br /&gt; W2K3            \x18\x03&lt;br /&gt; Vista           \x28\x03&lt;br /&gt; W2K8            \x30\x03&lt;br /&gt; Windows 7       \x40\x03&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;Now we need to find the pattern for x64 systems as well.  We could do this with a hexdump of memory images to find the KDBG pattern:&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;$ xxd win7x64.dd |less&lt;br /&gt;[skip]&lt;br /&gt;0000080: f8ff ff10 44a1 02&lt;b&gt;00 f8ff ff&lt;/b&gt;4b 4442 4740  ....D......KDBG@&lt;br /&gt;0000090: 0300 0000 f080 0200 f8ff ff60 8f87 0200  ...........`....&lt;br /&gt;[skip]&lt;br /&gt;&lt;br /&gt;$ xxd w2k8x64.dd |less&lt;br /&gt;[skip]&lt;br /&gt;0000f10: f8ff ff40 f878 01&lt;b&gt;00 f8ff ff&lt;/b&gt;4b 4442 4730  ...@.x.....KDBG0&lt;br /&gt;0000f20: 0300 0000 c060 0100 f8ff ff60 b865 0100  .....`.....`.e..&lt;br /&gt;[skip]&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;After examining several x64 dumps, the pattern that seemed universal to them was:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;'\x00\xf8\xff\xffKDBG'&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;The header sizes also appear to remain the same for x64 and x86 machines.  So there it is.  You can search for a unique pattern in the memory image in order to figure out what OS it is.  Some examples:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Windows 7x86&lt;/b&gt;:  '\x00\x00\x00\x00\x00\x00\x00\x00KDBG\x40\x03'&lt;br /&gt;&lt;b&gt;W2K3 x86&lt;/b&gt;: '\x00\x00\x00\x00\x00\x00\x00\x00KDBG\x18\x03'&lt;br /&gt;&lt;b&gt;W2K8 x64&lt;/b&gt;: '\x00\xf8\xff\xffKDBG\x30\x03'&lt;br /&gt;&lt;br /&gt;You could very easily write a Python script to identify Windows memory images using this technique, but you don't have to:  This has already been incorporated into the &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility 1.4 framework&lt;/a&gt; in the imageinfo.py plugin.  Thanks to Mike Auty (ikelos) for doing the honors :-)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;font size=4&gt;References&lt;/font&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[1] List of Windows Versions&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions"&gt;http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[2] HOWTO: Detect Process Bitness&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx"&gt;http://blogs.msdn.com/b/david.wang/archive/2006/03/26/howto-detect-process-bitness.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;[3] Finding Kernel Global Variables in Windows &lt;br /&gt;&lt;a href="http://moyix.blogspot.com/2008/04/finding-kernel-global-variables-in.html"&gt;http://moyix.blogspot.com/2008/04/finding-kernel-global-variables-in.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5202103353625550250?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5202103353625550250/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5202103353625550250' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5202103353625550250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5202103353625550250'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/12/identifying-memory-images.html' title='Identifying Memory Images'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5115117588693070441</id><published>2010-12-06T09:21:00.005-05:00</published><updated>2010-12-07T14:26:19.394-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Volatility 1.3 get_plugins Script Update</title><content type='html'>I've finally gotten around to updating the &lt;a href="http://gleeda.blogspot.com/2009/10/volatility-get-plugins-bash-script.html"&gt;get_plugins&lt;/a&gt; script I wrote a while back for &lt;font color=red&gt;Volatility 1.3&lt;/font&gt; (and finally gotten around to blogging about it).  This is due to a few changes in plugins, dependencies and to address difficulties mentioned in &lt;a href="http://lorgor.blogspot.com/2010/11/volatility-memory-forensics-i.html"&gt;lorgor's blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://mnin.blogspot.com"&gt;MHL&lt;/a&gt; has also updated malfind2 to work with Yara 1.4a, so this script is compatible with those changes.&lt;br /&gt;&lt;br /&gt;I have only tested this on Ubuntu and Mac OSX (with MacPorts installed).&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;You must run this script as root&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This script also installs Volatility using SVN.  If you are running Ubuntu or Mac it will check that SVN is installed, and if not, will install it and pull down Volatility in the current directory.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;If you are running Ubuntu or Mac OSX, this script will install other dependencies you will need like pcregrep libpcre++-dev python-dev for Ubuntu or pcre pcre++ for Mac.&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;This script installs dependencies: pefile, libdasm, pycrypto, yara-python 1.4a, as well as all known Volatility plugins, including the newer VAP ones from MHL&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;You still have to install &lt;a href="http://search.cpan.org/~neilw/Inline-Python-0.20/Python.pod"&gt;Inline::Python&lt;/a&gt; on your own.&lt;br /&gt;&lt;br /&gt;You can find the script in my &lt;a href="https://github.com/gleeda/misc-scripts/blob/master/get_plugins.bsh"&gt;GitHub repository&lt;/a&gt; or as raw text &lt;a href="https://github.com/gleeda/misc-scripts/raw/master/get_plugins.bsh"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5115117588693070441?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5115117588693070441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5115117588693070441' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5115117588693070441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5115117588693070441'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/12/volatility-14-getplugins-script-update.html' title='Volatility 1.3 get_plugins Script Update'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8371838833053514324</id><published>2010-11-18T09:56:00.002-05:00</published><updated>2010-11-18T10:14:23.820-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='misc forensic'/><title type='text'>Misc Updates</title><content type='html'>There have been some interesting items in the last week:&lt;br /&gt;&lt;br /&gt;Brian Carrier has started a new &lt;a href="http://www2.opensourceforensics.org/"&gt;Open Source Digital Forensics&lt;/a&gt; website.  It offers a quick way for people to find useful tools, papers and procedures.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/dckovar"&gt;Dave Kovar&lt;/a&gt; released a &lt;a href="http://integriography.wordpress.com/2010/11/17/new-version-of-analyzemft/"&gt;new version of analyzeMFT&lt;/a&gt;.  Not sure how he's had time to work on this, what with his busy glob-trotting lifestyle, but he's done it again :-) &lt;br /&gt;&lt;br /&gt;Lance Mueller blogged recently about an EnScript &lt;a href="http://www.forensickb.com/2010/11/encase-filter-that-uses-mssql-for_14.html"&gt;that uses MSSQL for faster filtering of files by hash values&lt;/a&gt;.  It was provided by Oliver Höpli and as &lt;a href="http://twitter.com/codeslack"&gt;Jon Stewart&lt;/a&gt;(Mr. EnScript) &lt;a href="http://codeslack.blogspot.com/2010/11/fast-hash-matching.html"&gt;can tell you, it's quite useful&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For the iPhone forensics peeps, an &lt;a href="http://viaforensics.com/education/white-papers/iphone-forensics/"&gt;iPhone Forensics White Paper&lt;/a&gt; was released on viaForensics.  &lt;br /&gt;&lt;br /&gt;There was also an &lt;a href="http://mobileforensics.wordpress.com/2010/11/15/open-source-iphone-tool/"&gt;open source iPhone Analyser released on Sourceforge&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8371838833053514324?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8371838833053514324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8371838833053514324' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8371838833053514324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8371838833053514324'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/11/misc-updates.html' title='Misc Updates'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3761130914980545827</id><published>2010-11-17T08:21:00.003-05:00</published><updated>2010-11-17T08:29:26.619-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nyc4sec'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>NYC4SEC Meeting 11/17/2010</title><content type='html'>There is a NYC4SEC meeting tonight (11/17/2010).  This month our speaker is Professor &lt;a href="http://twitter.com/evilproffy"&gt;Nasir Memon&lt;/a&gt; who will be giving a presentation on digital image forensics. Description below:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Photo Forensics: There is More to a Picture Than Meets the Eye&lt;br /&gt;&lt;br /&gt;When presented with a device full of active or deleted data – what do you know about the images? Can you recover them all? Can you tell which camera they are taken with? Can you tell if they are manipulated? Can you find from the Internet all other pictures taken from the same camera? Forensics professionals all over the world are increasingly encountering such questions.&lt;br /&gt;&lt;br /&gt;Given the ease by which digital images can be created, altered, and manipulated with no obvious traces, digital image forensics has emerged as a research field with important implications for ensuring digital image credibility. This presentation provides an overview of recent developments in the field, focusing on three problems.&lt;br /&gt;&lt;br /&gt;First, collecting image evidence and reconstructing them from fragments, with or without missing pieces. This involves sophisticated file carving technology.&lt;br /&gt;&lt;br /&gt;Second, attributing the image to a source, be it a camera, a scanner, or a graphically generated picture. The process entails associating the image with a class of sources with common characteristics (device model) or matching the image to an individual source device, for example a specific camera.&lt;br /&gt;&lt;br /&gt;Third, attesting to the integrity of image data. This involves image forgery detection to determine whether an image has undergone modification or processing after being initially captured.&lt;br /&gt;&lt;br /&gt;So please join us on Wednesday, November 17th, 7:00pm at John Jay College.&lt;br /&gt;&lt;br /&gt;John Jay College - &lt;a href="http://web.jjay.cuny.edu/~fcm/index.php"&gt;Forensic Computing&lt;/a&gt; Program and the &lt;a href="http://www.jjay.cuny.edu/centers/cybercrime_studies/index.php"&gt;Center for Cybercrime Studies&lt;/a&gt;&lt;br /&gt;899 Tenth Avenue - btwn 58th &amp; 59th&lt;br /&gt;Room 610T - 6th Floor&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Don't forget to &lt;a href="http://www.nyc4sec.info/calendar/15416096/"&gt;RSVP&lt;/a&gt;!!!&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://twitter.com/DouglasBrush"&gt;Douglas Brush&lt;/a&gt;, &lt;a href="http://twitter.com/jgarcia62"&gt;Joe Garcia&lt;/a&gt;, &lt;a href="http://www.systemic-inquiry.com/"&gt;Prof Bilal Khan&lt;/a&gt; and &lt;a href="http://web.math.jjay.cuny.edu/index.php"&gt;Prof Douglas Salane&lt;/a&gt; for making this possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3761130914980545827?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3761130914980545827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3761130914980545827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3761130914980545827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3761130914980545827'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/11/nyc4sec-meeting-11172010.html' title='NYC4SEC Meeting 11/17/2010'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3482141058465979475</id><published>2010-10-19T09:25:00.004-04:00</published><updated>2010-10-19T12:40:30.362-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nyc4sec'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>Upcoming NYC4SEC Meeting 10/27/2010</title><content type='html'>We have another &lt;a href="http://www.nyc4sec.info"&gt;NYC4SEC&lt;/a&gt; meetup next week on October 27th, 2010 7:00PM:&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;Halloween Edition - Are those knocks on your firewall doors for tricks or treats?&lt;br /&gt;&lt;br /&gt;Either way you have to realize one of the largest threats to your environment is the human element and none other than super malware and security forensicator &lt;a href="http://zeltser.com/"&gt;Lenny Zeltser&lt;/a&gt; will be giving us a special Halloween talk about how attackers can trick you or the people inside your organization to get access to treats. Ok, no more puns....&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jjay.cuny.edu/"&gt;John Jay College&lt;/a&gt; has reached out and offered to host this and future events for NYC4SEC so lets spread the word and show them that the NYC cyber security community is strong in numbers and appreciate their support!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zeltser.com/"&gt;&lt;br /&gt;Lenny Zeltser&lt;/a&gt; - "Knock, Knock! How Attackers Use Social Engineering to Bypass Your Defenses"&lt;br /&gt;&lt;br /&gt;Why bother breaking down the door if you can simply ask the person inside to let you in? Social engineering works, both during penetration testing and as part of real-world attacks. This talk explores how attackers are using social engineering to compromise defenses. It presents specific and concrete examples of how social engineering techniques succeeded at bypassing corporate security defenses. Lenny Zeltser will review how attackers have bypassed technological controls by making use of social engineering techniques. Attend this engaging talk to improve the relevance of your security awareness training and to adjust your defenses by revisiting your perspective of the threat landscape.&lt;br /&gt;&lt;br /&gt;John Jay College - &lt;a href="http://web.jjay.cuny.edu/~fcm/index.php"&gt;Forensic Computing&lt;/a&gt; Program and the &lt;a href="http://www.jjay.cuny.edu/centers/cybercrime_studies/index.php"&gt;Center for Cybercrime Studies&lt;/a&gt;&lt;br /&gt;899 Tenth Avenue - btwn 58th &amp; 59th&lt;br /&gt;Room 610T - 6th Floor&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;More details and RSVP here:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nyc4sec.info/calendar/15157644/"&gt;NYC4SEC RSVP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://twitter.com/DouglasBrush"&gt;Douglas Brush&lt;/a&gt;, &lt;a href="http://twitter.com/jgarcia62"&gt;Joe Garcia&lt;/a&gt;, &lt;a href="http://www.systemic-inquiry.com/"&gt;Prof Bilal Khan&lt;/a&gt; and &lt;a href="http://web.math.jjay.cuny.edu/index.php"&gt;Prof Douglas Salane&lt;/a&gt; for making this possible.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3482141058465979475?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3482141058465979475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3482141058465979475' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3482141058465979475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3482141058465979475'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/10/upcoming-nyc4sec-meeting-10272010.html' title='Upcoming NYC4SEC Meeting 10/27/2010'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3881204884266099656</id><published>2010-08-30T21:32:00.008-04:00</published><updated>2010-08-30T21:44:06.635-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nyc4sec'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='misc forensic'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>Upcoming NYC4SEC Meeting 9/16/10</title><content type='html'>The next &lt;a href="http://www.nyc4sec.info"&gt;NYC4SEC&lt;/a&gt; meeting will take place on September 16, 2010 at 7:00PM at Pace University.  Details:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;Grab your TrapperKeepers (I'm rockin' the red Lambo), your Saved By the Bell book covers and Garbage Pail Kids cards to stick on the inside of your locker because it's back to school time.&lt;br /&gt;&lt;br /&gt;Pace University is our gracious host and our speaker will be &lt;a href="http://twitter.com/ovie"&gt;Ovie Carroll&lt;/a&gt; who will be in town teaching a SANS Forensics 408: Computer Forensic Essentials Course here in NYC and offered to stop by after a day of training to meet our group.&lt;br /&gt;&lt;br /&gt;If you would like to attend the 408 course Ovie has provided a special offer for a class discount! Use "COINS-OC" to get 10% off and to make sure to get into class! &lt;a href="http://www.sans.org/new-york-forensics-2010-cs/description.php?tid=4207"&gt;http://www.sans.org/new-york-forensics-2010-cs/description.php?tid=4207&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More details to follow on specific room location for the NYC4SEC Meet-up but please get your parents to sign off on your NYC4SEC permission slips for Thursday, September 16th @ 7pm&lt;/blockquote&gt;&lt;br /&gt;Thanks to &lt;a href="http://twitter.com/douglasbrush"&gt;Douglas Brush&lt;/a&gt; and &lt;a href="http://twitter.com/jgarcia62"&gt;Joe Garcia&lt;/a&gt; for arranging this event.&lt;br /&gt;&lt;br /&gt;More details can be found here: &lt;a href="http://www.nyc4sec.info/calendar/14520625/"&gt;http://www.nyc4sec.info/calendar/14520625/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3881204884266099656?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3881204884266099656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3881204884266099656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3881204884266099656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3881204884266099656'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/08/upcoming-nyc4sec-meeting-91610.html' title='Upcoming NYC4SEC Meeting 9/16/10'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6593719049737532100</id><published>2010-08-14T21:21:00.014-04:00</published><updated>2010-09-17T09:13:58.136-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Upated Volatility SQLite plugins</title><content type='html'>I have recently updated the &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt; sqlite3 plugins (&lt;a href="http://code.google.com/p/volatility/source/browse/#svn/branches/Volatility-1.3.2"&gt;for 1.3.2 branch&lt;/a&gt;) with some minor changes:&lt;br /&gt;&lt;br /&gt;1) Removal of path from image name&lt;br /&gt;2) Lowercase of all processes, dlls, filenames, modules etc&lt;br /&gt;&lt;br /&gt;To make things even more interesting, I have converted some of the scanning code to output in sqlite3 as well:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;tar -cvzf vol_sql-0.3.tgz vol_sql-0.3/&lt;br /&gt;vol_sql-0.3/&lt;br /&gt;vol_sql-0.3/connections_2.py&lt;br /&gt;vol_sql-0.3/connscan2sql.py&lt;br /&gt;vol_sql-0.3/dlllist_2.py&lt;br /&gt;vol_sql-0.3/driverscan2sql.py&lt;br /&gt;vol_sql-0.3/files_2.py&lt;br /&gt;vol_sql-0.3/filescan2sql.py&lt;br /&gt;vol_sql-0.3/getsids.py&lt;br /&gt;vol_sql-0.3/modscan2sql.py&lt;br /&gt;vol_sql-0.3/modules_2.py&lt;br /&gt;vol_sql-0.3/pslist_2.py&lt;br /&gt;vol_sql-0.3/psscan3sql.py&lt;br /&gt;vol_sql-0.3/sockets_2.py&lt;br /&gt;vol_sql-0.3/sockscan2sql.py&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Schema:&lt;br /&gt;&lt;p class=code&gt;&lt;br /&gt;CREATE TABLE connections (pid integer, local text, remote text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE connscan2(pid integer, local text, remote text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE dlls (pname text, pid integer, cmdline text, base text, size text, path text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE driverscan2(paddr text, objtype text, pointers integer, handles integer, start text, size text, srvckey text, driver text, path text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE files (pid integer, file text, num integer, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE filescan2(paddr text, objtype text, pointers integer, handles integer, access text, file text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE modscan2 (file text, base text, size text, name text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE modules (file text, base text, size text, name text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE process (pname text, pid integer, ppid integer, thrds text, hndl text, ctime text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE psscan3(pid integer, ppid integer, ctime text, etime text, offset text, pdb text, pname text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE sids (pname text, pid integer, sid_string text, sid_name text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE sockets (pid integer, port integer, proto text, ctime text, memimage text);&lt;br /&gt;&lt;br /&gt;CREATE TABLE sockscan2(pid integer, port integer, proto text, ctime text, offset text, memimage text);&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So what kinds of queries could we make with the output of these plugins?  Here are few brief examples.&lt;br /&gt;&lt;br /&gt;Suppose you want to focus on one pid:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  select * from files where pid = [pid]&lt;br /&gt;  select * from connections where pid = [pid]&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;etc..&lt;br /&gt;&lt;br /&gt;Suppose you want to link up connections output with the process information:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;select process.pname, connections.* from connections &lt;br /&gt;   join process where process.pid = connections.pid &lt;br /&gt;      order by connections.pid;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suppose you have information from more than one image in your database and want to see if there are any dlls/processes/files in one image not represented in the others:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;select * from dlls &lt;br /&gt;   where path not in &lt;br /&gt;     (select path from dlls where memimage is not [image name])&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Suppose you don't care about dlls with a certain path, like winsxs for example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;select * from dlls&lt;br /&gt;   where path not in &lt;br /&gt;      (select path from dlls&lt;br /&gt;         where memimage is not [image name]) and&lt;br /&gt;           path not like '%winsxs%';&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Want to output all files in alphabetical order?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  select * from files order by file;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;or by PID?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  select * from files order by pid;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Now that we have sqlite output for some of the scanning plugins we can quickly compare for information missing from regular plugins.  Here's an example of pslist vs &lt;a href="http://moyix.blogspot.com/2010/07/plugin-post-robust-process-scanner.html"&gt;psscan3&lt;/a&gt; on an image &lt;a href="http://moyix.blogspot.com/2010/07/plugin-post-robust-process-scanner.html"&gt;released by Moyix&lt;/a&gt; in his post releasing psscan3:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;select psscan3.pid, psscan3.ppid, psscan3.ctime, &lt;br /&gt; psscan3.pname from psscan3 &lt;br /&gt;  where pid not in (select pid from process) &lt;br /&gt;    order by pid;&lt;br /&gt;&lt;br /&gt;0|0||idle&lt;br /&gt;592|360|Sat Nov 15 23:42:56 2008|csrss.exe&lt;br /&gt;660|616|Sat Nov 15 23:42:56 2008|services.exe&lt;br /&gt;828|660|Sat Nov 15 23:42:57 2008|svchost.exe&lt;br /&gt;924|660|Sat Nov 15 23:42:57 2008|svchost.exe&lt;br /&gt;992|660|Sat Nov 15 23:43:25 2008|alg.exe&lt;br /&gt;1016|660|Sat Nov 15 23:42:57 2008|svchost.exe&lt;br /&gt;1696|1516|Wed Nov 26 07:43:28 2008|network_listene&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Well, I'm sure you can think up a lot more crazy queries as well...&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://gleeda.blogspot.com/2010/01/volatilitys-output-rendering-functions.html"&gt;older sqlite plugins usage can be found here&lt;/a&gt;.  The newly converted plugins usage is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;  ./volatility plugin -f [image] -d [sqlite db]&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;At some point I'll cover output rendering in the 1.4 branch, which is more interesting :-)  Until then:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://jls-scripts.googlecode.com/files/vol_sql-0.3.tgz"&gt;Happy hunting!&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6593719049737532100?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6593719049737532100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6593719049737532100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6593719049737532100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6593719049737532100'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/08/upated-sqlite-plugins.html' title='Upated Volatility SQLite plugins'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7808129088138076374</id><published>2010-07-25T22:40:00.005-04:00</published><updated>2010-07-25T23:31:43.146-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EnScript'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Misc Forensic News</title><content type='html'>I'm somewhat behind in my blogging...  In the past couple of weeks a few things of interest have come out.  Here are some highlights:&lt;br /&gt;&lt;br /&gt;Moyix &lt;a href="http://moyix.blogspot.com/2010/07/plugin-post-robust-process-scanner.html" target="_blank"&gt;released psscan3&lt;/a&gt;: a robust process scanner.  He also released &lt;a href="http://moyix.blogspot.com/2010/07/gdi-utilities-taking-screenshots-of.html" target="_blank"&gt;GDI Utilities&lt;/a&gt; for taking screenshots of memory dumps, which is VERY cool! :-)&lt;br /&gt;&lt;br /&gt;Lenny Zeltser &lt;a href="http://zeltser.com/remnux/" target="_blank"&gt;released REMnux&lt;/a&gt; "a lightweight Linux distribution for assisting malware analysts in reverse-engineering malicious software. The distribution is based on Ubuntu" which includes &lt;a href="https://www.volatilesystems.com/default/volatility" target="_blank"&gt;Volatility&lt;/a&gt; in its arsenal.  &lt;br /&gt;&lt;br /&gt;Detective Cindy Murphy &lt;a href="http://ericjhuber.blogspot.com/2010/07/detective-cindy-murphys-cell-phone.html" target="_blank"&gt;published a guide on cell phone examinations&lt;/a&gt;, which is definitely worth a read.&lt;br /&gt;&lt;br /&gt;My former boss and GSI alum, &lt;a href="http://twitter.com/codeslack" target="_blank"&gt;Jon Stewart&lt;/a&gt; (Mr. EnScript), has written &lt;a href="http://codeslack.blogspot.com/2010/07/3-laws-of-enscript.html" target="_blank"&gt;two posts&lt;/a&gt; on the &lt;a href="http://codeslack.blogspot.com/2010/07/2nd-fundamental-law-of-enscript.html" target="_blank"&gt;3 laws of EnScript&lt;/a&gt; with a third post surely coming soon.  If you care anything about EnScript programming, these posts are definitely worth a read.&lt;br /&gt;&lt;br /&gt;There have been some &lt;a href="http://blogs.technet.com/b/sysinternals/archive/2010/07/22/updates-tcpview-v3-0-autoruns-v10-02-procdump-v1-81-disk2vhd-v1-61.aspx" target="_blank"&gt;updates to some of the Sysinternals tools&lt;/a&gt; that you might want to check out.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.f-response.com/index.php?option=com_content&amp;view=article&amp;id=248:f-response-and-android&amp;catid=34:blog-posts&amp;Itemid=50" target="_blank"&gt;&lt;br /&gt;F-Reponse now supports Android&lt;/a&gt;, which is pretty cool.  You can check out their blogpost which includes details and a video.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://intotheboxes.wordpress.com/" target="_blank"&gt;Into the Boxes&lt;/a&gt; is currently &lt;a href="http://intotheboxes.wordpress.com/2010/07/25/into-the-boxes-call-for-collaboration-0x02/" target="_blank"&gt;looking for collaborators for 0x2&lt;/a&gt;.  Don't be shy, I know there are a lot of people out who could contribute an article for the next edition.  If you have an idea for an article, hit the &lt;a href="http://intotheboxes.wordpress.com/call-box/" target="_blank"&gt;call box&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7808129088138076374?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7808129088138076374/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7808129088138076374' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7808129088138076374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7808129088138076374'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/07/misc-forensic-news.html' title='Misc Forensic News'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4685084800557034928</id><published>2010-07-15T14:39:00.006-04:00</published><updated>2010-07-15T14:46:56.689-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nyc4sec'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='misc forensic'/><category scheme='http://www.blogger.com/atom/ns#' term='hope'/><title type='text'>The Next HOPE and NYC4SEC</title><content type='html'>We will have another &lt;a href="http://www.nyc4sec.info"&gt;NYC4SEC&lt;/a&gt; meetup after &lt;a href="http://thedigitalstandard.blogspot.com/"&gt;Chris Pogue&lt;/a&gt;'s talk on &lt;a href="http://www.thenexthope.org/grid/"&gt;Sniper Forensics&lt;/a&gt; at &lt;a href="http://thenexthope.org/"&gt;The Next HOPE&lt;/a&gt;.  You can RSVP &lt;a href="http://www.nyc4sec.info/calendar/14112699/"&gt;here&lt;/a&gt;.  Details:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;This is the NYC4SEC after HOPE Meet-up for Sunday, July 18th at 6pm at Stout NYC on 33rd St. (btwn 6th &amp; 7th) – just across the street from the Hotel Pennsylvania.&lt;br /&gt;&lt;br /&gt;Informal meet up to hang out and mingle to talk about the highlights of the HOPE conference.&lt;br /&gt;&lt;br /&gt;I spoke with Chris Pogue who will be presenting at the conference on Sunday at 4pm - Sniper Forensics - Changing the Landscape of Modern Forensics and Incident Response and he said he will stop by to join us. Checkout Chris’s on his blog: &lt;a href="http://thedigitalstandard.blogspot.com/"&gt;http://thedigitalstandard.blogspot.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;C’mon by to drink, talk and hang with others in the NYC InFosec community!&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://twitter.com/douglasbrush/"&gt;Douglas Brush&lt;/a&gt; for setting this up ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4685084800557034928?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4685084800557034928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4685084800557034928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4685084800557034928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4685084800557034928'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/07/next-hope-and-nyc4sec.html' title='The Next HOPE and NYC4SEC'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6334200515467188087</id><published>2010-07-11T19:52:00.002-04:00</published><updated>2010-07-25T22:25:47.048-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><category scheme='http://www.blogger.com/atom/ns#' term='misc forensic'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>Moving Forward</title><content type='html'>A while back I read an article on &lt;a href="http://www.computerworld.com/s/article/9137708/Opinion_The_unspoken_truth_about_managing_geeks"&gt;managing geeks&lt;/a&gt;.  I think it's fairly accurate and also carries over into the computer forensics arena.  If you are in a position of managing geeks and are not one yourself, you might want to read this article.  &lt;br /&gt;&lt;br /&gt;Thanks to &lt;a href="http://windowsir.blogspot.com/2010/03/links_22.html"&gt;Harlan Carvey&lt;/a&gt; I read Lenny Zeltser's &lt;a href="http://zeltser.com/presentations/unexpected-incident-response.pdf"&gt;presentation on How To Respond To An Unexpected Security Event.&lt;/a&gt;  That's another good read you shouldn't miss.&lt;br /&gt;&lt;br /&gt;Ignoring the problem &lt;a href="http://codeslack.blogspot.com/2010/07/gratz-to-gesh.html"&gt;leads to discontent and inevitably: desertion&lt;/a&gt;.  Content geeks on the other hand tend to be loyal.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://imgs.xkcd.com/comics/devotion_to_duty.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 538px; height: 147px;" src="http://imgs.xkcd.com/comics/devotion_to_duty.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;That's about all I'm going to say about that...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6334200515467188087?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6334200515467188087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6334200515467188087' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6334200515467188087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6334200515467188087'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/07/moving-forward.html' title='Moving Forward'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3099978959784262014</id><published>2010-07-11T19:12:00.003-04:00</published><updated>2010-07-11T19:23:53.405-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc'/><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><title type='text'>Briefly: Moving of stuff</title><content type='html'>Since access to my QC website has now expired, I've moved some of the stuff that was linked to there from this blog to &lt;a href="http://code.google.com/p/jls-scripts/"&gt;here&lt;/a&gt;.  Future misc scripts will be dumped there as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3099978959784262014?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3099978959784262014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3099978959784262014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3099978959784262014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3099978959784262014'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/07/briefly-moving-of-stuff.html' title='Briefly: Moving of stuff'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8376193622479795115</id><published>2010-05-25T10:46:00.004-04:00</published><updated>2010-05-25T10:52:07.573-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='CEIC'/><title type='text'>Very Briefly: CEIC</title><content type='html'>Some people have asked me about CEIC.  I will not be attending this year unfortunately.  I hope those of you who are currently there are having a blast though :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8376193622479795115?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8376193622479795115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8376193622479795115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8376193622479795115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8376193622479795115'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/05/very-briefly-ceic.html' title='Very Briefly: CEIC'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1526787677750605214</id><published>2010-03-15T20:46:00.003-04:00</published><updated>2010-03-15T21:02:45.671-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Extremely Off Topic - Google: Feeling Lucky?</title><content type='html'>Just a bit of nonsense I discovered today:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/S57VGq0LISI/AAAAAAAAAuc/p4ppVSo7rBg/s1600-h/feeling+lucky.JPG"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 285px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/S57VGq0LISI/AAAAAAAAAuc/p4ppVSo7rBg/s400/feeling+lucky.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5449026909713932578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice a theme?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1526787677750605214?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1526787677750605214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1526787677750605214' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1526787677750605214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1526787677750605214'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/03/extremely-off-topic-google-feeling.html' title='Extremely Off Topic - Google: Feeling Lucky?'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_55uSCYxbQ8M/S57VGq0LISI/AAAAAAAAAuc/p4ppVSo7rBg/s72-c/feeling+lucky.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6944298300820538973</id><published>2010-02-14T21:06:00.010-05:00</published><updated>2010-02-17T09:41:25.655-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EnScript'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='timeline'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>GNB's Timeline EnScript</title><content type='html'>A former colleague of mine, &lt;a href="http://www.geoffblack.com/forensics"&gt;Geoff Black&lt;/a&gt;, has a pretty cool &lt;a href="http://www.geoffblack.com/enscripts/Timeline_Report_v1.8.1.zip"&gt;timeline EnScript (zip file)&lt;/a&gt; available on his website. I have been playing around with it and have meant to blog about it for a while...&lt;br /&gt;&lt;br /&gt;The contents of the zip are as follows:&lt;br /&gt;&lt;br /&gt;Timeline Report.EnPack&lt;br /&gt;Timeline Report.EnScript (actual code)&lt;br /&gt;Timeline_Report_README.pdf&lt;br /&gt;Timeline_Report_WHATSNEW.pdf &lt;br /&gt;Include\GNB_HTMLlib.EnScript (library file)&lt;br /&gt;Include\GNB_XMLlib.EnScript (library file)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I must say that it's nice that Geoff has given us the code to his Timeline script so that one can modify as desired. It's also nice that he includes README and WHATSNEW files so you can have something to reference for past and present versions.&lt;br /&gt;&lt;br /&gt;Simply unzip these items (without the pdfs) into your EnCaseX\EnScript folder and you are ready to go. You can run the script by either double clicking the EnPack or the EnScript, just make sure to add a disk image to the case first ;-). When you run it you will see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/S3iunzLwPUI/AAAAAAAAAto/OkwB42BgVIY/s1600-h/1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/S3iunzLwPUI/AAAAAAAAAto/OkwB42BgVIY/s400/1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5438288548827512130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There are a lot of options you can choose. Here's a closeup of the interface itself:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/S3ixfhgNjhI/AAAAAAAAAtw/NePe7uqi0lo/s1600-h/2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 312px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/S3ixfhgNjhI/AAAAAAAAAtw/NePe7uqi0lo/s400/2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5438291705177411090" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can pick a certain time period with a start and stop date for the timeline (boxed in blue). You can pick the type of output you want (boxed in pink), whether you want Records, Bookmarks, a Tab Delimited report (TSV), how many entries you'd like in each TSV file and whether or not you would like an HTML report better suited for IE or Firefox. There are more Script Options and Time Options (boxed in green) that allow you to select files you want in the timeline report (default is all files) and which time entries you are interested in seeing (default is all). You can modify the order to the Output Fields (boxed in red) for the TSV file or remove fields that are not of interest. Other fields are self explanatory.&lt;br /&gt;&lt;br /&gt;While the script is running you can see the progress bar at the bottom right. If you choose the HTML report option you may end up with several HTML files (depending on how many files are selected and how many entries per file you have selected) and if this is the case each file is named in order for example:&lt;br /&gt;&lt;br /&gt;TimelineReport-FF.html&lt;br /&gt;TimelineReport-FF2.html&lt;br /&gt;TimelineReport-FF3.html&lt;br /&gt;&lt;br /&gt;and so on... You can see an example report below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3i3ApggZ0I/AAAAAAAAAt4/t_n_6WMObTU/s1600-h/3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 194px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3i3ApggZ0I/AAAAAAAAAt4/t_n_6WMObTU/s400/3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5438297771819951938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The latest change is highlighted, but you can see that some files might have the same time stamp for different fields. In this case the file will be listed twice, once with Created highlighted and once with Accessed highlighted (from the README).&lt;br /&gt;&lt;br /&gt;You can check out some of Geoff's other EnScripts and CEIC presentations at his website: &lt;a href="http://www.geoffblack.com/forensics"&gt;http://www.geoffblack.com/forensics&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6944298300820538973?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6944298300820538973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6944298300820538973' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6944298300820538973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6944298300820538973'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/02/gnbs-timeline-enscript.html' title='GNB&apos;s Timeline EnScript'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_55uSCYxbQ8M/S3iunzLwPUI/AAAAAAAAAto/OkwB42BgVIY/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5299059169661353361</id><published>2010-02-14T14:05:00.009-05:00</published><updated>2010-02-14T15:54:03.639-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EnScript'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='work'/><title type='text'>Yahoo Messenger EnScripts</title><content type='html'>There are a couple of publicly available Yahoo Messenger EnScripts/EnPacks out, such as:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.forensickb.com/2009/10/few-days-ago-i-posted-enscript-to.html"&gt;Yahoo Decoder in unallocated&lt;/a&gt; by Lance Mueller&lt;br /&gt;&lt;br /&gt;&lt;a href="https://support.guidancesoftware.com/forum/attachment.php?attachmentid=1259&amp;amp;d=1219255587"&gt;YahooMessenger-Parser&lt;/a&gt; by &lt;a href="http://secureartisan.wordpress.com/"&gt;Paul Bobby&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pretty useful scripts, however they don't handle right-to-left languages like Hebrew and Arabic.  Here are some before pics from my test run with Hebrew:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Lance Mueller's script's output:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3hTJfj5aoI/AAAAAAAAAtY/pvL7p6I2b6s/s1600-h/before2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 69px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3hTJfj5aoI/AAAAAAAAAtY/pvL7p6I2b6s/s400/before2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5438187972605864578" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Paul Bobby's scripts' output:&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3hSXeAp9xI/AAAAAAAAAtQ/Q9izyYoj2PM/s1600-h/before.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 215px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/S3hSXeAp9xI/AAAAAAAAAtQ/Q9izyYoj2PM/s400/before.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5438187113196156690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, (well if you know what Hebrew letters are supposed to look like) the letters come out as some gobbeldy-gook.  This is something I've been meaning to comment on for a while, having written various chat EnScripts at the beginning of my GSI employment.  I have just gotten around to it now...  The "encryption" method is the same for all unicode languages in that it is a byte-by-byte xor with the local username.  The problem is that the encoding becomes distorted when it is just saved in a string.  For example the letters ש and ל with &lt;a href="http://www.fileformat.info/info/charset/UTF-8/list.htm?start=1024"&gt;UTF-8 encodings&lt;/a&gt; d7a9 and  d79c respectively become c397 and c2a9 (it is left as an exercise for the reader to figure out why).  So here comes a solution that I have used in the past.&lt;br /&gt;&lt;br /&gt;The EnScripting language has a class called &lt;tt&gt;MemoryFileClass&lt;/tt&gt;, which allows you to have in memory buffers that you can treat as files.  You can create them, open them, read and write to them as you would any other file.  So the idea is simple enough:  write to a memory buffer as you decrypt the message and then extract the message after all decryption has taken place.  This is accomplished by adding a couple of helper functions to Paul Bobby's code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;bool WriteBuffer(MemoryFileClass &amp;file, char msg) {&lt;br /&gt;  file.SetCodePage(CodePageClass::ANSI);&lt;br /&gt;  int temp = msg;&lt;br /&gt;  file.WriteBinaryInt(temp, 1);&lt;br /&gt;  return file.IsValid();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void ReadBuffer(MemoryFileClass &amp;file, String &amp;msg) {&lt;br /&gt;  file.SetCodePage(CodePageClass::UTF8);&lt;br /&gt;  file.Seek(0);&lt;br /&gt;  file.ReadString(msg);&lt;br /&gt;}&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;Now we can just call the functions as appropriate when decrypting and outputting the messages.  You can see the correct output after this modification below (yeah, the conversation is lame and is just a test ;-):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/S3hUDYeYxgI/AAAAAAAAAtg/oNL5Tuc-CE0/s1600-h/after.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 226px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/S3hUDYeYxgI/AAAAAAAAAtg/oNL5Tuc-CE0/s400/after.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5438188967136118274" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The complete modified EnScript is available on the GSI forum (registration required):&lt;br /&gt;&lt;br /&gt;&lt;a href="https://support.guidancesoftware.com/forum/showthread.php?t=33644"&gt;A thread on the GSI forum with Paul Bobby's fixed EnScript&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5299059169661353361?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5299059169661353361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5299059169661353361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5299059169661353361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5299059169661353361'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/02/yahoo-messenger-enscripts.html' title='Yahoo Messenger EnScripts'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_55uSCYxbQ8M/S3hTJfj5aoI/AAAAAAAAAtY/pvL7p6I2b6s/s72-c/before2.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4077390577496425985</id><published>2010-02-14T09:58:00.007-05:00</published><updated>2010-02-14T11:53:33.272-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Briefly: Volatility News (2/14)</title><content type='html'>I'm a little behind in my blogging, but I wanted to post about a few items that people might not have noticed.  So here it is just in time for &lt;a href="http://xkcd.com/701/"&gt;Valentines Day&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Volatility SQL Plugins&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;I modified the &lt;a href="http://jls-scripts.googlecode.com/files/vol_sql-0.2.tgz"&gt;Volatility SQL output plugins (download link)&lt;/a&gt; slightly.  I changed the &lt;a href="http://gleeda.blogspot.com/2010/01/volatilitys-output-rendering-functions.html"&gt;schema in the dlllist_2.py plugin:&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/dlllist_2.py &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  dlls&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;pname&lt;/b&gt;&lt;/i&gt;           Process name (changed)&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;             Process ID &lt;br /&gt;&lt;b&gt;&lt;i&gt;cmdline&lt;/i&gt;&lt;/b&gt;         Command Line text&lt;br /&gt;&lt;b&gt;&lt;i&gt;base&lt;/i&gt;&lt;/b&gt;            Base Address&lt;br /&gt;&lt;b&gt;&lt;i&gt;size&lt;/i&gt;&lt;/b&gt;            Size&lt;br /&gt;&lt;b&gt;&lt;i&gt;path&lt;/i&gt;&lt;/b&gt;            Path of DLL&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;I also removed the Volatility files (vutils.py and commands.py) since there were &lt;a href="http://code.google.com/p/volatility/source/detail?r=256"&gt;two&lt;/a&gt; &lt;a href="http://code.google.com/p/volatility/source/detail?r=257"&gt;patches&lt;/a&gt; that address the items I changed in those files.  So now all you have to do is download &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility&lt;/a&gt; from the SVN and &lt;a href="http://gleeda.blogspot.com/2010/01/volatilitys-output-rendering-functions.html"&gt;unzip the plugins&lt;/a&gt; like before.&lt;br /&gt;&lt;br /&gt;For the more adventurous, the SQL rendering plugins have been incorporated into the experimental branch of Volatility (thank you &lt;a href="http://scudette.blogspot.com/"&gt;Scudette&lt;/a&gt;!).  You can download all branches with the following command:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;svn checkout http://volatility.googlecode.com/svn/branches Vol_All &lt;/p&gt;&lt;br /&gt;For the experimental branch (located in the experimental folder) you must have Python 2.6 installed.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Volatility User Manual&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;There is a new &lt;a href="http://volatility.googlecode.com/files/How%20to%20use%20Volatility_v2.pdf"&gt;Volatility User Manual&lt;/a&gt; contributed to the VDP by Mark Morgan.  It is a compilation of past VDP articles and blogposts and covers all public plugins to date.  Shouts to Mark!&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;EnCase Enscripts + Volatility = Takahiro Haruyama's Memory Forensics Toolkit&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Takahiro Haruyama has &lt;a href="http://cci.cocolog-nifty.com/blog/2010/02/encase-enscri-1.html"&gt;released a new version&lt;/a&gt; of his &lt;a href="http://volatility.tumblr.com/post/387511690/encase-enscripts-volatility-takahiro-haruyamas"&gt;Memory Forensics Toolkit&lt;/a&gt;.  I had played around with his &lt;a href="http://gleeda.blogspot.com/2010/02/briefly-memory-analysis-enscripts.html"&gt;previous version&lt;/a&gt;.  Now there is no excuse for the EnCase reliant not to get in on memory forensics ;-)  Shouts to Takahiro for making it easier for these users!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4077390577496425985?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4077390577496425985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4077390577496425985' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4077390577496425985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4077390577496425985'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/02/briefly-volatility-news-214.html' title='Briefly: Volatility News (2/14)'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7931454305085177210</id><published>2010-02-07T15:30:00.008-05:00</published><updated>2010-02-07T19:24:27.393-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EnScript'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Briefly: Memory Analysis EnScripts</title><content type='html'>I came across a post for the &lt;a href="http://cci.cocolog-nifty.com/blog/2009/11/encase-enscript.html"&gt;Memory Forensic Toolkit&lt;/a&gt; EnScript in the &lt;a href="https://support.guidancesoftware.com/forum/showthread.php?t=36302"&gt;GSI Forum&lt;/a&gt; a few days ago.  I finally got a chance to play around with it a little today and this will be a very brief overview.&lt;br /&gt;&lt;br /&gt;Prerequisite: EnCase 6.14 or higher.&lt;br /&gt;&lt;br /&gt;Simply download the toolkit from the link above and unzip it into your EnCaseX.X.X\EnScripts folder.  You should see something like the following in your EnScript pane with a Windows 7 folder and Windows XP:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/S28mrM9VH0I/AAAAAAAAAsw/GiFSpyrF8yE/s1600-h/en1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 327px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/S28mrM9VH0I/AAAAAAAAAsw/GiFSpyrF8yE/s400/en1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435605798914170690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have only tested the XP scripts at this time.  EnScripts available:&lt;br /&gt;&lt;br /&gt;- PsList: List of all processes&lt;br /&gt;- KMList: Show all loaded kernel modules&lt;br /&gt;- ConnList: View all TCP connections&lt;br /&gt;- VadSearch:　VAD process in the search for a string&lt;br /&gt;- DllList: List Dlls&lt;br /&gt;- OpenFiles: List of open files that the process&lt;br /&gt;- ProcDump: Extracting of a process to exe format&lt;br /&gt;- PsScan: Enumerates process information (EPROCESS)&lt;br /&gt;- ConnScan: Enumerates TCP connection information (TCPT_OBJECT)&lt;br /&gt;- KMScan:  Enumerates kernel modules (LDR_MODULE)&lt;br /&gt;- Vtypes/Win32/x86: library to use the above scripts&lt;br /&gt;&lt;br /&gt;You can run these EnScripts on raw memory dumps, just make sure to check the blue box for the memory dump you would like to run the EnScript against. Just double click the script you'd like to run. &lt;br /&gt;&lt;br /&gt;Here's an example run of PsList:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/S28pc08Ng6I/AAAAAAAAAtA/TXho4oJ7rZY/s1600-h/en3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 202px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/S28pc08Ng6I/AAAAAAAAAtA/TXho4oJ7rZY/s400/en3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435608850483741602" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And ConnScan:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/S28oaKRKaiI/AAAAAAAAAs4/dD8k9fisptQ/s1600-h/en2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 200px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/S28oaKRKaiI/AAAAAAAAAs4/dD8k9fisptQ/s400/en2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435607705157528098" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The output is very similar to Volatility and goes to the console by default.  You can easily modify the script to output to a text file, Excel spreadsheet or any other output type you can think about, however.&lt;br /&gt;&lt;br /&gt;For some EnScripts like dlllist, you are prompted for a PID to run it against.  You can modify the script to run agains all PIDs however, if desired.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/S28rp2x0wwI/AAAAAAAAAtI/U7BuXpfUQV8/s1600-h/en4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 242px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/S28rp2x0wwI/AAAAAAAAAtI/U7BuXpfUQV8/s400/en4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5435611273338602242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;There is also a &lt;a href="http://cci.cocolog-nifty.com/blog/2010/01/microsoft-cra-1.html"&gt;Microsoft Crash Analyzer&lt;/a&gt; which I have yet to try.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7931454305085177210?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7931454305085177210/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7931454305085177210' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7931454305085177210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7931454305085177210'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/02/briefly-memory-analysis-enscripts.html' title='Briefly: Memory Analysis EnScripts'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_55uSCYxbQ8M/S28mrM9VH0I/AAAAAAAAAsw/GiFSpyrF8yE/s72-c/en1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3485002591997960765</id><published>2010-02-07T13:02:00.007-05:00</published><updated>2010-02-07T14:34:14.894-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='misc forensic'/><title type='text'>Forensic Regexes</title><content type='html'>The other day on the #volatility channel we were discussing how it might be nice to have a list of Perl Regex for common things like IP addresses etc.  Here are a few items we came up with:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;IP Address:&lt;/span&gt; (?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MAC Address:&lt;/span&gt; ([a-fA-F0-9]{2}\:){5}[a-fA-F0-9]{2}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;URL:&lt;/span&gt; (http|https|ftp|mail)\:[\/\w.]+&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Email:&lt;/span&gt; [A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}&lt;br /&gt;&lt;br /&gt;You can find some other Regex expressions on the &lt;a href="http://blogs.sans.org/computer-forensics/2009/05/26/perl-fu-regexp-log-file-processing/"&gt;SANS blog&lt;/a&gt; however the regex expression for IP addresses matches items like 999.999.999.999, which we know is not a valid IP address.   &lt;br /&gt;&lt;br /&gt;There's a &lt;a href="http://geek00l.blogspot.com/2008/06/hex-021-learning-pcre-and-its.html"&gt;nice post by geek00l&lt;/a&gt; listed at the bottom of the SANS post which links to other interesting posts.&lt;br /&gt;&lt;br /&gt;Other references of interest:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.regular-expressions.info/"&gt;Regular-Expressions.info&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.baremetalsoft.com/baregrep/regex.php"&gt;Regex Reference&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;What would you like to add to the list?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3485002591997960765?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3485002591997960765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3485002591997960765' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3485002591997960765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3485002591997960765'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/02/forensic-regexes.html' title='Forensic Regexes'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8808468079630742476</id><published>2010-01-28T21:21:00.005-05:00</published><updated>2010-01-28T22:57:07.331-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>Cybercrime Studies: File Carving for Forensics Recovery</title><content type='html'>There is an upcoming talk at &lt;a href="http://www.jjay.cuny.edu/centers/cybercrime_studies/index.php" target="_blank"&gt;John Jay College&lt;/a&gt; that should be interesting:&lt;br /&gt;&lt;br /&gt;&lt;font size=4&gt;File Carving for Forensics Recovery&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.poly.edu/user/memon" target="_blank"&gt;Nasir Memon&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Professor of Computer Science&lt;br /&gt;Director of the Information Systems and Internet Security (ISIS) Lab&lt;br /&gt;&lt;a href="http://www.poly.edu/" target="_blank"&gt;Polytechnic Institute of New York University&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;As the number of digital devices in use continues to increase, there has also been an increase in the seizure and analysis of digital data for forensic purposes. One of the areas of high forensic interest is in the recovery of digital data from devices. In cases where the file system information for a digital device is missing or corrupt, newer data recovery techniques involving a process known as file carving are used to recover the data. This talk describes the need for and evolution of file carving, and presents the various technologies that have been used to improve file carving recovery, including our own Smart Carving techniques. &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Date:       Tuesday, February 9, 2010&lt;br /&gt;Time:       Reception – 1:45pm, Lecture – 2:00 pm&lt;br /&gt;Location:   Room 630T, Haaren Hall&lt;br /&gt;            899 Tenth Avenue, New York City 10019&lt;/span&gt;&lt;/pre&gt; &lt;br /&gt; &lt;br /&gt;RSVP: Nicole Daniels at 212-237-8920 or email &lt;a href="mailto:ndaniels@jjay.cuny.edu"&gt;ndaniels@jjay.cuny.edu&lt;/a&gt;.&lt;br /&gt;For additional information please contact Professor Doug Salane, Director of the Center for Cybercrime Studies, at 212-237-8836 or email &lt;a href="mailto:dsalane@jjay.cuny.edu"&gt;dsalane@jjay.cuny.edu&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8808468079630742476?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8808468079630742476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8808468079630742476' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8808468079630742476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8808468079630742476'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/01/file-carving-for-forensics-recovery.html' title='Cybercrime Studies: File Carving for Forensics Recovery'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7354882968239702475</id><published>2010-01-11T21:49:00.012-05:00</published><updated>2010-04-03T19:55:44.184-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Volatility's Output Rendering Functions</title><content type='html'>Lately I've been playing around writing plugins for &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt;.  A few of these will will be released at the end of this blog post, some others are still in the works to be released later.  During the writing of some of the more complicated plugins, I decided that I needed to have some temporary storage while doing complex processing.  Sure I could dump to a file and process that later, but why not do it within Volatility itself? &lt;br /&gt;&lt;br /&gt;&lt;a href="http://sqlite.org/"&gt;SQLite&lt;/a&gt; is good for this.  There's an option to use an &lt;a href="http://www.sqlite.org/inmemorydb.html"&gt;in-memory database&lt;/a&gt; (":memory:") that will remain in memory until the process dies.  I also started thinking that some people might like to have a SQLite database of all the information they could get from a memory image for various reasons.  Hence this is what the first release of plugins is all about.&lt;br /&gt;&lt;br /&gt;Luckily Volatility has an option for plugins to have more than one output option.  If you look at the code in &lt;tt&gt;forensics/commands.py&lt;/tt&gt; you'll see the following (line numbers not included):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;82   function_name = &lt;span style="font-weight:bold;"&gt;"render_%s" % self.opts.output&lt;/span&gt;&lt;br /&gt;83   if not self.opts.out_file:&lt;br /&gt;84       outfd = sys.stdout&lt;br /&gt;85   else:&lt;br /&gt;86       outfd = open(self.opts.out_file,'w')&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This allows plugins to have more than one output function.  For example a plugin might have a &lt;tt&gt;render_&lt;span style="font-weight:bold;"&gt;text&lt;/span&gt;&lt;/tt&gt; function that would print to stdout as usual, a &lt;tt&gt;render_&lt;span style="font-weight:bold;"&gt;html&lt;/span&gt;&lt;/tt&gt; function that prints out in html style, a &lt;tt&gt;render_&lt;span style="font-weight:bold;"&gt;sql&lt;/span&gt;&lt;/tt&gt; function that does some SQL actions etc etc...  The framework allows the user to pick which output option s/he wants and the output file on the command line as defined in &lt;tt&gt;vutils.py&lt;/tt&gt;:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;45 def get_standard_parser(cmdname):&lt;br /&gt;...&lt;br /&gt;...&lt;br /&gt;59   op.add_option('-H','--output',default = 'text',&lt;br /&gt;60        help='(optional, default="text") Output format (xml, html, sql)')&lt;br /&gt;61   op.add_option('-O', '--out_file', default=None,&lt;br /&gt;62        help='(output filename to write results onto - default stdout)')&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Therefore, if there is a plugin that has an html output option, it can be invoked from the command line like so:&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;./volatility &amp;lt;plugin&amp;gt; &lt;span style="font-weight:bold;"&gt;-H html -O &amp;lt;out_file&amp;gt;&lt;/span&gt; -f mem.dd&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Quite cool :-)&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Plugin Structure&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;If you are interested in writing plugins for Volatility, you really should read &lt;a href="http://volatility.tumblr.com/post/133902849/windows-memory-forensics-with-volatility"&gt;Andreas Schuster's slides&lt;/a&gt;.  They go into nice detail on how to write plugins for the framework.  Here I will simply give you the gist :-)&lt;br /&gt;&lt;br /&gt;The "skeleton" for the plugins is defined in &lt;tt&gt;forensics/commands.py&lt;/tt&gt;.  Items of interest include the &lt;tt&gt;help()&lt;/tt&gt; function which is the plugin description you see when you run Volatility with the help option:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;./volatility -h&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Also of interest is the &lt;tt&gt;parser()&lt;/tt&gt; function, which allows the plugin to modify its command line options.  There is also the &lt;tt&gt;calculate()&lt;/tt&gt; function, which is where the real work is done.  The last item of our interest is the &lt;tt&gt;execute()&lt;/tt&gt; function which allows us to &lt;tt&gt;calculate&lt;/tt&gt; and collect the desired data from the memory image and then output it using the plugin's chosen &lt;tt&gt;render_*&lt;/tt&gt; function.&lt;br /&gt;&lt;br /&gt;The plugins I'm releasing now consist of core commands (defined in &lt;tt&gt;vmodules.py&lt;/tt&gt;) that have been converted to this code structure so I could have more than one type of output for each of these commands.  The plugins in this package are:&lt;br /&gt;&lt;br /&gt;memory_plugins/connections_2.py&lt;br /&gt;memory_plugins/dlllist_2.py&lt;br /&gt;memory_plugins/files_2.py&lt;br /&gt;memory_plugins/modules_2.py&lt;br /&gt;memory_plugins/pslist_2.py&lt;br /&gt;memory_plugins/sockets_2.py&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Schema&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;The schema for these plugins is quite simple and not much different than the original output for these core commands.  There is an extra field for the name of the memory image that was analyzed in case someone would like to place information for more than one memory image into a SQLite database.  This may change at some point and of course you are free to change it as you like.  It's enough for what I needed, however.&lt;br /&gt;&lt;br /&gt;connections_2.py &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  connections&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;       Process ID &lt;br /&gt;&lt;b&gt;&lt;i&gt;local&lt;/i&gt;&lt;/b&gt;     Local connection information&lt;br /&gt;&lt;b&gt;&lt;i&gt;remote&lt;/i&gt;&lt;/b&gt;    Remote connection information&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/dlllist_2.py [Edit: 2/16/10 &lt;a href="http://gleeda.blogspot.com/2010/02/briefly-volatility-news-214.html"&gt;new schema&lt;/a&gt;]&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  dlls&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;image_file_name&lt;/b&gt;&lt;/i&gt;  Process name&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;             Process ID &lt;br /&gt;&lt;b&gt;&lt;i&gt;cmdline&lt;/i&gt;&lt;/b&gt;         Command Line text&lt;br /&gt;&lt;b&gt;&lt;i&gt;base&lt;/i&gt;&lt;/b&gt;            Base Address&lt;br /&gt;&lt;b&gt;&lt;i&gt;size&lt;/i&gt;&lt;/b&gt;            Size&lt;br /&gt;&lt;b&gt;&lt;i&gt;path&lt;/i&gt;&lt;/b&gt;            Path of DLL&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/files_2.py&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  files&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;       Process ID &lt;br /&gt;&lt;b&gt;&lt;i&gt;file&lt;/i&gt;&lt;/b&gt;      Open file&lt;br /&gt;&lt;b&gt;&lt;i&gt;num&lt;/i&gt;&lt;/b&gt;       Number of times file is open by pid      &lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/modules_2.py&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  modules&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;file&lt;/i&gt;&lt;/b&gt;      Module Path&lt;br /&gt;&lt;b&gt;&lt;i&gt;base&lt;/i&gt;&lt;/b&gt;      Base Address&lt;br /&gt;&lt;b&gt;&lt;i&gt;size&lt;/i&gt;&lt;/b&gt;      Size&lt;br /&gt;&lt;b&gt;&lt;i&gt;name&lt;/i&gt;&lt;/b&gt;      Module Name&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/pslist_2.py&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  process  &lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;pname&lt;/i&gt;&lt;/b&gt;     Process Name&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;       Process ID&lt;br /&gt;&lt;b&gt;&lt;i&gt;ppid&lt;/i&gt;&lt;/b&gt;      Parent Process ID&lt;br /&gt;&lt;b&gt;&lt;i&gt;thrds&lt;/i&gt;&lt;/b&gt;     Threads&lt;br /&gt;&lt;b&gt;&lt;i&gt;hndl&lt;/i&gt;&lt;/b&gt;      Handle Count&lt;br /&gt;&lt;b&gt;&lt;i&gt;ctime&lt;/i&gt;&lt;/b&gt;     Creation Time&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;memory_plugins/sockets_2.py&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Table Name:  sockets&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;pid&lt;/i&gt;&lt;/b&gt;       Process ID&lt;br /&gt;&lt;b&gt;&lt;i&gt;port&lt;/i&gt;&lt;/b&gt;      Port&lt;br /&gt;&lt;b&gt;&lt;i&gt;proto&lt;/i&gt;&lt;/b&gt;     Protocol&lt;br /&gt;&lt;b&gt;&lt;i&gt;ctime&lt;/i&gt;&lt;/b&gt;     Creation Time&lt;br /&gt;&lt;b&gt;&lt;i&gt;memimage&lt;/i&gt;&lt;/b&gt;  Memory image information was extracted from &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Installation&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;First, make sure you have &lt;a href="http://www.sqlite.org/download.html"&gt;SQLite3 installed&lt;/a&gt; along with support for Python.  Now download the &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility code from the SVN&lt;/a&gt;.  Download the plugins &lt;a href="http://jls-scripts.googlecode.com/files/vol_sql.tgz"&gt;from here&lt;/a&gt;.  A listing of the plugins is as follows:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ tar -tzf vol_sql.tgz &lt;br /&gt;vutils.py&lt;br /&gt;forensics/commands.py&lt;br /&gt;memory_plugins/connections_2.py&lt;br /&gt;memory_plugins/dlllist_2.py&lt;br /&gt;memory_plugins/files_2.py&lt;br /&gt;memory_plugins/modules_2.py&lt;br /&gt;memory_plugins/pslist_2.py&lt;br /&gt;memory_plugins/sockets_2.py&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Make a backup of your &lt;tt&gt;vutils.py&lt;/tt&gt; and &lt;tt&gt;forensics/commands.py&lt;/tt&gt; files if you like.  I had to make a small modification to both of these files to get the plugins working properly.  Then place the tar file into your Volatility directory and type:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ tar -xvzf vol_sql.tgz&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Each of the redefined core commands end with "_2" so pslist becomes pslist_2 and connections becomes connections_2 and so on.  So if I wanted to dump the output of the connections_2 plugin to a SQLite file I would type the following:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;./volatility connections_2 -H sql -O test.db -f mem.dd&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;After running all of the new commands to the same SQLite3 file, I can then look at what I have stored:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ sqlite3 test.db &lt;br /&gt;SQLite version 3.5.9&lt;br /&gt;Enter ".help" for instructions&lt;br /&gt;sqlite&gt; .table&lt;br /&gt;connections  dlls         files        modules      process      sockets    &lt;br /&gt;sqlite&gt; .schema&lt;br /&gt;CREATE TABLE connections (pid integer, local text, remote text, memimage text);&lt;br /&gt;CREATE TABLE dlls (image_file_name text, pid integer, cmdline text, base text, size text, path text, memimage text);&lt;br /&gt;CREATE TABLE files (pid, file, num, memimage);&lt;br /&gt;CREATE TABLE modules (file text, base text, size text, name text, memimage text);&lt;br /&gt;CREATE TABLE process (pname text, pid integer, ppid integer, thrds text, hndl text, ctime text, memimage text);&lt;br /&gt;CREATE TABLE sockets (pid integer, port integer, proto text, ctime text, memimage text);&lt;br /&gt;sqlite&gt; select * from files where pid = 4 and file like '%SEC%';&lt;br /&gt;4|\WINDOWS\system32\config\SECURITY|1|/home/levy/forensic/evidence/10.vmem&lt;br /&gt;4|\WINDOWS\system32\config\SECURITY.LOG|1|/home/levy/forensic/evidence/10.vmem&lt;br /&gt;sqlite&gt; .quit&lt;br /&gt;&lt;/p&gt; &lt;br /&gt;&lt;br /&gt;You can make as many complex queries as you like now :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7354882968239702475?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7354882968239702475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7354882968239702475' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7354882968239702475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7354882968239702475'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/01/volatilitys-output-rendering-functions.html' title='Volatility&apos;s Output Rendering Functions'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2442105957113450020</id><published>2010-01-02T19:17:00.005-05:00</published><updated>2010-01-02T19:57:49.416-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Briefly: Misc News</title><content type='html'>Into the Boxes Issue 0x0 is &lt;a href="http://intotheboxes.wordpress.com/2010/01/01/into-the-boxes-issue-0x0/"&gt;now out&lt;/a&gt;.  It contains a small article on Linux memory forensics I wrote as well as a cool article on Windows 7 UserAssist Registry Keys by &lt;a href="http://blog.didierstevens.com/"&gt;Didier Stevens&lt;/a&gt;, a hardware quick tip and FTK imager quick tip by &lt;a href="http://securityripcord.com/"&gt;Don C. Weber&lt;/a&gt; and a PCI interview with &lt;a href="http://windowsir.blogspot.com/"&gt;Harlan Carvey&lt;/a&gt;.  For those who are interested in contributing to future publications, check out the &lt;a href="http://intotheboxes.wordpress.com/author-guidelines/"&gt;Collaboration Box&lt;/a&gt;.  Congratulations to Don and Harlan on the first release!&lt;br /&gt;&lt;br /&gt;There is a new meetup group that I am helping to organize: &lt;a href="http://www.nyc4sec.info/"&gt;NYC4Sec&lt;/a&gt;.  The group consists of computer security, forensics and compliance professionals based in the Tri-State area and we will be meeting to discuss the latest trends in threats and responses as well as what to do when attacked.  We are aiming to meet at the end of the month.  Feel free to sign up and come to the meeting.  If anyone is interested in presenting at the meeting, please contact myself or Morton Swimmer.&lt;br /&gt;&lt;br /&gt;I have also been asked to give a talk at &lt;a href="http://www.ceicconference.com/"&gt;CEIC 2010&lt;/a&gt;.  So if you are planning to attend, I'll see you there :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2442105957113450020?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2442105957113450020/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2442105957113450020' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2442105957113450020'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2442105957113450020'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2010/01/briefly-misc-news.html' title='Briefly: Misc News'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5301536895635538044</id><published>2009-12-20T14:05:00.004-05:00</published><updated>2010-01-18T21:41:16.774-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Linux Memory Forensics: task_struct</title><content type='html'>A while back, I started &lt;a href="http://gleeda.blogspot.com/2008/09/prockcore-part-ii.html"&gt;blogging about /dev/kcore&lt;/a&gt; and had gotten up to the &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1026" target="_blank"&gt;task_struct&lt;/a&gt; structure, promising to continue talking about it.  Well, it's been a while since, but I have not forgotten.  This will take more than one post to finish it up, however.  Today we will start with a brief introduction.  Later posts will continue our exploration concluding with some small real demonstrations.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; "&gt;&lt;span style="font-size:130%;"&gt;task_struct&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So what is the &lt;tt&gt;task_struct&lt;/tt&gt; structure?  It's a structure that contains information about what a process is doing.  It allows the kernel to keep track of processes that are running, the states they are in as well as other information needed by that process during execution.&lt;br /&gt;&lt;br /&gt;States of the process are &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L173" target="_blank"&gt;also defined in include/linux/sched.h&lt;/a&gt; and let the kernel know if the process is running (TASK_RUNNING), interruptible (TASK_INTERRUPTIBLE), uninterruptible (TASK_UNINTERRUPTIBLE), stopped (TASK_STOPPED), being traced by a debugger (TASK_TRACED), or exiting (EXIT_ZOMBIE, EXIT_DEAD).&lt;br /&gt;&lt;br /&gt;The &lt;tt&gt;task_struct&lt;/tt&gt; structure also contains identifying information such as the process &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1095" target="_blank"&gt;PID&lt;/a&gt;, &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1096" target="_blank"&gt;thread group leader ID&lt;/a&gt;.  There are also pointers to the &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1107" target="_blank"&gt;parent process' &lt;tt&gt;task_struct&lt;/tt&gt; structure&lt;/a&gt; and real_parent &lt;tt&gt;task_struct&lt;/tt&gt; structure for debugging purposes.&lt;br /&gt;&lt;br /&gt;Also contained in the &lt;tt&gt;task_struct&lt;/tt&gt; structure is &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1113" target="_blank"&gt;information about other relationships the current process has&lt;/a&gt; such as children or siblings.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1151" target="_blank"&gt;executable name excluding the path&lt;/a&gt; is also stored in &lt;tt&gt;task_struct&lt;/tt&gt; as well as &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1169" target="_blank"&gt;current directory information&lt;/a&gt; and &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1171" target="_blank"&gt;file descriptors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L433" target="_blank"&gt;&lt;tt&gt;signal_struct&lt;/tt&gt;&lt;/a&gt; structure contains information regarding signals for this process as well as &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L493" target="_blank"&gt;tty&lt;/a&gt; associated with it.&lt;br /&gt;&lt;br /&gt;Also contained in the &lt;tt&gt;task_struct&lt;/tt&gt; is the &lt;tt&gt;mm_struct&lt;/tt&gt; which contains pointers to &lt;tt&gt;vm_area_struct&lt;/tt&gt;s which are areas of virtual memory.  We will discuss &lt;tt&gt;mm_struct&lt;/tt&gt; and &lt;tt&gt;vm_area_struct&lt;/tt&gt; next time.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;u&gt;References:&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;Bovet, D., M. Cesati (2000). Understanding the linux kernel. Cambridge: O'Reilly Media.&lt;br /&gt;&lt;br /&gt;Rusling, D. &lt;i&gt;Virtual Memory&lt;/i&gt;, The Linux Tutorial &lt;a href="http://www.linux-tutorial.info/modules.php?name=MContent&amp;amp;pageid=322"&gt;http://www.linux-tutorial.info/modules.php?name=MContent&amp;amp;pageid=322&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5301536895635538044?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5301536895635538044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5301536895635538044' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5301536895635538044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5301536895635538044'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/12/linux-memory-forensics-taskstruct.html' title='Linux Memory Forensics: task_struct'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5077072856590037897</id><published>2009-12-20T09:47:00.009-05:00</published><updated>2009-12-23T13:49:40.596-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='open question'/><title type='text'>Audience Participation Time</title><content type='html'>While catching up on &lt;a href="http://windowsir.blogspot.com/2009/12/putting-stuff-out-there.html"&gt;some reading&lt;/a&gt; over at &lt;a href="http://windowsir.blogspot.com/2009/12/using-regripper.html"&gt;Harlan's blog&lt;/a&gt; I started thinking about all of the programming I've done in the past year or so.  I really appreciate all of the hard work that goes into developing programs like RegRipper and countless others.  It's cool when people are able to share tools they have developed to solve problems they have encountered in the field.  It's also cool when people who are in the field are able to solve the problems themselves.  I have been thinking about whether or not someone who is working in the field of digital forensics really needs to know a programming language or not.  My thoughts are yes (which is influenced by what I see around me and may be biased, considering that I do a lot of programming), but I can see how some people may think differently.  The reason why I bring this up is because this question has been in the back of my mind since my last discussion with someone from my alma mater, John Jay College.&lt;br /&gt;&lt;br /&gt;John Jay's &lt;a href="http://www.jjay.cuny.edu/690.php"&gt;MS in Forensic Computing&lt;/a&gt; has been established since 2004 and it has been evolving ever since its conception. The &lt;a href="http://web.jjay.cuny.edu/~fcm/academics.php"&gt;courses of the program&lt;/a&gt; have roughly contained a lot of hands on labs as well as theory (algorithms, cryptography, network protocols etc) and programming (various scripting, C Linux OS) in addition to Criminal Justice courses on laws regarding digital evidence.  The question has come up several times as to whether or not the theoretical and programming courses are needed in the background of someone who wants to be a forensic examiner.&lt;br /&gt;&lt;br /&gt;When I was in attendance there, the general feeling from *some* (not all) of my colleagues was that they didn't need to learn programming and theory in order to work as a forensic examiner.  They said they only needed to learn how to use tool XXX or YYY and get a &lt;a href="http://cfed-ttf.blogspot.com/2009/10/certifications-are-evilby-john-mccash.html"&gt;certification in A, B, and/or C&lt;/a&gt; they would be set...  Perhaps they were right in some way, as they went on to find jobs where that was enough for them.  The debate continues about the direction of the program and whether or not theory and programming are needed and whether or not some kind of certification should be obtained instead.&lt;br /&gt;&lt;br /&gt;Having been out in the "real world" for a little while, I see a lot of people who do not need any programming knowledge whatsoever to fulfill their jobs.  There are plenty of tools that they are more than proficient in using and I'm not knocking their skills, because they are really quite knowledgeable at what they do.  However, there are many times that tool XXX or tool YYY doesn't do whatever it should normally, or it cannot fulfill the job the way the client would like.  Having a little programming knowledge helps out immensely in these cases.  In addition to the EnScripts I have written at work, I have written a lot of Perl scripts, *nix scripts, Visual Basic programs, SQL queries etc. to get the job done.  I have also taken someone else's code in language X, Y or Z and tweaked it to run the way I needed it to for a particular job.  Now I concede that it's not every day that I need to write these customizations, but it happens enough that I'm glad I can do it.&lt;br /&gt;&lt;br /&gt;I often hear from colleagues at work or elsewhere that they wish they knew how to program in X or Y so they could write their own tools to do something.  I have suggested books or websites from which they could glean this wanted knowledge.  This often comes with some "stern" advice that they must also practice programming if they want it to stick.  Some have taken my advice, some probably just don't have the time for it...&lt;br /&gt;&lt;br /&gt;So after much rambling on the subject, what do you think?  How often do you wish/are you glad that you knew how to program?  How often would it have helped you/does it help you on your job as a forensic examiner/incident responder?  &lt;br /&gt;&lt;br /&gt;Don't be afraid to comment.  I only moderate to keep down on the spam (which I seem to get a lot of for some reason).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5077072856590037897?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5077072856590037897/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5077072856590037897' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5077072856590037897'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5077072856590037897'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/12/audience-participation-time.html' title='Audience Participation Time'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1053432828266309117</id><published>2009-12-19T19:13:00.017-05:00</published><updated>2009-12-27T20:47:37.245-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>More Misc Stuff</title><content type='html'>I recently came across a couple of tools that may be helpful to someone and I have created a repository for some of my stuff:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.maatkit.org/"&gt;&lt;span style="font-weight: bold; "&gt;&lt;span style="font-size:130%;"&gt;&lt;u&gt;Maatkit&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Maatkit has a lot of cool utilities that allow you greater control of MySQL.  I recently found it &lt;b&gt;&lt;i&gt;very&lt;/i&gt;&lt;/b&gt; useful for restoring an extremely large MySQL dump by using the &lt;tt&gt;mk-parallel-restore&lt;/tt&gt;.  For information about its feature, either &lt;a href="http://www.maatkit.org/"&gt;visit the website&lt;/a&gt; or you can check out this &lt;a href="http://www.linux-mag.com/cache/7422/1.html"&gt;Linux Magazine article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.htmldoc.org/"&gt;&lt;span style="font-weight: bold; "&gt;&lt;span style="font-size:130%;"&gt;&lt;u&gt;HTMLDOC&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.htmldoc.org/"&gt;HTMLDOC&lt;/a&gt; allows you create PDF documents of html pages.  You can convert pages &lt;a href="http://www.htmldoc.org/documentation.php/TheBasicsofCommandLineAccess.html"&gt;one page at a time&lt;/a&gt;, or &lt;a href="http://www.htmldoc.org/documentation.php/TheBasicsofCommandLineAccess.html"&gt;as a book&lt;/a&gt;.  So you could use wget to download the pages of a website recursively, including the graphics and then pdf'ify it into one book with references... pretty useful.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; "&gt;&lt;span style="font-size:130%;"&gt;Some of my stuff&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Since I'm not sure how much longer I will have my academic website, I am starting to move some of the code that's been hosted there to &lt;a href="http://code.google.com/p/jls-scripts/downloads/list"&gt;another location&lt;/a&gt;.  I have also added a few things that are not listed on the old code page or elsewhere on my academic site, such as a &lt;a href="http://jls-scripts.googlecode.com/files/dc3ImageAssemble.zip"&gt;DC3 Image Assember script&lt;/a&gt; that worked with the last DC3 challenge (haven't looked at the current one) and a &lt;a href="http://jls-scripts.googlecode.com/files/virustotal.zip"&gt;Virus Total hash checker&lt;/a&gt; that takes a list of hashes and posts them to Virus Total to build an html report.  This last one needs some modification however, since if one is checking lots of files Virus Total starts to report errors...  Hopefully I'll have some time to create a new version in the future...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1053432828266309117?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1053432828266309117/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1053432828266309117' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1053432828266309117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1053432828266309117'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/12/more-misc-stuff.html' title='More Misc Stuff'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8959105596449708252</id><published>2009-12-13T10:24:00.004-05:00</published><updated>2009-12-13T11:02:59.586-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Misc Stuff</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Droid Forensics&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For those of you interested in Droid forensics, check out the &lt;a href="http://viaforensics.com/android/" target="_blank"&gt;viaForensics website&lt;/a&gt;.  There you can find a &lt;a href="http://viaforensics.com/wpinstall/wp-content/uploads/2009/08/Android-Forensics-Andrew-Hoog-viaForensics.pdf"&gt;presentation on Droid forensics (pdf)&lt;/a&gt; as well as a &lt;a href="http://viaforensics.com/blog/" target="_blank"&gt;regularly updated blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;New Volatility Plugins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;MHL has been busy &lt;a href="http://mnin.blogspot.com/2009/12/new-and-updated-volatility-plug-ins.html" target="_blank"&gt;creating new Volatility plugins&lt;/a&gt;.  He's modified the malfind plugin to use &lt;a href="http://code.google.com/p/yara-project/" target="_blank"&gt;YARA&lt;/a&gt; which allows one to search the process memory for defined patterns (rules).  He also has created a new plugin called ldr_modules.py that can detect unlinked LDR_MODULE entries.  I suggest reading his blogpost in order to take it all in.  You can get the updated plugins &lt;a href="http://mhl-malware-scripts.googlecode.com/files/vap-0.1.zip"&gt;here (zip)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Also from his blogpost you'll see that &lt;a href="http://volatility.tumblr.com/"&gt;AAron&lt;/a&gt; and &lt;a href="http://moyix.blogspot.com/"&gt;Moyix&lt;/a&gt; rocked the Incident Detection Summit.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;MDD will cease to exist&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;It seems that &lt;a href="http://volatility.tumblr.com/post/280389674/mdd-takes-a-bow"&gt;development and maintenance of the MDD tool will cease&lt;/a&gt;.  For those of you who are dependent on that tool, &lt;a href="http://windd.msuiche.net/"&gt;windd&lt;/a&gt; is a great free alternative. &lt;br /&gt; &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;Into the Boxes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For those of you who might not be aware, there is a new quarterly digital forensic and incident response ezine that is about to come out next month called &lt;a href="http://intotheboxes.wordpress.com/" target="_blank"&gt;Into the Boxes&lt;/a&gt;.  For more updates, check out their &lt;a href="http://twitter.com/intotheboxes" target="_blank"&gt;twitter feed&lt;/a&gt;.  If you are interested in contributing to future publications, you can find the &lt;a href="http://intotheboxes.wordpress.com/author-guidelines/" target="_blank"&gt;guidelines here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8959105596449708252?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8959105596449708252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8959105596449708252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8959105596449708252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8959105596449708252'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/12/misc-stuff.html' title='Misc Stuff'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-167802499495521657</id><published>2009-11-08T09:59:00.003-05:00</published><updated>2009-11-08T10:06:58.423-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='VDP'/><title type='text'>Briefly: New VDP Mac OSX Document</title><content type='html'>We have received a new submission to the VDP.  Keep them coming :-)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://dougee652.blogspot.com"&gt;Dougee&lt;/a&gt; has submitted an &lt;a href="http://volatility.googlecode.com/files/Installing%20Volatility%20in%20Snow%20Leopard.pdf"&gt;install manual for Snow Leopard&lt;/a&gt;.  It covers installation from the &lt;a href="https://www.volatilesystems.com/default/volatility/"&gt;official tar ball release&lt;/a&gt; as well as from the SVN repository.  It also covers installing some of the plugin dependencies.  Shouts to Dougee!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-167802499495521657?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/167802499495521657/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=167802499495521657' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/167802499495521657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/167802499495521657'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/11/briefly-new-vdp-mac-osx-document.html' title='Briefly: New VDP Mac OSX Document'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2795082553483187378</id><published>2009-11-06T14:26:00.003-05:00</published><updated>2009-11-06T14:40:32.112-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>OT: RSS Feeds and things</title><content type='html'>This is not going to be my usual banter, just something I came across (yeah, I know, I'm late) and thought was cool.  So &lt;a href="http://gleeda.blogspot.com/2009/05/some-links-and-information.html"&gt;it's no big secret that I use Google's Reader&lt;/a&gt; to keep up with all of my RSS feeds.  I had noticed that we are now able to search for shared items and hadn't really given it much thought.  I had even shared a couple of articles earlier in the year, but didn't really know what happened to them, or forgot that I had done so...&lt;br /&gt;&lt;br /&gt;Anyway, the other day people on twitter were talking about &lt;a href="https://www.google.com/dashboard" target="_blank"&gt;Google Dashboard&lt;/a&gt; and I decided to check it out.  There really wasn't that much surprising until I looked under the "Reader" section and saw I had followers.  Followers?  For my Google reader?  I wanted to know what they were following.  So after some investigation I find my &lt;a href="http://www.google.com/reader/shared/jamie.levy" target="_blank"&gt;shared items feed&lt;/a&gt; with the two things I had shared previously.  I've since decided to add things to the feeder, sometimes even with notes :-)&lt;br /&gt;&lt;br /&gt;I know... Google's got the goods on me and I'm feeding the monster, black helicopters etc etc etc...  but it's still a cool way to share things you read.  I've since subscribed to a few feeds myself :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2795082553483187378?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2795082553483187378/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2795082553483187378' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2795082553483187378'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2795082553483187378'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/11/ot-rss-feeds-and-things.html' title='OT: RSS Feeds and things'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1891338353240607920</id><published>2009-10-25T20:57:00.009-04:00</published><updated>2009-10-25T21:50:23.377-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Briefly: New Volatility Release</title><content type='html'>(via &lt;a href="http://mrechosix.blogspot.com/2009/10/volatility-f-response.html"&gt;Echo6&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;There is a new &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;stable release of Volatility&lt;/a&gt; v 1.3.2 available for download.&lt;br /&gt;&lt;br /&gt;Also &lt;a href="http://scudette.blogspot.com/"&gt;Michael Cohen (scudette)&lt;/a&gt; and Mike Auty have been extremely busy developing.  Their fearless efforts could use some eyes to track down and report bugs, however.  If you feel like helping out, download the 1.3.2  version, test it out and report any bugs you may find.&lt;br /&gt;&lt;br /&gt;You may report bugs using the &lt;a href="http://code.google.com/p/volatility/issues/list"&gt;Issues feature&lt;/a&gt; on the Google Code site.  You may also reach Mike Auty at:&lt;br /&gt;&lt;br /&gt;mike {dot} auty {at} gmail {dot} com&lt;br /&gt;&lt;br /&gt;And of course you can always reach the Volatility team on IRC on the #volatility channel at irc.freenode.net &lt;br /&gt;&lt;br /&gt;Mike Auty (ikelos) and Michael Cohen (scudette) are often online so you can talk to them about any bugs you encounter directly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1891338353240607920?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1891338353240607920/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1891338353240607920' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1891338353240607920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1891338353240607920'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/10/briefly-new-stable-volatility-release.html' title='Briefly: New Volatility Release'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6533616702694349051</id><published>2009-10-21T17:08:00.003-04:00</published><updated>2009-10-21T17:30:45.408-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Volatility Get Plugins Bash Script</title><content type='html'>Earlier I had written about all of the &lt;a href="http://gleeda.blogspot.com/2009/08/installing-volatility-modules.html"&gt;known Volatility plugins and how to go about installing them&lt;/a&gt;.  Now I've decided to make things even easier for some, by including a &lt;a href="http://volatility.googlecode.com/files/get_plugins.zip"&gt;bash script that will download and install all of these plugins&lt;/a&gt;.  It will also install pefile, pycrypto and pydasm.  I have tested it on a linux box as well as a cygwin installation.&lt;br /&gt;&lt;br /&gt;Make sure you are running this as root (or with sudo) if you are doing this under Linux.  Also make sure you have subversion installed.&lt;br /&gt;&lt;br /&gt;Prereqs for Cygwin:&lt;br /&gt;&lt;br /&gt;Obviously you must have Cygwin installed.  In addition to what I have listed in a &lt;a href="http://gleeda.blogspot.com/2009/07/cygwin-installation.html"&gt;previous post&lt;/a&gt;, you will also need to install:&lt;br /&gt;&lt;br /&gt;* wget&lt;br /&gt;* unzip&lt;br /&gt;* svn (subversion)&lt;br /&gt;&lt;br /&gt;Hopefully I haven't forgotten anything... let me know if I have.&lt;br /&gt;&lt;br /&gt;Simply unzip the &lt;a href="http://volatility.googlecode.com/files/get_plugins.zip"&gt;bash script&lt;/a&gt; into the directory where you want Volatility installed.  Then run the script:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ ./get_plugins.bsh&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;This bash script removes one of the example files (memory_plugins/example3.py) since it has a conflicting _EPROCESS definition, so if you want that file - simply comment out that remove statement.  &lt;br /&gt;&lt;br /&gt;You will have to install &lt;a href="http://search.cpan.org/~neilw/Inline-Python-0.20/Python.pod"&gt;Inline::Python&lt;/a&gt; yourself until I figure out a way to get it installed in a general fashion.&lt;br /&gt;&lt;br /&gt;Let me know if you encounter errors.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6533616702694349051?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6533616702694349051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6533616702694349051' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6533616702694349051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6533616702694349051'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/10/volatility-get-plugins-bash-script.html' title='Volatility Get Plugins Bash Script'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-276269344839858139</id><published>2009-10-20T12:40:00.003-04:00</published><updated>2009-10-20T12:49:17.023-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='VDP'/><title type='text'>Briefly: VDP Wiki</title><content type='html'>I have updated the &lt;a href="http://code.google.com/p/volatility/wiki/DocFiles" target="_blank"&gt;VDP Wiki&lt;/a&gt; to include some blog posts out there about using or installing &lt;a href="https://www.volatilesystems.com/default/volatility" target="_blank"&gt;Volatility&lt;/a&gt;.  There are also links to Richard McQuown's recent blogposts on his &lt;a href="http://forensiczone.blogspot.com/2009/10/volatility-batch-file-maker.html" target="_blank"&gt;Volatility Batch File Maker&lt;/a&gt; and &lt;a href="http://forensiczone.blogspot.com/2009/10/walk-through-volatility-batch-file.html" target="_blank"&gt;walk through&lt;/a&gt;.  There are also links to other submitted articles on installation, usage and reporting.&lt;br /&gt;&lt;br /&gt;I'll continue updating the Wiki as I find other articles to add to it.  If anyone wants to add something new, let me know: jamie {dot} levy {at} gmail {dot} com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-276269344839858139?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/276269344839858139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=276269344839858139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/276269344839858139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/276269344839858139'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/10/briefly-vdp-wiki.html' title='Briefly: VDP Wiki'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-715031017340017579</id><published>2009-10-09T16:12:00.006-04:00</published><updated>2009-10-09T16:20:07.669-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OMFW'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>Briefly: OMFW 2010</title><content type='html'>Open Memory Forensics Workshop (OMFW) 2010 is currently &lt;a href="http://volatility.tumblr.com/post/207295478/open-memory-forensics-workshop-omfw-2010"&gt;being planned&lt;/a&gt;.  If you are interested in presenting or helping out, let them know!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-715031017340017579?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/715031017340017579/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=715031017340017579' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/715031017340017579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/715031017340017579'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/10/briefly.html' title='Briefly: OMFW 2010'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3670767720472087156</id><published>2009-10-09T13:41:00.005-04:00</published><updated>2011-03-22T16:23:29.823-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='talks'/><title type='text'>Briefly: Malware Marketing talk at John Jay College</title><content type='html'>There's an &lt;a href="http://www.jjay.cuny.edu/centersInstitutes/cybercrime/x.asp"&gt;upcoming talk&lt;/a&gt; at &lt;a href="http://www.jjay.cuny.edu"&gt;John Jay College&lt;/a&gt; next week that may interest some of you in the NYC area:&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Understanding the Market for Malware and Cybercrime&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Thursday, Oct. 15, 2009&lt;br /&gt;3:15 pm, room 630T&lt;br /&gt;&lt;a href="http://criminaljustice.msu.edu/documents/CVHolt.pdf"&gt;Tom Holt&lt;/a&gt;, Assistant Professor&lt;br /&gt;School of Criminal Justice&lt;br /&gt;Michigan State University&lt;br /&gt;&lt;br /&gt;Events will take place at&lt;br /&gt;John Jay College of Criminal Justice&lt;br /&gt;899 Tenth Avenue&lt;br /&gt;(between 58th and 59th Streets.)&lt;br /&gt;RSVP to Nicole Daniels (&lt;a href="mailto:ndaniels@jjay.cuny.edu"&gt;ndaniels@jjay.cuny.edu&lt;/a&gt;: 212.237.8920).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3670767720472087156?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3670767720472087156/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3670767720472087156' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3670767720472087156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3670767720472087156'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/10/briefly-malware-marketing-talk-at-john.html' title='Briefly: Malware Marketing talk at John Jay College'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1105490771109877324</id><published>2009-08-24T15:40:00.008-04:00</published><updated>2011-03-01T09:44:28.078-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>/dev/crash Driver</title><content type='html'>As you may or may not know, some distributions (RHEL, Fedora, Ubuntu) block some reads and writes to /dev/mem and have for a while.  I first came across this when writing my thesis at John Jay College.  Since I was trying to test the memory encryption library I had written and original tests comprised of scanning all of memory, the /dev/mem barrier was a bit cumbersome.  I had gotten around it by using a Python script called Zeppoo-dump.py (project no longer maintained) to &lt;a href="http://venus.cs.qc.edu/~jlevy/code/setzeppoo.bsh"&gt;overwrite the offending instructions&lt;/a&gt;.  &lt;br /&gt;&lt;br /&gt;The following code only allows access within the first 256 pages of memory.  (/usr/src/linux/drivers/char/mem.c):&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;#ifdef CONFIG_STRICT_DEVMEM&lt;br /&gt;static inline int range_is_allowed(unsigned long pfn, unsigned long size)&lt;br /&gt;{&lt;br /&gt;        u64 from = ((u64)pfn) &lt;&lt; PAGE_SHIFT;&lt;br /&gt;        u64 to = from + size;&lt;br /&gt;        u64 cursor = from;&lt;br /&gt;&lt;br /&gt;        while (cursor &lt; to) {&lt;br /&gt;                if (!devmem_is_allowed(pfn)) {&lt;br /&gt;                        printk(KERN_INFO&lt;br /&gt;                "Program %s tried to access /dev/mem between %Lx-&gt;%Lx.\n",&lt;br /&gt;                                current-&gt;comm, from, to); &lt;br /&gt;                        return 0;&lt;br /&gt;                }&lt;br /&gt;                cursor += PAGE_SIZE;&lt;br /&gt;                pfn++;&lt;br /&gt;        }&lt;br /&gt;        return 1;&lt;br /&gt;}&lt;br /&gt;#else&lt;br /&gt;static inline int range_is_allowed(unsigned long pfn, unsigned long size)&lt;br /&gt;{&lt;br /&gt;        return 1;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;and from (/usr/src/linux/arch/x86/mm/init_32.c):&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;int devmem_is_allowed(unsigned long pagenr)&lt;br /&gt;{&lt;br /&gt;        if (pagenr &lt;= 256) &lt;br /&gt;                return 1;&lt;br /&gt;        if (!page_is_ram(pagenr))&lt;br /&gt;                return 1;&lt;br /&gt;        return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You can find a nice writeup &lt;a href="http://www.blackhat.com/html/bh-europe-09/bh-eu-09-archives.html#Lineberry"&gt;by Anthony Lineberry from BH Europe 2009&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So suppose you want to collect the memory image from /dev/mem?  What will happen if you try to do so on a machine that has CONFIG_STRICT_DEVMEM enabled?  If you try to collect memory using &lt;tt&gt;dd&lt;/tt&gt; you will see the following:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;# dd if=/dev/mem of=mem.dd&lt;br /&gt;dd: reading `/dev/mem': Operation not permitted&lt;br /&gt;2056+0 records in&lt;br /&gt;2056+0 records out&lt;br /&gt;1052672 bytes (1.1 MB) copied, 0.159965 s, 6.6 MB/s&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You should also see the following in &lt;tt&gt;/var/log/messages&lt;/tt&gt; though some values will obviously vary:&lt;br /&gt;&lt;p class="code"&gt;Aug 23 14:37:15 [comp name] kernel: [17415.953941] Program dd tried to access /dev/mem between 101000-&gt;101200.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So there has be a way around this, right?  Checking the Redhat Crash Utility listserv &lt;a href="http://www.mail-archive.com/crash-utility@redhat.com/msg01549.html"&gt;yielded some good advice.&lt;/a&gt;  There are three courses of action proposed:&lt;br /&gt;&lt;br /&gt;(1) Rebuild your kernel without the CONFIG_STRICT_DEVMEM restriction.&lt;br /&gt;(2) Port the Fedora /dev/crash driver (./drivers/char/crash.c) to your kernel.&lt;br /&gt;(3) Write a kretprobe module that tinkers with the return value of the&lt;br /&gt;    kernel's devmem_is_allowed() function such that it always returns 1.&lt;br /&gt;&lt;br /&gt;I don't want to recompile the kernel since I'll loose whatever is currently in memory, so I'll focus on (2).  Since I am currently using Ubuntu instead of Fedora, I knew I would have to port the code over.  So I found a copy of &lt;a href="http://www.takatan.net/lxr/source/drivers/char/crash.c?v=2.6.9-67.EL"&gt;crash.c&lt;/a&gt; and &lt;a href="http://www.takatan.net/lxr/source/include/asm-i386/crash.h?v=2.6.9-67.EL"&gt;crash.h&lt;/a&gt; and set to work.  You can find the ported &lt;a href="http://jls-scripts.googlecode.com/files/crash_driver_ubuntu.tgz"&gt;crash driver here&lt;/a&gt; as well as a Makefile.&lt;br /&gt;&lt;br /&gt;Now, I take NO responsibility for what may happen to your machine if something goes wrong during installation.  This is for a 32bit system, and I have only tested this on Ubuntu Ibex kernel 2.6.27-14-generic.  I still need to do some testing and will probably have more to say about that later... That being said, we'll continue.&lt;br /&gt;&lt;br /&gt;Grab the tar file from above and extract:&lt;br /&gt;&lt;p class="code"&gt;#tar -xvzf crash_driver_ubuntu.tgz &lt;br /&gt;crash_driver/&lt;br /&gt;crash_driver/crash.h&lt;br /&gt;crash_driver/Makefile&lt;br /&gt;crash_driver/crash.c&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Go inside the newly created folder and compile the kernel module:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;# cd crash_driver/&lt;br /&gt;# ls&lt;br /&gt;crash.c  crash.h  Makefile&lt;br /&gt;&lt;br /&gt;# make&lt;br /&gt;make -C /lib/modules/2.6.27-14-generic/build M=/home/levy/crash/crash_driver modules&lt;br /&gt;make[1]: Entering directory `/usr/src/linux-headers-2.6.27-14-generic'&lt;br /&gt;  CC [M]  /home/levy/crash/crash_driver/crash.o&lt;br /&gt;  Building modules, stage 2.&lt;br /&gt;  MODPOST 1 modules&lt;br /&gt;  CC      /home/levy/crash/crash_driver/crash.mod.o&lt;br /&gt;  LD [M]  /home/levy/crash/crash_driver/crash.ko&lt;br /&gt;make[1]: Leaving directory `/usr/src/linux-headers-2.6.27-14-generic'&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;At this point you should have the following files:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;# ls&lt;br /&gt;crash.c  crash.h  crash.ko  crash.mod.c  crash.mod.o  crash.o  Makefile  Module.markers  modules.order  Module.symvers&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The file of interest is the &lt;tt&gt;&lt;b&gt;crash.ko&lt;/b&gt;&lt;/tt&gt; kernel module.  We will load this into the kernel and check that it is installed correctly:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# insmod crash.ko&lt;br /&gt;&lt;br /&gt;# lsmod |grep crash&lt;br /&gt;crash                  10368  0 &lt;br /&gt;&lt;br /&gt;# ls -l /dev/crash&lt;br /&gt;crw-rw---- 1 root root 10, 59 2009-08-23 15:04 /dev/crash&lt;br /&gt;&lt;br /&gt;# tail -n 1 /var/log/messages&lt;br /&gt;Aug 23 15:04:10 [comp name] kernel: [19030.855920] crash memory driver: version 1.0&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So now we have a new device we can use to access memory: &lt;tt&gt;&lt;b&gt;/dev/crash&lt;/b&gt;&lt;/tt&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;# dd if=/dev/crash of=crash.dd&lt;br /&gt;dd: reading `/dev/crash': Bad address&lt;br /&gt;6812680+0 records in&lt;br /&gt;6812680+0 records out&lt;br /&gt;3488092160 bytes (3.5 GB) copied, 157.964 s, 22.1 MB/s&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I'm not yet sure what the "Bad address" error means, but I suspect it is because &lt;tt&gt;dd&lt;/tt&gt; tried to read beyond the 3.3 GB of memory that I have available.  &lt;br /&gt;&lt;br /&gt;You can remove the crash.ko module like so when you are finished:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# rmmod crash&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now let's test the newly obtained memory dump to see if it works.  I'm going to use the &lt;a href="http://people.redhat.com/anderson/"&gt;RH Crash Utility&lt;/a&gt; with the &lt;a href="http://volatilesystems.blogspot.com/2008/07/linux-memory-analysis-one-of-major.html"&gt;volatile patch&lt;/a&gt; &lt;a href="http://venus.cs.qc.edu/~jlevy/ceic/crash-new.tgz"&gt;which you can find here&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;# ./crash -f /boot/System.map-2.6.27-14-generic /usr/src/linux-source-2.6.27/vmlinux crash.dd --volatile&lt;br /&gt;&lt;br /&gt;crash 4.0-8.9&lt;br /&gt;Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009  Red Hat, Inc.&lt;br /&gt;Copyright (C) 2004, 2005, 2006  IBM Corporation&lt;br /&gt;Copyright (C) 1999-2006  Hewlett-Packard Co&lt;br /&gt;Copyright (C) 2005, 2006  Fujitsu Limited&lt;br /&gt;Copyright (C) 2006, 2007  VA Linux Systems Japan K.K.&lt;br /&gt;Copyright (C) 2005  NEC Corporation&lt;br /&gt;Copyright (C) 1999, 2002, 2007  Silicon Graphics, Inc.&lt;br /&gt;Copyright (C) 1999, 2000, 2001, 2002  Mission Critical Linux, Inc.&lt;br /&gt;This program is free software, covered by the GNU General Public License,&lt;br /&gt;and you are welcome to change it and/or distribute copies of it under&lt;br /&gt;certain conditions.  Enter "help copying" to see the conditions.&lt;br /&gt;This program has absolutely no warranty.  Enter "help warranty" for details.&lt;br /&gt; &lt;br /&gt;GNU gdb 6.1&lt;br /&gt;Copyright 2004 Free Software Foundation, Inc.&lt;br /&gt;GDB is free software, covered by the GNU General Public License, and you are&lt;br /&gt;welcome to change it and/or distribute copies of it under certain conditions.&lt;br /&gt;Type "show copying" to see the conditions.&lt;br /&gt;There is absolutely no warranty for GDB.  Type "show warranty" for details.&lt;br /&gt;This GDB was configured as "i686-pc-linux-gnu"...&lt;br /&gt;&lt;br /&gt;  SYSTEM MAP: /boot/System.map-2.6.27-14-generic                       &lt;br /&gt;DEBUG KERNEL: /usr/src/linux-source-2.6.27/vmlinux (2.6.27.18)&lt;br /&gt;    DUMPFILE: crash.dd&lt;br /&gt;        CPUS: 2&lt;br /&gt;        DATE: Mon Aug 23 12:31:54 2009&lt;br /&gt;      UPTIME: 02:44:55&lt;br /&gt;LOAD AVERAGE: 0.10, 0.17, 0.17&lt;br /&gt;       TASKS: 252&lt;br /&gt;    NODENAME: --&lt;br /&gt;     RELEASE: 2.6.27-14-generic&lt;br /&gt;     VERSION: #1 SMP Tue Aug 18 16:25:45 UTC 2009&lt;br /&gt;     MACHINE: i686  (1994 Mhz)&lt;br /&gt;      MEMORY: 3.2 GB&lt;br /&gt;         PID: 0&lt;br /&gt;     COMMAND: "swapper"&lt;br /&gt;        TASK: c0471340  (1 of 2)  [THREAD_INFO: c04aa000]&lt;br /&gt;         CPU: 0&lt;br /&gt;       STATE: TASK_RUNNING &lt;br /&gt;&lt;br /&gt;crash&gt; &lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;So far so good :-)&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;crash&gt; ps&lt;br /&gt;   PID    PPID  CPU   TASK    ST  %MEM     VSZ    RSS  COMM&lt;br /&gt;      0      0   0  c0471340  RU   0.0       0      0  [swapper]&lt;br /&gt;&gt;     0      0   1  f744e480  RU   0.0       0      0  [swapper]&lt;br /&gt;      1      0   0  f7448000  IN   0.1    3056   1900  init&lt;br /&gt;      2      0   1  f7448c90  IN   0.0       0      0  [kthreadd]&lt;br /&gt;      3      2   0  f7449920  IN   0.0       0      0  [migration/0]&lt;br /&gt;      4      2   0  f744a5b0  IN   0.0       0      0  [ksoftirqd/0]&lt;br /&gt;      5      2   0  f744b240  IN   0.0       0      0  [watchdog/0]&lt;br /&gt;      6      2   1  f744bed0  IN   0.0       0      0  [migration/1]&lt;br /&gt;      7      2   1  f744cb60  IN   0.0       0      0  [ksoftirqd/1]&lt;br /&gt;      8      2   1  f744d7f0  IN   0.0       0      0  [watchdog/1]&lt;br /&gt;      9      2   0  f744f110  IN   0.0       0      0  [events/0]&lt;br /&gt;     10      2   1  f7460000  IN   0.0       0      0  [events/1]&lt;br /&gt;     11      2   0  f7460c90  IN   0.0       0      0  [khelper]&lt;br /&gt;&lt;br /&gt;[snip]&lt;br /&gt;&lt;br /&gt;crash&gt; foreach files&lt;br /&gt;PID: 0      TASK: c0471340  CPU: 0   COMMAND: "swapper"&lt;br /&gt;ROOT: /    CWD: /&lt;br /&gt;No open files&lt;br /&gt;&lt;br /&gt;PID: 0      TASK: f744e480  CPU: 1   COMMAND: "swapper"&lt;br /&gt;ROOT: /    CWD: /&lt;br /&gt;No open files&lt;br /&gt;&lt;br /&gt;PID: 1      TASK: f7448000  CPU: 0   COMMAND: "init"&lt;br /&gt;ROOT: /    CWD: /&lt;br /&gt; FD    FILE     DENTRY    INODE    TYPE  PATH&lt;br /&gt;  0  f69c8300  f700c550  f695a3e0  CHR   /dev/console&lt;br /&gt;  1  f69c8300  f700c550  f695a3e0  CHR   /dev/console&lt;br /&gt;  2  f69c8300  f700c550  f695a3e0  CHR   /dev/console&lt;br /&gt;  3  f69c8f00  f720d770  f7243c38  FIFO  &lt;br /&gt;  4  f69c8780  f720d770  f7243c38  FIFO  &lt;br /&gt;  5  f69c86c0  f7218990  f7045228  SOCK  &lt;br /&gt;  6  f69c8b40  f70216e8  f70b6000  DIR   inotify&lt;br /&gt;&lt;br /&gt;PID: 2      TASK: f7448c90  CPU: 1   COMMAND: "kthreadd"&lt;br /&gt;ROOT: /    CWD: /&lt;br /&gt;No open files&lt;br /&gt;&lt;br /&gt;PID: 3      TASK: f7449920  CPU: 0   COMMAND: "migration/0"&lt;br /&gt;&lt;br /&gt;[snip]&lt;br /&gt;&lt;br /&gt;crash&gt; foreach net &lt;br /&gt;foreach: WARNING: net command requires -s or -S option&lt;br /&gt;&lt;br /&gt;PID: 0      TASK: c0471340  CPU: 0   COMMAND: "swapper"&lt;br /&gt;No open sockets.&lt;br /&gt;&lt;br /&gt;PID: 0      TASK: f744e480  CPU: 1   COMMAND: "swapper"&lt;br /&gt;No open sockets.&lt;br /&gt;&lt;br /&gt;PID: 1      TASK: f7448000  CPU: 0   COMMAND: "init"&lt;br /&gt;FD   SOCKET     SOCK    FAMILY:TYPE          SOURCE-PORT      DESTINATION-PORT&lt;br /&gt; 5  f7045200  f6bfe380  UNIX:DGRAM  &lt;br /&gt;&lt;br /&gt;[snip]&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;In order to compile the kernel so that you can use the RedHat Crash Utility, you can follow the &lt;a href="https://help.ubuntu.com/community/Kernel/Compile"&gt;Ubuntu tutorial&lt;/a&gt;.  After installing the appropriate packages you may have to run the following command:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;sudo apt-get build-dep linux&lt;br /&gt;&lt;/p&gt;  &lt;br /&gt;&lt;br /&gt;You should end up with a linux-source*.tar.bz2 file under /usr/src .  You should also have at least one folder with the kernel headers for your current kernel.  You can extract the .tar.bz2 file as so:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# tar -xjf linux-source*.tar.bz2&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Go into the resulting folder and set following flag in the Makefile:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;CFLAGS_KERNEL   = -g&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Copy the .config file from your /usr/src/linux-headers-$(uname -r) folder into the /usr/src/linux-source-$(uname -r) folder.&lt;br /&gt;&lt;br /&gt;Now type &lt;tt&gt;make&lt;/tt&gt;.  After the kernel is finished compiling, you should end up with a vmlinux file.  This is the uncompressed kernel image with the debugging information that you need in order to run the RH crash utility.  &lt;br /&gt;&lt;br /&gt;For more information on the RH Crash Utility, check out: &lt;br /&gt;&lt;a href="http://people.redhat.com/anderson/"&gt;Official RH Crash Utility Website&lt;/a&gt;&lt;br /&gt;&lt;a href="http://volatilesystems.blogspot.com/2008/07/linux-memory-analysis-one-of-major.html"&gt;Linux Memory Forensics&lt;/a&gt; by A. Walters, M. Cohen and D. Collett.&lt;br /&gt;&lt;a href="http://venus.cs.qc.edu/~jlevy/ceic/CEIC-linux.pdf"&gt;slides from CEIC&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1105490771109877324?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1105490771109877324/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1105490771109877324' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1105490771109877324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1105490771109877324'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/08/devcrash-driver.html' title='/dev/crash Driver'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2626751914118167328</id><published>2009-08-20T18:45:00.001-04:00</published><updated>2009-08-20T19:47:45.956-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='VDP'/><title type='text'>Briefly: VDP Project</title><content type='html'>I have volunteered to help with the &lt;a href="http://volatility.tumblr.com/post/148062949/volatility-documentation-project"&gt;Volatility Documentation Project (VDP)&lt;/a&gt; for &lt;a href="https://www.volatilesystems.com/default/volatility/"&gt;Volatility&lt;/a&gt;.  If you have something you would like to contribute, please feel free to email me at &lt;br /&gt;&lt;br /&gt;jamie -{dot}- levy -{at}- gmail -{dot}- com&lt;br /&gt;&lt;br /&gt;Contributed documents will appear on the &lt;a href="http://code.google.com/p/volatility/"&gt;Volatility Google Code&lt;/a&gt; website.&lt;br /&gt;&lt;br /&gt;We have two new contributions by SAL:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://volatility.googlecode.com/files/VolReport%28win%29_%20Simple%20Aggregation%20for%20Volatility%20Output.pdf"&gt;VolReport(win)&lt;/a&gt; with an &lt;a href="http://volatility.googlecode.com/files/vol-Report%28win%29.zip"&gt;accompaning batch script&lt;/a&gt; as well as a &lt;a href="http://volatility.googlecode.com/files/Pretty%20Process%20Mapping.pdf"&gt;manual covering the visual capabilities&lt;/a&gt; of &lt;a href="https://www.volatilesystems.com/default/volatility/"&gt;Volatility&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Keep them coming :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2626751914118167328?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2626751914118167328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2626751914118167328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2626751914118167328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2626751914118167328'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/08/briefly-vdp-project.html' title='Briefly: VDP Project'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1194575877271295446</id><published>2009-08-12T17:06:00.006-04:00</published><updated>2009-08-14T10:38:27.253-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Installing Volatility Plugins</title><content type='html'>So you've already installed &lt;a href="http://gleeda.blogspot.com/2009/08/volatility-svn.html"&gt;Volatility using SVN&lt;/a&gt; and you want to try out some of the community plugins that people are raving about.  Publicly known plugins are listed on the &lt;a href="http://www.forensicswiki.org/wiki/List_of_Volatility_Plugins"&gt;forensics wiki&lt;/a&gt;.  The wiki contains links to plugins as well as links to blogposts/articles for further information on installation, dependencies and how they work.&lt;br /&gt;&lt;br /&gt;Most plugin installation is straightforward where one may simply place the plugin in the &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; directory within the Volatility directory.  Some are only slightly more complicated by needing a helper library installed in addition to the plugin itself.  Others are even more complicated and require some installation of Python libraries which may or may not need the help of other compiled libraries.  Therefore we have three cases for plugin installation (please visit the forensics wiki for more information):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;u&gt;Simple Case&lt;/u&gt; - only in &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt;&lt;ul&gt;&lt;li&gt;volshell&lt;/li&gt;&lt;li&gt;IDT&lt;/li&gt;&lt;li&gt;cryptoscan&lt;/li&gt;&lt;li&gt;orphan_threads&lt;/li&gt;&lt;li&gt;keyboardbuffer&lt;/li&gt;&lt;li&gt;getsids&lt;/li&gt;&lt;li&gt;moddump&lt;/li&gt;&lt;li&gt;objtypescan&lt;/li&gt;&lt;li&gt;symlinkobjscan&lt;/li&gt;&lt;li&gt;driverscan&lt;/li&gt;&lt;li&gt;fileobjscan&lt;/li&gt;&lt;li&gt;pstree&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;More Complex Case&lt;/u&gt; - also supporting file(s)&lt;ul&gt;&lt;li&gt;driverirp (needs driverscan)&lt;/li&gt;&lt;li&gt;threadqueues (needs &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/lists.py"&gt;lists.py&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;ssdt (needs &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/lists.py"&gt;lists.py&lt;/a&gt;)&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;u&gt;Most Complex Case&lt;/u&gt; - installation of supporting libraries&lt;ul&gt;&lt;li&gt;malfind (needs &lt;a href="http://dkbza.org/pydasm.html"&gt;pydasm&lt;/a&gt; and &lt;a href="http://code.google.com/p/pefile/"&gt;pefile&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;kernel_hooks (needs &lt;a href="http://code.google.com/p/pefile/"&gt;pefile&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;usermode_hooks (needs &lt;a href="http://code.google.com/p/pefile/"&gt;pefile&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;volreg (needs &lt;a href="http://gitweb.pycrypto.org/?p=crypto/pycrypto-2.x.git"&gt;pycrypto&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;VolRip (needs volreg and &lt;a href="http://search.cpan.org/~nine/Inline-Python/Python.pod"&gt;Inline::Python&lt;/a&gt;)&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;h3&gt;Simple installation of volshell&lt;/h3&gt;&lt;br /&gt;For an example of a simple installation, we will install the &lt;a href="http://moyix.blogspot.com/2008/08/indroducing-volshell.html"&gt;volshell&lt;/a&gt; plugin.  Simply download the &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/volshell.py"&gt;volshell.py&lt;/a&gt; file and place it into your &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; directory.  You can test to make sure that is installed correctly by running Volatility without any arguments and volshell should appear under "Supported Plugin Commands" highlighted below in Figure 1.  All other "simple case" plugins should install the same way.  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SoDXyT9yMtI/AAAAAAAAAk8/HgfanhEenhQ/s1600-h/1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 198px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SoDXyT9yMtI/AAAAAAAAAk8/HgfanhEenhQ/s400/1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368528015178478290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 1: Installation of volshell&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;h3&gt;More Complex Cases&lt;/h3&gt;&lt;br /&gt;The &lt;a href="http://moyix.blogspot.com/2008/08/auditing-system-call-table.html"&gt;ssdt&lt;/a&gt; and &lt;a href="http://moyix.blogspot.com/2008/09/window-messages-as-forensic-resource.html"&gt;threadqueues&lt;/a&gt; plugins require that the &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/lists.py"&gt;lists.py&lt;/a&gt; library file be placed in the &lt;tt&gt;&lt;b&gt;forensics/win32&lt;/b&gt;&lt;/tt&gt; directory in addition to placing the &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/ssdt.py"&gt;ssdt.py&lt;/a&gt; and &lt;a href="http://kurtz.cs.wesleyan.edu/%7Ebdolangavitt/memory/threadqueues.py"&gt;threadqueues.py&lt;/a&gt; into the &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; folder as before.  The &lt;a href="http://mnin.blogspot.com/2009/07/new-and-updated-volatility-plug-ins.html"&gt;driverirp&lt;/a&gt; plugin requires the &lt;a href="http://computer.forensikblog.de/en/2009/04/scanning_for_drivers.html#more"&gt;driverscan&lt;/a&gt; plugin in order to work.  Both of these plugins are placed in the &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; directory.&lt;br /&gt;&lt;br /&gt;After placing the files in the appropriate places, check to make sure that the plugins are properly installed by running volatility without any arguments as before and checking under "Supported Plugin Commands" (Figure 1).&lt;br /&gt;&lt;h3&gt;Most Complex Cases&lt;/h3&gt;&lt;br /&gt;For the "most complex cases" other libraries must be installed for the plugin to work properly.  First we will look at installing the &lt;a href="http://mnin.blogspot.com/2009/07/new-and-updated-volatility-plug-ins.html"&gt;malfind&lt;/a&gt; plugin.  First of all, download the &lt;a href="http://mhl-malware-scripts.googlecode.com/files/malfind2.py"&gt;malfind.py&lt;/a&gt; plugin file and place it in the &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; directory.  Now you must install the &lt;a href="http://dkbza.org/pydasm.html"&gt;pydasm&lt;/a&gt; and &lt;a href="http://code.google.com/p/pefile/"&gt;pefile&lt;/a&gt; libraries.&lt;br /&gt;&lt;br /&gt;In order to install the pydasm library, you will have to do some initial setup including by installing a gcc compiler and make.  For this tutorial, we will use &lt;a href="http://sourceforge.net/projects/mingw/files/Automated%20MinGW%20Installer/MinGW%205.1.4/"&gt;MinGW&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoIQS6B_IQI/AAAAAAAAAlE/qfZd9GHZQlo/s1600-h/1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 233px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoIQS6B_IQI/AAAAAAAAAlE/qfZd9GHZQlo/s400/1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368871622780330242" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 2: Sourceforge download site for MinGW&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Download the windows installer for MinGW from the sourceforge website (Figure 2).  Double click to install (Figure 3-9).&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoIRkoPNddI/AAAAAAAAAlM/dUslaff28Fo/s1600-h/2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoIRkoPNddI/AAAAAAAAAlM/dUslaff28Fo/s400/2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873026753230290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 3: Choose "Download and Install"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoIRsOKCrgI/AAAAAAAAAlU/vBhSYRwSBqM/s1600-h/3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 314px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoIRsOKCrgI/AAAAAAAAAlU/vBhSYRwSBqM/s400/3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873157191183874" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 4: Click "Agree"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoIRx5C1HuI/AAAAAAAAAlc/YBHaqn63Wzo/s1600-h/4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 311px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoIRx5C1HuI/AAAAAAAAAlc/YBHaqn63Wzo/s400/4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873254603005666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 5: Choose "Current"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoIR3YnrdMI/AAAAAAAAAlk/N5n7MXMnj2s/s1600-h/5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 315px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoIR3YnrdMI/AAAAAAAAAlk/N5n7MXMnj2s/s400/5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873348978406594" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 6: Choose compilers and MinGW make&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You do not necessarily have to install all compilers however, for simplicity, do a full install.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoIR8svhehI/AAAAAAAAAls/boQBNZD_b-I/s1600-h/6.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 311px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoIR8svhehI/AAAAAAAAAls/boQBNZD_b-I/s400/6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873440279362066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 7: Choose location for installation.  The default is fine.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISGWtVMNI/AAAAAAAAAl0/St3-Nk7WnfA/s1600-h/7.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISGWtVMNI/AAAAAAAAAl0/St3-Nk7WnfA/s400/7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873606163280082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 8: Installing&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoISMvY1JwI/AAAAAAAAAl8/9mz7WZim2RE/s1600-h/8.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 310px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoISMvY1JwI/AAAAAAAAAl8/9mz7WZim2RE/s400/8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873715867395842" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 9: installation complete&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Once the installation is complete and you have clicked finish, you will have to make a few adjustments to the installation in order to get things working properly.  First of all, we need to have an executable called "make.exe".  The &lt;tt&gt;&lt;b&gt;make&lt;/b&gt;&lt;/tt&gt; executable for MinGW is appropriately named &lt;tt&gt;&lt;b&gt;mingwmake.exe&lt;/b&gt;&lt;/tt&gt;.  Simply copy this executable and paste it into the same directory (C:\MinGW\bin) which should result in an identical copy named "Copy of mingwmake.exe".  Rename this executable to "make.exe" as shown in Figures 10-11.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISX06_5vI/AAAAAAAAAmE/irL4ljnu-FI/s1600-h/16.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISX06_5vI/AAAAAAAAAmE/irL4ljnu-FI/s400/16.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368873906331444978" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 10: "Copy of mingwmake.exe"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SoISektLTeI/AAAAAAAAAmM/KnV037GezcQ/s1600-h/17.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 298px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SoISektLTeI/AAAAAAAAAmM/KnV037GezcQ/s400/17.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368874022237588962" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 11: Rename to "make.exe"&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now we have to modify our path to include the executables for MinGW. If you have a regular start menu, click on start and then right click on “My Computer” and choose properties. If you have the classic start menu, just right click on “My Computer” and choose properties. Click on the “Advanced” tab and then click on “Environmental Variables”.  Click on the Path system variable towards the bottom of the window and click the “Edit” button. We will append the path of our Python installation to the end of the existing Path variable. Where it says “Variable Value” go to&lt;br /&gt;the end of the line and add the following (if you installed MinGW in a different location, modify appropriately):&lt;br /&gt;&lt;br /&gt;&lt;b&gt;;C:\MinGW\bin&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISjh2UooI/AAAAAAAAAmU/34nBCQNIAA8/s1600-h/18.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 343px; height: 400px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoISjh2UooI/AAAAAAAAAmU/34nBCQNIAA8/s400/18.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5368874107369988738" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 12: Adding C:\MinGW\bin to the path variable&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now for installing pydasm.  Download the &lt;a href="http://www.klake.org/~jt/misc/libdasm-1.5.tar.gz"&gt;source code for libdasm&lt;/a&gt;.  The easiest way to extract the contents from this tar ball is using &lt;a href="http://www.7-zip.org/"&gt;7zip&lt;/a&gt;.  Once you have 7zip installed, you can associate all zip files by starting the 7zip Filemanager (Start-&gt;Programs-&gt;7-zip-&gt;7-zip File Manager) and clicking on "Tools-&gt;Options" and clicking "Select all" in the system tab and "OK" (Figure 13). &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoMGMtPJQTI/AAAAAAAAAm0/vKzF5LWWzWE/s1600-h/7zip0.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 346px; height: 400px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoMGMtPJQTI/AAAAAAAAAm0/vKzF5LWWzWE/s400/7zip0.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369141996127076658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 13: Associating zip file types&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;At this point you are ready to extract the libdasm/pydasm source code.  Double click the downloaded pydasm tar ball.  You should see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoV2LDZ7tCI/AAAAAAAAAno/SEzleG7PPZo/s1600-h/7zip.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 116px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SoV2LDZ7tCI/AAAAAAAAAno/SEzleG7PPZo/s400/7zip.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369828062973899810" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 14: Opening libdasm tar ball with 7-zip&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Double click on the libdasm*.tar file inside from within the 7-zip application until you see a folder icon with the name libdasm-1.5 (or other version number):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoV2jzPS3PI/AAAAAAAAAnw/EnG6hTeVLRw/s1600-h/7zip1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 137px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoV2jzPS3PI/AAAAAAAAAnw/EnG6hTeVLRw/s400/7zip1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369828488131042546" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 15: libdasm folder&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Highlight the folder and then click on the extract button and say OK.  The folder will extract with all source code inside to the path you choose, or by default the current directory:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoV2wE3QiaI/AAAAAAAAAn4/isgRKjYuz-I/s1600-h/7zip2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SoV2wE3QiaI/AAAAAAAAAn4/isgRKjYuz-I/s400/7zip2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369828699020495266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 16: Extracting the libdasm source code&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now open a command prompt and change directories until you are in the newly extracted &lt;tt&gt;&lt;b&gt;libdasm&lt;/b&gt;&lt;/tt&gt; folder.  Type the following commands:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;make&lt;br /&gt;cd pydasm&lt;br /&gt;python setup.py build -c mingw32&lt;br /&gt;python setup.py install&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;That's it!  You've installed pydasm.&lt;br /&gt;&lt;br /&gt;Now you are ready to install the &lt;a href="http://code.google.com/p/pefile/"&gt;pefile&lt;/a&gt; library.  Grab the zip file or tar ball of the source code and extract is as you did before.  Go into that resulting folder and type the following:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;python setup.py build&lt;br /&gt;python setup.py install&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now you've installed pefile.  Now you should see the malfind plugin listed under supported plugins for Volatility.  All the other plugins that were depend on pefile should work as well if they are installed in the &lt;tt&gt;&lt;b&gt;memory_plugins&lt;/b&gt;&lt;/tt&gt; directory.&lt;br /&gt;&lt;br /&gt;Installing the &lt;a href="http://moyix.blogspot.com/2009/06/volreg-06-now-with-bigdata.html"&gt;volreg&lt;/a&gt; plugin requires &lt;a href="http://www.dlitz.net/software/pycrypto/"&gt;pycrypto&lt;/a&gt;.  Simply go the &lt;a href="http://gitweb.pycrypto.org/?p=crypto/pycrypto-2.x.git"&gt;gitweb interface&lt;/a&gt; for this project and download the latest git snapshot by clicking on "snapshot".  This will download a tar ball file of the source code.  Simply extract it as you did before, then open the command prompt and change into that directory.  Then type the following:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;python setup.py build&lt;br /&gt;python setup.py install&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You've now installed the pycrypto library.  Download the &lt;a href="http://www.cc.gatech.edu/%7Ebrendan/volatility/dl/volreg-0.6.tar.gz"&gt;volreg tarfile&lt;/a&gt; and extract the contents into your Volatility folder by double clicking as before, selecting all three folders and changing the extraction path to your Volatility folder.  All files should be placed into the correct location:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoMr5NsPmVI/AAAAAAAAAm8/Gixo-0GGM_s/s1600-h/19.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 173px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SoMr5NsPmVI/AAAAAAAAAm8/Gixo-0GGM_s/s400/19.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5369183442683533650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;Figure 17: Extraction of volreg into Volatility directory.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Next time we will cover the &lt;a href="http://moyix.blogspot.com/2009/03/regripper-and-volatility-prototype.html"&gt;volrip plugin&lt;/a&gt; after I figure out how to get Inline::Python working under windows...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1194575877271295446?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1194575877271295446/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1194575877271295446' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1194575877271295446'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1194575877271295446'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/08/installing-volatility-modules.html' title='Installing Volatility Plugins'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_55uSCYxbQ8M/SoDXyT9yMtI/AAAAAAAAAk8/HgfanhEenhQ/s72-c/1.png' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6645794062591050884</id><published>2009-08-03T19:44:00.016-04:00</published><updated>2009-08-03T20:25:35.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Volatility SVN</title><content type='html'>Since the &lt;a href="http://gleeda.blogspot.com/2009/07/volatility-news.html"&gt;last post on Volatility&lt;/a&gt; some of you may be wondering how you may download the newest source of &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt; from the &lt;a href="http://code.google.com/p/volatility/source/checkout"&gt;Google SVN repository&lt;/a&gt;.  Well for Linux it's very easy.  After you install subversion using yum or apt-get, you simply follow the &lt;a href="http://code.google.com/p/volatility/source/checkout"&gt;instructions on the website&lt;/a&gt;:&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ svn checkout http://volatility.googlecode.com/svn/trunk/ [folder name]&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;where [folder name] is replaced by the name of the folder you want to contain the downloaded code.&lt;br /&gt;&lt;br /&gt;For Windows users, it's only slightly more complicated.  First you must install a subversion client.  For this post we will use &lt;a href="http://tortoisesvn.tigris.org/"&gt;Tortoise SVN&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd5CmgZqlI/AAAAAAAAAjc/Km08jUpgjl8/s1600-h/1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd5CmgZqlI/AAAAAAAAAjc/Km08jUpgjl8/s400/1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365890566638381650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 1: Tortoise SVN website&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Go to the downloads section and choose the appropriate installer.  For this post we are choosing the 32 bit version.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd5mIeLX7I/AAAAAAAAAjk/VTQOBmH6K9U/s1600-h/2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 176px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd5mIeLX7I/AAAAAAAAAjk/VTQOBmH6K9U/s400/2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365891177051283378" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 2: Tortoise SVN website - downloads section&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Once you have downloaded the installer, run it.  You may see the following security warning, just click Run.  All defaults should be fine, so keep clicking next until the installation finishes.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd596WXU6I/AAAAAAAAAjs/QOg1dzSweaI/s1600-h/3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 303px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd596WXU6I/AAAAAAAAAjs/QOg1dzSweaI/s400/3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365891585577276322" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;Figure 3 and 4: Running the Tortoise SVN installer&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd6S4JzsfI/AAAAAAAAAj0/ZpGTO-1q_Bs/s1600-h/4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 311px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd6S4JzsfI/AAAAAAAAAj0/ZpGTO-1q_Bs/s400/4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365891945764991474" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After the installation is complete, you will have to restart your computer.  After restart you should see the following menu added when you right click:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/Snd6ucNfusI/AAAAAAAAAj8/GOLTMdsXZww/s1600-h/5.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 299px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/Snd6ucNfusI/AAAAAAAAAj8/GOLTMdsXZww/s400/5.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365892419300604610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 5: Tortoise SVN right click menu options&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Create a folder for the repository (for this run through we will create a folder called Volatility on the root of the drive (C:\).  Right click and choose "SVN Checkout" noted in the picture above.  After choosing this menu, you should see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd7dj8cp6I/AAAAAAAAAkE/qtHwRvaABRQ/s1600-h/6.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 296px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd7dj8cp6I/AAAAAAAAAkE/qtHwRvaABRQ/s400/6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365893228830435234" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 6: Filling in options to download Volatility&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Paste the url of the repository: &lt;a href="http://volatility.googlecode.com/svn/trunk/"&gt;http://volatility.googlecode.com/svn/trunk/&lt;/a&gt; in the first text box and the location of the newly created folder in the second text box (as shown above).  Leave the other options the same as shown above.  Press OK.  You should see the following as it begins downloading and then finishes:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd8Qd8k46I/AAAAAAAAAkM/E_j3WC5viCM/s1600-h/7.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 235px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd8Qd8k46I/AAAAAAAAAkM/E_j3WC5viCM/s400/7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365894103393690530" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 7 and 8: Downloading Volatility from SVN&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd8cw_Ed5I/AAAAAAAAAkU/IQTNk1qySD0/s1600-h/8.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 234px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd8cw_Ed5I/AAAAAAAAAkU/IQTNk1qySD0/s400/8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365894314662852498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The newly created folder should now contain the SVN repository.  This includes another folder named "Volatility" that contains the actual source code.  If you go inside the inner Volatility folder you should see the python source code files as shown in Figure 10.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd80KwZBYI/AAAAAAAAAkc/o62bNoH7EoU/s1600-h/9.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 175px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd80KwZBYI/AAAAAAAAAkc/o62bNoH7EoU/s400/9.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365894716717598082" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;br /&gt;Figure 9 and 10: Newly created folder containing Volatility SVN repository.&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd84Oj2ZEI/AAAAAAAAAkk/QvIKV_QvqJs/s1600-h/10.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 301px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/Snd84Oj2ZEI/AAAAAAAAAkk/QvIKV_QvqJs/s400/10.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365894786458215490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To test the newly downloaded code, open a command shell, go inside the Volatility folder (which is inside your newly created folder) and type "python volatility" without the quotes.  (This is assuming you have already installed Python, which is covered in the &lt;a href="http://volatility.googlecode.com/files/install.pdf"&gt;installation manual&lt;/a&gt;.) See below:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd87pKPUgI/AAAAAAAAAks/K8-icrqvU0o/s1600-h/11.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 378px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/Snd87pKPUgI/AAAAAAAAAks/K8-icrqvU0o/s400/11.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5365894845138162178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;Figure 11: Running Volatility&lt;span style="font-weight:bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now you're set.  You have the latest source code for Volatility.  Next will be how to install plugins...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6645794062591050884?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6645794062591050884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6645794062591050884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6645794062591050884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6645794062591050884'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/08/volatility-svn.html' title='Volatility SVN'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_55uSCYxbQ8M/Snd5CmgZqlI/AAAAAAAAAjc/Km08jUpgjl8/s72-c/1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-239560748280694903</id><published>2009-08-03T10:16:00.005-04:00</published><updated>2009-08-24T22:10:02.302-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Briefly: recordmydesktop</title><content type='html'>Occasionally I have needed to make screencasts for my students so that they would have something to look at in their own time.  There are two tools that make this easy on Linux (both should available in the yum or apt repositories):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://recordmydesktop.sourceforge.net/about.php"&gt;recordmydesktop&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://ffmpeg.org/"&gt;ffmpeg.org&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Recordmydesktop does as it sounds: it records the desktop.  It has options to set the size of the area to record as well as the window you would like to record.  I like to choose the window option myself.  I also like to record without sound, but you can figure out how to modify the script to remove that option if you so choose.&lt;br /&gt;&lt;br /&gt;FFmpeg is a nice tool that allows you to convert, record and stream audio and video.  I use it to convert the resulting video from recormydesktop to flv format in order to upload to photobucket or elsewhere.&lt;br /&gt;&lt;br /&gt;To make my life easier, I have created the following script that takes in 1-2 arguments.  The first argument should be the desired name of the resulting video file.  The second argument is an (optional) amount of time to wait before recording.  The default wait time is 3 seconds.  &lt;br /&gt;&lt;br /&gt;When you run the script it waits for you to click on the window that you wish to record by using &lt;tt&gt;xwininfo&lt;/tt&gt; to get the window id number.  You will notice that the mouse changes to a + sign as it is waiting for you to click.  Once you click the window, it will begin recording that window area after the appropriate wait time has transpired. The video is converted to [chosen filename].flv after you have stopped recording (CTRL+C in terminal from which you started the script). &lt;br /&gt;&lt;br /&gt;Feel free to do with as you please.  The script can be found below:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;#&lt;br /&gt;# Warning: this does not have robust error checking!  &lt;br /&gt;&lt;br /&gt;bad=67&lt;br /&gt;if [ $# -lt 1 ]&lt;br /&gt;then&lt;br /&gt;  echo "Usage: $0 [filename] [[optional time]]"&lt;br /&gt;  exit $bad&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;if [ $# -eq 1 ]         #check for arguments&lt;br /&gt;then&lt;br /&gt;  time=3                        #if one (only filename) exists, sleep for 3 seconds&lt;br /&gt;  filename=$1                #set filename&lt;br /&gt;else&lt;br /&gt;  time=$2                       #else, we'll sleep for $2 seconds&lt;br /&gt;  filename=$1                #set filename&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;recordmydesktop -windowid `xwininfo |grep "Window id:"|sed -e "s/xwininfo\:\ Window id:\ //;s/\ .*//"` -o $filename.ogv -delay $time --no-sound&lt;br /&gt;&lt;br /&gt;ffmpeg -i $filename.ogv -b 384000 -s 640x480 -pass 1 -passlogfile log-file $filename.flv&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-239560748280694903?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/239560748280694903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=239560748280694903' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/239560748280694903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/239560748280694903'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/08/briefly-recordmydesktop.html' title='Briefly: recordmydesktop'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4421707154889524949</id><published>2009-07-30T22:52:00.002-04:00</published><updated>2009-07-30T22:57:03.367-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Cygwin Installation</title><content type='html'>&lt;i&gt;Note: I am reusing a &lt;a href="http://jjayforensics.blogspot.com/2008/09/cygwin-installation.html"&gt;post from my forensics class&lt;/a&gt; at &lt;a href="http://www.jjay.cuny.edu"&gt;John Jay College&lt;/a&gt;.  This will be used as a reference for an upcoming post on Volatility module installation.  So be patient, there is more to come...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;This post goes over an installation of &lt;a href="http://www.cygwin.com/" target="_blank"&gt;Cygwin&lt;/a&gt; which is a Linux-like environment for windows.  Since most of you have Windows machines, this will allow you run tools that normally run under Linux/Unix environments.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cygwin.com/setup.exe" target="_blank"&gt;The setup file is here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;When you download setup, double click it.  You should see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SMqn67ssNTI/AAAAAAAAASs/2Pv38o4wL6c/s1600-h/1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SMqn67ssNTI/AAAAAAAAASs/2Pv38o4wL6c/s400/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5245189346925753650" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Press ``Next'' and choose ``Install from the Internet'' :&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/jamie.levy/SMqoLRm9RMI/AAAAAAAAAS0/HjYebdTBnqw/2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://lh5.ggpht.com/jamie.levy/SMqoLRm9RMI/AAAAAAAAAS0/HjYebdTBnqw/2.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Choose where to install Cygwin (by default it is in C:\Cygwin):&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/xZkbelVMiODv-9nsnWga2A?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SMqoLtDZLMI/AAAAAAAAAS8/bCdMLaYzhrM/s400/3.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Cygwin will create a directory in which it will store the its files during installation.  After installation you can delete the folder.  The default location is the desktop:&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/TZl8yOhlUyeJ9gTWyn1jxg?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh5.ggpht.com/jamie.levy/SMqoLrscfgI/AAAAAAAAATE/cdxrCJwshIU/s400/4.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Select your internet connection.  The default is OK:&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/vnYOJuH_K-ppvFugcg9j9w?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SMqoLnO5azI/AAAAAAAAATM/GSrUTltQeBU/s400/5.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Select a mirror (mirrorservice.org is good):&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/L6qDXzK3BWJrJpETbdA5wg?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh3.ggpht.com/jamie.levy/SMqoLnhmeeI/AAAAAAAAATU/oxT3ReiGSdk/s400/6.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Press ``Next''  You should see the following:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/uv5dlzLwo7WEaGjeDIWP1A?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh5.ggpht.com/jamie.levy/SMraWikQ7zI/AAAAAAAAAUY/lTEHmfF4XIo/s400/7.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Next you will see a list of packages you can download.  By default these are organized by category:&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/BA2X4nR6_TdwZzZR6znP9Q?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh4.ggpht.com/jamie.levy/SMqoRj9PStI/AAAAAAAAATk/W1mSgpasnZs/s400/8.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;If you press the plus signs on the left hand side, it will open up the category and you can select specific packages:&lt;br /&gt;&lt;br /&gt;&lt;table style="width:auto;"&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ogAFqv8QYjDNfhNcj0wuJQ?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SMqoR1VkIgI/AAAAAAAAATs/01qtl-gZFtQ/s400/9.jpg" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="font-family:arial,sans-serif; font-size:11px; text-align:right"&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Here is a list of packages you need organized by category:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;From the &lt;i&gt;Base&lt;/i&gt; category&lt;li&gt;&lt;i&gt;Everything&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;From the &lt;i&gt;Devel&lt;/i&gt; category&lt;li&gt;Gcc: C, C++, Fortran compilers&lt;/li&gt;&lt;li&gt;gcc-mingw: Mingw32 support headers and libraries for GCC&lt;/li&gt;&lt;li&gt;gcc2: Version X.XX.X &lt;i&gt;[whatever is latest]&lt;/i&gt; of C, C++, Fortran compilers&lt;/li&gt;&lt;li&gt;gdb: The GNU Debugger&lt;/li&gt;&lt;li&gt;make: The GNU version of the `make' utility&lt;/li&gt;&lt;li&gt;mingw-runtime: MinGW Runtime&lt;/li&gt;&lt;li&gt;openssl-devel: The OpenSSL development environment&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;From the &lt;i&gt;Editors&lt;/i&gt; category&lt;li&gt;Nano: A pico clone text editor with extensions &lt;i&gt;[works like pico]&lt;/i&gt;&lt;/li&gt;&lt;li&gt;vim: Vi Improved – enhanced vi editor&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;From the &lt;i&gt;Interpreters&lt;/i&gt; category&lt;li&gt;Perl&lt;/li&gt;&lt;li&gt;Python&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;From the &lt;i&gt;Utils&lt;/i&gt; category&lt;li&gt;until-linux: Random collection of Linux utilities&lt;/li&gt;&lt;li&gt;file&lt;/li&gt;&lt;li&gt;ELFIO&lt;/li&gt;&lt;/ol&gt;&lt;ol&gt;From the &lt;i&gt;Text&lt;/i&gt; category&lt;li&gt;less: A file pager program, similar to more(1)&lt;/li&gt;&lt;br /&gt; &lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;After you have made your selections, press next for installation to begin. This part is the actual installation, and may take some time. Just let it finish. After it finishes you will be asked if you want to create shortcuts on the desktop. Make sure to click Finish.&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Running Cygwin&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;When you run Cygwin for the first time, it might take a little longer to start up.  This is because it is configuring &lt;br /&gt; a few more files for your environment.  Then you should get a command line prompt that looks like:&lt;br /&gt; &lt;br /&gt;You are now able to work on your programs at home on your windows machines.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/hXjK-Rrshb2l3hYdnB--pw?authkey=Ymuk64URZ6s"&gt;&lt;img src="http://lh4.ggpht.com/jamie.levy/SMquBCFx8xI/AAAAAAAAAT0/YEsPfGME2_o/s400/10.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4421707154889524949?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4421707154889524949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4421707154889524949' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4421707154889524949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4421707154889524949'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/07/cygwin-installation.html' title='Cygwin Installation'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_55uSCYxbQ8M/SMqn67ssNTI/AAAAAAAAASs/2Pv38o4wL6c/s72-c/1.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7750401058580219656</id><published>2009-07-22T21:32:00.007-04:00</published><updated>2009-07-23T09:44:55.014-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Volatility News</title><content type='html'>So if you follow &lt;a href="https://twitter.com/gleeda"&gt;me&lt;/a&gt; or &lt;a href="https://twitter.com/moyix"&gt;Moyix&lt;/a&gt; on twitter, you will have seen some updates about some &lt;a href="http://mnin.blogspot.com/2009/07/new-and-updated-volatility-plug-ins.html"&gt;cool new plugins&lt;/a&gt; by MHL for &lt;a href="https://www.volatilesystems.com/default/volatility/"&gt;Volatility&lt;/a&gt;.  Shouts to MHL for his awesome work!&lt;br /&gt;&lt;br /&gt;Other volatility plugins are listed on the &lt;a href="http://www.forensicswiki.org/wiki/List_of_Volatility_Plugins"&gt;Forensics Wiki&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Moyix has also &lt;a href="http://moyix.blogspot.com/2009/07/sans-forensic-summit-thoughts-and.html"&gt;released his slides&lt;/a&gt; from his recent talk on combining memory and registry analysis.  Awesome stuff!&lt;br /&gt;&lt;br /&gt;Volatility was also recently mentioned in &lt;a href="http://www.hak5.org/episodes/episode-522"&gt;Episode 522 of Hak5: Whats in your RAM?&lt;/a&gt; along with some other very cool tools like &lt;a href="https://twitter.com/msuiche"&gt;Matthieu Suiche's&lt;/a&gt; &lt;a href="http://win32dd.msuiche.net/"&gt;win32dd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Volatility has been under heavy development lately and has issued &lt;a href="http://volatility.tumblr.com/post/136203221/volatility-call-for-bugs"&gt;a call for bugs&lt;/a&gt;.  So if you are currently a user and have encountered something odd, please report it so that it may be fixed.  You can do so by sending an email to &lt;a href="http://lists.volatilesystems.com/mailman/listinfo/vol-dev"&gt;the developer's listserv&lt;/a&gt;.  In order to get the newest code updates, you can download Volatility from the &lt;a href="http://code.google.com/p/volatility/source/checkout"&gt;svn repository&lt;/a&gt; simply following the instructions on the site.  For installation instructions you can check out the &lt;a href="http://code.google.com/p/volatility/downloads/list"&gt;install manual&lt;/a&gt; written by yours truly ;-)&lt;br /&gt;&lt;br /&gt;Want to learn about memory forensics and the internals of Volatility?  &lt;a href="http://twitter.com/forensikblog"&gt;Andreas Schuster&lt;/a&gt; has &lt;a href="http://volatility.tumblr.com/post/133902849/windows-memory-forensics-with-volatility"&gt;posted slides teaching just that&lt;/a&gt;!&lt;br /&gt;&lt;br /&gt;BTW, Volatile Systems is also &lt;a href="http://volatility.tumblr.com/post/129741963/got-memory-forensics-and-malware-analysis-skillz"&gt;currently hiring&lt;/a&gt;.  So if memory forensics and reverse engineering are within your interests you can apply for a job that includes both!&lt;br /&gt;&lt;br /&gt;It's an exciting time and I'm sure there will be much more to come.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7750401058580219656?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7750401058580219656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7750401058580219656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7750401058580219656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7750401058580219656'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/07/volatility-news.html' title='Volatility News'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-499864924573839883</id><published>2009-06-05T12:49:00.003-04:00</published><updated>2009-06-05T12:58:50.341-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='conferences'/><title type='text'>NeFX 2009</title><content type='html'>Coming to NYC this summer:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style:italic;"&gt;&lt;span style="font-weight:bold;"&gt;&lt;a href="http://www.nefx.org/"&gt;NeFX 2009&lt;/a&gt;&lt;br /&gt;The First Annual ACM Northeast Digital Forensics Exchange&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;July 20-21, 2009 @ John Jay College of Criminal Justice/CUNY (NYC)&lt;br /&gt;&lt;br /&gt;The ACM Northeast Digital Forensics Exchange (NeFX) is a workshop, sponsored in part by the National Science Foundation, to foster collaboration on digital forensics and information assurance between federal and state law enforcement, academia, and industry. Our goal is to bring together leading practitioners and academics in order to yield partnerships that advance research on digital forensic science through mutual sharing of the problems of practice and research. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This should be interesting.  They have some good speakers lined up and some interesting topics for tutorials.  Check &lt;a href="http://www.nefx.org/"&gt;the website&lt;/a&gt; for more details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-499864924573839883?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/499864924573839883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=499864924573839883' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/499864924573839883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/499864924573839883'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/06/nefx-2009.html' title='NeFX 2009'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5698855052322981976</id><published>2009-05-31T16:05:00.008-04:00</published><updated>2010-07-15T14:53:57.523-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CEIC'/><title type='text'>CEIC materials</title><content type='html'>I would have had this up sooner, but I was out of town last week and the week before was the conference...  Anyway, I promised I would post the slides and supporting files for my CEIC classes.  I don't have the slides for the foreign language talk, but I didn't promise to give those out ;-)&lt;br /&gt;&lt;br /&gt;How to Address ESI Involving Encryption from Disk Level to Individual Files with David Lyman [&lt;a href="http://venus.cs.qc.edu/~jlevy/ceic/EDS.ppt"&gt;ppt&lt;/a&gt; | &lt;a href="http://venus.cs.qc.edu/~jlevy/ceic/EDS.pdf"&gt;pdf&lt;/a&gt;] &lt;br /&gt;&lt;br /&gt;Spoofing/hacking/memory analysis talk [&lt;a href="http://venus.cs.qc.edu/~jlevy/ceic/CEIC-linux.pdf"&gt;pdf&lt;/a&gt;]&lt;br /&gt;&lt;br /&gt;Here is the ARP spoofing perl script we used and some of you requested: [&lt;a href="http://venus.cs.qc.edu/~jlevy/code/arpspoof.pl"&gt;arpspoof.pl&lt;/a&gt;].  You must install &lt;a href="http://nemesis.sourceforge.net/"&gt;Nemesis&lt;/a&gt; for the script to work, or you can modify it to use another packet crafting program.  Also, depending on the distro you might have to modify the path for the &lt;tt&gt;arp&lt;/tt&gt; command (for Fedora it is /sbin/arp).  Anyway, you should be able to modify it on your own.&lt;br /&gt;&lt;br /&gt;Also, we used &lt;a href="http://www.wireshark.org/"&gt;Wireshark&lt;/a&gt; and &lt;a href="http://www.remote-exploit.org/backtrack_download.html"&gt;Backtrack 4&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For those of you who would like more VM machines to hack into you can go to &lt;a href="http://www.de-ice.net/"&gt;de-ice.net&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The agenda had changed somewhat for the second talk, since I had taken the class over from someone else at the last second.  I would like to thank &lt;a href="http://www.systemic-inquiry.com/index.html"&gt;Prof Bilal Khan&lt;/a&gt; for all of his help and his donation of the vulnerable VM :-)  Parts of this lab are representative of some of the courses in the &lt;a href="http://www.jjay.cuny.edu/690.php"&gt;Forensic Computing graduate program&lt;/a&gt; at &lt;a href="http://www.jjay.cuny.edu/"&gt;John Jay College&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I would also like to thank &lt;a href="http://volatility.tumblr.com/"&gt;AAron&lt;/a&gt; and &lt;a href="http://moyix.blogspot.com/"&gt;Moyix&lt;/a&gt; from the &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt; community for their insight as well.&lt;br /&gt;&lt;br /&gt;CEIC was a lot of fun, I met a lot of interesting people and had a blast ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5698855052322981976?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5698855052322981976/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5698855052322981976' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5698855052322981976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5698855052322981976'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/05/ceic-materials.html' title='CEIC materials'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-315812922110061995</id><published>2009-05-11T21:32:00.010-04:00</published><updated>2009-05-12T10:02:14.709-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='links'/><title type='text'>Some Links and Information</title><content type='html'>Well, it's been a little while since I was last writing on here.  Things have been busy, but it will pick up on here soon ;-)&lt;br /&gt;&lt;br /&gt;In the mean time, I'll post some interesting things I've come across.  I am personally always looking for more information on various computer forensics/security topics.  After a recent conversation with some friends of mine from the John Jay College forensics program about how one can keep up with changes in these fields, I thought I might share a few resources that I use.  Hopefully some of these links will be interesting to some of you.  Instead of focusing on a particular tool, I'm going to focus on the human factor: where do you find people who are interested/experts in these fields?  Where can you hear them talk?  Where can you interact with them?  Where can you get further information about a particular subject?&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Podcasts / Webcasts&lt;/h3&gt;&lt;br /&gt;There are some interesting podcasts out there.  Most people already know about them, but what the heck, I'm going to list some anyway in alphabetical order:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.cyberspeak.libsyn.com/"&gt;Cyberspeak podcast&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://exoticliability.ning.com/"&gt;Exotic Liability&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://4cast.whitfields.org/"&gt;Forensic 4cast&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://pauldotcom.com/"&gt;Pauldotcom&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://www.sans.org/webcasts/index.php"&gt;Sans Webcasts&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.blogtalkradio.com/TalkForensics"&gt;Talk Forensics&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;br /&gt;SANS' last webcast was a very good overview of what can be accomplished with memory forensics.  Also Talk Forensics and PaulDotCom recently had two great podcasts with &lt;a href="http://windowsir.blogspot.com/"&gt;Harlan Carvey&lt;/a&gt; - the man of Windows Forensics.  Exotic Liability is a fairly new security podcast that is as extremely interesting and entertaining.  The nice thing about most of these podcasts is that you can ask questions in real time by online chat or by calling in to the show.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Forums / Listserves&lt;/h3&gt;&lt;br /&gt;Well, there are a ton of different forums/listserves for various things.  Here is a short list:&lt;br /&gt;&lt;ul&gt;Forums&lt;li&gt;&lt;a href="https://forum.defcon.org/index.php"&gt;Defcon forums&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.forensicfocus.com/computer-forensics-forums"&gt;Forensic Focus Forums&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://support.guidancesoftware.com/"&gt;Guidance Software forum&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://regripper.invisionplus.net/"&gt;RegRipper forum&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://rootkit.com/boardm.php"&gt;Rootkit.com&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;Listserves&lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/linux_forensics/"&gt;Linux Forensics Listserv&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://mail.metasploit.com/mailman/listinfo/framework"&gt;Metasploit Listserv&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://lists.volatilesystems.com/mailman/listinfo"&gt;Volatility Users and Developers Listserves&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://tech.groups.yahoo.com/group/win4n6/"&gt;Windows Forensics Listserv&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Blogs&lt;/h3&gt;&lt;br /&gt;There are just too, too many to list.  So, I'll tell you what I'll do... I'll give you my (edited) &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/google-reader-subscriptions.xml"&gt;Google Feeds xml file&lt;/a&gt; if you are interested in finding more blogs.  If you use Google Reader you can just import the file.  I've tried to split things up into 3 categories: Forensics, Technical Law and Security.  Some things overlap.  Don't be offended if you own one of these blogs and aren't "listed correctly."  One thing I like about using Google Reader is the ability to search over the blog posts.  There are lots of times I remember reading something, but can't quite remember where I found it...  this helps.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Twitter&lt;/h3&gt;&lt;br /&gt;Lots of computer forensics and security professionals can be found on &lt;a href="http://twitter.com/"&gt;Twitter&lt;/a&gt;.  I've enjoyed my time on twitter talking with everyone there.  Since I'm afraid to leave anyone out, I'll abstain from listing anyone at this point, but most of the people discussed above are on twitter and if you just search for security or forensics you'll end up finding a few more.  Also a lot of people who maintain blogs also post links to their twitter profiles.  Now of course, there is always the chance that someone could be "&lt;a href="http://blog.didierstevens.com/2009/05/10/quickpost-disinformational-tweets/"&gt;disinformational&lt;/a&gt;" either on purpose or not (Didier Stevens is not by the way ;-)) but more than likely you will learn a lot from people and will keep up with current events.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;LinkedIn&lt;/h3&gt;&lt;br /&gt;In spite of some of the bad things that have happened on LinkedIn in the past, it is a very helpful tool for networking and gaining information.  In addition to establishing contacts with others who are in your field, you can also join groups for your interests.  There are several computer forensics and security groups on LinkedIn that are very "happening" as far as member participation.  Joining is easy.  Some groups may have criteria about who may join, but you can search for groups by subject and decide which ones fit your interests.&lt;br /&gt;&lt;br /&gt;Well, that's enough for now... I'm going back to hang out on #volatility on irc.freenode.net ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-315812922110061995?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/315812922110061995/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=315812922110061995' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/315812922110061995'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/315812922110061995'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/05/some-links-and-information.html' title='Some Links and Information'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4279345508085394362</id><published>2009-04-20T19:34:00.004-04:00</published><updated>2010-07-15T14:54:18.863-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='work'/><category scheme='http://www.blogger.com/atom/ns#' term='CEIC'/><title type='text'>Briefly: CEIC 2009</title><content type='html'>I will attend and present at the &lt;a href="http://www.ceicconference.com/"&gt;CEIC conference&lt;/a&gt; in Orlando, FL.  The &lt;a href="http://www.ceicconference.com/agenda.aspx"&gt;agenda is available online&lt;/a&gt; and it looks like there will be a lot of interesting talks/labs to see and participate in.  It should be fun.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4279345508085394362?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4279345508085394362/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4279345508085394362' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4279345508085394362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4279345508085394362'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/04/briefly-ceic-2009.html' title='Briefly: CEIC 2009'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7094635167460473807</id><published>2009-03-30T22:30:00.004-04:00</published><updated>2009-03-30T22:40:33.212-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='permeate'/><title type='text'>Briefly: IWCMC 2009</title><content type='html'>Jarek, &lt;a href="http://www.systemic-inquiry.com/" target="_blank"&gt;Prof Bilal Khan (BK)&lt;/a&gt; and my paper on &lt;a href="http://permeate.sourceforge.net/" target="_blank"&gt;Permeate&lt;/a&gt; was accepted at &lt;a href="http://iwcmc.com/index.htm" target="_blank"&gt;IWCMC 2009 Computer and Network Security Symposium&lt;/a&gt;.  The final paper will be available at the Permeate site after some final editing.&lt;br /&gt;&lt;br /&gt;Shouts to Jarek and BK!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7094635167460473807?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7094635167460473807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7094635167460473807' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7094635167460473807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7094635167460473807'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/03/briefly-iwcmc-2009.html' title='Briefly: IWCMC 2009'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2794040896824040134</id><published>2009-03-10T18:34:00.001-04:00</published><updated>2010-06-30T09:34:32.551-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Briefly: vol2html update</title><content type='html'>I have added a very small update to vol2html.  Other than fixing some typos and cleaning up the code a little bit, I have added more information about DLL files.&lt;br /&gt;&lt;br /&gt;Like the &lt;a href="http://gleeda.blogspot.com/2009/01/vol2htmlpl-update.html"&gt;last update&lt;/a&gt; you can now see information about what processes have the same dll open.&lt;br /&gt;&lt;br /&gt;There will be more... however, I think that it might be better to write a module for Volatility at this time...&lt;br /&gt;&lt;br /&gt;Here are &lt;a href="http://venus.cs.qc.edu/~jlevy/code/vol2html/vol2html-030809.pl"&gt;vol2html.pl&lt;/a&gt; and a &lt;a href="http://venus.cs.qc.edu/~jlevy/code/report3/index.html"&gt;new html report&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Let me know if you find any bugs :-)&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;The venus website is down so if you need to download vol2html you can get it from the new &lt;a href="http://code.google.com/p/vol2html/"&gt;Google code page&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2794040896824040134?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2794040896824040134/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2794040896824040134' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2794040896824040134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2794040896824040134'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/03/briefly-vol2html-update.html' title='Briefly: vol2html update'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2568074848834844518</id><published>2009-03-05T05:04:00.006-05:00</published><updated>2009-03-06T16:17:29.475-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='PyFlag'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><title type='text'>PyFlag installation on CentOS 5.2 (updated)</title><content type='html'>Earlier I &lt;a href="http://gleeda.blogspot.com/2008/06/pyflag-installation-on-fedora-8.html"&gt;wrote about&lt;/a&gt; installing &lt;a href="http://www.pyflag.net"&gt;Pyflag&lt;/a&gt; on &lt;a href="http://fedoraproject.org/"&gt;Fedora 8&lt;/a&gt;.  This time, I decided to go for the &lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt; install.&lt;br /&gt;&lt;br /&gt;First off, this tutorial is not for the faint of heart and as always I take no responsibility if things go wrong on your end.  &lt;br /&gt;&lt;br /&gt;I got tired of trying to get &lt;a href="http://darcs.net/"&gt;darcs&lt;/a&gt; installed on my CentOS box and instead downloaded &lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/Download"&gt;the PyFlag tarball&lt;/a&gt;.  The first thing you will have to do is update &lt;a href="http://www.python.org/"&gt;Python&lt;/a&gt; on your box - I installed 2.6.1 by source.&lt;br /&gt;&lt;br /&gt;You must also install &lt;a href="http://gleeda.blogspot.com/2008/06/pyflag-installation-on-fedora-8.html"&gt;all packages mentioned earlier&lt;/a&gt; including &lt;a href="http://sourceforge.net/projects/mysql-python"&gt;MySQL for Python&lt;/a&gt; and &lt;a href="http://www.sleuthkit.org/sleuthkit/download.php"&gt;Sleuthkit&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# yum install python-dateutil clamav clamav-server \&lt;br /&gt;mysql mysql-devel mysql-server file-devel python-expect \&lt;br /&gt;zlib zlib-devel openssl python-imaging&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You may have a problem when you install MySQL for Python, however, when it tries to download the setuptools-*.egg file.  If you have Python version 2.6 installed you need the following egg file:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;a href="http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c9-py2.6.egg"&gt;setuptools-0.6c9-py2.6.egg&lt;/a&gt;&lt;/u&gt;.  &lt;br /&gt;&lt;br /&gt;You can download this into your MySQL-python-1.2.2 directory and change the name to setuptools-0.6c5-py2.6.egg or you can muck around with the ez_setup.py file.  However you want to do it.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# python2.6 setup.py build&lt;br /&gt;# python2.6 setup.py install &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;Now, if you have Python 2.6 installed in addition to your default Python installation, you'll have to copy over some libraries to the new location e.g.&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# cp -R /usr/lib/python2.4/site-packages/pexpect.py* \&lt;br /&gt;/usr/local/lib/python2.6/site-packages/&lt;br /&gt;&lt;br /&gt;# cp -R /usr/lib/python2.4/site-packages/PIL \&lt;br /&gt;/usr/local/lib/python2.6/site-packages/&lt;br /&gt;&lt;br /&gt;# cp -R /usr/lib/python2.4/site-packages/python-dateutil \&lt;br /&gt;/usr/local/lib/python2.6/site-packages/&lt;br /&gt;&lt;br /&gt;# cp /usr/lib/python2.4/pyexpect.py* \&lt;br /&gt;/usr/local/lib/python2.6/&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;At this point you should be set to begin PyFlag installation.&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# ./configure&lt;br /&gt;# make install&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;At that point you are set to run PyFlag.  Don't forget to set up MySQL:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# /sbin/chkconfig mysqld on&lt;br /&gt;# /sbin/service mysqld start&lt;br /&gt;# mysqladmin -u root password 'new-passwd'&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You must use quotes around the new-passwd you choose, and don't forget what it is! &lt;br /&gt;&lt;br /&gt;Then start PyFlag by typing "pyflag" (without quotes) at the commandline.&lt;br /&gt;&lt;br /&gt;By default PyFlag listens on port 8000.  So simply open your browser and go to http://127.0.0.1:8000  You can modify settings at this point:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SbGN5TQ8a0I/AAAAAAAAAcI/WzLkO3-9CD8/s1600-h/pyflag1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SbGN5TQ8a0I/AAAAAAAAAcI/WzLkO3-9CD8/s400/pyflag1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310181451209927490" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will then have to initialize the database:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGOlMkmB5I/AAAAAAAAAcQ/hH8amoNQzVs/s1600-h/pyflag2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 177px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGOlMkmB5I/AAAAAAAAAcQ/hH8amoNQzVs/s400/pyflag2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310182205327542162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After which you will see a success message:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SbGOyk3ZCfI/AAAAAAAAAcY/vyDNDZ1bt3g/s1600-h/pyflag4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 84px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SbGOyk3ZCfI/AAAAAAAAAcY/vyDNDZ1bt3g/s400/pyflag4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310182435187132914" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you are ready to start a new case, which you can do under case management.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGPFDdqYQI/AAAAAAAAAcg/phTCCMFClHw/s1600-h/pyflag.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGPFDdqYQI/AAAAAAAAAcg/phTCCMFClHw/s400/pyflag.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310182752638361858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Give the case a name:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGPS1iRWII/AAAAAAAAAco/SGSNpua_b8k/s1600-h/pyflag2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGPS1iRWII/AAAAAAAAAco/SGSNpua_b8k/s400/pyflag2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310182989417764994" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and then you will see confirmation that your case is created:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGPjm8qG1I/AAAAAAAAAcw/6r_nIivpCJc/s1600-h/pyflag3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGPjm8qG1I/AAAAAAAAAcw/6r_nIivpCJc/s400/pyflag3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310183277559683922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now you can load your evidence.  In this case, I am loading a USB image.  Type 0 (zero) for the offset and give your evidence some unique name you'll remember and press submit.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGP1PAwKMI/AAAAAAAAAc4/MfsMYmxM9LE/s1600-h/pyflag4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGP1PAwKMI/AAAAAAAAAc4/MfsMYmxM9LE/s400/pyflag4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310183580372052162" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If things work out, you will Sleuthkit will identify the file system type in a mount point (this could be anything, I'm using /usb but it could be D: or whatever):&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SbGQYfJwxFI/AAAAAAAAAdI/ez_I-ZDzlt0/s1600-h/pyflag6.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SbGQYfJwxFI/AAAAAAAAAdI/ez_I-ZDzlt0/s400/pyflag6.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310184186000229458" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will then see the uploading dialog.  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGQ6CAyjgI/AAAAAAAAAdQ/0uVMoVoNREU/s1600-h/pyflag7.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SbGQ6CAyjgI/AAAAAAAAAdQ/0uVMoVoNREU/s400/pyflag7.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310184762293521922" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Note: DO NOT BE IMPATIENT!  Let it finish uploading.  You will notice that it will refresh every now and then as it uploads more from the filesystem.  It will then redirect to the analysis screen.  You can now browse the filesystem:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGRIXynbrI/AAAAAAAAAdY/HlR0unHHEko/s1600-h/pyflag8.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SbGRIXynbrI/AAAAAAAAAdY/HlR0unHHEko/s400/pyflag8.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5310185008657821362" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2568074848834844518?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2568074848834844518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2568074848834844518' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2568074848834844518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2568074848834844518'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/03/pyflag-installation-on-centos-52.html' title='PyFlag installation on CentOS 5.2 (updated)'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_55uSCYxbQ8M/SbGN5TQ8a0I/AAAAAAAAAcI/WzLkO3-9CD8/s72-c/pyflag1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-98465262274249453</id><published>2009-02-25T12:35:00.011-05:00</published><updated>2009-02-25T13:18:04.147-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><title type='text'>Briefly: IDA Pro on CentOS 5.2</title><content type='html'>This is almost a non-post, but who knows, it might be useful to someone...  So today I while installing Ida Pro on CentOS, I hit a small snafu.  Everything went well for key extraction: &lt;a href="http://amrkamel.wordpress.com/2008/07/16/installing-ida-pro-on-ubuntu-804/"&gt;here's a nice tutorial for that&lt;/a&gt;.  However after I retrieved the key, I placed it according to the README file in the $HOME/.idapro directory.&lt;br /&gt;&lt;br /&gt;However, when running it I was faced with the following problem:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ ./idal&lt;br /&gt;./idal: error while loading shared libraries: libstdc++.so.5: cannot open shared object file: No such file or directory&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I noticed that my library was incompatible since it was libstdc++.so.&lt;b&gt;6&lt;/b&gt;.  Luckily, there are ``compat'' packages that contain these older libraries.  You can install them with yum:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# yum install -y compat-libstdc++-33.i386&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;At this point, IDA Pro starts up nicely: &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SaWKSRJR6EI/AAAAAAAAAbw/--wDm2Da3ow/s1600-h/ida.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 273px;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SaWKSRJR6EI/AAAAAAAAAbw/--wDm2Da3ow/s400/ida.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5306799782370601026" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SaWKiiSbYtI/AAAAAAAAAb4/InMOaljR1Zs/s1600-h/ida2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SaWKiiSbYtI/AAAAAAAAAb4/InMOaljR1Zs/s400/ida2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5306800061850280658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SaWKrOq_wiI/AAAAAAAAAcA/uYWRsXPngjk/s1600-h/ida3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 236px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SaWKrOq_wiI/AAAAAAAAAcA/uYWRsXPngjk/s400/ida3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5306800211203441186" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-98465262274249453?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/98465262274249453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=98465262274249453' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/98465262274249453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/98465262274249453'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/02/briefly-ida-pro-on-centos.html' title='Briefly: IDA Pro on CentOS 5.2'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_55uSCYxbQ8M/SaWKSRJR6EI/AAAAAAAAAbw/--wDm2Da3ow/s72-c/ida.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6569355409116356161</id><published>2009-02-22T14:37:00.006-05:00</published><updated>2009-02-23T19:19:50.454-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='blackhat dc'/><title type='text'>Some Brief BH DC Afterthoughts</title><content type='html'>Though it's almost too late for this, I thought I would write briefly on BH DC.  I had a blast while I was there and there were some very interesting talks.  In case you are interested in the content of these talks, slides, papers, demos and videos are being uploaded to this site:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html"&gt;https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The talks I liked the most were:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html#Iozzo"&gt;&lt;br /&gt;Let Your Mach-0 Fly by Vincenzo Iozzo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This talk describes how to replace a running process in memory with another by unmapping the current process, replacing the header and enveloping the old process with the new process.  It was really cool to see the demos, but if you watch the video (if it is uploaded), you will see he has trouble with the safari example.  I didn't have time to confirm my suspicions, but I thought this is because he didn't supply the entire path to the desired executable.  I came to him after the talk to ask about this, but things were so rushed at the end that I didn't get a chance to ask.  I emailed him and he replied: ``I found the problem, I forgot to patch a known bug before my talk,'' so he seems to have found the problem.  The code for this one is &lt;a href="https://www.blackhat.com/presentations/bh-dc-09/Iozzo/macho-on-the-fly.zip"&gt;available online&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html#Marlinspike"&gt;New Techniques for Defeating SSL/TLS by Moxie Marlinspike&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I wasn't completely sure at first that this was going to be an interesting talk, but it turned out very nice.  The title is misleading in that it wasn't really about SSL in general but about https specifically.  He has a tool that can MITM connections by&lt;br /&gt;stripping out references to https to http.  While that is not as interesting, the more interesting part comes into play with the creation and usage of fake certificates to make things "secure".  It was also funny how he used the favicon feature to make give a positive indicator by switching it with a padlock.  I'm not sure how effective it would be against items like &lt;a href="https://protect.login.yahoo.com/login/set_pref"&gt;Yahoo!'s&lt;/a&gt; &lt;a href="http://crypto.stanford.edu/TIPPI/third/talks/yahoo.html"&gt;sign in seal&lt;/a&gt; (among others), but there are other interesting possibilities.  The code for his presentation is also &lt;a href="http://thoughtcrime.org/software/sslstrip/index.html"&gt;available online&lt;/a&gt;.  (updated link)&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html#Wojtczuk"&gt;&lt;br /&gt;Attacking Intel(R) Trusted Execution Technology by Joanna Rutkowska&lt;br /&gt;and Rafal Wojtczuk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was an awesome talk.  It was a pleasure to see this team of famous researchers talk about the intense of TXT and how they could exploit it.  The video for this one is up, it would definitely be worthwhile to watch it.  The video for this one is &lt;a href="https://media.blackhat.com/bh-dc-09/video/Wojtczuk_Rutkowska/blackhat-dc-09-Wojtczuk_Rukowska_Intel-TXT.mov"&gt;available online&lt;/a&gt;.  Joanna has also posted the videos from the slides here:&lt;br /&gt;&lt;a href="http://theinvisiblethings.blogspot.com/2009/02/attacking-intel-txt-paper-and-slides.html"&gt;http://theinvisiblethings.blogspot.com/2009/02/attacking-intel-txt-paper-and-slides.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.blackhat.com/html/bh-dc-09/bh-dc-09-archives.html#Zmijewski"&gt;Defending Against BGP Man-In-the-Middle Attacks by Earl Zmijewski&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This was another awesome talk!  I didn't know the fine details about routers before the talk, but the MITM attack is quite simple.  It was also very interesting to see how they came to a solution for detecting these attacks.  It was also interesting that there after they had refined their detection algorithm they only found three instances of the attack "in the wild", all of which could be explained.  Another must read/watch I think, and Earl is entertaining :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6569355409116356161?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6569355409116356161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6569355409116356161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6569355409116356161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6569355409116356161'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/02/some-brief-bh-dc-afterthoughts.html' title='Some Brief BH DC Afterthoughts'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1123896656978761214</id><published>2009-02-16T20:58:00.004-05:00</published><updated>2009-02-17T21:31:40.316-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='blackhat dc'/><title type='text'>Blackhat DC</title><content type='html'>Looks like I'll be attending &lt;a href="http://www.blackhat.com/html/bh-dc-09/bh-dc-09-main.html"&gt;Blackhat DC&lt;/a&gt; this week.  Should be fun.  Not sure if I want to do the picks thing... but &lt;a href="http://www.blackhat.com/html/bh-dc-09/bh-dc-09-schedule.html"&gt;there are some interesting talks scheduled&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I will probably be sticking mainly to Track 2 talks, (with some exceptions) however...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1123896656978761214?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1123896656978761214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1123896656978761214' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1123896656978761214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1123896656978761214'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/02/blackhat-dc.html' title='Blackhat DC'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2810138309483298475</id><published>2009-02-02T21:27:00.013-05:00</published><updated>2009-02-15T17:07:25.802-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CentOS'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='PTK'/><title type='text'>PTK on CentOS 5.2</title><content type='html'>Having some spare time over the weekend caused me to attempt an installation of &lt;a href="http://ptk.dflabs.com/"&gt;PTK&lt;/a&gt; on my spare &lt;a href="http://www.centos.org/"&gt;CentOS&lt;/a&gt; box.  I've succeeded in getting it to run &lt;a href="http://gleeda.blogspot.com/2008/07/ptk-on-fedora-8.html"&gt;under Fedora&lt;/a&gt;, so I had a little bit of an idea of what I was getting myself into...  &lt;br /&gt;&lt;br /&gt;Before you get started, make sure you have the following packages installed:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;mysql&lt;br /&gt;mysql-server&lt;br /&gt;php&lt;br /&gt;php-mysql&lt;br /&gt;php-mbstring&lt;br /&gt;httpd&lt;br /&gt;&lt;u&gt;&lt;a href="http://www.sleuthkit.org/sleuthkit/"&gt;&lt;font color="blue"&gt;Sleuthkit&lt;/font&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If you need EWF or AFF support you can install them from:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;&lt;u&gt;&lt;a href="https://www.uitwisselplatform.nl/projects/libewf/"&gt;&lt;font color="blue"&gt;libewf&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.afflib.org/"&gt;&lt;font color="blue"&gt;afflib&lt;/font&gt;&lt;/a&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After installing everything, you need to initialize MySQL (as root):&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# /sbin/chkconfig mysqld on&lt;br /&gt;# /sbin/service mysqld start&lt;br /&gt;# mysqladmin -u root password 'new-passwd'&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You must use quotes around the new-passwd you choose, and don't forget what it is! &lt;br /&gt;&lt;br /&gt;You must also start the http server(as root):&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# /sbin/service httpd start&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Now you are ready to download and install &lt;a href="http://sourceforge.net/projects/ptk-forensics/"&gt;PTK from sourceforge&lt;/a&gt;.  I downloaded version 1.0.5.&lt;br /&gt;&lt;br /&gt;In order to install PTK, extract the tarball in your webserver directory as root: &lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;# cd /var/www/html&lt;br /&gt;# ls &lt;br /&gt;ptk-1.0.5.tar.gz&lt;br /&gt;&lt;br /&gt;# tar -xzf ptk-1.0.5.tar.gz&lt;br /&gt;# chown -R apache.apache ptk&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The last command above makes sure that all files are owned by the webserver user.  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now we have &lt;a href="http://gleeda.blogspot.com/2008/07/ptk-02-released.html"&gt;address a problem that still exists&lt;/a&gt; regarding the installation script.  Go inside the ptk folder.  At this point, you should see the install.php script.  If you have Sleuthkit installed in /usr/local/bin the install script will not work as expected because this is not in its path.  You can find out where it is installed by typing &lt;tt&gt;which&lt;/tt&gt; plus one of the Sleuthkit commands e.g.:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ which istat&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If the path returned is /usr/local/bin then you can modify the install.php file by changing entries like:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;$istat = shell_exec("which istat");&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;$istat = shell_exec('export PATH="/usr/bin:/usr/local/bin"; which istat');&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;and so on...&lt;br /&gt;&lt;br /&gt;If all goes well, you will get to the options screen, which should look something like the following: &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SYj3VJ9NHQI/AAAAAAAAAbI/kRCquM0_1fY/s1600-h/PTK.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 374px;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SYj3VJ9NHQI/AAAAAAAAAbI/kRCquM0_1fY/s400/PTK.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5298756904423333122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Fill everything out as you like (including distro) and press next.  Now, when I installed PTK &lt;a href="http://gleeda.blogspot.com/2008/07/ptk-02-released.html"&gt;under Fedora&lt;/a&gt;, everything was ready to go at this point.  With CentOS, it was another story.  For some reason, things did not get updated with the extra configure scripts.&lt;br /&gt;&lt;br /&gt;So, you have to manually add the locations for your Sleuthkit executables in the following files:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;config/conf.php&lt;br /&gt;config/conf.pl&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;where config is the folder within the ptk folder [/var/www/html/ptk/config].  If you open up conf.pl it may look like:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;&lt;br /&gt;installdir =&gt; '/var/www/html/ptk/',&lt;br /&gt;md5_bin =&gt; '/usr/bin/md5sum',&lt;br /&gt;sha1_bin =&gt; '/usr/bin/sha1sum',&lt;br /&gt;fsstat_bin =&gt; '',&lt;br /&gt;mmls_bin =&gt; '',&lt;br /&gt;fls_bin =&gt; '',&lt;br /&gt;istat_bin =&gt; '',&lt;br /&gt;[snip]&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Notice that there are some blank entries.  Therefore you will have to enter the correct path for those executables.&lt;br /&gt;&lt;br /&gt;All right, so I'm not going to make you do it... :-)  Here are the &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/ptk_files.tgz"&gt;modified files for my CentOS box&lt;/a&gt;.  Just make sure you put then in the right places, and you might have to &lt;tt&gt;chown&lt;/tt&gt; them as well.&lt;br /&gt;&lt;br /&gt;Enjoy!  and hope this helps someone out there...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2810138309483298475?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2810138309483298475/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2810138309483298475' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2810138309483298475'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2810138309483298475'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/02/ptk-on-centos-52.html' title='PTK on CentOS 5.2'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_55uSCYxbQ8M/SYj3VJ9NHQI/AAAAAAAAAbI/kRCquM0_1fY/s72-c/PTK.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6941053679422438884</id><published>2009-01-28T05:20:00.008-05:00</published><updated>2009-01-28T14:24:54.914-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Hash of a CD</title><content type='html'>Recently I had to see if two CDs were identical.  I had the hash value of the iso for the desired content so I decided to check the hash for both CDs.  There is really not that much to this post, but just in case someone ever needs to know how to do this I'll give you the command line how-to.&lt;br /&gt;&lt;br /&gt;In my case, &lt;tt&gt;md5sum /dev/cdrom&lt;/tt&gt; did not work.  Now there is no reason to copy the CD to an iso file in order to do this.  You can just use &lt;tt&gt;dd&lt;/tt&gt; and pipe the output into &lt;tt&gt;md5sum&lt;/tt&gt; or &lt;tt&gt;sha1sum&lt;/tt&gt;.&lt;br /&gt;&lt;br /&gt;I found that just doing a straight dd without extra options did not work.  So you should use &lt;a href="http://linux.die.net/man/8/isoinfo"&gt;isoinfo&lt;/a&gt; to get the logical block size and the volume size to feed to dd (bs="Logical block size" and count="Volume size").  I decided to put this all into a &lt;a href="http://venus.cs.qc.edu/~jlevy/code/cdmd5.bsh"&gt;bash script you can find here&lt;/a&gt;.  The code is shown below:&lt;br /&gt;&lt;br /&gt;&lt;p class="code2"&gt;INFO=`isoinfo -d -i /dev/cdrom \&lt;br /&gt;|awk '{ if ($1 ~ /Volume/ &amp;&amp; $2 ~ /size/ ) print $4; \&lt;br /&gt;else if ($1 ~ /Logical/ &amp;&amp; $2 ~ /block/ &amp;&amp; $3 ~ /size/) \&lt;br /&gt;print $5 endif }'`&lt;br /&gt;&lt;br /&gt;INFO=($INFO)&lt;br /&gt;&lt;br /&gt;echo "Logical block size: ${INFO[0]}"&lt;br /&gt;echo "Volume size: ${INFO[1]}"&lt;br /&gt;echo "Now executing: "&lt;br /&gt;echo "dd if=/dev/cdrom bs=${INFO[0]} count=${INFO[1]} conv=notrunc,noerror,sync | md5sum"&lt;br /&gt;&lt;br /&gt;dd if=/dev/cdrom bs=${INFO[0]} count=${INFO[1]} \&lt;br /&gt;conv=notrunc,noerror,sync | md5sum&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;It's not the most beautiful solution, but there it is.  This uses md5, for other hashes just modify the script as needed.  Also if your CD device is not /dev/cdrom modify that as well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6941053679422438884?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6941053679422438884/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6941053679422438884' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6941053679422438884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6941053679422438884'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/01/hash-of-cd.html' title='Hash of a CD'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4765279635282636061</id><published>2009-01-15T21:47:00.004-05:00</published><updated>2009-01-15T22:09:35.616-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Practitioner's Guide to Capturing and Analysis of RAM</title><content type='html'>This is a late post, but I've been busy...  I learned about this video from &lt;a href="http://moyix.blogspot.com"&gt;Moyix&lt;/a&gt; on the &lt;a href="https://www.volatilesystems.com/VolatileWeb/volatility.gsp"&gt;Volatility&lt;/a&gt; irc channel (#volatility on freenode).  It's nice that people like &lt;a href="http://gleeda.blogspot.com/2009/01/vol2htmlpl-update.html"&gt;vol2html&lt;/a&gt;.  It encourages me to add more to it...&lt;br /&gt;&lt;br /&gt;There's &lt;a href="http://volatility.tumblr.com/post/70319443/practitioners-guide-to-capturing-and-analysis-of-ram"&gt;more info here&lt;/a&gt; if you are interested.  I'm glad to see that memory analysis is getting more visibility.  Cool stuff!  Enjoy!&lt;br /&gt;&lt;br /&gt;&lt;object width="400" height="300"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2810702&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=2810702&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="300"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/"&gt;Dale Beauchamp - DojoSec January 2009&lt;/a&gt; from &lt;a href="http://vimeo.com/marcuscarey"&gt;Marcus Carey&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4765279635282636061?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4765279635282636061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4765279635282636061' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4765279635282636061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4765279635282636061'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/01/practitioners-guide-to-capturing-and.html' title='Practitioner&apos;s Guide to Capturing and Analysis of RAM'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6903449594412855006</id><published>2009-01-11T13:24:00.013-05:00</published><updated>2010-06-30T09:33:55.686-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>vol2html.pl update</title><content type='html'>I made a small update to &lt;a href="http://gleeda.blogspot.com/2008/11/vol2html-perl-script.html"&gt;vol2html.pl&lt;/a&gt;.  Since there are a lot of html files being generated, I thought it might be nice to allow the user to specify an output directory.  So there is an extra (optional) option:&lt;br /&gt;&lt;br /&gt;-D &amp;lt;output_dir&amp;gt;&lt;br /&gt;&lt;br /&gt;if you want to print all html files to the another directory.  If the directory does not exist, it is created.  The script currently does not check if files exist in this directory and will clobber any files with the same name.&lt;br /&gt;&lt;br /&gt;I have also added some more information about the open files.  You can now see all processes that have the same open files and how many times each process has a file open.  To do this, click on the process of interest and click open files.  Each file name is linked to a report, which contain a list of all processes (by pid) that have the file open and how many times that process has the file open.  There is a link to each pid as well.  &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SWo81GzSHRI/AAAAAAAAAZQ/BrtgOIE-fBg/s1600-h/1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 218px; height: 400px;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SWo81GzSHRI/AAAAAAAAAZQ/BrtgOIE-fBg/s400/1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5290107595356511506" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also new there is a link to the index.html file at the end of each report.&lt;br /&gt;&lt;br /&gt;Since my website is down for now, you can get the updated script &lt;a href="http://code.google.com/p/vol2html/"&gt;here&lt;/a&gt;. (updated 1/11/09 and moved from google code which was messing up some things)  &lt;br /&gt;&lt;br /&gt;Hopefully this is helpful.&lt;br /&gt;&lt;br /&gt;Another update: &lt;a href="http://venus.cs.qc.edu/~jlevy/code/report2/"&gt;Here's a second report to look at&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;The venus website is down so if you need to download vol2html you can get it from the new &lt;a href="http://code.google.com/p/vol2html/"&gt;Google code page&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Still more to come....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6903449594412855006?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6903449594412855006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6903449594412855006' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6903449594412855006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6903449594412855006'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/01/vol2htmlpl-update.html' title='vol2html.pl update'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_55uSCYxbQ8M/SWo81GzSHRI/AAAAAAAAAZQ/BrtgOIE-fBg/s72-c/1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5333986587464078095</id><published>2009-01-06T19:46:00.003-05:00</published><updated>2009-01-06T20:26:26.996-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>OT: Twitter</title><content type='html'>So I finally broke down and &lt;a href="http://twitter.com/gleeda"&gt;created a Twitter account&lt;/a&gt; recently.  It started when I began watching a few people on Twitter.  They often had very interesting Tweets related to my interests.  After a while I realized that it would be easier to keep up with these Tweets by following these people with my own Twitter account.&lt;br /&gt;&lt;br /&gt;Now, the reason I haven't had one up to this point was mostly because I was afraid of the privacy issues.  While teaching undergraduate classes I have often been asked if I have a Facebook, Myspace, Twitter (or whatever) account so that students could ``befriend'' me.  Till now I have abstained from these types of accounts mostly to avoid these types of student/teacher online friendships.  Not that I dislike my students (I don't), but I just figured it might get uncomfortable at some point.  &lt;br /&gt;&lt;br /&gt;I am wondering if others have struggled with this issue.  I know there are some people on Twitter who teach classes like me...&lt;br /&gt;&lt;br /&gt;I have made my Tweets private for now to make sure that I know who is following me (but can you ever *really* know?).  I know this is probably not the most favorable setup, but it makes me feel somewhat better that my inconsequential Tweets are not just openly exposed to everyone.  &lt;br /&gt;&lt;br /&gt;The people on Twitter are cool and information they give rocks.  So far I am really enjoying it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5333986587464078095?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5333986587464078095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5333986587464078095' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5333986587464078095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5333986587464078095'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2009/01/ot-twitter.html' title='OT: Twitter'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3258905784741482538</id><published>2008-12-09T21:43:00.005-05:00</published><updated>2008-12-09T22:20:36.569-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='vmware'/><category scheme='http://www.blogger.com/atom/ns#' term='modifications'/><title type='text'>VMWare Workstation machine to VMWare Server</title><content type='html'>Recently I received a VMWare image to work on.  I had installed VMware Server 1.0.8 on my CentOS 5.2 laptop because 2.0 is just painful.  Unfortunately the image had been created with a newer version of Workstation rendering it incompatible with my install.  I found the VMware converter, but it wasn't much help since I'm on a Linux machine.  &lt;br /&gt;&lt;br /&gt;I created a new default machine using VMware Server with the basic settings matching that of the target machine, copied the resulting .vmx file into the folder of the target machine.  (I could have just modified the original .vmx file, but just decided to start over cleanly.)  &lt;br /&gt;&lt;br /&gt;So now the vmware machine tries to boot, but fails with the following message:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;One or more of your disk files were created by a more recent version of VMware software and are not supported by this version of VMware Server.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Then I modified the vmdk descriptor file from:&lt;br /&gt;&lt;p class="code"&gt;ddb.virtualHWVersion = "7"&lt;/p&gt;&lt;br /&gt;to&lt;br /&gt;&lt;p class="code"&gt;ddb.virtualHWVersion = "4"&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Worked like a charm :-)&lt;br /&gt;&lt;br /&gt;I don't know if this will work in every case, but it might be helpful to someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3258905784741482538?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3258905784741482538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3258905784741482538' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3258905784741482538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3258905784741482538'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/12/vmware-workstation-machine-to-vmware.html' title='VMWare Workstation machine to VMWare Server'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7749327518595626580</id><published>2008-11-24T15:37:00.012-05:00</published><updated>2010-06-30T09:29:55.601-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><title type='text'>Vol2html Perl Script</title><content type='html'>During my forensics class I started thinking of a way to make it easier for my students to sort through the output of &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt; and starting writing a little perl script to create an html report of running processes, open files and dlls.  &lt;br /&gt;&lt;br /&gt;This is not finished as there is more information that I would like to correlate from the output of  &lt;a href="https://www.volatilesystems.com/default/volatility"&gt;Volatility&lt;/a&gt;.  But if you are somewhat curious, this is what I have so far: &lt;a href="http://venus.cs.qc.edu/~jlevy/code/vol2html/vol2html.pl"&gt;vol2html.pl&lt;/a&gt;.  You can see an example report &lt;a href="http://venus.cs.qc.edu/~jlevy/code/report/index.html"&gt;here&lt;/a&gt;.  The output files for this report and the perl script are bundled together &lt;a href="http://venus.cs.qc.edu/~jlevy/code/vol2html.tgz"&gt;here&lt;/a&gt;. There is  minimal error checking.&lt;br /&gt;&lt;br /&gt;To use, first redirect the output of Volatility for pslist, dlllist and files to text files:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;./volatility pslist -f mem.dd &gt; pslist.txt &lt;br /&gt;./volatility files -f mem.dd &gt;files.txt&lt;br /&gt;./volatility dlllist -f mem.dd &gt;dlllist.txt&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Then feed the perl script these files:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;./vol2html.pl -pslist pslist.txt \&lt;br /&gt;-files files.txt -dlllist dlllist.txt&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;There is more coming...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;&lt;b&gt;The venus website is down so if you need to download vol2html you can get it from the new &lt;a href="http://code.google.com/p/vol2html/"&gt;Google code page&lt;/a&gt;&lt;/b&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7749327518595626580?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7749327518595626580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7749327518595626580' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7749327518595626580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7749327518595626580'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/11/vol2html-perl-script.html' title='Vol2html Perl Script'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4297026346691362795</id><published>2008-11-16T22:40:00.003-05:00</published><updated>2008-11-16T22:44:13.602-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Permeate MITM</title><content type='html'>It's been a &lt;b&gt;&lt;i&gt;long&lt;/i&gt;&lt;/b&gt; while.  For that I apologize...  I guess I'm not a very good blogger when the semester is in full stride.  Anyway, there's a new code release for &lt;a href="http://permeate.sourceforge.net/"&gt;Permeate&lt;/a&gt;, this time with the MITM detection built in.  A paper we recently submitted to ICC 09 is available there as well.  Shouts to Jarek and BK :-)&lt;br /&gt;&lt;br /&gt;Enjoy!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4297026346691362795?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4297026346691362795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4297026346691362795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4297026346691362795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4297026346691362795'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/11/permeate-mitm.html' title='Permeate MITM'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-760093451285563678</id><published>2008-10-23T19:35:00.004-04:00</published><updated>2008-10-23T19:42:53.649-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='PTK'/><title type='text'>PTK 0.2 Patch</title><content type='html'>In case you missed it, &lt;a href="http://gleeda.blogspot.com/2008/07/ptk-02-released.html"&gt;I've created a patch for PTK&lt;/a&gt;.  You can find it &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/install_diff.txt"&gt;here&lt;/a&gt;.  This fixes the path issue for those who have Sleuthkit installed in /usr/local/bin.  PTK 1.0 will be released soon &lt;a href="https://sourceforge.net/forum/forum.php?thread_id=2308369&amp;forum_id=800995"&gt;and this will no longer be an issue.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-760093451285563678?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/760093451285563678/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=760093451285563678' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/760093451285563678'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/760093451285563678'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/10/ptk-02-patch.html' title='PTK 0.2 Patch'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7651188354118840514</id><published>2008-10-10T08:38:00.009-04:00</published><updated>2008-10-17T15:11:34.094-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='queens college'/><title type='text'>PolyTech forensics challenge</title><content type='html'>Yay!  &lt;a href="http://isis.poly.edu/csaw/forensics"&gt;Another former student, Fausto Dutan, is in the finals&lt;/a&gt; (one got third place last year).  There's also a MS student from John Jay - Richard Alcalde.  Go CUNY :-)  Good luck to all of the finalists.&lt;br /&gt;&lt;br /&gt;Edit 10/17: &lt;a href="http://isis.poly.edu/csaw/forensics"&gt;Richard Alcalde got 1st place!&lt;/a&gt; Congrats Richard :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7651188354118840514?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7651188354118840514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7651188354118840514' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7651188354118840514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7651188354118840514'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/10/polytech-forensics-challenge.html' title='PolyTech forensics challenge'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3613570682272973092</id><published>2008-09-22T20:37:00.010-04:00</published><updated>2009-12-27T20:35:36.233-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kcore'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>/proc/kcore part II</title><content type='html'>It will take me a few posts to go through the kcore file...  &lt;a href="http://gleeda.blogspot.com/2008/08/kcore.html"&gt;The last kcore post&lt;/a&gt; dealt only with ELF headers of the kcore file.  After the ELF header ends, there are 3 program headers:&lt;br /&gt;&lt;br /&gt;From elf.h we see that the structure of a program header is:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;typedef struct&lt;br /&gt;{&lt;br /&gt; Elf32_Word    p_type;                 /* Segment type */&lt;br /&gt; Elf32_Off     p_offset;               /* Segment file offset */&lt;br /&gt; Elf32_Addr    p_vaddr;                /* Segment virtual address */&lt;br /&gt; Elf32_Addr    p_paddr;                /* Segment physical address */&lt;br /&gt; Elf32_Word    p_filesz;               /* Segment size in file */&lt;br /&gt; Elf32_Word    p_memsz;                /* Segment size in memory */&lt;br /&gt; Elf32_Word    p_flags;                /* Segment flags */&lt;br /&gt; Elf32_Word    p_align;                /* Segment alignment */&lt;br /&gt;} Elf32_Phdr;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;A look at the first program header below:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;0000030: 0000 0000 &lt;span style="font-weight:bold;"&gt;04&lt;/span&gt;00 0000 &lt;span style="font-weight:bold;"&gt;94&lt;/span&gt;00 0000 0000 0000  ................&lt;br /&gt;0000040: 0000 0000 &lt;span style="font-weight:bold;"&gt;d807&lt;/span&gt; 0000 0000 0000 0000 0000  ................&lt;br /&gt;0000050: 0000 0000&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first program header is of type PT_NOTE (Auxiliary info) which has a value of 0x4&lt;br /&gt;We can see that the offset is 0x94&lt;br /&gt;The filesize has a value of 0x7d8&lt;br /&gt;&lt;br /&gt;All other parts of the struct are set to 0x0&lt;br /&gt;&lt;br /&gt;A look at the second program header below:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;0000050: 0000 0000 &lt;span style="font-weight:bold;"&gt;01&lt;/span&gt;00 0000 &lt;span style="font-weight:bold;"&gt;0010 8038&lt;/span&gt; &lt;span style="font-weight:bold;"&gt;0000 80f8&lt;/span&gt;  ...........8....&lt;br /&gt;0000060: 0000 0000 &lt;span style="font-weight:bold;"&gt;00e0 ff06 00e0 ff06&lt;/span&gt; &lt;span style="font-weight:bold;"&gt;07&lt;/span&gt;00 0000  ................&lt;br /&gt;0000070: &lt;span style="font-weight:bold;"&gt;0010&lt;/span&gt; 0000&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The type is of type PT_LOAD 0x1 (loadable program segment)&lt;br /&gt;The offset is 0x38801000&lt;br /&gt;vaddr is 0xf8800000 (vmalloc)&lt;br /&gt;filesz and memsz are both 0x6ffe000&lt;br /&gt;flags are 0x7 (PF_R | PF_W | PF_X)&lt;br /&gt;page alignment is 0x1000 (size of a page - 4096)&lt;br /&gt;&lt;br /&gt;The other remaining part of the structure (p_paddr) is 0x0&lt;br /&gt;&lt;br /&gt;The third program header looks like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;0000070: 0010 0000 &lt;span style="font-weight:bold;"&gt;01&lt;/span&gt;00 0000 &lt;span style="font-weight:bold;"&gt;0010&lt;/span&gt; 0000 &lt;span style="font-weight:bold;"&gt;0000 00c0&lt;/span&gt;  ................&lt;br /&gt;0000080: 0000 0000 &lt;span style="font-weight:bold;"&gt;0000 0038 0000 0038 0700&lt;/span&gt; 0000  .......8...8....&lt;br /&gt;0000090: &lt;span style="font-weight:bold;"&gt;0010&lt;/span&gt; 0000&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The type is of type PT_LOAD 0x1 (loadable program segment)&lt;br /&gt;The offset is 0x1000 (size of a page - 4096)&lt;br /&gt;vaddr is 0xc0000000 (start of lowmem)&lt;br /&gt;filesz and memsz are both 0x38000000 (size of (kcore-4096))&lt;br /&gt;flags are 0x7 (PF_R | PF_W | PF_X)&lt;br /&gt;page alignment is 0x1000 (size of a page - 4096)&lt;br /&gt;&lt;br /&gt;The other remaining part of the structure (p_paddr) is 0x0&lt;br /&gt;&lt;br /&gt;From my messages file to compare:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;Sep 15 12:28:57 kanga kernel:&lt;br /&gt;Memory: 2060724k/2087616k available&lt;br /&gt;(2252k kernel code, 25548k reserved, 1182k data, 284k init, 1170112k highmem)&lt;br /&gt;Sep 15 12:28:57 kanga kernel: virtual kernel memory layout:&lt;br /&gt;Sep 15 12:28:57 kanga kernel:     fixmap  : 0xffc53000 - 0xfffff000   (3760 kB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:     pkmap   : 0xff400000 - 0xff800000   (4096 kB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:     vmalloc : 0xf8800000 - 0xff3fe000   ( 107 MB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:     lowmem  : 0xc0000000 - 0xf8000000   ( 896 MB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:       .init : 0xc0761000 - 0xc07a8000   ( 284 kB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:       .data : 0xc063337f - 0xc075ab88   (1182 kB)&lt;br /&gt;Sep 15 12:28:57 kanga kernel:       .text : 0xc0400000 - 0xc063337f   (2252 kB)&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;Notes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The next three sections will use this structure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;struct memelfnote&lt;br /&gt;{&lt;br /&gt;        const char *name;&lt;br /&gt;        int type;&lt;br /&gt;        unsigned int datasz;&lt;br /&gt;        void *data;&lt;br /&gt;};&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Looking at the first note (only the interesting part, the rest is zeroed out):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;0000090: 0010 0000 &lt;span style="font-weight:bold;"&gt;0500 0000 9000 0000 0100 0000&lt;/span&gt;  ................&lt;br /&gt;00000a0: &lt;span style="font-weight:bold;"&gt;434f 5245&lt;/span&gt; &lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;In this case the items shown are not in the same order of the struct.  This is because they have been placed in a slightly different order.&lt;br /&gt;&lt;br /&gt;First we have the size of the name: 0x5 (strlen(CORE)+1)&lt;br /&gt;Then the data size: 0x90 (size of elf_prstatus struct)&lt;br /&gt;Then the type: 0x1 (NT_PRSTATUS)&lt;br /&gt;Then the name itself: CORE&lt;br /&gt;And finally the data, which has been zeroed out (not shown).&lt;br /&gt;&lt;br /&gt;The next note looks like the following:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;      &lt;br /&gt;                            0500 0000 7c00 0000  ............|...&lt;br /&gt;0000140: 0300 0000 434f 5245 0000 0000 0052 0000  ....CORE.....R..&lt;br /&gt;0000150: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;0000160: 0000 0000 0000 0000 766d 6c69 6e75 7800  ........vmlinux.&lt;br /&gt;0000170: 0000 0000 0000 0000 726f 2072 6f6f 743d  ........ro root=&lt;br /&gt;0000180: 2f64 6576 2f56 6f6c 4772 6f75 7030 302f  /dev/VolGroup00/&lt;br /&gt;0000190: 4c6f 6756 6f6c 3030 2072 6867 6220 7175  LogVol00 rhgb qu&lt;br /&gt;00001a0: 6965 7400 0000 0000 0000 0000 0000 0000  iet.............&lt;br /&gt;00001b0: 0000 0000 0000 0000 0000 0000 0000 0000  ................&lt;br /&gt;00001c0: 0000 0000 0000 0000 &lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First we have the size of the name: 0x5 (strlen(CORE)+1)&lt;br /&gt;Then the data size: 0x7c (sizeof(struct elf_prpsinfo))&lt;br /&gt;Then the type: 0x3 (NT_PRPSINFO )&lt;br /&gt;Then the name itself: CORE&lt;br /&gt;And finally the data, which uses the elf_prpsinfo structure:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;struct elf_prpsinfo&lt;br /&gt;{&lt;br /&gt;       char    pr_state;       /* numeric process state */&lt;br /&gt;       char    pr_sname;       /* char for pr_state */&lt;br /&gt;       char    pr_zomb;        /* zombie */&lt;br /&gt;       char    pr_nice;        /* nice val */&lt;br /&gt;       unsigned long pr_flag;  /* flags */&lt;br /&gt;       __kernel_uid_t  pr_uid;&lt;br /&gt;       __kernel_gid_t  pr_gid;&lt;br /&gt;       pid_t   pr_pid, pr_ppid, pr_pgrp, pr_sid;&lt;br /&gt;       /* Lots missing */&lt;br /&gt;       char    pr_fname[16];   /* filename of executable */&lt;br /&gt;       char    pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */&lt;br /&gt;};&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The data consists of:&lt;br /&gt;pr_state 0x0&lt;br /&gt;pr_sname 0x52 (R)&lt;br /&gt;pr_zomb 0x0&lt;br /&gt;Executable file name (pr_fname) "vmlinux"&lt;br /&gt;Saved command line (pr_psargs) up to 80 characters&lt;br /&gt;ro root=/dev/VolGroup00/LogVol00 rhgb quiet&lt;br /&gt;&lt;br /&gt;The rest is zeroed out from a memset command&lt;br /&gt;&lt;br /&gt;The third note denotes information about the current task.  Here is part of it:&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;        &lt;br /&gt;                            0500 0000 9006 0000  ................&lt;br /&gt;00001d0: 0400 0000 434f 5245 0000 0000 0000 0000  ....CORE........&lt;br /&gt;00001e0: 0020 b2f0 0200 0000 0021 4000 ffff ffff  . .......!@.....&lt;br /&gt;00001f0: 7800 0000 7800 0000 7800 0000 b086 8af0  x...x...x.......&lt;br /&gt;0000200: b086 8af0 4072 63c0 0004 0000 0000 4000  ....@rc.......@.&lt;br /&gt;0000210: 0100 0000 0000 0000 0000 0000 0100 0000  ................&lt;br /&gt;0000220: 494c 6a33 c10a 0000 2fd2 1d00 0000 0000  ILj3..../.......&lt;br /&gt;0000230: 85b4 abc6 0c01 0000 6134 0c00 0000 0000  ........a4......&lt;br /&gt;0000240: 0000 0000 0000 0000 5669 0d00 0000 0000&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;First we have the size of the name: 0x5 (strlen(CORE)+1)&lt;br /&gt;Then the data size: 0x690 (sizeof(struct task_struct) found in &lt;a href="http://lxr.linux.no/linux+v2.6.26.5/include/linux/sched.h#L1026"&gt;linux/sched.h&lt;/a&gt;)&lt;br /&gt;Then the type: 0x4 (NT_TASKSTRUCT )&lt;br /&gt;Then the name itself: CORE&lt;br /&gt;And finally the data, which consists of `current' which is the current thread (not shown above).&lt;br /&gt;&lt;br /&gt;Now we must dissect task_struct info, which we'll do a bit later...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3613570682272973092?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3613570682272973092/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3613570682272973092' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3613570682272973092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3613570682272973092'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/09/prockcore-part-ii.html' title='/proc/kcore part II'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4378698358539520285</id><published>2008-09-18T23:32:00.007-04:00</published><updated>2008-09-19T13:02:26.765-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='john jay'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Visual Forensic Analysis</title><content type='html'>There's an interesting talk coming up at John Jay College:&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-weight:bold;"&gt;The Center for Cybercrime Studies&lt;br /&gt;The John Jay College of Criminal Justice&lt;br /&gt;Presents&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Visual Forensic Analysis&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;Speaker:    &lt;font size="4"&gt;Greg Conti&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Computer Science Department&lt;br /&gt;United States Military Academy&lt;br /&gt; &lt;br /&gt;For decades hex was the common tongue of reverse engineers and forensic analysts, but we can do better. Hex editors are the Swiss Army knives of low level analysis and have evolved significantly, but are now at a local maximum. With the tiny textual window hex provides, it is difficult, if not impossible to understand the big picture context and inner workings of binary objects - files, file systems, process memory, and network traffic. While there are helpful tools to analyze the special case of executable files, little work exists to help address the general case of all types of binary objects. This talk presents visual approaches to improve the art and science of forensic analysis, diffing, and reverse engineering, both in the context independent case where little is known about the raw structure of the binary data and at the semantic level where external knowledge can be used to inform analysis.  If you are faced with low level analysis tasks, you should attend this talk.&lt;br /&gt; &lt;br /&gt;Greg Conti is an Assistant Professor of Computer Science at the United States Military Academy. His research includes security data visualization and web-based information disclosure. He is the author of Security Data Visualization (No Starch Press) and the forthcoming Googling Security (Addison-Wesley). His work can be found at &lt;a href="http://www.gregconti.com"&gt;www.gregconti.com&lt;/a&gt; and &lt;a href="http://www.rumint.org"&gt;www.rumint.org&lt;/a&gt;.&lt;br /&gt;&lt;pre&gt; &lt;br /&gt;Date:        September 24, 2008&lt;br /&gt;Time:        3:30 PM&lt;br /&gt;Location:    Mathematics Conference Room - 4238N&lt;br /&gt;             445 West 59th Street, New York City 10019&lt;/pre&gt;&lt;br /&gt; &lt;br /&gt;RSVP: Nicole Daniels at 212-237-8920 or email ndaniels@jjay.cuny.edu.&lt;br /&gt;For additional information please contact &lt;a href="http://web.math.jjay.cuny.edu/index2.html"&gt;Professor Doug Salane&lt;/a&gt;, Director of the &lt;a href="http://www.jjay.cuny.edu/centersInstitutes/cybercrime/x.asp"&gt;Center for Cybercrime Studies&lt;/a&gt;, at 212-237-8836 or email dsalane@jjay.cuny.edu.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4378698358539520285?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4378698358539520285/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4378698358539520285' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4378698358539520285'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4378698358539520285'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/09/visual-forensic-analysis.html' title='Visual Forensic Analysis'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7102807487150327576</id><published>2008-09-12T17:34:00.003-04:00</published><updated>2008-09-12T17:37:48.631-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='PyFlag'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>PyFlag on Windows</title><content type='html'>&lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/PyFlagWindows"&gt;PyFlag is now available on Windows&lt;/a&gt;.  I haven't had a chance to try it on Windows, but I will soon and then I'll report on it.  &lt;br /&gt;&lt;br /&gt;I've &lt;a href="http://gleeda.blogspot.com/2008/06/pyflag-installation-on-fedora-8.html"&gt;used it on Linux&lt;/a&gt; however, and it's really nice :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7102807487150327576?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7102807487150327576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7102807487150327576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7102807487150327576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7102807487150327576'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/09/pyflag-on-windows.html' title='PyFlag on Windows'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8778698605117191148</id><published>2008-09-09T22:59:00.006-04:00</published><updated>2008-10-05T21:37:58.987-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='nothing'/><category scheme='http://www.blogger.com/atom/ns#' term='life'/><title type='text'>It's been a while...</title><content type='html'>Well, it's been a while since I've written anything.  This is just a brief update for those who care...  I've been busy and I switched locations for the semester.  I'm not going to go over everything that's happened since my last post, but I'm teaching at &lt;a href="http://www.jjay.cuny.edu/"&gt;John Jay College&lt;/a&gt; this semester instead of &lt;a href="http://www.qc.cuny.edu"&gt;Queens College&lt;/a&gt;.  It's still CUNY :-)  and everything is still cool.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://permeate.sourceforge.net/permeate.pdf"&gt;Oh, our paper was accepted&lt;/a&gt; :-) (this is not the final copy, but you get the gist)  Edit: &lt;a href="http://isiom.wssrl.org/index.php?option=com_docman&amp;task=cat_view&amp;gid=45&amp;Itemid=53"&gt;The schedule is up now&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;What's next?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8778698605117191148?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8778698605117191148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8778698605117191148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8778698605117191148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8778698605117191148'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/09/its-been-while.html' title='It&apos;s been a while...'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8899947837377122977</id><published>2008-08-14T16:46:00.016-04:00</published><updated>2009-12-27T20:36:29.190-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='kcore'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='elf'/><title type='text'>ELF headers: executable vs /proc/kcore</title><content type='html'>This is for 32bit&lt;br /&gt;&lt;br /&gt;According to elf.h:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;#define EI_NIDENT (16)&lt;br /&gt;&lt;br /&gt;typedef struct&lt;br /&gt;{&lt;br /&gt;  unsigned char e_ident[EI_NIDENT];     /* Magic number and other info */&lt;br /&gt;  Elf32_Half    e_type;                 /* Object file type */&lt;br /&gt;  Elf32_Half    e_machine;              /* Architecture */&lt;br /&gt;  Elf32_Word    e_version;              /* Object file version */&lt;br /&gt;  Elf32_Addr    e_entry;                /* Entry point virtual address */&lt;br /&gt;  Elf32_Off     e_phoff;                /* Program header table file offset */&lt;br /&gt;  Elf32_Off     e_shoff;                /* Section header table file offset */&lt;br /&gt;  Elf32_Word    e_flags;                /* Processor-specific flags */&lt;br /&gt;  Elf32_Half    e_ehsize;               /* ELF header size in bytes */&lt;br /&gt;  Elf32_Half    e_phentsize;            /* Program header table entry size */&lt;br /&gt;  Elf32_Half    e_phnum;                /* Program header table entry count */&lt;br /&gt;  Elf32_Half    e_shentsize;            /* Section header table entry size */&lt;br /&gt;  Elf32_Half    e_shnum;                /* Section header table entry count */&lt;br /&gt;  Elf32_Half    e_shstrndx;             /* Section header string table index */&lt;br /&gt;} Elf32_Ehdr;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Sizes for ELF32_* (in bytes):&lt;br /&gt;&lt;br /&gt;Word: 4&lt;br /&gt;Half: 2&lt;br /&gt;Off:  4&lt;br /&gt;Addr: 4&lt;br /&gt;&lt;br /&gt;Looking at a regular binary like ls for example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;$ dd if=/bin/ls bs=52 count=1|xxd&lt;br /&gt;1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;52 bytes (52 B) copied, 3.6108e-05 s, 1.4 MB/s&lt;br /&gt;0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............&lt;br /&gt;0000010: 0200 0300 0100 0000 0099 0408 3400 0000  ............4...&lt;br /&gt;0000020: ec7f 0100 0000 0000 3400 2000 0800 2800  ........4. ...(.&lt;br /&gt;0000030: 2000 1f00                                ...&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;I'm using the &lt;a href="http://www.x86.org/ftp/manuals/tools/elf.pdf"&gt;ELF manual&lt;/a&gt; to analyze this. &lt;br /&gt;&lt;br /&gt;The first line (16 bytes) is the (e_ident) value which consists of:&lt;br /&gt;&lt;br /&gt;The ``magic'' value for the first four characters - 7f45 4c46&lt;br /&gt;The file class (EI_CLASS) - 0x1 (ELF32CLASS)&lt;br /&gt;Data encoding (EI_DATA) - 0x1 (ELFDATA2LSB) little endian&lt;br /&gt;File version (EI_VERSION) - 0x1 current&lt;br /&gt;Start of padded bytes (EI_PAD)&lt;br /&gt;&lt;br /&gt;On the second line (e_type) 0x2 tells us it is an executable file&lt;br /&gt;(e_machine) value 0x3 tells us that this was compiled on Intel Architecture&lt;br /&gt;(e_version) value 0x1 tells us it is current&lt;br /&gt;(e_entry) virtual address to which to control is given is  0x8049900&lt;br /&gt;(e_phoff) Program headers start at offset 0x34&lt;br /&gt;&lt;br /&gt;On the third line 0x17fec is the section header offset (e_shoff)&lt;br /&gt;(e_flags) value 0x0 tells us that no flags are set&lt;br /&gt;(e_ehsize) value of 0x34 tells that the header is of size 52 bytes decimal&lt;br /&gt;(e_phentsize) value of 0x20 tells that one entry in the program header table size is 32 bytes&lt;br /&gt;(e_phnum) value of 0x8 tells us the number of entries in the program header table is 8 &lt;br /&gt;(e_shentsize) value of 0x28 tells us the size of one entry in the section header table is 40 bytes&lt;br /&gt;&lt;br /&gt;On the fourth line&lt;br /&gt;(e_shnum) value of 0x20 tells us that number of entries in the section header table is 32&lt;br /&gt;(e_shstrndx) value of 0x1f holds the section header table index of the entry associated with the section name string table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;So what does /proc/kcore look like?&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;p class="code2"&gt;&lt;br /&gt;# dd if=/proc/kcore bs=52 count=1|xxd&lt;br /&gt;1+0 records in&lt;br /&gt;1+0 records out&lt;br /&gt;52 bytes (52 B) copied, 3.9321e-05 s, 1.3 MB/s&lt;br /&gt;0000000: 7f45 4c46 0101 0100 0000 0000 0000 0000  .ELF............&lt;br /&gt;0000010: 0400 0300 0100 0000 0000 0000 3400 0000  ............4...&lt;br /&gt;0000020: 0000 0000 0000 0000 3400 2000 0300 0000  ........4. .....&lt;br /&gt;0000030: 0000 0000                                ....&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The first line is the same as above.&lt;br /&gt;&lt;br /&gt;The second line:&lt;br /&gt;&lt;br /&gt;(e_type) 0x4 tells us it is a core file (ET_CORE) *&lt;br /&gt;(e_machine) value 0x3 tells us that this was compiled on Intel Architecture&lt;br /&gt;(e_version) value 0x1 tells us it is current&lt;br /&gt;(e_entry) virtual address to which to control is given is  0x0&lt;br /&gt;(e_phoff) program headers start at offset 0x34&lt;br /&gt;&lt;br /&gt;* this is useful to know if we are dealing with a core file...&lt;br /&gt;&lt;br /&gt;In the third line:&lt;br /&gt;&lt;br /&gt;(e_shoff) value is 0x0 letting us know there is no section header offset&lt;br /&gt;(e_flags) value 0x0 tells us that no flags are set&lt;br /&gt;(e_ehsize) value of 0x34 tells that the elf header is of size 52 bytes decimal&lt;br /&gt;(e_phentsize) value of 0x20 tells that one entry in the program header table size is 32 bytes&lt;br /&gt;(e_phnum) value of 0x3 tells us the number of entries in the program header table is 3 &lt;br /&gt;(e_shentsize) value of 0x0 tells us that there is no section header&lt;br /&gt;&lt;br /&gt;The fourth line values are all 0x0&lt;br /&gt;&lt;br /&gt;To make your life easier &lt;a href="http://venus.cs.qc.edu/~jlevy/code/elf.c"&gt;here is a C program&lt;/a&gt; that will extract all of that information for you :-)  You must be root to run it.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Note: I know I could have done this a bit more elegantly, but &lt;a href="http://www.faqs.org/faqs/graphics/fileformats-faq/part4/section-5.html"&gt;decided against that...&lt;/a&gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8899947837377122977?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8899947837377122977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8899947837377122977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8899947837377122977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8899947837377122977'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/08/kcore.html' title='ELF headers: executable vs /proc/kcore'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-6513744641415217928</id><published>2008-08-11T19:08:00.003-04:00</published><updated>2008-08-13T10:16:04.219-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Network Distance Script</title><content type='html'>I have decided to release some more code.  I'm not claiming any of this is good, but it has served a purpose either personally or in the classroom at some point.  The last item added is a &lt;a href="http://venus.cs.qc.edu/~jlevy/code/distance.pl"&gt;distance perl script&lt;/a&gt; to measure &lt;a href="http://en.wikipedia.org/wiki/Levenshtein_distance"&gt;Levenshtein distance&lt;/a&gt; of two pcap files.  &lt;br /&gt;&lt;br /&gt;I wrote this for some experiments with malware some time back.  I figured I should share it in case it is of use to someone before I misplace it :-)  More details are included in the script itself.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-6513744641415217928?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/6513744641415217928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=6513744641415217928' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6513744641415217928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/6513744641415217928'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/08/network-distance-script.html' title='Network Distance Script'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-500218310341127066</id><published>2008-07-29T09:32:00.017-04:00</published><updated>2008-12-10T21:42:24.278-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Cuil Not So Cool</title><content type='html'>So after &lt;a href="http://online.wsj.com/article/SB121721408704288951.html"&gt;reading about&lt;/a&gt; the new search engine called &lt;a href="http://www.cuil.com/"&gt;Cuil&lt;/a&gt;, I couldn't wait to try it out.  I didn't realize it had gone live until after &lt;a href="http://www.alleyinsider.com/2008/7/google-wannabe-cuil-worst-launch-ever"&gt;reading&lt;/a&gt; &lt;a href="http://www.readwriteweb.com/archives/cuil_good_but_not_good_enough.php"&gt;about&lt;/a&gt; &lt;a href="http://www.networkworld.com/community/node/30389"&gt;how&lt;/a&gt; &lt;a href="http://blogs.zdnet.com/Google/?p=1104"&gt;much&lt;/a&gt; &lt;a href="http://www.247wallst.com/2008/07/cuil-the-worst.html"&gt;it&lt;/a&gt; &lt;a href="http://www.portfolio.com/views/blogs/the-tech-observer/2008/07/28/cuil-is-not-a-story-but-26-million-on-marketing-might-be-one"&gt;failed&lt;/a&gt;.  Most people complained about not being able to pronounce ``Cuil'' in spite of lots of publicity that it is pronounced ``Cool'' so maybe some people didn't bother to read.  There were also disputes about what, if anything, Cuil returned during searching.  So I decided to give it a try myself.&lt;br /&gt;&lt;br /&gt;I decided to search for &lt;a href="http://www.cuil.com/search?q=penguin"&gt;penguin&lt;/a&gt;.  According to the right hand side of Cuil, there are 66,229,028 results for penguin.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SI8lYBuTWCI/AAAAAAAAANw/sgsdw6dqfoU/s1600-h/penguin+-+Cuil.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SI8lYBuTWCI/AAAAAAAAANw/sgsdw6dqfoU/s400/penguin+-+Cuil.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5228438787110164514" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;First of all, the website design is really nice.  I know that doesn't matter as much, but I had to say that :-)  I also like the columns, the short snippets and the pictures to the side.  I have to agree with Cuil that &lt;a href="http://www.cuil.com/info/faqs/"&gt;showing a picture can help the user determine relevance (FAQ #7)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;There's even some tabs and a pull down menu across the top of the search to help narrow down your interest, such as ``Penguin Books'', ``Penguin Classics'', ``Penguin Putnam'', ``Linux Penguin'' etc..  Ok, that's nice.&lt;br /&gt;&lt;br /&gt;Now for the vanity searches.  First off, I'm not some conceited schmuck who likes to google herself all the time, but I know what should pop up when my name is entered.  &lt;a href="http://www.cuil.com/search?q=jamie+levy"&gt;Here it goes&lt;/a&gt;:  there are 3,619,749 results for the search term ``jamie levy'' (without quotes).&lt;br /&gt;&lt;br /&gt;Ok, so something of mine is not on the first page like on Google.  Big deal.  There's something of mine on the second page:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/jamie.levy/SI8tLfOlzDI/AAAAAAAAAOE/UpK76o0uAx4/s1600/1.png"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SI8tLfOlzDI/AAAAAAAAAOE/UpK76o0uAx4/s400/1.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It's a tutorial of mine.  It's kind of old, and it's kind of buried in my site...  I thought I would at least see the index of my site if anything...  Also, I'm not really sure what that picture is next to my page.  I know &lt;span style="font-weight:bold;"&gt;I&lt;/span&gt; didn't put it there.&lt;br /&gt;&lt;br /&gt;Ok, on the third page I see the same tutorial above as well as another OLD tuturial of mine that I forgot to take offline after I rewrote it.  So that's bizarre, why would the first resulting tutorial repeat to the second page?  What is that picture next to it?  How did they find the old Unix tutorial?:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/jamie.levy/SI9ozbSjYwI/AAAAAAAAAOg/mXmTknJwjKo/s1600/2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://lh4.ggpht.com/jamie.levy/SI9ozbSjYwI/AAAAAAAAAOg/mXmTknJwjKo/s400/2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5228513094501094610" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This seems to be a pattern, however as I found more repeats of these results and finally my index page on the fourth page of results.  However, there is finally a correct picture next to the wireshark tutorial:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/jamie.levy/SI9prIKWkCI/AAAAAAAAAOw/GfqhQ_Dsreg/s1600/3.png"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SI9prIKWkCI/AAAAAAAAAOw/GfqhQ_Dsreg/s400/3.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After looking just little bit more I found another old course page of mine, which repeats as well:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/jamie.levy/SI9p9tN6wCI/AAAAAAAAAO4/1yEBUTXBR54/s1600/4.png"&gt;&lt;img src="http://lh4.ggpht.com/jamie.levy/SI9p9tN6wCI/AAAAAAAAAO4/1yEBUTXBR54/s400/4.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, so what happens if I decide to narrow down my search and look for &lt;a href="http://www.cuil.com/search?q=jamie+levy+queens+college"&gt;myself at the place where I work&lt;/a&gt;?  Cuil only shows four results (though it claims there are 43,752 results), three of which we have already seen above.  Look next to the Unix tutorial, do you find anything curious there?  I did:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/jamie.levy/SI9uHqQoK7I/AAAAAAAAAPY/4gz2607qduo/s1600/Screenshot-jamie%20levy%20queens%20college%20-%20Cuil%20-%20Mozilla%20Firefox.png"&gt;&lt;img src="http://lh6.ggpht.com/jamie.levy/SI9uHqQoK7I/AAAAAAAAAPY/4gz2607qduo/s400/Screenshot-jamie%20levy%20queens%20college%20-%20Cuil%20-%20Mozilla%20Firefox.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Who is that man in the picture?  He's so mysterious.... I know &lt;span style="font-weight:bold;"&gt;&lt;span style="font-style:italic;"&gt;I&lt;/span&gt;&lt;/span&gt; didn't put him there!  Here's a closeup:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/jamie.levy/SI9uHpD6UdI/AAAAAAAAAPg/gTlGLSWQWgo/s400/imgsrv.png"&gt;&lt;img src="http://lh4.ggpht.com/jamie.levy/SI9uHpD6UdI/AAAAAAAAAPg/gTlGLSWQWgo/s288/imgsrv.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bizarre is all I can say...  Does his picture seem &lt;span style="font-style:italic;"&gt;relevant&lt;/span&gt; to Unix?  I wouldn't think so...  but it seems like some of these pictures are just random.  Also the stuff that Cuil pulls up seems as if it's from some older snapshot.  I haven't quite figured it out.&lt;br /&gt;&lt;br /&gt;Well, I won't bore you with details of other people I ``Cuil''ed, but I thought it was interesting that I couldn't find my past adviser at all when there are 815,000 pages in Google related to his name.  &lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/jamie.levy/SI9uHxkpl1I/AAAAAAAAAPo/IfVxrNIbOP0/s1600/Screenshot-bilal%20khan%20-%20Cuil.png"&gt;&lt;img src="http://lh4.ggpht.com/jamie.levy/SI9uHxkpl1I/AAAAAAAAAPo/IfVxrNIbOP0/s400/Screenshot-bilal%20khan%20-%20Cuil.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I guess he isn't ``Cuil'' enough...  :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-500218310341127066?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/500218310341127066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=500218310341127066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/500218310341127066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/500218310341127066'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/cuil-not-so-cool.html' title='Cuil Not So Cool'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_55uSCYxbQ8M/SI8lYBuTWCI/AAAAAAAAANw/sgsdw6dqfoU/s72-c/penguin+-+Cuil.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1653622839067669704</id><published>2008-07-21T18:22:00.013-04:00</published><updated>2008-07-31T11:37:06.012-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><category scheme='http://www.blogger.com/atom/ns#' term='hope'/><title type='text'>The Last Hope (afterwards)</title><content type='html'>Man, &lt;a href="http://www.thelasthope.org/"&gt;The Last Hope&lt;/a&gt; was a blast.  I'm still trying to get over it ending...&lt;br /&gt;&lt;br /&gt;I went with my good friend Matthew.  I saw several talks of interest.  The first talk I went to was ``Botnet Research, Mitigation and the Law.''  It was really interesting to hear from a lawyer as to what can and cannot be done when investigating these botnets.  I have to find his email, however, because there were some more questions I wanted to ask him about this.&lt;br /&gt;&lt;br /&gt;The next talk I went to was &lt;a href="http://www.youtube.com/watch?v=x0HfHmRN9x4"&gt;Kevin Williams Death Star Threat Modeling&lt;/a&gt; talk.  It was really good and really funny.  It was funny to see security models explained in a Star Wars way...&lt;br /&gt;&lt;br /&gt;I really enjoyed the presentation by &lt;a href="http://citizenengineer.com/"&gt;Lady Ada and pt&lt;/a&gt;.  It was really interesting to see all of the things they could do with hardware.  I was inspired :-)  It was funny that they had their &lt;a href="http://www.youtube.com/watch?v=s5djfxpjWqU"&gt;phone jammer&lt;/a&gt; there to block cell calls during the talk.  I was kinda surprised how many cell phones went off during talks prior to that.&lt;br /&gt;&lt;br /&gt;I also saw the ``Hacking Cool Things with Microcontrollers'' talk by Mitch Altman.  It was interesting.  He seems like an interesting guy with his cool colored hair :-)  I liked his TV-be-gone product.&lt;br /&gt;&lt;br /&gt;After a nice break, Matthew and I went to see the &lt;a href="http://citp.princeton.edu/memory/"&gt;Cold Boot Memory Forensics&lt;/a&gt; talk.  During the talk, the crowd was informed that &lt;a href="http://citp.princeton.edu/memory/code/"&gt;some code was released as well&lt;/a&gt;.  This was a very interesting talk.  I'll have more to say on this one later...&lt;br /&gt;&lt;br /&gt;The last talk I went to the first night was the Hacking FOIA talk.  I missed some good talks that night, but there was not much I could do.  I just couldn't stay.&lt;br /&gt;&lt;br /&gt;Alright, I'm not going to list all of the other talks I went to, but a few.  As for the pics, forgive me, I didn't have my usual camera with me so these didn't turn out as well...&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630008.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630008.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.stevenlevy.com/"&gt;Steven Levy&lt;/a&gt; talk was quite funny.  I liked the part where he talked about interviewing Steve Jobs.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630018.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630018.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://news.cnet.com/8301-1009_3-9995207-83.html"&gt;Steven Rambam's talk&lt;/a&gt; was LONG... 3 hours scheduled... and it went into overtime with the questions... and a lot of it was already covered in his &lt;a href="http://video.google.com/videoplay?docid=-383709537384528624&amp;hl=en"&gt;other talk&lt;/a&gt;.  Still, I had a good time.  There's something about his assertiveness that I can't help but appreciate.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630022.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630022.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I got to meet some interesting people like Bernie S:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630020.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630020.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;and Emmanuel Goldstein:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630009-1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/43630009-1.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(who looks as if he's plotting things here...)&lt;br /&gt;&lt;br /&gt;I must say, I really enjoyed the &lt;a href="http://news.cnet.com/8301-1009_3-9995253-83.html"&gt;social engineering panel&lt;/a&gt;.  It was really funny, and useful to prove just how much information you can get and how some people are a little too trusting.  Maybe that shows that some people are still basically good... I'm not sure.&lt;br /&gt;&lt;br /&gt;Even though I had planned to stay for Kevin Mitnick's talk, it was really late and things had been pushed back by almost an hour.  I just couldn't stay any longer with DH at home alone...&lt;br /&gt;&lt;br /&gt;On the last day, I have to say that the most interesting talks I went to were the two Pen Testing talks: (Pen testing using LiveCds by Thomas Wilhelm and Pen testing using Firefox by DaKahuna and ThePrez98), Adam Savage and Postal Hacking.  All but the Postal Hacking talk were packed full.  (i'll write more on this later...)&lt;br /&gt;&lt;br /&gt;Edit: You can find torrents of some of the talks &lt;a href="http://hopetracker.donthax.me/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1653622839067669704?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1653622839067669704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1653622839067669704' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1653622839067669704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1653622839067669704'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/last-hope_21.html' title='The Last Hope (afterwards)'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://i158.photobucket.com/albums/t115/gleeda/The%20Last%20Hope/th_43630008.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7579969119443430880</id><published>2008-07-15T17:10:00.006-04:00</published><updated>2008-07-15T17:48:44.027-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='PyFlag'/><category scheme='http://www.blogger.com/atom/ns#' term='volatility'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Linux Memory Forensics</title><content type='html'>I knew &lt;a href="http://volatilesystems.blogspot.com/2008/07/linux-memory-analysis-one-of-major.html"&gt;something good&lt;/a&gt; would come out of the &lt;a href="http://www.dfrws.org/2008/challenge/index.shtml"&gt;DFRWS forensic challenge&lt;/a&gt;.  This is really great.  I just had to say something about it :-)&lt;br /&gt;&lt;br /&gt;I would have liked to have worked on the challenge myself, but with a full-time teaching schedule and other projects, just couldn't fit in the time.  I was anxious to see what would happen this year, however.  &lt;br /&gt;&lt;br /&gt;Good job, guys :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7579969119443430880?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7579969119443430880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7579969119443430880' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7579969119443430880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7579969119443430880'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/linux-memory-forensics.html' title='Linux Memory Forensics'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-4650741324780730919</id><published>2008-07-14T10:23:00.009-04:00</published><updated>2008-12-10T21:42:24.325-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='PTK'/><title type='text'>PTK 0.2 Released</title><content type='html'>&lt;a href="http://iritaly.blogspot.com/2008/07/rilasciato-ptk-beta-02.html"&gt;PTK labs has released beta 0.2&lt;/a&gt;. Improvements include searching for strings in slackspace and a new installer.  Now installation will be somewhat easier.  You simply have to unzip the files into your apache owned folder (var/www/, /var/www/htdocs, /var/www/html etc).  Make sure the permissions are set correctly.  Open your browser and go to &lt;a href="http://127.0.0.1/ptk/install.php"&gt;http://127.0.0.1/ptk/install.php&lt;/a&gt;  You will see the &lt;a href="http://2.bp.blogspot.com/_V6L_rJHmTkM/SHtVbYuL9eI/AAAAAAAABTw/Z98J3nvIrTo/s1600-h/ptk_web_install.png"&gt;installation page&lt;/a&gt; and can just fill it out as needed.&lt;br /&gt;&lt;br /&gt;Edit 10/18: I've decided to add a &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/install_diff.txt"&gt;patch to address the comment below&lt;/a&gt;.&lt;br /&gt;Apply it as follows:&lt;br /&gt;&lt;pre&gt;&lt;p class="code"&gt;&lt;br /&gt;patch -b install.php install_diff.txt&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-4650741324780730919?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/4650741324780730919/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=4650741324780730919' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4650741324780730919'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/4650741324780730919'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/ptk-02-released.html' title='PTK 0.2 Released'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-5259329011877970115</id><published>2008-07-11T19:19:00.002-04:00</published><updated>2011-04-04T14:20:41.936-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fun stuff'/><title type='text'>Maze Generator</title><content type='html'>I was looking for some files I had backed up from my old laptop when I came across a disk that contained old schoolwork.  It was kind of fun looking at these projects I did as an undergraduate.  So I decided to release them online.  One project that was particularly fun was a &lt;a href="http://venus.cs.qc.edu/~jlevy/code/maze/"&gt;maze generator&lt;/a&gt; using disjoint sets.  It creates a graphical presentation of the maze and also prints it out to a text file of the user's choice.&lt;br /&gt;&lt;br /&gt;I thought it might be fun for someone to play with.... but if not, no harm done.&lt;br /&gt;&lt;br /&gt;&lt;font color="red"&gt;An update can be found &lt;a href="http://gleeda.blogspot.com/2011/04/ot-maze-generator-update.html"&gt;here&lt;/a&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-5259329011877970115?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/5259329011877970115/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=5259329011877970115' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5259329011877970115'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/5259329011877970115'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/maze-generator.html' title='Maze Generator'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8167055838727234674</id><published>2008-07-09T15:33:00.001-04:00</published><updated>2008-07-09T23:38:21.474-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Windows DNS bug fix can impair firewalls</title><content type='html'>It all started after downloading Microsoft's latest updates.  Though &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS08-037.mspx"&gt;this is a valid fix&lt;/a&gt;, if you running a firewall like Zonealarm you &lt;a href="http://www.betanews.com/article/Windows_DNS_bug_fix_can_impair_firewalls_including_ZoneAlarm/1215617981"&gt;may not be able to connect to the internet after the latest update&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;I found out the hard way this morning.  It all started with phone calls from a couple of friends complaining about network connections.  At first I thought it might just be an ISP issue, but then DH installed the latest updates on his computer.  After he rebooted all connectivity was lost.  I still had internet on my Linux box, so it prompted me to call some people back and find out if they had recently updated.  Sure enough they had.  A brief news search turned up the answer.  Hope this doesn't affect too many people, but I think it will....&lt;br /&gt;&lt;br /&gt;I don't think that you should uninstall the MS hotfix like some are saying, but you might have to use another firewall product or &lt;a href="http://download.zonealarm.com/bin/free/pressReleases/2008/LossOfInternetAccessIssue.html"&gt;use a workaround&lt;/a&gt; to survive.  Perhaps it's time to move on to something else...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8167055838727234674?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8167055838727234674/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8167055838727234674' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8167055838727234674'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8167055838727234674'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/windows-dns-bug-fix-can-impair_09.html' title='Windows DNS bug fix can impair firewalls'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7464533270637925202</id><published>2008-07-09T10:05:00.000-04:00</published><updated>2008-07-09T10:18:20.397-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>The Last Hope</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.thelasthope.org/"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 125px;" src="http://www.thelasthope.org/125_125_tlh.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.thelasthope.org/"&gt;The Last Hope (2600)&lt;/a&gt; is coming soon - July 18-20.  It costs $75 for three days and is hosted at the Hotel Pennsylvania.  &lt;br /&gt;&lt;br /&gt;I'm excited to go.  They have a &lt;a href="http://www.thelasthope.org/matrix/"&gt;lot of interesting talks&lt;/a&gt; this year.  The &lt;a href="http://citp.princeton.edu/memory/"&gt;Cold Boot&lt;/a&gt; talk should be interesting.  Botnets, Law issues, Voip, baggage cams, RFIDs.... well there are just TOO many interesting things to write about here :-)  I can't wait.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7464533270637925202?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7464533270637925202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7464533270637925202' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7464533270637925202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7464533270637925202'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/last-hope.html' title='The Last Hope'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7276456253750205472</id><published>2008-07-06T15:46:00.001-04:00</published><updated>2008-12-10T21:42:27.098-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='PTK'/><title type='text'>PTK on Fedora 8</title><content type='html'>Wow, this was a painful install...  &lt;del&gt;and I'm not even sure if it's completely over :-/ Though I haven't been able to get this working completely with all of my practice images,&lt;/del&gt; &lt;a href="http://ptk.dflabs.com/"&gt;PTK&lt;/a&gt; looks somewhat promising. &lt;b&gt;Update: PTK works see update at the end.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Anyway, before you get started, you should make sure to install all of the packages you need:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;mysql&lt;br /&gt;mysql-server&lt;br /&gt;php&lt;br /&gt;php-mysql&lt;br /&gt;php-mbstring&lt;br /&gt;httpd&lt;br /&gt;&lt;a href="http://www.sleuthkit.org/sleuthkit/"&gt;Sleuthkit&lt;/a&gt;&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;In addition, according to the &lt;a href="http://sourceforge.net/forum/forum.php?thread_id=2066802&amp;forum_id=800995"&gt;help forums&lt;/a&gt;, you also need the following libraries for Sleuthkit (I must have had a previous version because I haven't had to do this before):&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;afflib&lt;br /&gt;libewf&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;The following package is not *required* but can help you a lot if you are not used to command line management of mysql databases:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;phpMyAdmin&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;With all of the above packages, just do a ``yum install''.  After you start MySql and httpd you should be set.  I have &lt;a href="http://gleeda.blogspot.com/2008/06/pyflag-installation-on-fedora-8.html"&gt;already gone over how to set up MySQL&lt;/a&gt; and will not repeat it here.  If you want to make sure that everything has installed correctly, you can see the php information by created a file called info.php in the /var/log/www/html directory that contains:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;phpinfo();&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;To see the information, open a browser and go to &lt;a href="http://127.0.0.1/info.php"&gt;http://127.0.0.1/info.php&lt;/a&gt;.  Scroll down until you see the following:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SHFJbLMrX4I/AAAAAAAAABU/nxYM0HEnKJE/s1600-h/mysql1.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SHFJbLMrX4I/AAAAAAAAABU/nxYM0HEnKJE/s200/mysql1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220034174310375298" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHFJmkSPoEI/AAAAAAAAABc/sLNB6P8q7AU/s1600-h/mbstring.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHFJmkSPoEI/AAAAAAAAABc/sLNB6P8q7AU/s200/mbstring.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220034370023170114" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now, download the &lt;a href="http://ptk.dflabs.com/download.html"&gt;PTK sourcecode&lt;/a&gt;.  After you extract it, you should have a folder that contains a license file, Setup file, PTK.sql file and another tarball.  Make sure that the &lt;a href="http://ptk.dflabs.com/installation_guide.html"&gt;md5 hash values are correct&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ cat md5sums.txt&lt;br /&gt;76b10e2f1c8bfd25a7128e1ca4f3009a  ptk-beta_0.1.tar.gz&lt;br /&gt;15d83f58161f816db660c65cf12c717e  PTK.sql&lt;br /&gt;e7cebc317dda69f2df81856118d924f3  Setup&lt;br /&gt;$ md5sum -c md5sums.txt&lt;br /&gt;ptk-beta_0.1.tar.gz: OK&lt;br /&gt;PTK.sql: OK&lt;br /&gt;Setup: OK&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I tried just using the Setup file and failed miserably.  I would get the nice welcome screen, but couldn't log in to PTK.  Then I tried the manual install shown in the &lt;a href="http://ptk.dflabs.com/installation_guide.html"&gt;tutorial&lt;/a&gt;... It also didn't work.  Things were getting installed in the wrong directories, even after I had told it where to install correctly using the original Setup script.  Also, the Setup script looks for files called md5 and sha1, which are called md5sum and sha1sum on my machine...  &lt;br /&gt;&lt;br /&gt;So after analyzing the Setup file, I wrote a patch and finally got PTK working which you can find &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/fedora-patch.txt"&gt;here&lt;/a&gt;.  To apply the patch type:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;patch -b Setup fedora-patch.txt&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;This will make a backup of the Setup file in case things go awry.  &lt;br /&gt;&lt;br /&gt;Make sure that you pay attention to output of the Setup script and check to see if there are any errors.  If things go well, you should see the following screens:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFLdEDWoJI/AAAAAAAAABk/0cHeB4WoOBU/s1600-h/ptk1.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFLdEDWoJI/AAAAAAAAABk/0cHeB4WoOBU/s200/ptk1.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220036405775212690" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHFLnejMcFI/AAAAAAAAABs/-wLKcoOCen4/s1600-h/ptk2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHFLnejMcFI/AAAAAAAAABs/-wLKcoOCen4/s200/ptk2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220036584686776402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFL_YydRXI/AAAAAAAAAB0/HVf9fQsVXSU/s1600-h/ptk3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFL_YydRXI/AAAAAAAAAB0/HVf9fQsVXSU/s200/ptk3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220036995457041778" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If everything goes ok, you should have PTK installed in your /var/www/html/ptk directory. You can start it by going to: &lt;a href="http://127.0.0.1/ptk"&gt;http://127.0.0.1/ptk&lt;/a&gt;.  You have to log in using the ``admin'' account, and hopefully you don't forget your password you used for this!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFM0F0SB0I/AAAAAAAAAB8/4c0g0guVfoE/s1600-h/ptk4.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHFM0F0SB0I/AAAAAAAAAB8/4c0g0guVfoE/s200/ptk4.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220037900897486658" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Issues &lt;b&gt;&lt;font color="red"&gt;All but the last issue are resolved:&lt;/font&gt;&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;I am not yet sure of the cause of all of these issues, but I thought I would list things here.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;fatv images do not seem to be recognized and I am unable to browse the file system at all.&lt;/li&gt;&lt;li&gt;I am unable to get an initial correct hash of the image without running the browser as root&lt;/li&gt;&lt;li&gt;After the initial hash is taken, verification yields an incorrect hash (see pic below) and I suspect it is hashing the symbolic link and not the image itself.  The top md5sum hash is correct, the second verification one is not.&lt;/li&gt;&lt;li&gt;If you have SELinux working, you will have to use workarounds to let this program work (which is an SELinux thing, not a PTK thing exactly)&lt;/li&gt;&lt;li&gt;When you search for images, you are initially directed to the /var/log/www/ptk/images folder, which is fine.  If you add a disk image there, you do not see it.  You have to go back 2 directories and then forward again before the disk image appears&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_55uSCYxbQ8M/SHFO0ImIauI/AAAAAAAAACM/mw4eCopafcA/s1600-h/ptkhash.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_55uSCYxbQ8M/SHFO0ImIauI/AAAAAAAAACM/mw4eCopafcA/s200/ptkhash.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220040100666698466" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;font size="4"&gt;Edit: PTK Works&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;As I wrote previously, I managed to get PTK installed on Fedora 8.  I had a few issues with seeing the images at the end, however.  It was a permissions problem.  I can't believe I missed that.  But it works and it seems fun.  So if you are installing PTK on Fedora, follow the earlier instructions and &lt;a href="http://venus.cs.qc.edu/~jlevy/misc/fedora-patch.txt"&gt;use the patch I made&lt;/a&gt; and then check the permissions of the ptk folder to make sure that it is owned by &lt;b&gt;apache&lt;/b&gt; (or whatever user you have as your webserver).  If it isn't then do a recursive chown:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# chown -R apache.apache /var/www/html/ptk&lt;br /&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHN9htU2UMI/AAAAAAAAADQ/Vm1drgAeOrI/s1600-h/ptk-good.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_55uSCYxbQ8M/SHN9htU2UMI/AAAAAAAAADQ/Vm1drgAeOrI/s400/ptk-good.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220654411108733122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHOAn7Hg55I/AAAAAAAAADg/T7-52cvqV08/s1600-h/ptk-good3.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_55uSCYxbQ8M/SHOAn7Hg55I/AAAAAAAAADg/T7-52cvqV08/s400/ptk-good3.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220657816424998802" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_55uSCYxbQ8M/SHN9rUOMRQI/AAAAAAAAADY/wx46xkUCPtg/s1600-h/ptk-good2.png"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_55uSCYxbQ8M/SHN9rUOMRQI/AAAAAAAAADY/wx46xkUCPtg/s400/ptk-good2.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5220654576168617218" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have only a couple of complaints: The folders are kind of hard to see on the left hand side, but there may be some way to remedy that.  Also, I'm still having the problem of having to go back two folders and then forwards when importing an image, but I guess it's not that bad...  Still, PTK has some nice options, like the gallery view, and the interface is nice.  So far I like it :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7276456253750205472?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7276456253750205472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7276456253750205472' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7276456253750205472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7276456253750205472'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/ptk-on-fedora-8.html' title='PTK on Fedora 8'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_55uSCYxbQ8M/SHFJbLMrX4I/AAAAAAAAABU/nxYM0HEnKJE/s72-c/mysql1.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-7200983573795220735</id><published>2008-07-02T15:49:00.000-04:00</published><updated>2008-07-08T14:31:23.766-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>MDD</title><content type='html'>I'm finally writing about trying &lt;a href="http://sourceforge.net/projects/mdd" target="_blank"&gt;MDD&lt;/a&gt; on XP SP 3:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i187.photobucket.com/albums/x231/levyQC/mdd-working_XP.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i187.photobucket.com/albums/x231/levyQC/mdd-working_XP.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And Vista:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i187.photobucket.com/albums/x231/levyQC/mdd-working_Vista.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i187.photobucket.com/albums/x231/levyQC/mdd-working_Vista.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://i187.photobucket.com/albums/x231/levyQC/mdd-working2_Vista.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px;" src="http://i187.photobucket.com/albums/x231/levyQC/mdd-working2_Vista.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It works nicely and in the case of dumping XP memory, you can do analysis with &lt;a href="https://volatilesystems.com/default/volatility" target="_blank"&gt;Volatility&lt;/a&gt; afterwards.  (Note: Make sure you are running the cmd as Admin.)  Another nice feature is that it gives you an md5 hash of the memory image after it finishes dumping.&lt;br /&gt;&lt;br /&gt;I also tried &lt;a href="http://win32dd.msuiche.net/" target="_blank"&gt;win32dd&lt;/a&gt; on Vista.  It worked fine as well.  (I forgot to take a screen shot but will get one soon).  I was surprised at first because it seemed to work much faster than MDD, since it gave me the all clear and appeared to have finished.  I then checked the size of the dump and it was too small, so at first I thought it had failed.  Later I checked the dump and it was 2 GB as needed, so it did work, but must have finished dumping in the background.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-7200983573795220735?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/7200983573795220735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=7200983573795220735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7200983573795220735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/7200983573795220735'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/mdd.html' title='MDD'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3732381688494633878</id><published>2008-07-02T15:39:00.000-04:00</published><updated>2008-07-02T15:40:29.963-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='docs'/><category scheme='http://www.blogger.com/atom/ns#' term='microsoft'/><title type='text'>Microsoft Office Binary File Format Documents</title><content type='html'>&lt;a href="http://msdn.microsoft.com/en-us/library/cc313105.aspx" target="_blank"&gt;Microsoft Office Binary File Format Documents&lt;/a&gt; were recently released.  Should be useful to someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3732381688494633878?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3732381688494633878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3732381688494633878' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3732381688494633878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3732381688494633878'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/07/microsoft-office-binary-file-format.html' title='Microsoft Office Binary File Format Documents'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-8557226468265423415</id><published>2008-06-25T18:23:00.003-04:00</published><updated>2008-09-16T21:34:18.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PyFlag'/><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><title type='text'>PyFlag Installation on Fedora 8</title><content type='html'>So I finally decided to be brave and install &lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/PyFlag" target="_blank"&gt;PyFlag&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;First you have to get the source code (&lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/Download" target="_blank"&gt;more info on wiki&lt;/a&gt; or &lt;a href="http://pyflag.sourceforge.net/Documentation/tutorials/howtos/compile.html" target="_blank"&gt;compile tutorial&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# yum install darcs&lt;br /&gt;$ darcs get http://www.pyflag.net/pyflag&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After this, you will have a folder called pyflag.  If you look at the &lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/HowToInstall" target="_blank"&gt;install instructions&lt;/a&gt; from the PyFlag site, you can see that there are several packages that must be installed before installing PyFlag.  Most of these can be found in yum repos, but under different names (items in parenthesis are the debian package names):&lt;br /&gt; &lt;br /&gt;python-dateutil&lt;br /&gt;clamav&lt;br /&gt;clamav-server (clamav-daemon)&lt;br /&gt;mysql&lt;br /&gt;mysql-devel&lt;br /&gt;mysql-server&lt;br /&gt;file-devel (libmagic-dev)&lt;br /&gt;pexpect (python-pexpect)&lt;br /&gt;python-imaging&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/mysql-python" target="_blank"&gt;python-mysqldb&lt;/a&gt; (manual install)&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# yum install python-dateutil clamav clamav-server mysql mysql-devel mysql-server file-devel pexpect python-imaging&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After installing all of these packages, you must initialize mysql:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# /sbin/chkconfig mysqld on&lt;br /&gt;# /sbin/service mysqld start&lt;br /&gt;# mysqladmin -u root password 'new-passwd'&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You must use quotes around the new-passwd you choose, and don't forget what it is!  &lt;br /&gt;&lt;br /&gt;You must also setup clamav-server so it will work.  Make sure you know where everything is installed, because things get funky with clamav and Fedora:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;# rpm -q --filesbypkg [packagename]&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Where [packagename] is replaced by the package(s) you installed.  I went ahead and installed all of clamav packages just to be safe.  Two files of interest are the daemon file itself and the configuration file.  My locations are:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;/usr/sbin/clamd&lt;br /&gt;/usr/share/doc/clamav-server-0.92.1/clamd.conf&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;This is annoying, because when you run the clamd daemon, it says it can't find the clamd.conf file in the appropriate place: /etc/clamd.conf  So you can add a symbolic link to the real location:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;ln -s /usr/share/doc/clamav-server-0.92.1/clamd.conf /etc/clamd.conf&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;You'll have to figure out how to set up your own clamd.conf file.&lt;br /&gt;&lt;br /&gt;Ok, at this point you are able to install PyFlag:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ cd pyflag&lt;br /&gt;$ sh autogen.sh&lt;br /&gt;$ ./configure&lt;br /&gt;$ make&lt;br /&gt;$ su -&lt;br /&gt;# make install&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Make sure that you have no errors when running configure, make and make install.  Now, before running PyFlag, you must set up the configuration file to point to the &lt;tt&gt;mysql.sock&lt;/tt&gt; file.  Fedora places the &lt;tt&gt;mysql.sock&lt;/tt&gt; file in a different location than the default (/var/run/mysqld/mysqld.sock).  So open up the configuration file using your favorite editor:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ vi ~/.pyflagrc&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Change the line that says:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;dbunixsocket=/var/run/mysqld/mysqld.sock&lt;br&gt;&lt;br&gt;&lt;/p&gt; to&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;dbunixsocket=/var/lib/mysql/mysql.sock&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;Notice that ``run'' is changed to ``lib'' and the `d' is absent from the end of mysql.  You are now set.  &lt;br /&gt;&lt;br /&gt;Also make sure that PyFlag points to the clamav socket (for example):&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;clamav_socket=/var/run/clamd.d/clamd.sock&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;If everything goes well, you can then set up PyFlag:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;$ pyflag&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Follow the instructions &lt;a href="http://www.pyflag.net/cgi-bin/moin.cgi/HowToInstall" target="_blank"&gt;on the website&lt;/a&gt; for setting up pyflag by going to http://127.0.0.1:8000.&lt;br /&gt;&lt;br /&gt;There was only one other thing I changed.  Since I already have a service listening on port 8000, I changed the port in the configuration file:&lt;br /&gt;&lt;p class="code"&gt;&lt;br /&gt;httpserver_port=7000&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;I'll have a post later after I've played around with this for a while...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-8557226468265423415?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/8557226468265423415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=8557226468265423415' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8557226468265423415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/8557226468265423415'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/06/pyflag-installation-on-fedora-8.html' title='PyFlag Installation on Fedora 8'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-1555275785592643957</id><published>2008-06-24T16:23:00.001-04:00</published><updated>2008-07-25T00:10:18.715-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='installation'/><category scheme='http://www.blogger.com/atom/ns#' term='vista'/><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><title type='text'>Gateway GM5420 Desktop: Vista to XP</title><content type='html'>I should have written this back when I converted the machine and it was still fresh.  I'll write it up as best I remember now, however.&lt;br /&gt;&lt;br /&gt;So back in November I bought a &lt;a href="http://support.gateway.com/s/PC/R/1014159/1014159nv.shtml" target="_blank"&gt;Gateway GM5420 Desktop &lt;/a&gt;.  It came with Vista, which I was more than willing to try.  It remained a Vista machine, but was barely used until May.  DH hated Vista and refused to adapt.  I wasn't really all that pleased either.  The only thing I really liked about the machine was the ATI Video card, but even then, we don't watch that much TV to keep it around just for that...  So we decided to make the machine a dual boot for Vista and XP.&lt;br /&gt;&lt;br /&gt;There was one big problem: XP doesn't support SATA drives by default.  After searching the Gateway website, it became clear that I wasn't going to find SATA drivers for XP.  There were barely any drivers for XP at all.  So after some investigation, I found the motherboard information:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;Love Valley and Stoughton Motherboard Intel(r) MQ96510J&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;After some searching around on Intel's site, I found the &lt;a href="http://downloadcenter.intel.com/filter_results.aspx?strTypes=all&amp;ProductID=2529&amp;OSFullName=Windows*+XP+Home+Edition&amp;lang=eng&amp;strOSs=45&amp;submit=Go%21#DRV" target="_blank"&gt;appropriate drivers&lt;/a&gt;.  I downloaded the Matrix Storage drivers, which resulted in the following executable: &lt;br /&gt;&lt;br /&gt;iata82_enu.exe **&lt;br /&gt;&lt;br /&gt;Now, I wanted to &lt;a href="http://www.maximumpc.com/article/How-To--Slipstream-your-XP-installation?page=0%2C0" target="_blank"&gt;Slipstream &lt;/a&gt; my installation, so I had to extract the drivers from the executable:&lt;br /&gt;&lt;br /&gt;&lt;p class="code"&gt;mkdir drivers&lt;br /&gt;iata82_enu.exe -a -p C:\drivers&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;At first I tried to Slipstream the image using the &lt;a href="http://www.maximumpc.com/article/How-To--Slipstream-your-XP-installation?page=0%2C0" target="_blank"&gt;first tutorial&lt;/a&gt;, but things didn't work out for me as expected.  I then found out about &lt;a href="http://www.softpedia.com/get/System/OS-Enhancements/nLite.shtml" target="_blank"&gt;nLite&lt;/a&gt;, which is a nice tool that allows you to add drivers, updates and create a bootable ISO.  There's information about it &lt;a href="http://news.softpedia.com/news/Install-Windows-XP-On-SATA-Without-a-Floppy-F6-47807.shtml" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://www.howtogeek.com/howto/windows/resolving-setup-did-not-find-any-hard-disk-drives-during-windows-xp-installation/" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So everything worked and XP was installed.  I had another problem, the network drivers where not included.  This was the easy part, however.  The drivers for &lt;a href="http://drivers.softpedia.com/get/NETWORK-CARD/INTEL/Intel-Pro-Network-Connections-Driver-112.shtml" target="_blank"&gt; Intel Pro Network Connections Driver 11.2 are available online&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I still had Vista on the other side, however and needed to make it dual boot.  This was no problem, &lt;a href="http://apcmag.com/how_to_dual_boot_vista_and_xp_with_vista_installed_first__the_stepbystep_guide.htm" target="_blank"&gt;there's a nice tutorial online&lt;/a&gt; that can be followed.  I just used &lt;a href="http://neosmart.net/dl.php?id=1" target="_blank"&gt;EasyBCD&lt;/a&gt; as mentioned in the article and comments and it worked.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;** Note: When I did this, actually the only download available was a &lt;a href="http://downloadcenter.intel.com/Detail_Desc.aspx?agr=N&amp;Inst=Yes&amp;ProductID=2375&amp;DwnldID=15251&amp;strOSs=44&amp;OSFullName=Windows*%20XP%20Professional&amp;lang=eng" target="_blank"&gt;Floppy drive file&lt;/a&gt;.  I then had to use &lt;a href="http://chitchat.at.infoseek.co.jp/vmware/vfd.html" target="_blank"&gt;Virtual Floppy Drive 2.1&lt;/a&gt; to extract the drivers&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-1555275785592643957?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/1555275785592643957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=1555275785592643957' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1555275785592643957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/1555275785592643957'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/06/gateway-gm5420-desktop-vista-to-xp.html' title='Gateway GM5420 Desktop: Vista to XP'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-2743469613778180745</id><published>2008-06-17T15:43:00.000-04:00</published><updated>2008-07-02T15:44:04.313-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='memory'/><title type='text'>Memory Acquisition Just Got Easier</title><content type='html'>This is for those who asked me to keep this material up, for your further studies :-)&lt;br /&gt;&lt;br /&gt;As you may remember, the traditional dd.exe method does not work on Windows 2003 sp 1 and above.  Two opensource tools have been released that get past this:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.mantech.com/msma/MDD.asp"&gt;Memory DD&lt;/a&gt;&lt;br /&gt;&lt;a href="http://win32dd.msuiche.net/"&gt;Win32dd&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;For more details check out &lt;a href="http://volatility.tumblr.com/post/38563003/open-source-memory-acquisition"&gt;Volatility's blog.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-2743469613778180745?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/2743469613778180745/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=2743469613778180745' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2743469613778180745'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/2743469613778180745'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2008/06/memory-acquisition-just-got-easier.html' title='Memory Acquisition Just Got Easier'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30542938.post-3014443434411431088</id><published>2008-06-16T13:57:00.000-04:00</published><updated>2008-06-25T20:20:28.847-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='news'/><title type='text'>Introduction</title><content type='html'>So I've been keeping various blogs for classes and projects.  Now I've decided to keep up with my own blog, so I'm starting over again.  It's gonna be slow here in the next few days, since I'm on vacation, but it should pick up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/30542938-3014443434411431088?l=gleeda.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://gleeda.blogspot.com/feeds/3014443434411431088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=30542938&amp;postID=3014443434411431088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3014443434411431088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30542938/posts/default/3014443434411431088'/><link rel='alternate' type='text/html' href='http://gleeda.blogspot.com/2007/02/introduction.html' title='Introduction'/><author><name>JL</name><uri>http://www.blogger.com/profile/16089000750284843256</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_55uSCYxbQ8M/SZtzdpr80BI/AAAAAAAAAbQ/_JuHtnFyXZo/S220/hd.jpg'/></author><thr:total>0</thr:total></entry></feed>
