<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>58bits - Tech</title>
  <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/" />
  <link rel="self" href="http://www.58bits.com/blog/SyndicationService.asmx/GetAtom" />
  <icon>favicon.ico</icon>
  <updated>2008-12-09T09:12:13.5708349-08:00</updated>
  <author>
    <name>Anthony Bouch</name>
  </author>
  <subtitle>Six bits short of sixty four...</subtitle>
  <id>http://www.58bits.com/blog/</id>
  <generator uri="http://dasblog.info/" version="2.2.8279.16125">DasBlog</generator>
  <entry>
    <title>Televangelism in IT</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/12/09/TelevangelismInIT.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,d8eeafaf-1178-472b-bb87-13dabd244298.aspx</id>
    <published>2008-12-09T05:04:47.1876689-08:00</published>
    <updated>2008-12-09T09:12:13.5708349-08:00</updated>
    <category term="General" label="General" scheme="http://www.58bits.com/blog/CategoryView,category,General.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://en.wikipedia.org/wiki/Image:Billy_Graham_bw_photo,_April_11,_1966.jpg" target="_blank">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="201" alt="435px-Billy_Graham_bw_photo,_April_11,_1966" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/TelevangelisminIT_11628/435px-Billy_Graham_bw_photo,_April_11,_1966_3.jpg" width="147" align="left" border="0" /> Televangelism</a> in
IT - does this work?
</p>
        <p>
I like a good show as much as anyone - but two presentations I came across recently
left me.. er.. well - confused I guess.
</p>
        <p>
While looking for content on the topic of identity management (CardSpace along with
identity selectors that have been implemented on other platforms) I came across this...
a <a href="http://www.novell.com/img/flash/load_stream.html?temp=1&amp;id=bs_2007_fri" target="_blank">2007
Friday BrainShare session at Novell</a>. The opening act is impressive.
</p>
        <p>
A couple of days ago I watched most of <a href="http://channel9.msdn.com/pdc2008/TL23/" target="_blank">A
Lap around "Oslo"</a> at <a href="http://www.microsoftpdc.com/" target="_blank">PDC2008</a>.
Douglas Purdy is electric. 
</p>
        <p>
Both of these presentations have a few things in common. There's a charismatic host,
a series of well rehearsed presentations, plenty of visual queues and powerful message
delivery with a corresponding level of applause. I guess it works since I won't easily
forget the opening moments of the Novell presentation. (Neither of course can compete
with <a href="http://en.wikipedia.org/wiki/Steve_Jobs" target="_blank">Stephen Jobs</a> who
is probably the <a href="http://en.wikipedia.org/wiki/Archbishop" target="_blank">archbishop</a> of
holy product presentations.) 
</p>
        <p>
There <strong><em>was</em></strong> some good stuff in both of these talks- and webcasts,
podcasts, videocasts etc. are an amazing way to get a veritable firehose of information
into your frontal lobe fast. I've learned a ton from good ones.  But sigh...
I just don't feel moved the by the evangelical style adopted by the presentations
above - in fact until I can get <strong><em>past</em></strong> the style of presentation
I have a little trouble concentrating on the message.
</p>
        <p>
I love watching the <a href="http://www.ted.com/" target="_blank">TED</a> talks -
and I love watching presentations that are well rehearsed, well informed - fluid and
even humorous. But, if you ask me, the big show <em><strong>we're gonna change your
life</strong></em> style of televangelism in IT - looks just a little out of place.
</p>
        <p>
Ah well - to each their own... :-)
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=d8eeafaf-1178-472b-bb87-13dabd244298" />
      </div>
    </content>
  </entry>
  <entry>
    <title>That Time Again</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/11/28/ThatTimeAgain.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,ef7b7cac-606d-4a01-9217-a62e4e9d29b7.aspx</id>
    <published>2008-11-27T19:00:09.5997005-08:00</published>
    <updated>2008-11-27T19:00:09.5997005-08:00</updated>
    <category term="CSS/XHTML" label="CSS/XHTML" scheme="http://www.58bits.com/blog/CategoryView,category,CSSXHTML.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well partly as an act of procrastination (the books and reading are piling up), and
partly in recognition of the fact that the previous design sucked big time... I've
redesigned the blogs and photo gallery. It took three days in total - and I think
the results are ok. At least I think it sucks less than the previous design.
</p>
        <p>
Thanks to firebug and a list of fairly well known IE7 issues - it went pretty well
this time. No major CSS gottchas... a pretty good two column liquid layout and drop
shadow as well as less <a href="http://www.58bits.com/blog/2006/12/09/WhatIsCruft.aspx">cruft</a>.
I've dropped IE6 support - too much pain to go there and well.. it's my site... :-)
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=ef7b7cac-606d-4a01-9217-a62e4e9d29b7" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Computer Networks and Internets</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/10/19/ComputerNetworksAndInternets.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,f4a13c77-64ac-4637-b87a-38bdc0bcffcd.aspx</id>
    <published>2008-10-18T17:32:14.726-07:00</published>
    <updated>2008-11-26T20:04:49.9755361-08:00</updated>
    <category term="Books" label="Books" scheme="http://www.58bits.com/blog/CategoryView,category,Books.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the texts for the <a href="http://www.londonexternal.ac.uk/prospective_students/postgraduate/holloway/info_security/syllabus.shtml#network_sec" target="_blank">Network
Security</a> module I'm currently studying is <a href="http://www.cs.purdue.edu/people/comer" target="_blank">Douglas
E. Comer's</a> book  '<a href="http://www.amazon.com/Computer-Networks-Internets-Douglas-Comer/dp/0136061273/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224374502&amp;sr=1-1" target="_blank">Computer
Networks and Internets (5th Edition)</a>'.
</p>
        <p>
          <a href="http://www.amazon.com/Computer-Networks-Internets-Douglas-Comer/dp/0136061273/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1224374502&amp;sr=1-1" target="_blank">
            <img style="border: 0px none ;" alt="comer" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ComputerNetworksandInternets_69F4/comer_3.jpg" width="186" align="left" border="0" height="244" />
          </a>
        </p>
        <p>
The book is a <em>tour de force </em>of all things networking. It's written in a clear,
uncomplicated and beautiful narrative. Comer is obviously brilliant (like I'm able
to judge - just search for his bio online). 
</p>
        <p>
But what makes this book really special is the way you are constantly reminded of
where you are in the bigger scheme of themes; how everything fits together - from
data communications, carrier frequencies and modulation, to LAN/WAN and wireless network
technologies, to higher level protocol and application layer features. 
</p>
        <p>
