<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>/contrib/famzah</title>
	<atom:link href="http://blog.famzah.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.famzah.net</link>
	<description>Enthusiasm never stops</description>
	<lastBuildDate>Mon, 21 May 2012 17:34:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.famzah.net' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>/contrib/famzah</title>
		<link>http://blog.famzah.net</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.famzah.net/osd.xml" title="/contrib/famzah" />
	<atom:link rel='hub' href='http://blog.famzah.net/?pushpress=hub'/>
		<item>
		<title>Securely avoid SSH warnings for changing IP addresses</title>
		<link>http://blog.famzah.net/2012/05/15/securely-avoid-ssh-warnings-for-changing-ip-addresses/</link>
		<comments>http://blog.famzah.net/2012/05/15/securely-avoid-ssh-warnings-for-changing-ip-addresses/#comments</comments>
		<pubDate>Tue, 15 May 2012 07:10:20 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[openssh]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[amazon aws]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1230</guid>
		<description><![CDATA[If you have servers that change their IP address, you&#8217;ve probably already been used to the following SSH warning: Besides from being annoying, it is also a security risk to blindly accept this warning and continue connecting. And be honest &#8212; almost none of us check the fingerprint in advance every time. A common scenario [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1230&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>If you have servers that change their IP address, you&#8217;ve probably already been used to the following SSH warning:</p>
<div class="sourcecode">
<pre class="brush: plain; gutter: false;">
The authenticity of host '176.34.91.245 (176.34.91.245)' can't be established.
...
Are you sure you want to continue connecting (yes/no)? yes
</pre>
</div>
<p>Besides from being annoying, it is also a security risk to blindly accept this warning and continue connecting. And be honest &#8212; almost none of us check the fingerprint in advance every time.</p>
<p>A common scenario for this use case is when you have an EC2 server in Amazon AWS which you temporarily stop and then start, in order to cut costs. I have a backup server which I use in this way.</p>
<p>In order to securely avoid this SSH warning and still be sure that you connect to your trusted server, you have to save the fingerprint in a separate file and update the IP address in it every time before you connect. Here are the connect commands, which you can also encapsulate in a Bash wrapper script:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
IP=176.34.91.245 # use an IP address here, not a hostname
FPFILE=~/.ssh/aws-backup-server.fingerprint

test -e &quot;$FPFILE&quot; &amp;&amp; perl -pi -e &quot;s/^\S+ /$IP /&quot; &quot;$FPFILE&quot;
ssh -o StrictHostKeyChecking=ask -o UserKnownHostsFile=&quot;$FPFILE&quot; root@$IP
</pre>
</div>
<p>Note that the FPFILE is not required to exist on the first SSH connect. The first time you connect to the server, the FPFILE will be created when you accept the SSH warning. Further connects will not show an SSH warning or ask you to accept the fingerprint again.</p>
<br />Filed under: <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/amazon-aws/'>amazon aws</a>, <a href='http://blog.famzah.net/tag/ec2/'>ec2</a>, <a href='http://blog.famzah.net/tag/openssh/'>openssh</a>, <a href='http://blog.famzah.net/tag/security/'>security</a>, <a href='http://blog.famzah.net/tag/ssh/'>ssh</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1230/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1230/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1230/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1230&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/05/15/securely-avoid-ssh-warnings-for-changing-ip-addresses/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>iSCSI-over-Internet performance notes</title>
		<link>http://blog.famzah.net/2012/04/17/iscsi-over-internet-performance-notes/</link>
		<comments>http://blog.famzah.net/2012/04/17/iscsi-over-internet-performance-notes/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 15:17:33 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[benchmark]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1212</guid>
		<description><![CDATA[I recently played a bit with iSCSI over Internet, in order to design and implement the Locally encrypted secure remote backup over Internet. My initial impression was that iSCSI over Internet is not usable as a backup device even though my Internet connection is relatively fast &#8212; a simple ext4 file-system format took about 24 [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1212&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently played a bit with <a href="http://en.wikipedia.org/wiki/ISCSI">iSCSI</a> over Internet, in order to design and implement the <a href="http://blog.famzah.net/2012/04/17/locally-encrypted-secure-remote-backup-over-internet-on-linux-iscsi-truecrypt/">Locally encrypted secure remote backup over Internet</a>.</p>
<p>My initial impression was that iSCSI over Internet is not usable as a backup device even though my Internet connection is relatively fast &#8212; a simple ext4 file-system format took about 24 minutes. I though that the connection latency is killing the performance. Well, I was wrong. Even after making latency two times lower by working on a server which was geographically closer, the ext4 format still took 24 minutes.</p>
<p>Eventually I did some tests and analysis, and finally started to use the iSCSI over Internet volume for backup purposes &#8212; and it works flawlessly so far.</p>
<h3>Ext4 format benchmark</h3>
<p>It turns out that it&#8217;s not the <strong>latency</strong> but my upload <strong>bandwidth</strong> which was slowing things down:</p>
<ul>
<li><strong>1 Mbit/s upload</strong> Internet connection and <a href="http://en.wikipedia.org/wiki/Ping">Ping</a> latency of 75 ms:
<ul>
<li>Time: 24 minutes.</li>
<li>Average transfer rates snapshot:
<ul>
<li>Total rates: 967.7 kbits/sec (212.6 packets/sec).</li>
<li>Incoming rates: 83.0 kbits/sec (92.8 packets/sec).</li>
<li>Outgoing rates: 884.6 kbits/sec (119.8 packets/sec).</li>
</ul>
</li>
<li>About 200 MBytes outgoing transfer; only 12 MBytes incoming transfer (no SSH tunnel compression).</li>
<li>About 200.000 packets sent and about 130.000 received.</li>
</ul>
</li>
<li><strong>3 Mbit/s upload</strong> Internet connection and <a href="http://en.wikipedia.org/wiki/Ping">Ping</a> latency of 75 ms:
<ul>
<li>Time: 8 minutes.</li>
<li>Average transfer rates snapshot:
<ul>
<li>Total rates: 2580.0 kbits/sec (417.8 packets/sec).</li>
<li>Incoming rates: 128.5 kbits/sec (149.6 packets/sec).</li>
<li>Outgoing rates: 2451.5 kbits/sec (268.2 packets/sec).</li>
</ul>
</li>
<li>About 160 MBytes outgoing transfer; only 9 MBytes incoming transfer (with SSH tunnel compression).</li>
<li>About 140.000 packets sent and about 80.000 received.</li>
</ul>
</li>
</ul>
<p>I know I&#8217;m missing two tests with and without SSH tunnel compression but it seems compression doesn&#8217;t make such a difference. It&#8217;s upload speed which affects the total completion time.</p>
<h3>File copy benchmark</h3>
<p>All tests were done without SSH compression and we make the same conclusion &#8212; it is bandwidth which affects the total completion time:</p>
<ul>
<li><strong>1 Mbit/s upload</strong> Internet connection and <a href="http://en.wikipedia.org/wiki/Ping">Ping</a> latency of 75 ms:
<ul>
<li>SSH direct file copy to server: 100 seconds (11 MBytes file).</li>
<li>File copy to an iSCSI mounted file-system: 105 seconds.</li>
</ul>
</li>
<li><strong>3 Mbit/s upload</strong> Internet connection and <a href="http://en.wikipedia.org/wiki/Ping">Ping</a> latency of 75 ms:
<ul>
<li>SSH direct file copy to server: 39 seconds (11 MBytes file).</li>
<li>File copy to an iSCSI mounted file-system: 39 seconds.</li>
</ul>
</li>
</ul>
<p>The SSH direct file copy (<a href="http://en.wikipedia.org/wiki/Secure_copy">SCP</a>) transfer command was &#8220;scp testf root@172.18.0.1:/tmp/&#8221;, and the file copy command was &#8220;cp testf /mnt/ ; sync&#8221;.</p>
<h3>Server and client load during transfer, other benchmarks</h3>
<p>During the transfer both the client and server machines were almost idle in regards to CPU. The iSCSI block storage device on the server was not saturated even at 1%.</p>
<p>Note that the iSCSI target was exported via an SSH tunnel, as described <a href="http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/">here</a>. Ping tests shown no difference between a direct server ping and a ping via the SSH tunnel.</p>
<p>The file copy tests were done on a regular iSCSI mounted volume, and on an iSCSI volume which was encrypted using <a href="http://www.truecrypt.org/">TrueCrypt</a>. The same speeds were achieved.</p>
<h3>Encountered problems</h3>
<p>During the backup runs, I got several of the following kernel messages in &#8220;dmesg&#8221;. This seems like a normal warning for the iSCSI use-case scenario:</p>
<blockquote><p>[13200.272157] INFO: task jbd2/dm-0-8:1931 blocked for more than 120 seconds.<br />
[13200.272164] &#8220;echo 0 &gt; /proc/sys/kernel/hung_task_timeout_secs&#8221; disables this message.<br />
[13200.272168] jbd2/dm-0-8     D f2abdc80     0  1931      2 0&#215;00000000
</p></blockquote>
<br />Filed under: <a href='http://blog.famzah.net/category/uncategorized/'>Uncategorized</a> Tagged: <a href='http://blog.famzah.net/tag/benchmark/'>benchmark</a>, <a href='http://blog.famzah.net/tag/iscsi/'>iSCSI</a>, <a href='http://blog.famzah.net/tag/performance/'>performance</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1212/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1212/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1212/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1212&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/04/17/iscsi-over-internet-performance-notes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Locally encrypted secure remote backup over Internet on Linux (iSCSI / TrueCrypt)</title>
		<link>http://blog.famzah.net/2012/04/17/locally-encrypted-secure-remote-backup-over-internet-on-linux-iscsi-truecrypt/</link>
		<comments>http://blog.famzah.net/2012/04/17/locally-encrypted-secure-remote-backup-over-internet-on-linux-iscsi-truecrypt/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 13:55:17 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[remote backup]]></category>
		<category><![CDATA[TrueCrypt]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1197</guid>
		<description><![CDATA[Recently I decided to start using Amazon AWS as my backup storage but my paranoid soul wasn&#8217;t satisfied until I figured it out how to secure my private data. It&#8217;s not that I don&#8217;t trust Amazon but a lot of bad things could happen if I decided that I just copy my data to a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1197&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I decided to start using Amazon <a href="http://aws.amazon.com/">AWS</a> as my backup storage but my paranoid soul wasn&#8217;t satisfied until I figured it out how to secure my private data. It&#8217;s not that I don&#8217;t trust Amazon but a lot of bad things could happen if I decided that I just copy my data to a remote server on Amazon:</p>
<ul>
<li>Amazon staff would have access to my data.</li>
<li>A breach in Amazon&#8217;s systems would expose my data.</li>
<li>A breach in my remote server OS would expose my data.</li>
</ul>
<p>One of the solutions which I considered was to encrypt my local file-system with <a href="https://launchpad.net/ecryptfs">eCryptfs</a> but it has some <a href="https://bugs.launchpad.net/ecryptfs/+bug/344878">issues with relatively long file names</a>.</p>
<p>Finally I came out with the following working backup solution which I currently use to backup both my Windows and Linux partitions. I share the Windows root directory with the VirtualBox Linux machine and run the backup scripts from there. Here is a short explanation of the properties and features of the backup setup:</p>
<ul>
<li><strong>Locally encrypted</strong> &#8212; all files which I store on the iSCSI volume are encrypted on my personal desktop, before being sent to the remote server. This ensures that the files cannot be read by anyone else.</li>
<li><strong>Secure</strong> &#8212; besides the local volume encryption, the whole communication is done over an SSH tunnel which secures the Internet point-to-point client-to-server communication.</li>
<li><strong>Remote</strong> &#8212; having a remote backup ensures that even if someone breached in my house and steals my laptop and my offline backup, I can still recover my data from the remote server. Furthermore, it is more convenient to frequently backup on a remote machine, because we have Internet access everywhere now. Note that remote backups are not a substitution for offline backups.</li>
<li><strong>Over Internet</strong> &#8212; very convenient. Of course, this backup scheme can be used in any TCP/IP network &#8212; private LAN, WAN, VPN networks, etc.</li>
</ul>
<p>The following two articles provide detailed instructions on how to setup the backup solution:</p>
<ul>
<li><a href="http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/">Secure iSCSI setup via an SSH tunnel on Linux</a></li>
<li><a href="http://blog.famzah.net/2012/04/17/locally-encrypt-an-iscsi-volume-with-truecrypt-on-linux/">Locally encrypt an iSCSI volume with TrueCrypt on Linux</a></li>
</ul>
<h3>Daily usage example</h3>
<p>Here are the commands which I execute, in order to make a backup of my laptop. Those can be further scripted and automated if a daily or more frequent backup is required:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
IP=23.21.98.10 # the public DNS IP address of the EC2 instance / server

## Execute the following, in order to mount the remote encrypted iSCSI volume:

sudo -E \
  ssh -F /dev/null \
  -o PermitLocalCommand=yes \
  -o LocalCommand=&quot;ifconfig tun0 172.18.0.2 pointopoint 172.18.0.1 netmask 255.255.255.0&quot; \
  -o ServerAliveInterval=60 \
  -w 0:0 root@&quot;$IP&quot; \
  'sudo ifconfig tun0 172.18.0.1 pointopoint 172.18.0.2 netmask 255.255.255.0; hostname; echo tun0 ready'

sudo iscsiadm -m node --targetname &quot;iqn.2012-03.net.famzah:storage.backup&quot; --portal &quot;172.18.0.1:3260&quot; --login
sudo truecrypt --filesystem=none -k &quot;&quot; --protect-hidden=no /dev/sdb
sudo mount /dev/mapper/truecrypt1 /mnt

## You can now work on /mnt -- make a backup, copy files, etc.

ls -la /mnt

## Execute the following, in order to unmount the encrypted iSCSI volume:

sync
sudo umount /mnt
sudo truecrypt -d /dev/sdb
sudo iscsiadm -m node --targetname &quot;iqn.2012-03.net.famzah:storage.backup&quot; --portal &quot;172.18.0.1:3260&quot; --logout
# stop the SSH tunnel
</pre>
</div>
<br />Filed under: <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/aws/'>aws</a>, <a href='http://blog.famzah.net/tag/iscsi/'>iSCSI</a>, <a href='http://blog.famzah.net/tag/linux/'>Linux</a>, <a href='http://blog.famzah.net/tag/remote-backup/'>remote backup</a>, <a href='http://blog.famzah.net/tag/truecrypt/'>TrueCrypt</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1197/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1197/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1197/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1197&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/04/17/locally-encrypted-secure-remote-backup-over-internet-on-linux-iscsi-truecrypt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Locally encrypt an iSCSI volume with TrueCrypt on Linux</title>
		<link>http://blog.famzah.net/2012/04/17/locally-encrypt-an-iscsi-volume-with-truecrypt-on-linux/</link>
		<comments>http://blog.famzah.net/2012/04/17/locally-encrypt-an-iscsi-volume-with-truecrypt-on-linux/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 13:13:16 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[TrueCrypt]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1189</guid>
		<description><![CDATA[While this article focuses on iSCSI volumes, it also applies for regular directly attached block devices. If you are in doubt on how to export and attach an iSCSI volume over Internet, you can review the &#8220;Secure iSCSI setup via an SSH tunnel on Linux&#8221; article. Locally encrypting a remote iSCSI volume with TrueCrypt has [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1189&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>While this article focuses on iSCSI volumes, it also applies for regular directly attached block devices. If you are in doubt on how to export and attach an iSCSI volume over Internet, you can review the &#8220;<a href="http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/">Secure iSCSI setup via an SSH tunnel on Linux</a>&#8221; article.</p>
<p>Locally encrypting a remote iSCSI volume with <a href="http://www.truecrypt.org/">TrueCrypt</a> has the following advantages:</p>
<ul>
<li>You don&#8217;t need to <strong>trust</strong> the administrators of the remote machine &#8212; they cannot see your files because you are using their storage in a locally encrypted format. Thus your private data is completely safe, as long as your encryption password/key is strong enough.</li>
<li>You have the option to temporarily mount the exported iSCSI volume on the remote server, if you are the owner of the remote server and know the encryption password/key. This is handy if you want to make a local copy of a file from the backup volume without storing the encryption password on the remote server.</li>
<li><a href="http://www.truecrypt.org/">TrueCrypt</a> is cross-platform (<em>Windows / Mac OS X / Linux</em>), fast, free, and open-source.</li>
</ul>
<h3>Download and install TrueCrypt</h3>
<p>You need to install TrueCrypt wherever you are going to use it &#8212; on the client machine and optionally on the server.</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
# Download the distribution file from the official page:
#   http://www.truecrypt.org/downloads
# Linux -&gt; Console-only (choose 32-bit or 64-bit depending on your local Linux installation)

tar -zxf truecrypt-7.1a-linux-console-x86.tar.gz # 32-bit in this example
sudo ./truecrypt-7.1a-setup-console-x86

truecrypt --version
#&gt;&gt; TrueCrypt 7.1a
</pre>
</div>
<h3>Encrypt an iSCSI volume with TrueCrypt</h3>
<p>The instructions below assume that the iSCSI volume is attached under &#8220;<strong>/dev/sdb</strong>&#8220;. The output of the commands is quoted with &#8220;#&gt;&gt;&#8221;.</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
# Encrypt the iSCSI volume
sudo truecrypt -t --create /dev/sdb --volume-type=normal --encryption=AES --hash=RIPEMD-160 --filesystem=ext4 --quick -k &quot;&quot;

# Mount the *volume* (there is no file-system, yet)
sudo truecrypt --filesystem=none -k &quot;&quot; --protect-hidden=no /dev/sdb

# Check that a new &quot;dm-0&quot; device with the same size appeared
cat /proc/partitions
#&gt;&gt; major minor  #blocks  name
#&gt;&gt; ...
#&gt;&gt; 8        16  83886080 sdb
#&gt;&gt; 252       0  83885824 dm-0

# Double-check that this is a TrueCrypt volume
ls -la /dev/mapper/truecrypt1
# /dev/mapper/truecrypt1 -&gt; ../dm-0

# Create a file-system.
# This takes about 30 min for a 80 GB volume @ 1 MBit Internet connection.
sudo mkfs.ext4 /dev/mapper/truecrypt1

# You can now mount and use /dev/mapper/truecrypt1 in any mount-point, as 
# this is a regular block device with an ext4 file-system.
# Remember to unmount it when you are done.
mount /dev/mapper/truecrypt1 /mnt
ls -la /mnt
umount /mnt

# Unmount the encrypted *volume*.
# Make sure that you have ALREADY unmounted the file-system!
sync
sudo truecrypt -d /dev/xvdf
</pre>
</div>
<h3>Mount an encrypted iSCSI volume locally on the remote server</h3>
<p>The output of the commands is quoted with &#8220;#&gt;&gt;&#8221;.</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
# The local block device is &quot;/dev/xvdf&quot;
cat /proc/partitions 
#&gt;&gt; major minor  #blocks  name
#&gt;&gt; ...
#&gt;&gt;   202    80  83886080 xvdf

#
# MAKE SURE that no iSCSI clients are using the volume now
#

# Mount an encrypted volume (/dev/xvdf).
# The unencrypted volume will be presented under a different device name (/dev/mapper/truecrypt1).
sudo truecrypt --filesystem=none -k &quot;&quot; --protect-hidden=no /dev/xvdf

# Mount the file-system
sudo mount /dev/mapper/truecrypt1 /mnt
# Access the encrypted files
ls -la /mnt
# Unmount the file-system
sudo umount /mnt

# Unmount the encrypted volume (/dev/mapper/truecrypt1 -&gt; /dev/xvdf).
# Make sure that you have ALREADY unmounted the file-system!
sudo truecrypt -d /dev/xvdf
</pre>
</div>
<br />Filed under: <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/iscsi/'>iSCSI</a>, <a href='http://blog.famzah.net/tag/linux/'>Linux</a>, <a href='http://blog.famzah.net/tag/truecrypt/'>TrueCrypt</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1189&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/04/17/locally-encrypt-an-iscsi-volume-with-truecrypt-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Secure iSCSI setup via an SSH tunnel on Linux</title>
		<link>http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/</link>
		<comments>http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/#comments</comments>
		<pubDate>Tue, 17 Apr 2012 12:37:39 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[client-server]]></category>
		<category><![CDATA[iSCSI]]></category>
		<category><![CDATA[iSCSI over SSH]]></category>
		<category><![CDATA[SSH TUN tunnel]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1171</guid>
		<description><![CDATA[This article will demonstrate how to export a raw block storage device over Internet in a secure manner. Re-phrased this means that you can export a hard disk from a remote machine and use it on your local computer as it was a directly attached disk, thanks to iSCSI. Authentication and secure transport channel is [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1171&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>This article will demonstrate how to export a raw block storage device over Internet in a secure manner. Re-phrased this means that you can export a hard disk from a remote machine and use it on your local computer as it was a directly attached disk, thanks to <a href="http://en.wikipedia.org/wiki/ISCSI">iSCSI</a>. Authentication and secure transport channel is provided by an <a href="http://en.wikipedia.org/wiki/Tunneling_protocol#Secure_shell_tunneling">SSH tunnel</a> (<a href="http://www.perturb.org/display/entry/770/">more info</a>). The setup has been tested on Ubuntu 11.10 Oneiric.</p>
<h3>Server provisioning</h3>
<p>Amazon <a href="http://aws.amazon.com/">AWS</a> made it really simple to deploy a server setup in a minute:</p>
<ol>
<li>Launch a Micro EC2 instance and then install Ubuntu server by clicking on the links in the <a href="https://help.ubuntu.com/community/EC2StartersGuide">Ubuntu EC2StartersGuide</a>, section &#8220;Official Ubuntu Cloud Guest Amazon Machine Images (AMIs)&#8221;.</li>
<li>Create an EBS volume in the same availability zone. Attach it to the EC2 instance as &#8220;/dev/sdf&#8221; (seen as &#8220;/dev/xvdf&#8221; in latest Ubuntu versions).</li>
<li>(optionally) Allocate an Elastic IP address and associate it with the EC2 instance.</li>
</ol>
<p>Note that you can lower your AWS bill by buying a Reserved instance slot. Those slots are non-refundable and non-transferrable, so shop wisely. You can also stop the EC2 instance when you&#8217;re not using it and you won&#8217;t be billed for it but only for the allocated EBS volume storage.</p>
<p>You can use any other dedicated or virtual server which you own and can access by IP. An Amazon AWS EC2 instance is given here only as an example.</p>
<h3>iSCSI server-side setup</h3>
<p>Execute the following on your server (iSCSI target):</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
IP=23.21.98.10 # the public DNS IP address of the EC2 instance / server

# Log in to the server
ssh ubuntu@$IP
# Update your SSH key in &quot;.ssh/authorized_keys&quot;, if needed.
sudo bash
cp /home/ubuntu/.ssh/authorized_keys /root/.ssh/ # so that we can log in directly as root

apt-get update
apt-get upgrade

apt-get install linux-headers-virtual # virtual because we're running an EC2 instance
apt-get install iscsitarget iscsitarget-dkms
perl -pi -e 's/^ISCSITARGET_ENABLE=.*$/ISCSITARGET_ENABLE=true/' /etc/default/iscsitarget

# We won't use any iSCSI authentication because the server is totally firewalled
# and we access it only using an SSH tunnel.
# NOTE: If you don't use Amazon EC2, make sure that you firewall this machine completely,
# leaving only SSH access (TCP port 22).

cat &gt;&gt; /etc/iet/ietd.conf &lt;&lt;EOF
Target iqn.2012-03.net.famzah:storage.backup
   Lun 0 Path=/dev/xvdf,Type=fileio
EOF

/etc/init.d/iscsitarget restart

echo 'PermitTunnel yes' &gt;&gt; /etc/ssh/sshd_config
/etc/init.d/ssh restart
</pre>
</div>
<h3>iSCSI client-side setup</h3>
<p>Execute the following on your client / desktop machine (iSCSI initiator):</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
# Install the iSCSI client
sudo apt-get install open-iscsi
</pre>
</div>
<h3>How to attach an iSCSI volume on the client</h3>
<p>The following commands show how to attach and detach a remote iSCSI volume on the client machine. The output of the commands is quoted with &#8220;#&gt;&gt;&#8221;.</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
IP=23.21.98.10 # the public DNS IP address of the EC2 instance / server

# Establish the secure SSH tunnel to the remote server
sudo -E \
  ssh -F /dev/null \
  -o PermitLocalCommand=yes \
  -o LocalCommand=&quot;ifconfig tun0 172.18.0.2 pointopoint 172.18.0.1 netmask 255.255.255.0&quot; \
  -o ServerAliveInterval=60 \
  -w 0:0 root@&quot;$IP&quot; \
  'sudo ifconfig tun0 172.18.0.1 pointopoint 172.18.0.2 netmask 255.255.255.0; hostname; echo tun0 ready'

# Make sure that we can reach the remote server via the SSH tunnel
ping 172.18.0.1

# Execute this one-time; it discovers the available iSCSI volumes
sudo iscsiadm -m discovery -t st -p 172.18.0.1
#&gt;&gt; 172.18.0.1:3260,1 iqn.2012-03.net.famzah:storage.backup

# Attach the remote iSCSI volume on the local machine
sudo iscsiadm -m node --targetname &quot;iqn.2012-03.net.famzah:storage.backup&quot; --portal &quot;172.18.0.1:3260&quot; --login
#&gt;&gt; Logging in to [iface: default, target: iqn.2012-03.net.famzah:storage.backup, portal: 172.18.0.1,3260]
#&gt;&gt; Login to [iface: default, target: iqn.2012-03.net.famzah:storage.backup, portal: 172.18.0.1,3260]: successful

# Check the kernel log
dmesg
#&gt;&gt; [ 1237.538172] scsi3 : iSCSI Initiator over TCP/IP
#&gt;&gt; [ 1238.657846] scsi 3:0:0:0: Direct-Access     IET      VIRTUAL-DISK     0    PQ: 0 ANSI: 4
#&gt;&gt; [ 1238.662985] sd 3:0:0:0: Attached scsi generic sg2 type 0
#&gt;&gt; [ 1239.578079] sd 3:0:0:0: [sdb] 167772160 512-byte logical blocks: (85.8 GB/80.0 GiB)
#&gt;&gt; [ 1239.751271] sd 3:0:0:0: [sdb] Write Protect is off
#&gt;&gt; [ 1239.751279] sd 3:0:0:0: [sdb] Mode Sense: 77 00 00 08
#&gt;&gt; [ 1240.099649] sd 3:0:0:0: [sdb] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
#&gt;&gt; [ 1241.962729]  sdb: unknown partition table
#&gt;&gt; [ 1243.568470] sd 3:0:0:0: [sdb] Attached SCSI disk

# Double-check that the iSCSI volume is with the expected size (80 GB in our case)
cat /proc/partitions
#&gt;&gt; major minor  #blocks  name
#&gt;&gt; ...
#&gt;&gt; 8       16   83886080 sdb

# The remote iSCSI volume is now available under /dev/sdb on our local machine.
# You can use it as any other locally attached hard disk (block device).

# Detach the iSCSI volume from the local machine
sync
sudo iscsiadm -m node --targetname &quot;iqn.2012-03.net.famzah:storage.backup&quot; --portal &quot;172.18.0.1:3260&quot; --logout
#&gt;&gt; Logging out of session [sid: 1, target: iqn.2012-03.net.famzah:storage.backup, portal: 172.18.0.1,3260]
#&gt;&gt; Logout of [sid: 1, target: iqn.2012-03.net.famzah:storage.backup, portal: 172.18.0.1,3260]: successful

# Check the kernel log
dmesg
#&gt;&gt; [ 1438.942277]  connection1:0: detected conn error (1020)

# Double-check that the iSCSI volume is no longer available on the local machine
cat /proc/partitions
#&gt;&gt; no &quot;sdb&quot;
</pre>
</div>
<p>Once you have the iSCSI block device volume attached on your local computer, you can use it as you need, just like it was a normal hard disk. Only it will be slower because each I/O operation takes place over Internet. For example, you can <a href="http://blog.famzah.net/2012/04/17/locally-encrypt-an-iscsi-volume-with-truecrypt-on-linux/">locally encrypt the iSCSI volume with TrueCrypt</a>, in order to prevent the administrators of the remote machine to be able to see your files.</p>
<hr />
<p>References:</p>
<ul>
<li><a href="http://www.howtoforge.com/iscsi_on_linux">Setting Up An iSCSI Environment On Linux</a></li>
</ul>
<br />Filed under: <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/aws/'>aws</a>, <a href='http://blog.famzah.net/tag/client-server/'>client-server</a>, <a href='http://blog.famzah.net/tag/iscsi/'>iSCSI</a>, <a href='http://blog.famzah.net/tag/iscsi-over-ssh/'>iSCSI over SSH</a>, <a href='http://blog.famzah.net/tag/linux/'>Linux</a>, <a href='http://blog.famzah.net/tag/ssh-tun-tunnel/'>SSH TUN tunnel</a>, <a href='http://blog.famzah.net/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1171/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1171/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1171/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1171&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/04/17/secure-iscsi-setup-via-an-ssh-tunnel-on-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Auto screenshot on Windows</title>
		<link>http://blog.famzah.net/2012/04/08/auto-screenshot-on-windows/</link>
		<comments>http://blog.famzah.net/2012/04/08/auto-screenshot-on-windows/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 20:02:31 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Misc]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[record]]></category>
		<category><![CDATA[screenshot]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1152</guid>
		<description><![CDATA[I recently migrated my desktop back to Windows, and while I&#8217;m at work I need to have regular screenshots of my monitor, for investigation and other purposes. I easily found a solution to record desktop activity by making regular screenshots on Ubuntu, and I thought that Windows solutions will be even more. It turned out [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1152&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently migrated my desktop back to Windows, and while I&#8217;m at work I need to have regular screenshots of my monitor, for investigation and other purposes. I easily found a solution to <a href="http://blog.famzah.net/2009/11/10/record-desktop-activity-by-making-regular-screenshots-on-ubuntu/">record desktop activity by making regular screenshots on Ubuntu</a>, and I thought that Windows solutions will be even more. It turned out to be the opposite &#8212; they were all either paid or not working/lacking features.</p>
<p>Here is how &#8220;<strong>Auto Screen Capture FV</strong>&#8221; was born. Two screenshots of the interface follow:<br />
<br />
<a href="http://famzah.files.wordpress.com/2012/04/main-screen.png"><img src="http://famzah.files.wordpress.com/2012/04/main-screen.png?w=450&h=232" alt="" title="AutoScreenCaptureFV main screen" width="450" height="232" class="aligncenter size-full wp-image-1154" /></a><br />
<br />
<a href="http://famzah.files.wordpress.com/2012/04/tray-in-background.png"><img src="http://famzah.files.wordpress.com/2012/04/tray-in-background.png?w=150&h=52" alt="" title="AutoScreenCaptureFV minimized to tray" width="150" height="52" class="aligncenter size-thumbnail wp-image-1156" /></a></p>
<p>It has the following features:</p>
<ul>
<li>Runs on Windows</li>
<li>Free as speech; open-source, developed with Microsoft Visual C# 2010 Express</li>
<li>Captures a screenshot automatically without disrupting user activity</li>
<li>Saves the snapshot images as compressed JPEG files, in order to save disk space</li>
<li>The destination directory where the images are saved is selected by the user</li>
<li>Rotates too old image files by deleting them, in order to save disk space</li>
<li>All settings are permanently saved in the registry, so next program starts remember what you configured</li>
<li>Auto screen capture can be easily temporarily suspended</li>
<li>Program can run in background; it minimizes to system tray</li>
</ul>
<p>Old image files are actually moved to &#8220;Recycle bin&#8221;, in order to be on the safe side &#8212; if we have a bug, no files are lost. Auto Screen Capture FV has been tested on Windows 7.</p>
<p>Download links:</p>
<ul>
<li><a href="http://www.famzah.net/download/AutoScreenCaptureFV/installer.rar">Installer</a> (there is an uninstaller in the Control Panel)</li>
<li><a href="http://www.famzah.net/download/AutoScreenCaptureFV/sources.rar">Sources</a></li>
</ul>
<hr />
<p>Resources:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=Mlma4O22e8Y">YouTube :: Simple Screen Capture with C#.avi</a></li>
<li><a href="http://www.iconarchive.com/tag/screen-capture">IconArchive &#8220;screen capture&#8221; icons</a></li>
<li><a href="http://stackoverflow.com/questions/3282418/visual-c-sharp-send-a-file-to-the-recycle-bin">stackoverflow :: Visual C# &#8211; Send a File to the Recycle Bin</a></li>
<li><a href="http://www.codeproject.com/Articles/16274/Saving-Registry-Settings">The code project :: C# :: Saving Registry Settings</a></li>
<li><a href="http://alperguc.blogspot.com/2008/11/c-system-tray-minimize-to-tray-with.html">C# System Tray Minimize To Tray With NotifyIcon</a></li>
</ul>
<br />Filed under: <a href='http://blog.famzah.net/category/development/'>Development</a>, <a href='http://blog.famzah.net/category/misc/'>Misc</a> Tagged: <a href='http://blog.famzah.net/tag/desktop/'>desktop</a>, <a href='http://blog.famzah.net/tag/open-source/'>open source</a>, <a href='http://blog.famzah.net/tag/record/'>record</a>, <a href='http://blog.famzah.net/tag/screenshot/'>screenshot</a>, <a href='http://blog.famzah.net/tag/windows/'>windows</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1152/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1152/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1152/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1152&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/04/08/auto-screenshot-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2012/04/main-screen.png" medium="image">
			<media:title type="html">AutoScreenCaptureFV main screen</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2012/04/tray-in-background.png?w=150" medium="image">
			<media:title type="html">AutoScreenCaptureFV minimized to tray</media:title>
		</media:content>
	</item>
		<item>
		<title>Power consumption of a server with an Intel E3-1200 Series CPU</title>
		<link>http://blog.famzah.net/2012/02/08/power-consumption-of-a-server-with-an-intel-e3-1200-series-cpu/</link>
		<comments>http://blog.famzah.net/2012/02/08/power-consumption-of-a-server-with-an-intel-e3-1200-series-cpu/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 15:57:30 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Intel Xeon E3-1230]]></category>
		<category><![CDATA[power consumption]]></category>
		<category><![CDATA[super micro]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1134</guid>
		<description><![CDATA[I got my hands on the following server for a day, so I decided to measure its power consumption because the new Intel Xeon Processor E3 series look very promising. They support ECC memory and at the same time have &#8220;Intelligent, Adaptive Performance&#8221;, which in plain text means that they can power themselves down and [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1134&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I got my hands on the following server for a day, so I decided to measure its power consumption because the new <a href="http://www.intel.com/content/www/us/en/processors/xeon/xeon-processor-e3-family.html">Intel Xeon Processor E3</a> series look very promising. They support <a href="http://en.wikipedia.org/wiki/ECC_memory">ECC memory</a> and at the same time have &#8220;Intelligent, Adaptive Performance&#8221;, which in plain text means that they can power themselves down and thus save energy. Furthermore, their price and the price of the motherboards are fair as these CPUs seem to be meant to be used mainly in Desktop workstations. Having ECC support lets us use them in servers too. The only caveat is that those <a href="http://en.wikipedia.org/wiki/List_of_Intel_Xeon_microprocessors#Sandy_Bridge_based_Xeons">Sandy Bridge based Xeon CPUs</a> support only single CPU configuration &#8212; so don&#8217;t try to find a dual-CPU motherboard.</p>
<p>Here is the server configuration:</p>
<ul>
<li><strong>Case</strong>: <a href="http://www.supermicro.nl/products/chassis/1U/512/SC512L-260.cfm">Supermicro CSE-512L-260</a>, 260W single PSU</li>
<li><strong>Motherboard</strong>: <a href="http://www.supermicro.nl/products/motherboard/xeon/c202_c204/x9scm-f.cfm">Supermicro X9SCM-F</a></li>
<li><strong>CPU</strong>: <a href="http://ark.intel.com/products/52271">Intel Xeon E3-1230</a> @ 3.20GHz (4 cores, 8 threads)</li>
<li><strong>RAM</strong>: 16 GB DDR3-1333 ECC</li>
<li><strong>HDD</strong>: 1x 1TB Seagate Barracuda 7200 RPM SATA</li>
</ul>
<p>BIOS settings are set up for optimal power savings without compromising performance. FAN control is enabled too. Room temperature is 21 degrees Celsius.</p>
<p>Power usage with different server utilization scenarios follows:</p>
<ul>
<li><strong>7W</strong> &#8212; power off; idle consumation, the IPMI is alive</li>
<li><strong>39W</strong> &#8212; power on; Linux OS is idle
<ul>
<li>IPMI sensor readings: cooling FAN works with 1755 RPM &#8212; relatively quiet; CPU temperature is Low</li>
</ul>
</li>
<li><strong>45W to 60W</strong> &#8212; power on; moderate Linux OS usage
<ul>
<li>load average: 1.53; installing 200 new packets via &#8220;apt-get&#8221;</li>
<li>IPMI sensor readings: cooling FAN works with 1755 RPM &#8212; relatively quiet; CPU temperature is Low</li>
</ul>
</li>
<li><strong>130W</strong> &#8212; power on; full stress by &#8220;<a href="http://weather.ou.edu/~apw/projects/stress/">stress</a> &#8211;cpu 16 &#8211;io 8 &#8211;vm 8 &#8211;vm-bytes 1780M &#8211;hdd 4&#8243;
<ul>
<li>load average: 36.00; I/O load: 100%, mostly write; CPUs busy @ 100%, 70% user, 30% system, all CPU cores are utilized</li>
<li>RAM: about 95% used, 30% cached; network load: 22 Mbit/s constant SSH transfer</li>
<li>IPMI sensor readings: cooling FAN works with 3100 RPM &#8212; much noisy; CPU temperature is Medium</li>
</ul>
</li>
</ul>
<br />Filed under: <a href='http://blog.famzah.net/category/hardware/'>Hardware</a> Tagged: <a href='http://blog.famzah.net/tag/intel-xeon-e3-1230/'>Intel Xeon E3-1230</a>, <a href='http://blog.famzah.net/tag/power-consumption/'>power consumption</a>, <a href='http://blog.famzah.net/tag/super-micro/'>super micro</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1134/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1134/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1134/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1134&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/02/08/power-consumption-of-a-server-with-an-intel-e3-1200-series-cpu/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Using TP-LINK (TL-WR741ND) as a wireless bridge (WDS)</title>
		<link>http://blog.famzah.net/2012/01/22/using-tp-link-tl-wr741nd-as-a-wireless-bridge-wds/</link>
		<comments>http://blog.famzah.net/2012/01/22/using-tp-link-tl-wr741nd-as-a-wireless-bridge-wds/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 16:23:40 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Gargoyle]]></category>
		<category><![CDATA[TL-WR741ND]]></category>
		<category><![CDATA[TP-LINK]]></category>
		<category><![CDATA[WDS]]></category>
		<category><![CDATA[wi-fi bridge]]></category>
		<category><![CDATA[wireless bridge]]></category>

		<guid isPermaLink="false">http://famzah.wordpress.com/?p=1126</guid>
		<description><![CDATA[Recently I needed to expand my wireless network range. The spot where I needed wireless and wired network coverage was too far away from my main wireless AP, so I also needed a gain antenna. It turned out that most wireless routers cannot use an external antenna, because their original one cannot be dismounted. That [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1126&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Recently I needed to expand my wireless network range. The spot where I needed wireless and wired network coverage was too far away from my main wireless AP, so I also needed a gain antenna. It turned out that most wireless routers cannot use an external antenna, because their original one cannot be dismounted. That is how I ended up with the <a href="http://www.tp-link.com/en/products/details/?model=TL-WR741ND">TL-WR741ND</a> wireless router, which can be used with an external antenna and is also very cheap. In my local PC store they got a <a href="http://www.intellinet-network.com/en-US/products/6683-indoor-omni-directional-antenna">7dB omni-directional antenna by Intellinet</a>, so I got one of these too.</p>
<p>Design and hardware purchase were the easy part. The TL-WR741ND supports wireless bridge mode (<a href="http://en.wikipedia.org/wiki/Wireless_distribution_system">WDS</a>), but unfortunately it did NOT work out-of-the-box for me. The router joined the wireless network of my main Wi-Fi router, and I could see it there as &#8220;associated authorized&#8221;. However, the system log of the TL-WR741ND device was giving some DHCPC (probably &#8220;DHCP client&#8221;) errors and nothing worked as expected. I tried to join TL-WR741ND to both my ASUS routers (<a href="http://www.asus.com/Networks/Wireless_Routers/WL520gC/">WL-520gC</a> and <a href="http://www.asus.com/Networks/Wireless_Routers/RTN10/">RT-N10</a>) but with no luck. I also tried to help the TP-LINK router by doing some setup as advised in the <a href="http://www.compera-online.ru/docs/wds/ASUS_Wireless_Router_WDS_Configuration_Guide.pdf">ASUS Wireless Router WDS<br />
Configuration Guide</a>, and at the <a href="http://www.jaynath.com/2010/11/how-to-setup-wds-with-asus-rt-n16-and-linksys-wrt54g/">How to Setup WDS with Asus RT-N16 and Linksys WRT54G</a> article. This did not help and I reverted the changes on my ASUS routers in the end.</p>
<p>After I wasted 2 hours, I found a <a href="http://www.gargoyle-router.com/phpbb/viewtopic.php?f=5&amp;t=1574#p7048">forum article</a> where a guy had a similar issue and finally found a solution:</p>
<blockquote><p>
after 4 days unsuccessful testing client bridge (i need repeater bridge but not possible on my device&#8230;with ddwrt) on wr741nd(v2.4)/ddwrt, i found solution: install Gargoyle firmware v1.13.10, very intuitive and easy configuration (as repeater bridge), it works perfectly! Total time spent: 5 min.!
</p></blockquote>
<p>I confirm his solution &#8212; <a href="http://www.gargoyle-router.com/download.php">install</a> and <a href="http://www.gargoyle-router.com/wiki/doku.php?id=getting_started">setup</a> of the stable Gargoyle free router firmware solved my problem in a snap. Tested with a version 2.4 TL-WR741ND device, with Gargoyle version 1.4.5 for TL-WR741ND devices with version 1.x (firmware is compatible with version 2.x devices).</p>
<br />Filed under: <a href='http://blog.famzah.net/category/hardware/'>Hardware</a> Tagged: <a href='http://blog.famzah.net/tag/gargoyle/'>Gargoyle</a>, <a href='http://blog.famzah.net/tag/tl-wr741nd/'>TL-WR741ND</a>, <a href='http://blog.famzah.net/tag/tp-link/'>TP-LINK</a>, <a href='http://blog.famzah.net/tag/wds/'>WDS</a>, <a href='http://blog.famzah.net/tag/wi-fi-bridge/'>wi-fi bridge</a>, <a href='http://blog.famzah.net/tag/wireless-bridge/'>wireless bridge</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1126/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1126/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1126/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1126&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/01/22/using-tp-link-tl-wr741nd-as-a-wireless-bridge-wds/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>Bind a shell on Linux and reverse-connect to it through a firewall</title>
		<link>http://blog.famzah.net/2012/01/06/bind-a-shell-on-linux-and-reverse-connect-to-it-through-a-firewall/</link>
		<comments>http://blog.famzah.net/2012/01/06/bind-a-shell-on-linux-and-reverse-connect-to-it-through-a-firewall/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 08:50:49 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[bind shell]]></category>
		<category><![CDATA[remote shell bind]]></category>
		<category><![CDATA[reverse shell]]></category>
		<category><![CDATA[ssh reverse tunnel]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1108</guid>
		<description><![CDATA[There are situations when a friend is in need of Linux help, and the only way for you to help them is to log in to their machine and fix the problem yourself, instead of trying to explain over the phone all the steps to your friend. Such a problem has two sub-problems: The remote [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1108&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>There are situations when a friend is in need of Linux help, and the only way for you to help them is to log in to their machine and fix the problem yourself, instead of trying to explain over the phone all the steps to your friend.</p>
<p>Such a problem has two sub-problems:</p>
<ul>
<li>The remote machine must accept incoming connections and provide you with shell access. The obvious way to achieve this is an SSH daemon. Many Desktop Linux distributions don&#8217;t install an SSH server by default though, for security reasons. Setting up an SSH server in this moment is slow, and could even not be possible, if your friend messed up with the packaging system, for example. So we need to find an easy way to bind a network shell on the remote machine.</li>
<li>We must be able to connect to the remote machine. Usually desktop machines are protected behind a firewall or NAT, and we cannot connect to them directly. If this is not the case for you, you can skip this step and just connect to the remote machine IP address. A common approach to overcome this problem is that the remote machine connects to a machine of yours, which has an accessible real IP address and has a running SSH server. Most Desktop Linux distributions have an SSH client installed by default. So all you need to do is quickly and temporarily set up an account with password authentication for your friend on your machine. Then let them log in there which will create a reverse tunnel back to their machine.</li>
</ul>
<p><u><strong>Bind a shell</strong></u></p>
<p>Another useful tool which is usually available on Linux is the <a href="http://en.wikipedia.org/wiki/Netcat">Netcat</a>, the Swiss-army knife for TCP/IP. In order to bind a shell using the Netcat version available on Ubuntu/Debian, you need to execute the following:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
mkfifo /tmp/mypipe
# user shell
cat /tmp/mypipe|/bin/bash 2&gt;&amp;1|nc -l 6000 &gt;/tmp/mypipe
</pre>
</div>
<p>I got this awesome idea from a <a href="http://www.gnucitizen.org/blog/reverse-shell-with-bash/#comment-127498">user comment</a>. I only extended it a bit by adding &#8220;2&gt;&amp;1&#8243; which redirects the STDERR error messages to the remote network client too.</p>
<p>Once the above has been executed on the remote machine, anyone can connect on TCP port 6000, assuming that there is no firewall. Note that you have to connect via Netcat again. A connection via Telnet adds an additional &#8220;\r&#8221; at every line end, which confuses Bash. If you need to perform actions as &#8220;root&#8221; on the remote machine, the shell needs to be executed as &#8220;root&#8221;:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
mkfifo /tmp/mypipe
# root shell
cat /tmp/mypipe|sudo /bin/bash 2&gt;&amp;1|nc -l 6000 &gt;/tmp/mypipe
</pre>
</div>
<p>If you are worried that your friend will mistype something, save the commands to a text file on a web server, and let them download it using &#8220;wget&#8221; or &#8220;curl&#8221;. Example:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
wget http://www.famzah.net/download/bind-shell.txt
# or
curl http://www.famzah.net/download/bind-shell.txt &gt; bind-shell.txt

chmod +x bind-shell.txt
./bind-shell.txt
</pre>
</div>
<p><u><strong>Reverse connect using an SSH tunnel</strong></u></p>
<p>The <a href="http://www.openbsd.org/cgi-bin/man.cgi?query=ssh&amp;sektion=1">ssh client</a> has the ability to forward a local port (review <a href="http://www.vdomck.org/2005/11/reversing-ssh-connection.html">Reversing an ssh connection</a> for a detailed example). Once you&#8217;ve set up an account for your friend, you ask them to connect to your machine:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
ssh -R 6000:127.0.0.1:6000 $IP_OF_YOUR_MACHINE
</pre>
</div>
<p>Once your friend has connected to your machine, you can connect to theirs using the reverse SSH tunnel by executing the following:</p>
<div class="sourcecode">
<pre class="brush: bash; gutter: false;">
nc 127.0.0.1 6000
</pre>
</div>
<p>The connection to 127.0.0.1 on TCP port 6000 is actually forwarded by SSH to the remote machine of your friend on their TCP port 6000.</p>
<p>Note that once you disconnect from the &#8220;nc&#8221; session, the Netcat server on the remote machine exists and needs to be restarted if you need to connect again.</p>
<br />Filed under: <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/bind-shell/'>bind shell</a>, <a href='http://blog.famzah.net/tag/linux/'>Linux</a>, <a href='http://blog.famzah.net/tag/remote-shell-bind/'>remote shell bind</a>, <a href='http://blog.famzah.net/tag/reverse-shell/'>reverse shell</a>, <a href='http://blog.famzah.net/tag/ssh-reverse-tunnel/'>ssh reverse tunnel</a>, <a href='http://blog.famzah.net/tag/ubuntu/'>ubuntu</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1108&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2012/01/06/bind-a-shell-on-linux-and-reverse-connect-to-it-through-a-firewall/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>
	</item>
		<item>
		<title>DIY temperature and humidity wireless data logger</title>
		<link>http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/</link>
		<comments>http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/#comments</comments>
		<pubDate>Mon, 26 Dec 2011 16:56:50 +0000</pubDate>
		<dc:creator>Ivan Zahariev</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[ATmega168]]></category>
		<category><![CDATA[atmel avr]]></category>
		<category><![CDATA[DIY]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[humidity]]></category>
		<category><![CDATA[PCB]]></category>
		<category><![CDATA[SHT11]]></category>
		<category><![CDATA[temperature]]></category>
		<category><![CDATA[wireless]]></category>
		<category><![CDATA[XBee]]></category>

		<guid isPermaLink="false">http://blog.famzah.net/?p=1078</guid>
		<description><![CDATA[Monitoring and controlling relative humidity is important for humans health. Too low or too high humidity feels uncomfortable, but most importantly high moisture is a factor for growing mold in your home, which could be health threatening (according to EPA and CDC). I will not go into details on how to control humidity. Instead I&#8217;ll [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1078&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Monitoring and controlling <a href="http://en.wikipedia.org/wiki/Relative_humidity">relative humidity</a> is important for humans health. Too low or too high humidity feels uncomfortable, but most importantly high moisture is a factor for growing mold in your home, which could be health threatening (according to <a href="http://www.epa.gov/mold/moldresources.html">EPA</a> and <a href="http://www.cdc.gov/mold/dampness_facts.htm">CDC</a>). I will not go into details on how to control humidity. Instead I&#8217;ll describe what motivated me to design and create my own temperature and humidity sensor which reports its readings every minute to a central Linux server.</p>
<p><a href="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg"><img src="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg?w=450&h=337" alt="" title="Sensor with XBee (wireless)" width="450" height="337" class="aligncenter size-full wp-image-1089" /></a></p>

<a href='http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/with-xbee/' title='Sensor with XBee (wireless)'><img data-liked='0' data-attachment-id='1089' data-orig-size='1024,768' width="150" height="112" src="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg?w=150&h=112" class="attachment-thumbnail" alt="Sensor with XBee (wireless)" title="Sensor with XBee (wireless)" /></a>
<a href='http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/only-usb/' title='Sensor without XBee (only USB)'><img data-liked='0' data-attachment-id='1091' data-orig-size='1024,768' width="150" height="112" src="http://famzah.files.wordpress.com/2011/12/only-usb.jpg?w=150&h=112" class="attachment-thumbnail" alt="Sensor without XBee (only USB)" title="Sensor without XBee (only USB)" /></a>
<a href='http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/schematics/' title='Schematics'><img data-liked='0' data-attachment-id='1093' data-orig-size='1782,1270' width="150" height="106" src="http://famzah.files.wordpress.com/2011/12/schematics.png?w=150&h=106" class="attachment-thumbnail" alt="Schematics" title="Schematics" /></a>
<a href='http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/board/' title='PCB board'><img data-liked='0' data-attachment-id='1094' data-orig-size='447,193' width="150" height="64" src="http://famzah.files.wordpress.com/2011/12/board.png?w=150&h=64" class="attachment-thumbnail" alt="PCB board" title="PCB board" /></a>

<p>The main requirements for my design were the following:</p>
<ul>
<li>Affordable price, as I wanted to install four sensors.</li>
<li>Great accuracy both for temperature and humidity readings.</li>
<li>Over-the-air communication, as I wanted to be able to install a sensor even in my bathroom, where I can&#8217;t run data or power wires. Support for wired communication too, so that we can reduce the overall price by not installing the wireless module.</li>
<li>Data logging to a computer, because both temperature and humidity change with time, for example when you sleep in the room, and you can&#8217;t look at a mechanical temperature or humidity meter every minute, in order to write down the results.</li>
<li>Battery operated, in order to avoid any wiring.</li>
<li>Open-source hardware and software toolchain, so I chose Atmel AVR microcontrollers. I got sick of Microchip and their commercial C compilers.</li>
<li>To have fun with electronics but at the same time create the device as fast as possible, as free time turned out to be a pretty limited resource recently.</li>
</ul>
<p>I managed to accomplish most of the requirements I set with two exceptions: the device operates only a month on batteries, and cumulatively I spent almost a week to design, solder, develop the firmware, and test the device. Now all the sensors operate from a wall-plug power adapter, and my hunger for environmental control in my house is satisfied.</p>
<p>I&#8217;ll now try to describe the whole process and the reasons behind my engineer decisions. Note that I&#8217;m an amateur hobbyist.  </p>
<p><u><strong>Idea and requirements</strong></u><br />
I wrote down all my thoughts in a text editor. Then re-designed all the sticky notes into requirements, and did so a few more times, in order to finally decide what I want to design and not get distracted by new random ideas in my head.</p>
<p><u><strong>Power supply</strong></u><br />
I wanted the device to be able to operate both via USB, and thus be powered by 5V, as well as to be powered by an accumulator or a battery with an input voltage up to 12V, so that it could be used in a car too. I put a polarity protection diode D1 in series with the power line, so that an accidental polarity mismatch doesn&#8217;t burn out the power regulator. Such a protection diode must have very low voltage drop and thus low power loss, and the Schottky diode <a href="http://www.datasheetcatalog.com/datasheets_pdf/1/N/5/8/1N5819.shtml">1N5819</a> seemed like a good match. </p>
<p>Operating from a battery also means that the voltage regulator must be extremely efficient and with a low bias current consumption, which means that it should draw almost nothing while there is nothing connected to it at its output as a load. Most battery operated devices &#8220;sleep&#8221; during most of their life cycle, so their consumption is close to zero. I used the ultra low-dropout fixed voltage regulator <a href="http://www.national.com/pf/LP/LP2986.html">LP2986-33</a>, marked as U1 in the schematics. The whole circuit operates at 3.3V because of the XBee wireless modules, and also because operating at a lower voltage usually gives lower power consumption.</p>
<p>Since we can have two different power sources, there must be a way to choose which one is active. You can switch between the power sources using the PWR_SELECT jumpers.</p>
<p><u><strong>Wired communication via USB</strong></u><br />
I wanted to have the option to use the sensors by directly connecting them to a computer. This way we could save the money for an XBee wireless module. I used the classical USB-to-Serial solution <a href="http://www.ftdichip.com/Products/ICs/FT232R.htm">FT232R</a>, which is also quite inexpensive and requires almost no external components. You can see it in the schematics as U2. Note that the I/O lines of FT232R must be configured to operate at 3.3V too. This is done by connecting pin 17, which is the internal 3.3V regulator of FT232R, to pin 4. The internal 3.3V regulator is not used for anything else, and in theory I could have powered the I/O lines, pin 4, directly from the main voltage regulator U1.</p>
<p><a href="http://famzah.files.wordpress.com/2011/12/only-usb.jpg"><img src="http://famzah.files.wordpress.com/2011/12/only-usb.jpg?w=150&h=112" alt="" title="Sensor without XBee (only USB)" width="150" height="112" class="aligncenter size-thumbnail wp-image-1091" /></a></p>
<p><u><strong>Wireless communication</strong></u><br />
The <a href="http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-zb-module#overview">XBee modules</a> is something I wanted to play with for a long time. They seem very easy to work with and are packed with all kind of features. Though in my case I&#8217;m not using almost any of them, not even the AES encryption which could secure the data channel. I&#8217;m using the Series 1 XBee low-power embedded RF modules (XB24), which have a power of 1 mW and 30 m indoor range. There are many comments in Internet that the indoor range of the XBee modules is poor and I can confirm that. The range really depends on what the signal must travel through. Sometimes you lose the link even through one wall, sometimes it can go through a few walls. The <a href="http://ftp1.digi.com/support/images/XST-AN019a_XBeeAntennas.pdf">XBee &amp; XBee-PRO OEM RF Module Antenna Considerations</a> is a great article by the XBee manufacturers. After all, probably by using such a low-power module, we shouldn&#8217;t expect so great results. It works well in my apartment though &#8212; all rooms report to the central XBee module successfully. On the server&#8217;s side, the receiver, I first had an XBee with chip antenna, which I replaced with an XBee-PRO with whip antenna. This made no difference.</p>
<p>Wiring the XBee module is very easy. It requires no external components. If you read the PDF datasheet, you&#8217;ll see how many great features an XBee has. I&#8217;m using only three of them:</p>
<ul>
<li>Sleep mode &#8212; the microcontroller puts the XBee to sleep by controlling the SLEEP_RQ pin 9.</li>
<li>Networking addressing &#8212; each XBee is configured with a unique address, so that the receiver on the server side knows which reading belongs to which sensor probe.</li>
<li>API operation &#8212; the receiver XBee module operates in an API mode, which is a frame-based protocol that provides greater flexibility and more control. For example, besides the received data payload, an API frame gives information about the sender&#8217;s address and the signal quality.</li>
</ul>
<p><a href="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg"><img src="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg?w=150&h=112" alt="" title="Sensor with XBee (wireless)" width="150" height="112" class="aligncenter size-thumbnail wp-image-1089" /></a></p>
<p><u><strong>Temperature and humidity sensor</strong></u><br />
I wanted to interface the sensor directly using a digital protocol, so that we can minimize the ADC stuff and errors. The <a href="http://www.sensirion.com/en/01_humidity_sensors/02_humidity_sensor_sht11.htm">SHT11</a> turned out to be the sensor I was looking for:</p>
<ul>
<li>Relative humidity accuracy: +/- 3% in the range 20% to 80% RH. The sensor comes fully calibrated.</li>
<li>Temperature accuracy: +/- 1.5 degrees Celsius in the range -15 to +65 degrees Celsius.</li>
<li>Digital two-wire interface.</li>
<li>Very low energy consumption: 80uW (at 12bit, 3V, 1 measurement/s).</li>
</ul>
<p>The SHT11 is a bit pricey but works very easily and accurately out of the box, so I decided to go with it. There is a very good alternative at <a href="http://www.sparkfun.com/">Sparkfun</a> &#8212; the <a href="http://www.sparkfun.com/products/10167">RHT03</a> humidity and temperature sensor (also known as &#8220;RHT-22&#8243;). There were some contradictive comments by Sparkfun users &#8212; some say it works very well, some doubt its accuracy. I haven&#8217;t tried it but have left space JP7 on the current board, so that at some later time I could solder one RHT03 and use it with the existing schematics.</p>
<p>One note about the SHT11 two-wire interface. Definitely use a pull-up resistor on the DATA wire, as advised in the PDF! I tried to do some magic by the microcontoller and failed. With the exception of the pull-up resistor, everything else worked with no other problems with the SHT11 sensor. The manufacturer Sensirion provides <a href="http://www.sensirion.com/en/pdf/product_information/Sample_Code_humidity_sensor_SHTxx.pdf">Sample code for the SHTxx sensors</a> which turned out to be very useful. I was able to re-code it for the AVR GNU C compiler in a couple of minutes.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Cyclic_redundancy_check">CRC</a> calculation got me a bit confused. There are multiple different ways to calculate a CRC checksum, and they all provide different results. Each CRC calculation depends on the selected CRC polynomial, which is something like a bit-mask that defines the algorithm for the CRC calculation. After lots of struggle, I finally found an excellent <a href="http://ghsi.de/CRC/">Online CRC Calculation</a> web wizard, which also includes a hardware implementation example, and sample C and VERILOG implementations, which you can copy-paste in your program. Thank you Kay Gorontzi!</p>
<p><u><strong>Microcontroller</strong></u><br />
Initially I worked with <a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=2004">ATmega8</a>. Then I switched to <a href="http://www.atmel.com/dyn/products/product_card.asp?part_id=3303">ATmega168</a> because of the much lower power consumption. I could have used any other Atmel AVR microcontroller which has USART, internal oscillator, and sleep mode. Though ATmega8 or ATmega168 are always available in my local electronics shop, so I chose one of them. Besides the lower power consumption, ATmega168 has one other major advantage for my application &#8212; the watchdog timer can wake the chip from sleep mode and directly execute an interrupt, thus not re-starting the program from the very beginning.</p>
<p><u><strong>Firmware</strong></u><br />
I&#8217;m working on Windows 7 64-bit and used a <a href="http://www.fischl.de/usbasp/">USBasp programmer</a> to download the code into the microcontroller. The whole development toolchain is packaged into the <a href="http://winavr.sourceforge.net/">WinAVR</a> suite. It includes the <a href="http://www.nongnu.org/avr-libc/">AVR GCC</a> compiler and the <a href="http://www.nongnu.org/avrdude/">avrdude</a> programmer. I also downloaded a <a href="http://www.hookersandbooze.com/avr-gcc-makefile/">sample Makefile</a> which makes compilation and firmware download easy.</p>
<p>The main loop of the program does two tasks &#8212; measures and displays the readings over the serial port (which goes to the USB or over-the-air via XBee), and sleeps for about 60 seconds. As already mentioned, I use the new feature of ATmega168 which allows for the Watchdog timer to generate an interrupt, which wakes the chip from sleep mode. This is very handy as it allows you to continue the program at the point where you put it to sleep. The sleep mode was something new for me; there are some URLs in the source code which show what online articles helped me to master it. Note that the XBee RF transmitter is also put into sleep mode, in order to save battery.</p>
<p><u><strong>Data collector</strong></u><br />
All the sensor readings are collected to a Linux server over-the-air. I use an <a href="http://www.sparkfun.com/products/8687">XBee Explorer USB</a> by <a href="http://www.sparkfun.com/">Sparkfun</a> to connect the XBee receiver with the Linux server. The XBee is seen as a serial device on the Linux box. The frame protocol of the XBee API is easy to understand and I implemented a Perl script to parse it. Here is a sample reading which is received from one of my wireless sensors (0&#215;0001 is the address of the probe standing outside of my apartment):</p>
<blockquote><p>[Mon Dec 26 17:32:11 2011] RX_packet: source=0&#215;0001, rssi=-55dBm (opt=0&#215;00):  4.24;69.04</p></blockquote>
<p>As you can see, now it&#8217;s winter here &#8212; 4.24 degrees Celsius temperature; 69.04% relative humidity (RH).</p>
<p><u><strong>Board design</strong></u><br />
Both the schematics and PCB board were designed using <a href="http://www.cadsoftusa.com/">Eagle PCB</a> by CadSoft. This is a great piece of software. Most PCB factories accept Eagle board files directly. You&#8217;ll find my Eagle files in the Resources section at the end of this article.</p>
<p><u><strong>Lessons learned</strong></u><br />
There are a few things which I discovered only once I already built and tested the schematics:</p>
<ul>
<li>Battery-operated devices are hard to design &#8212; in theory my sensors were supposed to last for about 3 months with a 9V battery. In practice only one of them lasted for a month, the others &#8211; for a week.</li>
<li>Electronics components, boards and/or assembly could differ a lot &#8212; see above. Also one of the SHT11 sensors is <strong>sometimes</strong> giving CRC errors.</li>
<li>XBee indoor range is not excellent.</li>
<li>Research and development takes a lot of time, usually 2x or 3x the time you planned. Furthermore, building something with love takes even more time, but in the end it pays off with great results and satisfaction.</li>
<li>You can create an electronics device with a lower price than what is currently offered on the marked. But this has its price too &#8212; your time, and you get no guarantee whatsoever.</li>
</ul>
<p>I had different plans for this blog article but it got so lengthy that I wrote it in four different days (and it&#8217;s Christmas now). The main idea was to sketch the device and all its components, and to show that they can work together as a finished product. If there is any interest by other people, I&#8217;m happy to answer to any questions.</p>
<p>Happy holidays and best of luck in 2012!!! <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Resources:</p>
<ul>
<li><a href="http://famzah.net/download/wireless-sensor/xbee-read-th-sensors.txt">Perl XBee API parser</a></li>
<li><a href="http://famzah.net/download/wireless-sensor/sht1x/">Firmware source code</a></li>
<li><a href="http://famzah.net/download/wireless-sensor/eagle/">Eagle schematics and PCB board files</a></li>
</ul>
<br />Filed under: <a href='http://blog.famzah.net/category/development/'>Development</a>, <a href='http://blog.famzah.net/category/hardware/'>Hardware</a>, <a href='http://blog.famzah.net/category/linux/'>Linux</a> Tagged: <a href='http://blog.famzah.net/tag/atmega168/'>ATmega168</a>, <a href='http://blog.famzah.net/tag/atmel-avr/'>atmel avr</a>, <a href='http://blog.famzah.net/tag/diy/'>DIY</a>, <a href='http://blog.famzah.net/tag/electronics/'>electronics</a>, <a href='http://blog.famzah.net/tag/humidity/'>humidity</a>, <a href='http://blog.famzah.net/tag/pcb/'>PCB</a>, <a href='http://blog.famzah.net/tag/sht11/'>SHT11</a>, <a href='http://blog.famzah.net/tag/temperature/'>temperature</a>, <a href='http://blog.famzah.net/tag/wireless/'>wireless</a>, <a href='http://blog.famzah.net/tag/xbee/'>XBee</a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/famzah.wordpress.com/1078/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/famzah.wordpress.com/1078/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/famzah.wordpress.com/1078/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.famzah.net&#038;blog=10109730&#038;post=1078&#038;subd=famzah&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.famzah.net/2011/12/26/diy-temperature-and-humidity-wireless-data-logger/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e354dbace6659e6cfc6ec6f01d7d962d?s=96&#38;d=http%3A%2F%2F0.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">famzah</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg" medium="image">
			<media:title type="html">Sensor with XBee (wireless)</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg?w=150" medium="image">
			<media:title type="html">Sensor with XBee (wireless)</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/only-usb.jpg?w=150" medium="image">
			<media:title type="html">Sensor without XBee (only USB)</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/schematics.png?w=150" medium="image">
			<media:title type="html">Schematics</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/board.png?w=150" medium="image">
			<media:title type="html">PCB board</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/only-usb.jpg?w=150" medium="image">
			<media:title type="html">Sensor without XBee (only USB)</media:title>
		</media:content>

		<media:content url="http://famzah.files.wordpress.com/2011/12/with-xbee.jpg?w=150" medium="image">
			<media:title type="html">Sensor with XBee (wireless)</media:title>
		</media:content>
	</item>
	</channel>
</rss>
