<?xml version='1.0' encoding='UTF-8'?><rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'><channel><atom:id>tag:blogger.com,1999:blog-23228586</atom:id><lastBuildDate>Tue, 30 Sep 2008 15:01:53 +0000</lastBuildDate><title>walt @ truman :: blog</title><description>This is the blog of &lt;a href="mailto:r3m0v3e.spam.whowd@truman.edu"&gt;Walt Howd&lt;/a&gt; a Network Administrator at &lt;a href=http://www.truman.edu&gt;Truman State University&lt;/a&gt; in beautiful Kirksville, MO.</description><link>http://www2.truman.edu/~whowd/blog/</link><managingEditor>noreply@blogger.com (Walt)</managingEditor><generator>Blogger</generator><openSearch:totalResults>10</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-7911951850974705776</guid><pubDate>Tue, 11 Mar 2008 21:02:00 +0000</pubDate><atom:updated>2008-03-11T14:48:17.083-07:00</atom:updated><title>Email Latency Graphing</title><description>"Is e-mail running slow?"&lt;br /&gt;&lt;br /&gt;"I'm supposed to have an e-mail, but I haven't seen it yet?"&lt;br /&gt;&lt;br /&gt;If you have ever had to answer any of these questions or related queries then these scripts may be for you. These two perl scripts monitor email latency in seconds and let you know time it takes for mail to process through your mail server and back to you.&lt;br /&gt;&lt;br /&gt;You can then tie the output to create a MRTG, RRDTool or Zabbix graph such as the one below:&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.truman.edu/%7Ewhowd/blog/uploaded_images/mail-latency-799904.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://www2.truman.edu/%7Ewhowd/blog/uploaded_images/mail-latency-799895.png" alt="" border="0" /&gt;&lt;/a&gt;The script supports an unlimited number of mail servers along the mail path. For example, if you had an edge mail server that handled level one spam checks, a secondary mail server that handled further spam and antivirus checks, and a final mail server where users checked their mail then you could monitor all three servers to see which server was introducing the processing delay.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;The script also reports absolute and relative latency. Absolute is the total amount of time that has elapsed from when the message was sent. Relative is the amount of time in seconds from the last non local mail server to your mail server. This lets you separate out issues from external mail servers that may be out of your control.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Perl installation with the following modules:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Mail::POP3Client&lt;/li&gt;&lt;li&gt;Net::SMTP&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Date::Parse&lt;/li&gt;&lt;li&gt;Getopt::Long&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;External mail host to send your messages from - OR -&lt;br /&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;External account set to bounce messages back to your mailserver&lt;/li&gt;&lt;ul&gt;&lt;li&gt;I use a free GMail account that is setup to bounce mail back to my local test account&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions:&lt;br /&gt;&lt;/span&gt;Modify the following lines to fit your enviroment:&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;checkEmail.pl&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;###############################################&lt;br /&gt;## Configuration Variables&lt;br /&gt;###############################################&lt;br /&gt;$dnsDomain = "domain.com";&lt;br /&gt;$mailServer = "mail.domain.com";&lt;br /&gt;$mailPort = "995";&lt;br /&gt;$mailUser = "username";&lt;br /&gt;$mailPassword = "password";&lt;br /&gt;$mailSubject = "MailLatency";&lt;br /&gt;$mailSSL = "true";&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;sendOutToInTestEmail.pl&lt;/span&gt;&lt;br /&gt;---&lt;br /&gt;###############################################&lt;br /&gt;## Configuration Variables&lt;br /&gt;###############################################&lt;br /&gt;@serverList = qw(mail spam-firewall);&lt;br /&gt;$dnsDomain = "domain.com";                               &lt;br /&gt;$mailTo = 'MailLatencyTest@gmail.com';                &lt;br /&gt;$mailServer = 'mail.domain.com';&lt;br /&gt;$mailSubject = 'MailLatency';&lt;br /&gt;$mailFrom = 'username';&lt;br /&gt;$LOG = "/var/log/emailout.log";&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;    Setup sendOutToTestEmail.pl to run from cron to periodically send your test messages. Configure checkEmail.pl to run on a slightly longer interval to retrieve the test messages and graph the time.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Usage:&lt;/span&gt;&lt;br /&gt;./checkEmail.pl mailserver.domain.com --measure=absolute&lt;br /&gt;./checkEmail.pl spamfilter.domain.com --measure=relative&lt;br /&gt;./checkEmail.pl mailserver --measure=absolute --debug=yes&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www2.truman.edu/%7Ewhowd/blog/files/checkEmail.txt"&gt;checkEmail.pl&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www2.truman.edu/%7Ewhowd/blog/files/sendOutToInTestEmail.txt"&gt;sendOutToInTestEmail.pl&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;</description><link>http://www2.truman.edu/~whowd/blog/2008/03/email-latency-graphing.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-115755936921217210</guid><pubDate>Wed, 06 Sep 2006 15:47:00 +0000</pubDate><atom:updated>2006-09-06T09:16:09.313-07:00</atom:updated><title>Set UNIX ID Script</title><description>This is an extensive script designed to set the UNIX attributes for user and groups objects in Active Directory.  This script currently sets the values from the &lt;a href="http://www.microsoft.com/technet/interopmigration/unix/sfu/default.mspx"&gt;Microsoft Services for UNIX 3.5 (MSFU3.5)&lt;/a&gt; schema extensions to Active Directory.  However it should be trivial to modify this to the attributes in Windows Server 2003 R2, MSFU3.0 or other third party schema extensions.&lt;br /&gt;&lt;br /&gt;This script is designed to ease the pain of using Active Directory for your centralized account information. All users and groups must have a Unix ID (UID or GID) assigned along with some other meta information. Rather then using the antiquated NIS as recommended by Microsoft with MSFU3.5 we are using &lt;a href="http://www.padl.com/OSS/nss_ldap.html"&gt;nss_ldap&lt;/a&gt; with kerberos authentication. Microsoft does supply a snap in for Active Directory Users and Computers (nisprop.dll) that allows you to set and modify these UNIX attributes. However in my environment this snapin &lt;a href="http://groups.google.com/group/microsoft.public.servicesforunix.general/browse_thread/thread/4949c308c77bae0b/8b16c27fabc70ba8"&gt;did not function correctly&lt;/a&gt;. Also setting the attributes for a large number of users would be quite tedious if all done manually.&lt;br /&gt;&lt;br /&gt;This script is designed to be called from the command line to set attributes for a specific user or group. For example:&lt;br /&gt;&lt;br /&gt;cscript /nologo setuid.vbs jdoe user&lt;br /&gt;&lt;br /&gt;This would set the UNIX attributes for the jdoe user.  The numeric UID set would be current highest UID value plus one or ten thousand if no UID is currently defined.  The default shell (msSFU30LoginShell), default home directory (msSFU30HomeDirectory), default GID (msSFU30GidNumber) are all based off default values defined as global variables.&lt;br /&gt;&lt;br /&gt;Alternatively you can set the UNIX attributes for all users and groups in your Active directory tree with the following command:&lt;br /&gt;&lt;br /&gt;cscript /nologo setuid.vbs ALL&lt;br /&gt;&lt;br /&gt;This will perform a search for all users and groups that do not currently have UNIX attributes defined and then add these same attributes. We have this command scheduled as a cron job to run periodically to add attributes to new created users and groups.&lt;br /&gt;&lt;br /&gt;Thirdly, it is possible to use this script directly from Active Directory Users and Computers as a replacement for the nisprop.dll snap in. I would recommend using the snapin if possible, but this script does offer some benefits such as being able to define sensible defaults. For more details please see the source code.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements:&lt;br /&gt;&lt;/span&gt;- Active Directory schema extended with Microsoft Services for UNIX 3.5 Schema Extensions&lt;br /&gt;- Run by an account with security permissions to modify targeted user and group objects&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions:&lt;br /&gt;&lt;/span&gt;Modify these lines below to your desired settings and to match your enviroment:&lt;br /&gt;&lt;blockquote style="font-family: courier new;"&gt;&lt;span style="font-size:85%;"&gt;' ---------------------------------------------------------&lt;br /&gt;' Configuration Variables&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;ldapBase              = "DC=DOMAIN,DC=COM"&lt;br /&gt;domainName            = "DOMAIN"&lt;br /&gt;defaultShell          = "/bin/sh"&lt;br /&gt;defaultGidNumber      = "10000"       &lt;br /&gt;studentGidNumber      = "10122"       &lt;br /&gt;defaultBaseHomeDir    = "/home/staff/"&lt;br /&gt;studentBaseHomeDir    = "/home/student/"&lt;br /&gt;studentIdentifier     = "OU=Students" &lt;br /&gt;alumnIdentifier       = "OU=Alumn"&lt;br /&gt;maxsetIDTries         = 20           &lt;br /&gt;defaultBaseID         = "9999"       &lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www2.truman.edu/%7Ewhowd/blog/files/setuid.vbs"&gt;setuid.vbs&lt;/a&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/09/set-unix-id-script.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114830803990770419</guid><pubDate>Mon, 22 May 2006 14:15:00 +0000</pubDate><atom:updated>2006-05-22T07:37:40.866-07:00</atom:updated><title>Active Directory Locked Account Monitor</title><description>Here is a simple perl script to monitor the number of  locked accounts in your Active Directory domain. This script uses &lt;a href="/%7Ewhowd/blog/files/unlock.exe"&gt;unlock.exe&lt;/a&gt; which is availabe from &lt;a href="http://www.joeware.net/win/free/tools/unlock.htm"&gt;JoeWare.net.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If the number of locked accounts exceeds the defined threshold the script will notify you via e-mail.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements:&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Windows 2003 / Windows XP / Windows 2000&lt;/li&gt;&lt;li&gt;Perl installed&lt;/li&gt;&lt;li&gt;Unlock.exe in path&lt;/li&gt;&lt;li&gt;SMTP server for e-mail notificaiton&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-weight: bold;"&gt;Instructions:&lt;br /&gt;&lt;/span&gt;Modify these lines below to your desired settings and to match your enviroment:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;$lockedThreshold     = 10;                &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$unlockCmd           = "unlock.exe . * -view 2&gt;NUL";    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;@notifyList          = qw( &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                          admin&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;$mailFrom            = "AccountLockout";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$mailSubject         = "Account Lockout Alert";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$mailServer          = "mailserver.domain.com";&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download&lt;/span&gt;:&lt;br /&gt;&lt;a href="/%7Ewhowd/blog/files/lockedaccountmonitor.txt"&gt;Locked Account Monitor.pl&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/05/active-directory-locked-account.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114684776791860107</guid><pubDate>Fri, 05 May 2006 16:20:00 +0000</pubDate><atom:updated>2006-12-04T16:01:27.656-08:00</atom:updated><title>Join Domain Tool</title><description>Here is a utility to help users joining a computer to an Active Directory domain. It provides similiar functionality to the netdom.exe utility in that it was designed to allow you to specify an OU (organizational unit) when you're joining the domain.&lt;br /&gt;&lt;br /&gt;In our enviroment we have a well structured list of organizational units. The workstation objects should all be placed in the OU where the user object resides. However as the default join places the computers in the "Computers" container technicians can sometimes forget to move the workstation object to it's proper destination.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Screenshot:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.truman.edu/%7Ewhowd/blog/uploaded_images/joindomain-748188.gif"&gt;&lt;img style="cursor: pointer;" src="http://www2.truman.edu/%7Ewhowd/blog/uploaded_images/joindomain-722272.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Requirements:&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.autoitscript.com/autoit3/files/beta/autoit/"&gt;Latest version of AutoIT&lt;/a&gt; with COM Support&lt;br /&gt;(&lt;a href="http://www.autoitscript.com/autoit3/"&gt;AutoIT &lt;/a&gt;is a small VBScript like lanaguage. It was used in this project as a test and to sample the easy GUI controls it offers.)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Download the Utility:&lt;/span&gt;&lt;br /&gt;&lt;a href="/%7Ewhowd/blog/files/JoinDomain.au3"&gt;Download JoinDomain.au3&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Instructions:&lt;/span&gt;&lt;br /&gt;1. Download and install the latest beta of AutoIt&lt;br /&gt;2. &lt;a href="/%7Ewhowd/blog/files/JoinDomain.au3"&gt;Download JoinDomain.au3&lt;/a&gt;&lt;br /&gt;3. Edit JoinDomain.au3 in a text editor and change the following lines:&lt;br /&gt;&lt;blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;$adDefaultContext = "DC=DOMAIN,DC=COM"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$adDomainController = "dc.domain.com"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$adDomain  = "DOMAIN"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$adUsername  = ""&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;$adPassword  = ""&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;(If you leave the username and password variable blank, you will be prompted for these each time you run the program)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;4. Right click on JoinDomain.au3 and choose "Compile Script"&lt;br /&gt;5. Distribute resulting JoinDomain.exe to your technicians or deploy on corporate image&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Graphical Usage Demonstration:&lt;/span&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.truman.edu/%7Ewhowd/joindomain/"&gt;&lt;img style="cursor: pointer;" src="http://www2.truman.edu/%7Ewhowd/blog/uploaded_images/joindomaindemo-706460.gif" alt="" border="0" /&gt;&lt;/a&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/05/join-domain-tool.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114263336949337853</guid><pubDate>Fri, 17 Mar 2006 22:04:00 +0000</pubDate><atom:updated>2006-03-17T14:12:10.800-08:00</atom:updated><title>Campus Pipeline / Luminis Portal / uPortal Load Tester Script</title><description>Here's a perl script that will automatically logon to your Luminis / uPortal site and navigate through any content tabs. We've used this to do some basic load testing of the system by distributing this script out to campus systems.  You can configure the content tabs you want in the rotation and the number of total rounds to run.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.truman.edu/%7Ewhowd/blog/files/luminisLoadTest.txt"&gt;Download LuminisLoadTest.pl&lt;/a&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/03/campus-pipeline-luminis-portal-uportal.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114237355652435027</guid><pubDate>Thu, 16 Mar 2006 00:54:00 +0000</pubDate><atom:updated>2006-03-14T14:06:07.256-08:00</atom:updated><title>Grease Monkey Script - Google Books TSU Linky</title><description>Another &lt;a href="http://greasemonkey.mozdev.org/"&gt;GreaseMonkey&lt;/a&gt; script that will display the &lt;a href="http://library.truman.edu"&gt;&lt;span class="caps"&gt;Truman State&lt;/span&gt; library&lt;/a&gt; status of a book in &lt;a href="http://books.google.com"&gt;Google Books&lt;/a&gt;. It will also check to see if the book is available in our &lt;a href="http://proquest.safaribooksonline.com/"&gt;online Safari subscription&lt;/a&gt;, and if so it will let you read it online (if you are on the Truman network, or connected via &lt;a href="http://its.truman.edu/documentation/vpn"&gt;&lt;span class="caps"&gt;VPN&lt;/span&gt;&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.truman.edu/%7Ewhowd/blog/files/googlebooks-tsu.user.js"&gt;Install Google Books TSU Linky&lt;/a&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/03/grease-monkey-script-google-books-tsu.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114125012344053835</guid><pubDate>Fri, 20 Jan 2006 21:26:00 +0000</pubDate><atom:updated>2006-03-02T11:36:30.966-08:00</atom:updated><title>CME-24  / Blackworm / Blackmal / Nyexm / MyWife Virus Check</title><description>Here's a quick and dirty script that will check for known &lt;a href="http://cme.mitre.org/data/list.html#24"&gt;CME-24&lt;/a&gt; virus files.  As this virus does not use any cloaking techniques this should be an easy way to see if any of your users are affected.  A normal return code (ERRORLEVEL) is returned if the system is clean and a return code of 1000 is returned if the system had one of the associated files. We're using this script via SMS to quickly check and validate that our systems are clean.&lt;br /&gt;&lt;br /&gt;&lt;a href="files/checkBlackworm.vbs"&gt;Download Script&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Begin Code (checkBlackworm.vbs):&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;' ---------------------------------------------------------&lt;br /&gt;'&lt;br /&gt;'  checkBlackworm&lt;br /&gt;'&lt;br /&gt;'  Version 1.0&lt;br /&gt;'&lt;br /&gt;'  Walt Howd&lt;br /&gt;'&lt;br /&gt;'&lt;br /&gt;'  This script will check to see if any of the known files&lt;br /&gt;'  for the Blackworm/Nyxem worms are present on the machine.&lt;br /&gt;'&lt;br /&gt;'  If the files are found, then the script will exit with&lt;br /&gt;'  a custom error level. This can be used in SMS reporting&lt;br /&gt;'  to see systems that might be at risk.&lt;br /&gt;'&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;' Initialize variables&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;On Error Resume Next&lt;br /&gt;dim objShell, filesys, windir, system32, blackworm_files&lt;br /&gt;&lt;br /&gt;Set objShell     = WScript.CreateObject("WScript.Shell")&lt;br /&gt;Set filesys     = CreateObject("Scripting.FileSystemObject")&lt;br /&gt;&lt;br /&gt;windir        = objShell.Environment("Process").Item("windir") &amp; "\"&lt;br /&gt;system32    = windir &amp;amp; "system32\"&lt;br /&gt;&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;' Known Blackworm files&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;blackworm_files    = Array("rundll16.exe", "scanregw.exe", "update.exe", "winzip.exe", "WINZIP_TMP.exe")&lt;br /&gt;&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;' Check for files in WINDOWS and SYSTEM32 directories&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;For Each file in blackworm_files&lt;br /&gt;&lt;br /&gt;   If filesys.FileExists(windir &amp; file) OR filesys.FileExists(system32 &amp;amp; file) Then&lt;br /&gt;       wscript.quit(1000)   &lt;br /&gt;   End If&lt;br /&gt;&lt;br /&gt;Next&lt;br /&gt;&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;' If no files were found, quit with the normal errorlevel&lt;br /&gt;' ---------------------------------------------------------&lt;br /&gt;wscript.quit(0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;</description><link>http://www2.truman.edu/~whowd/blog/2006/01/cme-24-blackworm-blackmal-nyexm-mywife.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114174440102569450</guid><pubDate>Tue, 18 Oct 2005 20:49:00 +0000</pubDate><atom:updated>2007-01-08T08:53:31.070-08:00</atom:updated><title>Group Policy Auto Logon Administrative Template</title><description>Here's an administrative template for Microsoft Active Directory Group Policy that will allow you to setup systems to automatically logon. We use this for public terminal web browsing machines to allow them to automatically logon and start a web browser. To use this first add the adm template to your group policy and then under the view menu select "Filtering" and make sure "Only show policy settings that can be fully managed" is not checked. See &lt;a href="http://www2.truman.edu/~whowd/blog/files/autologon-ss.gif"&gt;screenshot here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www2.truman.edu/~whowd/blog/files/autologon.adm"&gt;Download AutoLogon.adm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Begin Code (autologon.adm)&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;CLASS MACHINE&lt;br /&gt;CATEGORY "System"&lt;br /&gt;  CATEGORY "Logon"&lt;br /&gt;      POLICY "AutoLogon"&lt;br /&gt;          EXPLAIN "These settings can be used to allow the system to logon automatically. To enable autologon, set the first two settings (AutoAdminLogon and ForceAutologon) to 1, and then fill in the appropriate account information. Keep in mind that this information will be stored in cleartext in the systems registry."&lt;br /&gt;          KEYNAME "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon"&lt;br /&gt;   &lt;br /&gt;          PART "AutoAdminLogon"        NUMERIC REQUIRED TXTCONVERT&lt;br /&gt;              VALUENAME "AutoAdminLogon"&lt;br /&gt;              MIN 0 MAX 1 DEFAULT "0" SPIN 1&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;          PART "ForceAutoLogon"        NUMERIC REQUIRED TXTCONVERT&lt;br /&gt;              VALUENAME "ForceAutoLogon"&lt;br /&gt;              MIN 0 MAX 1 DEFAULT "0" SPIN 1&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;          PART "DefaultUserName"        EDITTEXT REQUIRED&lt;br /&gt;              VALUENAME "DefaultUserName"&lt;br /&gt;              DEFAULT "Username" MAXLEN 128&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          PART "DefaultPassword"        EDITTEXT REQUIRED&lt;br /&gt;              VALUENAME "DefaultPassword"&lt;br /&gt;              DEFAULT "Password" MAXLEN 128&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;          PART "DefaultDomainName"    EDITTEXT REQUIRED&lt;br /&gt;              VALUENAME "DefaultDomainName"&lt;br /&gt;              DEFAULT "Domain" MAXLEN 128&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;          PART "AltDefaultUserName"    EDITTEXT REQUIRED&lt;br /&gt;              VALUENAME "AltDefaultUserName"&lt;br /&gt;              DEFAULT "Should match username above" MAXLEN 128&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;          PART "AltDefaultDomainName"    EDITTEXT REQUIRED&lt;br /&gt;              VALUENAME "AltDefaultDomainName"&lt;br /&gt;              DEFAULT "Should match domain above" MAXLEN 128&lt;br /&gt;          END PART&lt;br /&gt;&lt;br /&gt;      END POLICY&lt;br /&gt;  END CATEGORY&lt;br /&gt;END CATEGORY&lt;/span&gt;&lt;/blockquote&gt;</description><link>http://www2.truman.edu/~whowd/blog/2005/10/group-policy-auto-logon-administrative.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114174580628315853</guid><pubDate>Mon, 11 Apr 2005 14:12:00 +0000</pubDate><atom:updated>2006-11-15T23:06:22.966-08:00</atom:updated><title>Microsoft SQL Server T-SQL UDF Luhn Function</title><description>Here's my first attempt at writing a UDF in T-SQL for Microsoft SQL Server 2000. We had a third party application that used a Microsoft SQL server backend. The application couldn't be customized but we needed a checkdigit added to the database when it added a record. To do this, I hacked out this ugly luhn function and then added some triggers to the table.&lt;br /&gt;&lt;br /&gt;Sample Trigger:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style="font-family:courier new;"&gt;CREATE Trigger AutoCheckDigitInsert&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;ON dbo.tablename&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;FOR INSERT&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;AS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;UPDATE [tablename] SET checkdigit = dbo.luhn(isonumber.isonumber+''+tablename.idnumber) FROM &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;tablename, isonumber, inserted WHERE tablename.checkdigit IS null) AND (tablename.idnumber = inserted.idnumber)&lt;/span&gt;&lt;/blockquote&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This function will return the checkdigit for whatever argument you pass. For more information about the Luhn function, also known as Mod 10, see the &lt;a href="http://en.wikipedia.org/wiki/Luhn_algorithm"&gt;Wikipedia article&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="/%7Ewhowd/blog/files/luhnFunction.txt"&gt;Download Luhn Function&lt;/a&gt;&lt;br /&gt;&lt;blockquote  style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;CREATE FUNCTION luhn (@s varchar(20) )&lt;br /&gt;RETURNS int&lt;br /&gt;AS&lt;br /&gt;  BEGIN&lt;br /&gt;  DECLARE @i int, @j int, @total int, @final int, @tmp int, @result bit&lt;br /&gt;&lt;br /&gt;  SELECT @i = 2&lt;br /&gt;  SELECT @final = 0&lt;br /&gt;  SELECT @total = 0&lt;br /&gt;  SELECT @s =ltrim(@s)&lt;br /&gt;  SELECT @s =rtrim(@s)&lt;br /&gt;  WHILE @i &lt; (len(@s) + 2)     BEGIN     SELECT @j=(ASCII(substring(@s,@i-1,1))-48)     IF @i % 2 = 0         SELECT @j = @j * 2         IF @j &gt; 9&lt;br /&gt;          SELECT @j = @j - 9&lt;br /&gt;  SELECT @tmp = @total&lt;br /&gt;  SELECT @total=@tmp+@j&lt;br /&gt;  SELECT @i=@i+1&lt;br /&gt;  END&lt;br /&gt;  IF @total % 10 = 0&lt;br /&gt;      SELECT @final = 0&lt;br /&gt;  ELSE&lt;br /&gt;      SELECT @final = 10 - (@total % 10)&lt;br /&gt;     RETURN (@final)&lt;br /&gt;END&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;</description><link>http://www2.truman.edu/~whowd/blog/2005/04/microsoft-sql-server-t-sql-udf-luhn.html</link><author>noreply@blogger.com (Walt)</author></item><item><guid isPermaLink='false'>tag:blogger.com,1999:blog-23228586.post-114125148131449866</guid><pubDate>Mon, 14 Feb 2005 22:40:00 +0000</pubDate><atom:updated>2006-03-01T14:18:01.316-08:00</atom:updated><title>Sysprep changes in Windows XP SP2</title><description>If you manage Windows XP images you may find that the default behavior of sysprep changed after SP2 is installed. If you customized the default profile on the system you might find some of these settings missing or overwritten by settings from the administrator profile.&lt;br /&gt;&lt;br /&gt;To fix this you can see &lt;a href="http://support.microsoft.com/kb/887816"&gt;Microsoft KB article 887816&lt;/a&gt;.  An non public released hotfix is available (&lt;span style="font-style: italic;"&gt;WindowsXP-KB887816-x86-enu.exe&lt;/span&gt;) that will restore the original behavior.&lt;br /&gt;&lt;br /&gt;In our environment we make heavy changes to the Default User profile to disable the nag and startup configuration of our global applications. Using this hotfix we can continue that model and not have to worry about unwanted settings from the Administrator profile being introduced into the normal users environment.</description><link>http://www2.truman.edu/~whowd/blog/2005/02/sysprep-changes-in-windows-xp-sp2.html</link><author>noreply@blogger.com (Walt)</author></item></channel></rss>