Thursday 25 July 2013

BEST CSE ENGINEERING COLLEGES IN INDIA(ACCORDING TO AVERAGE PLACEMENTS)

#1.IIT BOMBAY (21.54 LPA)
#2.IIIT HYDERABAD(21.08)
#3.IIT DELHI(20.98)
#4.BITS PILANI(20.75)
#5.IIT KANPUR(20.74)
#6.IIT KHARAGPUR(20.64)
#7.IIT MADRAS(20.21)
#8.IIT RORKEE(20.02)
#9.IIT BHU(19.78)
#10.IIT GUWAHATI(18.7)
#11.DTU (17.40)
#12.NIT TRICHY(15.6)
#13.NIT SURATHKAL(14.7)


THE STATS ARE TAKEN BY TALKING TO THE PLACEMENTS CELL AND FROM THE OFFICIAL PLACEMENT STATS OF THE RESPECTIVE INSTI :D

Wednesday 24 July 2013



Is IIT Delhi CSE best in india?

 From what I heard & found from my research when choosing a branch and still do (as I have had the experience of studying at Delhi only so don't know first hand about others), this condition tree is used:

If (an individual has option to chose between the IIT K/B/D) {
     if (he has particular affinity for Delhi)
          he/she chooses IITD CSE;    // good faculty, great recent placements
     else if (particularly interested in Theoretical CS)
          he/she chooses IITK CSE;    // K's faculty are renowned for theoretical  
                                                    // CS research & at least 5 students go for                                              
                                                    // PhDs to Ivy League every year
     else 
          he/she chooses IITB CSE;    // good faculty, great history of jobs/startups
}
else
     he/she chooses among others subjectively with top priority being IIIT Hyd, IIT Kgp/M/others inc new etc; //IIITH has great coding culture,hence top coders

This really deserved a geeky answer!

How to surf on the internet without internet browser

Hello, now I am goint to show you how you can surf on th einternet without browser. Have you ever been find yourself sitting in front of some computer where Internet Explorer or Firefox was blocked and restricted from installing any software? If that PC is running Windows XP,  then there is chance for you to still surf on the Internet. Just follow this:
Open Calculator, Start> Program Files> Accessories> Calculator, or press Windows+R and type ‘calc’ in the run box, click OK. In Calculator, go to Help> Help Topics.Right click on the left hand side of the title bar and click on ‘Jump to URL’. Type in the URL and make sure include the ‘http://’ at the beginning.

Basically what you are looking at is Internet Explorer 6 inside a help window, but this version of program isn’t quite smart. This was tested in Windows XP SP2 with Internet Explorer 6 and I’m not sure whether it will works in Internet Explorer 7 installed computer.

Hmm, this was a very fast tutorial but maybe was useful for someone.

Enjoy.

How to hack with IP address

How to hack with IP address

Did you know how much stuff you can do with an ip address?


There is a plenty of tutorials  that go into how to get an IP Address from the preferred mark of your choice. Now I will not go into that subject. Alright so say we got the targets IP Address finally. What do we do with this IP Address. Well first you should ping the IP Address to make sure that its alive or how we say online. Now at the bottom I will include some links where you can get some key tools that may help on your journey through the electronic jungle. So we need to find places to get inside of the computer so we can start trying to find a way to "hack" that. Port Scanners are used to identify the open ports on a machine thats running on a network, whether its a router, or a desktop computer, they all have ports. Protocols use these ports to communicate with other services and resources on the network.  Well Blues Port Scanner will scan the IP address that you chose and identify open ports that are on the target box. 

Blues Port Scaner you can download from here:

For example:
Idlescan using Zombie <Domain Name> (192.150.13.111:80); Class: Incremental
Interesting ports on 208.225.90.120:
(The 65522 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
25/tcp open smtp
80/tcp open http
111/tcp open sunrpc
135/tcp open loc-srv
443/tcp open https 1027/tcp open IIS
1030/tcp open iad1
2306/tcp open unknown
5631/tcp open pcanywheredata
7937/tcp open unknown
7938/tcp open unknown
36890/tcp open unknown

In example we see that there are a variety of ports open on this box. Take note of all the ports that you see listed before you. Most of them will be paired up with the type of protocol that uses that port (IE. 80-HTTP 25-SMTP Etc.). Take all that information and paste it into notepad or the editor of your choice. This is the beginning of your targets record. So now we know what ports are open. These are all theoretical points of entry where we could wiggle into the computer system. But we all know its not that easy. Alright so we dont even know what type of software or what operating system that this system is running.

NMAP the Port Scanner has unique OS fingerprinting methods so when the program sees a certain series of ports open it uses its best judgement to guess what operating system its running.

NMAP you can download here:


So we have to figure out what type of software this box is running if we are gonna start hacking the thing right? Many of you have used TELNET for your MUDS and MOOS and weird multiplayer text dungeons and many of you havent even heard of it before period. TELNET is used to open a remote connection to an IP Address through a Port. So this means is we are accessing their computer from across the internet, all we need is their IP address and a port number. With that record you are starting to compile, open a TELNET connection to the IP Address and enter one of the open ports that you found on the target.
So say we typed 'TELNET -o xxx.xxx.xxx.xxx 25' This command will open up a connection through port 25 to the IP xxx.xxx.xxx.xxx. Now you may see some text at the very top of the screen. You may think how is text going to help me. Well It will. Get that list you are starting to write, and copy the banners into your compilation of the information youve gathered on your target. Banners/Headers are what you get when you TELNET to the open ports. Heres an example of a banner from port 25.

220 jesus.gha.chartermi.net ESMTP Sendmail 8.12.8/8.12.8; Fri, 7 Oct 2005 01:22:29 -0400

Now this is a very important part in the enumeration process. You notice it says 'Sendmail 8.12.8/8.12.8' Well what do you know, we now have discovered a version number. This is where we can start identifying the programs running on the machine. There are some instances in which companies will try and falsify their headers/banners so hackers are unable to find out what programs are truly installed. Now just copy all the banners from all the open ports *Some Ports May Have No Bannners* and organize them in the little record we have of the target. Now we have all the open ports, and a list of the programs running and their version numbers. This is some of the most sensitive information you can come across in the networking world. Other points of interest may be the DNS server, that contains lots of information and if you are able to manipulate it than you can pretend to hotmail, and steal a bunch of peoples email. Well now back to the task. Apart from actual company secrets and secret configurations of the network hardware, you got some good juicy info. http://www.securityfocus.com is a very good resource for looking up software vulnerabilities. If you cant find any vulnerabilities there, search on google. There are many, many, many other sites that post vulnerabilities that their groups find and their affiliates.

At SecurityFocus you can search through vendor and whatnot to try and find your peice of software, or you can use the search box. When i searched SecurityFocus i found a paper on how Sendmail 8.12.8 had a buffer overflow. There was proof of concept code where they wrote the shellcode and everything, so if you ran the code with the right syntax, a command prompt would just spawn. You should notice a (#) on the line where your code is being typed. That pound symbol means that the command prompt window thats currently open was opened as root. The highest privilage on a UNIX/Linux Box. You have just successfully hacked a box. Now that you have a command shell in front of you, you can start doing whatever you want, delete everything if you want to be a  jerk, however that is not recommended. Maybe leave a text file saying how you did it and that they should patch their system. Whoever they are. And many times the best thing you can do is just lay in the shadows, dont let anyone know what you did. More often than not this is the path you are going to want to take to avoid unwanted visits by the authorities.

There are many types of exploits out there, some are Denial of Service exploits, where you shut down a box, or render an application/process unusable. Called denial of service simply because you are denying a service on someones box to everyone trying to access it. Buffer Overflow exploits are involved when a variable inside some code doesnt have any input validation. Each letter you enter in for the string variable will be 1 byte long. Now where the variables are located at when they are in use by a program is called the buffer. Now what do you think overflowing the buffer means. We overflow the buffer so we can get to a totally different memory address. Then people write whats called shellcode in hex. This shellcode is what returns that command prompt when you run the exploit. That wasnt the best description of a buffer overflow, however all you need to remember is that garbage data fills up the data registers so then the buffer overflows and allows for remote execution of almost every command available. There are many, many other types of attacks that cannot all be described here, like man-in-the-middle attacks where you spoof who you are. Performed correctly, the slave will enter http://www.bank.com and his connection will be redirected to your site where you can make a username and password box, make the site look legit. And your poor mark will enter their credentials into your site, when they think its really http://www.bank.com. You need to have a small script set up so it will automatiically display like an error or something once they try and log in with their credentials. This makes it seem like the site is down and the slave doenst give it a second thought and will simply try again later.
So as a summary of how to own a box when you only have an IP Address
Method Works On both *Nix and Windoze

You can do the same with domain names (IE google.com) than what you can with IP Addresses. Run a whois Lookup or something along those lines. Or check up on InterNIC you should be able to resolve the domain name to an IP address.

- Port Scan The Address And Record Open Ports
- Telnet To Open Ports To Identify Software Running On Ports

netcat - Network swiss army knife. Like TELNET only better and with a lot more functionality. Both can be used when you are trying to fingerprint software on open ports

- Record Banners And Take Note Of The Application Running and The Version Number
- Take A Gander Online At SecurityFocus.com or Eeye.com. If you cant find any vulnerabilities then search google.
- Make a copy of some Proof-Of-Concept code for the vulnerability.

I will not teach you how to cover your track. This is prohibited and i put that here only for informational reasons.

Now we are going to share a simple, but very useful trick to getvisible the invisible friends on your chat in Facebook.Follow the steps given below to get shown the invisible friends.
  • Log in to your Facebook Account.
  • It asks for Request For Permission
  • Click on Allow


  • Now you will get shown all the friends who are online and set their status as invisible.
    You can view the differences between the online friends in Facebook Chat Box and Online Now Chat Box from below in my account.There are only 159 friends online in normal chat box but 167 online in Online Now Chat box so there are 8 invisible friends in chat.
    I am sure this trick is very useful and many of the Facebook users are searching for this trick. Now you can chat with your friends who are set their status as invisible.. Enjoy..!!


How to Hack Facebook Account Password - Loophole in fb Security

There are various methods to hack facbook account password like Keyloggers, Phishing websites etc.. whereas bruteforcing, dictionary attacks, DDOS attack etc will not work directly due account lockout feature. Today in this post I am going to share a very effective way to hack facebook account I named it Hacking with Trusted Friends.
Hacking of Facebook Account with Trusted Friends is also not so simple. To get started with it, you have to create three fake Facebook accounts and make sure they are in friend list of the person whose facebook account you are going to hack. If you can make this happen then roll up your sleeves to begin the real action.
Warning: The Sole purpose of this article is to highlight the loophole in security. I am not responsible if you use it with malicious intentions and get caught..!!
It is only for educational purposes. Don’t use it with wrong intension.
How to Hack Your Friend’s Facebook Account:
First of all, create three new Facebook Accounts and add all these three accounts in your friend’s friend list. If you are done with the first step then you have done 90% of your work.
Click on Forgot your Password button. It will show three options to recover your password.

  • In the first option give his Email Address and in the Name field give your Friend’s Full Name, your name and click on Search button.
  • Now if everything goes well you will see the profile picture of that person. Here click on the No longer have access to these.

  • Now Enter your New Email address which doesn’t associated with any facebook account yet and click on Submit button.

  • Now you will be prompted to Security question. If you know the answer then it is well and good otherwise, give wrong answers for three times.


  • It will ask you to choose three friends. Select your created accounts from the list and click on Continue button each time.
  • After selecting three friends, Facebook will send security codes to the Email address associated with those fake accounts. Login to each account and fill the security codes in the same manner. Also check spam messages if it is not there.
  • Now you will get password Reset Email on Email Address that you have entered in 5th step (New Email address which doesn’t associated with any facebook account).
    That’s it..! You have hacked your friends Facebook Account. Enjoy..!!

life is short - you need Python!

 I have been using Python to write web crawler/spider/scraper for a long time. And it's an interesting experience indeed. The good news is, I have decided to share my web crawler experience with you. I shall use the terms crawler, spider, scraper alternatively.

The most basic thing to write a web spider is to get the html source (i.e. content) of an URL. There are many ways to do it. Here I post a simple code that gets the html source from an url.


import urllib2

url = 'http://abc.com' # write the url here

usock = urllib2.urlopen(url)
data = usock.read()
usock.close()

print data


Urllib2 is a very useful module for the spiderman ;) so take a look at the documentation http://www.python.org/doc/current/lib/module-urllib2.html

life is short - you need Python!

generate all subsets using recursion | how to


Yesterday I wrote another program to generate all subsets of a set (array / list) during my preparation for today's class on backtracking at National Programming Camp. I wrote the code in C but just converted it into Python for the readers of the blog, so that they can understand and appreciate the beauty of recursion / backtracking.
 taken = []  
     
 def process(X):  
     print X  
   
 def generate_all_subsets(li, X, i, k, m):      
     process(X[0:i])  
   
     for j in range(k, m):  
         if taken[j] == False:              
             if i > 0:  
                 if li[j] <= X[i-1]:  
                     continue  
   
             taken[j] = True  
             X.append(li[j])  
             generate_all_subsets(li, X, i+1, j+1, m)  
             taken[j] = False  
             X.pop(i)  
           
 if __name__ == "__main__":  
     li = [1, 2, 3, 4]  
     X = []  
     taken.extend([False, False, False, False])  
     generate_all_subsets(li, X, 0, 0, li.__len__())  
       

life is short - you need Python!

Python code to search tweets in twitter

Recently I wrote a code to search keywords in twitter and extract the tweets as a part of a larger program. It uses twitter search api. I guess some of you might find this code snippet useful. :)
 import requests  
 import sys  
 import time  
 from datetime import datetime  
   
   
   
 def store_tweets(keyword, results, max_id):  
   tweet_list = []  
     
   for item in results:  
     tweet_id = item['id_str']  
     tweet_text = item['text'].encode('utf-8', 'ignore')  
     if len(tweet_text) > 255:  
       tweet_text = tweet_text[0:255]  
     from_user = item['from_user'].encode('utf-8', 'ignore')  
     from_user_id = item['from_user_id']  
     from_user_name = item['from_user_name'].encode('utf-8', 'ignore')  
     profile_image = item['profile_image_url'].encode('utf-8', 'ignore')  
     created_at = datetime.strptime(item['created_at'][:-6], "%a, %d %b %Y %H:%M:%S")  
       
     tweet_list.append((keyword, tweet_id, tweet_text, from_user, from_user_id, from_user_name, profile_image, created_at))  
       
   # Now store the tweet list in a database or file  
   return  
   
   
   
 def search_tweets(keyword, max_id = '', result_type = 'mixed'):  
   url = 'http://search.twitter.com/search.json'  
     
   params = {'q': keyword, 'rpp': '100'}  
     
   if len(max_id) > 0:  
     params['since_id'] = max_id  
       
   params['result_type'] = result_type  
   r = requests.get(url, params=params)  
   time.sleep(5)  
     
   if r.status_code != 200:  
     print r.status_code  
     print r.text  
     time.sleep(30)  
     return r.status_code  
   
   json_content = r.json  
     
   max_id = json_content['max_id_str']  
     
   while True:  
     results = json_content['results']  
     if len(results) == 0:  
       print "no result"  
       break  
         
     store_tweets(keyword, results, max_id)  
       
     if 'next_page' in json_content.keys():  
       next_page = json_content['next_page']  
     else:  
       break  
       
     r = requests.get(url + next_page)  
     time.sleep(5)  
     print r.status_code  
     if r.status_code != 200:  
       print r.status_code  
       print r.text  
       time.sleep(30)  
       return r.status_code  
   
     json_content = r.json  
       
     
     
 if __name__ == "__main__" :  
   keyword = 'python'  
   search_tweets(keyword)  
     
     
   

life is short - you need Python!

Python Code to Search Youtube Comments

Today I am sharing a code that I wrote few months ago. It searches the comments in youtube video and stores those in a database (postgresql in my code). I used the youtube api. Instead of describing the code in detail, I think posting the code should be enough. If you have any queries or any suggestion to improve the code, feel free to comment.
 import gdata.youtube  
 import gdata.youtube.service  
 import psycopg2  
 import sys  
 from datetime import datetime  
 import time  
 import re  
   
   
   
   
 try:  
   # you should read these from a config file  
   conn = psycopg2.connect(host='localhost', database='databae_name', user='user', password='pass')  
   conn.autocommit = True  
   cursor = conn.cursor()  
 except psycopg2.DatabaseError, e:  
   print 'Error %s' % e    
   sys.exit(1)  
   
   
    
 def since_epoch(date_string):  
   return int(time.mktime(datetime.strptime(date_string, "%Y-%m-%dT%H:%M:%S.%fZ").timetuple()) * 1000)  
    
   
   
 def comments_generator(client, video_id):  
   comment_feed = client.GetYouTubeVideoCommentFeed(video_id=video_id)  
   while comment_feed is not None:  
     for comment in comment_feed.entry:  
       yield comment  
     next_link = comment_feed.GetNextLink()  
     if next_link is None:  
       comment_feed = None  
     else:  
       comment_feed = client.GetYouTubeVideoCommentFeed(next_link.href)  
   
   
   
 def search_and_store_comments(client, keyword, video_id):  
   query = "SELECT MAX(updated) FROM yt_comments WHERE keyword = %s AND video_id = %s"  
   cursor.execute(query, (keyword, video_id))  
   result = cursor.fetchone()  
   if len(result) > 0:  
     last_update = result[0]  
   if last_update is None:  
     last_update = '0'  
   if last_update == '':  
     last_update = '0'  
   for comment in comments_generator(client, video_id):  
     author_name = comment.author[0].name.text.strip()  
     text = comment.content.text.strip()  
     update_time = comment.updated.text.strip()  
     update_time = since_epoch(update_time)  
     if update_time <= int(last_update):  
       break  
     print (keyword, video_id, author_name, text, update_time)  
     try:  
       cursor.execute("INSERT INTO yt_comments (keyword, video_id, author, text, updated) VALUES (%s, %s, %s, %s, %s)", (keyword, video_id, author_name, text, update_time))  
     except psycopg2.DatabaseError, e:  
       print 'Error %s' % e  
     
   
   
   
 def search_yt(keyword):  
   client = gdata.youtube.service.YouTubeService()  
     
   vid_pat = re.compile(r'videos/(.*?)/comments')  
   vid_list = []  
   
   for start_index in range(1, 1000, 50):  
     query = gdata.youtube.service.YouTubeVideoQuery()  
     query.vq = keyword  
     query.max_results = 50  
     query.start_index = start_index  
     query.orderby = 'relevance'  
     print start_index  
     feed = client.YouTubeQuery(query)  
       
     if len(feed.entry) == 0:  
       break  
   
     for entry in feed.entry:  
       if entry.comments is None:  
         continue  
       comment_url = entry.comments.feed_link[0].href            
       result = re.findall(vid_pat, comment_url)  
       if len(result) > 0:  
         video_id = result[0]  
       else:  
         continue  
       if video_id not in vid_list:  
         vid_list.append(video_id)   
       print video_id  
         
     time.sleep(1)  
         
   vid_list = list(set(vid_list))  
   for vid in vid_list:  
     search_and_store_comments(client, keyword, vid)  
   
   
     
 def main():  
   query = "SELECT keyword FROM yt_keywords"  
   cursor.execute(query)  
   result = cursor.fetchall()  
   for item in result:  
     keyword = item[0]  
     print "Searching for keyword:", keyword  
     search_yt(keyword)  
     time.sleep(1)  
       
     
     
 if __name__ == "__main__" :  
   main()  
   print "done"  

Fall in love programming again...

Fall in love programming again...

I have been biased towards C++ ever since I learned it in school. But even after years of using it, I still don't find myself writing C++ programs effortlessly. I tried other languages like C, Java and Visual Basic but found none appealing enough.
In last few months I read a lot about Python. But, I wasn't in any mood to learn a “scripting language”. I am embarrassed to admit that I thought scripting languages like Perl/Python were for kids not real programmers. Also, I hated scripting ever since my undergrad Unix course where I had to write ugly looking, error prone shell scripts.
I started learning Python just to try a book I downloaded - “A Byte of Python” by Swaroop. After reading a few chapters, I was quite impressed. Python worked for me perfectly. Unlike most people, I loved the concept of whitespaces for code blocks. In my belief, It's the perfect way to force people to indent their code.
Also, I am mostly able to write error free Python code in the first go. I don't know whether it's common but I almost always encounter errors on first compile/run in my C++ programs.
Now, after finishing the book, I love Python so much that I have decided to write all new programs in Python. Currently, I am writing a Matrix class to allow matrix manipulation like Matlab. After this, I'll start wxWindows (a GUI Toolkit) and Python Imaging Library.
I must say, If you love (or used to love) programming, give Python a try. It'll remind you of the reason you loved programming originally.

Diluting the role of the IIT JEE

Diluting the role of the IIT JEEThe JEE used to serve India well
Many years ago, high school education in India worked in a twin track system: There were those who studied for the IIT JEE and there was everyone else who didn't. The former studied good books like Resnick/Halliday, which is a college level book elsewhere in the world, solved physics problems from Irodov, etc.
In contrast, studying for the 12th standard ("board examination") tended to emphasise rote memorisation, focusing on trivial questions where you had to plug numbers into a formula, emphasised accuracy of calculation and good handwriting. I vividly remember a textbook for 11th class physics used in Maharashtra, which said that Newton's second law did not apply for living things and powered vehicles. The thoughtful author must have wondered how a stationary cat started walking without the action of an external unbalanced force, and resolved the problem by limiting the footprint of Newton's second law. The less time that kids spend in studying for board examinations, the better.
I used to be optimistic that the footprint of the enhanced curriculum, and complexity of examination questions, lay far beyond the tiny number of people who entered IIT. Even if only 2,000 kids entered IIT, if 40,000 of them studied for the JEE, it gave them world class capabilities at high school. In each cohort, we got 40,000 people who were very good by world standards. In a country with pervasively low capabilities, it was very useful having this slice of high inequality of knowledge, for it gave a group of people who were able to learn modern technology, connect to globalisation, and create firms which generate a lot of high-paying jobs. It is fashionable to complain about inequality of knowledge, but given that you are in a LDC with a very low mean, would you really rather have very low variance??
With this old configuration, we also got a nice tool for inter-generational class mobility. The middle class got their kids into IIT, and almost all these graduated into upper class by the time they were 30.
More generally, a lot of countries have found that high stakes examinations are a good thing. High stakes examinations push the work ethic, grow the ability of young people to work hard in a sustained manner with high concentration, ensure foundations of mathematics and science, and encourage a meritocracy. They create a self-selected elite of young people who are not immersed in and defined by mass culture. All these are good things.
Problems of the JEE
I used to think like this for a long time. I have reluctantly been persuaded, over recent years, that the JEE isn't working so well.
Too many young people are studying for the examination and not the subject. The obsessive focus upon coaching classes is producing a one-dimensional personality which isn't so well suited to entering college. In the 1980s, the most interesting students in IIT were thinking people who read books, knew a lot about the world, and could also solve monkeys on pulleys. With brutal competition, and the coaching classes phenomenon, too often, all that's left today is the monkeys on pulleys. There is a certain kind of parent who is willing to have a child go live in Kota at age 15. This screened out many families from the race.
Economists know about this phenomenon in agency theory. High-powered incentives are a problem because the agent only focuses on the incentive and tends to cut corners (or worse) on everything that's not mentioned in the incentive contract. Andrade and Castro bring this generic idea in agency theory into the question of examinations, and find similar effects.
In the 1980s, there was substantial diversity of background, experiences and class amongst the students. This was a good thing, since students would then pick up the culture of people unlike them. In recent years, it appears that there is much greater homogeneity of background, experiences and class. The extent to which the person gets transformed in the four years has, as a consequence, gone down. When very few children of the elite go to IIT, this reduces access to the knowledge and networks of the elite for everyone who goes to IIT. This has reduced the ability of IIT to generate inter-generational class mobility.
Jishnu Das and Tristan Zajonc have found a nice bump in the upper tail of the distribution of skills in India. The pessimist sees this as being about class or caste: certain families bring up kids who know more. The optimist in me used to think this was the bunch studying for the IIT entrance. Also see Geniuses and economic development on the importance of the upper tail of the skills distribution.
It is increasingly difficult to be optimistic about how this is going. Narendra Karmarkar graduated from IITB in 1978, and went on to do truly important work in 1984. My optimism about the IITs peaked in 1984. Phenomena like Narendra Karmarkar should have scaled up manifold in the following years. This has not happened. In the 1980s, I used to think that by 2010, we'd have atleast one Nobel laureate from the IITs. That has not happened. This tells us that the IITs are not delivering on their early promise; things haven't worked out well in the following years. While the IITs suffer from many problems, I think the JEE is also a part of the problem.
One of the most disappointing features of the recent OECD PISA evidence was the absence of this bump in the upper tail. This new evidence shows a scary world of low inequality of skill, of a country with a terrible mean and no upper tail of an elite that can power the country out of mass poverty. I would conjecture two potential explanations for what has been found. One, it could be the case that this testing was done at age 15, at which time not much of the IIT JEE studying has as yet taken place; we're only picking up the victims of board examinations. Alternatively, it could be the case that studying for the IIT JEE is distorted by the coaching class phenomenon, and is not producing good knowledge.
But the solution being offered doesn't seem to be the right one
There are two views on how these problems can be solved. The first alternative is to shift away from admissions based on a high stakes examination. Universities in the US screen applicants on many parameters, so this is generally thought to be better. But when we look back in history, universities in the US used to focus primarily on academic performance only, until a glut of Jews showed up in Harvard. The shift to asking for `well rounded personalities' was a tool by the dominant anti-semetic elite to screen out Jewish kids who did not play football. So we should be cautious in respecting the undergraduate admissions process in the US. It is also important to remember that the quality of kids starting college in the US is quite weak by world standards. There are other countries (e.g. Japan) where large scale high-stakes examinations are used for university admissions, with much success.
I feel that the core problem that we have in India is just too few seats, which has generated a ridiculous extent of competition and distorted behaviour on the part of the kids. The solution lies in solving the policy problems in higher education, so that a large number of kids are taken into world class institutions every year. E.g. adding undergraduate programs at I I Sc, with recruitment through the JEE, was a move in the right direction. We need to grow the size of the entrant class in universities in India, that figure in the Times Higher Education Supplement ranking, by 25-fold. At present, we have only one university in that list - IIT Bombay.

Kapil Sibal is offering neither of the two solutions above: we are not being offered a modified admissions process based on looking at a fuller picture of the child, and we are not being offered a Japanese scale world of high stakes examinations with a lot of seats in world class universities. What we're being offered is a scaling down of the role of the IIT JEE. A greater role for the 12th standard examination is just a recipe to emphasise rote memorisation, focusing on trivial questions where you had to plug numbers into a formula, emphasising accuracy of calculation and good handwriting. This seems wrong to me.