I don't think I've ever read a technical textbook that I actually didn't want to put
down (at least at times). It normally takes me about a month to work through a 500+
page textbook, longer if it's a yawner... but in a little over a week I've nearly
finished Comer's book - highlighted and marked up. It will remain a permanent member
of my reference library. 
</p>
        <p>
Whether you're a technology professional, or just curious about 'how stuff works'
- this book is for you. 
</p>
        <p>
(I also love the dedication at the beginning of this book... <strong><em>"To Packets
Everywhere".)</em></strong>  
</p>
        <p>
Thank you Douglas E. Comer.
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=f4a13c77-64ac-4637-b87a-38bdc0bcffcd" />
      </div>
    </content>
  </entry>
  <entry>
    <title>The Internet is Amazing</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/10/18/TheInternetIsAmazing.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,77783eac-3b91-41f2-b24a-7e5c2060e18d.aspx</id>
    <published>2008-10-18T16:41:57.748-07:00</published>
    <updated>2008-11-26T20:12:15.069041-08:00</updated>
    <category term="Hardware" label="Hardware" scheme="http://www.58bits.com/blog/CategoryView,category,Hardware.aspx" />
    <category term="Other Tech" label="Other Tech" scheme="http://www.58bits.com/blog/CategoryView,category,OtherTech.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
As if anyone needed more proof. 
</p>
        <p>
In my quest to find the world's best computer keyboard (here in <a href="http://www.58bits.com/blog/2008/07/06/InSearchOfTheWorldsBestComputerKeyboard.aspx" target="_blank">Part1</a> and <a href="http://www.58bits.com/blog/2008/09/15/InSearchOfTheWorldsBestComputerKeyboardII.aspx" target="_blank">Part2</a>),
I've recently settled on my IBM SpaceSaver II and Logitech G9 Laser mouse combination.
The mouse is great - but as I wrote earlier - the key action on the keyboard was just
a little off - feeling a bit 'plasticy'. Some keys were actually a little stiff and
squeaky as well (it's at least five years old - purchased second hand from e-Bay).
</p>
        <p>
I figured there must be at least one other IBM SpaceSaver II owner out there that
has taken their keyboard apart, cleaned it up, lubricated the keys and put it back
together again - and I was right.
</p>
        <p>
I found this page... <a href="http://repair4keyboard.org/disassembly_ibm.html" target="_blank">How
to Clean, Upgrade, Repair, Mod, Disassemble an IBM Computer Keyboard</a>, with the
two links below at the bottom of the page... in Japanese.
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/TheInternetisAmazing_5922/IBM_clean_01_2.jpg">
            <img style="border: 0px none ;" alt="IBM_clean_01" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/TheInternetisAmazing_5922/IBM_clean_01_thumb.jpg" width="579" border="0" height="93" />
          </a>
        </p>
        <p>
The <a href="http://mineko.fc2web.com/box/kb-room/items/ibm-spacesaverIIkeyboard-jp.html" target="_blank">Illustrated
link at Neko's Keyboard room</a> saved me... because there are two hidden screws under
the scroll button on the keyboard.
</p>
        <p>
          <a href="http://mineko.fc2web.com/box/kb-room/items/ibm-spacesaverIIkeyboard-jp.html" target="_blank">
            <img style="border: 0px none ;" alt="kakusi-neji" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/TheInternetisAmazing_5922/kakusi-neji_3.jpg" width="396" border="0" height="252" />
          </a>
        </p>
        <p>
With the following explanation of how to remove the middle button...
</p>
        <blockquote>既に有名な話ですが、Space Saver II Keyboard の 筐体を開ける際にはトラックポイントのスクロールボタンの下にもネジも外します。
これを知らないと最悪力任せに「ベキッ」ですので注意です。 センターボタンは下からマイナスドライバをつっこんで、テコのように外します。 </blockquote>
        <p>
 
</p>
        <p>
This is the amazing part... thanks to <a href="http://babelfish.yahoo.com/" target="_blank">Yahoo
Babel Fish</a>... the above translates into...
</p>
        <blockquote>
          <p>
Already, it is famous story, but the case where the frame of Space Saver II Keyboard
is opened you remove also the screw even under the scroll button of the track/truck
point. Unless this is known, because “[bekitsu]” is in the worst power leaving, it
is note. Thrusting 0 driver from under, like the lever you remove the center button.
</p>
        </blockquote>
        <p>
 
</p>
        <p>
Which with some creative interpretation means... 
</p>
        <blockquote>"It's really really important that you know that there are two hidden
screws under the scroll button or you will never get the front panel of your keyboard
off! By carefully placing a thin slot screwdriver under the front of the scroll button
- it will pop off, and you can remove the screws :-)"</blockquote>
        <p>
 
</p>
        <p>
Not sure about "<strong>bekitsu</strong>" - but that looks like the perfect place
to insert your preferred expletive.
</p>
        <p>
So there was <strong><em>one</em></strong> other person out there - somewhere on the
planet, that had already done what I was trying to do... and that person was in Japan.
Thanks to his post, the Internet, and Babel Fish - not only did I find him.. but I
discovered something valuable in the process.
</p>
        <p>
Incredible.
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=77783eac-3b91-41f2-b24a-7e5c2060e18d" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Lessons in Web Site Security</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/10/18/LessonsInWebSiteSecurity.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,5fe501d3-2335-4e1c-9770-eaf31a529336.aspx</id>
    <published>2008-10-17T18:51:40.714-07:00</published>
    <updated>2008-10-17T19:02:45.2133292-07:00</updated>
    <category term="Security" label="Security" scheme="http://www.58bits.com/blog/CategoryView,category,Security.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I found this series of links on the topic of XSS and other Web site security issues
pretty interesting...
</p>
        <p>
          <a href="http://www.codinghorror.com/blog/archives/001172.html" target="_blank">Programming
Is Hard, Let's Go Shopping!</a> from Jeff Atwood, in response to this post, <a href="http://www.25hoursaday.com/weblog/2008/08/31/DevelopersUsingLibrariesIsNotASignOfWeakness.aspx" target="_blank">Developers,
Using Libraries is not a Sign of Weakness</a> - from Dare Obasanjo as well as this... <a href="http://wiki.developer.mindtouch.com/Community/SgmlReader" target="_blank">SgmlReader
(and HTML parser)</a>  from Mindtouch, and this...<a href="http://blogs.msdn.com/hackers/archive/2007/11/12/first-line-of-defense-for-web-applications-part-4.aspx" target="_blank">First
Line of Defense for Web Applications – Part 4</a>  by Anmol Malhotra
</p>
        <p>
As an aside... <a href="http://www.codeplex.com/dasBlog" target="_blank">dasBlog</a> has
an html/xhtml parser/verifier which, under the terms of the <a href="http://www.codeplex.com/dasBlog/license" target="_blank">dasBlog
open source license</a>, could be used in other projects. I'm regularly impressed
with the guts of dasBlog...some cool stuff in there.
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=5fe501d3-2335-4e1c-9770-eaf31a529336" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Information Security Management, Threat Analysis and Modeling</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/10/16/InformationSecurityManagementThreatAnalysisAndModeling.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,f79b94d0-b54b-4129-b1b1-45c33f95416e.aspx</id>
    <published>2008-10-16T11:30:17.3601767-07:00</published>
    <updated>2008-11-27T20:21:33.4090326-08:00</updated>
    <category term="Enterprise" label="Enterprise" scheme="http://www.58bits.com/blog/CategoryView,category,Enterprise.aspx" />
    <category term="Security" label="Security" scheme="http://www.58bits.com/blog/CategoryView,category,Security.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <font color="#ff0000">
            <strong>Update: 28-11-2008</strong>
          </font> - Microsoft have
released an update - v3 of the SDL Threat Modelling Tool - which is DFD based as opposed
to use case driven. Check it out at <a href="http://msdn.microsoft.com/en-us/security/dd206731.aspx" target="_blank">The
Microsoft SDL Threat Modeling Tool v3</a></p>
        <p>
          <strong>Original post....</strong>
        </p>
        <p>
In my first year on the MSc programme at <a href="http://www.isg.rhul.ac.uk/" target="_blank">RHUL
ISG</a>,  I completed a course on security management, and while that hardly
makes me an expert (since I'm still new to the world of information security), the
course was excellent, and I learned a lot about the fundamentals of building an information
security management system.
</p>
        <p>
At its most basic level, information security management is about attempting to estimate
the probability and impact of unwanted events; events that may effect the confidentiality,
availability or integrity of information assets. Estimates about the risks associated
with these events can then be used to make decisions about what measures (if any)
an organisation will choose to implement as part of its overall information security
management strategy.
</p>
        <p>
The process of estimating and assessing risk should be guided by an information security
policy that, among other things, will state the aims, values and objectives of an
organization with regards to risk. The policy, when combined with legal, businesses
and moral responsibilities will (or at least should) influence the choices that are
made in managing risk within an organization (the <a href="http://www.27000.org/" target="_blank">ISO
27000</a> series of documents is the place to start if you'd like to know more about
building an information security management system (ISMS)).
</p>
        <p>
The process of producing risk estimates is called risk assessment, and while there
are different techniques for performing a risk assessment, the  common goal of
each is to produce a metric that allows risks to be weighed. Weighting risks allows
an organization to make appropriate decisions about how to prioritise and manage risk.
</p>
        <p>
One formula that is often used to describe the calculation of risk is: <strong>risk
= threat x vulnerability x impact,  </strong>which translates to: What is the
level of an identified threat (how common is it, how relevant is it to the industry
or asset in question), how vulnerable is the asset or system to the threat, and what
is the impact if the vulnerability to a specific threat for a specific asset is realized.
If any of the factors are zero - then risk is is also zero.
</p>
        <p>
Acceptable choices in managing risk include: 1) accept the risk, 2) mitigate the risk,
3) transfer the risk or 4) avoid the risk.
</p>
        <p>
