<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DUYEQXs8eyp7ImA9WxJVGEs.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649</id><updated>2009-07-06T03:58:20.573-04:00</updated><title>xenoterracide's blog</title><subtitle type="html">The official blog of Caleb Cushing (xenoterracide)</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://xenoterracide.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default?start-index=6&amp;max-results=5&amp;redirect=false&amp;v=2" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>102</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>5</openSearch:itemsPerPage><link rel="self" href="http://feeds.feedburner.com/xenoterracide" type="application/atom+xml" /><feedburner:emailServiceId>xenoterracide</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><entry gd:etag="W/&quot;DUYEQXszeip7ImA9WxJVGEs.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649.post-1488201023535442842</id><published>2009-07-06T02:47:00.005-04:00</published><updated>2009-07-06T03:58:20.582-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-07-06T03:58:20.582-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="router" /><category scheme="http://www.blogger.com/atom/ns#" term="openwrt" /><category scheme="http://www.blogger.com/atom/ns#" term="networking" /><category scheme="http://www.blogger.com/atom/ns#" term="dhcp" /><title>OpenWRT static DHCP</title><content type="html">I use OpenWRT on my Linksys WRT54GL, all shell, no web interface. My basic problem is that both me and my roomate need ports forwarded from the internet to our systems. This means NAT, for nat you need to know the IP address that you're forwarding too. I could just 'static' the IP on our boxes and then set up the NAT. This is not the correct way to do things, as it would be much more difficult to keep track of who uses what IP and make sure that dnsmasq doesn't give out our static-ed IP's. Also when you static an IP on the client side that usually means setting dns, and remembering to unstatic it when you move. So we really want our dhcp server to give out the same IP address to a given mac address. to do this in OpenWRT you need to edit &lt;code&gt;/etc/ethers.local&lt;/code&gt; the syntax of that file is basically &lt;br /&gt;&lt;code&gt;&lt;br&gt;mac ip&lt;br&gt;mac ip&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;mine currently looks like this.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;00:1e:8c:09:e7:13 192.168.1.2&lt;br /&gt;00:21:9b:06:4c:c9 192.168.1.3&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;These 2 computers will always get the same IP address while any other computer on the network may get a random IP address. After editing this file you need to run &lt;code&gt;/etc/init.d/luci_ethers start&lt;/code&gt; which will then generate &lt;code&gt;/etc/ethers&lt;/code&gt; which is what is actually used. You could also reboot the router but that is unnecessary.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2238114716501996649-1488201023535442842?l=xenoterracide.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/xenoterracide/~4/uIZ1H7gvveU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/1488201023535442842/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2238114716501996649&amp;postID=1488201023535442842" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/1488201023535442842?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/1488201023535442842?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/xenoterracide/~3/uIZ1H7gvveU/openwrt-static-dhcp.html" title="OpenWRT static DHCP" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="01821789362937826257" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://xenoterracide.blogspot.com/2009/07/openwrt-static-dhcp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkcHQns8cCp7ImA9WxJVEUk.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649.post-68547237646174293</id><published>2009-06-27T17:53:00.005-04:00</published><updated>2009-06-27T19:07:13.578-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-27T19:07:13.578-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="C" /><category scheme="http://www.blogger.com/atom/ns#" term="pointers" /><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="C++" /><title>To pointer, or not to pointer: That is the question</title><content type="html">For a very long time now I've been looking for good explanations of pointers, and how the varying kinds differ.I've finally found a book that does a good job of explaining what they are and how they differ. The book is by Bjarne Stroustrup (the creator of C++) it's called &lt;a href="http://www.stroustrup.com/Programming/"&gt;Programming -- Principles and Practice Using C++&lt;br /&gt;&lt;/a&gt; The book is supposed to teach you how to program (become a good programmer) using C++ not teach the C++ language. The question that Stroustrup poses is &lt;cite&gt;How do we choose between using a reference argument and using a pointer argument?&lt;/cite&gt; his answer to the question is quite in depth, however I'll reiterate his summary here in the hopes that it's useful for someone. &lt;blockquote&gt;So, the real answer is: "The choice depends on the nature of the the function":&lt;br /&gt;&lt;ul&gt;&lt;li&gt;For tiny objects prefer pass-by-value.&lt;/li&gt;&lt;li&gt;For functions where "no object" (represented by a 0) is a valid argument use a pointer parameter (and remember to test for 0).&lt;/li&gt;&lt;li&gt;Otherwise, use a reference parameter.&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; Ok, that alone seems a little confusing. I'm just going to use function declarations to denote the differences in code.&lt;br /&gt;&lt;br /&gt;According to him, pass by value is the least error prone, but it copies memory and is therefore more expensive. To do this you'd declare a function like &lt;code&gt;int func_name(int x);&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;"No object" in my quote is another term for "Null pointer" which he defined previous to this but wasn't in my quote. If no argument to the function is valid you'd use that. It's declared like &lt;code&gt;int func_name(int* x);&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;The last option is to use a reference pointer. these are declared as &lt;code&gt;int func_name(int&amp; x)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;I still have some trouble with the what/why/when to use pointers, but I'll probably just go back through this a few times. Stroustrup's explanation is still the best I've seen. I'd suggest his book to any novice programmer. I'm not sure if it's the best for someone who's never seen any code as it goes quite fast. It doesn't spend hardly any time at all on language constructs, which most books do. I don't think so fast that you couldn't use it as a 'first programming book' but it might be good to have a book that covers the constructs (like for loop) in depth.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2238114716501996649-68547237646174293?l=xenoterracide.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/xenoterracide/~4/0PimpUvV6gk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/68547237646174293/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2238114716501996649&amp;postID=68547237646174293" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/68547237646174293?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/68547237646174293?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/xenoterracide/~3/0PimpUvV6gk/to-pointer-or-not-to-pointer-that-is.html" title="To pointer, or not to pointer: That is the question" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="01821789362937826257" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://xenoterracide.blogspot.com/2009/06/to-pointer-or-not-to-pointer-that-is.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0INQHw7cCp7ImA9WxJRFEk.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649.post-7041650082080519387</id><published>2009-05-16T00:37:00.004-04:00</published><updated>2009-05-16T00:53:11.208-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-16T00:53:11.208-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="howto" /><category scheme="http://www.blogger.com/atom/ns#" term="Linux" /><category scheme="http://www.blogger.com/atom/ns#" term="samba" /><category scheme="http://www.blogger.com/atom/ns#" term="tutorial" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><category scheme="http://www.blogger.com/atom/ns#" term="iptables" /><title>iptables browsing samba shares</title><content type="html">NOTE: this assumes that you've read my previous post on &lt;a href="http://xenoterracide.blogspot.com/2008/04/iptables-for-average-desktop-user.html"&gt;basic iptables setup on the desktop&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So I just spent the longest time trying to determine what ports I needed to browse and use samba shares. The sad answer is it's just one.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;iptables -A INPUT -p udp --sport 137 -j ACCEPT&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;the catch with all the information I found with google was that most of it was for samba servers. I didn't want that. I just want to be able to browse my roommates network shares, and download from them. None of the information google provided suggested I need to allow the source port on the other end.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2238114716501996649-7041650082080519387?l=xenoterracide.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/xenoterracide/~4/aAg2ncOMSpw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/7041650082080519387/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2238114716501996649&amp;postID=7041650082080519387" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/7041650082080519387?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/7041650082080519387?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/xenoterracide/~3/aAg2ncOMSpw/iptables-browsing-samba-shares.html" title="iptables browsing samba shares" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="01821789362937826257" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://xenoterracide.blogspot.com/2009/05/iptables-browsing-samba-shares.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUADQX47fip7ImA9WxJREUk.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649.post-7483560435819084547</id><published>2009-05-11T16:27:00.005-04:00</published><updated>2009-05-12T13:02:50.006-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-12T13:02:50.006-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="git" /><category scheme="http://www.blogger.com/atom/ns#" term="cfug" /><category scheme="http://www.blogger.com/atom/ns#" term="presentation" /><title>Git Presentation</title><content type="html">I'm doing a git presentation and the &lt;a href="http://coldfusion.org"&gt;Lansing Coldfusion User Group&lt;/a&gt; tomorrow night. Anyone who wants to is welcome to &lt;a href="http://coldfusion.org/directions.cfm"&gt;come&lt;/a&gt; Below are the slides for the presentation.&lt;br /&gt;&lt;br /&gt;&lt;iframe src='http://docs.google.com/EmbedSlideshow?docid=dffs9ch6_59vhtvddd2' frameborder='0' width='410' height='342'&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;EDIT: I don't know why but google doesn't show all slides formatted right in mini mode. It's cut off some of the text and overlapped some things.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2238114716501996649-7483560435819084547?l=xenoterracide.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/xenoterracide/~4/JiIRa-HhGLw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/7483560435819084547/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2238114716501996649&amp;postID=7483560435819084547" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/7483560435819084547?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/7483560435819084547?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/xenoterracide/~3/JiIRa-HhGLw/git-presentation.html" title="Git Presentation" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="01821789362937826257" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><feedburner:origLink>http://xenoterracide.blogspot.com/2009/05/git-presentation.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8DRH0_fCp7ImA9WxJSF0Q.&quot;"><id>tag:blogger.com,1999:blog-2238114716501996649.post-388825865646012534</id><published>2009-05-06T19:10:00.010-04:00</published><updated>2009-05-08T11:51:15.344-04:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-08T11:51:15.344-04:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="school" /><category scheme="http://www.blogger.com/atom/ns#" term="security" /><title>Jeff Atwood fails at password security</title><content type="html">This was originally written for a class assignment and as that has not been modified (much) for the web. &lt;br /&gt;&lt;br /&gt;Jeff Atwood's password was compromised, the following includes a summary of how it happened, and how better security policies could have avoided it. This was written for Advanced Report Writing at Baker College.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Summary of Article&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On May 3, 2009, Jeff Atwood reports that his Stack Overflow password was compromised an that he received an email explaining the details. The following is an excerpt of that email, that was posted in his blog post.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;How? Well, there were two pieces of the puzzle, the password and the openid provider. I had a possible password; today your blog post    revealed the openid provider. I logged in, freaked out that it actually worked, then logged out. The only reason I had the password is because your password is totally inadequate for someone running a site like StackOverflow. I don't want to go into any more detail than that, but man - dictionary password! -A friend of the site &lt;cite&gt;(Atwood, 2009)&lt;/cite&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Jeff confirmed that the authentication logs for Stack Overflow did include a valid login from an unrecognized IP address. Although Jeff defends that his password was not a dictionary password. He also states that this particular OpenID account is for low security transactions online, and not particularly valuable. He digresses that because this account is a Stack Overflow moderation account, with special privileges, that he should have used a more secure login.&lt;br /&gt;&lt;br /&gt;Jeff goes on to explain, the various ways which the account could have been compromised. The first method he describes is the "educated guess". An educated guess basically uses what you know about someone to guess there password. The second is "Brute force dictionary attack". Jeff describes this as an attack vulnerable to non-rate limited logins where the password is a word out of the dictionary. The third method described is "interception". This method is basically where the password was captured at some point between the user and its destination, this could be kelogger, packet sniffing, and/or simple lack of encryption. The final method was "Impersonation" where a site pretends to be a different site, and  prompts you for credentials, this is also known as phishing.&lt;br /&gt;&lt;br /&gt;Jeff presents that none of these methods were used to compromise his account.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;I guess I can tell you, so you don't fall into this trap again. There's a site I help out with that doesn't salt their passwords. They're MD5 encrypted, but if you've got a dictionary password, it's very easy to use a reverse-MD5 site to get the original. I was able to figure out you were a user on the site some time back, and realized I could do this, if only I knew your openid provider... &lt;cite&gt;(Atwood, 2009)&lt;/cite&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jeff then re-iterates that he is to blame, and this is a problem with programmers at large. He then suggests that programmers should get out of the business of storing credentials, if they don't want to take responsibility for it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Evaluation of the Article&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jeff Atwood, is a fairly famous &lt;strike&gt;full time blogger&lt;/strike&gt; entrepreneur, software developer and blogger, and often seen as an authority in the community. He is self admittedly not an expert and these articles truly show this. Jeff's articles will undoubtedly lead many programmers to be confused and ignorant about the types of attacks possible and the type of attack that actually took place. One good thing does come from these articles however. It increases developer awareness (and hopefully user) awareness of just how easy it is to compromise a password and how inadequate there own authentication systems may be.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Jeff seems to not understand the basics of all the attacks he's described so I will elaborate on what they really are.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   &lt;strong&gt;1. Educated Guess: &lt;/strong&gt;Jeff mostly has this right, however, in the article he calls this in with social engineering. It is in no way shape or form social engineering. Social Engineering generally requires convincing someone to give you information. An educated guess requires that you use information you already have to break the password. In a sense this was used to gain the login name, although it was not a guess, it was known. I once used an educated guess to break into the account of someone based on there age, gender, race, and password hint, none of which I had to gain any additional information on. note: my cracking of this account was 100% legal as it was authorized by the computer owner.&lt;br /&gt;&lt;br /&gt;   &lt;strong&gt;2. Brute Force:&lt;/strong&gt; This is combined with 'dictionary attack' and although the two are often combined they are separate attacks. A brute force attack is simply generating account credentials (username password typically) with an automated computer program and sending them to the system you are attacking until it lets you in, until you are permanently blocked, or until you give up. A brute force attack is 100% successful unless somehow stopped as it will eventually try all combinations. The exception to this is when the password could be changed to a password already tried during the attack. This only works on a live system however, if the attacker manages to gain a copy of the password db they can attack at their leisure and may instead get a stale password. It can mostly be prevented by locking users out after a certain number of failed attempts.&lt;br /&gt;&lt;br /&gt;   &lt;strong&gt;3. Dictionary Attack:&lt;/strong&gt; A Dictionary attack, although it does reference words from an actual dictionary, such as Webster's, it is not limited to just those words or even words. Dictionary attacks consist of lists of words which may come from any language, including fictional ones like Star Trek's Klingon, slang, names and pop culture references. Because of modern security standards they will often append, and prepend numbers to the words, and even change case around. Dictionary attacks may also include coded words such as 1337 also know as leet or l337 or l33t, etc. 1337 is a substitution cipher popularized online which substitutes letters for numbers that slightly resemble letters. A dictionary attack is usually run before a brute force as it is much faster, and has a high probability of success compared to time used. It can be mostly prevented by forcing users passwords to be compared against known dictionaries (such as cracklib) and making sure their password isn't in them, and forcing them to pick something else if it is.&lt;br /&gt;&lt;br /&gt;   &lt;strong&gt;4. Interception:&lt;/strong&gt; Interception is another name for "the Man in the Middle" attack, which is&lt;br /&gt;what it more commonly goes by. Jeff seems to be under the assumption that "Man in the Middle" requires the attacker to get the credentials verbatim. "Man in the Middle" basically means getting the data after the user enters it and before it reaches it's destination, this include keyloggers, screen scrapers, and packet sniffers. it may include other methods I'm forgetting. "Man in the Middle" is easily prevented by user strong 'stream encryption' in which all data sent between the client and the host is encrypted, SSL is commonly used for this on websites, note the 'lock' icon, in your browser. This is different from hash encryption which is how the password is (should be) stored as it encrypts all data being transferred including the username and password hash.&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;5. Impersonation:&lt;/strong&gt; Or Phishing is a form of social engineering in which you pretend to be something you aren't and attempt to get people to give you sensitive data such as account credentials. It is most commonly done by creating a website which closely resembles the site for which you are trying to get credentials for, and then sending out emails to try to get people to log in.&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;6. Social Engineering:&lt;/strong&gt; Social Engineering is simply misrepresenting yourself to get information. It can go as far as full blown fraud, or as simply as talking a person into giving me what they may not even believe is sensitive data. One could for example talk to someone, get there name, mention that they knew a woman who married a man with that last name and ask for a mother maiden name, pretending like they knew her. A mothers maiden name is a highly common question to prove identity in account verification and password resets online. People have also dressed up and walked into nuclear power plants with clipboards making themselves look like they belonged there, and were never stopped. An IT guy asking for your password may also be social engineering, as you think you should trust him. Social Engineering may be used to get account credentials or to formulate an educated guess.&lt;br /&gt;&lt;br /&gt;    &lt;strong&gt;7. Rainbow Tables:&lt;/strong&gt; Rainbow Tables are databases of all possible straight password hashes up to a certain number of characters, and there corresponding passwords, these hashes may or may not be included with a dictionary attack, they typically include the full contents of a brute force. The largest Rainbow tables includes all possible combinations up to 8 characters for md5 hashes. These make reversing a hash from a password instant and easy. It still requires the attacker get the hash in the first place, this is usually done by "man in the middle", SQL Injection, or compromising the database server. This can generally be avoided by salt-ing the hash making it more difficult for the attacker to get the original password.&lt;br /&gt;&lt;br /&gt;Jeff's Password was lost due to a combination of attacks. Firstly was public information, his 'user' credentials (OpenID) were publicly available (this isn't actually an attack), the second was "Man in the Middle", as obviously no one published the hash, so it had to be gotten somehow enroute (unless the db was cracked). The third was "Rainbow Tables" which allowed the attacker to reverse the hash into a real password. I don't believe that Atwood truly understands the attack vector's, and I don't think that people should read these articles for learning purposes. It is good though that he accepts some responsibility for lack of proper security practices on a sensitive account.&lt;br /&gt;&lt;br /&gt;In my opinion this is what's wrong with programmers, they think they know better and instead of learning how to do it correctly and all the things that could go wrong, they just go ahead and do.&lt;br /&gt;&lt;br /&gt;Atwood, J. (2009). I Just Logged In As You. Retrieved&lt;br /&gt;     May 6 2009, from Coding Horror&lt;br /&gt;     Web site: &lt;a href="http://www.codinghorror.com/blog/archives/001262.html"&gt;www.codinghorror.com/blog/archives/001262.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Atwood, J. (2009). I Just Logged In As You: How it happened. Retrieved&lt;br /&gt;     May 6 2009, from Coding Horror&lt;br /&gt;     Web site: &lt;a href="http://www.codinghorror.com/blog/archives/001263.html"&gt;www.codinghorror.com/blog/archives/001263.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;EDIT: Sincerest apologies for originally spelling Atwood as Attwood and spreading misinformation about about his profession. Thanks to Stu for pointing this out. For some reason I thought those were both true, and did not check them, since I've been reading Coding Horror for at least a year.&lt;br /&gt;&lt;br /&gt;@Grade I'll post it next week when I get it&lt;br /&gt;&lt;br /&gt;@Spelling errors, I had reinstalled my system the morning of writing and apparently had forgotten to configure it. They should be corrected now.&lt;br /&gt;&lt;br /&gt;@Assignment the assignment was not an essay but the evaluation of an article, and its content. It didn't require me to cite any sources for why I agree or disagree with the article.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2238114716501996649-388825865646012534?l=xenoterracide.blogspot.com'/&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/xenoterracide/~4/oVReQbeGTtM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://xenoterracide.blogspot.com/feeds/388825865646012534/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=2238114716501996649&amp;postID=388825865646012534" title="8 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/388825865646012534?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/2238114716501996649/posts/default/388825865646012534?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/xenoterracide/~3/oVReQbeGTtM/jeff-attwood-fails-at-password-security.html" title="Jeff Atwood fails at password security" /><author><name>xenoterracide</name><uri>http://www.blogger.com/profile/08185254298048097278</uri><email>xenoterracide@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="01821789362937826257" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">8</thr:total><feedburner:origLink>http://xenoterracide.blogspot.com/2009/05/jeff-attwood-fails-at-password-security.html</feedburner:origLink></entry></feed>
