<?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>TrueJournals &#187; brainstorm</title>
	<atom:link href="http://truejournals.com/tags/brainstorm/feed/" rel="self" type="application/rss+xml" />
	<link>http://truejournals.com</link>
	<description>College student; Engineer; Programmer; Nerd.</description>
	<lastBuildDate>Mon, 18 Jul 2011 04:24:51 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Comcast&#8217;s Caller ID</title>
		<link>http://truejournals.com/2009/05/23/comcasts-caller-id/</link>
		<comments>http://truejournals.com/2009/05/23/comcasts-caller-id/#comments</comments>
		<pubDate>Sat, 23 May 2009 22:22:38 +0000</pubDate>
		<dc:creator>TrueJournals</dc:creator>
				<category><![CDATA[thoughts]]></category>
		<category><![CDATA[brainstorm]]></category>
		<category><![CDATA[caller id]]></category>
		<category><![CDATA[comcast]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://truejournals.com/?p=83</guid>
		<description><![CDATA[Comcast has recently added a new feature to their digital voice service: caller ID anywhere.  Simply download a program on your computer, enter your comcast.net username and password, and you&#8217;ll get a small alert any time you get a call.  The same system allows comcast to show caller ID alerts on your TV. So, how [...]]]></description>
			<content:encoded><![CDATA[<p>Comcast has recently added a new feature to their digital voice service: caller ID anywhere.  Simply download a program on your computer, enter your comcast.net username and password, and you&#8217;ll get a small alert any time you get a call.  The same system allows comcast to show caller ID alerts on your TV.</p>
<p>So, how does this work?  Did comcast come up with some super-secret way to encode this data so no one but them can use it?  Nope; they&#8217;re simply using XMPP.</p>
<p>For those unaware, XMPP is a very nice concept: an open messaging protocol.  This means that companies don&#8217;t need to invent their own protocol, or shell out big bucks to use another protocol.  Just grab a server and client, and you have an instant messaging system.  XMPP is also designed to be expandible.  Is there a feature you need that it&#8217;s missing?  Just code it in, following the current specifications.  The problem with this is that different clients can conform to different specifications for things that aren&#8217;t part of the official protocol, but that&#8217;s another discussion.</p>
<p>Comcast decided to not reinvent the wheel, and just use XMPP, with a little twist.  If you already know a bit about XMPP, I&#8217;ll give you the stanza as a client receives it:<span id="more-83"></span></p>
<blockquote><p>&lt;message to=&#8221;bob.graese@comcast.net/comcast&#8221; from=&#8221;callerid_alert@comcast.net/wcdc01b&#8221; id=&#8221;sn-30552863&#8243; type=&#8221;headline&#8221;&gt;&lt;CInfo&gt;3NoAaS45q2vvGEmdgNb35TReIbQcE7F5d4vtkBu0l1bsyVdLRr3VxaTyWbV<br />
nyXpEIgjAs1QbBV2CK1HJjIb+yvTDOMXh5uDGh+Q552jyV6vxPM10+tlhNBfTEvNjB7QJnTHkd2Mmj5<br />
Cl3JCdoRRw8/RTGSzDGrSQwLAmpht6GmS7DNMGcHc=&lt;/CInfo&gt;&lt;/message&gt;</p></blockquote>
<p>(The line breaks above have been inserted by me in order to not destroy the layout)  So, what&#8217;s all this saying?  When your phone rings, comcast sends you a message over the XMPP protocol.  This message goes TO (your_main_account)@comcast.net, using the resource &#8220;comcast&#8221;, and comes FROM callerid_alert@comcast.net (very original naming), with a little resource tacked on the end there.  Each message has a unique ID, and a tag saying that the message is a &#8220;headline&#8221; (I&#8217;m not sure on the specifics of this, I&#8217;m guessing this would be used for news items in a XMPP client).  Then, Comcast starts the non-standard part.</p>
<p>When sending an IM over XMPP, there&#8217;s usually a body tag inside the message tag.  However, Comcast has invented a CInfo tag, which isn&#8217;t part of the XMPP specification.  Inside, there&#8217;s a long, encoded string.  Unfortunately, I haven&#8217;t worked out how they encode it (I&#8217;ll be working on that in the coming days; Any ideas?  Let me know!)</p>
<p>So, what does this mean?  It means that everything is unsecure (except the CInfo tag).  Theoretically, if comcast&#8217;s programming is dumb enough, I could send a caller ID message to any comcast user, and have it display on their TV and computer, even though their phone isn&#8217;t ringing.  Or, I could call their house, then send them a different caller ID message, and spoof my caller ID info.</p>
<p>Of course, this all hinges on the assumption that comcast figured no one would think of this.  I&#8217;m guessing that Comcast doesn&#8217;t check who the message is FROM.  If they do, and it needs to be from callerid_alert@comcast.net, then none of this will work.  However, if they don&#8217;t check, this could be a fun security excersise.</p>
<p>But first, I need to decode the information inside CInfo.  I don&#8217;t have much security expertise, so I can&#8217;t guarantee any progress on this.  If you have an idea, please let me know.  If you figure it out on your own, I&#8217;d also like to know.  If you use my ideas to expand into your own project, a small link is all I ask.</p>
<p>Stay tuned in the next couple of days to see if I can make any progress.</p>
]]></content:encoded>
			<wfw:commentRss>http://truejournals.com/2009/05/23/comcasts-caller-id/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Programming Brainstorm</title>
		<link>http://truejournals.com/2009/04/23/programming-brainstorm/</link>
		<comments>http://truejournals.com/2009/04/23/programming-brainstorm/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 14:28:23 +0000</pubDate>
		<dc:creator>TrueJournals</dc:creator>
				<category><![CDATA[life]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[brainstorm]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[tearbookmarks]]></category>

		<guid isPermaLink="false">http://truejournals.com/?p=55</guid>
		<description><![CDATA[Every now and then when working on a program, I like to have a brainstorming session.  Usually I&#8217;m just lying comfortably in my bed, thinking of how I can expand a program more, remove bugs, or make it quicker or more stable.  Last night, I had a brainstorming session for tear bookmarks, and I thought [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then when working on a program, I like to have a brainstorming session.  Usually I&#8217;m just lying comfortably in my bed, thinking of how I can expand a program more, remove bugs, or make it quicker or more stable.  Last night, I had a brainstorming session for tear bookmarks, and I thought I&#8217;d share my notes with everyone who reads this.</p>
<p>My brainstorming session basically consists of my tablet running xournal.  I get nice lined notebook paper, where I can write down any ideas that pop into my head.  I can then look at that later and go &#8220;No&#8230; that won&#8217;t work&#8221; or &#8220;Hmm&#8230; I might be on to something,&#8221; and try to implement it.</p>
<p>So, if you&#8217;d like to see what I&#8217;ve been thinking about for tear bookmarks, look at the following PDF: <a href="http://truejournals.com/wp-content/uploads/2009/04/2009-04-22-tearbookmarksbrainstorm.pdf">2009-04-22-tearbookmarksbrainstorm</a>.  Enjoy!</p>
]]></content:encoded>
			<wfw:commentRss>http://truejournals.com/2009/04/23/programming-brainstorm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

