<?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:blogger='http://schemas.google.com/blogger/2008' 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-11479170</id><updated>2024-09-02T03:04:07.577-05:00</updated><category term="Python"/><category term="PowerShell"/><category term="backtrack"/><title type='text'>Random Technological Ramblings</title><subtitle type='html'>Documenting and sharing solutions to my random technological problems.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.awestin.net/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11479170.post-8833831391290631589</id><published>2012-10-26T19:30:00.000-05:00</published><updated>2013-12-17T14:49:52.157-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell"/><title type='text'>Checking a Website and Restarting a Windows Service with PowerShell</title><content type='html'>&lt;div&gt;
One of the Windows 2008 servers that I administer hosts a website on Tomcat that loses it&#39;s connection to its database randomly and needs to be restarted every once in a while. &amp;nbsp;It&#39;s a legacy web application that is no longer supported by the company that produced it. &amp;nbsp;So, fixing the underlying issue is not really an option.&lt;br /&gt;
&lt;br /&gt;
My next best choice was to create a PowerShell script to run locally on the web server that will retrieve a page from the site that gets content from the database, parse the content of the page to determine whether it is serving an error page or not, and then restart the Tomcat service on the Windows server if necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;iframe height=&quot;1136&quot; src=&quot;http://pastebin.com/embed_iframe.php?i=pdpyUe4G&quot; style=&quot;border: none; width: 100%;&quot;&gt;&lt;/iframe&gt;

