<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Adam Caudill&#039;s Blog &#187; Technology</title>
	<atom:link href="http://adamcaudill.com/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://adamcaudill.com</link>
	<description>Adam&#039;s view on technology, software development, and world domination.</description>
	<lastBuildDate>Sat, 04 Feb 2012 19:01:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>IIN (BIN) Database</title>
		<link>http://adamcaudill.com/2012/01/26/iin-bin-database/</link>
		<comments>http://adamcaudill.com/2012/01/26/iin-bin-database/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 17:58:28 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1087</guid>
		<description><![CDATA[<p>An <a href="http://en.wikipedia.org/wiki/ISO/IEC_7812">Issuer Identification Number</a> (IIN, more commonly called a BIN) is the first 6 digits of a credit or debit card, and it identifies the bank that issued it &#8211; and if you want to know if a number is a real credit card or just a bunch or random digits, it&#8217;s a huge help. While [...]]]></description>
			<content:encoded><![CDATA[<p>An <a href="http://en.wikipedia.org/wiki/ISO/IEC_7812">Issuer Identification Number</a> (IIN, more commonly called a BIN) is the first 6 digits of a credit or debit card, and it identifies the bank that issued it &#8211; and if you want to know if a number is a real credit card or just a bunch or random digits, it&#8217;s a huge help. While credit card numbers do use the <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Luhn algorithm</a> (mod 10 check) to see if the number is valid, it still produces a huge false-positive rate.</p>
<p>For an application like <a href="https://github.com/adamcaudill/ccsrch">ccsrch</a>, having this data available would be very handy to reduce false positives when scanning a large file system (scanning a large server produces a huge number of possible hits), but for what I would call fairly misguided reasons, the official registrar of these numbers (the <a href="http://www.aba.com/default.htm">ABA</a>) doesn&#8217;t make this data publicly available. As a result many people have pulled together what data they could find and made it freely available.</p>
<p>So I&#8217;ll add my name to that list.</p>
<p>I&#8217;ve pulled data from many public sources (sorry, I didn&#8217;t keep very good notes as to the sources) and cleaned it up to a reasonable point. All told, I&#8217;ve probably spent 40 hours or more cleaning this data up and getting it to a usable state. It contains over 60,000 entries, including major credit cards (Visa, MasterCard, Amex, Discover) as well as a few merchant entries.</p>
<p>Each record contains the following:</p>
<ul>
<li>IIN</li>
<li>Type (Mastercard, Visa, Visa Credit, etc.)</li>
<li>Name (Issuer name)</li>
<li>Length</li>
</ul>
<p><strong>Data Quality</strong></p>
<p>It&#8217;s not perfect. It&#8217;s from public sources so there may be errors, and there are some duplicates from cases where I wasn&#8217;t able to determine who the IIN actually belongs to. I&#8217;ve also updated for name changes and mergers where possible, but I&#8217;m sure I&#8217;ve missed a few and there are some where the assets where split, so I don&#8217;t know who the correct owner actually is (Washing Mutual being the leading example of this).</p>
<p>In general, I leaned to the side of caution &#8211; so if I didn&#8217;t know for sure, I left the duplicate in.</p>
<p>If you need absolutely correct data &#8211; contact the ABA, they are the only source that can give you the completely accurate listing. If you need to have a decent idea if a number is valid for most cases &#8211; I would say that this data is good enough.</p>
<p><strong>Warranty</strong></p>
<p>Just to make it really, really, really clear: There is no guarantee that this data is accurate, that it won&#8217;t cause to lose your job, cause your house to burn down, or cause Rebecca Black&#8217;s <a href="http://www.youtube.com/watch?v=kfVsfOSbJY0">Friday</a> to get stuck in your head (yup, you&#8217;re welcome <img src='http://adamcaudill.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p><strong>Copyright</strong></p>
<p>Based on my understanding of US copyright law, it is my understanding that this data is not subject to copyright as it is a compilation of facts and doesn&#8217;t constitute an original expression. Thus, to the best of my knowledge, this data is in the public domain.</p>
<p><strong>Download</strong></p>
<p><a href="http://adamcaudill.com/files/2012/01/IIN.zip">Here</a> (zipped CSV)</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2012/01/26/iin-bin-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Poking Mykonos</title>
		<link>http://adamcaudill.com/2012/01/23/poking-mykonos/</link>
		<comments>http://adamcaudill.com/2012/01/23/poking-mykonos/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 03:28:56 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Mykonos]]></category>
		<category><![CDATA[PCI]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1066</guid>
		<description><![CDATA[<p>While checking on the latest updates in the start-up world from TechCrunch, I came across <a href="http://techcrunch.com/2012/01/23/mykonos-helps-companies-battle-hackers-raises-4-million/">their article</a> on <a href="http://www.mykonossoftware.com/">Mykonos</a>; the important part of their article (at least for me), is this:</p> <p style="padding-left: 30px;">Mykonos’s Web Security product uses deception to “detect, confuse, slow down and prevent attackers” in real-time in order to help [...]]]></description>
			<content:encoded><![CDATA[<p>While checking on the latest updates in the start-up world from TechCrunch, I came across <a href="http://techcrunch.com/2012/01/23/mykonos-helps-companies-battle-hackers-raises-4-million/">their article</a> on <a href="http://www.mykonossoftware.com/">Mykonos</a>; the important part of their article (at least for me), is this:</p>
<p style="padding-left: 30px;"><em>Mykonos’s Web Security product uses deception to “detect, confuse, slow down and prevent attackers” in real-time in order to help companies protect their websites and Web apps from malicious hacker and proactively prevent fraud and theft.</em></p>
<p>A couple of minutes of reading, and my interest was piqued &#8211; to say the least. The thing that most interested me was the claim of no false positives, while they do <a href="http://www.mykonossoftware.com/early-detection.php">talk about it</a> &#8211; I really wanted to see it for myself. Assuming they used their own product to protect their site, I took a few minutes to see what I could find &#8211; and find I did.</p>
<p>The first thing I did was a view-source to see what I could learn about their site &#8211; mainly to see if there were any obvious signs of using one CMS or another. The first thing that jumps out at me is this from the HTML:</p>
<pre> 
&lt;!-- InstanceBegin template="/Templates/mykonos.dwt.php"
     codeOutsideHTMLIsLocked="false" --&gt;</pre>
<p>So, this tells us they are using Dreamweaver, and the name of the template. So, the next question is, does that <a href="http://www.mykonossoftware.com/Templates/"><code>/Templates/</code></a> directory exist on the server?</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-23_1930.png" alt="File Listing" width="462" height="305" /></p>
<p>Yup.</p>
<p>So, not only does it exist, they have directory listings turned on &#8211; which to me was a real shock. Unfortunately for us though, these files are named with the <code>.php</code> extension and not the <code>.dwt</code> I was hoping for, so we can&#8217;t get much useful from them.</p>
<p>So, from looking at the source of the home page, we can see that the css files are stored in a <a href="http://www.mykonossoftware.com/css/"><code>/css/</code></a> directory &#8211; maybe that&#8217;ll be interesting.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-23_1935.png" alt="File Listing" width="479" height="405" /></p>
<p>It&#8217;s there, and like last time, we can see all of the files. While CSS files are of no real interest, the <a href="http://www.mykonossoftware.com/css/_notes/"><code>/_notes/</code></a> directory is, because it&#8217;ll contain a file called <code>dwsync.xml</code> - which can be quite interesting (since we knew they are using Dreamweaver, it&#8217;s not too surprising to see this). This file contains data about the last time the site was pushed from Dreamweaver, and will contain one entry per file, and looks like this:</p>
<pre class="brush: xml; title: ; notranslate">

&lt;file name=&quot;style.css&quot;
 server=&quot;ftp.belincreative.com/public_html/clients/mykonos/site/&quot;
 local=&quot;129651858311162109&quot;
 remote=&quot;129651936600000000&quot;/&gt;</pre>
<p>The most interesting thing there is the <code>server</code> entry, as it tells us a little about the file-system; which if we were really trying to attack the site, knowing that would be handy. The other thing of interest is that when you see one <code>/_notes/</code> directory, you&#8217;ll see lots more, as Dreamweaver likes to put them everywhere.</p>
<p>So, let&#8217;s see if there&#8217;s one in the root &#8211; that should be the most interesting one. Sure enough: <code><a href="http://www.mykonossoftware.com/_notes/">/_notes/</a></code></p>
<p><img class="aligncenter" title="File Listing" src="http://adamcaudill.com/files/2012-01-23_1949.png" alt="" width="469" height="291" /></p>
<p>This one has a few interesting entries, such as a <a href="http://www.mykonossoftware.com/TechSpecsWhatsNew.html">PHP file</a> that is named with an HTML extension &#8211; causing the code not to execute. Viewing the source of that file in the browser exposes the <code><a href="http://www.mykonossoftware.com/inc/">/inc/</a></code> directory; potentially interesting, but yields little information. The next file I tried (knowing it would be way too easy if it worked), was the <code><a href="http://www.mykonossoftware.com/.htaccess">.htaccess</a></code> file:</p>
<pre class="brush: plain; title: ; notranslate">
&lt;files &quot;webadmin.pl&quot;&gt;
	AuthUserFile /usr/local/www/public_html/.htpasswd
	AuthType Basic
	AuthName &quot;Server Administration&quot;
	require valid-user
&lt;/files&gt;
</pre>
<p>Now, at first glance things look too good to be true &#8211; and that&#8217;s because they are. Look at the path in <code>AuthUserFile</code> and compare that to the entries from the <code>dwsync.xml</code> files. This <code>.htaccess</code> file is part of the trap, which is all but confirmed if you try to go to the <code><a href="http://www.mykonossoftware.com/.htpasswd">.htpasswd</a></code> file which shouldn&#8217;t work, since the path isn&#8217;t what we would expect.</p>
<p>Now, while mucking around looking at the aforementioned files, and others such as <code><a href="http://www.mykonossoftware.com/robots.txt">robots.txt</a></code>, I would periodically see this, which I would assume is part of that &#8220;no false positive&#8221; promise:</p>
<p><img class="aligncenter" title="Capcha" src="http://adamcaudill.com/files/2012-01-23_1716.png" alt="" width="597" height="202" /></p>
<p>I was hoping to run into the firewall (for lack of a better term) &#8211; looks like I got my wish; though since I wasn&#8217;t using anything automated and was just poking around by hand, it didn&#8217;t have any impact. Not terribly exciting, but it did provide some insight into what they are doing.</p>
<p>So far we&#8217;ve found a few interesting things, and bumped into their firewall, but that all pales in comparison to the last entry in the <code>dwsync.xml</code> file:</p>
<pre class="brush: xml; title: ; notranslate">

&lt;file name=&quot;local-site.zip&quot;
 server=&quot;ftp.belincreative.com/public_html/clients/mykonos/site/&quot;
 local=&quot;129695851046591796&quot;
 remote=&quot;129695888400000000&quot;/&gt;
</pre>
<p>When I saw the file name I was shocked &#8211; could it really be? But I was right. It&#8217;s a 59MB file containing everything on the site &#8211; all the PHP and everything else. Out of curiosity, I compared the <code>.htaccess</code> to that in the zip file, as expected it&#8217;s quite different and more believable:</p>
<pre class="brush: plain; title: ; notranslate">

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^mykonossoftware.com [nc]
rewriterule ^(.*)$ http://www.mykonossoftware.com/$1 [r=301,nc]
</pre>
<p>That confirms what I suspected, the file I saw earlier was just part of the trap.</p>
<p><strong>So what have we learned?</strong></p>
<p>1). Mykonos makes a really cool product, and had I not known what I was up against (and thus less skeptical about everything) it probably would have killed a lot of my time &#8211; just as intended.</p>
<p>2). No matter what you put in front or your site or application,<em> human mistakes are still your greatest risk</em>. A second set of eyes and a little paranoia go a long way in securing your systems, and stopping hackers.</p>
<p>3). Mykonos was either lucky or smart in that there was little on their site that shouldn&#8217;t be seen by the public. If they were using a CMS with a database back-end instead of simple (mostly-)static pages, this could have been worse. If they had source code or other valuable IP on the server, a mistake like this could be devastating.</p>
<p>4). Mykonos should take some of their new-found cash and hire somebody to finish the audit of their site that I started. <img src='http://adamcaudill.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><em>Note:</em> I notified Mykonos about that zip file before posting this (through a couple of channels), and I&#8217;m intentionally not linking to it. While I didn&#8217;t see anything in there that would be an issue to be publicly disclosed, I&#8217;m sure they don&#8217;t want it getting out. Hopefully by the time anybody reads this, they will have taken care of that file.</p>
<p><em><strong>Update:</strong></em> As expect, they&#8217;ve cleaned up the files I mentioned &#8211; and a bit more. In a <a href="http://twitter.com/#!/dkoretz/status/162033710202486786">tweet</a> from the company&#8217;s CEO, <a href="http://www.davidkoretz.com/">David Koretz</a>, he mentioned that they had left a surprise for me. So I went to my starting point (the <code>/Templates/</code> directory), and was greeted with this:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-25_0005.png" alt="Welcome &amp; Thanks" width="629" height="201" /></p>
<p style="text-align: left;">Yeah, cool product and cool people. I&#8217;m impressed.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2012/01/23/poking-mykonos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Chrome Leaking Credit Card Data?</title>
		<link>http://adamcaudill.com/2012/01/15/google-chrome-leaking-credit-card-data/</link>
		<comments>http://adamcaudill.com/2012/01/15/google-chrome-leaking-credit-card-data/#comments</comments>
		<pubDate>Sun, 15 Jan 2012 16:04:04 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[CCSRCH]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[PCI]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1047</guid>
		<description><![CDATA[<p>While testing <a href="https://github.com/adamcaudill/ccsrch">ccsrch</a> I noticed a number that looked familiar &#8211; my debit card number. Now, being just a little paranoid, I don&#8217;t leave such information on my system unencrypted &#8211; so seeing it was a real surprise. But, here&#8217;s the real kicker: it was on my work PC, where it never should have been. [...]]]></description>
			<content:encoded><![CDATA[<p>While testing <a href="https://github.com/adamcaudill/ccsrch">ccsrch</a> I noticed a number that looked familiar &#8211; my debit card number. Now, being just a little paranoid, I don&#8217;t leave such information on my system unencrypted &#8211; so seeing it was a real surprise. But, here&#8217;s the real kicker: it was on my work PC, where it never should have been. But there it was, plain as day, in clear text. I spent a couple of minutes staring at the log trying to figure out why it would be there.</p>
<p>Once I saw the file name, a sinking feeling set in and the answer became clear:</p>
<p style="padding-left: 30px;"><code>%LocalAppData%\Google\<wbr>Chrome\User Data\Default\Sync Data\SyncData.sqlite3</wbr></code></p>
<p>So it turns out that it&#8217;s Chrome&#8217;s <a href="http://support.google.com/chrome/bin/answer.py?hl=en&amp;answer=165139">sync</a> feature that was saving my information, but why?</p>
<p>It turns out that auto-fill data is synced with your Google account (if you&#8217;re signed in and have the feature enable, of course), and all of the computers you&#8217;re signed into &#8211; and by default, without the benefit of encryption. This file may contain any number of things, from mine I was able to extract the following:</p>
<ul>
<li>Full name</li>
<li>Wife&#8217;s full name</li>
<li>Date of birth</li>
<li>Wife&#8217;s date of birth</li>
<li>Social Security Number</li>
<li>Multiple credit card numbers</li>
<li>Multiple <a href="http://en.wikipedia.org/wiki/Card_security_code">CVV</a>s</li>
<li>Bank account &amp; routing number</li>
</ul>
<p>Not to mention quite a few websites I&#8217;ve been to, various addresses, employer&#8217;s name and other various useful tidbits. All would be quite useful for identity theft or highly targeted <a href="http://www.fbi.gov/news/stories/2009/april/spearphishing_040109">spear phishing</a>.</p>
<p>Now am I saying that syncing auto-fill is bad? No, not at all. It&#8217;s a very useful time saver, but what takes it from a useful feature to security issue is the fact that by default, this <em>data isn&#8217;t encrypted</em>!</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-15_0905.png" alt="Default Encryption Setting" width="500" height="112" /></p>
<p><strong>What are the risks?</strong></p>
<p>There are three significant risks I see here:</p>
<p>1). <em>Disclosure to less trusted systems</em>:</p>
<p>In my case, I trust my laptop to be secure; between full-disk encryption (via <a href="http://www.truecrypt.org/">TrueCrypt</a>) and other precautions, I know that I don&#8217;t have too much to worry about. On the other hard, my Work PC is on a corporate domain, and at least a couple dozen people have permissions sufficient to access my personal files &#8211; thus I don&#8217;t trust anything too valuable on it.</p>
<p>Now because of the fact that this feature is insecure by default, that data is exposed to a less trusted system.</p>
<p>It can also go the other way: a number of auto-fill entries on my personal laptop were from forms on internal-only applications that only my Work PC would be able to access. So this means that anything sensitive could be leaked to home networks which are typically less secure than corporate environments. If you routinely handle PCI, HIPAA, or other restricted information &#8211; this type of leak could be a major issue.</p>
<p>2). <em>Spear Phishing</em>:</p>
<p>Let&#8217;s imagine a scenario:</p>
<p style="padding-left: 30px;">You work for a defense contractor and I work for a foreign intelligence agency. Through some targeted attacks I manage to penetrate your home network, but have been unable to make it into your corporate network. I grab the sync database file from your home PC and extract one of your credit card numbers. I look up the <a href="http://en.wikipedia.org/wiki/List_of_Issuer_Identification_Numbers">IIN</a> and find out what bank the card is from. Once I have this, I build a PDF with the latest 0day exploit, and send it with a convincing subject line:</p>
<p style="padding-left: 60px;">&#8220;Important Information about your Bank of America credit card ending in 7850&#8243;</p>
<p style="padding-left: 30px;">Normally you&#8217;d dismiss it as spam, but the last four digits are right &#8211; so you open it, just in case. The exploit kicks in. I&#8217;m in, you&#8217;re done.</p>
<p>This is just a simple and quite contrived example, but you get the idea.</p>
<p>3). <em>Google Data Mining</em>:</p>
<p>This is the most paranoid and least likely, but given Google&#8217;s issues in controlling their people &#8211; I&#8217;d say not impossible (see <a href="http://www.electronista.com/articles/10/05/14/google.admits.collecting.wi.fi.info.with.map.team/">here</a>, <a href="http://searchengineland.com/google-chrome-page-will-have-pagerank-reduced-due-to-sponsored-posts-106551">here</a>, and <a href="http://boingboing.net/2012/01/13/google-fraudulently-solicits-f.html">here</a>).</p>
<p>Just for a moment, think about the fact that Google has the following:</p>
<ul>
<li>Your account data (name, email, etc.)</li>
<li>Your auto-fill history (see the list of items I found above)</li>
<li>Tons of data from their other services</li>
<li>At least parts of your browsing history, if not much of it</li>
<li>Engineers that truly enjoy data mining</li>
</ul>
<p>Most other companies I wouldn&#8217;t worry about; but knowing the people that Google hires, and the skill they have in manipulating data &#8211; you know that some engineer is using his <a href="http://www.nytimes.com/2007/10/21/jobs/21pre.html">20% time</a> to do this (or at least is wishing he could).</p>
<p>If nothing else, I know if I worked at Google &#8211; playing with this data would be tons of fun. <img src='http://adamcaudill.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>Want to see your data?</strong></p>
<p>To see what Chrome has saved about you, download <a href="http://sqlitebrowser.sourceforge.net/">SQLite Browser</a>, and open the file I mentioned above. Go to the &#8220;Browse Data&#8221; tab, and select the &#8220;metas&#8221; table. What you&#8217;re looking for is in the &#8220;non_unique_name&#8221; column (among other places). You should see something like this:</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-15_0942.png" alt="SQLite Browser" width="418" height="324" /></p>
<p>The entries starting with &#8220;autofill_entry&#8221; are the ones you are interested in, but you&#8217;ll likely find some of the other records interesting as well. If you see the word &#8220;encrypted&#8221; then your data is already encrypted, and you don&#8217;t have to worry about this.</p>
<p><strong>Is this a vulnerability in Chrome?</strong></p>
<p>No, not at all &#8211; though it was a mistake. They should encrypt everything by default, and not provide an option to do otherwise. There&#8217;s no reason to expose users to a potential security risk when there&#8217;s a simple fix. Security isn&#8217;t something users should have to opt-in to; and unless there&#8217;s a very good reason, they shouldn&#8217;t have a way to opt-out.</p>
<p>Google should understand security and the value of the data they hold; they should be more responsible for the data (and faith) people give them.</p>
<p><strong>How do I fix it?</strong></p>
<p>Simple, from the &#8220;wrench&#8221; menu, select Options -&gt; Personal Stuff -&gt; Sign In -&gt; Advanced&#8230; and then under &#8220;Encrypted data types&#8221; select &#8220;Encrypt all synced data&#8221; &#8211; and that&#8217;s it. After a couple of minutes the entries that were visible before will now just display the word &#8220;encrypted.&#8221;</p>
<p style="text-align: center;"><img class="aligncenter" src="http://adamcaudill.com/files/2012-01-15_0944.png" alt="Encrypt all data" width="497" height="114" /></p>
<p>You can also go a step further, and get rid of this data by disabling auto-fill to ensure that potentially sensitive information isn&#8217;t being persisted when it shouldn&#8217;t be.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2012/01/15/google-chrome-leaking-credit-card-data/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CCSRCH v1.0.5</title>
		<link>http://adamcaudill.com/2012/01/14/ccsrch-v1-0-5/</link>
		<comments>http://adamcaudill.com/2012/01/14/ccsrch-v1-0-5/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 13:08:39 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[CCSRCH]]></category>
		<category><![CDATA[PCI]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1043</guid>
		<description><![CDATA[<p>During my employers annual <a href="https://www.pcisecuritystandards.org/">PCI</a> audit, our auditor requested that we perform a search of all of our servers for credit card data. He recommended a tool called &#8220;ccsrch&#8221; &#8211; which like many open source projects had a couple of issues, and hadn&#8217;t been updated in years. So, I fixed it.</p> <p>CCSRCH is a cross-platform, command-line [...]]]></description>
			<content:encoded><![CDATA[<p>During my employers annual <a href="https://www.pcisecuritystandards.org/">PCI</a> audit, our auditor requested that we perform a search of all of our servers for credit card data. He recommended a tool called &#8220;ccsrch&#8221; &#8211; which like many open source projects had a couple of issues, and hadn&#8217;t been updated in years. So, I fixed it.</p>
<p>CCSRCH is a cross-platform, command-line application that reads every file from the starting point passed in, and scans them for what looks like credit card numbers (and using the <a href="http://en.wikipedia.org/wiki/Luhn_algorithm">Luhn algorithm</a> to check each possible result). It&#8217;s fairly brute-force, but it gets the scans required for PCI &#8211; though I would be careful about using it during production hours, it can have a pretty significant impact on a server&#8217;s I/O performance.</p>
<p>I&#8217;ve forked the application and setup a new <a href="https://github.com/adamcaudill/ccsrch">ccsrch</a> project over at github (the original is on <a href="http://sourceforge.net/projects/ccsrch/">SourceForge</a>), and made a few modifications to better suit my needs (from the <a href="https://github.com/adamcaudill/ccsrch#readme">change log</a>):</p>
<ul>
<li>Added option to output the file name, and how many hits were found to the console when using -o (see -c in usage).</li>
<li>Added option to limit the number of results from a single file before going on to the next file (see -l in usage).</li>
<li>Added option to exclude certain file types from the scan (see -n in usage).</li>
<li>Fix for ignoring NULL, CR &amp; LF.</li>
<li>Ignore dash when scanning.</li>
<li>Exclude results with the last 8 digits repeating (very unlikely to be a real PAN).</li>
</ul>
<p>I&#8217;ve <a href="https://github.com/adamcaudill/ccsrch/downloads">uploaded</a> a Windows build of the new 1.0.5 release to github, and for *nix systems, you can just download the latest <a href="https://github.com/adamcaudill/ccsrch/tags">tag</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2012/01/14/ccsrch-v1-0-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SOPA Is Inevitable</title>
		<link>http://adamcaudill.com/2012/01/07/sopa-is-inevitable/</link>
		<comments>http://adamcaudill.com/2012/01/07/sopa-is-inevitable/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 07:10:53 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SOPA]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1036</guid>
		<description><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act">SOPA</a>, while it&#8217;s not likely to be passed as-is, I would be willing to bet money that something SOPA-like will be passed. It may be watered down with many of the most offending parts removed, but for those backing SOPA it&#8217;ll still be a real victory. For them getting it on the books, even [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://en.wikipedia.org/wiki/Stop_Online_Piracy_Act">SOPA</a>, while it&#8217;s not likely to be passed as-is, I would be willing to bet money that something SOPA-like will be passed. It may be watered down with many of the most offending parts removed, but for those backing SOPA it&#8217;ll still be a real victory. For them getting it on the books, even in a weakened form means it can be tweaked (and extended) later.</p>
<p>There&#8217;s been an amazing resistance to SOPA, from the <a href="http://arstechnica.com/tech-policy/news/2011/12/victory-boycott-forces-godaddy-to-drop-its-support-for-sopa.ars">boycott of GoDaddy</a> to public statements from celebrities such as <a href="http://www.popularmechanics.com/science/mythbusters/articles/mythbuster-adam-savage-sopa-could-destroy-the-internet-as-we-know-it-6620300">Adam Savage</a> &#8211; the public outcry against this horrid piece of legislation has been quite inspiring. But how often will you be able to get so many people to stand up and take action before they start to lose interest? How many times can you raise the troops before the numbers start to dwindle; how long before the celebrities start fearing they&#8217;ll be branded in the media as extremist or crazy? How many times can you raise the call of breaking the internet and freedom of speech before the public gets bored and goes to read about the latest Hollywood divorce instead?</p>
<p>Here&#8217;s how I see it going:</p>
<ol>
<li>Strip many of the worst parts of SOPA and get it through congress. By removing these offending pieces, those backing SOPA will try to make themselves look responsive to the community, and it&#8217;ll be played as a victory for the community in the media. All in all, if you aren&#8217;t paying attention it&#8217;ll look like a victory for the people.</li>
<li>Next year, introduce a bill to modify SOPA to change the wording here are there, edging it just a little closer to the original. If done carefully, it&#8217;ll be easy to dismiss those that try to stir up another outcry as over-reacting or even paranoid.</li>
<li>In a few years after a series of modifications, we have SOPA, just as broad and dangerous as originally intended &#8211; and the vast majority of people who fought SOPA would have no idea.</li>
</ol>
<p>If you have a financial motivation to get something like this passed, they key to success would be patience. Chip away slowly at <a href="http://www.chillingeffects.org/dmca512/">DMCA Safe Harbor</a> protections, at what requires a judge instead of an administrative action, at transparency so that any action ends up happening behind closed doors. In enough time you&#8217;ve established a law that gives the US Federal Government a massive amount of control of the internet, without oversight &#8211; all in a way designed to get offending web sites off the internet as quickly as possible. To say it would be ripe for abuse would be a massive understatement.</p>
<p>Am I being paranoid? I honestly hope so &#8211; I really hope that there aren&#8217;t people out there looking to limit the freedoms we cherish for their own profit, but the fact that SOPA was introduced in the first place makes that hard to believe.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2012/01/07/sopa-is-inevitable/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Masking Credit Cards for PCI</title>
		<link>http://adamcaudill.com/2011/10/20/masking-credit-cards-for-pci/</link>
		<comments>http://adamcaudill.com/2011/10/20/masking-credit-cards-for-pci/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 20:14:40 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Code Samples]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[PCI]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Tips and Tricks]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=1004</guid>
		<description><![CDATA[<p>PCI DSS, the security standard for companies that handle credit cards, defines a number of <a href="https://www.pcisecuritystandards.org/pdfs/pci_audit_procedures_v1-1.pdf">rules</a> as to how credit cards are handled. One of those rules, 3.3, is defined as follows:</p> <p style="padding-left: 30px;">Mask PAN when displayed (the first six and last four digits are the maximum number of digits to be displayed)</p> [...]]]></description>
			<content:encoded><![CDATA[<p>PCI DSS, the security standard for companies that handle credit cards, defines a number of <a href="https://www.pcisecuritystandards.org/pdfs/pci_audit_procedures_v1-1.pdf">rules</a> as to how credit cards are handled. One of those rules, 3.3, is defined as follows:</p>
<p style="padding-left: 30px;"><em>Mask PAN when displayed (the first six and last four digits are the maximum number of digits to be displayed)</em></p>
<p>So based on this requirement I assumed that the code to do this would be common and widely available; much to my surprise there are rather few samples that do this, and of those I found they only showed the last four (which when you are handling a lot of credit cards, searching for an account by the last four isn&#8217;t all that helpful) and were often rather fragile.</p>
<p>So I whipped this up, hopefully it&#8217;ll be useful to others.</p>
<div id="gist-1674453" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="k">public</span> <span class="k">static</span> <span class="kt">string</span> <span class="nf">MaskCreditCard</span><span class="p">(</span><span class="kt">string</span> <span class="k">value</span><span class="p">)</span></div><div class='line' id='LC2'><span class="p">{</span></div><div class='line' id='LC3'>&nbsp;&nbsp;<span class="k">const</span> <span class="kt">string</span> <span class="n">PATTERN</span> <span class="p">=</span> <span class="s">@&quot;\b(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|&quot;</span> <span class="p">+</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">@&quot;6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|&quot;</span> <span class="p">+</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="s">@&quot;[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})\b&quot;</span><span class="p">;</span></div><div class='line' id='LC6'>&nbsp;</div><div class='line' id='LC7'>&nbsp;&nbsp;<span class="n">var</span> <span class="n">replace</span> <span class="p">=</span> <span class="n">Regex</span><span class="p">.</span><span class="n">Replace</span><span class="p">(</span><span class="k">value</span><span class="p">,</span> <span class="n">PATTERN</span><span class="p">,</span> <span class="k">new</span> <span class="n">MatchEvaluator</span><span class="p">(</span><span class="n">match</span> <span class="p">=&gt;</span></div><div class='line' id='LC8'>&nbsp;&nbsp;<span class="p">{</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">var</span> <span class="n">num</span> <span class="p">=</span> <span class="n">match</span><span class="p">.</span><span class="n">ToString</span><span class="p">();</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">return</span> <span class="n">num</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="m">0</span><span class="p">,</span> <span class="m">6</span><span class="p">)</span> <span class="p">+</span> <span class="k">new</span> <span class="kt">string</span><span class="p">(</span><span class="sc">&#39;*&#39;</span><span class="p">,</span> <span class="n">num</span><span class="p">.</span><span class="n">Length</span> <span class="p">-</span> <span class="m">10</span><span class="p">)</span> <span class="p">+</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="n">num</span><span class="p">.</span><span class="n">Substring</span><span class="p">(</span><span class="n">num</span><span class="p">.</span><span class="n">Length</span> <span class="p">-</span> <span class="m">4</span><span class="p">);</span></div><div class='line' id='LC12'>&nbsp;&nbsp;<span class="p">}));</span></div><div class='line' id='LC13'>&nbsp;</div><div class='line' id='LC14'>&nbsp;&nbsp;<span class="k">return</span> <span class="n">replace</span><span class="p">;</span></div><div class='line' id='LC15'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1674453/570a38b70ef4441988a12fe282a64b81bde8be35/gistfile1.cs" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1674453#file_gistfile1.cs" style="float:right;margin-right:10px;color:#666">gistfile1.cs</a>
            <a href="https://gist.github.com/1674453">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>

<p>The regex pattern is from <a href="http://www.regular-expressions.info/creditcard.html">Regular-Expressions.info</a> and should detect most major cards.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2011/10/20/masking-credit-cards-for-pci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Cringely is wrong about Java</title>
		<link>http://adamcaudill.com/2011/10/15/why-cringely-is-wrong-about-java/</link>
		<comments>http://adamcaudill.com/2011/10/15/why-cringely-is-wrong-about-java/#comments</comments>
		<pubDate>Sat, 15 Oct 2011 19:47:52 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Business of Software]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=996</guid>
		<description><![CDATA[<p>A couple of days ago I was sent a link to Robert Cringely&#8217;s latest treatise:  <a href="http://www.cringely.com/2011/10/the-second-coming-of-java/">The second coming of Java</a> &#8211; and to say I disagreed was a bit of an understatement. To me, it represents a fundamental flaw in his perception of developers, and more importantly the economics of software development.</p> <p>The key to Cringely&#8217;s argument [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of days ago I was sent a link to Robert Cringely&#8217;s latest treatise:  <span style="direction: ltr;"><em><a href="http://www.cringely.com/2011/10/the-second-coming-of-java/">The second coming of Java</a></em> &#8211; and to say I disagreed was a bit of an understatement. To me, it represents a fundamental flaw in his perception of developers, and more importantly the economics of software development.</span></p>
<p>The key to Cringely&#8217;s argument comes down to this:</p>
<p style="padding-left: 30px;">When SSDs gain enough capacity there will be a shift from the Ruby world back to the Java world. Not for prototyping, because, well, it’s prototyping. But simply because the statement “<strong>Ruby is <em>incredibly</em> slow but I don’t care because my database is slower</strong>” will no longer be true.</p>
<p><!--EndFra-->What he&#8217;s missing here is the real reason people use frameworks like Rails; it&#8217;s not about it being Ruby, or being the latest cool thing &#8211; it&#8217;s about developer productivity. That&#8217;s it, and that&#8217;s all there is to it &#8211; Rails allows a developer to do more in less time. That&#8217;s one of the key reasons so many Java web developers jumped ship (though I can think of a few others), and what pushed Microsoft to invest so heavily in their <a href="http://www.asp.net/mvc">MVC framework</a>.</p>
<p>I could fully rehash the argument, but in what I consider to be one of Jeff Atwood&#8217;s best articles,  <span style="direction: ltr;"><em><a href="http://www.codinghorror.com/blog/2008/12/hardware-is-cheap-programmers-are-expensive.html">Hardware is Cheap, Programmers are Expensive</a></em>, he covers a key point to my argument &#8211; developer time is vastly more expensive than hardware. Atwood&#8217;s take on the issue is clear:</span></p>
<p style="padding-left: 30px;">Clearly, <strong>hardware is cheap, and programmers are expensive</strong>. Whenever you&#8217;re provided an opportunity to leverage that imbalance, it would be incredibly foolish not to.</p>
<p>When there&#8217;s a choice between developer productivity, and spending money on hardware &#8211; the conclusion should be the same. It&#8217;s much cheaper to throw more hardware at a slower framework than it is to invest more developer time in a faster framework. For any non-trivial application, throwing more front-end servers at it will always be cheaper than slowing the development process down with a non-productivity-centric toolkit.</p>
<p>It&#8217;s simple economics; server hardware is getting faster and cheaper, developer time is only getting more expensive.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2011/10/15/why-cringely-is-wrong-about-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pen-Testing Silverlight+RIA with SoapUI</title>
		<link>http://adamcaudill.com/2011/07/06/pen-testing-silverlightria-with-soapui/</link>
		<comments>http://adamcaudill.com/2011/07/06/pen-testing-silverlightria-with-soapui/#comments</comments>
		<pubDate>Wed, 06 Jul 2011 21:39:37 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Pen-test]]></category>
		<category><![CDATA[Silverlight]]></category>
		<category><![CDATA[SoapUI]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=957</guid>
		<description><![CDATA[<p>I was recently given the task of ensuring that a Silverlight+RIA application that could contain private information was secure for deployment to a public web site. So I started searching for automated pen-testing tools that could work against Microsoft&#8217;s Binary SOAP protocol (msbin1, a.k.a &#8220;application/soap+msbin1&#8220;) and found only disappointment. For various reasons, it&#8217;s significantly more complex to pen-test [...]]]></description>
			<content:encoded><![CDATA[<p>I was recently given the task of ensuring that a Silverlight+RIA application that could contain private information was secure for deployment to a public web site. So I started searching for automated pen-testing tools that could work against Microsoft&#8217;s Binary SOAP protocol (<code>msbin1</code>, a.k.a &#8220;<code>application/soap+msbin1</code>&#8220;) and found only disappointment. For various reasons, it&#8217;s significantly more complex to pen-test a application using <code>msbin1</code> than traditional <code>SOAP</code> + <code>WSDL</code>.</p>
<p>To properly test the services, I had to make a compromise: temporarily modify the application to expose a <code>SOAP</code> endpoint. While this changes the state of the application and thus reduces the validity of the tests, it does provide a reasonable way of testing the web services to ensure that they are behaving as intended.</p>
<p>The recently released <a href="http://www.soapui.org/About-SoapUI/go-pro.html">SoapUI Pro 4</a> adds new <a href="http://www.soapui.org/Security/getting-started.html">security testing tools</a> that makes this a viable (and attractive option). To get this working, there are a few small changes that need to be made to the solution:</p>
<p>First, you&#8217;ll need to add a reference to &#8220;<code>Microsoft.ServiceModel.DomainServices.Hosting.EndPoints</code>&#8221; which is part of the RIA Services Toolkit; this allows you to expose different End Points for the service such as <code>SOAP</code> and <code>OData</code>.</p>
<p>Next, you&#8217;ll want to add the following <code>configSections</code> entry to your <code>Web.config</code>:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;configuration&gt;
 &lt;configSections&gt;
   &lt;sectionGroup name=&quot;system.serviceModel&quot;&gt;
     &lt;section name=&quot;domainServices&quot;
      type=&quot;System.ServiceModel.DomainServices.Hosting.DomainServicesSection,
      System.ServiceModel.DomainServices.Hosting,
      Version=4.0.0.0,
      Culture=neutral,
      PublicKeyToken=31bf3856ad364e35&quot; /&gt;
   &lt;/sectionGroup&gt;
 &lt;/configSections&gt;
 ...
</pre>
<p>Finally, to expose the <code>SOAP</code> end point:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;configuration&gt;
 ...
 &lt;system.serviceModel&gt;
  ...
  &lt;domainServices&gt;
   &lt;endpoints&gt;
    &lt;add name=&quot;Soap&quot;
     type=&quot;Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
     Microsoft.ServiceModel.DomainServices.Hosting,
     Version=4.0.0.0,
     Culture=neutral, PublicKeyToken=31bf3856ad364e35&quot; /&gt;
   &lt;/endpoints&gt;
  &lt;/domainServices&gt;
  ...
</pre>
<p>Finally, just follow the <a href="http://www.soapui.org/Security/security-scans-overview.html">instructions</a> for SoapUI to setup your tests, and you can feel (just a little) more confident in your application. Passing with flying colors obviously doesn&#8217;t mean your application is bulletproof, but it helps to confirm that web service code is solid.</p>
<p>Now, while this does provide some insight into your application and should help find common issues, it&#8217;s not a replacement for a professional assessment by a qualified auditor. If you are handling credit cards or other highly targeted information, <em>please</em> consult a security specialist before a public deployment.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2011/07/06/pen-testing-silverlightria-with-soapui/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A brief look at the latest @LulzSec release</title>
		<link>http://adamcaudill.com/2011/06/16/a-brief-look-at-the-latest-lulzsec-release/</link>
		<comments>http://adamcaudill.com/2011/06/16/a-brief-look-at-the-latest-lulzsec-release/#comments</comments>
		<pubDate>Fri, 17 Jun 2011 00:01:41 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=864</guid>
		<description><![CDATA[<p>Earlier today, the hacker collective <a href="http://lulzsecurity.com/">Lulz Security</a> released a batch of 62,156 email/password combinations from unknown sites; I decided to take a look at the data and see if there was anything to be learned from it.</p> <p> #embedly_twitter_80203676{background:url(http://a0.twimg.com/profile_background_images/247525400/nyaaaan.png) #103361; padding:20px;} #embedly_twitter_80203676 p{background:#fff;padding:10px 12px 0px 12px;margin:0;min-height:48px;color:#000;font-size:18px;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_80203676 .embedly_tweet_content{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_80203676 p [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier today, the hacker collective <a href="http://lulzsecurity.com/">Lulz Security</a> released a batch of 62,156 email/password combinations from unknown sites; I decided to take a look at the data and see if there was anything to be learned from it.</p>
<p><!-- http://twitter.com/LulzSec/statuses/81327464156119040 -->
<div id='embedly_twitter_80203676' class='embedly_twitter'>
<style type='text/css'> #embedly_twitter_80203676{background:url(http://a0.twimg.com/profile_background_images/247525400/nyaaaan.png) #103361; padding:20px;} #embedly_twitter_80203676 p{background:#fff;padding:10px 12px 0px 12px;margin:0;min-height:48px;color:#000;font-size:18px;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_80203676 .embedly_tweet_content{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_80203676 p span.metadata{display:block;width:100%;clear:both;margin-top:0px;height:40px; padding-bottom: 12px;} #embedly_twitter_80203676 p span.metadata span.author{line-height:15px;color:#999;font-size:14px} #embedly_twitter_80203676 p span.metadata span.author a{line-height:15px;font-size:20px;vertical-align:middle} #embedly_twitter_80203676 p span.metadata span.author img{float:left;margin:0 10px 0 0px;width:48px;height:48px} #embedly_twitter_80203676 p a {color: #171cb3; text-decoration:none;} #embedly_twitter_80203676 p a:hover{text-decoration:underline} #embedly_twitter_80203676 .embedly_timestamp{font-size:13px;display:inline-block;margin-top: 5px;} #embedly_twitter_80203676 .components-above span.embedly_timestamp{font-size:10px;margin-top: 1px;line-height:12px} #embedly_twitter_80203676 a {color: #171cb3; text-decoration:none;} #embedly_twitter_80203676 a:hover{text-decoration:underline} #embedly_twitter_80203676 .tweet-screen-name {font-size: 14px; font-weight: bold;} #embedly_twitter_80203676 .tweet-full-name {padding-left: 4px; color: #999; font-size: 12px;} #embedly_twitter_80203676 .tweet-actions{margin-left: 10px;font-size:13px;display:inline-block;width:250px} #embedly_twitter_80203676 .components-above span.tweet-actions{font-size:10px} #embedly_twitter_80203676 .controls{line-height:12px!important} #embedly_twitter_80203676 .tweet-actions a {margin-left:5px} #embedly_twitter_80203676 .tweet-actions a b{font-weight:normal} #embedly_twitter_80203676 .components-above span.tweet-actions a b{vertical-align:baseline;line-height:12px} #embedly_twitter_80203676 .components-above .tweet-text{font-size:13px;vertical-align:baseline} #embedly_twitter_80203676 .tweet-image {float: left; width: 40px;} #embedly_twitter_80203676 .tweet-user-block-image {float: left; width: 48px; height: 48px} #embedly_twitter_80203676 .tweet-row {margin-left: 40px; margin-top: 3px;line-height: 17px;} #embedly_twitter_80203676 .tweet-user-block {margin-left: -40px;} #embedly_twitter_80203676 .stream-item {padding-bottom: 0px; margin-left: 12px;} #embedly_twitter_80203676 .simple-tweet-image img {margin-top: 4px;} #embedly_twitter_80203676 .simple-tweet-content {margin: 0 0 13px 0px; font-size: 14px; min-height:48px;} #embedly_twitter_80203676 .in-reply-to-border {border-color: #EBEBEB; border-style: solid; border-width: 1px 0 0;} #embedly_twitter_80203676 .in-reply-to-text {margin-left: 4px; padding-left: 8px; padding-right: 10px; color: #999; font-size: 12px;} #embedly_twitter_80203676 .tweet-actions i {background: transparent url(http://a2.twimg.com/a/1306889658/phoenix/img/sprite-icons.png) no-repeat;width:15px;height:15px;margin:0 4px -3px 3px;outline: none; text-indent:-99999px;vertical-align:baseline;display:inline-block;position:relative;} #embedly_twitter_80203676 .tweet-actions a.retweet-action i {background-position:-192px 0;} #embedly_twitter_80203676 .tweet-actions a.reply-action i {background-position:0 0;} #embedly_twitter_80203676 .tweet-actions a.favorite-action i {background-position:-32px 0;} </style>
<div class="embedly_tweet_content">
<div class="components-middle">
<p><span class='metadata'><span class='author'><a href='http://twitter.com/LulzSec'><img src='http://a1.twimg.com/profile_images/1341989664/somehwat-mad-completely-mad-u-mad-MADAD_normal.jpg' /></a><strong><a href='http://twitter.com/LulzSec'>@LulzSec</a></strong><br/>The Lulz Boat</span></span>And as always, LulzSec delivers: <a rel="nofollow" target="_blank" href="http://t.co/yQlcu5x">http://t.co/yQlcu5x</a> 62,000+ emails/passwords just for you. Enjoy.<br/><span class='embedly_timestamp'><a title='Thu Jun 16 11:49:13 +0000 2011' href='http://twitter.com/LulzSec/status/81327464156119040'>Jun 16</a> via web</span><span class="tweet-actions"><a href="https://twitter.com/intent/favorite?tweet_id=81327464156119040" class="favorite-action" title="Favorite"><span><i></i><b>Favorite</b></span></a><a href="https://twitter.com/intent/retweet?tweet_id=81327464156119040" class="retweet-action" title="Retweet"><span><i></i><b>Retweet</b></span></a><a href="https://twitter.com/intent/tweet?in_reply_to=81327464156119040" class="reply-action" title="Reply"><span><i></i><b>Reply</b></span></a></span></p>
</div>
</div>
</div>
<p>So, let&#8217;s take a look at a few stats:</p>
<p>Total Domains: ~5,230</p>
<p>Top 15 Domains:</p>
<p><img class="aligncenter" src="http://adamcaudill.com/files/2011-06-16_1922.png" alt="Top 15 Domains" width="403" height="279" /></p>
<p>There are over 50,000 unique passwords, but even with this many passwords, there&#8217;s still a few quite common &#8211; and very bad passwords in use:</p>
<p><img class="aligncenter" src="http://adamcaudill.com/files/2011-06-16_1936.png" alt="Top Passwords" width="392" height="262" /></p>
<p>While this is a fairly small release, the <a href="http://twitter.com/#!/LulzSec/">LulzSec</a> twitter stream has a number of entries like these:</p>
<p>http://twitter.com/#!/Murraaayyy/status/81483793927643137</p>
<p><!-- http://twitter.com/LulzSec/status/81334551686815745 -->
<div id='embedly_twitter_61972705' class='embedly_twitter'>
<style type='text/css'> #embedly_twitter_61972705{background:url(http://a0.twimg.com/profile_background_images/247525400/nyaaaan.png) #103361; padding:20px;} #embedly_twitter_61972705 p{background:#fff;padding:10px 12px 0px 12px;margin:0;min-height:48px;color:#000;font-size:18px;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_61972705 .embedly_tweet_content{background:#fff;padding:10px 12px 10px 12px;margin:0;min-height:48px;color:#000;font-size:18px !important;line-height:22px;-moz-border-radius:5px;-webkit-border-radius:5px} #embedly_twitter_61972705 p span.metadata{display:block;width:100%;clear:both;margin-top:0px;height:40px; padding-bottom: 12px;} #embedly_twitter_61972705 p span.metadata span.author{line-height:15px;color:#999;font-size:14px} #embedly_twitter_61972705 p span.metadata span.author a{line-height:15px;font-size:20px;vertical-align:middle} #embedly_twitter_61972705 p span.metadata span.author img{float:left;margin:0 10px 0 0px;width:48px;height:48px} #embedly_twitter_61972705 p a {color: #171cb3; text-decoration:none;} #embedly_twitter_61972705 p a:hover{text-decoration:underline} #embedly_twitter_61972705 .embedly_timestamp{font-size:13px;display:inline-block;margin-top: 5px;} #embedly_twitter_61972705 .components-above span.embedly_timestamp{font-size:10px;margin-top: 1px;line-height:12px} #embedly_twitter_61972705 a {color: #171cb3; text-decoration:none;} #embedly_twitter_61972705 a:hover{text-decoration:underline} #embedly_twitter_61972705 .tweet-screen-name {font-size: 14px; font-weight: bold;} #embedly_twitter_61972705 .tweet-full-name {padding-left: 4px; color: #999; font-size: 12px;} #embedly_twitter_61972705 .tweet-actions{margin-left: 10px;font-size:13px;display:inline-block;width:250px} #embedly_twitter_61972705 .components-above span.tweet-actions{font-size:10px} #embedly_twitter_61972705 .controls{line-height:12px!important} #embedly_twitter_61972705 .tweet-actions a {margin-left:5px} #embedly_twitter_61972705 .tweet-actions a b{font-weight:normal} #embedly_twitter_61972705 .components-above span.tweet-actions a b{vertical-align:baseline;line-height:12px} #embedly_twitter_61972705 .components-above .tweet-text{font-size:13px;vertical-align:baseline} #embedly_twitter_61972705 .tweet-image {float: left; width: 40px;} #embedly_twitter_61972705 .tweet-user-block-image {float: left; width: 48px; height: 48px} #embedly_twitter_61972705 .tweet-row {margin-left: 40px; margin-top: 3px;line-height: 17px;} #embedly_twitter_61972705 .tweet-user-block {margin-left: -40px;} #embedly_twitter_61972705 .stream-item {padding-bottom: 0px; margin-left: 12px;} #embedly_twitter_61972705 .simple-tweet-image img {margin-top: 4px;} #embedly_twitter_61972705 .simple-tweet-content {margin: 0 0 13px 0px; font-size: 14px; min-height:48px;} #embedly_twitter_61972705 .in-reply-to-border {border-color: #EBEBEB; border-style: solid; border-width: 1px 0 0;} #embedly_twitter_61972705 .in-reply-to-text {margin-left: 4px; padding-left: 8px; padding-right: 10px; color: #999; font-size: 12px;} #embedly_twitter_61972705 .tweet-actions i {background: transparent url(http://a2.twimg.com/a/1306889658/phoenix/img/sprite-icons.png) no-repeat;width:15px;height:15px;margin:0 4px -3px 3px;outline: none; text-indent:-99999px;vertical-align:baseline;display:inline-block;position:relative;} #embedly_twitter_61972705 .tweet-actions a.retweet-action i {background-position:-192px 0;} #embedly_twitter_61972705 .tweet-actions a.reply-action i {background-position:0 0;} #embedly_twitter_61972705 .tweet-actions a.favorite-action i {background-position:-32px 0;} </style>
<div class="embedly_tweet_content">
<div class="components-middle">
<p><span class='metadata'><span class='author'><a href='http://twitter.com/LulzSec'><img src='http://a1.twimg.com/profile_images/1341989664/somehwat-mad-completely-mad-u-mad-MADAD_normal.jpg' /></a><strong><a href='http://twitter.com/LulzSec'>@LulzSec</a></strong><br/>The Lulz Boat</span></span>There is some very angry level 85 WoW player cutting his wrists right now, thanks to @<a  href="http://twitter.com/MiracleJoe" title="MiracleJoe on Twitter">MiracleJoe</a> and LulzSec. Let it flow&#8230;<br/><span class='embedly_timestamp'><a title='Thu Jun 16 12:17:22 +0000 2011' href='http://twitter.com/LulzSec/status/81334551686815745'>Jun 16</a> via web</span><span class="tweet-actions"><a href="https://twitter.com/intent/favorite?tweet_id=81334551686815745" class="favorite-action" title="Favorite"><span><i></i><b>Favorite</b></span></a><a href="https://twitter.com/intent/retweet?tweet_id=81334551686815745" class="retweet-action" title="Retweet"><span><i></i><b>Retweet</b></span></a><a href="https://twitter.com/intent/tweet?in_reply_to=81334551686815745" class="reply-action" title="Reply"><span><i></i><b>Reply</b></span></a></span></p>
</div>
</div>
</div>
<p>There are several tweets about people accessing Facebook, Twitter, and even Amazon accounts &#8211; what&#8217;s so unfortunate here is that service providers could easily restrict accounts on lists like this to protect the users and greatly reduce the impact of these breaches.</p>
<p>Until people learn that password reuse is dangerous, this will keep happening.</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2011/06/16/a-brief-look-at-the-latest-lulzsec-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>bbPress 2.0 (beta-1) released!</title>
		<link>http://adamcaudill.com/2011/05/21/bbpress-2-0-beta-1-released/</link>
		<comments>http://adamcaudill.com/2011/05/21/bbpress-2-0-beta-1-released/#comments</comments>
		<pubDate>Sat, 21 May 2011 18:25:18 +0000</pubDate>
		<dc:creator>Adam Caudill</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[bbPress]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://adamcaudill.com/?p=833</guid>
		<description><![CDATA[<p>This morning, the latest version of my favorite forum software, bbPress, was <a href="http://bbpress.org/blog/2011/05/bbpress-2-0-beta-1/">released</a>. While this is a beta and not a final release, it&#8217;s still a major event for the project: this release is in the form of a WordPress plugin, instead of a stand-alone application as it&#8217;s been in the past. In December [...]]]></description>
			<content:encoded><![CDATA[<p>This morning, the latest version of my favorite forum software, bbPress, was <a href="http://bbpress.org/blog/2011/05/bbpress-2-0-beta-1/">released</a>. While this is a beta and not a final release, it&#8217;s still a major event for the project: this release is in the form of a WordPress plugin, instead of a stand-alone application as it&#8217;s been in the past. In December 2009 <a href="http://adamcaudill.com/2009/12/16/bbpress-is-the-end-near/">I wrote about this decision</a> &#8211; and at the time I was rather disappointed with the change in direction; but now my views have changed. I&#8217;m also excited to see that <a href="http://ma.tt/">Matt</a> and his company, <a href="http://automattic.com/">Automattic</a> have decided to invest the time and money needed to make this happen; there for a while it looked like bbPress really was dying.</p>
<p>Thanks to services like <a href="http://stackexchange.com/">StackExchange</a> and its numerous clones, it seems the days of standalone forums are numbered; when combined with the increasing strength of WordPress as a full-blown CMS, this move actually makes a lot of sense.</p>
<p>I&#8217;m excited both as a user and developer &#8211; this opens many new doors from both perspectives, and will certainly increase adoption of the software, as integration with the current version is <a href="http://adamcaudill.com/2011/03/06/bbpress-wordpress-3-1-registration-issues/">a bit tricky</a>.</p>
<p>Congratulations to the entire team on this release; it really is a major milestone for the project!</p>
]]></content:encoded>
			<wfw:commentRss>http://adamcaudill.com/2011/05/21/bbpress-2-0-beta-1-released/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