The first task then is to work out what the threats are, creating an applicable threat
model (well actually the first task is to work out what your assets are - how much
they're worth to you, and what a total loss of that asset would cost you in both tangible
and intangible terms - but let's assume we're at the threat identification stage). 
</p>
        <p>
So how are threats identified? Well I think for the most part they come from a body
of knowledge and experience that exists for a given industry and its assets. For example
- a jewellery shop is likely to consider the threat of theft to be relevant since
it has stuff of value, and jewellers have learned, through experience, that a small
percentage of the population will attempt to steal things of value, ergo.. theft is
a threat. How vulnerable the jewellery shop is to theft depends on where it's located,
how valuable the jewels are, and whether or not the shop has implemented any measures
designed to prevent theft- like locks on cabinets, security cameras, security cards
etc.
</p>
        <p>
Threats against computer systems and networks also require a body of knowledge in
terms of historical and current threats. One approach in helping to identify threats
as part of risk assessment is to use a threat library, or database of known threats.
There are a few systems out there that take this approach - like a software tool called <a href="http://www.cramm.com/overview/expert.htm" target="_blank">CRAMM
Expert</a> (based on the the <a href="http://en.wikipedia.org/wiki/CRAMM" target="_blank">CRAMM</a> methodology)
which includes a database of threats that you can use to create a threat model for
your organisation.
</p>
        <p>
This evening, during another one of those serendipitous link journeys, combined with
some reading I've been doing on application lifecycle and security, led me to discover
a link to the <a href="http://msdn.microsoft.com/en-us/security/cc421514.aspx" target="_blank">Threat
Modeling Tool</a> tool from Microsoft. While other methodologies in risk assessment
cover a wide range of threats and security management issues, Microsoft's tool is
geared specifically towards managing risk in software (not surprisingly) and is part
of Microsoft's <a href="http://msdn.microsoft.com/en-us/security/cc448177.aspx" target="_blank">Security
Development Lifecycle (SDL)</a> methodology. 
</p>
        <p>
I think this tool (and the methodology) is pretty interesting. For starters it's free,
which shows how committed Microsoft is to not only producing secure software, but
to helping the community at large incorporate secure software development practices
into their overall software development process. 
</p>
        <p>
In fact it was this post by Adam Shostack, <a href="http://blogs.msdn.com/sdl/archive/2008/10/08/experiences-threat-modeling-at-microsoft.aspx" target="_blank">Experiences
in Threat Modeling At Microsoft</a> (an excellent article) which led me to the SDL
portal, and it was a reference in <a href="http://www.schneier.com/" target="_blank">Bruce
Schneier's</a> - Crypto-Gram monthly newsletter that led me to Adam Shostack's post.
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_01_2.jpg" target="_blank">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="406" alt="threat_model_01" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_01_thumb.jpg" width="256" align="left" border="0" />
          </a> I
can't claim to be an expert in using this tool after just 30 minutes of experimenting...
but I was impressed. Using the the "New with wizard" option - I was able
to create a rudimentary threat model in just a few minutes. 
</p>
        <p>
The process involved defining user roles (UR), components, service roles (SR) and
data. The tool and the process is 'data centric' and as Adam Shostack points out in
his article, 
</p>
        <blockquote>"... a great many software attacks involve the flow of data through
the system in some way...."</blockquote>
        <p>