&lt;br /&gt;
Obviously, this script can be modified to perform any activity after the content verification is complete but my use case required that I restart a service. &amp;nbsp;So, I have left this as is in this example.&lt;br /&gt;
&lt;br /&gt;
If you are curious as to how I determine what the actual service name is (it can be different from what is displayed in the &quot;Services&quot; panel), this can be found in the properties of the service. &amp;nbsp;Go to Start -&amp;gt; Run -&amp;gt; Services.msc -&amp;gt; Right click the service you want to restart -&amp;gt; click Properties -&amp;gt; General tab. &amp;nbsp;Once you are in the general tab for the service properties, you will find the name in the &quot;Service name:&quot; field. &amp;nbsp;In my case, this is Tomcat7.0.26. &amp;nbsp;You will notice in the screenshot that the main panel shows the name of this service as being Apache Tomcat 7.0.26. &amp;nbsp;This is not what we want.&lt;br /&gt;
&lt;br /&gt;
&lt;table align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; class=&quot;tr-caption-container&quot; style=&quot;margin-left: auto; margin-right: auto; text-align: center;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsiQmZISGqE0dlQDcUBvJuGR8AZZx0-e5XYjK3lS4KG2zWesutUYVIZofU3tgim1e9s-7ARRqWkV_Vnfp9xl0vLdhsw8JSNSPgRnfxmvyl-5pCKLufhh7XTsEdy_iiqeSm9KP/s1600/Capture.PNG&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: auto; margin-right: auto;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsiQmZISGqE0dlQDcUBvJuGR8AZZx0-e5XYjK3lS4KG2zWesutUYVIZofU3tgim1e9s-7ARRqWkV_Vnfp9xl0vLdhsw8JSNSPgRnfxmvyl-5pCKLufhh7XTsEdy_iiqeSm9KP/s640/Capture.PNG&quot; height=&quot;268&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;tr-caption&quot; style=&quot;text-align: center;&quot;&gt;Service name location.&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
&lt;br /&gt;
The &#39;net stop/start&#39; command in the script is not a PowerShell cmdlet -- it is a Windows command-line (CMD) tool. &amp;nbsp;PowerShell will run Windows command-line commands natively and, since I was already familiar with net stop/start, I didn&#39;t bother to look up a PowerShell cmdlet for it.&lt;br /&gt;
&lt;br /&gt;
NOTE: The server that I wrote this for has PowerShell 2.0 installed. &amp;nbsp;If I&#39;d had PowerShell 3.0, I could have used a different cmdlet called &lt;a href=&quot;http://blogs.technet.com/b/heyscriptingguy/archive/2012/09/21/use-powershell-to-download-web-page-links-from-a-blog.aspx&quot; target=&quot;_blank&quot;&gt;Invoke-WebRequest&lt;/a&gt;&amp;nbsp;that would have worked a little better as this will return an object containing multiple useful items rather than saving the content to a file which has to be read back into a variable. &amp;nbsp;However,&amp;nbsp;System.Net.WebClient() can be used to download files. &amp;nbsp;So, if you need a script that will download files from a site and you are running PwerShell 3.0,&amp;nbsp;System.Net.WebClient() will do it!&lt;br /&gt;
&lt;br /&gt;
If anyone else has a better way of doing this in PowerShell 2.0, please comment (or contact me on Twitter -- &lt;a href=&quot;https://twitter.com/awestin_1&quot; target=&quot;_blank&quot;&gt;@awestin_1&lt;/a&gt;). &amp;nbsp;I would be interested in hearing a different way. &amp;nbsp;I don&#39;t like the fact that the cmdlet that I am using saves the&amp;nbsp;retrieved&amp;nbsp;content to a file first. &amp;nbsp;This is the first cmdlet that I found. &amp;nbsp;So, I just went with it.&lt;br /&gt;
&lt;br /&gt;
Edit: For documentation of the WebClient class and its contructors, properties, methods, and events, look &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/system.net.webclient.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Edit: You may also want to note that, if you are using HTTPS and pointing this script to a site that is using an invalid SSL certificate, the WebClient() function will throw an error. &amp;nbsp;You will need to figure out a way to handle this exception.&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/8833831391290631589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2012/10/checking-website-and-restarting-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/8833831391290631589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/8833831391290631589'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2012/10/checking-website-and-restarting-windows.html' title='Checking a Website and Restarting a Windows Service with PowerShell'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibsiQmZISGqE0dlQDcUBvJuGR8AZZx0-e5XYjK3lS4KG2zWesutUYVIZofU3tgim1e9s-7ARRqWkV_Vnfp9xl0vLdhsw8JSNSPgRnfxmvyl-5pCKLufhh7XTsEdy_iiqeSm9KP/s72-c/Capture.PNG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11479170.post-4797479912076160368</id><published>2012-08-29T14:15:00.001-05:00</published><updated>2013-01-24T14:53:36.548-05:00</updated><title type='text'>Disable Weak SSL Cipher Suites in Tomcat/JBoss</title><content type='html'>&lt;br /&gt;
In order to disable weak SSL cipher suites in JBoss or Tomcat, you must make the changes below in the server.xml file and then restart the Tomcat/JBoss server.&lt;br /&gt;
&lt;br /&gt;
Tomcat: &amp;lt;Tomcat dir&amp;gt;\conf\server.xml&lt;br /&gt;
JBOSS: &amp;lt;JBoss dir&amp;gt;\server\all\deploy\jbossweb.sar\server.xml&lt;br /&gt;
&lt;br /&gt;
Add the following directive to the SSL connector:&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #f8f8f8; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Liberation Mono&#39;, &#39;DejaVu Sans Mono&#39;, &#39;Bitstream Vera Sans Mono&#39;, monospace, serif; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
ciphers=&quot;SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;span style=&quot;background-color: white; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 21px;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #eeeeee; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;lt;Connector protocol=&quot;HTTP/1.1&quot; SSLEnabled=&quot;true&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;port=&quot;443&quot; address=&quot;${jboss.bind.address}&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;scheme=&quot;https&quot; secure=&quot;true&quot; clientAuth=&quot;false&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;keystoreFile=&quot;${jboss.server.home.dir}/conf/test.keystore&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;keystorePass=&quot;PaSsWoRd&quot;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;sslProtocol = &quot;TLS&quot; ciphers=&quot;SSL_RSA_WITH_RC4_128_MD5, SSL_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_CBC_SHA, TLS_DHE_DSS_WITH_AES_128_CBC_SHA, SSL_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA, SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA&quot;/&amp;gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once I add this directive to the SSL connector and restart the Tomcat/JBoss server, I no longer get Medium or High vulnerability results from Nessus about weak SSL cipher suites being used.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/4797479912076160368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2012/08/disable-weak-ssl-cipher-suites-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/4797479912076160368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/4797479912076160368'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2012/08/disable-weak-ssl-cipher-suites-in.html' title='Disable Weak SSL Cipher Suites in Tomcat/JBoss'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11479170.post-2158186152942249306</id><published>2012-04-19T11:39:00.000-05:00</published><updated>2012-04-19T23:42:47.751-05:00</updated><title type='text'>Using Google Authenticator to Enable Two-Factor Authentication for SSH</title><content type='html'>There&#39;s something about two-factor authentication that gives me this warm feeling inside. &amp;nbsp;I enable it on every service that I can (i.e. LastPass, Google Accounts, eBay, PayPal, Amazon Web Services, etc.). &amp;nbsp;It helps me to feel just a little safer in this cruel dark world that we call the World Wide Web.&lt;br /&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This past weekend, I was dwelling on these feelings in order to help me feel better about having to remote into work for a couple of hours. &amp;nbsp;While signing into my work account via SSH, I thought to myself, &quot;wouldn&#39;t it be awesome if I started using MFA (&lt;a href=&quot;http://en.wikipedia.org/wiki/Multi-factor_authentication&quot;&gt;multi-factor authentication&lt;/a&gt;) to authenticate my SSH sessions?&quot; &amp;nbsp;After a few minutes of research, I learned that Google had written a PAM (&lt;a href=&quot;http://en.wikipedia.org/wiki/Pluggable_authentication_module&quot;&gt;pluggable authentication module&lt;/a&gt;) implementation of their two-step verification solution, &lt;a href=&quot;http://code.google.com/p/google-authenticator/&quot;&gt;Google Authenticator&lt;/a&gt;. &amp;nbsp;Google Authenticator generates one-time passcodes that can be used in&amp;nbsp;tandem&amp;nbsp;with your regular password. &amp;nbsp;This means that, if an attacker manages to obtain your password and watches you type in your one-time passcode, they still cannot log into your account because the one-time passcode can only be used (you guessed it) one time before another passcode is generated. &amp;nbsp;This was great news as I have an Android phone with the Google Authenticator app already installed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Install Google Authenticator Mobile App&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
As of the date of this post, Google has published the Google Authenticator app for the following mobile operating systems:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2&amp;amp;feature=nav_result#?t=W251bGwsMSwxLDMsImNvbS5nb29nbGUuYW5kcm9pZC5hcHBzLmF1dGhlbnRpY2F0b3IyIl0.&quot;&gt;Android version 2.1 or later&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BlackBerry OS 4.5 - 6.0&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://itunes.apple.com/us/app/google-authenticator/id388497605?mt=8&quot;&gt;iPhone iOS 3.1.3 or later&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
Install instructions for each mobile OS can be found &lt;a href=&quot;http://support.google.com/accounts/bin/answer.py?hl=en&amp;amp;answer=1066447&quot;&gt;here&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Install Google Authenticator PAM&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Obviously, having the Google Authenticator app on your phone is not enough. &amp;nbsp;You will need to install the Google Authenticator PAM on the Linux machine hosting your SSH server. &amp;nbsp;Pre-requisites for installing the Google Authenticator PAM on your Linux server are as follows:&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;GIT&lt;/li&gt;
&lt;li&gt;Make&lt;/li&gt;
&lt;li&gt;GCC&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
You can install each of these by issuing the following commands from a terminal session on your server using the yum package manager:&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;
yum install git&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;yum install make&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;yum install gcc&lt;/code&gt;&lt;/blockquote&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
If you are not using the yum package manager on your machine, you may want to install it or find the proper commands for the package manager that you are using.&lt;br /&gt;
&lt;br /&gt;
Once these packages have been installed, issue the following commands to download, compile,&amp;nbsp;(that&#39;s right, I use the Oxford comma and I&#39;m not ashamed)&amp;nbsp;and install &amp;nbsp;the PAM:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;code&gt;
git clone https://code.google.com/p/google-authenticator/&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;cd google-authenticator/libpam/&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;make&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;make install
&lt;/code&gt;&lt;/blockquote&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Configure the SSH Server&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Now that the Google Authenticator PAM has been installed, the SSH server will need to be configured to use it. &amp;nbsp;Open /etc/pam.d/sshd with your favorite text editor.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;code&gt;nano /etc/pam.d/sshd&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Make sure that the following lines are in the file:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;code&gt;
auth required pam_sepermit.so&lt;br /&gt;
auth required pam_google_authenticator.so&lt;br /&gt;
auth include password-auth&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
This is what my /etc/pam.d/sshd file looks like:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;code&gt;
#%PAM-1.0&lt;br /&gt;
auth required pam_sepermit.so &amp;nbsp;#this line already existed&lt;br /&gt;
auth required pam_google_authenticator.so #added this line&lt;br /&gt;
auth include password-auth &amp;nbsp;&lt;/code&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;#this line already existed&lt;/span&gt;&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;code&gt;&lt;br /&gt;
account required pam_nologin.so&lt;br /&gt;
account include password-auth&lt;br /&gt;
password include password-auth&lt;br /&gt;
# pam_selinux.so close should be the first session rule&lt;br /&gt;
session required pam_selinux.so close&lt;br /&gt;
session required pam_loginuid.so&lt;br /&gt;
# pam_selinux.so open should only be followed by sessions to be executed in the user context&lt;br /&gt;
session required pam_selinux.so open env_params&lt;br /&gt;
session optional pam_keyinit.so force revoke&lt;br /&gt;
session include password-auth&lt;br /&gt;
&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Edit: &amp;nbsp;NOTE - If you would like some users to be able to authenticate with two-factor authentication and others to connect WITHOUT two-factor authentication, change the &quot;
&lt;span style=&quot;font-family: monospace;&quot;&gt;auth required pam_google_authenticator.so&lt;/span&gt;&amp;nbsp;&quot; line to &quot;&lt;span style=&quot;font-family: monospace;&quot;&gt;auth optional pam_google_authenticator.so&lt;/span&gt;&quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;span style=&quot;font-size: large;&quot;&gt;Configure the User Account and Mobile App&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;
Now that the SSH server has been configured, there&#39;s one step left -- the user accounts that will be using two-factor authentication must be configured. &amp;nbsp;To do this, log in as the user and run the following command:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class=&quot;tr_bq&quot;&gt;
&lt;span style=&quot;font-family: monospace;&quot;&gt;&lt;code&gt;
google-authenticator&lt;br /&gt;
&lt;/code&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;br /&gt;
This will run an interactive setup guide and will generate a file in the user&#39;s home directory named .google_authenticator. &amp;nbsp;This file contains all of the Google Authenticator configuration information for the user. &amp;nbsp;Check it out. &amp;nbsp;Here is a copy of mine (with the key and scratch codes changed of course):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ABCDEFGHIJKLMNOP12&lt;br /&gt;
&quot; RATE_LIMIT 3 30&lt;br /&gt;
&quot; DISALLOW_REUSE&lt;br /&gt;
&quot; TOTP_AUTH&lt;br /&gt;
12345678&lt;br /&gt;
09876543&lt;br /&gt;
19827364&lt;br /&gt;
01928374&lt;br /&gt;
75849302&lt;br /&gt;
&lt;br /&gt;
Edit: &amp;nbsp;WARNING - If you choose to configure this with TOTP (time-based verification) rather than HOTP (counter-based verification), be sure that your server&#39;s clock is in sync. &amp;nbsp;If the server&#39;s clock is off by a few minutes, time-based verification will not work.&lt;br /&gt;
&lt;br /&gt;
The google-authenticator interactive setup will provide you with a key. &amp;nbsp;Open the Google Authenticator app on your mobile device and add an account through the settings menu. &amp;nbsp;You will be asked for the key. &amp;nbsp;Once you configure the account, you&#39;re all set. &amp;nbsp;The mobile app will start generating passcodes that you can use to log into the SSH server with the user that was configured.&lt;br /&gt;
&lt;br /&gt;
Happy multi-factor authenticating.&lt;br /&gt;
&lt;br /&gt;
Edit: &amp;nbsp;This may not be compatible with certificate authentication. &amp;nbsp;I haven&#39;t tested this yet.</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/2158186152942249306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2012/04/using-google-authenticator-to-enable.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/2158186152942249306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/2158186152942249306'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2012/04/using-google-authenticator-to-enable.html' title='Using Google Authenticator to Enable Two-Factor Authentication for SSH'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11479170.post-4256660842498509299</id><published>2011-09-03T14:48:00.000-05:00</published><updated>2012-01-08T17:23:34.717-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Automating a Cursor with Python</title><content type='html'>I haven&#39;t been posting here as often as I would like to be. &amp;nbsp;Unfortunately, I have been too busy. &amp;nbsp;However, I got lucky the other day and ran into a problem with a really simple solution. &amp;nbsp;For this post, time will not be an issue.&lt;br /&gt;
&lt;br /&gt;
This can, obviously, be applied to any other situation where cursor input is required. &amp;nbsp;My particular use case just happens to be keeping my RDP sessions from timing out.&lt;br /&gt;
&lt;br /&gt;
I use RDP to remote into a lot of servers where the policies are set up to log users out of their session if the RDP connection idles for 15 minutes.  This can be especially frustrating when you need to copy a large file across the network overnight and you don&#39;t have the administrative&amp;nbsp;privileges&amp;nbsp;to adjust these policies (or the time to babysit the session).  So, I took 3 minutes to write up a quick script in Python that will move the cursor to specific pixels on my screen (over the RDP window) and execute clicks. &amp;nbsp;Thus, keeping the RDP session alive and my process running.&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;blockquote&gt;
&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;import ctypes&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: inherit;&quot;&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;import time&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;while True: &amp;nbsp;# infinite loop&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;time.sleep(20) &amp;nbsp;#wait 20 seconds&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.SetCursorPos(1200, 850) &amp;nbsp;# move cursor to 1200,850 (x,y)&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) # left mouse button down&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) # left mouse button up&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;time.sleep(20) &amp;nbsp;#wait 20 seconds&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.SetCursorPos(1220, 850) &amp;nbsp;# move cursor to 1220, 850 (x,y)&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.mouse_event(2, 0, 0, 0,0) &amp;nbsp;# left mouse button down&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: x-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;ctypes.windll.user32.mouse_event(4, 0, 0, 0,0) &amp;nbsp;# left mouse button up&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;
There are a few things to note here:&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;You may have noticed by the function names (ctypes.windll) that this is a windows only solution. &amp;nbsp;If you need to do this on a different OS, Google will show you the way.&lt;/li&gt;
&lt;li&gt;Be sure to run this script from the machine running the RDP client. &amp;nbsp;If you run this script on the target machine rather than from the machine that you are connecting from, the cursor activity will not be captured by the RDP client and the RDP session will go idle anyway.&lt;/li&gt;
&lt;li&gt;If the machine from which you are executing this script has multiple screens, you can simply add extra pixels in the SetCursorPos function to escape from the main screen. &amp;nbsp;If your main screen is above or to the right of another screen, you will need to use negative numbers to access that other screen.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/4256660842498509299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2011/09/automating-cursor-with-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/4256660842498509299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/4256660842498509299'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2011/09/automating-cursor-with-python.html' title='Automating a Cursor with Python'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11479170.post-566536589140140284</id><published>2011-06-12T18:53:00.009-05:00</published><updated>2013-04-07T19:26:51.393-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Python"/><title type='text'>Enom Dynamic DNS Updater</title><content type='html'>&lt;div&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;/blockquote&gt;
Update: The script outlined below is obsolete. &amp;nbsp;WhatIsMyIP.com has updated their usage rules and will not allow connections from clients that do not have a particular user agent set. &amp;nbsp;See the &lt;a href=&quot;http://www.whatismyip.com/ip-faq/automation-rules/&quot; target=&quot;_blank&quot;&gt;usage rules&lt;/a&gt;. &amp;nbsp;I have not had a chance to update the script.&lt;br /&gt;
&lt;br /&gt;
If you have a domain whose DNS records are managed with Enom and you&#39;re hosting a server with a dynamic IP, the following Python script may prove to be useful to you.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
I am in this situation myself and I decided that, rather than hunting around for a dynamic dns client that supports Enom, I would write something myself.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
This script retrieves your external IP address from WhatIsMyIp.com&#39;s .asp page which was created with developers in mind and the understanding that they have been needing to scrape their external IP&#39;s from such sites.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Please be mindful of WhatIsMyIP.com&#39;s automation usage rules.  They ask that you refrain from retrieving your IP more than once every 5 minutes.  They have a few more rules as well.  You can find their automation rules at the address below.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;a href=&quot;http://www.whatismyip.com/ip-faq/automation-rules/&quot;&gt;http://www.whatismyip.com/ip-faq/automation-rules/&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Please note that, when run, the script will perform a single update.  If you want this to happen constantly, you can schedule the script to run every so many minutes.  Use task scheduler for Windows or cron for Linux.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://pastebin.com/a0N1seRy&quot;&gt;http://pastebin.com/a0N1seRy&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ol style=&quot;background-color: #eeeeee; color: #acacac; font-family: Consolas, Menlo, Monaco, &#39;Lucida Console&#39;, &#39;Bitstream Vera Sans Mono&#39;, Courier, monospace; font-size: 12px; line-height: 21px; margin: 0px; padding: 0px 0px 0px 48px;&quot;&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;####################################################################&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# Author: Awestin1&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# Date: 2011.06.09&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# File Name: enom_update.py&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# Purpose: &amp;nbsp;The purpose of this Python script is to serve as&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# &amp;nbsp;a dynamic DNS updater for domains registered&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# &amp;nbsp;with Enom.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# Requirements:&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;# -The user MUST have their domain registered through ENOM.&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;###################################################################&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw1&quot; style=&quot;color: #ff7700; font-weight: bold;&quot;&gt;import&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: crimson;&quot;&gt;urllib2&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#set variables&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#URL for the WhatIsMyIP page that returns your external IP&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
ip_lookup_url&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;http://automation.whatismyip.com/n09230945.asp&#39;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#set your domain or subdomain&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
domain&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;subdomain.domain.com&#39;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#set your Enom account password&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
password&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;PaSsWoRd&#39;&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#retrieve IP from URL defined in ip_lookup_url and store it in current_ip_addr&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
current_ip_addr&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: crimson;&quot;&gt;urllib2&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;urlopen&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;ip_lookup_url&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#build enom dynamic dns update url and store it in domain_ip_update_url&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
domain_ip_update_url&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;https://dynamic.nameservices.com/interface.asp?command=setdnshost&amp;amp;zone=&#39;&lt;/span&gt;+domain+&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;&amp;amp;domainpassword=&#39;&lt;/span&gt;&amp;nbsp;+password+&amp;nbsp;&lt;span class=&quot;st0&quot; style=&quot;color: darkslateblue;&quot;&gt;&#39;&amp;amp;address=&#39;&lt;/span&gt;&amp;nbsp;+ current_ip_addr&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#updates domain DNS records by getting the url built in domain_ip_update_url and returns Enom&#39;s response and stores it in the response variable&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
response&amp;nbsp;&lt;span class=&quot;sy0&quot; style=&quot;color: #66cc66;&quot;&gt;=&lt;/span&gt;&amp;nbsp;&lt;span class=&quot;kw3&quot; style=&quot;color: crimson;&quot;&gt;urllib2&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;urlopen&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;domain_ip_update_url&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;.&lt;span class=&quot;me1&quot;&gt;read&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;br0&quot;&gt;)&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li2&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de2&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;co1&quot; style=&quot;color: grey; font-style: italic;&quot;&gt;#prints the response from Enom&lt;/span&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;li class=&quot;li1&quot; style=&quot;-webkit-user-select: none;&quot;&gt;&lt;div class=&quot;de1&quot; style=&quot;-webkit-user-select: text; background-color: white; border-left-color: rgb(204, 204, 204); border-left-style: solid; border-left-width: 1px; color: black; margin: 0px 0px 0px -7px; padding: 0px 5px; position: relative; vertical-align: top;&quot;&gt;
&lt;span class=&quot;kw1&quot; style=&quot;color: #ff7700; font-weight: bold;&quot;&gt;print&lt;/span&gt;&amp;nbsp;response&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/566536589140140284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2011/06/if-you-have-domain-whose-dns-records.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/566536589140140284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/566536589140140284'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2011/06/if-you-have-domain-whose-dns-records.html' title='Enom Dynamic DNS Updater'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11479170.post-7494627230289687894</id><published>2011-06-09T21:18:00.006-05:00</published><updated>2011-09-02T16:13:11.411-05:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="backtrack"/><title type='text'>BackTrack 5 - X Server Crash</title><content type='html'>On May 10, 2011, like many excited BackTrack fans, I downloaded and installed the new BackTrack 5 release (x64 KDE version).  Much to my frustration, I found that, every time I ran startx, the x server would crash and I would be returned to the command line.  While I spend most of my time in the shell, a GUI is nice sometimes and I wanted to at least check it out.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
The solution:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;&lt;/code&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;$ fix-splash&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;$ rm ~/.kde/cache-root/icon-cac­he.kcache&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;$ rm ~/.kde/cache-root/plasma_t­heme_Volatile.kcache&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;$ rm ~/.kde/cache-bt/icon-cache­.kcache&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;code&gt;$ rm ~/.kde/cache-bt/plasma_the­me_Volatile.kcache&lt;/code&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Where ~ is the home directory of the user you are running &quot;startx&quot; as.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
Edit:  Apparently this is a well known bug in BackTrack 5 KDE x64.&lt;/div&gt;
&lt;div style=&quot;text-align: left;&quot;&gt;
&lt;a href=&quot;http://www.backtrack-linux.org/forums/backtrack-5-fixes/40286-bt5-kde-64bit-startx-problem.html&quot;&gt;http://www.backtrack-linux.org/forums/backtrack-5-fixes/40286-bt5-kde-64bit-startx-problem.html&lt;/a&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://blog.awestin.net/feeds/7494627230289687894/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://blog.awestin.net/2011/06/back-track-5-x-server-crash.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/7494627230289687894'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11479170/posts/default/7494627230289687894'/><link rel='alternate' type='text/html' href='http://blog.awestin.net/2011/06/back-track-5-x-server-crash.html' title='BackTrack 5 - X Server Crash'/><author><name>Awestin1</name><uri>http://www.blogger.com/profile/11086394812308454462</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry></feed>