<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8482586957869056540</id><updated>2012-01-23T04:15:20.648+08:00</updated><title type='text'>DevaDraco's Rambling about Tech Stuff</title><subtitle type='html'>Just some interesting stuff I found and done.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-8551956729886172924</id><published>2011-02-07T03:34:00.027+08:00</published><updated>2011-02-07T11:49:13.051+08:00</updated><title type='text'>Do dereferencing null or uninitialized pointers in Objective C cause runtime errors?</title><content type='html'>I recently a interesting "discussion" with a Objective C developer about what happens when we dereference null or uninitialized pointers in Objective C?&lt;br /&gt;&lt;br /&gt;First a little recap: A pointer references a location in memory, and obtaining the value at the location a pointer refers to is known as dereferencing the pointer. A null pointer is a variable that makes reference to something that is not initialized. Uninitialized pointer is pointing to some memory location but the pointer value is not assigned.&lt;br /&gt;&lt;br /&gt;From my experience in C programming, dereferencing these types of pointers will almost certainly cause a runtime error resulting in a segmentation fault when the compiled program is executed. I'm pretty certain that this applies to Objective C too as the fundamentals are the same. However, my opponent insists that the Objective C language takes care of null and uninitialized pointers by making them point to &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Nil&lt;/span&gt; by default.&lt;br /&gt;&lt;br /&gt;To proof that dereferencing null or uninitialized pointers in Objective C will cause runtime errors, I found a simple Objective C sample file online and modified it to compile with gcc in Mac OS X. Attached below are 3 files that are identical except for 1 line of code with the following differences:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hello.m&lt;/span&gt;: with normal initialized pointer&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hello-null.m&lt;/span&gt;: with pointer pointing to NULL&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;hello-uninit.m&lt;/span&gt;: with uninitialized pointer&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;The screenshot below shows the programs compiled from hello-null.m and hello-uninit.m causing &lt;b&gt;segfaults&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/_zGX37qOSEqg/TU71cgBg9aI/AAAAAAAAAF0/oNqaibac174/s1600/objective-c_segfault-Boxed.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/_zGX37qOSEqg/TU71cgBg9aI/AAAAAAAAAF0/oNqaibac174/s640/objective-c_segfault-Boxed.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;The test environment is a default install Mac OS X 10.6.6 Snow Leopard and the gcc compiler is from Xcode 3.2.5 and iOS SDK 4.2.&lt;br /&gt;&lt;br /&gt;There you have to it: Dereferencing null or uninitialized pointers in Objective C &lt;i&gt;&lt;b&gt;will&lt;/b&gt;&lt;/i&gt; cause runtime errors resulting in segmentation faults.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;// hello.m&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;foundation foundation.h=""&gt;&lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;@interface Number: NSObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int number;&lt;br /&gt;}&lt;br /&gt;- (void)printNum;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation Number: NSObject&lt;br /&gt;- (void)printNum&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%d\n", number);&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b&gt;&lt;span style="color: red;"&gt;Number *myNumber = [Number new]; // equal to [[Number alloc] init]&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myNumber-&amp;gt;number = 6;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [myNumber printNum];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/stdio.h&gt;&lt;/foundation&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;hr style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;// hello-null.m&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;foundation foundation.h=""&gt;&lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;@interface Number: NSObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int number;&lt;br /&gt;}&lt;br /&gt;- (void)printNum;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation Number: NSObject&lt;br /&gt;- (void)printNum&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%d\n", number);&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style="color: red;"&gt;Number *myNumber = NULL;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myNumber-&amp;gt;number = 6;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [myNumber printNum];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;/stdio.h&gt;&lt;/foundation&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;hr style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;// hello-uninit.m&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;foundation foundation.h=""&gt;&lt;stdio.h&gt;&lt;br /&gt;&lt;br /&gt;@interface Number: NSObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int number;&lt;br /&gt;}&lt;br /&gt;- (void)printNum;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation Number: NSObject&lt;br /&gt;- (void)printNum&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%d\n", number);&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style="color: red;"&gt;Number *myNumber; // uninitialized&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myNumber-&amp;gt;number = 6;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; [myNumber printNum];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/stdio.h&gt;&lt;/foundation&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;--- Update ---&lt;br /&gt;&lt;br /&gt;It occurred to me that other people might think that my examples were biased towards the segfault results as they write to null and uninitialized pointers, instead of just dereferencing the pointers. So I retested by modifying the examples to only dereference the null and uninitialized pointers, and I get the same results: segmentation faults.&lt;br /&gt;&lt;br /&gt;Attached below is a modified version of &lt;span style="font-size: small;"&gt;hello-uninit.m&lt;/span&gt; that do not write to the dereferenced pointer. The &lt;span style="font-size: small;"&gt;hello-null.m&lt;/span&gt; file is modified accordingly.&lt;br /&gt;&lt;hr style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;// hello-uninit2.m&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;#import &amp;lt;Foundation/Foundation.h&amp;gt;&lt;br /&gt;#import &amp;lt;stdio.h&amp;gt;&lt;br /&gt;&lt;br /&gt;@interface Number: NSObject&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @public&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int number;&lt;br /&gt;}&lt;br /&gt;- (void)printNum;&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;@implementation Number: NSObject&lt;br /&gt;- (void)printNum&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%d\n", number);&lt;br /&gt;}&lt;br /&gt;@end&lt;br /&gt;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;b style="color: red;"&gt;Number *myNumber; // uninitialized&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; // &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;myNumber-&amp;gt;number = 6;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;myNumber-&amp;gt;number ) {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="font-size: x-small;"&gt;[myNumber printNum];&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;--- The End ---&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-8551956729886172924?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/8551956729886172924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=8551956729886172924' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8551956729886172924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8551956729886172924'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2011/02/do-dereferencing-null-or-uninitialized.html' title='Do dereferencing null or uninitialized pointers in Objective C cause runtime errors?'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_zGX37qOSEqg/TU71cgBg9aI/AAAAAAAAAF0/oNqaibac174/s72-c/objective-c_segfault-Boxed.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-8121949819254165999</id><published>2010-01-09T13:22:00.024+08:00</published><updated>2010-01-09T14:17:19.884+08:00</updated><title type='text'>Testing for TLS1/SSLv3 Renegotiation Vulnerability</title><content type='html'>&lt;div style="font-family: inherit;"&gt;I noticed that eEye's Retina Network Scanner and Tenable's Nessus added the check for &lt;i&gt;TLS1/SSLv3 Renegotiation Vulnerability&lt;/i&gt; in December. During my research, I came across the excellent whitepaper by Thierry Zoller from G-SEC titled "TLS/SSLv3 renegotiation vulnerability explained":&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;a href="http://www.g-sec.lu/practicaltls.pdf"&gt;http://www.g-sec.lu/practicaltls.pdf&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;To help sysadmins who needs to find out if their own webservers are vulnerable, I'm going to demonstrate how to test for the vulnerability using the OpenSSL toolkit (&lt;a href="http://www.openssl.org/"&gt;http://www.openssl.org&lt;/a&gt;). I'm not going to discuss the details of the vulnerabilty as that can be found in the Zollor whitepaper. If your target is Internet-accessible, Nasko provided a great online "TLS Renegotiation Test" at:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;a href="http://netsekure.org/tag/tls1-2/"&gt;http://netsekure.org/tag/tls1-2/&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;In a nutshell, we can test the issue by running the following command:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ &lt;span style="color: blue;"&gt;openssl s_client -connect targetserver:443&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;then adding:&lt;br /&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GET / HTTP/1.0&lt;br /&gt;R&lt;br /&gt;&amp;lt;CRLF&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;* Please note that &lt;b&gt;&amp;lt;CRLF&amp;gt;&lt;/b&gt; means hitting the Enter/Return key. &lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;If the target is vulnerable, the server will return a renegotiation message. After receiving the renegotiation message, the server will return the content of the page if another&amp;nbsp;&lt;b&gt;&amp;lt;CRLF&amp;gt;&lt;/b&gt; is sent.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;br /&gt;Since a picture paints a thousand words, the following two examples illustrates the SSL transactions of a non-vulnerable and a vulnerable server using OpenSSL.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;div style="font-family: inherit;"&gt;&lt;b&gt;&lt;u&gt;OpenSSL transaction of a non-vulnerable server:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="color: purple; font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ &lt;span style="color: blue;"&gt;openssl s_client -connect good-server.org:443&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;CONNECTED(00000003)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;depth=0 /OU=SAMPLE ONLY/O=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A 1024 Server Certificate/C=CA&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;verify error:num=20:unable to get local issuer certificate&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;verify return:1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Certificate chain&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;0 s:/OU=SAMPLE ONLY/O=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Server certificate&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-----BEGIN CERTIFICATE-----&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;-----END CERTIFICATE-----&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;subject=/OU=SAMPLE ONLY/O=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;No client certificate CA names sent&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SSL handshake has read 1421 bytes and written 316 bytes&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Server public key is 1024 bit&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Compression: NONE&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Expansion: NONE&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;SSL-Session:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol&amp;nbsp; : TLSv1&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cipher&amp;nbsp;&amp;nbsp;&amp;nbsp; : DHE-RSA-AES256-SHA&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID: D37DC0B86A49D57900149FF75419F31221E862FFB18A38CA9ABDE165D6DC3A32&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID-ctx:&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master-Key: 801C70181E7597FB2355FC842D35ED741236E148E17002498C1CA85D287FF64B&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5AB2FC0C9653977C7B6621DCF249C325&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key-Arg&amp;nbsp;&amp;nbsp; : None&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Time: 1263012957&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout&amp;nbsp;&amp;nbsp; : 300 (sec)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verify return code: 21 (unable to verify the first certificate)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GET / HTTP/1.0&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;R&lt;/span&gt;&lt;br style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;CRLF&amp;gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;b&gt;&lt;span style="color: #274e13; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;RENEGOTIATING&lt;/span&gt;&lt;/b&gt;&lt;br style="color: #274e13; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: #274e13; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;5648:error:140940F5:SSL routines:SSL3_READ_BYTES:unexpected record:s3_pkt.c:1210&lt;/span&gt;&lt;span style="color: black; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: purple; font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: inherit;"&gt;&lt;hr /&gt;&lt;b&gt;&lt;u&gt;OpenSSL transaction of a vulnerable server:&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$ &lt;span style="color: blue;"&gt;openssl s_client -connect bad-server.org:443&lt;/span&gt;&lt;br /&gt;CONNECTED(00000003)&lt;br /&gt;depth=0 /CN=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br /&gt;verify error:num=20:unable to get local issuer certificate&lt;br /&gt;&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;Certificate chain&lt;br /&gt;&amp;nbsp;0 s:/CN=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;Server certificate&lt;br /&gt;-----BEGIN CERTIFICATE-----&lt;br /&gt;&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br /&gt;-----END CERTIFICATE-----&lt;br /&gt;subject=/CN=&lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;No client certificate CA names sent&lt;br /&gt;---&lt;br /&gt;SSL handshake has read 1620 bytes and written 316 bytes&lt;br /&gt;---&lt;br /&gt;New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA&lt;br /&gt;Server public key is 1024 bit&lt;br /&gt;Compression: NONE&lt;br /&gt;Expansion: NONE&lt;br /&gt;SSL-Session:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Protocol&amp;nbsp; : TLSv1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cipher&amp;nbsp;&amp;nbsp;&amp;nbsp; : DHE-RSA-AES256-SHA&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID: 100B637C67A441127FEE9836EDB8364D7F3D78280D1C991AF59AF7D6F09960A6&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Session-ID-ctx:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Master-Key: 86E28EB111FDF81ED9970D05769582ED2AE217E1C992DDA3CB36DD2F5AA2570B&lt;br /&gt;258F5C44C2CBAB95D3145C124AC3B7F7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Key-Arg&amp;nbsp;&amp;nbsp; : None&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start Time: 1263013004&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Timeout&amp;nbsp;&amp;nbsp; : 300 (sec)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verify return code: 21 (unable to verify the first certificate)&lt;br /&gt;---&lt;br /&gt;&lt;span style="color: blue;"&gt;GET / HTTP/1.0&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;R&lt;/span&gt;&lt;br style="color: blue;" /&gt;&lt;span style="color: blue;"&gt;&amp;lt;CRLF&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color: red;"&gt;RENEGOTIATING&lt;/span&gt;&lt;/b&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; depth=0 /CN=bad-server.org&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify error:num=20:unable to get local issuer certificate&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify return:1&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; depth=0 /CN=bad-server.org&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify error:num=27:certificate not trusted&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify return:1&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; depth=0 /CN=bad-server.org&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify error:num=21:unable to verify the first certificate&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; verify return:1&lt;/span&gt;&lt;br /&gt;&lt;span style="color: blue;"&gt;&amp;lt;CRLF&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;HTTP/1.1 200 OK&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Date: Sat, 09 Jan 2010 04:56:52 GMT&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Server: Apache&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Last-Modified: Mon, 13 Apr 2009 06:12:41 GMT&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; ETag: "758012-fe3-467699a12e840"&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Accept-Ranges: bytes&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Content-Length: 4067&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Connection: close&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Content-Type: text/html; charset=UTF-8&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; &amp;lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&amp;gt;&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; &amp;lt;HTML&amp;gt;&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; &amp;lt;HEAD&amp;gt;&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; &lt;span style="color: black;"&gt;&amp;lt;DELETED&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: red;"&gt;&amp;lt;/HTML&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="color: red;"&gt; &lt;/span&gt;&lt;br /&gt;closed&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: purple; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;$&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;span style="font-family: inherit;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: inherit;"&gt;&lt;span style="font-family: inherit;"&gt;For this vulnerablity, there's no known generic fix yet. Let's hope something comes along soon.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-8121949819254165999?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/8121949819254165999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=8121949819254165999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8121949819254165999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8121949819254165999'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2010/01/testing-for-tls1sslv3-renegotiation.html' title='Testing for TLS1/SSLv3 Renegotiation Vulnerability'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-4454677641852155620</id><published>2009-10-31T22:43:00.009+08:00</published><updated>2009-10-31T22:52:01.918+08:00</updated><title type='text'>Where is the ASP.NET Web Service template in Visual Studio 2005</title><content type='html'>I recently needed to create a Web Service (WS) application fast, and since I know nothing about web services, I thought that the best way would be to try out some sample WS apps first. I found that most of the online sample WS app were introduced using Visual Studio .NET.&lt;br /&gt;&lt;br /&gt;Since I have a newer Visual Studio 2005 Professional Edition, I thought that there will be no problem for me to follow the online exercises. Boy was I &lt;b style="color: red;"&gt;wrong!!!&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The first problem I encountered was just to create a Visual C# Web Service project. According to the instructions: from Visual Studio, select &lt;b&gt;File -&amp;gt; New -&amp;gt; Project...&lt;/b&gt;. Then select the &lt;b&gt;ASP.NET Web Service&lt;/b&gt; template...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/SuxL8KYMFbI/AAAAAAAAAFQ/eXxLbpazDUs/s1600-h/b01_Create_WS_project.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/SuxL8KYMFbI/AAAAAAAAAFQ/eXxLbpazDUs/s640/b01_Create_WS_project.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Wait a minute!!! There's no &lt;b&gt;ASP.NET &lt;/b&gt;&lt;b&gt;Web Service&lt;/b&gt; template!!!&lt;br /&gt;&lt;br /&gt;The only one I found was by selecting &lt;b&gt;File -&amp;gt; New -&amp;gt; Web Site...&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/SuxMtvNe9EI/AAAAAAAAAFY/_GXI2u27CZo/s1600-h/b02_create_WS_website_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/SuxMtvNe9EI/AAAAAAAAAFY/_GXI2u27CZo/s640/b02_create_WS_website_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;After a lot of googling and countless failed attempts to load the &lt;b&gt;ASP.NET &lt;/b&gt;&lt;b&gt;Web Service&lt;/b&gt; template, I found out that all I had to do was to install the &lt;b style="color: red;"&gt;Service Pack 1&lt;/b&gt; for Visual Studio.&lt;br /&gt;&lt;br /&gt;Unbelievable right?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-4454677641852155620?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/4454677641852155620/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=4454677641852155620' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4454677641852155620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4454677641852155620'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/10/where-is-aspnet-web-service-template-in.html' title='Where is the ASP.NET Web Service template in Visual Studio 2005'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zGX37qOSEqg/SuxL8KYMFbI/AAAAAAAAAFQ/eXxLbpazDUs/s72-c/b01_Create_WS_project.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-4575023210829126043</id><published>2009-10-31T21:48:00.029+08:00</published><updated>2009-10-31T22:27:38.414+08:00</updated><title type='text'>Publishing Web Service in IIS 6 from Visual Studio 2005</title><content type='html'>I was recently tasked with creating a simple Web Service (WS) application to serve as a training tool, and the problems that I encountered can be considered cruel and unusual for any pentester. The most idiotic issue came from using Visual Studio 2005 to publish the WS in IIS 6. When I used the debugger in Visual Studio (VS) to run the WS app, the app worked fine. But when I tried to publish the WS app in the &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;wwwroot&lt;/span&gt; of IIS, the stupid ASP keeps throwing me errors.&lt;br /&gt;&lt;br /&gt;I believe that no one should be made to suffer through this again, so I'm going to summarize what I did for &lt;i&gt;*posterity*&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Before I can start, we're going to need a baseline. I was using a default installation of Windows 2003 Server R2 Standard Edition with IIS 6, and a default installation of Visual Studio 2005 Professional Edition without SP1. The baseline WS app will be the default "&lt;i&gt;Hello World&lt;/i&gt;" Web Service Web Site from Visual Studio.&lt;br /&gt;&lt;br /&gt;1. To create the Web Site in Visual Studio, go to &lt;b&gt;File -&amp;gt; New -&amp;gt; Web Site&lt;/b&gt;. Choose &lt;b&gt;ASP.NET Web Service&lt;/b&gt; in the dialog box.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/SuwXs2hVHsI/AAAAAAAAACw/N97xIjNkQ_Y/s1600-h/01_Create_WS_Web_Site_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/SuwXs2hVHsI/AAAAAAAAACw/N97xIjNkQ_Y/s320/01_Create_WS_Web_Site_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;I'm going to name and save the project as per the following for brevity in this post:&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\WebSites\&lt;b&gt;Sample1&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You may notice that the &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Web.config&lt;/span&gt; file is missing from VS's &lt;b&gt;Solution Explorer&lt;/b&gt; (right windows), but it'll be created when you start debugging.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Then in VS, select &lt;b&gt;Debug -&amp;gt; Start Debugging&lt;/b&gt;. and choose &lt;b&gt;Add a new Web.config file with debugging enabled.&lt;/b&gt; in the next dialog box. A new browser is started showing the Web Service directory and you can start playing with the Web Service without any problem.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwj3Amg-ZI/AAAAAAAAADY/jST33uQBxyE/s1600-h/03_Debug_Hellow_World_Web_Service_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwj3Amg-ZI/AAAAAAAAADY/jST33uQBxyE/s320/03_Debug_Hellow_World_Web_Service_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;br /&gt;&lt;/div&gt;Notice the &lt;i&gt;port number&lt;/i&gt; in the URL, this is not the default IIS 6 web server.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. Now we will try to publish the WS. In VS, select &lt;b&gt;Build -&amp;gt; Build Web&lt;/b&gt; Site. You should get the &lt;i&gt;Build succeeded&lt;/i&gt; status. Then select &lt;b&gt;Build -&amp;gt; Publish Web Site&lt;/b&gt;. I'm going to publish the WS app in the root directory of IIS: &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;C:\Inetpub\wwwroot\&lt;b&gt;Sample1&lt;/b&gt;&lt;/span&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zGX37qOSEqg/SuwaEQ52DdI/AAAAAAAAADI/Tl4ynM3NKzA/s1600-h/03_Publish_Web_Site_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zGX37qOSEqg/SuwaEQ52DdI/AAAAAAAAADI/Tl4ynM3NKzA/s320/03_Publish_Web_Site_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You should get the &lt;i&gt;Publish succeeded&lt;/i&gt; status. Here comes the &lt;span style="color: red; font-size: large;"&gt;&lt;i&gt;&lt;b&gt;nightmare!!!&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. On the local machine, open the WS's URL in a new browser: &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;http://localhost/Sample1/Service.asmx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You will get the following error:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;Server Error in '/' Application.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="color: red;"&gt;Parser Error &lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately. &lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Parser Error Message: Could not create type 'Service'.&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Source Error: &lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 1:&amp;nbsp; &amp;lt;%@ WebService Language="C#" CodeBehind="~/App_Code/Service.cs" Class="Service" %&amp;gt;&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Source File: c:\inetpub\wwwroot\Sample1\Service.asmx&amp;nbsp;&amp;nbsp;&amp;nbsp; Line: 1 &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="color: red;"&gt;Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET Version:1.1.4322.2300 &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zGX37qOSEqg/Suwa4UolPQI/AAAAAAAAADQ/NV2cF-vr6Nk/s1600-h/04_Local_IE_Error_1.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zGX37qOSEqg/Suwa4UolPQI/AAAAAAAAADQ/NV2cF-vr6Nk/s320/04_Local_IE_Error_1.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. You need to make 2 changes to solve this error. The first step is to copy the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bin&lt;/span&gt; directory from your project directory into IIS's web root.&amp;nbsp; Look at your IIS's wwwroot directory structure:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;C:\&lt;br /&gt;+- Inetpub&lt;br /&gt;&amp;nbsp;&amp;nbsp; +- AdminScripts&lt;br /&gt;&amp;nbsp;&amp;nbsp; +- wwwroot&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- aspnet_client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- Sample1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- bin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.compiled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.dll&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You need to put all your "&lt;i&gt;App_Code&lt;/i&gt;" and "&lt;i&gt;bin&lt;/i&gt;" directories into the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;wwwroot&lt;/span&gt; directory instead of the published project directory (sub-directory where the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;asmx&lt;/span&gt; file resides). For some unknown reasons, Visual Studio 2005 do not move or copy them from the project directory for you automatically.&lt;br /&gt;&lt;br /&gt;Your new IIS wwwroot directory structure should look like this:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;C:\&lt;br /&gt;+- Inetpub&lt;br /&gt;&amp;nbsp;&amp;nbsp; +- AdminScripts&lt;br /&gt;&amp;nbsp;&amp;nbsp; +- wwwroot&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- aspnet_client&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- bin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.compiled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.dll&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- Sample1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- bin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.compiled&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; +- App_Code.dll&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;You should still get the same error if you reload the browser.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. The second step is changing the .NET version in IIS 6. IIS 6 is trying to run code compiled in .NET 2 with .NET 1. In Windows, go to &lt;b&gt;Administrative Tools -&amp;gt; Internet Information Services (IIS) Manager&lt;/b&gt;. In IIS Manager, expand &lt;b&gt;LOCALSERVER(local computer) -&amp;gt; Web Sites -&amp;gt; Default Web Site&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwm0tki5HI/AAAAAAAAADg/tit_j23H-II/s1600-h/05a_IIS_Manager_Censored.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwm0tki5HI/AAAAAAAAADg/tit_j23H-II/s320/05a_IIS_Manager_Censored.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Right-click &lt;b&gt;Default Web Site&lt;/b&gt; and select &lt;b&gt;Properties&lt;/b&gt;.In the dialog box, select the &lt;b&gt;ASP.NET&lt;/b&gt; tab. Change the ASP.NET version from &lt;i&gt;1.1.4322&lt;/i&gt; to &lt;i&gt;2.0.50727&lt;/i&gt; and click &lt;b&gt;OK&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zGX37qOSEqg/SuwnrochRdI/AAAAAAAAADo/c-KZz5K6Q_k/s1600-h/05b_dotNET_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zGX37qOSEqg/SuwnrochRdI/AAAAAAAAADo/c-KZz5K6Q_k/s320/05b_dotNET_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;6. Reload the local browser. You should see the following error:&lt;br /&gt;&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;Server Error in '/' Application.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;hr /&gt;&lt;span style="font-size: x-small;"&gt; &lt;span style="color: red;"&gt;Configuration Error &lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Description: An error occurred during the processing of a configuration file required to service this request. Please review the specific error details below and modify your configuration file appropriately. &lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Parser Error Message: It is an error to use a section registered as allowDefinition='MachineToApplication' beyond application level.&amp;nbsp; This error can be caused by a virtual directory not being configured as an application in IIS.&lt;/span&gt;&lt;br style="color: red;" /&gt; &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Source Error: &lt;/span&gt;&lt;br style="color: red;" /&gt;  &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 24:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ASP.NET to identify an incoming user. &lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 25:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --&amp;gt;&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 26: &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;authentication mode="Windows"&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 27: &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;!--&lt;/span&gt;&lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Line 28:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; The &lt;/span&gt;&lt;customerrors&gt;&lt;span style="color: red;"&gt; section enables configuration &lt;/span&gt;&lt;br style="color: red;" /&gt;  &lt;br style="color: red;" /&gt;&lt;span style="color: red;"&gt; Source File: c:\inetpub\wwwroot\sample1\web.config&amp;nbsp;&amp;nbsp;&amp;nbsp; Line: 26 &lt;/span&gt;&lt;br /&gt;&lt;/customerrors&gt;&lt;/authentication&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt; Version Information: Microsoft .NET Framework Version:2.0.50727.42; ASP.NET Version:2.0.50727.42 &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/Suw1HgJi4aI/AAAAAAAAAEI/R4bPGMvpaKQ/s1600-h/07_Local_IE_Error_2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Suw1HgJi4aI/AAAAAAAAAEI/R4bPGMvpaKQ/s320/07_Local_IE_Error_2.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;On a remote browser, you should see the following error when you open the WS's URL (assuming 192.168.1.185 is the WS server's IP): &lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;http://192.168.1.185/Sample1/Service.asmx&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red; font-size: x-small;"&gt;Server Error in '/' Application.&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;Runtime Error &lt;br /&gt;Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="color: red; font-size: x-small;"&gt;Details: To enable the details of this specific error message to be viewable on remote machines, please create a &amp;lt;customErrors&amp;gt; tag within a "web.config" configuration file located in the root directory of the current web application. This &amp;lt;customErrors&amp;gt; tag should then have its "mode" attribute set to "Off".&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Web.Config Configuration File --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;customErrors mode="Off"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;br /&gt;&lt;br /&gt;Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's &amp;lt;customErrors&amp;gt; configuration tag to point to a custom error page URL.&lt;br /&gt;&lt;br /&gt;&amp;lt;!-- Web.Config Configuration File --&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;configuration&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;br /&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;customerrors&gt;&lt;customerrors&gt;  &lt;/customerrors&gt;&lt;/customerrors&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zGX37qOSEqg/Suw5HPSGwsI/AAAAAAAAAEo/WsfBFZa6Zd4/s1600-h/a06b_Remote_IE_Error2.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zGX37qOSEqg/Suw5HPSGwsI/AAAAAAAAAEo/WsfBFZa6Zd4/s320/a06b_Remote_IE_Error2.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. You need to create an application in IIS 6 with the same name as the virtual directory. From IIS Manager, expand &lt;b&gt;LOCALSERVER(local computer) -&amp;gt; Web Sites -&amp;gt; Default Web Site -&amp;gt; Sample1&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&amp;nbsp;&lt;a href="http://4.bp.blogspot.com/_zGX37qOSEqg/Suw_jDktHQI/AAAAAAAAAFA/1_OWu1eOfrs/s1600-h/a07_IIS_Manager_Sample1_Mosiac_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zGX37qOSEqg/Suw_jDktHQI/AAAAAAAAAFA/1_OWu1eOfrs/s320/a07_IIS_Manager_Sample1_Mosiac_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Right-click &lt;b&gt;Sample1&lt;/b&gt; and select &lt;b&gt;Properties&lt;/b&gt;.In the dialog box, select the &lt;b&gt;Directory&lt;/b&gt; tab. Click on the &lt;b&gt;Create&lt;/b&gt; button and click &lt;b&gt;OK&lt;/b&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/Suw3kqdCujI/AAAAAAAAAEg/5MxLBPHPov0/s1600-h/a07b_IIS_create_virtual_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Suw3kqdCujI/AAAAAAAAAEg/5MxLBPHPov0/s320/a07b_IIS_create_virtual_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;8. You should find that the WS app is working normally on the local machine.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwo0vo-PVI/AAAAAAAAADw/ijNTlqYnBKQ/s1600-h/06_Local_IE_WS_Working.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Suwo0vo-PVI/AAAAAAAAADw/ijNTlqYnBKQ/s320/06_Local_IE_WS_Working.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. On a remote machine, it looks like the WS is working.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_zGX37qOSEqg/SuwqOCCMisI/AAAAAAAAAD4/_rFREmsRyq4/s1600-h/07a_Remote_IE_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_zGX37qOSEqg/SuwqOCCMisI/AAAAAAAAAD4/_rFREmsRyq4/s320/07a_Remote_IE_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But you will see the following error message when you select the &lt;i&gt;HelloWorld&lt;/i&gt; WS:&lt;br /&gt;&lt;div style="color: red;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: red;"&gt;&lt;span style="font-size: x-small;"&gt;The test form is only available for requests from the local machine.&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: red;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; color: black; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_zGX37qOSEqg/SuwqRQwANKI/AAAAAAAAAEA/SKKPKg6mQ4k/s1600-h/07b_Remote_WS_Error_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/_zGX37qOSEqg/SuwqRQwANKI/AAAAAAAAAEA/SKKPKg6mQ4k/s320/07b_Remote_WS_Error_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;10. Since .NET Framework 1.1, HTTP GET and HTTP POST are both disabled by default. You need to enable them in the &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Web.config&lt;/span&gt; file. From VS, insert the following code into &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Web.config&lt;/span&gt; and re-publish the Web Site as shown in step 3:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;webServices&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;protocols&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="HttpGet"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="HttpPost"/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/protocols&amp;gt;&lt;br /&gt;&amp;lt;/webServices&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Note that the code must be inserted inside the &amp;lt;system.web&amp;gt; tags like so:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; &amp;lt;system.web&amp;gt;&lt;/span&gt;&lt;b&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;webServices&amp;gt;&lt;/span&gt;&lt;br style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;protocols&amp;gt;&lt;/span&gt;&lt;br style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="HttpGet"/&amp;gt;&lt;/span&gt;&lt;br style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="HttpPost"/&amp;gt;&lt;/span&gt;&lt;br style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/protocols&amp;gt;&lt;/span&gt;&lt;br style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="color: red; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/webServices&amp;gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/system.web&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_zGX37qOSEqg/SuxHdfa9SKI/AAAAAAAAAFI/9S5wExxQ1P8/s1600-h/a10_Webconfig_add-b_Boxed.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/_zGX37qOSEqg/SuxHdfa9SKI/AAAAAAAAAFI/9S5wExxQ1P8/s320/a10_Webconfig_add-b_Boxed.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="color: black;"&gt;11. You should find that the WS app is working normally on the remote machine now.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_zGX37qOSEqg/Suw-PrLxo4I/AAAAAAAAAE4/_fkA4aJsCiY/s1600-h/a11_Remote_IE_WS_Working.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Suw-PrLxo4I/AAAAAAAAAE4/_fkA4aJsCiY/s320/a11_Remote_IE_WS_Working.PNG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;12. If you're going to release this WS app into the production environment, you probably should disable &lt;i&gt;Debugging&lt;/i&gt; for your app. From VS, find the following line in &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Web.config&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;compilation debug="&lt;b&gt;true&lt;/b&gt;"/&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Set &lt;b&gt;debug&lt;/b&gt; to &lt;i&gt;false&lt;/i&gt; and re-publish the Web Site as shown in step 3: &lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;lt;compilation debug="&lt;b style="color: red;"&gt;false&lt;/b&gt;&lt;/span&gt;"/&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;--- The End ---&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-4575023210829126043?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/4575023210829126043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=4575023210829126043' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4575023210829126043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4575023210829126043'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/10/publishing-web-service-in-iis-6-from.html' title='Publishing Web Service in IIS 6 from Visual Studio 2005'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zGX37qOSEqg/SuwXs2hVHsI/AAAAAAAAACw/N97xIjNkQ_Y/s72-c/01_Create_WS_Web_Site_Boxed.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-8177153369985463278</id><published>2009-06-22T00:11:00.002+08:00</published><updated>2009-06-22T00:34:28.333+08:00</updated><title type='text'>Guide to Cracking EnableDebugger2 Password in SWF/Flash</title><content type='html'>Caveat Emptor!!! Let me first state that I am not an ActionScript programmer. The reason I wrote this article was because I needed to crack an EnableDebugger2 password in a Flash file, but could not find any DIY guide to do it. From the references I found from Google, the details of the hashing scheme used were very sketchy and threw me off the correct trail for hours. This article represents hours of research, experimentation and source code review, and I’ve provided all the technical details that I feel is important for my peers reading this article.&lt;br /&gt;&lt;br /&gt;The article presumes an intermediate level of technical competency.&lt;br /&gt;&lt;br /&gt;You can access the PDF version from &lt;a href="http://sites.google.com/site/devadraco/Home/Guide_to_cracking_EnableDebugger2_passwords_in_SWF-Flash.pdf"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-8177153369985463278?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/8177153369985463278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=8177153369985463278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8177153369985463278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8177153369985463278'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/06/guide-to-cracking-enabledebugger2.html' title='Guide to Cracking EnableDebugger2 Password in SWF/Flash'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-4886733550937484068</id><published>2009-06-10T13:14:00.013+08:00</published><updated>2009-06-10T13:35:15.932+08:00</updated><title type='text'>Windows Update IE Frame Recursion/Loop Problem when Selecting "Optional" Updates</title><content type='html'>&lt;span style="font-family:arial;"&gt;I've been having problems performing the "&lt;span style="font-weight: bold;"&gt;Windows Update&lt;/span&gt;" with the &lt;span style="font-style: italic;"&gt;Internet Explorer&lt;/span&gt; on one of my Windows Server 2003 system, which is used as a software testing workstation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;From &lt;span style="font-style: italic;"&gt;IE6&lt;/span&gt; to &lt;span style="font-style: italic;"&gt;IE8&lt;/span&gt;, the whole "&lt;span style="font-weight: bold;"&gt;Windows Update&lt;/span&gt;" process goes on normally until I try to select the "&lt;span style="font-weight: bold;"&gt;Software, Optional&lt;/span&gt;" option on the side frame.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;span style="font-style: italic;"&gt;IE&lt;/span&gt; just loads another "&lt;span style="font-weight: bold;"&gt;Windows Update&lt;/span&gt;" process in the center frame.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zGX37qOSEqg/Si9FWsPzOzI/AAAAAAAAAB8/5u6YSTYT4SY/s1600-h/Windows_Update-1-Recursion_Boxed.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 291px;" src="http://3.bp.blogspot.com/_zGX37qOSEqg/Si9FWsPzOzI/AAAAAAAAAB8/5u6YSTYT4SY/s400/Windows_Update-1-Recursion_Boxed.PNG" alt="" id="BLOGGER_PHOTO_ID_5345567538848938802" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Prior to &lt;span style="font-style: italic;"&gt;IE8&lt;/span&gt;, the recursive process just cascades deeper and deeper, with more frames within frame.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;But since &lt;span style="font-style: italic;"&gt;IE8&lt;/span&gt;, the process is now a loop. When I try to continue the "&lt;span style="font-weight: bold;"&gt;Windows Update&lt;/span&gt;" process in the sub-frame window, the sub-frame just goes back to the original "&lt;span style="font-weight: bold;"&gt;High Priority&lt;/span&gt;" option sub-frame.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;The funny thing is that it only happens to one of my machines.&lt;/span&gt; &lt;span style="font-family:arial;"&gt;Usually, I just use &lt;span style="font-style: italic;"&gt;CTupdate&lt;/span&gt; to update this machine and forget about it; but I thought I'll fix it since I have some free time now.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;After a little googling, I found a link to this page:&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;&lt;br /&gt;http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.windowsupdate&amp;amp;mid=bcd4ec08-55d3-4ee5-8daa-56dcd25f5311&lt;/span&gt; &lt;span style="font-family:arial;"&gt;&lt;br /&gt;The forum poster found out that it was the "&lt;span style="font-weight: bold;"&gt;BitComet Helper&lt;/span&gt;" add-on from his &lt;span style="font-style: italic;"&gt;BitComet 0.84&lt;/span&gt; that was affecting his Windows XP system.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;I checked and I found that I have an old &lt;span style="font-style: italic;"&gt;BitComet 0.7&lt;/span&gt; in my system that I have totally forgotten about, so I went on to disable the add-on.&lt;/span&gt;  &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;In &lt;span style="font-style: italic;"&gt;IE8&lt;/span&gt;, I went to "&lt;span style="font-weight: bold;"&gt;Tools&lt;/span&gt; -&gt; &lt;span style="font-weight: bold;"&gt;Manage Add-ons&lt;/span&gt;", and disabled the "&lt;span style="font-weight: bold;"&gt;BitComet Helper&lt;/span&gt;" add-on.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zGX37qOSEqg/Si9FWmMtoXI/AAAAAAAAACE/vRacbHYTemc/s1600-h/Windows_Update-2-Disable_BitComet_Helper_Boxed.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 285px;" src="http://1.bp.blogspot.com/_zGX37qOSEqg/Si9FWmMtoXI/AAAAAAAAACE/vRacbHYTemc/s400/Windows_Update-2-Disable_BitComet_Helper_Boxed.PNG" alt="" id="BLOGGER_PHOTO_ID_5345567537225376114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Problem solved and my "&lt;span style="font-weight: bold;"&gt;Windows Update&lt;/span&gt;" is now working fine.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-4886733550937484068?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/4886733550937484068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=4886733550937484068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4886733550937484068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4886733550937484068'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/06/windows-update-ie-frame-recursionloop.html' title='Windows Update IE Frame Recursion/Loop Problem when Selecting &quot;Optional&quot; Updates'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zGX37qOSEqg/Si9FWsPzOzI/AAAAAAAAAB8/5u6YSTYT4SY/s72-c/Windows_Update-1-Recursion_Boxed.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-3750476761693574665</id><published>2009-06-09T13:40:00.015+08:00</published><updated>2009-06-09T14:09:45.105+08:00</updated><title type='text'>Bluetooth Audio Streaming from Windows Server 2003 to LG FB163</title><content type='html'>&lt;span style="font-family:arial;"&gt;I've recent got a sexy little LG FB-163 Micro HIFI System that comes with Bluetooth. Unfortunately, the Bluetooth is only used to stream audio, and not for file transfer or sharing as I had originally hoped for.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;After a lot of procrastination, I finally got around to try out the Bluetooth function. After a lot of experimentation, I got it working with the following configuration:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;OS: &lt;span style="font-weight: bold;"&gt;Windows Server 2003&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;BT Stack: &lt;span style="font-weight: bold;"&gt;BlueSoleil version 6.2.227.11 (Demo)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;BT Dongle: &lt;span style="font-weight: bold;"&gt;D-Link DBT-120 rev B4&lt;/span&gt;&lt;/span&gt;  &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;At first, I was using a hacked Windows XP Bluetooth stack with a D-Link DBT-120 rev B4 dongle as Windows 2003 do not come with a Bluetooth stack, but I couldn't get my PC to pair with the FB-163.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;As the FB-163 uses the newer &lt;span style="font-style: italic;"&gt;A2DP&lt;/span&gt; Bluetooth profile, I went out and bought a newer dongle (unbranded model ES-389), thinking that it is a hardware problem. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;The ES-389 was detected as a "Silicon Wave" bluetooth device by Windows, but couldn't pair with the FB-163 either.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;So I thought, maybe I need a newer Bluetooth stack. Thus I installed BlueSoleil version 6.2.227.11 as I had downloaded the demo version previously.&lt;/span&gt;  &lt;span style="font-family:arial;"&gt;Unfortunately, when I tried to pair ES-389 with the FB-163, it couldn't even get FB-163's device name. The error message was "&lt;span style="font-weight: bold;"&gt;Refreshing device name is not successful&lt;/span&gt;".&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zGX37qOSEqg/Si34jR0B3vI/AAAAAAAAAA0/xz4bnCFt5LQ/s1600-h/Pair_ES389_FB163-2-Pairing_Failed_NoMAC_Boxed.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Si34jR0B3vI/AAAAAAAAAA0/xz4bnCFt5LQ/s400/Pair_ES389_FB163-2-Pairing_Failed_NoMAC_Boxed.PNG" alt="" id="BLOGGER_PHOTO_ID_5345201617719385842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;After a lot of troubleshooting, I replaced the ES-389 with my older DBT-120 as I remembered that the D-Link dongle could at least get the device name from FB-163.&lt;/span&gt;  &lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;The short version is that it worked, and here are the steps I took:&lt;/span&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;In the start screen, the FB-163 is identified by a "&lt;span style="font-weight: bold;"&gt;Headset&lt;/span&gt;" icon with its MAC address.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zGX37qOSEqg/Si35DRvPnoI/AAAAAAAAAA8/36RZICP4U8g/s1600-h/Pair_DBT-120_FB163-1-Start_NoMAC.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://4.bp.blogspot.com/_zGX37qOSEqg/Si35DRvPnoI/AAAAAAAAAA8/36RZICP4U8g/s400/Pair_DBT-120_FB163-1-Start_NoMAC.png" alt="" id="BLOGGER_PHOTO_ID_5345202167455129218" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;When I right-clicked the "&lt;span style="font-weight: bold;"&gt;Headset&lt;/span&gt;" icon and chose "&lt;span style="font-style: italic;"&gt;Get Device Name&lt;/span&gt;", it worked and got the "&lt;span style="font-weight: bold;"&gt;LG_AUDIO&lt;/span&gt;" device name.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zGX37qOSEqg/Si35eBVq3AI/AAAAAAAAABE/FqnOnjn6WF8/s1600-h/Pair_DBT-120_FB163-2-Get_Device_Name_NoMAC_Boxed.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Si35eBVq3AI/AAAAAAAAABE/FqnOnjn6WF8/s400/Pair_DBT-120_FB163-2-Get_Device_Name_NoMAC_Boxed.PNG" alt="" id="BLOGGER_PHOTO_ID_5345202626909363202" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;I right-clicked the Headset icon and chose "&lt;span style="font-style: italic;"&gt;Pair&lt;/span&gt;". The passkey dialog box appeared and I entered the default PIN "&lt;span style="font-weight: bold;"&gt;0000&lt;/span&gt;" (Why do everyone seem to use the same PIN?).&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zGX37qOSEqg/Si36G9l_bpI/AAAAAAAAABM/yZmSqLA3iAM/s1600-h/Pair_DBT-120_FB163-3-Pairing_NoMAC.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 197px;" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Si36G9l_bpI/AAAAAAAAABM/yZmSqLA3iAM/s400/Pair_DBT-120_FB163-3-Pairing_NoMAC.png" alt="" id="BLOGGER_PHOTO_ID_5345203330278715026" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;The DBT-120 and FB-163 are now paired.&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zGX37qOSEqg/Si36G4ne7RI/AAAAAAAAABU/sKMkfQ928qg/s1600-h/Pair_DBT-120_FB163-4-Paired_NoMAC.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://1.bp.blogspot.com/_zGX37qOSEqg/Si36G4ne7RI/AAAAAAAAABU/sKMkfQ928qg/s400/Pair_DBT-120_FB163-4-Paired_NoMAC.png" alt="" id="BLOGGER_PHOTO_ID_5345203328942796050" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;"&gt;Finally, I right-clicked the Headset icon and chose "&lt;span style="font-style: italic;"&gt;Connect Bluetooth Advance Audio&lt;/span&gt;". The DBT-120 and FB-163 are now connected.&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zGX37qOSEqg/Si36HHFqMdI/AAAAAAAAABc/BwOY4KW99Dc/s1600-h/Pair_DBT-120_FB163-5-Connect_Bluetooth_Advance_Audio.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 271px;" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Si36HHFqMdI/AAAAAAAAABc/BwOY4KW99Dc/s400/Pair_DBT-120_FB163-5-Connect_Bluetooth_Advance_Audio.PNG" alt="" id="BLOGGER_PHOTO_ID_5345203332827460050" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-family:arial;"&gt;I fired up my music player and the music streaming worked perfectly.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-3750476761693574665?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/3750476761693574665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=3750476761693574665' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/3750476761693574665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/3750476761693574665'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/06/bluetooth-pairing-lg-fb163-with-windows.html' title='Bluetooth Audio Streaming from Windows Server 2003 to LG FB163'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_zGX37qOSEqg/Si34jR0B3vI/AAAAAAAAAA0/xz4bnCFt5LQ/s72-c/Pair_ES389_FB163-2-Pairing_Failed_NoMAC_Boxed.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-3383603617286884315</id><published>2009-03-22T17:54:00.014+08:00</published><updated>2009-06-09T14:30:14.036+08:00</updated><title type='text'>Installing Windows Live Messenger 2009 on Windows Server 2003</title><content type='html'>When I tried to install the new Windows Live Messenger 2009 on my Windows Server 2003 machine, I got the "Couldn't install programs" error message, and the detail is "os_check: 0x8028004".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zGX37qOSEqg/ScYQIcNP4HI/AAAAAAAAAAk/GibaBjlvITg/s1600-h/Windows_Messenger_2003_Error.PNG"&gt;&lt;img style="cursor: pointer; width: 320px; height: 192px;" src="http://1.bp.blogspot.com/_zGX37qOSEqg/ScYQIcNP4HI/AAAAAAAAAAk/GibaBjlvITg/s320/Windows_Messenger_2003_Error.PNG" alt="" id="BLOGGER_PHOTO_ID_5315954147354206322" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Apparently, Windows 2003/2008 and 64bit XP systems are not supported by the new Live Messenger.&lt;br /&gt;&lt;br /&gt;Thank goodness I came across the following site:&lt;br /&gt;&lt;a href="http://www.gtalkme.com/development/install-windows-live-wave3-on-windows2003-or-2008.html"&gt;http://www.gtalkme.com/development/install-windows-live-wave3-on-windows2003-or-2008.html&lt;/a&gt;&lt;br /&gt;It's about "Windows Live Wave 3" and it's in Chinese, but the hack is identical.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Download the messenger &lt;a href="http://download.live.com/?sku=messenger"&gt;wlsetup-custom.exe&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Open it with &lt;a href="http://angusj.com/resourcehacker/"&gt;Resource Hacker&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Open the resource tree to "&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;CONFIG&lt;/span&gt; -&gt; &lt;span style="font-weight: bold;"&gt;CONFIG0&lt;/span&gt; -&gt; &lt;span style="font-weight: bold;"&gt;0&lt;/span&gt;&lt;/span&gt;".&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zGX37qOSEqg/Si4A2q9DwnI/AAAAAAAAABk/na0Np8XSaTQ/s1600-h/reshack-wlsetup-custom_Boxed.PNG"&gt;&lt;img style="cursor: pointer; width: 400px; height: 259px;" src="http://2.bp.blogspot.com/_zGX37qOSEqg/Si4A2q9DwnI/AAAAAAAAABk/na0Np8XSaTQ/s400/reshack-wlsetup-custom_Boxed.PNG" alt="" id="BLOGGER_PHOTO_ID_5345210746978681458" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Find the XML tag: &amp;lt;os productType="&lt;span style="color: rgb(255, 0, 0);"&gt;workstation&lt;/span&gt;" /&amp;gt;&lt;/li&gt;&lt;li&gt;Change "&lt;span style="font-weight: bold;"&gt;workstation&lt;/span&gt;" to "&lt;span style="font-weight: bold;"&gt;server&lt;/span&gt;" and recompile the script in the Resource Hacker.&lt;/li&gt;&lt;li&gt;Remember to save the modified installer file.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The installer should work properly on the Win2003 system now&lt;os producttype="workstation"&gt;.&lt;br /&gt;&lt;/os&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-3383603617286884315?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/3383603617286884315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=3383603617286884315' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/3383603617286884315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/3383603617286884315'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2009/03/installing-windows-live-messenger-2009.html' title='Installing Windows Live Messenger 2009 on Windows Server 2003'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zGX37qOSEqg/ScYQIcNP4HI/AAAAAAAAAAk/GibaBjlvITg/s72-c/Windows_Messenger_2003_Error.PNG' height='72' width='72'/><thr:total>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-5432334756420896510</id><published>2008-12-24T13:04:00.007+08:00</published><updated>2008-12-24T13:31:26.058+08:00</updated><title type='text'>Cyberarmor viexpf2k.sys conflicts with MS's Driver Verifier</title><content type='html'>I had a BSOD (Blue Screen of Death) on my Windows XP laptop today. It freaked me out as I don't remember changing any system configurations previously, so I thought that it might be a virus. I've extracted the juicy part from the BSOD messages below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;--------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Technical information:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*** STOP: 0x000000c9 (0x00000007, 0xA8655492, 0x8ADACF68, 0x00000000)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;*** viexpf2k.sys - Address A8655492 base at A8655000, DateStamp 4372d07b&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Beginning dump of physical memory&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;--------------------------------------------------------------------&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A little googling shows that "viexpf2k.sys" is either a malware, or a driver from CyberArmor. I have the Cyberarmor firewall (Corporate version) installed, so I investigated from this angle. But just in case, I also ran CureIt AntiVirus from DrWeb.&lt;br /&gt;&lt;br /&gt;At first, I couldn't get into Safe Mode as it gets stuck during the driver loading phase. But CHKDSK pops up after a few hard reboots, and Safe Mode boots fine after the disk check.&lt;br /&gt;&lt;br /&gt;For some reason, my laptop didn't generate any dump file (company policy, no direct control), so I could not confirm my suspicion with WinDbg. I had to do it the "hacker" way: I renamed "viexpf2k.sys" to "~viexpf2k.sys" in both the "C:\Program Files\CyberArmor" and "C:\WINDOWS\system32\drivers", and then my XP managed to boot normally, but without CyberArmor.&lt;br /&gt;&lt;br /&gt;So it's confirmed that CyberArmor is the problem, but why? More googling shows stop code C9 to be DRIVER_VERIFIER_IOMANAGER_VIOLATION, and it hit me! I must have turned on Microsoft's Driver Verifier by mistake yesterday when I was researching on kernel dump debugging.&lt;br /&gt;&lt;br /&gt;So I restored "viexpf2k.sys" and ran:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;C:&gt; verifier /reset&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Voila! &lt;span class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;Every thing's&lt;/span&gt; back to normal after a reboot.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-5432334756420896510?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/5432334756420896510/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=5432334756420896510' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/5432334756420896510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/5432334756420896510'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/cyberarmor-viexpf2ksys-conflicts-with.html' title='Cyberarmor viexpf2k.sys conflicts with MS&apos;s Driver Verifier'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-8263810177054967093</id><published>2008-12-16T00:21:00.003+08:00</published><updated>2008-12-16T00:36:10.752+08:00</updated><title type='text'>Performance tuning for Samba on Fedora 9</title><content type='html'>When I first set up Samba on my Fedora 9 server, the access speed was not very impressive to say the least.&lt;br /&gt;&lt;br /&gt;So I googled a little, and I found out that I can get some speedups if my disk do not record the file access time as my application reads and writes to files very often. I added the noatime option to the  entry for my share partition in "/etc/fstab" like:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;UUID=?????       /data  ext3    defaults,noatime        1 1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I did get some speed increase after this, but it is still slower than a native Windows Share.&lt;br /&gt;&lt;br /&gt;So I googled some more, and I found:&lt;br /&gt;http://oreilly.com/catalog/samba/chapter/book/appb_02.html&lt;br /&gt;&lt;br /&gt;I added the following options to "/etc/samba/smb.conf":&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;socket options = TCP_NODELAY IPTOS_LOWDELAY&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dead time = 15&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The speed increase is quite dramatic, but it is still slower than a native Windows Share. Still not sure if the "dead time" option helps, but I just don't have to time to test it out.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-8263810177054967093?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/8263810177054967093/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=8263810177054967093' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8263810177054967093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8263810177054967093'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/performance-tuning-for-samba-on-fedora.html' title='Performance tuning for Samba on Fedora 9'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-9201131135513347583</id><published>2008-12-15T23:58:00.006+08:00</published><updated>2008-12-16T00:19:41.419+08:00</updated><title type='text'>Symbol Server for WinDbg</title><content type='html'>Today, I used Microsoft's WinDbg debugger to check out a kernel memory dump to see if I can determine which is the last program in memory before my Windows 2003 server (Mystic Hare) crashed. I guessed that it may give me a clue about which is the offending program that is crashing the server.&lt;br /&gt;&lt;br /&gt;I haven't used WinDbg in years, and I didn't have the symbol package for Windows 2003 with me. Downloading it is out of the question as my internet connection speed is slow and the package is a few hundred megabytes.&lt;br /&gt;&lt;br /&gt;Lucky for me, WinDbg can now download symbols as needed if internet access is available, from what I read in http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx&lt;br /&gt;&lt;br /&gt;I created the "c:\websymbols" directory to download the symbols to.&lt;br /&gt;&lt;br /&gt;1. Start a debugging session.&lt;br /&gt;&lt;br /&gt;2. Set the debugger symbol path as:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now, I can start the debugging process.&lt;br /&gt;&lt;br /&gt;Unfortunately, the debugging didn't go far as the symbols for an external program's .sys file is not available, but it's another story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-9201131135513347583?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/9201131135513347583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=9201131135513347583' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/9201131135513347583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/9201131135513347583'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/symbol-server-for-windbg.html' title='Symbol Server for WinDbg'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-2864904035466475170</id><published>2008-12-11T11:28:00.002+08:00</published><updated>2008-12-11T11:48:29.662+08:00</updated><title type='text'>Editing fstab from "Repair Filesystem" prompt in Fedora 9</title><content type='html'>My Fedora 9 server is a laptop with a non-standard harddisk setup. In a mis-guided attempt to reduce the heat produced by the laptop, I removed the internal SATA II harddisk and put the Fedora's / root partition on a external SATA II harddisk connected by a SATA ExpressCard. As my laptop do not detect the main harddisk connected by the SATA ExpressCard, I created the /boot partition on a 1GB USB disk.&lt;br /&gt;&lt;br /&gt;Here comes the problem, the USB disk is detected as either "/dev/sda1" or "/dev/sdb1" at different boot times. Thus I have the problem of deciding what to put in the fstab. You may ask when don't I use the UUID since these devices are controlled by udev anyway. It's because sometimes the UUID used to identify the USB disk do not work during boot up and Fedora drops me into the "Repair Filesystem" prompt.&lt;br /&gt;&lt;br /&gt;Usually, I'll insert the Fedora DVD, boot into "Rescue" mode, chroot /mnt/sysimage/ and edit the fstab file. But when I rebooted and encountered the same problem last night, I got fed up of getting the DVD again.&lt;br /&gt;&lt;br /&gt;I found the following forum while googling and the answer provided is exactly what I need:&lt;br /&gt;http://www.linuxquestions.org/questions/linux-software-2/how-modify-fstab-when-its-ro-in-repair-filesystem-mode-562021/&lt;br /&gt;&lt;br /&gt;In the "Repair Filesystem" prompt, login and remount the filesystem with:&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;&gt; mount -o remount,rw /&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I can modify the fstab file now.&lt;br /&gt;&lt;br /&gt;Also, I found out that the system can boot up perfectly fine without mounting the /boot partition when I removed the entry from fstab. But I put the /boot entry back in case I forget to remount /boot when I upgrade the kernel in the future.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-2864904035466475170?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/2864904035466475170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=2864904035466475170' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/2864904035466475170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/2864904035466475170'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/editing-fstab-from-repair-filesystem.html' title='Editing fstab from &quot;Repair Filesystem&quot; prompt in Fedora 9'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-1026825839108484220</id><published>2008-12-01T18:26:00.008+08:00</published><updated>2008-12-01T22:47:39.712+08:00</updated><title type='text'>VBScript to backup Windows System, Application and Security event logs</title><content type='html'>To diagnose my crashing Windows 2003 server (Mystic Hare) mentioned previously, I needed to backup the server's System, Application and Security event logs every half hour. At first, I thought of just copying the *.evt files to another location, using the Windows Scheduler. But this might not be the best idea as the latest entries might not be in the event logs. So I clobbered together a VBScript from the following links:&lt;br /&gt;http://msdn.microsoft.com/en-us/library/aa394593.aspx&lt;br /&gt;http://www.microsoft.com/technet/scriptcenter/guide/sas_log_pcna.mspx?mfr=true&lt;br /&gt;http://www.informit.com/content/images/9780672329470/downloads/SPSiteBackup.wsf.txt&lt;br /&gt;&lt;br /&gt;The script will backup the event logs using standard WMI methods to "C:\scripts\" and append the current date and time to the saved event log files.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'*******************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'************&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;******&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; Begin Script &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;******&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;*****************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'*******************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;dtmThisSecond = PadDigits(Second(Now), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dtmThisMinute = PadDigits(Minute(Now), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dtmThisHour = PadDigits(Hour(Now), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dtmThisDay = PadDigits(Day(Now), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dtmThisMonth = PadDigits(Month(Now), 2)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;dtmThisYear = Year(Now)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;strBackupName = dtmThisYear &amp;amp; "-" &amp;amp; dtmThisMonth _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&amp;amp; "-" &amp;amp; dtmThisDay &amp;amp; "_" &amp;amp; dtmThisHour &amp;amp; "-" &amp;amp; dtmThisMinute &amp;amp; "-" &amp;amp; dtmThisSecond&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;strComputer = "."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set objWMIService = GetObject("winmgmts:" _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    &amp;amp; "{impersonationLevel=impersonate,(Backup, Security)}!\\" &amp;amp; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        strComputer &amp;amp; "\root\cimv2")&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set colLogFiles = objWMIService.ExecQuery _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ("Select * from Win32_NTEventLogFile " _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; "Where LogFileName='Application'")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;For Each objLogfile in colLogFiles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    objLogFile.BackupEventLog("c:\scripts\" _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; strBackupName &amp;amp; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        "_application.evt")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'    WScript.Echo "File saved: " &amp;amp; strBackupName &amp;amp; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'        "_application.evt"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set colLogFiles = objWMIService.ExecQuery _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ("Select * from Win32_NTEventLogFile " _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; "Where LogFileName='System'")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;For Each objLogfile in colLogFiles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    objLogFile.BackupEventLog("c:\scripts\" _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; strBackupName &amp;amp; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        "_system.evt")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Set colLogFiles = objWMIService.ExecQuery _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    ("Select * from Win32_NTEventLogFile " _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; "Where LogFileName='Security'")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;For Each objLogfile in colLogFiles&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    objLogFile.BackupEventLog("c:\scripts\" _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        &amp;amp; strBackupName &amp;amp; _&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        "_security.evt")&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Next&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'===================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;' Functions&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'===================================================================&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;' This function is used to pad date variables that contain only on digit.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Function PadDigits(n, totalDigits)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    If totalDigits &gt; len(n) then&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        PadDigits = String(totalDigits-len(n),"0") &amp;amp; n&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    Else&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;        PadDigits = n&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;    End If&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;End Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'*******************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'************&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;********&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; End Script &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;*****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;****&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;******************&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;'*******************************************************************&lt;br /&gt;&lt;br /&gt;PS: The script was only tested on a Windows XP system.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-1026825839108484220?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/1026825839108484220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=1026825839108484220' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/1026825839108484220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/1026825839108484220'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/vbscript-to-backup-windows-system.html' title='VBScript to backup Windows System, Application and Security event logs'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-1086584306002803159</id><published>2008-12-01T16:17:00.006+08:00</published><updated>2008-12-01T17:06:36.293+08:00</updated><title type='text'>Dummy write to Windows' System event log</title><content type='html'>I have a Windows 2003 server, let's call it Mystic Hare, which keeps crashing intermittently. The problem I have in diagnosing the problem, is that the last 3 hours of the Windows System logs are always empty.&lt;br /&gt;&lt;br /&gt;So either:&lt;br /&gt;1. The last 3 hours of the System log are wiped out during the crash; or&lt;br /&gt;2. There is no event written to the System log during those times.&lt;br /&gt;&lt;br /&gt;So I decided to write to the System event log with dummy entries as an experiment.&lt;br /&gt;&lt;br /&gt;Googling brings up a lot of VBScripts, JavaScripts, C#, WSH scripts, etc. But I needed a simple app that I can just set in the Windows scheduler. Thank goodness I found what I need at:&lt;br /&gt;http://www.winserverkb.com/Uwe/Forum.aspx/windows-server-scripting/8696/Write-To-System-Log-On-A-Specified-Server-When&lt;br /&gt;&lt;br /&gt;The command I'm using is:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&gt; eventcreate /L System /T Information /id 1 /d "For testing only"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is what I see for the dummy System log entry in the Event Viewer"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zGX37qOSEqg/STOoQJid2BI/AAAAAAAAAAM/mHdDx5RYGkA/s1600-h/dummy_evt_log.PNG"&gt;&lt;img style="cursor: pointer; width: 289px; height: 320px;" src="http://3.bp.blogspot.com/_zGX37qOSEqg/STOoQJid2BI/AAAAAAAAAAM/mHdDx5RYGkA/s320/dummy_evt_log.PNG" alt="" id="BLOGGER_PHOTO_ID_5274744583972837394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src="file:///C:/WINDOWS/TEMP/moz-screenshot.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-1086584306002803159?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/1086584306002803159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=1086584306002803159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/1086584306002803159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/1086584306002803159'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/12/dummy-write-to-windows-system-event-log.html' title='Dummy write to Windows&apos; System event log'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zGX37qOSEqg/STOoQJid2BI/AAAAAAAAAAM/mHdDx5RYGkA/s72-c/dummy_evt_log.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-8175787140833368855</id><published>2008-11-29T18:48:00.000+08:00</published><updated>2008-11-29T19:19:54.630+08:00</updated><title type='text'>New "e1000" network adapter for Fedora 9 guest in VMWare Server 2</title><content type='html'>I read somewhat that in VMWare Server 2, I can get better network performance if I use the new Intel "e1000" network adapter instead of the default AMD one. So here's the process of replacing the adapter.&lt;br /&gt;&lt;br /&gt;For each guest, add the following line to each VMX file:&lt;br /&gt;&lt;span style="font-family:arial;"&gt;ethernet0.virtualDev = "e1000"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For Windows 2003 guests, the new hardware will be automatically recognized and a new "Local Area Network 2" connection will be created.&lt;br /&gt;&lt;br /&gt;For Fedora 9 guests, eth0 will fail to work during boot time as the new hardware is recognized as eth1. Modifying the network config files under "/etc/sysconfig/networking" do not help because in Fedora 9, udev controls the hardware. The following file needs to be modified:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;/etc/udev/rules.d/70-persistent-net.rules&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Remove or comment out the original line for the AMD network adapter.&lt;br /&gt;&lt;span style="font-family: arial;"&gt;# Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rule written by anaconda)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:9b:f4:58", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The new e1000 adapter should be in the file as:&lt;br /&gt;&lt;span style="font-family:arial;"&gt;# PCI device 0x8086:0x100f (e1000)&lt;br /&gt;SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d2:28:34", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;change &lt;span style="font-family:arial;"&gt;NAME="eth1"&lt;/span&gt; to &lt;span style="font-family:arial;"&gt;"eth0"&lt;/span&gt; so we get:&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;# PCI device 0x8086:0x100f (e1000)&lt;br /&gt;SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:d2:28:34", ATTR{type}=="1", KERNEL=="eth*", NAME="&lt;span style="font-weight: bold;"&gt;eth0&lt;/span&gt;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Reboot and the network service should start fine at boot time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-8175787140833368855?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/8175787140833368855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=8175787140833368855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8175787140833368855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/8175787140833368855'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/11/new-e1000-network-adapter-for-fedora-6.html' title='New &quot;e1000&quot; network adapter for Fedora 9 guest in VMWare Server 2'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8482586957869056540.post-4659192432332482656</id><published>2008-11-28T21:23:00.000+08:00</published><updated>2008-11-28T21:28:19.842+08:00</updated><title type='text'>My first attempt at blogging!</title><content type='html'>Wow! I still can't believe that I've finally became a blogger. I used to tell myself never to become one, but guess what? Thanks to a friend, I found out that the blog is actually a great place to put all the technical information that I learnt; instead of just creating lots of little text files in my systems (that I can't seem to find the time to organize).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8482586957869056540-4659192432332482656?l=devadraco.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devadraco.blogspot.com/feeds/4659192432332482656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8482586957869056540&amp;postID=4659192432332482656' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4659192432332482656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8482586957869056540/posts/default/4659192432332482656'/><link rel='alternate' type='text/html' href='http://devadraco.blogspot.com/2008/11/my-first-attempt-at-blogging.html' title='My first attempt at blogging!'/><author><name>devadraco</name><uri>http://www.blogger.com/profile/12699846607542234621</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