Components used in service roles are also assigned relevancies (or features) like
whether the component utilizes HTTP, or builds SQL queries.
</p>
        <p>
Access control rules are created for the defined data entities - both for users and
components.
</p>
        <p>
Application Use Cases are then created which in turn are composed of application calls.
The caller for each call in a use case can be a user role (UR) or a service (SR). 
</p>
        <p>
Threats can then be automatically generated and the tool will attempt to match a list
of attacks in the attack library with the calls in a use case, creating a threat list
for the given use case. The terminology here is slightly different from what I was
taught - since I would have classified the threats that were produced as vulnerabilities,
and the attack library as a threat library or database. 
</p>
        <p>
Here's an example call graph from a simple use case.
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_02_2.jpg" target="_blank">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="225" alt="threat_model_02" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_02_thumb.jpg" width="585" border="0" />
          </a>
        </p>
        <p>
And here's a full screen-shot of the application with an automatically generated threat
(vulnerability) that was created for the "Create User" use case.  I'm
about to choose 'Reduce' as my Risk Response (remember I can choose to avoid, reduce,
transfer or accept a risk). I've also chosen three counter-measures as the mechanisms
I will use to reduce risk (click on the image for a larger version).
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_03_2.jpg" target="_blank">
            <img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="475" alt="threat_model_03" src="http://www.58bits.com/blog/content/binary/WindowsLiveWriter/ThreatAnalysisandModelingTool_13EEF/threat_model_03_thumb.jpg" width="556" border="0" />
          </a>
        </p>
        <p>
There is a lot in here, including being able to specify authentication mechanisms
for roles (which I'm assuming is used to weight and select attacks) as well as analytics
including data access matrix, component access matrix and subject object matrix reports
as well as visualizations for call, data and trust flows. Other reports are divided
into risk owner reports, design team reports, development team reports and test team
reports. Development team reports even include code examples on how to implement selected
countermeasures. 
</p>
        <p>
To be honest I'm not sure entirely where the Threat Analysis and Modelling tool fits
into the data flow diagram (DFD) and "STRIDE per element" approach described
in Adam Shostack's paper. The tool appears to be use case driven as opposed to data
flow diagram driven. 
</p>
        <p>
Also wondering how this application might be integrated with other application design
components, like logical or physical design models. There are options for importing
Visual Studio Team System Deployment reports as well as exporting Team System Work
Items. 
</p>
        <p>
I guess the ultimate test in value will be in how much effort is required to build
and maintain a threat model using this application when compared to other methods.
Large models in particular might be difficult to maintain, although I guess there
is no reason why you couldn't use this application to create several smaller threat
models with only the user/service roles, data and use cases that are specific to a
given feature or iteration of development.
</p>
        <p>
I think it's also worth pointing out that the Threat Analysis and Modelling tool is
just one (albeit important) part of a larger process designed to create secure software.
It is not a replacement for functional, performance, vulnerability (penetration) and
regression testing, nor does it appear to have any risk modelling functions for assessing
application deployment, configuration and change management risks.
</p>
        <p>
My limited experience with both this application and a formal software security development
process means that I'm not able to say how successful this application might be at
helping to 'connect' the security process with application development. But it is
a very interesting product, feature rich and easy to use - with zero financial risk
to boot. 
</p>
        <p>
Managing the risks associated with software, whether developed in-house or acquired
is a core component any information security management process and so any tool that
helps to increase awareness and manage risk in this respect is a good thing.
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=f79b94d0-b54b-4129-b1b1-45c33f95416e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>ASP.Net MVC and Routing Default.aspx</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/09/29/ASPNetMVCAndRoutingDefaultaspx.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,10b2ddfa-057c-41d0-bdc7-564b212ce896.aspx</id>
    <published>2008-09-29T04:42:56.699-07:00</published>
    <updated>2008-11-26T20:03:00.5845981-08:00</updated>
    <category term="ASP.Net" label="ASP.Net" scheme="http://www.58bits.com/blog/CategoryView,category,ASPNet.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Having been inspired by <a href="http://www.codeplex.com/blogsvc" target="_blank">BlogSvc.Net</a>'s
recent switch to the ASP.Net MVC framework - I decided that now was as good a time
as any to begin to get up-to-speed with <a href="http://www.codeplex.com/aspnet" target="_blank">ASP.Net
MVC</a></p>
        <p>
There's a ton of blogosphere content out there already (I've included some of the
more helpful links at the bottom of this post). Access to the source at <a title="http://www.codeplex.com/aspnet" href="http://www.codeplex.com/aspnet">http://www.codeplex.com/aspnet</a> 
combined with a healthy dose of Reflector over the System.Web.Routing assembly... 
and things are slowly starting to fall into place.
</p>
        <p>
While working through the routing process; how routes are defined, the order they're
evaluated and how a default route catchall can be defined... I got a bit hung-up on
default routing and in particular the routing of Default.aspx.
</p>
        <p>
When you create a new ASP.Net MVC project (Preview 5).. the project template creates
a Default.aspx page and places the following in the code behind...
</p>
        <pre class="c#:nocontrols" name="code">public void Page_Load(object sender, System.EventArgs e)
{
    HttpContext.Current.RewritePath(Request.ApplicationPath);
    IHttpHandler httpHandler = new MvcHttpHandler();
    httpHandler.ProcessRequest(HttpContext.Current);
}</pre>
        <p>
What's happening here, is that the Url requested (which was Default.aspx) is being
re-written to the application root "/" and then transferred off of the Webform HTTP
handler and onto the MvcHttpHandler. A request for "/" will match the Default route
entry (show further down)... eventually sending us onto one of the route controllers.
</p>
        <p>
