<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title><![CDATA[[SecurityRatty] tag: config]]></title>
    <link>http://securityratty.com/tag/config</link>
    <description></description>
    <pubDate>Mon, 19 May 2008 02:36:31 +0000</pubDate>
    <generator>iRatty Engine</generator>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <item>
      <title><![CDATA[PasswordTextBox]]></title>
      <link>http://securityratty.com/article/4e1580792b56914339b6489792b99933</link>
      <guid>http://securityratty.com/article/4e1580792b56914339b6489792b99933</guid>
      <description><![CDATA[Chris Sells used to poke fun at me when we worked together in my former life . He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren't applied...]]></description>
      <content:encoded><![CDATA[<p><a href="http://www.sellsbrothers.com/" target="_blank">Chris Sells</a> used to poke fun at me when we worked together in my <a href="http://www.flickr.com/photos/andyrs/240203382/" target="_blank">former life</a>. He used to call my security class, &quot;Essential Access Denied&quot;. His point was a good one: when they aren&#39;t applied carefully, security countermeasures often just get in the way of getting work done. I don&#39;t know about you, but password-mode text boxes in web forms have always been one of those annoyances.</p> <p>I&#39;m not complaining about the fact that I can&#39;t see what I&#39;m typing. I understand and laud that feature, because I don&#39;t want someone looking over my shoulder at the password I&#39;m typing, and this even applies when I&#39;m at home. I love my children, but I certainly don&#39;t want them knowing the password to my bank account!</p> <p>No, what I&#39;m bothered by is how a typical password text box behaves on a form that may incur multiple post-backs before it&#39;s finally submitted. If you use the built in ASP.NET TextBox control, it purposely does not repopulate the password text, which means if you press a button on the form that performs a post-back, or if you have a multi-page form that posts back on every step, that password disappears, and the user typically has to re-enter it. You could solve this with liberal use of ASP.NET Ajax UpdatePanels, but that adds its own complexities. I wanted a simpler solution.</p> <p>So I did a little research to see what others had discovered about this problem, and I ended up deriving my own custom control from TextBox to make a much more user-friendly (and developer-friendly) TextBox control. I called it PasswordTextBox, and it acts just like a TextBox in password mode, but it retains the password while still giving the user the same level of protection the standard TextBox supplies.</p> <p>My PasswordTextBox operates very simply: it stores the password in control state, and renders a series of fixed characters (with the same length as the actual password) into the text box so that it &quot;looks&quot; like the user&#39;s password has been rendered. Since control state is part of view state, and since view state is stored in a hidden field on the form, I encrypt the password before putting it into control state.</p> <p>The result is quite nice - the user can post your form back as many times as she needs to, perhaps moving back and forth across wizard steps or tabs, and when she finally presses the &quot;Finish&quot; button (or whatever you call the last step of your input form), your code will be able to read the password by simply accessing the Text property on the PasswordTextBox. The user will believe that her password is sitting there on the form while she&#39;s working, as the same number of obfuscated characters will show up in the field as she typed in originally (what she doesn&#39;t know is that those characters aren&#39;t her real password anymore, but what she doesn&#39;t know won&#39;t hurt her!)</p> <p>Note that to keep this simple, I used DPAPI to encrypt the password, which suited my purposes. But if you have a web farm, that won&#39;t work well at all if you don&#39;t know which machine the user&#39;s going to post back to, so you&#39;ll want to replace that with something more robust. I could see looking up the &lt;machineKey&gt; for entropy, as that tends to be sync&#39;d already across the farm, but I&#39;ve not yet spent the cycles to go down that road, since unfortunately all of the code for generating keys based on that config section are off limits in ASP.NET (most of the useful stuff is marked internal). I don&#39;t think it&#39;d be that hard to do though.</p> <p>Anyway, without further ado, here&#39;s the code, which you&#39;ll see is quite simple. I&#39;d love feedback, especially if you see any glaring problems with the idea or the implementation!</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> PasswordTextBox : TextBox
{
    <span class="rem">// unlikely that a string of these would be used for a password</span>
    <span class="kwrd">const</span> <span class="kwrd">char</span> PasswordPlaceholderChar = <span class="str">&#39;}&#39;</span>;

    <span class="kwrd">string</span> password; <span class="rem">// stored encrypted in control state</span>

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> OnInit(EventArgs e)
    {
        <span class="kwrd">base</span>.OnInit(e);
        Page.RegisterRequiresControlState(<span class="kwrd">this</span>);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">object</span> SaveControlState()
    {
        <span class="kwrd">byte</span>[] encryptedPassword = ProtectPassword(password);

        <span class="kwrd">object</span> baseControlState = <span class="kwrd">base</span>.SaveControlState();
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == baseControlState)
            <span class="kwrd">return</span> encryptedPassword;
        <span class="kwrd">else</span> <span class="kwrd">return</span> <span class="kwrd">new</span> Pair(baseControlState, encryptedPassword);
    }

    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> LoadControlState(<span class="kwrd">object</span> savedState)
    {
        <span class="kwrd">byte</span>[] encryptedPassword;

        Pair pair = savedState <span class="kwrd">as</span> Pair;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != pair)
        {
            <span class="kwrd">base</span>.LoadControlState(pair.First);
            encryptedPassword = pair.Second <span class="kwrd">as</span> <span class="kwrd">byte</span>[];
        }
        <span class="kwrd">else</span> encryptedPassword = savedState <span class="kwrd">as</span> <span class="kwrd">byte</span>[];

        password = UnprotectPassword(encryptedPassword);
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// This control always uses TextMode=Password</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> TextBoxMode TextMode
    {
        get
        {
            <span class="kwrd">return</span> TextBoxMode.Password;
        }
        set { }
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t render value attribute for TextMode=Password</span>
    <span class="rem">/// So we add code that renders a placeholder text instead</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="rem">/// &lt;param name=&quot;writer&quot;&gt;&lt;/param&gt;</span>
    <span class="kwrd">protected</span> <span class="kwrd">override</span> <span class="kwrd">void</span> AddAttributesToRender(HtmlTextWriter writer)
    {
        <span class="kwrd">base</span>.AddAttributesToRender(writer);

        <span class="kwrd">string</span> text = Text;
        <span class="kwrd">if</span> (text.Length &gt; 0)
            writer.AddAttribute(HtmlTextWriterAttribute.Value,
                GetPlaceholderPassword(text));
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// TextBox doesn&#39;t save the &quot;Text&quot; viewstate in</span>
    <span class="rem">/// TextMode=Password and we don&#39;t want our behavior to break</span>
    <span class="rem">/// if ViewState is turned off so we store the password in</span>
    <span class="rem">/// Control State, encrypted with MachineKey</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">string</span> Text
    {
        get
        {
            <span class="kwrd">return</span> password ?? <span class="kwrd">string</span>.Empty;
        }
        set
        {
            <span class="rem">// this prevents us overwriting the actual</span>
            <span class="rem">// password with a placeholder</span>
            <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(password) &amp;&amp;
                <span class="kwrd">value</span>.Equals(GetPlaceholderPassword(password)))
                <span class="kwrd">return</span>;

            password = <span class="kwrd">value</span>;
        }
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> GetPlaceholderPassword(<span class="kwrd">string</span> realPassword)
    {
        <span class="kwrd">int</span> length = 12;
        <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(realPassword))
            length = realPassword.Length;

        StringBuilder sb = <span class="kwrd">new</span> StringBuilder();
        sb.Append(PasswordPlaceholderChar, length);

        <span class="kwrd">return</span> sb.ToString();
    }

    <span class="kwrd">public</span> <span class="kwrd">byte</span>[] ProtectPassword(<span class="kwrd">string</span> password)
    {
        <span class="kwrd">if</span> (<span class="kwrd">string</span>.IsNullOrEmpty(password))
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = Encoding.UTF8.GetBytes(password);
        <span class="kwrd">return</span> ProtectedData.Protect(cleartext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
    }

    <span class="kwrd">public</span> <span class="kwrd">string</span> UnprotectPassword(<span class="kwrd">byte</span>[] ciphertext)
    {
        <span class="kwrd">if</span> (<span class="kwrd">null</span> == ciphertext)
            <span class="kwrd">return</span> <span class="kwrd">null</span>;
        <span class="kwrd">byte</span>[] cleartext = ProtectedData.Unprotect(ciphertext, <span class="kwrd">null</span>,
            DataProtectionScope.LocalMachine);
        <span class="kwrd">return</span> Encoding.UTF8.GetString(cleartext);
    }
}
</pre><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=54154" width="1" height="1">]]></content:encoded>
      <pubDate>Wed, 29 Oct 2008 16:49:54 +0000</pubDate>
      <category domain="http://securityratty.com/tag/password-mode text boxes">password-mode text boxes</category>
      <category domain="http://securityratty.com/tag/text">text</category>
      <category domain="http://securityratty.com/tag/return null">return null</category>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/net">net</category>
      <category domain="http://securityratty.com/tag/net ajax updatepanels">net ajax updatepanels</category>
      <category domain="http://securityratty.com/tag/net textbox control">net textbox control</category>
      <category domain="http://securityratty.com/tag/password">password</category>
      <category domain="http://securityratty.com/tag/textbox control">textbox control</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/10/29/passwordtextbox.aspx">PasswordTextBox</source>
    </item>
    <item>
      <title><![CDATA[SQL Server 2008 - DBCC BYTES]]></title>
      <link>http://securityratty.com/article/16e1ab517124268d885c89a8dea4520c</link>
      <guid>http://securityratty.com/article/16e1ab517124268d885c89a8dea4520c</guid>
      <description><![CDATA[Ive just noticed that Microsoft had removed the DBCC BYTES command from DBCC. On 2005: DBCC TRACEON(2588) DBCC HELP (?') GO activecursors addextendedproc addinstance auditevent autopilot buffer bytes...]]></description>
      <content:encoded><![CDATA[I&#8217;ve just noticed that Microsoft had removed the DBCC BYTES command from DBCC.
On 2005:
DBCC TRACEON(2588)
DBCC HELP (&#8217;?')
GO
activecursors
addextendedproc
addinstance
auditevent
autopilot
buffer
bytes
cacheprofile
cachestats
callfulltext
checkalloc
checkcatalog
checkconstraints
checkdb
checkfilegroup
checkident
checkprimaryfile
checktable
cleantable
clearspacecaches
collectstats
concurrencyviolation
cursorstats
dbrecover
dbreindex
dbreindexall
dbrepair
debugbreak
deleteinstance
detachdb
dropcleanbuffers
dropextendedproc
config
dbinfo
dbtable
lock
log
page
resource
dumptrigger
errorlog
extentinfo
fileheader
fixallocation
flush
flushprocindb
forceghostcleanup
free
freeproccache
freesessioncache
freesystemcache
freeze_io
help
icecapquery
incrementinstance
ind
indexdefrag
inputbuffer
invalidate_textptr
invalidate_textptr_objid
latch
loginfo
mapallocunit
memobjlist
memorymap
memorystatus
metadata
movepage
no_textptr
opentran
optimizer_whatif
outputbuffer
perfmon
persiststackhash
pintable
proccache
prtipage
readpage
renamecolumn
ruleoff
ruleon
semetadata
setcpuweight
setinstance
setioweight
show_statistics
showcontig
showdbaffinity
showfilestats
showoffrules
showonrules
showtableaffinity
showtext
showweights
shrinkdatabase
shrinkfile
sqlmgrstats
sqlperf
stackdump
tec
thaw_io
traceoff
traceon
tracestatus
unpintable
updateusage
useplan
useroptions
writepage
cleanpage
DBCC execution completed. If DBCC printed error messages, contact your system administrator.
While running the same thing on 2008 does not contain DBCC BYTES.
I wonder what&#8217;s the reason for this change (I&#8217;ve checked the binary and it does not contain [...]<div class="feedflare">
<a href="http://feeds.feedburner.com/~f/slaviks-blog/WxxD?a=vcwkL"><img src="http://feeds.feedburner.com/~f/slaviks-blog/WxxD?i=vcwkL" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/slaviks-blog/WxxD/~4/397341183" height="1" width="1"/>]]></content:encoded>
      <pubDate>Fri, 19 Sep 2008 12:24:22 +0000</pubDate>
      <category domain="http://securityratty.com/tag/dbcc">dbcc</category>
      <category domain="http://securityratty.com/tag/dbcc bytes">dbcc bytes</category>
      <category domain="http://securityratty.com/tag/dbcc bytes command">dbcc bytes command</category>
      <category domain="http://securityratty.com/tag/dbcc traceon">dbcc traceon</category>
      <category domain="http://securityratty.com/tag/ind indexdefrag inputbuffer">ind indexdefrag inputbuffer</category>
      <category domain="http://securityratty.com/tag/checkdb checkfilegroup checkident">checkdb checkfilegroup checkident</category>
      <category domain="http://securityratty.com/tag/free freeproccache">free freeproccache</category>
      <category domain="http://securityratty.com/tag/system administrator">system administrator</category>
      <category domain="http://securityratty.com/tag/error messages">error messages</category>
      <source url="http://feeds.feedburner.com/~r/slaviks-blog/WxxD/~3/397341183/">SQL Server 2008 - DBCC BYTES</source>
    </item>
    <item>
      <title><![CDATA[Better exception reporting in ASP.NET part 2]]></title>
      <link>http://securityratty.com/article/b878f7921917b371086606df6d043229</link>
      <guid>http://securityratty.com/article/b878f7921917b371086606df6d043229</guid>
      <description><![CDATA[This is the third post in a series
The first post described the problem: ASP.NET wasn't reporting inner exception stack traces
The second post described my solution
This post shows the code I used to...]]></description>
      <content:encoded><![CDATA[<p>This is the third post in a series.</p> <p>The <a href="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/01/asp-net-health-monitoring-doesn-t-log-inner-exception-stack-trace.aspx" target="_blank">first post</a> described the problem: ASP.NET wasn&#39;t reporting inner exception stack traces.</p> <p>The <a href="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/01/better-exception-reporting-in-asp-net.aspx" target="_blank">second post</a> described my solution.</p> <p>This post shows the code I used to solve the problem: a custom email provider for the Health Monitoring system in ASP.NET. Enjoy!</p> <p>Here&#39;s the provider. Note that I opted *not* to build a buffering provider to keep things simple:</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> MyMailWebEventProvider : WebEventProvider
{
    <span class="kwrd">string</span> to;
    <span class="kwrd">string</span> from;
    <span class="kwrd">string</span> subjectPrefix;

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Initialize(<span class="kwrd">string</span> name,
        NameValueCollection config)
    {
        <span class="kwrd">base</span>.Initialize(name, config);

        to = GetAndRemoveStringAttribute(config, <span class="str">&quot;to&quot;</span>, <span class="kwrd">true</span>);
        from = GetAndRemoveStringAttribute(config, <span class="str">&quot;from&quot;</span>, <span class="kwrd">true</span>);
        subjectPrefix = GetAndRemoveStringAttribute(config,
            <span class="str">&quot;subjectPrefix&quot;</span>, <span class="kwrd">false</span>);
    }
    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> ProcessEvent(WebBaseEvent raisedEvent)
    {
        SendMail(raisedEvent);
    }

    <span class="kwrd">private</span> <span class="kwrd">void</span> SendMail(WebBaseEvent raisedEvent)
    {
        <span class="kwrd">string</span> subject = ComputeEmailSubject(raisedEvent);
        <span class="kwrd">string</span> body = ComputeEmailBody(raisedEvent);

        MailMessage msg = <span class="kwrd">new</span> MailMessage(from, to, subject, body);
        <span class="kwrd">new</span> SmtpClient().Send(msg);
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> ComputeEmailBody(WebBaseEvent raisedEvent)
    {
        WebRequestErrorEvent errorEvent =
            raisedEvent <span class="kwrd">as</span> WebRequestErrorEvent;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != errorEvent)
            <span class="kwrd">return</span> ErrorEventFormattingHelper.FormatRequestErrorEvent(errorEvent);
        <span class="kwrd">else</span> <span class="kwrd">return</span> raisedEvent.ToString();
    }

    <span class="kwrd">private</span> <span class="kwrd">string</span> ComputeEmailSubject(WebBaseEvent raisedEvent)
    {
        StringBuilder subjectBuilder = <span class="kwrd">new</span> StringBuilder();

        <span class="rem">// surface some details in subject about error events</span>
        WebBaseErrorEvent errorEvent = raisedEvent <span class="kwrd">as</span> WebBaseErrorEvent;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != errorEvent)
        {
            Exception unhandledException = errorEvent.ErrorException;

            <span class="rem">// drill through reflection exceptions to show the root cause</span>
            TargetInvocationException invocationException =
                unhandledException <span class="kwrd">as</span> TargetInvocationException;
            <span class="kwrd">if</span> (<span class="kwrd">null</span> != invocationException)
            {
                Exception innerException =
                    DrillIntoTargetInvocationException(invocationException);
                subjectBuilder.AppendFormat(<span class="str">&quot;{0}&quot;</span>,
                    (innerException ?? invocationException).GetType().Name);
                <span class="kwrd">if</span> (<span class="kwrd">null</span> != innerException)
                    subjectBuilder.Append(<span class="str">&quot; (via reflection)&quot;</span>);
            }
            <span class="kwrd">else</span> subjectBuilder.Append(unhandledException.GetType().Name);
        }

        <span class="rem">// if we&#39;ve not got anything better</span>
        <span class="rem">// just show the event type in the subject</span>
        <span class="kwrd">if</span> (0 == subjectBuilder.Length)
            subjectBuilder.AppendFormat(<span class="str">&quot;Event type: {0}&quot;</span>,
                raisedEvent.GetType().Name);

        <span class="kwrd">if</span> (!<span class="kwrd">string</span>.IsNullOrEmpty(subjectPrefix)) {
            subjectBuilder.Insert(0, <span class="str">&#39; &#39;</span>);
            subjectBuilder.Insert(0, subjectPrefix);
        }
        <span class="kwrd">return</span> subjectBuilder.ToString();
    }

    <span class="rem">/// &lt;summary&gt;</span>
    <span class="rem">/// Reflection often hides exception details, so we try to drill down</span>
    <span class="rem">/// through the plumbing exceptions to find a likely cause</span>
    <span class="rem">/// &lt;/summary&gt;</span>
    <span class="kwrd">private</span> Exception DrillIntoTargetInvocationException(
        TargetInvocationException outerException)
    {
        Exception innerException = outerException.InnerException;
        TargetInvocationException innerInvocationException =
            innerException <span class="kwrd">as</span> TargetInvocationException;
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != innerInvocationException)
            <span class="kwrd">return</span> DrillIntoTargetInvocationException(innerInvocationException);
        <span class="kwrd">else</span> <span class="kwrd">if</span> (<span class="kwrd">null</span> != innerException)
            <span class="kwrd">return</span> innerException;
        <span class="kwrd">else</span> <span class="kwrd">return</span> <span class="kwrd">null</span>;
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">string</span> GetAndRemoveStringAttribute(NameValueCollection config,
        <span class="kwrd">string</span> attributeName, <span class="kwrd">bool</span> required)
    {
        <span class="kwrd">string</span> <span class="kwrd">value</span> = config.Get(attributeName);
        <span class="kwrd">if</span> (required &amp;&amp; <span class="kwrd">string</span>.IsNullOrEmpty(<span class="kwrd">value</span>))
            <span class="kwrd">throw</span> <span class="kwrd">new</span> ConfigurationErrorsException(<span class="kwrd">string</span>.Format(
                <span class="str">&quot;Expected attribute {0}, which is missing or empty.&quot;</span>,
                attributeName));
        config.Remove(attributeName);
        <span class="kwrd">return</span> <span class="kwrd">value</span>;
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Flush()
    {
        <span class="rem">// nothing to do - this is not a buffering provider</span>
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">void</span> Shutdown()
    {
        <span class="rem">// nothing to do here either</span>
    }
}</pre>
<p>Here&#39;s a helper class that formats the error messages the way I want to see them. Note that I&#39;ve omitted some fields that I personally didn&#39;t care about, and I&#39;ve reordered things a bit, so you might want to tweak this if you&#39;re going to use it in your own system.</p><pre class="csharpcode"><span class="kwrd">internal</span> <span class="kwrd">static</span> <span class="kwrd">class</span> ErrorEventFormattingHelper
{
    <span class="kwrd">internal</span> <span class="kwrd">static</span> <span class="kwrd">string</span> FormatRequestErrorEvent(
        WebRequestErrorEvent errorEvent)
    {
        CustomEventFormatter formatter = 
            <span class="kwrd">new</span> CustomEventFormatter();

        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Unhandled Exception in {0}:&quot;</span>,
            WebBaseEvent.ApplicationInformation
            .ApplicationVirtualPath));
        formatter.Indent();
        EmitExceptionAtAGlance(formatter, 
            errorEvent.ErrorException);
        formatter.RevertIndent();

        formatter.AppendLine();
        formatter.AppendLine(<span class="str">&quot;Exception stack trace(s):&quot;</span>);
        EmitExceptionStackTrace(formatter, 
            errorEvent.ErrorException);

        formatter.AppendLine();
        formatter.AppendLine(<span class="str">&quot;Event information:&quot;</span>);
        formatter.Indent();
        EmitEventInfo(formatter, errorEvent);
        formatter.RevertIndent();

        formatter.AppendLine();
        formatter.AppendLine(<span class="str">&quot;Application information:&quot;</span>);
        formatter.Indent();
        EmitApplicationInfo(formatter, 
            WebBaseEvent.ApplicationInformation);
        formatter.RevertIndent();

        formatter.AppendLine();
        formatter.AppendLine(<span class="str">&quot;Process/thread information:&quot;</span>);
        formatter.Indent();
        EmitProcessInfo(formatter, 
            errorEvent.ProcessInformation);
        formatter.RevertIndent();

        formatter.AppendLine();
        formatter.AppendLine(<span class="str">&quot;Request information:&quot;</span>);
        formatter.Indent();
        EmitRequestInfo(formatter, 
            errorEvent.RequestInformation);
        formatter.RevertIndent();

        <span class="kwrd">return</span> formatter.ToString();
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitEventInfo(
        CustomEventFormatter formatter,
        WebBaseEvent theEvent)
    {
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Event code: {0}&quot;</span>,
            theEvent.EventCode.ToString(
            CultureInfo.InvariantCulture)));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Event message: {0}&quot;</span>, 
            theEvent.Message));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Event time: {0}&quot;</span>, 
            theEvent.EventTime.ToString(
            CultureInfo.InvariantCulture)));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Event ID: {0}&quot;</span>, 
            theEvent.EventID.ToString(<span class="str">&quot;N&quot;</span>, 
            CultureInfo.InvariantCulture)));
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitApplicationInfo(
        CustomEventFormatter formatter, 
        WebApplicationInformation appInfo)
    {
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Application domain: {0}&quot;</span>, 
            appInfo.ApplicationDomain));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Application Virtual Path: {0}&quot;</span>, 
            appInfo.ApplicationVirtualPath));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Application Physical Path: {0}&quot;</span>, 
            appInfo.ApplicationPath));
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitProcessInfo(
        CustomEventFormatter formatter, 
        WebProcessInformation webProcessInfo)
    {
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Process ID: {0}&quot;</span>, 
            webProcessInfo.ProcessID.ToString(
            CultureInfo.InvariantCulture)));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Process name: {0}&quot;</span>, 
            webProcessInfo.ProcessName));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Account name: {0}&quot;</span>, 
            webProcessInfo.AccountName));
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitRequestInfo(
        CustomEventFormatter formatter, 
        WebRequestInformation webRequestInfo)
    {
        <span class="kwrd">string</span> name = <span class="kwrd">null</span>;
        <span class="kwrd">if</span> (webRequestInfo.Principal != <span class="kwrd">null</span>)
            name = webRequestInfo.Principal.Identity.Name;

        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Request URL: {0}&quot;</span>, 
            webRequestInfo.RequestUrl));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Request path: {0}&quot;</span>, 
            webRequestInfo.RequestPath));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;User name: {0}&quot;</span>, 
            name ?? <span class="str">&quot;[ANONYMOUS]&quot;</span>));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;User host address: {0}&quot;</span>, 
            webRequestInfo.UserHostAddress));
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitExceptionAtAGlance(
        CustomEventFormatter formatter, 
        Exception exception)
    {
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Type: {0}&quot;</span>, 
            exception.GetType().Name));
        formatter.AppendLine(<span class="kwrd">string</span>.Format(
            <span class="str">&quot;Message: {0}&quot;</span>, 
            exception.Message));
        <span class="kwrd">if</span> (<span class="kwrd">null</span> != exception.InnerException)
        {
            formatter.Indent();
            formatter.AppendLine(<span class="str">&quot;--&gt;Inner Exception&quot;</span>);
            EmitExceptionAtAGlance(formatter, 
                exception.InnerException);
            formatter.RevertIndent();
        }
    }

    <span class="kwrd">private</span> <span class="kwrd">static</span> <span class="kwrd">void</span> EmitExceptionStackTrace(
        CustomEventFormatter formatter, Exception exception)
    {
        formatter.AppendLine(exception.StackTrace);

        <span class="kwrd">if</span> (<span class="kwrd">null</span> != exception.InnerException)
        {
            <span class="rem">// no point indenting</span>
            <span class="rem">// since stack traces typically wrap like crazy</span>
            formatter.AppendLine();
            formatter.AppendLine(<span class="str">&quot;--&gt;Inner exception stack trace:&quot;</span>);
            EmitExceptionStackTrace(formatter, exception.InnerException);
        }
    }
}
</pre>
<p>And finally, here&#39;s a helper class that manages indentation levels for the output email message:</p><pre class="csharpcode"><span class="kwrd">public</span> <span class="kwrd">class</span> CustomEventFormatter
{
    <span class="kwrd">const</span> <span class="kwrd">int</span> TabSpaces = 4;

    StringBuilder sb = <span class="kwrd">new</span> StringBuilder();
    <span class="kwrd">private</span> <span class="kwrd">int</span> indentLevel;
    <span class="kwrd">private</span> <span class="kwrd">bool</span> startingNewLine = <span class="kwrd">true</span>;

    <span class="kwrd">public</span> <span class="kwrd">void</span> Indent()
    {
        ++indentLevel;
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> RevertIndent()
    {
        <span class="kwrd">if</span> (indentLevel &gt; 0)
            --indentLevel;
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> Append(<span class="kwrd">string</span> text)
    {
        <span class="kwrd">if</span> (startingNewLine)
            EmitIndent();
        sb.Append(text);
        startingNewLine = <span class="kwrd">false</span>;
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> AppendLine(<span class="kwrd">string</span> lineOfText)
    {
        <span class="kwrd">if</span> (startingNewLine)
            EmitIndent();
        EmitIndent();
        sb.AppendLine(lineOfText);
        startingNewLine = <span class="kwrd">true</span>;
    }

    <span class="kwrd">private</span> <span class="kwrd">void</span> EmitIndent()
    {
        sb.Append(<span class="str">&#39; &#39;</span>, TabSpaces * indentLevel);
    }

    <span class="kwrd">public</span> <span class="kwrd">void</span> AppendLine()
    {
        AppendLine(<span class="kwrd">string</span>.Empty);
    }

    <span class="kwrd">public</span> <span class="kwrd">override</span> <span class="kwrd">string</span> ToString()
    {
        <span class="kwrd">return</span> sb.ToString();
    }
}
</pre>
<p>Build this into a library application and reference it in your config file. Here&#39;s an example:</p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">healthMonitoring</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">providers</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;mailWebEventProvider&quot;</span>
         <span class="attr">type</span><span class="kwrd">=&quot;MyMailWebEventProvider&quot;</span>
         <span class="attr">to</span><span class="kwrd">=&quot;web-fault@fabrikam.com&quot;</span>
         <span class="attr">from</span><span class="kwrd">=&quot;website@fabrikam.com&quot;</span>
         <span class="attr">buffer</span><span class="kwrd">=&quot;false&quot;</span>
         <span class="attr">subjectPrefix</span><span class="kwrd">=&quot;[WEB-ERROR]&quot;</span>
       <span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">providers</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">rules</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">add</span> <span class="attr">name</span><span class="kwrd">=&quot;All Errors Email&quot;</span>
         <span class="attr">eventName</span><span class="kwrd">=&quot;All Errors&quot;</span>
         <span class="attr">provider</span><span class="kwrd">=&quot;mailWebEventProvider&quot;</span>
         <span class="attr">profile</span><span class="kwrd">=&quot;Default&quot;</span>
         <span class="attr">minInstances</span><span class="kwrd">=&quot;1&quot;</span>
         <span class="attr">maxLimit</span><span class="kwrd">=&quot;Infinite&quot;</span>
         <span class="attr">minInterval</span><span class="kwrd">=&quot;00:01:00&quot;</span>
         <span class="attr">custom</span><span class="kwrd">=&quot;&quot;</span><span class="kwrd">/&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">rules</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">healthMonitoring</span><span class="kwrd">&gt;</span>
</pre><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52349" width="1" height="1">]]></content:encoded>
      <pubDate>Mon, 04 Aug 2008 10:11:14 +0000</pubDate>
      <category domain="http://securityratty.com/tag/return">return</category>
      <category domain="http://securityratty.com/tag/return subjectbuilder">return subjectbuilder</category>
      <category domain="http://securityratty.com/tag/return formatter">return formatter</category>
      <category domain="http://securityratty.com/tag/exception">exception</category>
      <category domain="http://securityratty.com/tag/formatter">formatter</category>
      <category domain="http://securityratty.com/tag/crazy formatter">crazy formatter</category>
      <category domain="http://securityratty.com/tag/static void">static void</category>
      <category domain="http://securityratty.com/tag/static void emitprocessinfo">static void emitprocessinfo</category>
      <category domain="http://securityratty.com/tag/return null">return null</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/04/better-exception-reporting-in-asp-net-part-2.aspx">Better exception reporting in ASP.NET part 2</source>
    </item>
    <item>
      <title><![CDATA[Simulating Email in .NET]]></title>
      <link>http://securityratty.com/article/0c454dbe28b5b63d07ee0089e019de77</link>
      <guid>http://securityratty.com/article/0c454dbe28b5b63d07ee0089e019de77</guid>
      <description><![CDATA[I use email as a notification mechanism a lot, and often in class I'll demo sending email via a technique that I use frequently when developing code. It allows you to simulate sending an email...]]></description>
      <content:encoded><![CDATA[<p>I use email as a notification mechanism a lot, and often in class I&#39;ll demo sending email via a technique that I use frequently when developing code. It allows you to simulate sending an email message.</p> <p>The trick to doing this is not to hardcode things like host, port, etc. for your SMTP server when you use System.Net.Mail to send mail. Instead, use the default ctor for <a href="http://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient.aspx" target="_blank">SmtpClient</a> as I&#39;ve done in the code below.</p> <blockquote><pre class="csharpcode"><span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)
{
    <span class="rem">// note the use of the MailAddress class</span>
    <span class="rem">// this allows me to specify display names as well as email addresses</span>
    MailAddress from = <span class="kwrd">new</span> MailAddress(<span class="str">&quot;admin@fabrikam.com&quot;</span>, <span class="str">&quot;Fabrikam Website&quot;</span>);
    MailAddress to = <span class="kwrd">new</span> MailAddress(<span class="str">&quot;mari@fabrikam.com&quot;</span>, <span class="str">&quot;Mari Joyce&quot;</span>);

    MailMessage msg = <span class="kwrd">new</span> MailMessage(from, to);
    msg.Subject  = <span class="str">&quot;Testing 123&quot;</span>;
    msg.Body = <span class="str">&quot;This is only a test!&quot;</span>;

    <span class="rem">// note use of default ctor</span>
    <span class="rem">// this looks in config to figure out how to send mail</span>
    <span class="kwrd">new</span> SmtpClient().Send(msg);
}</pre></blockquote>
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &quot;Courier New&quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }


<p>What you&#39;re telling .NET by using the default ctor for SmtpClient is, &quot;please use my config file to figure out how to send mail&quot;. Now you can use the system.net/mailSettings/smtp section in config to specify the details of your mail server, and all of the code in your app that is written to use the default SmtpClient ctor will inherit these settings. Here&#39;s an example of what the config on a production server might look like (if you put passwords in your config files, be sure to <a href="http://msdn.microsoft.com/en-us/library/ms998283.aspx" target="_blank">encrypt those sections</a>): </p><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">configuration</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">system.net</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">mailSettings</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">smtp</span> <span class="attr">deliveryMethod</span><span class="kwrd">=&quot;Network&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">network</span> <span class="attr">host</span><span class="kwrd">=&quot;mail.fabrikam.com&quot;</span>
                 <span class="attr">port</span><span class="kwrd">=&quot;25&quot;</span>
                 <span class="attr">userName</span><span class="kwrd">=&quot;WebsiteMailAccount&quot;</span>
                 <span class="attr">password</span><span class="kwrd">=&quot;whatever&quot;</span><span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">smtp</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">mailSettings</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">system.net</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">configuration</span><span class="kwrd">&gt;</span></pre><pre class="csharpcode">&nbsp;</pre>
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &quot;Courier New&quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }


<p>During development, I use different settings because I don&#39;t usually want to deal with the hassle of installing an SMTP server on my development box. Instead, I want email messages delivered as individual files in a directory on my hard drive (I always have a c:\mail directory on my development box for just this purpose):</p>
<blockquote><pre class="csharpcode"><span class="kwrd">&lt;</span><span class="html">configuration</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;</span><span class="html">system.net</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;</span><span class="html">mailSettings</span><span class="kwrd">&gt;</span>
      <span class="kwrd">&lt;</span><span class="html">smtp</span> <span class="attr">deliveryMethod</span><span class="kwrd">=&quot;SpecifiedPickupDirectory&quot;</span><span class="kwrd">&gt;</span>
        <span class="kwrd">&lt;</span><span class="html">specifiedPickupDirectory</span> <span class="attr">pickupDirectoryLocation</span><span class="kwrd">=&quot;c:\mail&quot;</span><span class="kwrd">/&gt;</span>
      <span class="kwrd">&lt;/</span><span class="html">smtp</span><span class="kwrd">&gt;</span>
    <span class="kwrd">&lt;/</span><span class="html">mailSettings</span><span class="kwrd">&gt;</span>
  <span class="kwrd">&lt;/</span><span class="html">system.net</span><span class="kwrd">&gt;</span>
<span class="kwrd">&lt;/</span><span class="html">configuration</span><span class="kwrd">&gt;</span></pre></blockquote>
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, &quot;Courier New&quot;, courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }


<p>Now when I run the program above, I get a .EML file in my c:\mail directory:</p>
<p><a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/image_5F00_2.png"><img style="border-right:0px;border-top:0px;margin:0px 0px 0px 35px;border-left:0px;border-bottom:0px;" height="230" alt="image" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/image_5F00_thumb.png" width="404" border="0" /></a> </p>
<p>Outlook Express is normally registered as the viewer for .EML files, so double-click the file to view it:</p>
<p><a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/image_5F00_4.png"><img style="border-right:0px;border-top:0px;margin:0px 0px 0px 35px;border-left:0px;border-bottom:0px;" height="287" alt="image" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/keith/image_5F00_thumb_5F00_1.png" width="292" border="0" /></a> </p>
<p>If you&#39;ve never seen this method of simulating email before, I hope you find it as useful as I have. Happy coding!</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52305" width="1" height="1">]]></content:encoded>
      <pubDate>Fri, 01 Aug 2008 09:59:01 +0000</pubDate>
      <category domain="http://securityratty.com/tag/csharpcode pre">csharpcode pre</category>
      <category domain="http://securityratty.com/tag/pre">pre</category>
      <category domain="http://securityratty.com/tag/csharpcode">csharpcode</category>
      <category domain="http://securityratty.com/tag/color">color</category>
      <category domain="http://securityratty.com/tag/email">email</category>
      <category domain="http://securityratty.com/tag/email addresses mailaddress">email addresses mailaddress</category>
      <category domain="http://securityratty.com/tag/mailaddress">mailaddress</category>
      <category domain="http://securityratty.com/tag/mail server">mail server</category>
      <category domain="http://securityratty.com/tag/mail">mail</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/08/01/simulating-email-in-net.aspx">Simulating Email in .NET</source>
    </item>
    <item>
      <title><![CDATA[Visualized Storm fireworks for your 4th of July]]></title>
      <link>http://securityratty.com/article/cd69cdbb404159575b86657784e007bb</link>
      <guid>http://securityratty.com/article/cd69cdbb404159575b86657784e007bb</guid>
      <description><![CDATA[As expected, the Storm botnet maestros have queued up some pwnage for your 4th of July
See the SANS diary for all the details
Upon receipt of my first fireworks.exe sample this evening, I went through...]]></description>
      <content:encoded><![CDATA[As expected, the Storm botnet maestros have queued up some pwnage for your 4th of July. <br />See the SANS <a href="http://isc.sans.org/diary.html?storyid=4669" target="_blank">diary</a> for all the details.<br />Upon receipt of my first fireworks.exe sample this evening, I went through the standard routine and ran it through the analysis mill. Like the ISC said, not much new here, but if you'd like the nitty-gritty, I've put the analysis report <a href="http://holisticinfosec.org/analysis/storm/fireworks/fireworks_storm.txt" target="_blank">here</a>, the peers config list <a href="http://holisticinfosec.org/analysis/storm/fireworks/peers.txt" target="_blank">here</a>, and the pcap <a href="http://holisticinfosec.org/analysis/storm/fireworks/fireworks.pcap" target="_blank">here</a>.<br />However, what I was really inspired to do this evening was visualize the pcap with Raffael Marty's AfterGlow. His new <a href="http://www.amazon.com/Applied-Security-Visualization-Raffael-Marty/dp/0321510100" target="_blank">book</a>, Applied Security Visualization, is coming out next month, so we can turn old Storm news into a celebration of the 4th and the pending release of Applied Security Visualization. By the way, Raffael's visualization workshop slides from the 20th Annual <a href="http://www.first.org/" target="_blank">FIRST</a> Conference in Vancouver, B.C. last week are <a href="http://www.secviz.org/content/applied-security-visualization-first-2008-talk" target="_blank">here</a>, and mine regarding Malcode Analysis for Incident Handlers are <a href="http://holisticinfosec.org/publications/McRee_MATFIH_FIRST_final.pdf" target="_blank">here</a>.<br />So, a little AfterGlow magic,<br /><span style="font-style:italic;">tcpdump -vttttnnelr /home/rmcree/pcap/fireworks.pcap | ./tcpdump2csv.pl "sip dip ttl" | perl ../graph/afterglow.pl -c /home/rmcree/afterglow/src/perl/graph/color.properties -p 2 | neato -Tgif -o fireworks.gif</span>, and the results look just like the fireworks we hoped they would. <br />Happy 4th of July everyone! <br />Except you Storm a$$hat$. ;-)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://holisticinfosec.org/analysis/storm/fireworks/fireworks.gif" target="_blan"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px;" src="http://holisticinfosec.org/analysis/storm/fireworks/fireworks.gif" border="0" alt="" /></a><br /><br /><a href="http://del.icio.us/post?url=http://holisticinfosec.blogspot.com/2008/07/visualized-storm-fireworks-for-your-4th.html&title=Visualized%20Storm%20fireworks%20for%20your%204th%20of%20July " title="Visualized Storm fireworks for your 4th of July ">del.icio.us</a> | <a href="http://digg.com/submit?phase=2&amp;url=http://holisticinfosec.blogspot.com/2008/07/visualized-storm-fireworks-for-your-4th.html" title="Visualized Storm fireworks for your 4th of July ">digg</a>]]></content:encoded>
      <pubDate>Thu, 03 Jul 2008 16:54:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/4th">4th</category>
      <category domain="http://securityratty.com/tag/fireworks">fireworks</category>
      <category domain="http://securityratty.com/tag/july">july</category>
      <category domain="http://securityratty.com/tag/security visualization">security visualization</category>
      <category domain="http://securityratty.com/tag/happy 4th">happy 4th</category>
      <category domain="http://securityratty.com/tag/peers config list">peers config list</category>
      <category domain="http://securityratty.com/tag/afterglow">afterglow</category>
      <category domain="http://securityratty.com/tag/visualization workshop slides">visualization workshop slides</category>
      <category domain="http://securityratty.com/tag/raffael marty">raffael marty</category>
      <source url="http://holisticinfosec.blogspot.com/2008/07/visualized-storm-fireworks-for-your-4th.html">Visualized Storm fireworks for your 4th of July</source>
    </item>
    <item>
      <title><![CDATA[Intellisense for XML config files broken in VS 2008?]]></title>
      <link>http://securityratty.com/article/8033cdd726347c87fc67beb5f4537b71</link>
      <guid>http://securityratty.com/article/8033cdd726347c87fc67beb5f4537b71</guid>
      <description><![CDATA[I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in...]]></description>
      <content:encoded><![CDATA[<p>I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in no namespace, Intellisense seemed to work.</p> <p>In VS 2008, Intellisense for config files was working great for me until recently, and now, regardless of whether I have the namespace or not, it appears hopelessly broken. I checked under XML|Schemas to see if the schema was in place, and indeed I have DotNetConfig.xsd listed in there for an empty namespace, and it's got the little green checkmark by it, which makes me think VS recognizes that this is the schema it's supposed to use, but still no joy. There are a few other schemas listed here (DotNetConfig30.xsd, for example), but none of those have checks by them - only DotNetConfig.xsd is checked.</p> <p>Has anyone else seen this?</p><div style="clear:both;"></div><img src="http://pluralsight.com/community/aggbug.aspx?PostID=51024" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 22 May 2008 10:55:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/intellisense">intellisense</category>
      <category domain="http://securityratty.com/tag/namespace">namespace</category>
      <category domain="http://securityratty.com/tag/namespace declaration">namespace declaration</category>
      <category domain="http://securityratty.com/tag/empty namespace">empty namespace</category>
      <category domain="http://securityratty.com/tag/config files">config files</category>
      <category domain="http://securityratty.com/tag/xsd">xsd</category>
      <category domain="http://securityratty.com/tag/schema">schema</category>
      <category domain="http://securityratty.com/tag/xml">xml</category>
      <category domain="http://securityratty.com/tag/dotnetconfig">dotnetconfig</category>
      <source url="http://pluralsight.com/community/blogs/keith/archive/2008/05/22/51024.aspx">Intellisense for XML config files broken in VS 2008?</source>
    </item>
    <item>
      <title><![CDATA[Intellisense for XML config files broken in VS 2008?]]></title>
      <link>http://securityratty.com/article/fa8d76815a54d766f52448ceda8c69cf</link>
      <guid>http://securityratty.com/article/fa8d76815a54d766f52448ceda8c69cf</guid>
      <description><![CDATA[I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in...]]></description>
      <content:encoded><![CDATA[<p>I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in no namespace, Intellisense seemed to work.</p> <p>In VS 2008, Intellisense for config files was working great for me until recently, and now, regardless of whether I have the namespace or not, it appears hopelessly broken. I checked under XML|Schemas to see if the schema was in place, and indeed I have DotNetConfig.xsd listed in there for an empty namespace, and it's got the little green checkmark by it, which makes me think VS recognizes that this is the schema it's supposed to use, but still no joy. There are a few other schemas listed here (DotNetConfig30.xsd, for example), but none of those have checks by them - only DotNetConfig.xsd is checked.</p> <p>Has anyone else seen this?</p><div style="clear:both;"></div><img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51024" width="1" height="1">]]></content:encoded>
      <pubDate>Thu, 22 May 2008 10:55:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/intellisense">intellisense</category>
      <category domain="http://securityratty.com/tag/namespace">namespace</category>
      <category domain="http://securityratty.com/tag/namespace declaration">namespace declaration</category>
      <category domain="http://securityratty.com/tag/empty namespace">empty namespace</category>
      <category domain="http://securityratty.com/tag/config files">config files</category>
      <category domain="http://securityratty.com/tag/xsd">xsd</category>
      <category domain="http://securityratty.com/tag/schema">schema</category>
      <category domain="http://securityratty.com/tag/xml">xml</category>
      <category domain="http://securityratty.com/tag/dotnetconfig">dotnetconfig</category>
      <source url="http://www.pluralsight.com/community/blogs/keith/archive/2008/05/22/51024.aspx">Intellisense for XML config files broken in VS 2008?</source>
    </item>
    <item>
      <title><![CDATA[Intellisense for XML config files broken in VS 2008?]]></title>
      <link>http://securityratty.com/article/9f2d99c5d10eb1662f5022afbda678c4</link>
      <guid>http://securityratty.com/article/9f2d99c5d10eb1662f5022afbda678c4</guid>
      <description><![CDATA[I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in...]]></description>
      <content:encoded><![CDATA[<p>I remember having trouble in VS 2005 with Intellisense not working - the trick back in those days was to remove the namespace declaration that was added by various tools. As long as the content was in no namespace, Intellisense seemed to work.</p> <p>In VS 2008, Intellisense for config files was working great for me until recently, and now, regardless of whether I have the namespace or not, it appears hopelessly broken. I checked under XML|Schemas to see if the schema was in place, and indeed I have DotNetConfig.xsd listed in there for an empty namespace, and it's got the little green checkmark by it, which makes me think VS recognizes that this is the schema it's supposed to use, but still no joy. There are a few other schemas listed here (DotNetConfig30.xsd, for example), but none of those have checks by them - only DotNetConfig.xsd is checked.</p> <p>Has anyone else seen this?</p><img src ="http://pluralsight.com/blogs/keith/aggbug/51024.aspx" width = "1" height = "1" />]]></content:encoded>
      <pubDate>Thu, 22 May 2008 04:55:00 +0000</pubDate>
      <category domain="http://securityratty.com/tag/intellisense">intellisense</category>
      <category domain="http://securityratty.com/tag/namespace">namespace</category>
      <category domain="http://securityratty.com/tag/namespace declaration">namespace declaration</category>
      <category domain="http://securityratty.com/tag/empty namespace">empty namespace</category>
      <category domain="http://securityratty.com/tag/config files">config files</category>
      <category domain="http://securityratty.com/tag/xsd">xsd</category>
      <category domain="http://securityratty.com/tag/schema">schema</category>
      <category domain="http://securityratty.com/tag/xml">xml</category>
      <category domain="http://securityratty.com/tag/dotnetconfig">dotnetconfig</category>
      <source url="http://pluralsight.com/blogs/keith/archive/2008/05/22/51024.aspx">Intellisense for XML config files broken in VS 2008?</source>
    </item>
    <item>
      <title><![CDATA[BackTrack Beta 3 Man Pages]]></title>
      <link>http://securityratty.com/article/b9eb1399244230ecdd46be371f407fe7</link>
      <guid>http://securityratty.com/article/b9eb1399244230ecdd46be371f407fe7</guid>
      <description><![CDATA[I've decide to covert the man pages that come with the BackTrack Beta 3 Live CD to HTML and post them to my site. I've just done the ones in /usr/local/man, so expect a few bad links. This will make...]]></description>
      <content:encoded><![CDATA[I've decide to covert the man pages that come with the BackTrack Beta 3 Live CD to HTML and post them to my site. I've just done the ones in /usr/local/man, so expect a few bad links. This will make it easier for me to link to the man pages from my other videos and articles. Tools include in the list are:<br>
<a href="http://irongeek.com/i.php?page=backtrack-3-man/aircrack-ng">aircrack-ng</a>,
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airdecap-ng">airdecap-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airdriver-ng">airdriver-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/aireplay-ng">aireplay-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airmon-ng">airmon-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airodump-ng">airodump-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airolib-ng">airolib-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airpwn">airpwn</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airsev-ng">airsev-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airsnort">airsnort</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airtun-ng">airtun-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/amap">amap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ascii-xfr">ascii-xfr</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/atftp">atftp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/bison">bison</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/bsqldb">bsqldb</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/buddy-ng">buddy-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/cabextract">cabextract</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/catdoc">catdoc</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/catppt">catppt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/datacopy">datacopy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dcfldd">dcfldd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/decrypt">decrypt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/defncopy">defncopy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dhcpdump">dhcpdump</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dmitry">dmitry</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dos2unix">dos2unix</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dupemap">dupemap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/easside-ng">easside-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etherape">etherape</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/flex">flex</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/foremost">foremost</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/freebcp">freebcp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/gencases">gencases</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/getattach.pl">getattach.pl</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hexedit">hexedit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/httpcapture">httpcapture</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ike-scan">ike-scan</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ivstools">ivstools</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/kstats">kstats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mac2unix">mac2unix</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/macchanger">macchanger</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/magicrescue">magicrescue</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/magicsort">magicsort</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/makeivs-ng">makeivs-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mboxgrep">mboxgrep</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/minicom">minicom</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-arp">nemesis-arp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-dns">nemesis-dns</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ethernet">nemesis-ethernet</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-icmp">nemesis-icmp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-igmp">nemesis-igmp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ip">nemesis-ip</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ospf">nemesis-ospf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-rip">nemesis-rip</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-tcp">nemesis-tcp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-udp">nemesis-udp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis">nemesis</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/netcat">netcat</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nmap">nmap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nmapfe">nmapfe</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/obexftp">obexftp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/obexftpd">obexftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/p0f">p0f</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/packetforge-ng">packetforge-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/psk-crack">psk-crack</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/rain">rain</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/runscript">runscript</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-config">scrollkeeper-config</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-gen-seriesid">scrollkeeper-gen-seriesid</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sipsak">sipsak</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/socat">socat</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcptraceroute">tcptraceroute</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/truecrypt">truecrypt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tsql">tsql</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/unicornscan">unicornscan</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/vomit">vomit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wesside-ng">wesside-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wordview">wordview</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xls2csv">xls2csv</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xminicom">xminicom</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xnmap">xnmap</a>, 			<a href="http://irongeek.com/i.php?page=backtrack-3-man/gdbm">gdbm</a>, 
		<a href="http://irongeek.com/i.php?page=backtrack-3-man/etter.conf">etter.conf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper.conf">scrollkeeper.conf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudoers">sudoers</a>, 			
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper">scrollkeeper</a>,&nbsp; <a href="http://irongeek.com/i.php?page=backtrack-3-man/80211debug">80211debug</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/80211stats">80211stats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/arpspoof">arpspoof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/atftpd">atftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athchans">athchans</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athctrl">athctrl</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athdebug">athdebug</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athkey">athkey</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athstats">athstats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ath_info">ath_info</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dnsspoof">dnsspoof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dnstracer">dnstracer</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dsniff">dsniff</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap">ettercap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap_curses">ettercap_curses</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap_plugins">ettercap_plugins</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etterfilter">etterfilter</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etterlog">etterlog</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/filesnarf">filesnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fping">fping</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fragroute">fragroute</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fragtest">fragtest</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hping2">hping2</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hping3">hping3</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/in.tftpd">in.tftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/macof">macof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mailsnarf">mailsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/msgsnarf">msgsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/netdiscover">netdiscover</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/packit">packit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-preinstall">scrollkeeper-preinstall</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-rebuilddb">scrollkeeper-rebuilddb</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-update">scrollkeeper-update</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sing">sing</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sshmitm">sshmitm</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sshow">sshow</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudo">sudo</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudoedit">sudoedit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpick">tcpick</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpick_italian">tcpick_italian</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpkill">tcpkill</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpnice">tcpnice</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tinyproxy">tinyproxy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/urlsnarf">urlsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/visudo">visudo</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/webmitm">webmitm</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/webspy">webspy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wlanconfig">wlanconfig</a><p>
Enjoy.]]></content:encoded>
      <pubDate>Mon, 19 May 2008 02:36:31 +0000</pubDate>
      <category domain="http://securityratty.com/tag/nemesis">nemesis</category>
      <category domain="http://securityratty.com/tag/nemesis-ip">nemesis-ip</category>
      <category domain="http://securityratty.com/tag/nemesis-rip">nemesis-rip</category>
      <category domain="http://securityratty.com/tag/nemesis-igmp">nemesis-igmp</category>
      <category domain="http://securityratty.com/tag/nemesis-icmp">nemesis-icmp</category>
      <category domain="http://securityratty.com/tag/nemesis-arp">nemesis-arp</category>
      <category domain="http://securityratty.com/tag/nemesis-tcp">nemesis-tcp</category>
      <category domain="http://securityratty.com/tag/ettercap plugins">ettercap plugins</category>
      <category domain="http://securityratty.com/tag/ettercap">ettercap</category>
      <source url="http://irongeek.com/i.php?page=backtrack-3-man/list">BackTrack Beta 3 Man Pages</source>
    </item>
    <item>
      <title><![CDATA[BackTrack Beta 3 Man Pages]]></title>
      <link>http://securityratty.com/article/40186d92f5cac8291c8e4722ba6916a4</link>
      <guid>http://securityratty.com/article/40186d92f5cac8291c8e4722ba6916a4</guid>
      <description><![CDATA[I've decide to covert the man pages that come with the BackTrack Beta 3 Live CD to HTML and post them to my site. I've just done the ones in /usr/local/man, so expect a few bad links. This will make...]]></description>
      <content:encoded><![CDATA[I've decide to covert the man pages that come with the BackTrack Beta 3 Live CD to HTML and post them to my site. I've just done the ones in /usr/local/man, so expect a few bad links. This will make it easier for me to link to the man pages from my other videos and articles. Tools include in the list are:<br>
<a href="http://irongeek.com/i.php?page=backtrack-3-man/aircrack-ng">aircrack-ng</a>,
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airdecap-ng">airdecap-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airdriver-ng">airdriver-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/aireplay-ng">aireplay-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airmon-ng">airmon-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airodump-ng">airodump-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airolib-ng">airolib-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airpwn">airpwn</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airsev-ng">airsev-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airsnort">airsnort</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/airtun-ng">airtun-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/amap">amap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ascii-xfr">ascii-xfr</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/atftp">atftp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/bison">bison</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/bsqldb">bsqldb</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/buddy-ng">buddy-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/cabextract">cabextract</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/catdoc">catdoc</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/catppt">catppt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/datacopy">datacopy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dcfldd">dcfldd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/decrypt">decrypt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/defncopy">defncopy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dhcpdump">dhcpdump</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dmitry">dmitry</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dos2unix">dos2unix</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dupemap">dupemap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/easside-ng">easside-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etherape">etherape</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/flex">flex</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/foremost">foremost</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/freebcp">freebcp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/gencases">gencases</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/getattach.pl">getattach.pl</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hexedit">hexedit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/httpcapture">httpcapture</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ike-scan">ike-scan</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ivstools">ivstools</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/kstats">kstats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mac2unix">mac2unix</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/macchanger">macchanger</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/magicrescue">magicrescue</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/magicsort">magicsort</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/makeivs-ng">makeivs-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mboxgrep">mboxgrep</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/minicom">minicom</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-arp">nemesis-arp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-dns">nemesis-dns</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ethernet">nemesis-ethernet</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-icmp">nemesis-icmp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-igmp">nemesis-igmp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ip">nemesis-ip</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-ospf">nemesis-ospf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-rip">nemesis-rip</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-tcp">nemesis-tcp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis-udp">nemesis-udp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nemesis">nemesis</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/netcat">netcat</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nmap">nmap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/nmapfe">nmapfe</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/obexftp">obexftp</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/obexftpd">obexftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/p0f">p0f</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/packetforge-ng">packetforge-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/psk-crack">psk-crack</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/rain">rain</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/runscript">runscript</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-config">scrollkeeper-config</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-gen-seriesid">scrollkeeper-gen-seriesid</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sipsak">sipsak</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/socat">socat</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcptraceroute">tcptraceroute</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/truecrypt">truecrypt</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tsql">tsql</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/unicornscan">unicornscan</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/vomit">vomit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wesside-ng">wesside-ng</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wordview">wordview</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xls2csv">xls2csv</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xminicom">xminicom</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/xnmap">xnmap</a>, 			<a href="http://irongeek.com/i.php?page=backtrack-3-man/gdbm">gdbm</a>, 
		<a href="http://irongeek.com/i.php?page=backtrack-3-man/etter.conf">etter.conf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper.conf">scrollkeeper.conf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudoers">sudoers</a>, 			
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper">scrollkeeper</a>,&nbsp; <a href="http://irongeek.com/i.php?page=backtrack-3-man/80211debug">80211debug</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/80211stats">80211stats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/arpspoof">arpspoof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/atftpd">atftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athchans">athchans</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athctrl">athctrl</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athdebug">athdebug</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athkey">athkey</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/athstats">athstats</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ath_info">ath_info</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dnsspoof">dnsspoof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dnstracer">dnstracer</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/dsniff">dsniff</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap">ettercap</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap_curses">ettercap_curses</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/ettercap_plugins">ettercap_plugins</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etterfilter">etterfilter</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/etterlog">etterlog</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/filesnarf">filesnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fping">fping</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fragroute">fragroute</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/fragtest">fragtest</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hping2">hping2</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/hping3">hping3</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/in.tftpd">in.tftpd</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/macof">macof</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/mailsnarf">mailsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/msgsnarf">msgsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/netdiscover">netdiscover</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/packit">packit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-preinstall">scrollkeeper-preinstall</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-rebuilddb">scrollkeeper-rebuilddb</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/scrollkeeper-update">scrollkeeper-update</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sing">sing</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sshmitm">sshmitm</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sshow">sshow</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudo">sudo</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/sudoedit">sudoedit</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpick">tcpick</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpick_italian">tcpick_italian</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpkill">tcpkill</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tcpnice">tcpnice</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/tinyproxy">tinyproxy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/urlsnarf">urlsnarf</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/visudo">visudo</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/webmitm">webmitm</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/webspy">webspy</a>, 
<a href="http://irongeek.com/i.php?page=backtrack-3-man/wlanconfig">wlanconfig</a><p>
Enjoy.
<p><a href="http://feeds.feedburner.com/~a/IrongeeksSecuritySite?a=K4OapG"><img src="http://feeds.feedburner.com/~a/IrongeeksSecuritySite?i=K4OapG" border="0"></img></a></p><img src="http://feeds.feedburner.com/~r/IrongeeksSecuritySite/~4/297640134" height="1" width="1"/>]]></content:encoded>
      <pubDate>Mon, 19 May 2008 02:36:31 +0000</pubDate>
      <category domain="http://securityratty.com/tag/nemesis">nemesis</category>
      <category domain="http://securityratty.com/tag/nemesis-ip">nemesis-ip</category>
      <category domain="http://securityratty.com/tag/nemesis-rip">nemesis-rip</category>
      <category domain="http://securityratty.com/tag/nemesis-igmp">nemesis-igmp</category>
      <category domain="http://securityratty.com/tag/nemesis-icmp">nemesis-icmp</category>
      <category domain="http://securityratty.com/tag/nemesis-arp">nemesis-arp</category>
      <category domain="http://securityratty.com/tag/nemesis-tcp">nemesis-tcp</category>
      <category domain="http://securityratty.com/tag/ettercap plugins">ettercap plugins</category>
      <category domain="http://securityratty.com/tag/ettercap">ettercap</category>
      <source url="http://feeds.feedburner.com/~r/IrongeeksSecuritySite/~3/297640134/i.php">BackTrack Beta 3 Man Pages</source>
    </item>
  </channel>
</rss>
