<?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-2144202667466924260</id><updated>2011-08-15T15:17:21.917-04:00</updated><category term='regview'/><category term='provisioning'/><category term='didier'/><category term='virtualization'/><category term='Vista'/><category term='thesis'/><category term='password reset'/><category term='tools'/><category term='hyper-v'/><category term='Microsoft Server 2008'/><category term='esxi'/><category term='robocopy'/><category term='obfuscator'/><category term='CloneHDD'/><category term='sanfly'/><category term='internet explorer password recovery'/><category term='usb device list'/><category term='FreeBSD'/><category term='harlan'/><category term='ESX'/><category term='nirsoft'/><category term='Workstation'/><category term='sysinternals'/><category term='emboot'/><category term='recursive virtualization'/><category term='bluetooth registry'/><category term='welcome'/><category term='forensic utilities'/><category term='simplyrdp'/><category term='netboot'/><category term='VMware'/><category term='VMware ESX'/><category term='VMware Workstation'/><category term='imagex'/><category term='windows'/><category term='winboot'/><category term='MINWINPC'/><category term='dhcp'/><category term='wds'/><category term='pagingfiles'/><category term='wdsmcast'/><category term='ulli'/><category term='process explorer'/><category term='regripper'/><category term='hobocopy'/><category term='multicast'/><category term='pxe'/><title type='text'>NSSA Documentation</title><subtitle type='html'>(Mis)configurations, solutions and tools for information systems</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-5606415469337909732</id><published>2008-10-07T06:34:00.015-04:00</published><updated>2008-10-07T07:49:20.458-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regripper'/><category scheme='http://www.blogger.com/atom/ns#' term='regview'/><category scheme='http://www.blogger.com/atom/ns#' term='bluetooth registry'/><title type='text'>RegRipper, regview, and Bluetooth Registry Settings</title><content type='html'>&lt;div&gt;During DFRWS '08, I thought it might be worthwhile to have an easy way to make RegRipper plugins.  In fact, I asked Harlan if he had a plugin generator; back then, he said he just had some templates that provided basis for the plugins.  Since then, I've been &lt;a href="http://nssadoc.blogspot.com/2008/09/masters-thesis.html"&gt;busy&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Recently, Harlan &lt;a href="http://windowsir.blogspot.com/2008/09/updates-29-sept.html"&gt;posted&lt;/a&gt; that the &lt;a href="http://search.cpan.org/~jmacfarla/Parse-Win32Registry-0.40/"&gt;v0.40&lt;/a&gt; update for Parse::Win32Registry came with a GTK-perl registry hive viewer.  Naturally, I became very interested in modifying James' work to make the RegRipper plugin generator that had been on my mind in August.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To setup shop, I had to get Parse::Win32Registry and checkout this script.  Quickly, I realized that there were quite a few dependencies for Gtk2-perl.  Once all those were resolved (in a clean XP VMware WS 6.5 virtual machine, it didn't seem to like my host OS instance), I launched up the viewer.  First, let me say that it's marvelous.  James did a really slick job of programming this UI and his entire perl registry package.  Until now, I hadn't looked too closely at its internals, but it's truly great code.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(0,0,238)" class="Apple-style-span"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5254361416745693010" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOs93qalL1I/AAAAAAAAAJw/-n7-ck-A-Dc/s320/Viewer.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Default regview.pl 0.40 opening SYSTEM hive&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Once I got it running, I thought that I only had one thing to do: hack up the UI to enable plugin generation.  Well, at first, it appeared that plugin generation was too complicated to use a single template (which was my original idea).  I needed to have a good understanding of the current RR plugin features as well as the other programming libraries in-use (GTK2-perl, Parse::Win32Registry, perl).  I started writing a &lt;a href="http://code.google.com/p/eppok/source/browse/tags/tuesday_morning/doc/Plugins.docx"&gt;small &lt;/a&gt;document, in which I articulated the processes of some RR plugins.  A lot of the plugins that Harlan wrote were pretty unique, but all followed similar strategies: from a starting registry key, traverse some subkeys, maybe select a few of those subkeys, and find some (or maybe all) values of the subkeys.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, I thought, why not look at a RR plugin as something that traverses this registry tree with a filter?  So, I wrote a special RR plugin that accepts a starting point, depth, a key filter per depth and a value filter per depth (plus one).  This special RR plugin was further modularized by extracting plugin specific information to Harlan's %config hash in each RR plugin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, now I've got a bare-bone template plugin.  From this, I hacked up James' UI (forgive me, at some point in the next weeks I want to remove my code from regview and make my own module).  I've added the ability to create a new RR plugin based on a selected key or value.  Below is a screenshot of me creating the Widcomm Bluetooth plugin.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOtMXPAv2GI/AAAAAAAAAKg/gklAB9edcjY/s1600-h/ToolDemo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOtMXPAv2GI/AAAAAAAAAKg/gklAB9edcjY/s320/ToolDemo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5254377352308185186" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOtDmV5SbyI/AAAAAAAAAKY/xGiFECfyssI/s1600-h/PluginDemo.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Hacked Up regview UI&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK.  So, in this SS, I've selected a key (Widcomm) and then from the Generate menu, clicked "from selected key."  Next, the Plugin Detail Specification dialog appears.  Here, I select an output folder, depth, name and description.  Once depth is chosen, we can click on the Modify Filters button to bring up the Plugin Filter Specification dialog.  This dialog has a dynamic number of input boxes, depdending on the user-specified depth.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The filter dialog is where the magic happens.  From these boxes, a set of perl regular expressions are built within the a new plugin.  In this example, I selected the key Widcomm, and would like to get subkeys of Widcomm that start with Devices and LinkKeys.  From there, I want to traverse all subkeys.  I've specified for all values (other than those from a fourth level subkey) to include all words (perl's \w).  The fourth-level subkey value must start with ServiceNameUTF8.  A few OKs and:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(0,0,238)" class="Apple-style-span"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5254367463561404706" border="0" alt="" src="http://2.bp.blogspot.com/_dxGru3LNmpk/SOtDXojyoSI/AAAAAAAAAKQ/zEvhT0t8i8Y/s320/Created.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;RR Plugin Created!&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;What, you don't believe me?  :)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOtMl9lsLBI/AAAAAAAAAKo/7-NGYhac-iA/s1600-h/PluginDemo.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOtMl9lsLBI/AAAAAAAAAKo/7-NGYhac-iA/s320/PluginDemo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5254377605329333266" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;btwindcomm RR plugin output&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Right now, I've committed my the code to my &lt;a href="http://code.google.com/p/eppok/"&gt;code page&lt;/a&gt;.  A tag exists in the soruce tree called &lt;a href="http://code.google.com/p/eppok/source/browse/#svn/tags/tuesday_morning"&gt;tuesday_morning&lt;/a&gt; that contains the script and template that you need to get going.  There are bugs and I haven't coded proper error handling -- so, you you can break it easily.  This Bluetooth demo is the last thing that I've tested, so it is probably broken in other areas.  I'll bugcheck Tuesday afternoon and tag a new version on Wednesday.&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;With regard to Harlan's Bluetooth post, I still have further investigation to perform.  Apparantly, there are different &lt;a href="http://en.wikipedia.org/wiki/Bluetooth_stack"&gt;Bluetooth stacks&lt;/a&gt;., which undoubtedly means different registry keys.  I'll play with MS-XP and MS-Vista stuff sometime this week.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;In my &lt;a href="http://code.google.com/p/eppok/source/browse/tags/tuesday_morning/doc/Plugins.docx"&gt;small&lt;/a&gt; investigations of RR plugins, I noticed that the applets plugin could also rip Wordpad's recently opened files, so I updated &lt;a href="http://code.google.com/p/eppok/downloads/detail?name=applets.pl&amp;amp;can=2&amp;amp;q="&gt;applets.pl&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;That is all for now.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-5606415469337909732?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/5606415469337909732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=5606415469337909732' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5606415469337909732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5606415469337909732'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/10/regripper-regview-and-bluetooth.html' title='RegRipper, regview, and Bluetooth Registry Settings'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dxGru3LNmpk/SOs93qalL1I/AAAAAAAAAJw/-n7-ck-A-Dc/s72-c/Viewer.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-5344133242154897693</id><published>2008-10-01T14:07:00.007-04:00</published><updated>2008-10-01T14:37:32.774-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='hyper-v'/><title type='text'>Hyper-V Server</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOO_EZdCnqI/AAAAAAAAAJo/MMYykIFrnKk/s1600-h/Core-HyperV.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Today, Microsoft announced the availiablity of the free &lt;a href="http://www.microsoft.com/servers/hyper-v-server/default.mspx"&gt;Hyper-V Server&lt;/a&gt;. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I quickly downloaded the 1.09GB ISO and began installation.  Installation took about 15 minutes in a VM with ~1.5GB memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Here are some Hyper-V Server screenshots:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dxGru3LNmpk/SOO8zEXJ9NI/AAAAAAAAAJI/kfT04ZjPFX4/s1600-h/Hyper-V.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5252249175974343890" border="0" alt="" src="http://3.bp.blogspot.com/_dxGru3LNmpk/SOO8zEXJ9NI/AAAAAAAAAJI/kfT04ZjPFX4/s320/Hyper-V.JPG" /&gt;&lt;/a&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Choose your language&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOO8zG7CAuI/AAAAAAAAAJQ/i4_5l8femW0/s1600-h/Installed.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5252249176661689058" border="0" alt="" src="http://4.bp.blogspot.com/_dxGru3LNmpk/SOO8zG7CAuI/AAAAAAAAAJQ/i4_5l8femW0/s320/Installed.JPG" /&gt;&lt;/a&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Hyper-V Server&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;br /&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOO8zUm9bqI/AAAAAAAAAJY/whpeNyAEkvc/s1600-h/Configuration.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5252249180335599266" border="0" alt="" src="http://4.bp.blogspot.com/_dxGru3LNmpk/SOO8zUm9bqI/AAAAAAAAAJY/whpeNyAEkvc/s320/Configuration.JPG" /&gt;&lt;/a&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Intial Configuration Script&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOO8zbKidkI/AAAAAAAAAJg/vR-Ls2-R7a8/s1600-h/Packages.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5252249182095439426" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOO8zbKidkI/AAAAAAAAAJg/vR-Ls2-R7a8/s320/Packages.JPG" /&gt;&lt;/a&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Available &amp;amp; Installed Packages&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;The majority of the installation was the exact same as a Server 2008 install except there is no version/type selection (std, ent, dc/full, core).  The text-based initial script enables quick configuration without memorizing the netdom and netsh commands .  Further, from the last screenshot, we can see the small number of packages that come with Hyper-V and that only one is installed.  This is considerably different from a basic Hyper-V Server Core installation, illustrated below. &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(0,0,238)" class="Apple-style-span"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5252251672717205154" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOO_EZdCnqI/AAAAAAAAAJo/MMYykIFrnKk/s320/Core-HyperV.JPG" /&gt;&lt;/span&gt; &lt;div style="TEXT-ALIGN: center"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;Server Core with Hyper-V&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;span style="FONT-WEIGHT: bold" class="Apple-style-span"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Microsoft did a good job of stripping unecessary components as well as making an easy-to-install and easy-to-initialize Hyper-V solution.  Thanks!&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt; &lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;Links:&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;a href="http://www.microsoft.com/servers/hyper-v-server/default.mspx"&gt;http://www.microsoft.com/servers/hyper-v-server/default.mspx&lt;/a&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;a href="http://blogs.technet.com/virtualization/archive/2008/10/01/Bare-metal-hypervisor-is-here_2C00_-along-with-new-training_2C00_-services.aspx"&gt;http://blogs.technet.com/virtualization/archive/2008/10/01/Bare-metal-hypervisor-is-here_2C00_-along-with-new-training_2C00_-services.aspx&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-5344133242154897693?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/5344133242154897693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=5344133242154897693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5344133242154897693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5344133242154897693'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/10/hyper-v-server.html' title='Hyper-V Server'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dxGru3LNmpk/SOO8zEXJ9NI/AAAAAAAAAJI/kfT04ZjPFX4/s72-c/Hyper-V.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-7405867808168351185</id><published>2008-09-30T19:14:00.017-04:00</published><updated>2008-09-30T23:37:09.777-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware Workstation'/><category scheme='http://www.blogger.com/atom/ns#' term='recursive virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='provisioning'/><category scheme='http://www.blogger.com/atom/ns#' term='hyper-v'/><category scheme='http://www.blogger.com/atom/ns#' term='esxi'/><title type='text'>Hyper-V and recursive virtualization</title><content type='html'>After I got &lt;a href="http://nssadoc.blogspot.com/2008/09/esx-inside-of-workstation.html"&gt;ESXi to run inside of Workstation 6.5&lt;/a&gt;. I asked myself, "C&lt;em&gt;an Hyper-V run within Workstation 6.5?"&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Well, the role &lt;em&gt;installs&lt;/em&gt;, and I can create Hyper-V virtual machines, but I can't start them:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOKz8SuaHXI/AAAAAAAAAIg/i74FuoJO6lY/s1600-h/StartingVHD-failedtocreatepartition.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5251957963867430258" border="0" alt="" src="http://4.bp.blogspot.com/_dxGru3LNmpk/SOKz8SuaHXI/AAAAAAAAAIg/i74FuoJO6lY/s320/StartingVHD-failedtocreatepartition.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;Note that I have two VMs running. The main VM in the screen shot is my Server 2008 Enterprise Full Domain Controller while the Server 2008 x64 Enterprise Core Hyper-V server. I made the same modification to the Core VMX as I did for the ESXi-3 VM from my earlier post. The Hyper-V role installed and updated fine. As you can see from the screen shot, I was able to manage Hyper-V remotely and create a VM. When I connect to the VM to start it, it displays the error message that it cannot create the partition because of an unspecified error 0x80004005. There aren't many search results about this error with Hyper-V other than &lt;a href="http://social.technet.microsoft.com/Forums/en-US/winservercore/thread/e4857590-76bc-4c9d-ae2b-2e13bf93d278/"&gt;two&lt;/a&gt; &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3022118&amp;amp;SiteID=1"&gt;forum posts &lt;/a&gt;(one of which I posted an updated error message). There are &lt;a href="http://www.computerperformance.co.uk/Logon/code/code_80004005.htm"&gt;some results&lt;/a&gt; about the error code.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;I attempted the same thing in a Full installation and the Hyper-V installation was prevented by ServerManager. Is possible that ocsetup, the utility which installs Hyper-V in CORE does not properly detect VT and DEP capabilities and thus allows installation on non-Hyper-V supported hardware? I ran ocsetup on the Full installation, and the role installs just fine....&lt;/p&gt;&lt;p&gt;&lt;br /&gt;An error occurs upon attempting to start the VMbus:&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOLkY3rFZ4I/AAAAAAAAAI4/natzEWeMN0s/s1600-h/NoVMBus.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5252011231380072322" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOLkY3rFZ4I/AAAAAAAAAI4/natzEWeMN0s/s320/NoVMBus.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;John Howard &lt;a href="http://blogs.technet.com/jhoward/archive/2008/02/29/vmbus-fails-to-load-device-cannot-find-enough-free-resources-code-12-on-a-windows-server-2008-x86-virtual-machine-under-hyper-v.aspx"&gt;mentions &lt;/a&gt;that this could happen if resources are scarce. In my instance, I confirm that it is unsupported hardware with no driver:&lt;br /&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,238)" class="Apple-style-span"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5252011892952639090" border="0" alt="" src="http://3.bp.blogspot.com/_dxGru3LNmpk/SOLk_YORpnI/AAAAAAAAAJA/mlecmo2Z3Xk/s320/noDriver.JPG" /&gt;&lt;/span&gt; Looks like Hyper-V isn't actually running. &lt;a href="http://social.technet.microsoft.com/Forums/en-US/winserverhyperv/thread/1f08bc59-0157-4306-add5-9974811bd254"&gt;Apparently ocsetup doesn't prevent installation of Hyper-V as ServerManager does...&lt;/a&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-7405867808168351185?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/7405867808168351185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=7405867808168351185' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7405867808168351185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7405867808168351185'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/09/hyper-v-and-recursive-virtualization.html' title='Hyper-V and recursive virtualization'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dxGru3LNmpk/SOKz8SuaHXI/AAAAAAAAAIg/i74FuoJO6lY/s72-c/StartingVHD-failedtocreatepartition.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-8391412239413835068</id><published>2008-09-30T13:33:00.006-04:00</published><updated>2008-09-30T14:07:34.603-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='imagex'/><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='ulli'/><title type='text'>Graphical ImageX</title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;While using WDS, the imagex binary is at the forefront of WIM creation. Apparently, there is a graphical front end, GImageX! This is fun, and exciting. An intuitive tabbed interface immediately enables you to hone in on imaging process you're about to undertake.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJpLpWOA1I/AAAAAAAAAHw/laFBUujpE7I/s1600-h/gimagex.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5251875764265943890" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJpLpWOA1I/AAAAAAAAAHw/laFBUujpE7I/s320/gimagex.JPG" /&gt;&lt;/a&gt;  &lt;div&gt;While I was playing with ImageX this summer at RIT, I was injecting large VMDKs into a mounted, writeable WIM. When I unmounted and committed changes, it would take an incredibly long amount of time to unmount. So long so that, at times, it appeared like the utility 'froze' because there was no &lt;em&gt;significant&lt;/em&gt; resource usage displayed in the Windows Resource Monitor or Task Manager. So, I launched process explorer and filtered events related to imagex. Sure enough, there are a ton of events occuring that relate directly to imagex; therefore, it's not 'frozen.'' It was definitely annoying that there is no progress bar or good indication that the utility is still running successfully.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;One of the first things I wanted to discover about GImageX was how the utility handled these unmount commit scenarios. Well, the good news is, there was a significant amount of disk usage directly from gimagex.exe throughout the few minute unmount. Further, there is a little cursor inside the dialog showing that the program is indeed still working. Since this is a GUI, you can tell that the application has still responding because you can move its windows.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJqvE0gFBI/AAAAAAAAAH4/LMCN7WSCGVI/s1600-h/donecommitting.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5251877472447763474" border="0" alt="" src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJqvE0gFBI/AAAAAAAAAH4/LMCN7WSCGVI/s320/donecommitting.JPG" /&gt;&lt;/a&gt;  &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;First impressions of this utility are very high. I'm happy that I bumped into it from Ulli's latest post about the &lt;a href="http://sanbarrow.com/esx-bandit.html"&gt;ESX Bandit&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-8391412239413835068?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/8391412239413835068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=8391412239413835068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/8391412239413835068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/8391412239413835068'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/09/graphical-imagex.html' title='Graphical ImageX'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_dxGru3LNmpk/SOJpLpWOA1I/AAAAAAAAAHw/laFBUujpE7I/s72-c/gimagex.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-6321534701322887574</id><published>2008-09-30T13:01:00.014-04:00</published><updated>2008-09-30T14:42:48.239-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware Workstation'/><category scheme='http://www.blogger.com/atom/ns#' term='VMware ESX'/><title type='text'>ESX inside of Workstation</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJy-Lc8LBI/AAAAAAAAAIY/Jzzf4y9KEMI/s1600-h/proper-excellent.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOJyozXMVeI/AAAAAAAAAIQ/OxCI7mX1w7s/s1600-h/proper-installed.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOJyFdfy51I/AAAAAAAAAII/0Qf44zKJfWA/s1600-h/proper-installing.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dxGru3LNmpk/SOJxyz3L04I/AAAAAAAAAIA/iVrEhVUlSsA/s1600-h/proper-SCSI.JPG"&gt;&lt;/a&gt;I stumbled upon a &lt;a href="http://www.ntpro.nl/blog/archives/470-ESX-3.5-is-running-on-Workstation-6.5-Build-91182-!!!.html"&gt;post &lt;/a&gt;about running ESX inside of VMware Workstation.  While I'm not sure of the practicality behind recursive virtualization, I want to see this working.  This post is a walkthrough of my ESXinsideWS process.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For background, I've been running the WS6.5 beta since the beta program started.  Recently, WS6.5 was &lt;a href="http://vmware.com/products/ws/"&gt;publically released&lt;/a&gt;.  So, now, I'm running the first public release of WS6.5.  Further, my computer operates the MSI P6NSLI Platinum motherboard, with a Intel E6550 Core 2 Duo @ 2.33Ghz with 4GB of DDR2 800 G.Skill memory.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I set out to create a WS6.5 VM from just Eric's post.  This first VM is based on the Other Linux 2.6 Kernel 64-bit with 2 processors and an IDE disk.  I followed the recommendation from Ulli in Eric's post and added the following lines to the VMX prior to startup.  I also made sure the network adapters abstracted &lt;span class="Apple-style-span" style="font-style: italic;"&gt;e1000&lt;/span&gt;.&lt;a href="http://acronyms.thefreedictionary.com/Purple+Screen+of+Death+(VMware+ESX+server+crash)"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;monitor.virtual_exec = "hardware" &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;monitor_control.restrict_backdoor = "true" &lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://acronyms.thefreedictionary.com/Purple+Screen+of+Death+(VMware+ESX+server+crash)"&gt;PSOD &lt;/a&gt;when I launch the installer:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_dxGru3LNmpk/SOJf7fp9fXI/AAAAAAAAAHA/jIqcLfr9O0o/s1600-h/DualCPU.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_dxGru3LNmpk/SOJf7fp9fXI/AAAAAAAAAHA/jIqcLfr9O0o/s320/DualCPU.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5251865591181835634" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The second VM I created was based on the Other Linux 2.6 Kernel with one CPU and IDE disks.  Note that this time, I chose not to use either 64-bit or two CPUs.  This first time I started this second VM, a dialog stating that my CPU had been disabled!  Oh no!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_dxGru3LNmpk/SOJhC360y3I/AAAAAAAAAHI/7LxOsCzQHPc/s1600-h/SingleCPULowRAM.jpg"&gt;&lt;img src="http://4.bp.blogspot.com/_dxGru3LNmpk/SOJhC360y3I/AAAAAAAAAHI/7LxOsCzQHPc/s320/SingleCPULowRAM.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5251866817465731954" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/a&gt;Then, the following error reveals the cause.  I configured it to operate with 620MB of memory.  Apparently this is insufficient.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://4.bp.blogspot.com/_dxGru3LNmpk/SOJhjJzje6I/AAAAAAAAAHQ/EW_wC3-pzRU/s320/SingleCPULowRAM2.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5251867372022889378" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, so I increased the RAM to 1536 and the installer got farther, and displayed a new error.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJh9iHih-I/AAAAAAAAAHY/009RIsmxcl8/s1600-h/SingleCPU-NoDisk.JPG"&gt;&lt;img src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJh9iHih-I/AAAAAAAAAHY/009RIsmxcl8/s320/SingleCPU-NoDisk.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5251867825225762786" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;After getting this error, the following questions were bouncing around in my mind:&lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.ntpro.nl/blog/"&gt;Eric&lt;/a&gt; and &lt;a href="http://sanbarrow.com/"&gt;Ulli&lt;/a&gt; talk about getting ESX running in WS, not ESXi which is what i've been trying -- Will ESXi work?&lt;/li&gt;&lt;li&gt;What types of disks did Eric and Ulli use? I thought Eric's post recommnded using IDE disks..&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;So, I did some quick searches and found a post on &lt;a href="http://www.petri.co.il/running-vmware-esx-and-esxi-in-workstation-on-your-desktop-pc.htm"&gt;petri&lt;/a&gt;.  That video is based on &lt;a href="http://knowledge.xtravirt.com/white-papers/esx-3x.html"&gt;this &lt;/a&gt;paper.  Following the video, I recreated my VM to be based on RHEL4 64-bit, one processor, SCSI disk and 1GB of memory.  This VM gets further&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); font-weight: normal; "&gt;&lt;img src="http://3.bp.blogspot.com/_dxGru3LNmpk/SOJxyz3L04I/AAAAAAAAAIA/iVrEhVUlSsA/s320/proper-SCSI.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5251885233196487554" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" style="color: rgb(0, 0, 238); "&gt;&lt;img src="http://1.bp.blogspot.com/_dxGru3LNmpk/SOJy-Lc8LBI/AAAAAAAAAIY/Jzzf4y9KEMI/s320/proper-excellent.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5251886528019049490" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; " /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Excellent.  I'll post more information about this little recursive virtualization environment of mine :)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-6321534701322887574?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/6321534701322887574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=6321534701322887574' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/6321534701322887574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/6321534701322887574'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/09/esx-inside-of-workstation.html' title='ESX inside of Workstation'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_dxGru3LNmpk/SOJf7fp9fXI/AAAAAAAAAHA/jIqcLfr9O0o/s72-c/DualCPU.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-5450931559507426498</id><published>2008-09-27T14:37:00.006-04:00</published><updated>2008-09-28T13:09:19.332-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='thesis'/><category scheme='http://www.blogger.com/atom/ns#' term='wdsmcast'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp'/><title type='text'>Master's Thesis</title><content type='html'>Well, I'm all done with my MS in Computer Security and Information Assurance from RIT. The thesis, titled &lt;em&gt;Differential Virtualization for Large-Scale System Modeling, &lt;/em&gt;is posted &lt;a href="http://sites.google.com/site/eppokj/graduate-work"&gt;here&lt;/a&gt;. Some of the stuff previously posted on the blog is incorporated into the thesis including WDS/DHCP and multicasting files.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-5450931559507426498?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/5450931559507426498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=5450931559507426498' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5450931559507426498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/5450931559507426498'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/09/masters-thesis.html' title='Master&apos;s Thesis'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-1769091814619174350</id><published>2008-09-16T09:22:00.011-04:00</published><updated>2008-09-26T18:21:35.660-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='multicast'/><category scheme='http://www.blogger.com/atom/ns#' term='wdsmcast'/><title type='text'>Multicast File Transmission in WDS</title><content type='html'>In the environment detailed in my &lt;a href="http://people.rit.edu/jrk9055/thesis/"&gt;MS thesis&lt;/a&gt; and a recently accepted paper to &lt;a href="http://sigite.org/content/events/sigite08/"&gt;SIGITE '08&lt;/a&gt;, we describe an environment that uses a standard set of virtual machine templates. This set of virtual machine templates is then distributed (and kept consistent) across a set of workstations. Then, users can create differential virtual machines (VMware's linked clones) based on the templates. Users store the linked clones on a file server, and can achieve virtual machine mobility between workstations. At &lt;a href="http://nssa.rit.edu/"&gt;RIT NSSA&lt;/a&gt;, this environment is semi-operational as I write this post. Since &lt;a href="http://nssa.rit.edu/"&gt;RIT NSSA&lt;/a&gt; teaches many different operating system technologies, there are many virtual machine templates that reach a summed size of 100GB. One of the issues that we discusssed in our paper and that I present in my thesis is the notion of updating template virtual machines across all workstations. This is a difficult subject because as the number of workstations increases, the copies of this template repository increase. Now, &lt;a href="http://nssa.rit.edu/"&gt;RIT NSSA&lt;/a&gt; has 80 workstations in the pilot-lab -- that means, right now, when they want to update or add a template to each machine, they have to inject the files into an image and re-deploy the OS and data on all 80 workstations. Another way they can achieve an update is through some differential robocopy script that copies the templates from the file server to the workstations -- this can be done in series or parallel (I've found that robocopies in series seem to work much better with the storage devices in that file server -- Adaptec 2820SA with 5 SATAII in RAID5). However, all of these approaches are inefficient because they either copy superflous data once as in deploying an install image, or they copy the same data 80 times as in differential robocopy. There has to be a better way!&lt;br /&gt;&lt;div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Enter WDSMCAST.exe from the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=94BB6E34-D890-4932-81A5-5B50C657DE08&amp;amp;displaylang=en"&gt;Server 2008 AIK&lt;/a&gt;. WDSMCAST enables multicast transmissions of custom data stores. So, I can create diretory and make a custom WIM with the directory's contents. Once I have a custom WIM, I can create a custom namespace on my WDS Transport Server using wdsutil /new-namespace with the /configstring parameter specified as the location of the custom WIM. Microsoft's documentation states that the custom WIM can be stored in any directory. This, however, caused a divide by zero in my test runs with WDSMCAST.exe:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(0,0,238)" class="Apple-style-span"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: pointer" id="BLOGGER_PHOTO_ID_5246666902412450962" border="0" alt="" src="http://4.bp.blogspot.com/_dxGru3LNmpk/SM_nv-0X3JI/AAAAAAAAAGI/RUG5IsvvRGI/s320/what.jpg" /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So, I moved the custom WIM inside the RemoteInstall directory and then multicast transfer of the image works just fine.&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left"&gt;WDSMCAST runs just fine inside Vista:&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;a href="http://3.bp.blogspot.com/_dxGru3LNmpk/SN1chzHc5NI/AAAAAAAAAGY/QEs9mDw77qY/s1600-h/wdsInVista.jpg"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; DISPLAY: block; CURSOR: hand" id="BLOGGER_PHOTO_ID_5250454476310766802" border="0" alt="" src="http://3.bp.blogspot.com/_dxGru3LNmpk/SN1chzHc5NI/AAAAAAAAAGY/QEs9mDw77qY/s320/wdsInVista.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left"&gt;Therefore, we could create a differential version of the repository, generate a new WIM, create a multicast session based on the WIM, instruct each workstation to join the multicast session, and then have each workstation extract contents of the WIM ontop of the repository at the workstation.&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;While this is a nice solution, it is possible that a workstation require twice the size of the update in free disk space. For example, if we wanted to add 20GB of templates to all workstations, the workstations need at least 40GB of free space because 20GB is required for the WIM and 20GB is required for the extracted templates. In an environment where this is realistic, it would be neat to issue these differential updates in a multicast fashion with wdsmast.&lt;/div&gt;&lt;div style="TEXT-ALIGN: left"&gt;&lt;br /&gt;&lt;a href="http://technet.microsoft.com/en-us/library/cc725964.aspx"&gt;Microsoft &lt;/a&gt;says, "&lt;em&gt;You can create a custom content provider for cases where the default provider is not sufficient (for example when using Transport Server to deploy an operating system from inside a .vhd image). See the Windows Server 2008 SDK for guidelines and samples for authoring and registering the provider."&lt;/em&gt; I'm going to investigate custom content providers for the purposes of transmitting a template repository version and talk about custom content providers in future post.&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-1769091814619174350?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/1769091814619174350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=1769091814619174350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/1769091814619174350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/1769091814619174350'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/09/multicast-file-transmission-in-wds.html' title='Multicast File Transmission in WDS'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_dxGru3LNmpk/SM_nv-0X3JI/AAAAAAAAAGI/RUG5IsvvRGI/s72-c/what.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-9041067611537449687</id><published>2008-07-23T12:34:00.008-04:00</published><updated>2008-08-01T10:06:26.937-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp'/><title type='text'>Follow Up: Differential Analysis - WDS &amp; DHCP</title><content type='html'>&lt;span style="color:#000000;"&gt;So I was doing some more reading about the WDS &amp;amp; DHCP service split Jason and I talked about in these &lt;/span&gt;&lt;a href="http://nssadoc.blogspot.com/2008/06/differential-analysis-wds-dhcp.html"&gt;&lt;span style="color:#3366ff;"&gt;two&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#3366ff;"&gt; &lt;/span&gt;&lt;a href="http://nssadoc.blogspot.com/2008/06/revisit-differential-analysis-wds-wds.html"&gt;&lt;span style="color:#3366ff;"&gt;posts&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt; when I found a &lt;/span&gt;&lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/7d837d88-6d8e-420c-b68f-a5b4baeb52481033.mspx?mfr=true"&gt;&lt;span style="color:#3366ff;"&gt;technet article&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt; that had some information in it that could have saved us some time. The section titled &lt;strong&gt;Known issues with configuring Windows Deployment Services &lt;/strong&gt;says "&lt;em&gt;If DHCP is installed on a server that is located in a different subnet, you will need to do one of the following ... Add DHCP options 66 and 67. Option 66 should be set to the Windows Deployment Services server, and option 67 should be set to boot\x86\wdsnbp.com.&lt;/em&gt;"&lt;br /&gt;&lt;br /&gt;The article also has a link &lt;/span&gt;&lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/c169579c-c0fc-4ec6-aa8d-0af5504fda011033.mspx?mfr=true"&gt;&lt;span style="color:#3366ff;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt; to another technet article with more detailed information about network boot programs. After doing some further reading it turns out that the wdsnbp.com image has the following purposes:&lt;br /&gt;1. Architecture detection&lt;br /&gt;2. Pending computer scenarios. When the Auto-Add policy is enabled, it is sent to pending computers to pause the PXE boot and report back the client computer's architecture to the server.&lt;br /&gt;3. PXE referral cases (including use of Dynamic Host Control Protocol (DHCP) options 66 and 67) &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;hr /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;So I was able to setup a split WDS/DHCP environment in production, all of the packets were being passed from client to server based on my packet captures. The PCs that I am attempting to deploy to have an x64 architecture so based on Microsoft's &lt;/span&gt;&lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/9e197135-6711-4c20-bfad-fc80fc2151301033.mspx?mfr=true"&gt;&lt;span style="color:#3366ff;"&gt;documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt; ("&lt;em&gt;In addition, x64-based computers can run x86-based or x64-based boot images. Therefore, for each of these tasks, you could have two boot images—one for x86 and one for x64. The boot menu on x86-based computers will only display x86 boot images (because x86-based computers cannot run x64 boot images).&lt;/em&gt;") I should be fine using an x86 boot.wim to boot.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;But when I go to boot the client into the default boot.wim boot image (taken from a 2008 Server DVD) it gets the following error:&lt;br /&gt;&lt;strong&gt;WdsClient: An error occurred while communicating with the Windows Deployment Services server. Please check to ensure that the server is operational and that the necessary ports are open on the server's firewall. Server name [name], Server IP address [ip].&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;By hitting Shift+F10 I get a command shell where I checked for a valid IP address which I had.&lt;br /&gt;Then I checked the detailed log file of the boot process in: &lt;strong&gt;x:\Windows\Panther\Setupact.log&lt;/strong&gt;.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;The very bottom of the log file has the following error messages:&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;Info "InitializeLogging: RPC_S_SERVER_UNABAILABLE - Retrying server request for initializing logging."&lt;br /&gt;Error "CreateClientSession: Failed to initialize Client -&gt; Server logging. Error code [0x800706BA].[gle=0x000006ba]"&lt;br /&gt;Error "CreateClientSession: Failed to create client session. Error code [0x800706BA].[gle=0x000006ba]"&lt;br /&gt;Error "CallBack_WdsClient_DetectWdsMode: Failed to create client session or initialize WDS unattend. Error [0x800706BA].[gle=0x000006ba]"&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Now the weird thing is that I can boot to the capture.wim image (still x86) with no problems, so I did some more research and found out that this data was being blocked at the network... &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Looking at some more &lt;/span&gt;&lt;a href="http://technet2.microsoft.com/windowsserver2008/en/library/a935a861-7a32-438b-ad0b-f3fe1065db361033.mspx?mfr=true"&gt;&lt;span style="color:#3366ff;"&gt;documentation&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000000;"&gt; from Microsoft I see that the following ports must be open for WDS to work (the error message mentioned above was due to port 5040 needed for WDS to create an RPC connection being blocked):&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;UDP - 67, 68, 69, 4011&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#000000;"&gt;TCP - 135, 137, 138, 139, 5040&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;After changing the firewall rules everything started working again.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Great!&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;hr /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;I hit another snag in the deployment. Now I have an image (52GB Vista Business) which I created overnight (I estimate it took about 5 or 6 hours to capture). I saved the initial WIM file to an external hard drive due to its size and overnight the connection to the server was lost so the image was not moved.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;No big deal, I just simply plug the drive into the server go to WDS and import the new image into the new Image Group that I created.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;So after this gets done I go and try to pull this image but when I boot the client up into the WDS PE boot environment I do not see any images (I should see two at this point).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;Back to the server where I enabled trace logging on all the components with regarding to WDS, these are located in the registry under:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Tracing\&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;span style="color:#000000;"&gt;Just look for the keys that start with WDS.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;These log files will turn up in &lt;strong&gt;%windir%\Tracing\&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;I found the following errors in the log:&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#000000;"&gt;[WdsImgSrv] Error in enumerating images. Error [13].&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#000000;"&gt;So I disabled all the images on the server and copied the new image from the USB drive onto the local hard drive then imported it into WDS under my original Image Group.&lt;/span&gt;&lt;/p&gt;&lt;span style="color:#000000;"&gt;So this worked, the image pushed down in one and a half hours and everything worked.&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;Next up is documentation about MDT, AIK and Unattended installation of Vista and Server 2008.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-9041067611537449687?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/9041067611537449687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=9041067611537449687' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/9041067611537449687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/9041067611537449687'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/07/follow-up-differential-analysis-wds.html' title='Follow Up: Differential Analysis - WDS &amp; DHCP'/><author><name>Tom Haskell</name><uri>http://www.blogger.com/profile/13690409632039713334</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-93578508206589981</id><published>2008-07-14T20:21:00.001-04:00</published><updated>2008-07-14T20:24:00.857-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VMware'/><category scheme='http://www.blogger.com/atom/ns#' term='FreeBSD'/><category scheme='http://www.blogger.com/atom/ns#' term='ESX'/><category scheme='http://www.blogger.com/atom/ns#' term='virtualization'/><category scheme='http://www.blogger.com/atom/ns#' term='Workstation'/><category scheme='http://www.blogger.com/atom/ns#' term='CloneHDD'/><title type='text'>Moving from VMware Workstation to ESX</title><content type='html'>At RIT NSSA, we've been using a &lt;a href="http://www.vmware.com/"&gt;VMware&lt;/a&gt; &lt;a href="http://www.vmware.com/products/ws/"&gt;Workstation&lt;/a&gt; implementation, dubbed &lt;a href="http://portal.acm.org/citation.cfm?id=1227310.1227501"&gt;Remote Laboratory Emulation System (RLES)&lt;/a&gt;, for well over two years as a platform to teach NSSA applied curriculum. This project has been faculty designed, student built and student maintained for these years. This past winter, with the help of &lt;a href="http://www.rit.edu/its/"&gt;Information Technology Services&lt;/a&gt;, our department started to construct an &lt;a href="http://www.vmware.com/products/esxi/"&gt;ESX&lt;/a&gt; cluster that would more effectively support the RLES concept. So far, one course &lt;a href="http://register.rit.edu/courseSchedule/4055886"&gt;Security Audits of Web Servers and Applications&lt;/a&gt;, has been offered on the ESX version of RLES. Another course, &lt;a href="http://register.rit.edu/courseSchedule/4055760"&gt;Computer Viruses and Malware&lt;/a&gt;, is being offered right now. Luckily, both of these labs for these courses were designed with the intent to succeed in a VMware Workstation environment. This made migrating from Workstation to ESX somewhat simpler because we were able to convert or directly import some of the virtual machines. Note the qualifier &lt;em&gt;some&lt;/em&gt;. Other courses that will be moving to a virtualization platform aren't as lucky. The following post describes, briefly, the issues we’ve experienced thus far migrating from virtualization to virtualization.&lt;br /&gt;&lt;br /&gt;This past week, Kristian Stokes and I attempted to import the DMZ auditing lab for Security Audits of Web Servers and Applications. This lab involves four systems inside a virtual DMZ as well as the firewall/router virtual machine that routes to the DMZ. The four DMZ systems include vulnerable instances of FreeBSD 5, Fedora 6, Windows Server 2000 and Windows 2003 all running vulnerable services with horribly exposing mis-configurations. There are two major issues with making this lab succeed with the ESX setup: (1) ESX requires all virtual machines to use SCSI virtual disks, (2) We’re running &lt;a href="http://www.vmware.com/products/labmanager/"&gt;Lab Manager&lt;/a&gt; 2.5 which only supports 1 networking adapter. Oh, and an even bigger issue: the DMZ systems LACK SUFFICIENT DOCUMENTATION! An aside: &lt;em&gt;this DMZ lab was created by a graduate student two years ago. The cost required to learn and re-implement these systems is very high. Theoretically, since this is part of an auditing course, any student who fully audited the DMZ systems should be able to recreate them (pfft, ya right).&lt;/em&gt;&lt;br /&gt;So, Kristian is formally documenting the trials and tribulations of this migration, but below are the migration paths for the DMZ virtual machines.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;FreeBSD&lt;br /&gt;&lt;ol&gt;&lt;li&gt;the original machine had an IDE virtual drive, so we have to convert it to SCSI.&lt;br /&gt;&lt;li&gt;we tried was a straight vmdk conversion using a &lt;a href="http://www.blogger.com/”http://blog.creonfx.com/linux/howto-convert-vmware-windows-xp-ide-disk-to-lsilogic-scsi”"&gt;tutorial&lt;/a&gt;. This failed to create a virtual disk that was even recognizable by another FreeBSD system.&lt;br /&gt;&lt;li&gt;we tried using &lt;a href="http://www.clonezilla.org/"&gt;clonezilla&lt;/a&gt; (without reading clonezilla support docs) to duplicate the data from the IDE disk to a fresh SCSI disk. Instantly we noticed that clonezilla dropped to a normal dd operation and figured that the FreeBSD file system wasn’t supported by the clonezilla suite. Clonezilla doesn’t support UFS; which was the file system type of our virtual machine. The dd from clonezilla made a drive, and it appeared to data… just not in the UFS slices that needed to be there.&lt;br /&gt;&lt;li&gt;we tried using &lt;a href="http://sourceforge.net/projects/clonehdd/"&gt;CloneHDD&lt;/a&gt; to duplicate from IDE to SCSI. CloneHDD is a utility to duplicate FreeBSD installations. Once we got the script to run, it would pause after copying one slice.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;This is where I went home, because we’d already spent 5 hours working on one image.&lt;/u&gt;&lt;br /&gt;&lt;li&gt;Kristian spent some time manually trying to duplicate the partitions from the IDE disk to the blank SCSI disk with some moderate success. While manually using dump on /var he got a message stating that a filename was too long, above the 1044 max character limit. He then found a directory with many subdirectories all with really long names like XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX etc. Assuming this was the problem, he deleted the directory structure.&lt;br /&gt;&lt;li&gt;Kristian used CloneHDD to successfully copy the slices. The CloneHDD script fixed /etc/fstab on the SCSI disk to mount da0 (SCSI0:0) rather than ad0 (IDE0:0). He removed the IDE referenced in the .vmx and booted the virtual machine with VMware Workstation on his desktop.&lt;br /&gt;&lt;li&gt;Kristian imported this virtual machine into Lab Manager.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;When trying to deploy the virtual machine, it boots to bootrom&gt; and the keyboard doesn’t work.&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt;Fedora – this machine also has an IDE drive.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;we tried to use clonezilla to convert the IDE drive to SCSI; however it failed because of RedHat’s default LVM file system feature.&lt;br /&gt;&lt;li&gt;&lt;strong&gt;we’re still waiting to work on this one more, a straight dd should work with modifications of the grub boot configuration file. (we’ll update this post when we finish this migration)&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt;Windows Server 2000&lt;br /&gt;&lt;ol&gt;&lt;li&gt;This machine had a SCSI disk, but when we attempted to import it into Lab Manager, LM spit back this:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Error executing lm-vmkimport: Failed to open '/pathto/labmanager/mnt/mysmbshare:Classes_1349690868/path/to/vmdk/Windows 2000 Server-000002.vmdk': The parent of this virtual disk could not be opened (23). . The originating server for this exception is: esxnode1.local&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;We speculate that a peice of the vmdk (the "parent" geometry) isn't in the /path/to/vmdk/&lt;br /&gt;&lt;li&gt;&lt;strong&gt;This machine is still waiting to be imported&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt;Windows 2003&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;This machine had a SCSI disk and properly imported without fuss! Yay!&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;li&gt;Router&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;this machine had a SCSI disk but had two NICs (because its simulating a corporate firewall/router). This machine is still waiting to be imported – with any luck, the upgrade to LM3.0 will allow us to have multiple network adapters.&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Another student's progress on converting Computer Viruses and Malware this summer is going well, I think. He had some hiccups trying to import the old virtual machines from the lab, so he just created new ones. The virtual machines for these labs involve some XP instances with &lt;a href="http://technet.microsoft.com/en-us/sysinternals/default.aspx"&gt;Sysinternals&lt;/a&gt; TCPView, FileMon, RegMon, etc, IDA, bagle, sasser, and some trivial SANS-ish malware examples as well as a honeyd/snort. The re-implementation of these virtual machines in the ESX environment is much more manageable than the DMZ lab. When this student coughs up some documentation, I’ll post it up here.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Anyways, as you can read, there is a lot going on with simply moving from Workstation to ESX. Beyond all the nitty gritty technical work, we’re also looking at the bigger picture -- like how all of these changes affect student productivity, curricular benefits, etc.  Expect some more information regarding our setup rather soon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-93578508206589981?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/93578508206589981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=93578508206589981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/93578508206589981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/93578508206589981'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/moving-from-vmware-workstation-to-esx.html' title='Moving from VMware Workstation to ESX'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-3730553261240949773</id><published>2008-07-10T22:30:00.002-04:00</published><updated>2008-09-29T01:15:03.286-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='harlan'/><category scheme='http://www.blogger.com/atom/ns#' term='obfuscator'/><category scheme='http://www.blogger.com/atom/ns#' term='didier'/><title type='text'>Idenfitication Woes</title><content type='html'>Last year, Tom and I worked on a &lt;a href="http://sites.google.com/site/eppokj/storage/071-4055-841-39-project-presentation-koppe-haskell.ppt?attredirects=0"&gt;project&lt;/a&gt; &lt;a href="http://sites.google.com/site/eppokj/storage/071-4055-841-39-project-report-koppe-haskell.doc?attredirects=0"&gt;called&lt;/a&gt; &lt;a href="http://sites.google.com/site/eppokj/storage/071-4055-841-39-project-tutorial-koppe-haskell.doc?attredirects=0"&gt;Obfuscator&lt;/a&gt; for our &lt;a href="http://register.rit.edu/courseSchedule/20071/40/55/841/39"&gt;forensics course&lt;/a&gt;. The project was to demonstrate, to our class, that changing file signatures was as easy as changing file extensions and therefore the thoroughness of file signature analysis tools is questionable. When Harlan &lt;a href="http://windowsir.blogspot.com/2008_01_01_archive.html"&gt;blogged&lt;/a&gt; that anti-forensics , "techniques don't defeat tools...they defeat examiners." I quickly replied alluding to our (Tom and my) conclusion about fully understanding the capabilities of our forensic tools and how file identification (just like people authentication) is HARD.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A while back, Harlan &lt;a href="http://windowsir.blogspot.com/2008/07/analysis-question.html"&gt;asked a question&lt;/a&gt; about a &lt;a href="http://blog.didierstevens.com/2008/06/09/quickpost-embedding-an-executable-in-a-vbscript/"&gt;script &lt;/a&gt;from Didier Stevens that embeds an executable inside a VBScript.&lt;br /&gt;&lt;br /&gt;"&lt;span style="FONT-STYLE: italic"&gt;What would you look for if you were analyzing a system and trying to determine if something like this had been used?&lt;/span&gt;"&lt;br /&gt;&lt;br /&gt;Well no one posted a reply to you Harlan... and after thinking about this question since July 2nd, my response is still: I don't know.&lt;br /&gt;&lt;br /&gt;Static file analysis could search for binary execution methods ... like Run for wscript ... but that would be impractical, I think. As with identifying a file, identifying a malicious script isn't as easy as it looks.&lt;br /&gt;&lt;br /&gt;So rather than really answering Harlan's question, I'll ask one: &lt;span style="FONT-STYLE: italic"&gt;&lt;br /&gt;Is writing and executing an executable a common scenario in scripting?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-3730553261240949773?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/3730553261240949773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=3730553261240949773' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/3730553261240949773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/3730553261240949773'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/07/obfuscator.html' title='Idenfitication Woes'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-6669855823631107660</id><published>2008-07-10T19:49:00.001-04:00</published><updated>2008-07-10T22:11:52.459-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regripper'/><category scheme='http://www.blogger.com/atom/ns#' term='hobocopy'/><category scheme='http://www.blogger.com/atom/ns#' term='pagingfiles'/><title type='text'>Registry Analysis #1</title><content type='html'>&lt;div&gt; &lt;/div&gt;&lt;div&gt; &lt;/div&gt;Summary:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles&lt;/li&gt;&lt;li&gt;I need to read Hobocopy documentation to make it work in Vista x64&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;If you can't copy a file from a mounted VMDK, try mounting and copying as administrator&lt;/li&gt;&lt;li&gt;Yay -- now I can play with RR&lt;br /&gt;  &lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;After Harlan posted about an interesting &lt;a href="http://windowsir.blogspot.com/2008/07/shutdowncount.html"&gt;registry&lt;/a&gt; entry this morning, I thought of the systeminfo utility. I thought, "I wonder if the systeminfo tool queries the registry for similar information?". So I fired up &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx?PHPSESSID=d926"&gt;Process Monitor&lt;/a&gt;, set filters for the Registry Event Class and executed systeminfo. Once systeminfo finished, I stopped the capture and searched for systeminfo within Process Monitor. It appears that the systeminfo binary directly queries some registry values and also utilizes WMI. Cool. So I posted a reply to Harlan saying there's some interesting material there. But, I didn't say which entries seemed interesting. Harlan asked me what was interesting, so I went back to look.  I found TimeZoneInformation and some network adapter information (both of which were covered by &lt;a href="http://www.google.com/url?sa=t&amp;amp;ct=res&amp;amp;cd=3&amp;amp;url=http%3A%2F%2Fsourceforge.net%2Fproject%2Fshowfiles.php%3Fgroup_id%3D164158&amp;amp;ei=or52SIHWPIqWsAOW3u2dBg&amp;amp;usg=AFQjCNG38iiFGCCWSc2glS1xoyzzC3Rfig&amp;amp;sig2=OuY8eRxB6KBAjB6QlixGhw"&gt;RR&lt;/a&gt; plugins).  So I tried to find something that wasn't in RR, and I think I did:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;strong&gt;Paging File Location&lt;/strong&gt;&lt;br /&gt;(HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles)&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Information: &lt;a href="http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/regentry/46699.mspx?mfr=true"&gt;here&lt;/a&gt; ... this value is a REG_MULTI_SZ in Vista rather than the REG_BINARY as listed inthe MS article.&lt;br /&gt;Significance to RA: If the page file is not in the default location \pagefile.sys, you'll want to know where it is.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The systeminfo utility also reports tidbits like patch levels; however, I'm not sure (yet) if this is listed in the registry.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SHap2hnFqfI/AAAAAAAAAE0/TB3CPBsOzE4/s1600-h/firstInterestingRegistryEntries.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SHap2hnFqfI/AAAAAAAAAE0/TB3CPBsOzE4/s320/firstInterestingRegistryEntries.JPG" alt="" id="BLOGGER_PHOTO_ID_5221547572183017970" border="0" /&gt;&lt;/a&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;The remainder of this post shows some of my experiences in registry hive acquisition (summary items 2-4)&lt;br /&gt;&lt;br /&gt;Until now, I did not think that I had an easy way to get access to registry hives. Before tonight, I tried mounting a vmdk on my desktop with VMware Workstation's drive mapping feature so that I could simply copy the hives, but that failed:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_dxGru3LNmpk/SHaxJXeR22I/AAAAAAAAAFE/EE2aMOrrEgg/s1600-h/vmmountFail.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_dxGru3LNmpk/SHaxJXeR22I/AAAAAAAAAFE/EE2aMOrrEgg/s320/vmmountFail.JPG" alt="" id="BLOGGER_PHOTO_ID_5221555592460622690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SHayaaITKDI/AAAAAAAAAFM/nJJXLJHWMkw/s1600-h/vmmoutnfail2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SHayaaITKDI/AAAAAAAAAFM/nJJXLJHWMkw/s320/vmmoutnfail2.JPG" alt="" id="BLOGGER_PHOTO_ID_5221556984743143474" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I figured the file was just locked or something -- and a while ago, I stumbled upon a  post that mentioned using VSS to copy a file that is in use but I shrugged it off because they didn't have Vista binaries. Well, I just searched and there's an open source project! Its called &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=117783&amp;amp;package_id=204974"&gt;HoboCopy&lt;/a&gt; (enter chuckle about my &lt;a href="http://nssadoc.blogspot.com/2008/06/scripting-mistake.html"&gt;scripting issue&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;So, I downloaded hobocopy for vista x64 and executed it:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SHawKnLRpZI/AAAAAAAAAE8/k9hLzrJLNMU/s1600-h/hobofail.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SHawKnLRpZI/AAAAAAAAAE8/k9hLzrJLNMU/s320/hobofail.JPG" alt="" id="BLOGGER_PHOTO_ID_5221554514344125842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I missed the Visual Studio 2008 libraries dependencies (vcredist_x64.exe)... Once those were installed, the hobocopy still wouldn't run under my Jason user... so I opened an elevated shell and hobocopy ran fine.&lt;br /&gt;&lt;br /&gt;When I tried to change to virtual drive of the VMDK within my elevated shell, the shell explained:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;The system cannot find the drive specified.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;PowerShell also explained:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SHa3l8HB2MI/AAAAAAAAAFk/Nb8wPIqo5e0/s1600-h/whereisZ.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SHa3l8HB2MI/AAAAAAAAAFk/Nb8wPIqo5e0/s320/whereisZ.JPG" alt="" id="BLOGGER_PHOTO_ID_5221562680401320130" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I confirmed that the drive was still accessible in my Jason shell (PowerShell background window). It appears I have a user-specific drive letter? Weird...&lt;br /&gt;&lt;br /&gt;I really wanted to get hobocopy to copy the system hive, so I went to mount the vmdk with vmware-mount in the elevated shell, but it didn't exist in my workstation folder!  I'm assuming this is because I'm using VMware WS 6.5b2.&lt;br /&gt;&lt;br /&gt;So I elevated VMware Workstation, mounted the vmdk and tried to copy the file with hobocopy -- it failed.  But, I was able to copy the hive file just fine with copy!&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_dxGru3LNmpk/SHa3D3qXruI/AAAAAAAAAFc/1iOVbZ1j560/s1600-h/hobofail-copywork.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_dxGru3LNmpk/SHa3D3qXruI/AAAAAAAAAFc/1iOVbZ1j560/s320/hobofail-copywork.JPG" alt="" id="BLOGGER_PHOTO_ID_5221562095091822306" border="0" /&gt;&lt;/a&gt;Summary:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PagingFiles&lt;/li&gt;&lt;li&gt;I need to read Hobocopy documentation to make it work in Vista x64&lt;br /&gt;  &lt;/li&gt;&lt;li&gt;If you can't copy a file from a mounted VMDK, try mounting and copying as administrator&lt;/li&gt;&lt;li&gt;Yay -- now I can play with RR&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-6669855823631107660?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/6669855823631107660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=6669855823631107660' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/6669855823631107660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/6669855823631107660'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/07/registry-analysis-1.html' title='Registry Analysis #1'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_dxGru3LNmpk/SHap2hnFqfI/AAAAAAAAAE0/TB3CPBsOzE4/s72-c/firstInterestingRegistryEntries.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-9025426382449156211</id><published>2008-06-30T23:55:00.000-04:00</published><updated>2008-07-01T01:00:15.135-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='robocopy'/><category scheme='http://www.blogger.com/atom/ns#' term='process explorer'/><category scheme='http://www.blogger.com/atom/ns#' term='sysinternals'/><title type='text'>Scripting Mistake</title><content type='html'>This evening, a scripting mistake led me to learn about a feature in Systintenals' &lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx"&gt;Process Explorer&lt;/a&gt; that I had not previously known about. I subscribe to Mark's blog (listed in the System Administration blogs) and he writes a series titled, "The Case of..." where he details his troubleshooting process for a specific issue. In his post, &lt;a id="bp___ctl00___RecentPosts___postlist___EntryItems_ctl02_PostTitle" href="http://blogs.technet.com/markrussinovich/archive/2008/04/07/3031251.aspx"&gt;The Case of the System Process CPU Spikes&lt;/a&gt;, he demonstrated pretty cool uses of Process Explorer -- since I read that post in April, I've been running Process Explorer in my little tray just like he described in his post. Occasionally I find uses for it like closing stale processes -- but I've never REALLY used it until tonight.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Earlier, I wanted utilize robocopy to synchronize my local caches of the Systinternals' tools from &lt;a href="file://live.sysinternals.com/"&gt;file://live.sysinternals.com/&lt;/a&gt;. I maintain two copies: one on my OS drive and one on my thumb drive. My purpose for this is is that I want these tools immediately available when I want to run them -- and while the live share is nice, it takes a few seconds to load.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;So I wrote a simple batch script; and made a rudimentary scripting mistake: I wrote a batch script titled robocopy.bat and attempted to call the robocopy executable without specifying it's full path. Here is my original script:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_dxGru3LNmpk/SGmzTRW_77I/AAAAAAAAADs/yBpc6Tob-Tk/s1600-h/runrobocopybat.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5217898786944184242" style="margin: 0px auto 10px; display: block; text-align: center;" alt="" src="http://bp3.blogger.com/_dxGru3LNmpk/SGmzTRW_77I/AAAAAAAAADs/yBpc6Tob-Tk/s320/runrobocopybat.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;So, this mistake led to some Windows Command Processor crashes:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGm0GAZI6II/AAAAAAAAAD0/g9vDiRCPXKc/s1600-h/InfiniteLoop.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGm0GAZI6II/AAAAAAAAAD0/g9vDiRCPXKc/s320/InfiniteLoop.jpg" alt="" id="BLOGGER_PHOTO_ID_5217899658563086466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dxGru3LNmpk/SGm0GEe2gRI/AAAAAAAAAD8/thF83za8rME/s1600-h/Stopped+working.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_dxGru3LNmpk/SGm0GEe2gRI/AAAAAAAAAD8/thF83za8rME/s320/Stopped+working.jpg" alt="" id="BLOGGER_PHOTO_ID_5217899659660787986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGm0GWoUxBI/AAAAAAAAAEE/onPprVIo2h0/s1600-h/Stopped+working2.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGm0GWoUxBI/AAAAAAAAAEE/onPprVIo2h0/s320/Stopped+working2.jpg" alt="" id="BLOGGER_PHOTO_ID_5217899664532358162" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Interesting right?  The infinite loop caused CMD.exe to crash (I guess it's time to install PowerShell and actually read those powershell books on my bookshelf.)  When CMD crashed, I went to edit the batch script but wasn't able to save modifications:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGm0duDqLuI/AAAAAAAAAEM/Ivdr87FyuSc/s1600-h/CannotCreateTheFile.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGm0duDqLuI/AAAAAAAAAEM/Ivdr87FyuSc/s320/CannotCreateTheFile.jpg" alt="" id="BLOGGER_PHOTO_ID_5217900065958014690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;OK.  I figured that cmd.exe had a lock on the handle -- and I remembered that &lt;a href="http://nssadoc.blogspot.com/2008/06/windows-fsa-tools.html"&gt;OpenedFilesView wouldn't work in Vista x64&lt;/a&gt;, I didn't feel like downloading a utility and I certainly didn't feel like logging out.&lt;br /&gt;&lt;br /&gt;Somehow, I ended up searching for the file handle with Process Explorer's handle or DLL search feature.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_dxGru3LNmpk/SGm1N2hcm0I/AAAAAAAAAEU/b5YKW6GuY6w/s1600-h/FindHandle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_dxGru3LNmpk/SGm1N2hcm0I/AAAAAAAAAEU/b5YKW6GuY6w/s320/FindHandle.jpg" alt="" id="BLOGGER_PHOTO_ID_5217900892864158530" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGm1OK9UfRI/AAAAAAAAAEk/kCF6dXHA4e4/s1600-h/ProcessExcplorterSearch.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGm1OK9UfRI/AAAAAAAAAEk/kCF6dXHA4e4/s320/ProcessExcplorterSearch.jpg" alt="" id="BLOGGER_PHOTO_ID_5217900898349776146" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGm1WVh_cOI/AAAAAAAAAEs/ssBFSJeSNyY/s1600-h/CloseTheHandle.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGm1WVh_cOI/AAAAAAAAAEs/ssBFSJeSNyY/s320/CloseTheHandle.jpg" alt="" id="BLOGGER_PHOTO_ID_5217901038626894050" border="0" /&gt;&lt;/a&gt;After closing the handle, I was able to save modifications to the batch script.&lt;br /&gt;&lt;br /&gt;Finally, I fixed my script to call the robocopy executable by it's absolute full path:&lt;br /&gt;&lt;br /&gt;C:\Windows\System32\Robocopy.exe&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm glad I learned about the file handle search feature in Process Explorer -- this utility is incredible.  Thanks Sysinternals.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-9025426382449156211?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/9025426382449156211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=9025426382449156211' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/9025426382449156211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/9025426382449156211'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/scripting-mistake.html' title='Scripting Mistake'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_dxGru3LNmpk/SGmzTRW_77I/AAAAAAAAADs/yBpc6Tob-Tk/s72-c/runrobocopybat.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-4766841547689609815</id><published>2008-06-27T11:08:00.000-04:00</published><updated>2008-06-27T16:11:12.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='pxe'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp'/><title type='text'>Revisit: Differential Analysis - WDS &amp; DHCP</title><content type='html'>Tom and I wanted to make a couple statements and clarifications about our &lt;a href="http://nssadoc.blogspot.com/2008/06/differential-analysis-wds-dhcp.html"&gt;post&lt;/a&gt; earlier this week.  First, we got the environment to function.  Read on to find out how.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Purpose&lt;/span&gt;&lt;br /&gt;The reason we undertook this project was two fold: primarily to see if it would work, but also because we believe that an established DHCP infrastructure should welcome a separate WDS server -- we believe that WDS should be able to function within the same domain but on a different server than the DHCP service.  It should be as simple as specifying which DHCP services work with WDS.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Semi-Functional?&lt;/span&gt;&lt;br /&gt;This morning, we were able to get a deployment of Vista running beyond the standstill we had a few days ago.  The procedures we described in our previous post were wrong.  We had defined DHCP option 67 as boot\x86\pxeboot.com because thats what was on the original WDS+DHCP server.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGUMOPQZpmI/AAAAAAAAAC8/-R77BUIECj8/s1600-h/wrongDHCPOptions.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGUMOPQZpmI/AAAAAAAAAC8/-R77BUIECj8/s320/wrongDHCPOptions.bmp" alt="" id="BLOGGER_PHOTO_ID_5216589182131611234" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Wrong DHCP Option 67&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;This, caused the client to load and execute the files in the following order:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGUOzeukzZI/AAAAAAAAADE/c4zN171S0mE/s1600-h/pxebootcomNOWDSNBP.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGUOzeukzZI/AAAAAAAAADE/c4zN171S0mE/s320/pxebootcomNOWDSNBP.bmp" alt="" id="BLOGGER_PHOTO_ID_5216592020963118482" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of failing boot session&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;  So, after some more searches on Google, we came across &lt;a href="http://technet2.microsoft.com/WindowsVista/en/library/b001a736-91db-4f91-bd92-278e267e06d91033.mspx?mfr=true"&gt;this&lt;/a&gt; article.  Apparently, we skipped steps 1 and 2 of the Deployment Process (load WDSNBP, validate DHCP packet, and download pxeboot.com).  The change we made today (changing DHCP option 67 from &lt;span style="font-weight: bold;"&gt;boot\x86\pxeboot.com&lt;/span&gt; to &lt;span style="font-weight: bold;"&gt;boot\x86\wdsnbp.com&lt;/span&gt;) caused the PXEClient to load and exeucte wdsnbp.com prior to loading and executing pxeboot.com.    In fact, we're pretty sure that WDSNBP sends the DHCP request that causes the server to send the ACK with &lt;span style="font-weight: bold;"&gt;boot\x86\&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;pxeboot.com&lt;/span&gt; as DHCP option 67.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGURTuCH88I/AAAAAAAAADM/zGNCSdpRGEI/s1600-h/WDSNBPinitiatesDHCPRA.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGURTuCH88I/AAAAAAAAADM/zGNCSdpRGEI/s320/WDSNBPinitiatesDHCPRA.bmp" alt="" id="BLOGGER_PHOTO_ID_5216594773850715074" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of working boot session.&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;So here are the DHCP settings to define in order to run WDS with a pre-existing DHCP infrastructure.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;DHCP Settings to deploy &lt;u&gt;x86 architecture&lt;/u&gt;:&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Predefined Option 43 - 010400000000FF&lt;/li&gt;&lt;li&gt;Custom-made Option 60 - String - PXEClient&lt;/li&gt;&lt;li&gt;Predefined Option 66 - IP or Hostname of the WDS Server (in our case 10.150.150.1)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predefined Option 67 - boot\x86\wdsnbp.com&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Limitations&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;We're pretty sure that we're losing functionality doing this&lt;/span&gt;.  Our setup launches TFTP right after the first DHCP transaction -- skipping a request/ACK.  (this is what DHCP option 43 accomplishes).  It appears that the DHCP request/ACK that we're skipping might be the packet that tells the WDS server which architecture the client is running (x86, x64, ia64).&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dxGru3LNmpk/SGUUJ_4rWmI/AAAAAAAAADU/QaSXTBJ5mTk/s1600-h/learningArchInfo.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_dxGru3LNmpk/SGUUJ_4rWmI/AAAAAAAAADU/QaSXTBJ5mTk/s320/learningArchInfo.bmp" alt="" id="BLOGGER_PHOTO_ID_5216597905379121762" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of original WDS+DHCP transactions&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Knowledge&lt;/span&gt;&lt;br /&gt;We don't know much about WDS and how its innards function -- we're learning while experimenting.  This, most definitely, leads to some dead-ends with respect to progress.  Further, when trying to learn about wdsnbp.com, we found Network Bootstrap Program (NBP).  However, there isn't a lot of information on exactly what it accomplishes.  We assume its some enhanced PXE kernel.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Attention to detail&lt;br /&gt;&lt;/span&gt;&lt;span&gt;Because we're barreling through this process, we missed some obvious signs that the change in the filename was the solution.  First, the loading dialog on the workstation after it receives an address states its executing WDSNBP.&lt;br /&gt;&lt;br /&gt;Contrarily, we assumed that the boot file name (DHCP Option 67) meant something in the first DHCP transaction when WDS and DHCP existed on the same server; this value means nothing in the first DHCP transaction when WDS and DHCP exist on the same server.  When we added DHCP Option 43 (PXE subption for mtftp), we instructed our client to immediately download and execute whichever file we specified in DHCP option 67.  Apparently this needs to be architecture specific wdsnbp.com.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Quote from the PXE Specification&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;"Redirection by the Boot Service to a TFTP service on a remote server should not be done as it is not reasonably possible for the redirecting server to know for certain that the TFTP server being redirected to is truly available."&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Quote from MS about DHCP &amp;amp; WDS&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;"Microsoft does not support the use of these options on a DHCP server to redirect PXE clients."&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;While the PXE developers might not recommend it and Microsoft says the don't support it, we accomplished it (although its architecture specific).  Yay.&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-4766841547689609815?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/4766841547689609815/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=4766841547689609815' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/4766841547689609815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/4766841547689609815'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/revisit-differential-analysis-wds-wds.html' title='Revisit: Differential Analysis - WDS &amp; DHCP'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_dxGru3LNmpk/SGUMOPQZpmI/AAAAAAAAAC8/-R77BUIECj8/s72-c/wrongDHCPOptions.bmp' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-507078118114560190</id><published>2008-06-26T08:46:00.001-04:00</published><updated>2008-06-26T09:08:01.262-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='netboot'/><category scheme='http://www.blogger.com/atom/ns#' term='winboot'/><category scheme='http://www.blogger.com/atom/ns#' term='sanfly'/><category scheme='http://www.blogger.com/atom/ns#' term='emboot'/><category scheme='http://www.blogger.com/atom/ns#' term='simplyrdp'/><title type='text'>Thinclient and Network Booting</title><content type='html'>A few months ago, an acquaintance pitched an idea about an authenticated network boot environment and pointed me to &lt;a href="http://www.emboot.com/"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;emBoot&lt;/span&gt;&lt;/a&gt;.  I downloaded their trial &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;winBoot&lt;/span&gt; software and never used it.  I revisited the site to read about recent updates and I stumbled upon two interesting &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_2"&gt;utilities&lt;/span&gt; that I missed a few months ago: &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;SimplyRDP&lt;/span&gt; and &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;sanFly&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.emboot.com/products_SimplyRDP.htm"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;SimplyRDP&lt;/span&gt;&lt;/a&gt; - this utility uses &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;PXE&lt;/span&gt; to boot into a small OS that just runs an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;RDP&lt;/span&gt;/TS client.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.emboot.com/iSCSIBoot.htm"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;netBoot&lt;/span&gt;/&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;winBoot&lt;/span&gt;&lt;/a&gt; - these utilities enable &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;PXE&lt;/span&gt; clients to boot from an &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;iSCSI&lt;/span&gt; target (&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;netBoot&lt;/span&gt; works for Windows 2000, &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;XP&lt;/span&gt; and Linux; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;winBoot&lt;/span&gt; works with Windows Vista, 2003 and 2008).&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.emboot.com/products_sanFly.htm"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;sanFly&lt;/span&gt;&lt;/a&gt; - enables the creation and management of &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;iSCSI&lt;/span&gt; targets in Windows &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;XP&lt;/span&gt;, Vista, 2003 and 2008.  &lt;em&gt;sanFly is available for download at no cost, but additional functionality can be unlocked by purchasing a license key (emBoot)&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;I'll report back when I've had a chance to play with the utilities or expand the idea of secure network booting.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-507078118114560190?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/507078118114560190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=507078118114560190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/507078118114560190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/507078118114560190'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/thinclient-and-network-booting.html' title='Thinclient and Network Booting'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-1372583003521551660</id><published>2008-06-25T17:01:00.000-04:00</published><updated>2008-06-27T11:42:51.790-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wds'/><category scheme='http://www.blogger.com/atom/ns#' term='pxe'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='dhcp'/><title type='text'>Differential Analysis - WDS &amp; DHCP Separation</title><content type='html'>This post outlines the issues and resolution that Tom and I uncovered while removing DHCP from a Windows Deployment Services (WDS) system and moving it to a separate system.  The post is rather lengthy, so if you're seeking a solution to this problem, we haven't found one. There is a bulleted list of our take-aways and thoughts so far at the end of this post.  The title of this post includes differential analysis because Tom and I compared the functional states of two environments with the non-functional state of our broken system to try to determine a solution.&lt;br /&gt;&lt;br /&gt;A month ago, Ron and Tom setup an Active Directory domain to demonstrate the capabilities of WDS.  A few weeks ago, Kristian and I added Server 2008 clustering capabilities to the AD environment.  Elaboration regarding this environment will happen in the future.&lt;br /&gt;&lt;br /&gt;Yesterday, Tom and I wanted to move the DHCP service from the WDS server to the cluster, as to provide highly available DHCP.  So we had two servers: one running WDS + DHCP (&lt;span style="font-weight: bold;"&gt;hereafter referred to as the WDS Server&lt;/span&gt;) and another running DHCP (&lt;span style="font-weight: bold;"&gt;hereafter referred to as the DHCP Server&lt;/span&gt;).  The goal was to split DHCP and WDS, so we copied the DHCP options from the WDS Server in the picture below to the fresh new DHCP server.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGK36sWxK0I/AAAAAAAAABI/mEe8SkeWdf4/s1600-h/initialDHCPonWDS.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGK36sWxK0I/AAAAAAAAABI/mEe8SkeWdf4/s320/initialDHCPonWDS.jpg" alt="" id="BLOGGER_PHOTO_ID_5215933537415408450" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Working Options from WDS Server&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGK67v_ZNnI/AAAAAAAAABY/Dvhy4Qxefsc/s1600-h/Broken+DHCP+Options+on+DHCP+Server.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGK67v_ZNnI/AAAAAAAAABY/Dvhy4Qxefsc/s320/Broken+DHCP+Options+on+DHCP+Server.jpg" alt="" id="BLOGGER_PHOTO_ID_5215936854105863794" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Options on the DHCP Server&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;We rebooted a workstation whose operating system had been deployed from our WDS Server prior to our WDS &amp;amp; DHCP split.  The workstation churned along at the PXE screen and then displayed the following PXE error message:&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;PXE-E55 Proxy DHCP Service did not reply to request on port 4011&lt;/span&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;br /&gt;&lt;br /&gt;Uh oh.  We called it a day.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;Today, Tom and I revisited the problem by attaching some hubs to our imaging infrastructure and playing the packet capture game.  The WDS server is 10.150.150.1 and the DHCP server is 10.150.150.23 -- the following DHCP scope options were configured when the issue was occurring.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_dxGru3LNmpk/SGK6k-Aj0EI/AAAAAAAAABQ/UFAn0YzlgzU/s1600-h/nonworkingDHCPonDHCP.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_dxGru3LNmpk/SGK6k-Aj0EI/AAAAAAAAABQ/UFAn0YzlgzU/s320/nonworkingDHCPonDHCP.bmp" alt="" id="BLOGGER_PHOTO_ID_5215936462731857986" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of the problem&lt;/span&gt;&lt;br /&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;/div&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;br /&gt;The packet capture above shows the problem.  The workstation going through the PXE process grabs an IP from the DHCP server and then sends a DHCP discover to port 4011 of the DHCP server.  (Note that the error we receive on the workstation mentions port 4011.)  Then, the DHCP server replies with an ICMP port unreachable message -- an active rejection of the packet.&lt;br /&gt;&lt;br /&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;So, when we noticed this, we knew the problem was going to be getting the workstation to send that second DHCP discover to the WDS server on port 4011 rather than back at the DHCP server.  We captured the traffic for a working DHCP + WDS transaction thinking we could compare the working setup with our target setup.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dxGru3LNmpk/SGLBoOSdLeI/AAAAAAAAABo/8VX9ox3ciqA/s1600-h/working+original+wds.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_dxGru3LNmpk/SGLBoOSdLeI/AAAAAAAAABo/8VX9ox3ciqA/s320/working+original+wds.bmp" alt="" id="BLOGGER_PHOTO_ID_5215944215222889954" border="0" /&gt;&lt;/a&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;/insert&gt;&lt;div style="text-align: center;"&gt;&lt;insert style="font-weight: bold;" dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;span style="font-weight: bold;"&gt;Capture of the working DHCP+WDS transaction&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;/insert&gt;&lt;/insert&gt;&lt;/div&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;So, we tried mucking with some settings on both the DHCP and WDS servers  based on analyzing the  differences in the DHCP ACKs from the working (packet #31 - capture of the working DHCP+WDS transaction) and non-working (packet #23 - capture of the problem) captures and no combination of configuration changes led to a different error or a success.  Some of the settings we messed with include&lt;/insert&gt;&lt;/insert&gt; DHCP Option 54 Server Identifier, Do not listen on port 67, and changing DHCP Option 66 to a non-existent IP address in the working environment to see if the change would break the system.&lt;br /&gt;&lt;insert dhcp="" scope="" options=""&gt;&lt;insert packet="" capture=""&gt;&lt;br /&gt;So we started searching Google some more and came across &lt;a href="http://support.microsoft.com/kb/259670"&gt;this&lt;/a&gt; Microsoft page.  Microsoft tells us, "&lt;/insert&gt;&lt;/insert&gt;&lt;b&gt;Important&lt;/b&gt;: Microsoft does not support the use of these options on a DHCP server to redirect PXE clients."  Well, thanks, but no thanks.&lt;br /&gt;&lt;br /&gt;Then we remembered that we have a working pxelinux environment.  The pxelinux configuration files are served up by Microsoft's TFTPD and DHCP is offered by Microsofts DHCP 2003 service.  Further, the DHCP and TFTP servers are separate!  (oh, and IT WORKS)&lt;br /&gt;&lt;br /&gt;We decided to setup another capture session, this time monitoring our working pxelinux environment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGLCM-gVQII/AAAAAAAAAB0/ItF4DoG75DE/s1600-h/working+pxelinux+environment.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGLCM-gVQII/AAAAAAAAAB0/ItF4DoG75DE/s320/working+pxelinux+environment.bmp" alt="" id="BLOGGER_PHOTO_ID_5215944846641283202" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of the working pxelinux DHCP+TFTP transaction&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Then, Tom expanded the DHCP ACK and noticed DHCP option 43 was used!&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGLFfosyhfI/AAAAAAAAAB8/OZYKJrFKvRw/s1600-h/option+43.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGLFfosyhfI/AAAAAAAAAB8/OZYKJrFKvRw/s320/option+43.bmp" alt="" id="BLOGGER_PHOTO_ID_5215948465740350962" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;DHCP option 43&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;So, Tom updated the DHCP server settings in our WDS environment accordingly.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dxGru3LNmpk/SGLF2u-TJ9I/AAAAAAAAACM/jnVmkiq1Bvc/s1600-h/Working+DHCP+Options+on+DHCP+Server.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_dxGru3LNmpk/SGLF2u-TJ9I/AAAAAAAAACM/jnVmkiq1Bvc/s320/Working+DHCP+Options+on+DHCP+Server.jpg" alt="" id="BLOGGER_PHOTO_ID_5215948862561396690" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Updated DHCP options (working!)&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;div style="text-align: left;"&gt;And, voila!  The workstation in the WDS environment now directs TFTP GETs to the WDS server right after the DHCP transaction.  Cool.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_dxGru3LNmpk/SGLGr33EnqI/AAAAAAAAACU/DhgN7rbd3xQ/s1600-h/working+new+wds.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_dxGru3LNmpk/SGLGr33EnqI/AAAAAAAAACU/DhgN7rbd3xQ/s320/working+new+wds.bmp" alt="" id="BLOGGER_PHOTO_ID_5215949775480069794" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-weight: bold;"&gt;Capture of working target setup&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;So, it appears that from our experiment and our working pxelinux environment, the presence of DHCP option 43 with a value of 010400000000FF a PXEClient immediately sends a TFTP get to the DHCP option 66 value for the file value listed in DHCP option 67.&lt;br /&gt;&lt;br /&gt;We wanted to make sure, so we changed DHCP option 66 to a non-existent IP address, and the workstation failed with the message: PXE-E11 ARP Timeout.  A capture of this event showed that the workstation received an address and tried to ARP requested for the non-existent IP address.  This led us to further believe our claim about DHCP option 43.&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_dxGru3LNmpk/SGLP1yxCltI/AAAAAAAAACc/Mj0KumT6dzE/s1600-h/working+dhcp+with+wrong+tftp+ip.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_dxGru3LNmpk/SGLP1yxCltI/AAAAAAAAACc/Mj0KumT6dzE/s320/working+dhcp+with+wrong+tftp+ip.bmp" alt="" id="BLOGGER_PHOTO_ID_5215959841515935442" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;Capture of ARP Timeout&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Re-inspection of the expanded DHCP option 43 in wireshark shows the sub-option PXE mtftp IP setting with no value.  We're somewhat confused what this sub-option means, although we've already hypothesized and proven what it accomplishes in the PXE environment.  A simple Google for PXE Specification finds a &lt;a href="http://www.pix.net/software/pxeboot/archive/pxespec.pdf"&gt;document&lt;/a&gt; that might contain documentation about what this stuff means.&lt;br /&gt;&lt;br /&gt;So, we tried to actually boot into PE 2, but it failed with the message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;WDSClient: There is a problem initializing WDS mode&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Suck.  The clear difference between our target environment and the working WDS environment is that a second DHCP request/ACK doesn't occur.  The ACK in this communication contains DHCP option 252, Proxy Autodiscovery.  A few more captures of the working WDS environment proved that this value changes per DORA/RA scenario.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_dxGru3LNmpk/SGLVzc2_6HI/AAAAAAAAACk/DRxb8arCTEE/s1600-h/dhcp+option+252.bmp"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_dxGru3LNmpk/SGLVzc2_6HI/AAAAAAAAACk/DRxb8arCTEE/s320/dhcp+option+252.bmp" alt="" id="BLOGGER_PHOTO_ID_5215966398345373810" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold;"&gt;DHCP Option 252&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;It looks like we'll have to do some more digging into how WDS dynamically creates BCD files, etc.  Expect another post regarding our end environment in the future.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Remaining thoughts:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Do we lose any functionality by removing DHCP from the WDS server and implementing it elsewhere?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Are there automatic changes to Option 67 by the WDS server?&lt;/li&gt;&lt;li&gt;Are there other lost functions we don't know about or can't think of now?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Probably&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;li&gt;The target ending architecture includes WDS outside of the high availability cluster.&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Can we distribute WDS across the cluster nodes, and use network load balancing to make TFTP via WDS highly available in a similar sense as clustered high availability?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;We shall see...&lt;/li&gt;&lt;li&gt;Could this solve our dynamic BCD creation issues?&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;Lessons of the day:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Differential analysis -- the comparison of system states -- to solve problems is strong and effective.  Not only can it be used in cryptanalysis or other math-oriented problem solving situations, it can be used in system administration.  Thankfully, RIT's ANSA degree program taught us how to read packet captures.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sitebooks are great!&lt;/li&gt;&lt;ul&gt;&lt;li&gt;We had documentation about this DHCP option 43 for our pxelinux environment, but we didn't look at it.  In the old documentation, we should have sought to understand what the option accomplished for our pxelinux environment.&lt;/li&gt;&lt;li&gt;This post is a sitebook!&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;Procedures:&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;To detach DHCP from your WDS server, you need the following options in DHCP options defined in the new DHCP service&lt;/li&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;Predefined Option 43 - 010400000000FF&lt;/li&gt;&lt;li&gt;Custom-made Option 60 - String - PXEClient&lt;/li&gt;&lt;li&gt;Predefined Option 66 - IP or Hostname of the WDS Server&lt;/li&gt;&lt;li&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Predefined Option 67 - filename in WDS for architecture ( in our case it was boot\x86\pxeboot.com )&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-1372583003521551660?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/1372583003521551660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=1372583003521551660' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/1372583003521551660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/1372583003521551660'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/differential-analysis-wds-dhcp.html' title='Differential Analysis - WDS &amp; DHCP Separation'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_dxGru3LNmpk/SGK36sWxK0I/AAAAAAAAABI/mEe8SkeWdf4/s72-c/initialDHCPonWDS.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-7775278631592743259</id><published>2008-06-09T21:26:00.001-04:00</published><updated>2008-06-14T00:55:40.671-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='password reset'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='MINWINPC'/><title type='text'>Server 2008 or Vista MINWINPC</title><content type='html'>From Windows Server 2008 Administrator's Pocket Consultant by William R. Stanek (yes, it's on Books 24x7):&lt;br /&gt;&lt;br /&gt;Using the Command Line During Installation&lt;br /&gt;When you access a command prompt from within Setup, you access the MINWINPC environment used by Setup to install the operating system. During installation, on the Where Do You Want To Install Windows page, you can access a command prompt by pressing Shift+F10. As Table 2-4 shows, the mini Windows PC environment gives you access to many of the same command-line tools that are available in a standard installation of Windows Server 2008.&lt;br /&gt;&lt;br /&gt;So, after you click Install Now -&gt; You can press Shift+F10 and you'll be dropped to a command shell.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The burning question I have is whether this can be used to reset local users passwords&lt;/em&gt;?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-7775278631592743259?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/7775278631592743259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=7775278631592743259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7775278631592743259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7775278631592743259'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/server-2008-or-vista-minwinpc.html' title='Server 2008 or Vista MINWINPC'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-3908780444784638145</id><published>2008-06-09T20:23:00.000-04:00</published><updated>2008-06-14T00:50:41.781-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='regripper'/><category scheme='http://www.blogger.com/atom/ns#' term='usb device list'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='internet explorer password recovery'/><category scheme='http://www.blogger.com/atom/ns#' term='nirsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='forensic utilities'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Windows FSA Tools</title><content type='html'>FSA = Forensic and System Administration&lt;br /&gt;&lt;br /&gt;I subscribe to &lt;a href="http://windowsir.blogspot.com/"&gt;Harlan's blog&lt;/a&gt;, and recently he has made &lt;a href="http://windowsir.blogspot.com/2008/02/getting-started-or-forensic-analysis-on.html"&gt;three&lt;/a&gt; &lt;a href="http://windowsir.blogspot.com/2008/04/free-analysis.html"&gt;separate&lt;/a&gt; &lt;a href="http://windowsir.blogspot.com/2008/05/more-free-tools.html"&gt;posts&lt;/a&gt; about tools; read them.  I was poking around NirSoft (linked from Harlan's blog), and stumbled upon some more tools I feel should be highlighted:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/internet_explorer_password.html"&gt;IE PassView&lt;/a&gt;: Dumps passwords stored in IE (works with IE7 in Vista!)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/usb_devices_view.html"&gt;USBDeview&lt;/a&gt;: Extracts the USB device information stored in the Windows registry from a live system&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.nirsoft.net/utils/recent_files_view.html"&gt;RecentFilesView&lt;/a&gt;: Lists the recently accessed files from a live Windows system&lt;br /&gt;&lt;br /&gt;Note: Harlan's &lt;a href="http://sourceforge.net/project/showfiles.php?group_id=164158"&gt;RegRipper&lt;/a&gt; accomplishes similar feats (usb history, recent files, etc) in an offline fashion, from registry hives on acquired drives or read-only drives.&lt;br /&gt;&lt;br /&gt;Note: OpenedFilesView doesn't work on Vista x64&lt;br /&gt;&lt;br /&gt;Have fun!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-3908780444784638145?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/3908780444784638145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=3908780444784638145' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/3908780444784638145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/3908780444784638145'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/windows-fsa-tools.html' title='Windows FSA Tools'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2144202667466924260.post-7978281219310911765</id><published>2008-06-09T19:16:00.000-04:00</published><updated>2008-06-09T19:56:43.487-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='welcome'/><title type='text'>Welcome</title><content type='html'>The purpose of this blog is to document mishaps, misconfigurations, and general mis-steps during implementation of systems relating to information sciences. Over the years, I've been documenting how to properly setup environments; but, these past few months have made me realize that I've always missed a critical portion of the documentation process: the failures.&lt;br /&gt;&lt;br /&gt;This blog is dedicated to archiving solutions for issues large or small that come about during information system configuration.  The acronym, NSSA, in the title of the blog means: Networking, Security, and Systems Administration.  The name NSSA Documentation was chosen because I couldn't think of a better name or acronym that would cover all the categories and because the blog's original creators attended RIT in the NSSA department.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Please email me at &lt;a href="mailto:Jason.Robert.Koppe@therealgmaildomain.com"&gt;Jason.Robert.Koppe@therealgmaildomain.com&lt;/a&gt; you'd like to become a blog contributor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2144202667466924260-7978281219310911765?l=nssadoc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nssadoc.blogspot.com/feeds/7978281219310911765/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2144202667466924260&amp;postID=7978281219310911765' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7978281219310911765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2144202667466924260/posts/default/7978281219310911765'/><link rel='alternate' type='text/html' href='http://nssadoc.blogspot.com/2008/06/welcome.html' title='Welcome'/><author><name>Jason Koppe</name><uri>http://www.blogger.com/profile/10649074891135062829</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