In order to really 'grok' what's going on here in just these few lines of code (and
the first a lot of people are going to see when they start a new ASP.Net MVC project)
... you need to understand a couple of things. Firstly, there are several different
classes named (in part at least) handler, or module in the System.Web.Routing and
System.Web.Mvc namespace. It takes a little investigation to work out the responsibility
of each of these classes and how they each fit into the complete pipeline, from initial
request to the final response and output. For starters - the MvcHttpHandler in the
Page_Load event above is <strong><em>not</em></strong> the normal entry point into
the framework. (In fact, unless the handler defined for the matching route after the
transfer to MvcHttpHandler, is of type MvcHandler - you'll get an exception that says
so - also the reason you need to comment out the Page_Load event handling code when
you are using Phil's route debugger shown below). 
</p>
        <p>
The normal entry point is the <a href="http://msdn.microsoft.com/en-us/library/system.web.routing.urlroutingmodule.aspx" target="_blank">UrlRoutingModule</a> 
- which you'll see registered in the Web.config. It's this module that inspects incoming
requests... checks them for matches against routes in the <a href="http://msdn.microsoft.com/en-us/library/system.web.routing.routecollection.aspx" target="_blank">RouteCollection</a>...
and then transfers the request over to the handler that was specified in the matching
route entry. One of the best conceptual descriptions of the ASP.Net MVC framework
I've come across - was "...think of ASP.Net MVC as a dynamic HttpHandler selector
- each route that you define specifies an HttpHandler that will deal with the request
from that point on - and that's it". So routes are really nothing more than a way
of allowing you to define an HttpHandler that will take care of the rest of the request/response
processing for matching Urls.
</p>
        <p>
Back to Default.aspx. The first question I had was why wasn't the default route capturing
requests for Default.aspx and why for that matter, was the Page_Load event handling
code above required in the first place? 
</p>
        <p>
Here's the "Default" route that is created in Global.asax for a new solution...
</p>
        <pre class="c#:nocontrols" name="code">routes.MapRoute(
    "Default",                                              // Route name
    "{controller}/{action}/{id}",                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
);</pre>
        <p>
What this route says is... take anything... any Url and treat the first segment as
the name of the controller that will be used to handle the request, then take anything
as the second segment and use that as the controller method that will be called (controller
action) and take anything as the third segment and use that as a parameter for the
action method.
</p>
        <p>
Well it turns out there are a couple of reasons that a request for Default.aspx won't
work with the route above.
</p>
        <p>
To start .. grab a copy of <a href="http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx" target="_blank">Phil
Haack's Route Debugger</a>. Build the solution and then add a reference to the RouteDebug
assembly to your project.
</p>
        <p>
Also remove, or comment out the Page_Load event code in Default.aspx (shown above)
since what we want to test here, is what's required to route Default.aspx <strong><em>without</em></strong> the
use of any redirection code.
</p>
        <p>
Add Phil's debugger to the Global.asax Application_Start() event handler, as below..
</p>
        <pre class="c#:nocontrols" name="code">protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    RouteTable.Routes.RouteExistingFiles = false;
    RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}</pre>
        <p>
Also note that extra line I've added... for RouteExistingFiles - which is set to false
(the default). This is the first reason that Default.aspx won't be routed. The routing
module will not (by default) apply routes to Urls that actually exist as files in
the web site. This is a good thing... since it allows you to include static content
and regular ASP.Net pages in your project. However also be warned that when it is
set to RouteExistingFiles = true, all static content (like stylesheets and JavaScript)
along with regular ASP.Net pages may no longer be served from the site (if you have
a catch-all or default route in place). This might be the desired behavior though..
if you wanted to serve all of your static content from another web server and guarantee
that no static content would be coming from your application server.
</p>
        <p>
Try running an ASP.Net MVC app with the code in Application_Start() as above (be sure
to have commented out the Page_Load event handling code in Default.aspx first!).
</p>
        <p>
What you should see is that Default.aspx loads as normal and we've not entered the
MVC framework.
</p>
        <p>
Now change change RouteExistingFiles to RouteExistingFiles = true and temporarily
comment out Phil's route debugger - like this...
</p>
        <pre class="c#:nocontrols" name="code">protected void Application_Start()
{
    RegisterRoutes(RouteTable.Routes);
    RouteTable.Routes.RouteExistingFiles = true;
    //RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
}</pre>
        <p>
What you should see now is a yellow screen of death (YSOD) "Server Error in '/' Application
- The resource cannot be found. HTTP 404 etc..."
</p>
        <p>
The reason we're seeing this is because (again - in the default ASP.Net MVC Solution)
there is no controller called Default.aspx. We supplied 'something' in the url and
that 'something' was matched as the first segment or token of the Default route (incidentally,
naming the route 'Default' has nothing to do with 'Default.aspx' - it's just a name
for the route and could be anything). The route actually matched. If you uncomment
the RouteDebugger and run it again - you'll see that the Default route was in fact
matched to our request. <a href="http://www.58bits.com/blog/content/binary/ASP.NetMVCandRoutingDefault.aspx_F99A/matched_01.jpg"><img style="border-width: 0px;" alt="matched_01" src="http://www.58bits.com/blog/content/binary/ASP.NetMVCandRoutingDefault.aspx_F99A/matched_01_thumb.jpg" width="478" align="left" border="0" height="231" /></a> However
when the framework (the MvcRouteHandler, and then the MvcHandler controller factory
in this case) tried to find a controller class called 'Default.aspx' - it couldn't,
and so returned an Http 404 file not found error.
</p>
        <p>
The only controllers that exist in the solution - are HomeController, and the AccountController
- and our controller token didn't match either of these. You can try changing the
Url to "/boo" or "/foo" "/mycontroller" (comment out the RouteDebugger again) and
you'll see the same 404 not found error returned again each time. We match the default
route, but there are no controllers for any of these controller tokens. However if
you try "/home" - bingo... you'll hit the home controller, with a default action of
Index and the Index.aspx page in the Views/Home/ directory will be served up as the
response (Note: with RouteExistingFiles still set to true... the style sheet won't
be served).
</p>
        <p>
Ok so what if we want Default.aspx to route to the home controller? We could add the
following route...
</p>
        <pre class="c#:nocontrols" name="code">routes.MapRoute(
    "Start",                                                // Route name
    "Default.aspx",                                         // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
); </pre>But
this <strong><em>must</em></strong> appear above the Default route since the first
route that matches - wins. 
<p>
With the 'Start' route in place, Default.aspx is now being matched literally - and
the default values for the controller, action and id are being used to serve up Views/Home/Index.aspx
(again - this will only work if RouteExistingFiles = true while a 'real' Default.aspx
page still exists in the root of your site).
</p><p>
As an aside - if we wanted to catch <strong><em>all</em></strong> requests for non-existent
controllers you could use a route like this..
</p><pre class="c#:nocontrols" name="code">routes.MapRoute(
    "Catchall",                                              // Route name
    "{*anything}",                                           // URL with parameters
    new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
); </pre><p>
The 'Catchall' route would need to come <strong><em>before</em></strong>the 'Default'
route and <strong><em>after</em></strong> any controller specific routes like '/home
/news /products... etc - although some might question the wisdom of having such a
route. An alternative approach would be to correctly deal with the 404 file not found
errors with a custom error page and then take things from there.
</p><p>
So from this little exercise we can now see that there are two things that prevent
the routing of Default.aspx. The first - is that the default setting for RouteExistingFiles 
is false - and for good reason too. The second, is that even if we were going to route
Default.aspx, matching on the Default route still doesn't help since Default.aspx
will be matched to the controller token in the route, and there is no such controller
in the solution.
</p><p>
So what are the practical options for dealing with Default.aspx? Well I think there
are three you can choose from...
</p><ol><li>
Leave Default.aspx unrouted and unredirected as the entry point to your application
- with static links that take your users into the MVC portion of the app (or other
static content). 
</li><li>
Redirect Default.aspx in the code behind, either using the Page_Load event handler
code as shown above, or use Response.Redirect("~/home") to send them to the Home controller
(although this is a round-trip redirect). 
</li><li>
Rename or delete Default.aspx. Despite the warning in the markup that says that default.aspx
is required to ensure that ASP.NET MVC is activated by IIS when a user makes a "/"
request... it's not actually needed in either the VS dev server, or IIS7. The default
request will remain an application root request "/" and will be caught by the default
route and sent to the home controller.</li></ol><p>
 
