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

<channel>
	<title>So it reminds me (TM) &#187; So It Reminds Me</title>
	<atom:link href="http://log.bondhan.web.id/feed/" rel="self" type="application/rss+xml" />
	<link>http://log.bondhan.web.id</link>
	<description>keep digging and logging your knowledge</description>
	<lastBuildDate>Wed, 25 Apr 2012 10:15:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Penjelasan Singkat Protokol Kontak Pada Kartu Pintar (T=0 &amp; T=1)</title>
		<link>http://log.bondhan.web.id/2012/04/25/penjelasan-singkat-protokol-kontak-pada-kartu-pintar-t0-t1/</link>
		<comments>http://log.bondhan.web.id/2012/04/25/penjelasan-singkat-protokol-kontak-pada-kartu-pintar-t0-t1/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 10:15:33 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Smart Card]]></category>
		<category><![CDATA[7816]]></category>
		<category><![CDATA[kartu pintar]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=203</guid>
		<description><![CDATA[Wah sudah lama gak update nih blog, padahal dah bayar hosting, hehehe.. :p, untuk karena itu dalam rangka melakukan hal positif (ciee), ada baiknya menulis sedikit pengetahuan saya di bidang protokol kartu pintar jenis T=0 dan T=1 (baca: T equal &#8230; <a href="http://log.bondhan.web.id/2012/04/25/penjelasan-singkat-protokol-kontak-pada-kartu-pintar-t0-t1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2012/04/25/penjelasan-singkat-protokol-kontak-pada-kartu-pintar-t0-t1/"></a></div><p>Wah sudah lama gak update nih blog, padahal dah bayar hosting, hehehe.. :p, untuk karena itu dalam rangka melakukan hal positif (ciee), ada baiknya menulis sedikit pengetahuan saya di bidang protokol kartu pintar jenis T=0 dan T=1 (baca: T equal zero dan T equal one).</p>
<p>Sebelum kita berbicara soal protokol, ada baiknya kita mengenal yang dinamakan dengan APDU atau Application Protocol Data Unit. Jadi dari pengertian yg saya tangkap, APDU itu adalah semacam deretan angka (hexa) yg dikirim dari atau ke kartu pintar dalam bentuk tertentu (ISO 7816) dalam rangka mengirimkan sebuah perintah atau menerima jawaban. Oleh karena itu dengan APDU ini lah komunikasi antara terminal dan kartu pintar terjadi.</p>
<p><strong>APDU</strong></p>
<p>Nah format dasar dari sebuah APDU adalah CLA | INS | P1 | P2 | P3 | [Data], secara berurutan yg merupakan kepanjangan dari Class, Instruction, Parameter 1, Parameter 2 dan Parameter 3.  Sedangkan data adalah opsional atau pilihan bebas tergantung dari jenis instruksi apakah membutuhkan data atau tidak. Maka jika diperlukan data maka otomatis P3 akan menjadi Lc (Length of Command) dan jika P3 merupakan jumlah data yg diharapkan, maka P3 akan menjadi Le (Length expected).</p>
<p>Untuk lebih mudahnya mari kita lihat contoh APDU berikut untuk memilih MF (SELECT Master File):<span id="more-203"></span></p>
<p>A0 A4 00 00 02 3F 00</p>
<p>Berturut-turut:</p>
<ul>
<li>A0 = CLA</li>
<li>A4 = INS</li>
<li>00 = P1</li>
<li>00 = P2</li>
<li>02 = P3 = Lc</li>
<li>3F 00 = Data</li>
</ul>
<p>Bagaimana dengan penjelasan saya, bisa dimengerti?</p>
<p>Karena tampaknya tidak ada pertanyaan mari kita lanjutkan. <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p><strong>T = 0</strong></p>
<p>Sering disebut dengan <em>character protocol, </em>karena terminal mengirim benar2 per karakter. Ketika mengirim sebuah karakter di T=0, maka dalam satu karakter yg dikirim akan terdiri dari start bit dan end bit yg menandakan bahwa sebuah karakter akan dikirim dan akhir dari sebuah karakter.</p>
<p>Jadi dalam hal ini A0 akan dikirim terlebih dahulu, kemudian A2, kemudian 00 dan seterusnya. Permasalahan yg timbul adalah dari mana diketahui jumlah data yg dikirim? Nah, salah satu dari ciri khas dari T=0 adalah ACK atau acknowledge yaitu sebuah echo dari INS yg dikirimkan oleh kartu setelah P3 diterima. Jadi sbb:</p>
<p>T (terminal) dan C (Card)</p>
<p>T &#8211;&gt; C: A0A4000002<br />
C &#8211;&gt; T: A4 <em>(Echo)</em><br />
T &#8211;&gt; C: 3F00<br />
C &#8211;&gt; T: 9Fxx</p>
<p>Sedangkan untuk data yg akan diterima, maka akan terjadi perulangan sbb:</p>
<p><code> for (int i = 0; i &amp;lt; Lc; i++)<br />
{<br />
apduBuffer[5+i] = receiveChar();<br />
}</code></p>
<p>Sampai semua data diterima. Akibat dari hal ini, jika P3/Lc tidak sesuai dengan jumlah data ril yg dikirim, maka data tersebut akan di <em>discard</em>. Dan sebaliknya, jika data tsb kurang dari Lc, maka bisa jadi kartu akan terus menunggu dan bisa menyebabkan disinkronisasi data (terkecuali ada handling timeout, dsb).</p>
<p>Karena jumlah data atau Lc hanya berjumlah 1 byte, berarti secara teori maksimum data yg bisa dikirim dan diterima dalam satu waktu hanyalah 0xFF atau 256 bytes data.</p>
<p><strong>T = 1</strong></p>
<p>Disebut dengan blok protokol, karena APDU dikirim dalam sebuah blok dengan informasi start bit dan end bit di depan dan di akhir blok. Pada T=1 juga terdapat 3 byte informasi tambahan masing-masing NAD, PCB dan LEN. Dan di akhir block terdapat check byte yaitu LRC atau CRC, tergantung mode mana yg dipilih.</p>
<p>NAD adalah Node Address, PCB adalah Protocol Control dan LEN merupakan jumlah bytes (tidak termasuk checking characters). Pada umumnya NAD bernilai 0&#215;00, kalau tidak salah NAD memungkinkan terjadinya komunikasi satu terminal dengan banyak kartu, sehingga NAD bisa bernilai &gt; 0&#215;00. PCB adalah satu byte bisa terdiri dari 3 jenis yaitu I block, R-Block atau S-Block, yang masing-masing memainkan fungsi yg berbeda-beda, misalkan R-Block untuk chaining, S-Block untuk waiting time, dst.</p>
<p>LRC atau longitudinal redundancy check dan CRC atau cyclic redundancy check merupakan metode konfirmasi integritas ygn menandakan bahwa tidak terjadi perubahan informasi di dalam proses pengiriman. LRC merupakan hasil Xor dari byte awal(NAD) hingga byte akhir sblm LRC.</p>
<p>Pengiriman data &gt; 256 bytes di T=1 adalah mungkin. Tahapan untuk melakukan hal ini adalah negoisasi besaran buffer di terminal dan di kartu, informasi ini bisa di set di ATR. Kemudian jika jumlah data melebihi jumlah buffer data maka data dapat dibagi sesuai maksimum ukuran buffer dan menggunakan metodei rantai atau <em>chaining</em> dalam setiap pengiriman data.</p>
<p>Protokol ini memiliki kemiripan dengan contactless, terkecuali tidak terdapat anticollision di sini, tentu saja karena dalam terminologi kontak, satu kartu akan hanya terkonek dengan satu terminal berbeda dengan &#8220;tanpa kontak&#8221; atau <em>contactless </em>dimana banyak kartu bisa terhubung dengan satu terminal dan bisa aktif semuanya dalam waktu bersamaan atau yg sering kita kenal dengan <em>multi activation</em>.</p>
<p><strong>Penjelasan Umum</strong></p>
<p>Sebenarnya pengguna akhir tidak perlu peduli dengan protol-protokol diatas, karena semua sudah dihandle oleh hardware dan driver. Oh ya, untuk menandakan apakah sebuah kartu bertipe T=0 atau T=1 adalah dari informasi ATR (Answer To Reset) yang dihasilkan. Jika informasi ATR salah, maka mau tidak mau komunikasi APDU selanjutnya tidak akan terjadi dengan baik.</p>
<p>Secara logika T=1 lebih unggul dibandingkan T=0 karena keefisienan di dalam transmisi data yang secara teori mampu mengirim dan menerima jumlah data melebihi 256 bytes yg mana T=0 tidak mampu melakukannya.</p>
<p>Sebenernya banyak sekali yg perlu dijelaskan, akan tetapi karena tampaknya penulis mood2an, maka dicukupi sekian dulu. Jika ada pembaca yg kebetulan mengerjakan T=1 dan mengalami permasalahan atau ternyata memiliki tambahan informasi silahkan untuk menghubungi saya. <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Oh ya, permasalahan terakhir yg blm saya pecahkan adalah algoritma CRC yang dimanakah yang digunakan di T=1? Jika teman2 berhasil memecahkan masalah ini atau memiliki referensi mohon sekiranya memberitahukan saya <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .</p>
<p>Terima Kasih.</p>
<p>Referensi:</p>
<ol>
<li>ISO 7816-3</li>
<li>Pengalaman proyek prototyping T=1</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2012/04/25/penjelasan-singkat-protokol-kontak-pada-kartu-pintar-t0-t1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pengenalan Smart Card</title>
		<link>http://log.bondhan.web.id/2012/01/17/pengenalan-smart-card/</link>
		<comments>http://log.bondhan.web.id/2012/01/17/pengenalan-smart-card/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 09:59:31 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Smart Card]]></category>
		<category><![CDATA[7816]]></category>
		<category><![CDATA[kartu pintar]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=197</guid>
		<description><![CDATA[Sebetulnya saya masih baru di bidang ini bisa dibilang 10 bulan + 9 bln berjalan. Akan tetapi alhamdulillah, dalam waktu yg singkat tersebut saya telah berhasil menjalankan beberapa project kecil, ya scope kecil saja, yg bisa dibilang -insyaAllah- mewakili smart card &#8230; <a href="http://log.bondhan.web.id/2012/01/17/pengenalan-smart-card/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2012/01/17/pengenalan-smart-card/"></a></div><p>Sebetulnya saya masih baru di bidang ini bisa dibilang 10 bulan + 9 bln berjalan. Akan tetapi alhamdulillah, dalam waktu yg singkat tersebut saya telah berhasil menjalankan beberapa project kecil, ya <em>scope </em>kecil saja, yg bisa dibilang -insyaAllah- mewakili smart card atau kartu pintar. Saya hendak jelaskan ini terlebih dahulu daripada nanti saya dibilang sok tau hehehe..</p>
<p>Jadi artikel ini dibuat berdasarkan pengalaman saya sendiri sebagai seorang programmer/developer kartu pintar dan dibuat mengalir saja tanpa bahasa resmi dan saklek, mkn sekali2 saya akan membuka referensi..</p>
<p>Oh ya, latar belakang smart card saya di <em>Low Level</em> (Implementasi T=0, T=1, T=CL type A &amp; B semuanya di samsung chip, mixed mode) dan di <em>High Level</em> khususnya java card (e-KTP versi company saya tapinya , beberapa proyek ID/loyalti dan berikutnya ke pembayaran/EMV based). Dengan latar belakang 19 bulan berjalan bisa dibilang saya masih newbie gan&#8230;<span id="more-197"></span></p>
<p>Untuk mengenal smart card <em>at least</em> harus mendapakan dasar-dasar dari 7816 terutama buku ke 3 dan ke 4 (7815-3 &amp; 4). Isinya dari ISO menjelaskan dimensi dari sebuah kartu pintar yang standar, protokol komunikasi T=0 dan T=1, error status, dst.. Bisa dibilang tanpa melewati dasar2 7816, maka org tersebut bisa dibilang meraba-raba dalam kegelapan. Jika agan adalah nubitol dalam bidang ini, maka segeralah baca ISO 7816 nya ya..hehehe..</p>
<p>Dalam segi fisik model komunikasi bisa di bagi ke <em>contact</em> dan <em>contactless, </em>yag secara harfiah bisa diartikan &#8220;menyentuh/kena&#8221; dan &#8220;tidak menyentuh/tidak kena/tidak kontak&#8221;, hehehe susah ya mencari kata yg sepadan dalam bahasa ibu kita nih. Paling gampang klo kontak itu seperti kartu SIM (<em>simcard),</em> dan contactless seperti kartu flaz bank BCA, kartu KTP indonesia, mandiri e-toll, dst..</p>
<p>Nah<em> contact</em> sendiri memiliki 2 protokol T=0 dan T=1, dan <em>contactless </em>memiliki T=CL (Contact Less) yg memiliki 2 tipe untuk ISO 14443-3 &amp; 4 yaitu type A dan B. Kalau agan2 sering mendengar mifare dll, maka setau saya protokol mereka berbeda..sayang sekali saya belum kesampean mendevelop mifare.</p>
<p>Apa sih protokol itu? Protokol adalah aturan2 (yg harus di patuhi) yang memungkinkan terjadinya komunikasi. Jadi jika kita berbicara tentang protokol-protokol pada smart card, maka akan banyak penjelasan yang insyaAllah akan saya jelaskan kapan-kapan.</p>
<p><em>Contact</em></p>
<p>Kartu jenis ini mkn yg paling mudah kita dapatkan terutama SIM kita tentu saja. Untuk belajar kartu pintar, agan wajib memiliki yang namanya (smart card) reader. Ketika sebuah kartu pintar dimasukkan de dalam terminal/reader yang mendukung iso 7816, maka yg terjadi adalah, kartu tersebut ter-<em>trigger </em>dan mengeluarkan sederetan angka-angka yg dinamakan dengan ATR.</p>
<p>Proses<em> trigger</em> dapat kita istilahkan dengan <em>reset</em> dan kartu akan menjawab dengan <em>Answer To Reset</em>.</p>
<p>Apa itu reset? Reset adalah kondisi/state yang terjadi pada pin-pin sebuah kartu pintar yaitu:</p>
<ol>
<li>VCC/Tegangan pada pin power adalah HIGH atau ON</li>
<li>CLK pada CLK pin sedang berjalan/terjadi</li>
<li>dan kondisi pada Reset Pin adalah LOW atau OFF</li>
</ol>
<p>maka otomatis kartu akan menjawab dengan ATR. Berikut schema timing diagram ISO 7816:</p>
<p><a href="http://log.bondhan.web.id/wp-content/uploads/atr-activation.png"><img class="alignleft size-medium wp-image-198" title="atr-activation" src="http://log.bondhan.web.id/wp-content/uploads/atr-activation-300x117.png" alt="" width="300" height="117" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Nah, pada kartu pintar pada umumnya terdapat <a href="http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-2.aspx">8 PIN</a> (VCC, GND, RESET, I/O, VPP, 2 PIN N/C atau RFU), nah karena 2 pin biasanya tidak digunakan (digunakan untuk yg mensupport protokol tambahan seperti usb, dst), maka sering ditemukan kartu pintar dengan 6 pin saja.</p>
<p>OK, jadi dari artikel <em>teaser</em> ini and bisa2 saja menyimpulkan kalau kartu dimasukkan ke terminal dan kartu menjawab dengan ATR, maka kartu tersebut berfungsi <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> . Berikutnya ada beberapa ide tulisan menarik (I think boring) yg mkn bisa di share:</p>
<ol>
<li>ATR <em>decoder/decomposer</em></li>
<li>Contactless T=CL ISO 14443 Type A &amp; B</li>
<li>Apa sih beda Native OS dan Java Card OS? Berikut contohnya?</li>
<li>T=1 dan T=0 perbedaan secara praktikal</li>
<li>SAM (secure access module) dan cara kerjanya</li>
<li>Protokol pembayaran VISA/Master Card?</li>
<li>Apa sih isi dari smart card</li>
<li>dst..</li>
</ol>
<p>InsyaAllah bersambung&#8230;doain aja saya ada semangat untuk nulis <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2012/01/17/pengenalan-smart-card/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>A Simple Crypto Tool (SmartConverter)</title>
		<link>http://log.bondhan.web.id/2012/01/04/a-simple-crypto-tool-smartconverter/</link>
		<comments>http://log.bondhan.web.id/2012/01/04/a-simple-crypto-tool-smartconverter/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 08:14:35 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[crc]]></category>
		<category><![CDATA[crypto]]></category>
		<category><![CDATA[des]]></category>
		<category><![CDATA[hash]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[rsa]]></category>
		<category><![CDATA[sha]]></category>
		<category><![CDATA[tool]]></category>
		<category><![CDATA[triple des]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=186</guid>
		<description><![CDATA[Had not updated this blog for long time. Well I just finished creating a simple crypto tool using openssl and crc. Probably it&#8217;s quite helpful for you. You can download it here. Please note that the HMAC sha1, ripemd, rsa &#8230; <a href="http://log.bondhan.web.id/2012/01/04/a-simple-crypto-tool-smartconverter/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2012/01/04/a-simple-crypto-tool-smartconverter/"></a></div><p>Had not updated this blog for long time. Well I just finished creating a simple crypto tool using openssl and <a href="http://www.lammertbies.nl/comm/info/crc-calculation.html">crc</a>. Probably it&#8217;s quite helpful for you. You can download it <a href="http://bondhan.web.id/files/SmartConverter.zip">here</a>.</p>
<p>Please note that the HMAC sha1, ripemd, rsa decrypt and encrypt have not been tested yet.</p>
<p>I am planning to upload the code to GitHub or LaunchPad, however the code still not cooked yet, if you need one <span id="more-186"></span>send me email to bondhan(dot)novandy(at)gmail(dot)com.</p>
<p><a href="http://log.bondhan.web.id/wp-content/uploads/about.png"><img class="alignleft size-medium wp-image-187" title="about" src="http://log.bondhan.web.id/wp-content/uploads/about-300x211.png" alt="" width="300" height="211" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><a href="http://log.bondhan.web.id/wp-content/uploads/des.png"><img class="alignleft size-medium wp-image-188" title="des" src="http://log.bondhan.web.id/wp-content/uploads/des-300x230.png" alt="" width="300" height="230" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/rsa.png"><img class="alignleft size-medium wp-image-189" title="rsa" src="http://log.bondhan.web.id/wp-content/uploads/rsa-300x230.png" alt="" width="300" height="230" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/mac.png"><img class="alignleft size-medium wp-image-190" title="mac" src="http://log.bondhan.web.id/wp-content/uploads/mac-300x230.png" alt="" width="300" height="230" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/hash.png"><img class="alignleft size-medium wp-image-191" title="hash" src="http://log.bondhan.web.id/wp-content/uploads/hash-300x230.png" alt="" width="300" height="230" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/crc.png"><img class="alignleft size-medium wp-image-192" title="crc" src="http://log.bondhan.web.id/wp-content/uploads/crc-300x230.png" alt="" width="300" height="230" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2012/01/04/a-simple-crypto-tool-smartconverter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WPA2-PSK Portable Hotspot Android Froyo 2.2</title>
		<link>http://log.bondhan.web.id/2011/06/22/wpa2-psk-portable-hotspot-android-froyo-2-2/</link>
		<comments>http://log.bondhan.web.id/2011/06/22/wpa2-psk-portable-hotspot-android-froyo-2-2/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 03:48:23 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Trouble-Shoot]]></category>
		<category><![CDATA[Error Connection]]></category>
		<category><![CDATA[Froyo]]></category>
		<category><![CDATA[Wifi]]></category>
		<category><![CDATA[WPA2 PSK]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=165</guid>
		<description><![CDATA[I was confused why windows 7 ultimate x86 cannot detect my Android portable hotspot when set to WPA2-PSK mode. Oh well I finally figured it out. My android is galaxy ace with froyo 2.2 virgin. After you setup your android &#8230; <a href="http://log.bondhan.web.id/2011/06/22/wpa2-psk-portable-hotspot-android-froyo-2-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/06/22/wpa2-psk-portable-hotspot-android-froyo-2-2/"></a></div><p>I was confused why windows 7 ultimate x86 cannot detect my Android portable hotspot when set to WPA2-PSK mode. Oh well I finally figured it out. My android is galaxy ace with froyo 2.2 virgin.</p>
<p>After you setup your android portable hotspot, from settings-&gt;wireless and networks-&gt;tethering and portable hotspot-&gt;Mobile AP Settings, here choose WP2-PSK and enter your password minimum 8 characters. Then move back one time and enable portable hotspot.</p>
<p>On windows do these steps. Pictures talk thousand words <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> . Good luck!<br />
<span id="more-165"></span></p>
<p>	<a href="http://log.bondhan.web.id/wp-content/uploads/create-connection-first.png"><img class="aligncenter size-medium wp-image-168" title="create-connection-first" src="http://log.bondhan.web.id/wp-content/uploads/create-connection-first-300x219.png" alt="" width="300" height="219" /></a><br />
	<a href="http://log.bondhan.web.id/wp-content/uploads/create-connection.png"><img class="aligncenter size-medium wp-image-169" title="create-connection" src="http://log.bondhan.web.id/wp-content/uploads/create-connection-300x209.png" alt="" width="300" height="209" /></a><br />
	<a href="http://log.bondhan.web.id/wp-content/uploads/properties1.png"><img class="aligncenter size-medium wp-image-170" title="properties1" src="http://log.bondhan.web.id/wp-content/uploads/properties1-231x300.png" alt="" width="231" height="300" /></a><br />
        <a href="http://log.bondhan.web.id/wp-content/uploads/properties2.png"><img class="aligncenter size-medium wp-image-171" title="properties2" src="http://log.bondhan.web.id/wp-content/uploads/properties2-231x300.png" alt="" width="231" height="300" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/06/22/wpa2-psk-portable-hotspot-android-froyo-2-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ATR Decoder</title>
		<link>http://log.bondhan.web.id/2011/05/13/atr-decoder/</link>
		<comments>http://log.bondhan.web.id/2011/05/13/atr-decoder/#comments</comments>
		<pubDate>Fri, 13 May 2011 07:17:25 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Smart Card]]></category>
		<category><![CDATA[ATR]]></category>
		<category><![CDATA[Decoder]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=159</guid>
		<description><![CDATA[To refresh my minds in smart cards area, I decided to write an ATR decoder. Since that I have decided to focus myself on one of the scripting languages, that is Python, I decided to write an ATR decoder. You &#8230; <a href="http://log.bondhan.web.id/2011/05/13/atr-decoder/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/05/13/atr-decoder/"></a></div><p>To refresh my minds in smart cards area, I decided to write an ATR decoder. Since that I have decided to focus myself on one of the scripting languages, that is Python, I decided to write an ATR decoder.</p>
<p>You can download <a href="http://bondhan.web.id/files/atr_decoder.py">here</a> for python version, it is based on <em>Smart Card Handbook, Third Edition Wolfgang Rankl and Wolfgang Efﬁng, Giesecke &amp; Devrient GmbH, Munich, Germany. </em>Or in C, I wrote it last year during my first time learning smart card, download <a href="file:///C:/Documents%20and%20Settings/JaNg%20eN/My%20Documents/Downloads/ATR_Decoder_C.zip">here</a>.</p>
<p>Here&#8217;s the test result:<span id="more-159"></span></p>
<pre>
<code>ATR	= 3B9B1181213453544152434F532032314335

TS	= 3B Direct Convention

T0	= 9B
		-&gt; 11 historical characters
		-&gt; TA1 exists
		-&gt; TD1 exists
TA1	= 11
		-&gt; FI = 0x1 (0b1)
		-&gt; DI = 0x1 (0b1)
		-&gt; F/D = 372
TD1	= 81
		-&gt; T = 1
		-&gt; TD2 exists
TD2	= 21
		-&gt; T = 1
		-&gt; TB3 exists
TB3	= 34
		-&gt; BWI = 3
		-&gt; CWI = 4
T1..TK	= 53544152434F5320323143
		-&gt; Means: 'STARCOS 21C'
TCK	= 35
		-&gt; Calculated TCK: 0d53 or 35
		-&gt; ATR Sequence is valid!
----------------------------------------
ATR	= 3B894014474732344D35323830

TS	= 3B Direct Convention

T0	= 89
		-&gt; 9 historical characters
		-&gt; TD1 exists
TD1	= 40
		-&gt; T = 0
		-&gt; TC2 exists
		-&gt; WI = 0
TC2	= 14
T1..TK	= 474732344D35323830
		-&gt; Means: 'GG24M5280'
----------------------------------------
ATR	= 3BB51100813146155620312E301E

TS	= 3B Direct Convention

T0	= B5
		-&gt; 5 historical characters
		-&gt; TA1 exists
		-&gt; TB1 exists
		-&gt; TD1 exists
TA1	= 11
		-&gt; FI = 0x1 (0b1)
		-&gt; DI = 0x1 (0b1)
		-&gt; F/D = 372
TB1	= 00
		-&gt; II	= 0
		-&gt; PI1	= 0
TD1	= 81
		-&gt; T = 1
		-&gt; TD2 exists
TD2	= 31
		-&gt; T = 1
		-&gt; TA3 exists
		-&gt; TB3 exists
TA3	= 46
		-&gt; Max Buffer = 70 bytes
TB3	= 15
		-&gt; BWI = 1
		-&gt; CWI = 5
T1..TK	= 5620312E30
		-&gt; Means: 'V 1.0'
TCK	= 1E
		-&gt; Calculated TCK: 0d30 or 1E
		-&gt; ATR Sequence is valid!
----------------------------------------
ATR	= 3BE3000081316F458031C008

TS	= 3B Direct Convention

T0	= E3
		-&gt; 3 historical characters
		-&gt; TB1 exists
		-&gt; TC1 exists
		-&gt; TD1 exists
TB1	= 00
		-&gt; II	= 0
		-&gt; PI1	= 0
TC1	= 00
TD1	= 81
		-&gt; T = 1
		-&gt; guard time (from TC1) = 0 etu
		-&gt; TD2 exists
TD2	= 31
		-&gt; T = 1
		-&gt; TA3 exists
		-&gt; TB3 exists
TA3	= 6F
		-&gt; Max Buffer = 111 bytes
TB3	= 45
		-&gt; BWI = 4
		-&gt; CWI = 5
T1..TK	= 8031C0
		-&gt; Means: '€1À'
TCK	= 08
		-&gt; Calculated TCK: 0d8 or 8
		-&gt; ATR Sequence is valid!</code>
</pre>
<p>*) In page 391, from my XOR-ing test of the ATR sequence, it should be 0&#215;35? What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/05/13/atr-decoder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sorting a List of Tuples and Dictionary</title>
		<link>http://log.bondhan.web.id/2011/05/11/sorting-a-list-of-tuples-and-dictionary/</link>
		<comments>http://log.bondhan.web.id/2011/05/11/sorting-a-list-of-tuples-and-dictionary/#comments</comments>
		<pubDate>Wed, 11 May 2011 04:17:14 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Sort]]></category>
		<category><![CDATA[Sorting]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=140</guid>
		<description><![CDATA[So not to forget. I am doing basic exercise from here. If you have a list of tuples: undordered_list = [(1, 3), (3, 2), (2, 1)] If you want to sort it based on the second tuple key, one of &#8230; <a href="http://log.bondhan.web.id/2011/05/11/sorting-a-list-of-tuples-and-dictionary/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/05/11/sorting-a-list-of-tuples-and-dictionary/"></a></div><p>So not to forget. I am doing basic exercise from <a href="http://code.google.com/edu/languages/google-python-class/exercises/basic.html">here</a>.</p>
<p>If you have a list of tuples:</p>
<pre><code>undordered_list = [(1, 3), (3, 2), (2, 1)]</code></pre>
<p>If you want to sort it based on the second tuple key, one of the solution could be:</p>
<pre><code>def sort_last(a_list_of_tuples):
output = sorted(a_list_of_tuples, key=lambda keys:keys[1])
return output</code></pre>
<p>the function above will sort the unordered_list based on the second key (keys[1]) of each tuple.</p>
<p>Now what about dictionary?<span id="more-140"></span> For example, if you have this dict:</p>
<pre><code>adict = {'a':1, 'd':4, 'b':2, 'e':5}</code></pre>
<p>Now let&#8217;s sort it ascending or descending.</p>
<pre><code>import operator

# for ascending
sorted_x = sorted(adict.iteritems(), key=operator.itemgetter(1))

# for descending
sorted_x = sorted(adict.iteritems(), key=operator.itemgetter(1), reverse=True)</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/05/11/sorting-a-list-of-tuples-and-dictionary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Talk (Gtalk) with pidgin 2.7.10</title>
		<link>http://log.bondhan.web.id/2011/03/03/google-talk-gtalk-with-pidgin-2-7-10/</link>
		<comments>http://log.bondhan.web.id/2011/03/03/google-talk-gtalk-with-pidgin-2-7-10/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 03:38:15 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Trouble-Shoot]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[adding account]]></category>
		<category><![CDATA[google talk]]></category>
		<category><![CDATA[gtalk]]></category>
		<category><![CDATA[pidgin]]></category>
		<category><![CDATA[xmpp]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=134</guid>
		<description><![CDATA[After trying for sometimes adding my gmail account on pidgin 2.7.9, I thought probably I need to update to the latest version. Then after downloading and installing the latest one, still I can not login to my gtalk using pidgin. &#8230; <a href="http://log.bondhan.web.id/2011/03/03/google-talk-gtalk-with-pidgin-2-7-10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/03/03/google-talk-gtalk-with-pidgin-2-7-10/"></a></div><p>After trying for sometimes adding my gmail account on pidgin 2.7.9, I thought probably I need to update to the latest version. Then after downloading and installing the latest one, still I can not login to my gtalk using pidgin. After did some improvisation :p I did this and it work, probably this might help you <img src='http://log.bondhan.web.id/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Here&#8217;s the setting:<span id="more-134"></span></p>
<p><a href="http://log.bondhan.web.id/wp-content/uploads/googletalk_basic_setting.png"><img class="alignleft size-full wp-image-135" title="googletalk_basic_setting" src="http://log.bondhan.web.id/wp-content/uploads/googletalk_basic_setting.png" alt="" width="331" height="511" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/googletalk_advanced_setting.png"><img class="alignleft size-full wp-image-137" title="googletalk_advanced_setting" src="http://log.bondhan.web.id/wp-content/uploads/googletalk_advanced_setting.png" alt="" width="331" height="511" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/03/03/google-talk-gtalk-with-pidgin-2-7-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Misconception in C++</title>
		<link>http://log.bondhan.web.id/2011/02/18/misconception-in-c/</link>
		<comments>http://log.bondhan.web.id/2011/02/18/misconception-in-c/#comments</comments>
		<pubDate>Fri, 18 Feb 2011 07:08:04 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Inheritance]]></category>
		<category><![CDATA[Instantiation]]></category>
		<category><![CDATA[Misconception]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=123</guid>
		<description><![CDATA[Taken from: Game Programming Golden Rules by Martin Brownlow]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/02/18/misconception-in-c/"></a></div><p><a href="http://log.bondhan.web.id/wp-content/uploads/misconception.png"><img class="aligncenter size-full wp-image-124" title="misconception" src="http://log.bondhan.web.id/wp-content/uploads/misconception.png" alt="" width="628" height="356" /></a><span id="more-123"></span><a href="http://log.bondhan.web.id/wp-content/uploads/the_truth_1.png"><img class="aligncenter size-full wp-image-125" title="the_truth_1" src="http://log.bondhan.web.id/wp-content/uploads/the_truth_1.png" alt="" width="624" height="344" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/the_truth_2.png"><img class="aligncenter size-full wp-image-126" title="the_truth_2" src="http://log.bondhan.web.id/wp-content/uploads/the_truth_2.png" alt="" width="600" height="604" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/the_truth_3.png"><img class="aligncenter size-full wp-image-127" title="the_truth_3" src="http://log.bondhan.web.id/wp-content/uploads/the_truth_3.png" alt="" width="594" height="282" /></a><a href="http://log.bondhan.web.id/wp-content/uploads/the_truth_4.png"><img class="aligncenter size-full wp-image-128" title="the_truth_4" src="http://log.bondhan.web.id/wp-content/uploads/the_truth_4.png" alt="" width="598" height="52" /></a></p>
<p>Taken from:</p>
<ul>
<li>Game Programming Golden Rules by Martin Brownlow</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/02/18/misconception-in-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ORA-12560: TNS:protocol adapter error occurs (Oracle Newbie 101)</title>
		<link>http://log.bondhan.web.id/2011/01/05/ora-12560-tnsprotocol-adapter-error-occurs-oracle-newbie-101/</link>
		<comments>http://log.bondhan.web.id/2011/01/05/ora-12560-tnsprotocol-adapter-error-occurs-oracle-newbie-101/#comments</comments>
		<pubDate>Wed, 05 Jan 2011 09:53:08 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Trouble-Shoot]]></category>
		<category><![CDATA[ORA-12560]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[tns]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=106</guid>
		<description><![CDATA[After so many years (hyperbolic :p) not touching database, my current job seems to force me to learn Oracle more. After installing the 10g Express Edition on windows XP, I could connect to the server using sqlplus if only it &#8230; <a href="http://log.bondhan.web.id/2011/01/05/ora-12560-tnsprotocol-adapter-error-occurs-oracle-newbie-101/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2011/01/05/ora-12560-tnsprotocol-adapter-error-occurs-oracle-newbie-101/"></a></div><p>After so many years (hyperbolic :p) not touching database, my current job seems to force me to learn Oracle more. After installing the 10g Express Edition on windows XP, I could connect to the server using sqlplus if only it is on the BIN folder, however any directory besides that one cannot.</p>
<blockquote><p>C:\oraclexe\app\oracle\product\10.2.0\server\BIN&gt;sqlplus hr/hr</p>
<p>SQL*Plus: Release 10.2.0.1.0 &#8211; Production on Wed Jan 5 13:19:43 2011</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Express Edition Release 10.2.0.1.0 &#8211; Production</p>
<p>SQL&gt; quit<br />
Disconnected from Oracle Database 10g Express Edition Release 10.2.0.1.0 &#8211; Production</p></blockquote>
<p>However from any directory cannot and <em>ORA-12560: TNS:protocol adapter error</em> occurs.</p>
<blockquote><p>C:\oraclexe\app\oracle\product\10.2.0\server\BIN&gt;cd \</p>
<p>C:\&gt;sqlplus hr/hr</p>
<p>SQL*Plus: Release 10.2.0.1.0 &#8211; Production on Wed Jan 5 13:20:01 2011</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>ERROR:<br />
ORA-12560: TNS:protocol adapter error</p>
<p>Enter user-name:</p></blockquote>
<p>How to solve this?<span id="more-106"></span></p>
<p><strong>1. Cek your ORACLE_SID</strong></p>
<blockquote><p>C:\Program Files\PowerCmd&gt;echo %ORACLE_SID%<br />
%ORACLE_SID%</p></blockquote>
<p><strong>2. Find out what is your ORACLE_SID should be</strong></p>
<p>a. From Start-&gt;Settings-&gt;Control Panel-&gt;Administrative Tools-&gt;Services, you should find OracleServiceXXX, the XXX is your SID (Note XXX does not necessary to be 3 letter length).</p>
<p><a href="http://log.bondhan.web.id/wp-content/uploads/oracleXE.jpg"><img class="aligncenter size-medium wp-image-108" title="oracleXE" src="http://log.bondhan.web.id/wp-content/uploads/oracleXE-300x135.jpg" alt="" width="300" height="135" /></a>b. Or you can login as system and then check from sqlplus</p>
<blockquote><p>C:\oraclexe\app\oracle\product\10.2.0\server\BIN&gt;sqlplus system</p>
<p>SQL*Plus: Release 10.2.0.1.0 &#8211; Production on Wed Jan 5 16:48:50 2011</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Enter password:</p>
<p>Connected to:<br />
Oracle Database 10g Express Edition Release 10.2.0.1.0 &#8211; Production</p>
<p>SQL&gt; show parameter instance_name</p>
<p>NAME                     TYPE     VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
instance_name                 string     xe<br />
SQL&gt;</p></blockquote>
<p>There, in my computer the value of oracle sid should be XE. Then, I execute these commands:</p>
<blockquote><p>C:\Program Files\PowerCmd&gt;echo %ORACLE_SID%<br />
%ORACLE_SID%</p>
<p>C:\Program Files\PowerCmd&gt;set ORACLE_SID=XE</p>
<p>C:\Program Files\PowerCmd&gt;sqlplus hr/hr</p>
<p>SQL*Plus: Release 10.2.0.1.0 &#8211; Production on Wed Jan 5 16:50:52 2011</p>
<p>Copyright (c) 1982, 2005, Oracle.  All rights reserved.</p>
<p>Connected to:<br />
Oracle Database 10g Express Edition Release 10.2.0.1.0 &#8211; Production</p>
<p>SQL&gt;</p></blockquote>
<p>Done!</p>
<p>References:</p>
<ul>
<li><a href="http://forums.oracle.com/forums/thread.jspa?threadID=605315" target="_blank">http://forums.oracle.com/forums/thread.jspa?threadID=605315</a></li>
<li><a href="http://forums.oracle.com/forums/thread.jspa?threadID=605315" target="_blank">http://forums.oracle.com/forums/thread.jspa?threadID=605315</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2011/01/05/ora-12560-tnsprotocol-adapter-error-occurs-oracle-newbie-101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grep Exercise (From “UNIX® Shells by Example Fourth EditionBy Ellie Quigley”)</title>
		<link>http://log.bondhan.web.id/2010/12/23/grep-exercise-from-%e2%80%9cunix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley%e2%80%9d/</link>
		<comments>http://log.bondhan.web.id/2010/12/23/grep-exercise-from-%e2%80%9cunix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley%e2%80%9d/#comments</comments>
		<pubDate>Thu, 23 Dec 2010 06:34:11 +0000</pubDate>
		<dc:creator>Bondhan Novandy</dc:creator>
				<category><![CDATA[Exercise]]></category>
		<category><![CDATA[Grep]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[grep]]></category>
		<category><![CDATA[linux scripting]]></category>

		<guid isPermaLink="false">http://log.bondhan.web.id/?p=89</guid>
		<description><![CDATA[With the same text file from the previous post we have these questions: Print all lines containing the string San. Print all lines where the person&#8217;s first name starts with J. Print all lines ending in 700. Print all lines &#8230; <a href="http://log.bondhan.web.id/2010/12/23/grep-exercise-from-%e2%80%9cunix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley%e2%80%9d/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div align="left" style="float: left; padding: 0px 5px 5px 0px;"><a name="fb_share" type="button" share_url="http://log.bondhan.web.id/2010/12/23/grep-exercise-from-%e2%80%9cunix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley%e2%80%9d/"></a></div><p>With the same text file from the previous <a href="http://log.bondhan.web.id/2010/12/21/sed-exercise-from-unix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley/">post</a> we have these questions:</p>
<div id="_mcePaste">
<ol>
<li>Print all lines containing the string San.</li>
<li>Print all lines where the person&#8217;s first name starts with J.</li>
<li>Print all lines ending in 700.</li>
<li>Print all lines that don&#8217;t contain 834.</li>
<li>Print all lines where birthdays are in December.</li>
<li>Print all lines where the phone number is in the 408 area code.</li>
<li>Print all lines containing an uppercase letter, followed by four lowercase letters, a comma, a space, and one uppercase letter.</li>
<li>Print lines where the last name begins with K or k.</li>
<li>Print lines preceded by a line number where the salary is a six-figure number.</li>
<li>Print lines containing Lincoln or lincoln (remember that grep is insensitive to case).</li>
</ol>
</div>
<p>and my answers are:<span id="more-89"></span></p>
<blockquote><p>█▓▒░bondhan@optimus-prime█▓▒░ Thu Dec 23 13:31:54</p>
<p>/media/BONDHAN_4GB/workspace/grep_exercise/ cat grep_exercise.sh | sed -n &#8216;/^[ \t\n]*cat/p&#8217; | grep -n &#8221;</p>
<p>1:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8216;San&#8217;</p>
<p>2:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8216;^J&#8217;</p>
<p>3:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8217;700$&#8217;</p>
<p>4:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color -v &#8217;834&#8242;</p>
<p>5:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8217;12\/.*\/..&#8217;</p>
<p>6:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8217;408-&#8217;</p>
<p>7:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8216;[A-Z][a-z]\{4\}, [A-Z]&#8216;<span style="white-space: pre;"> </span></p>
<p>8:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color &#8216;^[A-Za-z]* [kK][A-Za-z]*:&#8217;</p>
<p>9:<span style="white-space: pre;"> </span>cat text_grep.txt | grep  &#8211;color -n &#8216;[0-9]\{6\}$&#8217;</p>
<p>10:<span style="white-space: pre;"> </span>cat ${TEXT} | grep &#8211;color <span style="white-space: pre;"> </span>&#8216;[lL]incoln&#8217;</p></blockquote>
<div>You can download the exercise file <a href="http://bondhan.web.id/files/grep_exercise.tar.gz">here</a> or from your shell $wget http://bondhan.web.id/files/grep_exercise.tar.gz</div>
]]></content:encoded>
			<wfw:commentRss>http://log.bondhan.web.id/2010/12/23/grep-exercise-from-%e2%80%9cunix%c2%ae-shells-by-example-fourth-editionby-ellie-quigley%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