</p><p>
And that's that. I really don't feel good about doing much until I understand how
things start... and how we got to point B from point A. The learning curve in ASP.Net
MVC is fairly steep, and started (for me at least) with the humble Default.aspx page.
</p><p>
Here are a few links that helped along the way (and are current for ASP.Net MVC Preview
release 5).
</p><p><a title="http://msmvps.com/blogs/luisabreu/archive/2008/07/04/the-routing-series.aspx" href="http://msmvps.com/blogs/luisabreu/archive/2008/07/04/the-routing-series.aspx">http://msmvps.com/blogs/luisabreu/archive/2008/07/04/the-routing-series.aspx</a><br /><a title="http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx" href="http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx">http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx</a><br /><a title="http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx" href="http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx">http://haacked.com/archive/2008/08/29/how-a-method-becomes-an-action.aspx</a><br /><a title="http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html" href="http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html">http://bradwilson.typepad.com/blog/2008/08/partial-renderi.html</a><br /><a title="http://lostintangent.com/2008/07/03/aspnet-mvc-controlleractioninvoker-part-1/" href="http://lostintangent.com/2008/07/03/aspnet-mvc-controlleractioninvoker-part-1/">http://lostintangent.com/2008/07/03/aspnet-mvc-controlleractioninvoker-part-1/</a></p><img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=10b2ddfa-057c-41d0-bdc7-564b212ce896" /></div>
    </content>
  </entry>
  <entry>
    <title>Blocked Files and Trusted Locations</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/09/23/BlockedFilesAndTrustedLocations.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,db1a3f73-543d-4ff6-ab7b-0741d64cdee6.aspx</id>
    <published>2008-09-23T02:07:21.583-07:00</published>
    <updated>2008-11-26T20:05:34.3409722-08:00</updated>
    <category term="Security" label="Security" scheme="http://www.58bits.com/blog/CategoryView,category,Security.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I must have been asleep when this 'feature' appeared. I downloaded the latest ASP.Net
MVC Storefront sample today from Codeplex. I then dragged the downloaded Zip file
over to my project folder, extracted it and built the project. When I tried to run
some of the unit tests - I got "Failed to queue test run me@myserver2008-09-23 15:20:05':
Test Run deployment issue: The location of the file or directory '\...\.config' is
not trusted.
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/BlockedFilesandTrustedLocations_E1AF/unblock.jpg">
            <img style="border-width: 0px;" alt="unblock" src="http://www.58bits.com/blog/content/binary/BlockedFilesandTrustedLocations_E1AF/unblock_thumb.jpg" width="297" align="left" border="0" height="405" />
          </a>A
quick Google and I found the problem. There's a new attribute on files that you download
from the Internet. Right click on the Zip file, choose Properties.. and you'll see
the window as shown, with a message that says: <strong>This file came from another
computer and might be blocked to help protect this computer.</strong> You need to
click the Unblock button before you extract the contents of the Zip file... and then
everything works fine...
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=db1a3f73-543d-4ff6-ab7b-0741d64cdee6" />
      </div>
    </content>
  </entry>
  <entry>
    <title>In Search of The World's Best Computer Keyboard II</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/09/15/InSearchOfTheWorldsBestComputerKeyboardII.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,1fb19e87-b1e9-43fb-b469-b54837ec1657.aspx</id>
    <published>2008-09-15T09:41:43.786-07:00</published>
    <updated>2008-11-26T20:07:03.1938566-08:00</updated>
    <category term="Hardware" label="Hardware" scheme="http://www.58bits.com/blog/CategoryView,category,Hardware.aspx" />
    <category term="Other Tech" label="Other Tech" scheme="http://www.58bits.com/blog/CategoryView,category,OtherTech.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <strong>
            <font color="#ff0000">Update: 09 Oct 2008</font>
          </strong>Well - I needed
a decent mouse - and the <a href="http://www.logitech.com/index.cfm/mice_pointers/mice/devices/3053&amp;cl=US,EN" target="_blank">Logitech
G9 Laser mouse</a> totally rocks. Downside.. couldn't work out how to swap the mouse
on the Kensington Slimblade set.. since the wireless USB dongle reports both a mouse
and keyboard. Luckily I'm warming up to my IBM SpaceSaver II and so that's the combination
I'm using now.. SpaceSaver II and Logitech G9. Also received a Luxeed LED keyboard
from the manufacturer in Korea.. err.. they were very kind and helpful in getting
a keyboard to me,  so it pains me to have to report that there are some quality
and manufacturing issues with this keyboard. I was getting phantom carriage returns,
and the 'F' and 'G' keys were sticking down, so no go here. A real pity because the
keyboard layout is perfect. Illuminated LED keys with separate colors assigned to
control keys and letter keys - was the closest I've come to the perfect keyboard setup.
Sigh.
</p>
        <p>
          <strong>
            <font color="#ff0000">Original post...</font>
          </strong>
        </p>
        <p>
This is officially part two in my never ending quest for the worlds greatest keyboard.
Part one is here - <a href="http://www.58bits.com/blog/2008/07/06/InSearchOfTheWorldsBestComputerKeyboard.aspx">In
Search of The World's Best Computer Keyboard</a></p>
        <p>
          <img style="border-width: 0px;" alt="Exif_JPEG_PICTURE                                              " src="http://www.58bits.com/blog/content/binary/InSearchofTheWorldsBestComputerKeyboardI_13E0B/SpaceSaver_01.jpg" width="329" align="left" border="0" height="160" /> My
IBM SpaceSaver II arrived today. Not sure what to say. The keyboard layout is perfect;
compact but not too small. Everything is in the right place. No number pad which is
important for me (as I mentioned in the first post) and helps to keep the keyboard
square with the screen.  
</p>
        <p>
          <strong>Pros</strong>: It just works; with no special drivers it works fine in Vista
(apart from an active PS2 to USB converter) - the track-point and the middle button
scrolling option also works. I'm actually able to use track-point and built in mouse
buttons quite well  - which was a little bit surprising (although I will use
a dedicated mouse). Looks nice too (the picture doesn't do it justice) and fits well
with my black theme. 
</p>
        <p>
          <strong>Cons</strong>: Hmm.. key action feels very cheap compared to my ThinkPad T61p
keyboard (ThinkPad keyboards are still <strong><em>the</em></strong> greatest keyboards
in the world). Key height, action, spacing and travel also aren't nearly as comfortable
or as refined as the <a href="http://us.kensington.com/html/13872.html" target="_blank">Kensington
Slimblade</a>.
</p>
        <p>
          <strong>Verdict</strong>: Good but disappointing key action - so not the world's greatest
keyboard I'm afraid.
</p>
        <p>
 
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/InSearchofTheWorldsBestComputerKeyboardI_13E0B/Kensington_01.jpg" target="_blank">
            <img style="border-width: 0px;" alt="Kensington_01" src="http://www.58bits.com/blog/content/binary/InSearchofTheWorldsBestComputerKeyboardI_13E0B/Kensington_01_thumb.jpg" width="393" align="left" border="0" height="156" />
          </a> Pictured
left - my current top of the pile choice - the <a href="http://us.kensington.com/html/13872.html" target="_blank">Kensington
Slimblade Media Set</a>. My only recommendation here would be to ditch the mouse.
The track-ball is too small for day to day use. Bummer. 
</p>
        <p>
Still it's the closest there is at the moment... however... 
</p>
        <p>
 
</p>
        <p>
 
</p>
        <p>
          <a href="http://luxiium.com/en/product_01.php" target="_blank">
            <img style="border-width: 0px;" alt="Luxceed_01" src="http://www.58bits.com/blog/content/binary/InSearchofTheWorldsBestComputerKeyboardI_13E0B/Luxceed_01.jpg" width="350" align="left" border="0" height="206" />
          </a> ...there's
another candidate out there - one to check out for sure.. the <a href="http://luxiium.com/en/product_01.php" target="_blank">Luxeed
LED Keyboard</a>. This one will be fun try. Amazingly - they've gone for nearly the
same keyboard layout as the SpaceSaver II (and not as mad as the <a href="http://www.artlebedev.com/everything/optimus/" target="_blank">Maximus
Optimus</a> - which I would also have gone for had they made the number pad detachable)
. CTRL-Windows-Alt - are just the way I like them all on their own to the left of
the space bar (no pesky function key). If the key action is as smooth or even close
to the feel of the ThinkPad or the Kensington - this could be the winner. Will report
back in Part III if I manage to get hold of one...  :-)
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=1fb19e87-b1e9-43fb-b469-b54837ec1657" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Replacing a Hard Disk on a Notebook with BitLocker Installed</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/09/02/ReplacingAHardDiskOnANotebookWithBitLockerInstalled.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,334fabca-d351-4348-b40f-f394ab9c45c0.aspx</id>
    <published>2008-09-02T00:29:08.536-07:00</published>
    <updated>2008-10-18T16:51:29.3616379-07:00</updated>
    <category term="Hardware" label="Hardware" scheme="http://www.58bits.com/blog/CategoryView,category,Hardware.aspx" />
    <category term="Other Tech" label="Other Tech" scheme="http://www.58bits.com/blog/CategoryView,category,OtherTech.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Awesome - my new 2.5" <a href="http://www.hitachigst.com/portal/site/en/menuitem.57ddeb9b412fed7ac41d3814eac4f0a0/" target="_blank">320GB
Hitachi 7200 rpm 16MB cache Travelstar 7K320</a> hard disk arrived today. The drive
was actually made in Thailand - but I had to order it from Singapore... grrr...
</p>
        <p>
Last March I purchased a ThinkPad T61p. I love this notebook... but I made the mistake
of not putting a large enough drive in it at the time.
</p>
        <p>
Here are the steps I took to swapping the drive and resizing the partitions. I had <a href="http://technet.microsoft.com/en-us/windows/aa905065.aspx">BitLocker</a> installed
- with the system volume C: encrypted, so there was a S: partition for boot (as <a href="http://technet.microsoft.com/en-us/windows/aa905065.aspx" target="_blank">BitLocker</a> creates)
and a D: volume where I keep all my data.
</p>
        <ol>
          <li>
Backed up D: 
</li>
          <li>
Did a Complete PC Backup to an external USB drive. Control Panel, System Maintenance,
Backup and Restore Center, Back up Computer. This creates an image based backup (like
Ghost, or TrueImage) including all partition information. NOTE: The image backup process
creates a 'decrypted' backup image so you need to keep this drive safe in the case
of regular backups. 
</li>
          <li>
Swapped the drives. 
</li>
          <li>
Booted from my Vista 64 bit OS DVD - and chose "Repair your computer..." (after the
date and time options) followed by "Windows Complete PC Restore" - restore completed..
and reboot. 
</li>
          <li>
After booting - launched the Computer Management snap-in (right click on My Computer
and choose "Manage"). Went into Disk Management - made the C: volume the active volume
(in preparation for removing the <a href="http://technet.microsoft.com/en-us/windows/aa905065.aspx" target="_blank">BitLocker</a> created
S: volume).. 
</li>
          <li>
Reboot - you'll see an error message that boot files cannot be found 
</li>
          <li>
Boot again from Vista OS DVD 
</li>
          <li>
Choose "Repair" - and "Startup Repair" (first option) - the boot files and MBR record
will be recreated on the C: volume. 
</li>
          <li>
Reboot and go back into Disk Management. Delete the S: volume (and in my case the
D: data volume too). This will make room for a contiguous extension of the C: volume. 
</li>
          <li>
Then in Disk Management right click on the C: volume and choose 'Extent Volume.." 
(this was the whole point of the exercise for me - I needed to increase the size of
my system volume). 
</li>
          <li>
Reboot - system should be fine booting from C:. Re-run the <a href="http://technet.microsoft.com/en-us/windows/aa905065.aspx" target="_blank">BitLocker</a> drive
preparation tool - and re-create the new 1.5GB S: boot volume. And then in my case
re-create the D: data volume. 
</li>
          <li>
Reboot - all done - restore data to D: and re-encrypt C:.</li>
        </ol>
        <p>
 
</p>
        <p>
Presto - and it worked flawlessly. Another option would have been to just use the
Windows Complete PC Restore - and then use a tool like <a href="http://www.acronis.com/homecomputing/products/diskdirector/">Acronis
Disk Director</a> to reorganize the partitions before re-encrypting the C: volume.
However in this case - it all worked without the use of any 3rd party software. I'll
give MS credit for their new image based backup system in Vista. I've used it several
times now and it's always worked. :-)
</p>
        <p>
Boot times are much improved as well. The previous drive was a Seagate Momentus 7200rpm
160GB disk - but it always felt sluggish to me. The new Hitachi disk is much quicker
(although it's reviewed as slightly slower to the new 320GB offerings from both Seagate
and Western Digital).
</p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=334fabca-d351-4348-b40f-f394ab9c45c0" />
      </div>
    </content>
  </entry>
  <entry>
    <title>BarCamp Bangkok 2</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/09/02/BarCampBangkok2.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,ff436123-1c60-4bc1-b746-dae1fd133f5b.aspx</id>
    <published>2008-09-01T22:58:33.682-07:00</published>
    <updated>2008-11-26T20:15:26.3461668-08:00</updated>
    <category term="General" label="General" scheme="http://www.58bits.com/blog/CategoryView,category,General.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.barcampbangkok.org/">
            <img style="border: 0px none ;" alt="barcamp_image" src="http://www.58bits.com/blog/content/binary/BarCampBangkok2_B682/barcamp_image.jpg" width="396" border="0" height="111" />
          </a>
        </p>
        <p>
          <a href="http://www.58bits.com/otherblog/photos/home.aspx" target="_blank">Some pics
here...</a>
        </p>
        <p>
          <a href="http://technorati.com/tag/barcampbangkok2">Technorati tag: Barcampbangkok2</a>
        </p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=ff436123-1c60-4bc1-b746-dae1fd133f5b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>NAnt, WiX and How to Build and Deploy a Utility Library</title>
    <link rel="alternate" type="text/html" href="http://www.58bits.com/blog/2008/08/29/NAntWiXAndHowToBuildAndDeployAUtilityLibrary.aspx" />
    <id>http://www.58bits.com/blog/PermaLink,guid,b2d84fd4-af0f-4c40-bd2a-f6515ccc2d56.aspx</id>
    <published>2008-08-29T09:01:03.148-07:00</published>
    <updated>2008-11-26T20:14:50.5405866-08:00</updated>
    <category term="Utilities" label="Utilities" scheme="http://www.58bits.com/blog/CategoryView,category,Utilities.aspx" />
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.barcampbangkok.org/" target="_blank">
            <img style="border-width: 0px;" alt="barcamp_image" src="http://www.58bits.com/blog/content/binary/NAntWiXandHowtoBuildandDeployaUtilityLib_13C4B/barcamp_image.jpg" width="396" align="left" border="0" height="111" />
          </a>Well
- on the off chance that I get enough votes at BarCamp in the morning... here's my
presentation for <a href="http://www.barcampbangkok.org/" target="_blank">BarCamp
Bangkok 2</a>. 
</p>
        <p>
A while back - and thanks mainly to an open source project created by <a href="http://www.therightstuff.de/" target="_blank">Alexander
Groß</a> (a <a href="http://code.google.com/p/nowplaying-wlw/" target="_blank">Now
Playing Plugin for Windows Live Writer</a>) I discovered the <a href="http://wix.sourceforge.net/" target="_blank">Windows
Installer XML (WiX)</a> project.  WiX is pretty cool. It's an XML script based
compiler and linker that creates .MSI install packages. Because it's script and command-line
driven - it fits well into automated build and deployment systems (using build tools
like <a href="http://nant.sourceforge.net/" target="_blank">NAnt</a> or MSBuild).
</p>
        <p>
I've generally kept all my utility and helper classes in a separate solution, separated
into namespaces for Strings, Data, Web, Math, Image helpers etc... all static classes
(slowly being updated with <a href="http://msdn.microsoft.com/en-us/library/bb383977.aspx" target="_blank">extension
method</a> versions as well).
</p>
        <p>
So for my demo at BarCamp - I've created a SampleUtils solution - with NAnt and WiX
and a fairly well organized solution that shows how this can all be put together.
</p>
        <p>
The solution layout looks like this... <a href="http://www.58bits.com/blog/content/binary/NAntWiXandHowtoBuildandDeployaUtilityLib_13C4B/solution_3.jpg"><img style="border-width: 0px;" alt="solution" src="http://www.58bits.com/blog/content/binary/NAntWiXandHowtoBuildandDeployaUtilityLib_13C4B/solution_thumb.jpg" width="289" align="right" border="0" height="526" /></a>(screen
shot to the right).
</p>
        <p>
Again - if I get the chance. I'll do a quick run through of the NAnt build file (I've
annotated the targets). And then a quick look at the WiX scripts. Demo the build process
and then deploy the library using the installer - followed by a Console app that uses
the library to make a few calls... (at least that's the plan).
</p>
        <p>
Here are links to the source package for the demo (all lib and tools included so it
will build as soon as you run build-release.bat) as well as the slide deck.
</p>
        <p>
          <a href="http://www.58bits.com/blog/content/binary/UtilitiesSolution.zip">UtilitiesSolution.zip
(5.43MB)</a>
          <br />
          <a href="http://www.58bits.com/blog/content/binary/BarCamp2_SlideDeck.zip">BarCamp2_SlideDeck.zip
(61KB).</a>
        </p>
        <p>
And here are the links at the end of the slide deck...
</p>
        <p>
          <a href="http://nant.sourceforge.net/" target="_blank">http://nant.sourceforge.net/</a>
          <br />
          <a href="http://wix.sourceforge.net/index.html" target="_blank">http://wix.sourceforge.net/index.html</a>
          <br />
          <a href="http://msdn.microsoft.com/en-us/library/aa367449%28VS.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa367449(VS.85).aspx</a>
          <br />
          <a href="http://msdn.microsoft.com/en-us/library/aa368047%28VS.85%29.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/aa368047(VS.85).aspx</a>
          <br />
          <a href="http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET" target="_blank">http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET</a>
          <br />
          <a href="http://en.wikipedia.org/wiki/Daily_build" target="_blank">http://en.wikipedia.org/wiki/Daily_build</a>
        </p>
        <p>
Wish me luck... :-)
</p>
        <p>
 
</p>
        <p>
          <a href="http://technorati.com/tag/barcampbangkok2" rel="tag">Technorati tag: Barcampbangkok2</a>
        </p>
        <img width="0" height="0" src="http://www.58bits.com/blog/aggbug.ashx?id=b2d84fd4-af0f-4c40-bd2a-f6515ccc2d56" />
      </div>
    </content>
  </entry>
</feed>