Tech Nuske

Tech Nuske

Friday, 27 April 2012

Memory Leack in Java? 'Static' cause it?

Does 'static' cause Memory Leak in Java?


What's memory leak? In simple terms, it's unused but referenced (somehow because the programmer probably unintentionally forgot to remove the references once the use of the object was over) part of the memory. Before we start discussing if 'static' can cause memory leak in Java, let me assure you that whatever you've read about Garbage Collectors in Java, is still valid and it certainly takes care of most (almost all) of the memory allocation of Java objects. But, that alone doesn't remove the possibility of the presence of memory leak in a Java program - just for example, you might not only be using only Java objects in your Java program. Putting it differently, what if you have used some native objects and forgot to reclaim the memory explicitly because that's anyway not going to be taken care by the GC (which takes care of heap memory management only)... right?

Now that we agree with the possibility of a Java program having potential memory leaks, let's see if using 'static' can also be one of the potential reasons for memory leaks in Java.
 

How to find if your Java Program contains Memory Leaks?

Well... the programmer should have kept their eyes open while development itself. Once the app is ready, one may like to use Profilers (available from many vendors) to analyze the object graphs.

If your Java app is usually crashing with 'OutOfMemoryError' after executing for a while then it should ring an alarm for the possibility of memory leaks in your app. Though, this doesn't necessarily mean your app is having memory leaks, it might be possible that the allocated heap space is not enough for the proper functioning of your app.

Does 'static cause memory leak in Java?


'static' can't straightway be blamed for causing memory leaks. But, if the programmer has not well thought the usage and has not taken care of the setting the references to 'null' explicitly after using the static objects then they can definitely cause memory leaks. Let's see how.

As you know 'static' members will by default live for the entire life of an app unless they are explicitly set to 'null'. So, always make it a point to nullify the references as soon as you reach at a point in your code where the use of the static member is over. For example: suppose you have created a 'Statement' object from a DB Connection and the connection is a pooled one. Now as you know calling close() method on a pooled connection will not actually close the connection instead it will return the Connection object to the pool to be re-used. So, in such a case unless you explicitly close the 'Statement' object, it would keep consuming precious memory space for no real use. Just think the scenario where you have declared the 'Statement' object as a static member, it'll be maintained in the memory for the entire life time of the app even when the control is out of the scope. It's just a sample scenario and many of you might never have used 'Statement' object in such an irresponsible manner. It's just an attempt to show how the 'static' can be misused to cause memory leaks in Java.

Not that if your Statement object is non-static you should reply on the out-of-scope nullification (i.e., as soon as control is out of scope the local objects would be marked for re-claimation) as in case you still have a significant amount of code (in terms of time/space) after using the Statement last and before reaching the end of the local scope, it would be a sheer wastage of memory if you don't explicitly nullify the 'Statement' after its use is over. Such a scenario should also be thought of as memory leaks only and one should always make sure the nullification of resources is as close to their last usage as possible.

Therefore, in summary we can say that one should/must :-
  • always think if you really need to make this variable/member a 'static' one?
  • always try to confine the scope of an object to restrict its usage only to the section it's actually needed
  • always make a conscious effort to explicitly nullify objects once you finish using them (especially the large objects)
 

Enjoy and keep smiling,
Smile is a language that everybody understands. (",)..!!!

REST in PHP(cont.)



Hi every one. In previous post i had describe how to call the REST web services. Now a days we need to have our web services to be platform independent. To share the data between two different platforms, we will use the XML to communicate. Many web service send XML tagged data in response.  So we need to parse that data in our page.

To do this we will use the built in PHP functions. Now Remember last post about PHP in this blog.
we have $response variable to store the response of web service. now suppose the response is in XML format as bellow.

//XML response format.
<?xml version="1.0" encoding="ISO-8859-1"?>
<temperature>
<date>27</date>
<month>04</month>
<year>2012</year>
<min>10</min>
<max>25.5</max>
<current>24</current>
</temperature>

It returns temperature of city that you pass as a parameter in web service in XML format.

Now if we want to parse this XML response we can add some code in previous post code.

<?php
//extracting data
$city=$_POST['city'];

//set URL
$url = "www.myservice.com";


//data
$data = "city=".$city;


//Initialize and Set option for cURL object
$pst = curl_init();
$pst = curl_setopt($pst,CURLOPT_URL,$url);
$pst = curl_setopt($pst,CURLOPT_POST,true);
$pst = curl_setopt($pst,CURLOPT_RETURNTRANSFER,true);
$pst = curl_setopt($pst,CURLOPT_POSTFIELDS,$data);


//execute cURL objext
$result = curl_exec();


//close cURL object
curl_close($pst);

//Initialize the XML parser
$parser=xml_parser_create();


//Function to use at the start of an element
function start($parser,$element_name,$element_attrs)
{
  switch($element_name)
    {
    case "temperature":
    echo "<h1>Temperature is :</h1><br />";
    break;
    case "date":
    echo "Date: ";
    break;
    case "month":
    echo "Month: ";
    break;
    case "year":
    echo "Year: ";
    break;
    case "min":
    echo "<br/>Lowest: ";
    break;
    case "max":
    echo "<br/>Maximum: ";
    break;
    case "current":
    echo "<br/>Current: ";
    break;
    }
  }


//Function to use at the end of an element
function stop($parser,$element_name)
  {
  echo "/";
  }


//Function to use when finding character data
function data1($parser,$data)
  {
  echo $data;
  }


//Specify element handler
xml_set_element_handler($parser,"start","stop");


//Specify data handler
xml_set_character_data_handler($parser,"data1");


xml_parse($parser,$response);


//Free the XML parser
xml_parser_free($parser);
?> 


Steps.
To do this follow this steps.
1. Initialize XML parser variable with xml_parser_create() funtion.
2. Create function to handle start and end of XML tag.
3. Create function for handling data in XML tag.
4. Specify element handler functions using xml_set_element_handler() function.
5. Specify data handler function using xml_set_character_handler() function.
6. Specify the $parser variable with XML source.
7. Free $parser with xml_parse_free() function.

Change as per your requirements, and enjoy.

by. Nanji Parmar

Thursday, 26 April 2012

IFCONFIG - changing interface configuration


Ifconfig is used to configure the kernel-resident network interfaces. It is used at boot time to set up interfaces as necessary. After that, it is usually only needed when debugging or when system tuning is needed.
If no arguments are given, ifconfig displays the status of the currently active interfaces. Just type ifconfig on your linux terminal and check the interface on your system. The output is a list of details about the interface itself, like its IP address, MAC and its status, whether it is up or not. If a single interface argument is given, it displays the status of the given interface only.
Eg. You can write ifconfig eth0 to display information of that interface only.
 If a single -a argument is given, it displays the status of all interfaces, even those that are down. Otherwise, it configures an interface.
Now comes the fun part, you can change the status of your interfaces using this command
Ifconfig eth0 up  -  puts eth0 interface up.
Ifconfig eth0 down – puts it down back.
Suppose you have two network interface cards, and you want that all the data be routed through only one of those interfaces, you can put one of them down, and direct all packets via the other one.
Now suppose you want to set the IP address of any interface, all you need to do is:
Ifconfig eth0 10.102.1.3 netmask 255.255.255.0 up
And its done.
Now to change the MAC, you need the option ‘hw class’
Ifconfig eth0 hw class aa:08:ff:ee:12:50
This command also allows you to change the broadcast address, IP for a point to point link, multicast address, mtu, IPv6 address etc.

- Joohi Sinha
Stay tuned for more...


Wednesday, 25 April 2012

HackTricks := SQL Injection


Hello Everyone,
Today I am going explain SQL Injection…

( I am sorry because it is totally theoretical… But it is necessary to start from A,B,C,D… )

SQL Injection

SQL Injection is one of the many web attack mechanisms used by hackers to steal data from organizations. It is perhaps one of the most common application layer attack techniques used today. It is the type of attack that takes advantage of improper coding of your web applications that allows hacker to inject SQL commands into say a login form to allow them to gain access to the data held within your database. 

SQL Injection is the hacking technique which attempts to pass SQL commands (statements) through a web application for execution by the backend database. If not sanitized properly, web applications may result in SQL Injection attacks that allow hackers to view information from the database and/or even wipe it out.

Such features as login pages, support and product request forms, feedback forms, search pages, shopping carts and the general delivery of dynamic content, shape modern websites and provide businesses with the means necessary to communicate with prospects and customers. These website features are all examples of web applications which may be either purchased off-the-shelf or developed as bespoke programs.

These website features are all susceptible to SQL Injection attacks which arise because the fields available for user input allow SQL statements to pass through and query the database directly.

SQL Injection: A Simple Example

Take a simple login page where a legitimate user would enter his username and password combination to enter a secure area to view his personal details or upload his comments in a forum.

When the legitimate user submits his details, an SQL query is generated from these details and submitted to the database for verification. If valid, the user is allowed access. In other words, the web application that controls the login page will communicate with the database through a series of planned commands so as to verify the username and password combination. On verification, the legitimate user is granted appropriate access.

Through SQL Injection, the hacker may input specifically crafted SQL commands with the intent of bypassing the login form barrier and seeing what lies behind it. This is only possible if the inputs are not properly sanitised (i.e., made invulnerable) and sent directly with the SQL query to the database. SQL Injection vulnerabilities provide the means for a hacker to communicate directly to the database.

The technologies vulnerable to this attack are dynamic script languages including ASP, ASP.NET, PHP, JSP, and CGI. All an attacker needs to perform an SQL Injection hacking attack is a web browser, knowledge of SQL queries and creative guess work to important table and field names. The sheer simplicity of SQL Injection has fuelled its popularity.

Why is it possible to pass SQL queries directly to a database that is hidden behind a firewall and any other security mechanism?

In SQL Injection, the hacker uses SQL queries and creativity to get to the database of sensitive corporate data through the web application.

SQL or Structured Query Language is the computer language that allows you to store, manipulate, and retrieve data stored in a relational database (or a collection of tables which organise and structure data). SQL is, in fact, the only way that a web application (and users) can interact with the database. Examples of relational databases include Oracle, Microsoft Access, MS SQL Server, MySQL, and Filemaker Pro, all of which use SQL as their basic building blocks.

SQL commands include SELECT, INSERT, DELETE and DROP TABLE. DROP TABLE is as ominous as it sounds and in fact will eliminate the table with a particular name.


In my next post I will explain real example of SQL injection.  I want to explain that in my this post but then I realize that some basic knowledge of SQL injection is required first.

Don’t worry if you are a web developer I will also explain how to develop website which cannot be hacked using SQL injection. 

By,
Shweta Jogi
Enjoy Every Moment of Your Life...

Sunday, 22 April 2012

"ipconfig" not working in cmd????

Dear Reader,

As I promised you last Sunday, I am back with something new.
But this time, I am not going to write an article, but, going to give the answer of a problem that I faced recently.

Few days before I and my friend were working on a project and he needed to check the IP address of his computer so that he can ping from other PC.

So, like everyone does, he opened cmd and typed "ipconfig", you all know what should be the output:

Something like :


isn't it......


but the output was:

'ipconfig' is not recognized as an internal or external command, operable program, or batch file

Now, what to do?????????

This thing was new for both of us, as we never came across such thing.

We started finding the answer and finally we got one, which I would like to share with all of you.

For those who have XP, do the following thing:

-> Right click on My Computer

-> Properties

-> Advaned System Settings.

-> Go to Advanced tab

-> click Environment Variables.

-> In text list under system variables, double click variable named "Path".

-> Add text "C:\Windows;C:\Windows\system32" in variable value.

-> Restart your computer after all done


Now, try ipconfig and see, whether it works or not.



If you still get error its time to try slightly different method:

From the C: drive in DOS, type :

cd Windows\System32 

Now try, "ipconfig" command from this location again.

Also make sure that "ipconfig.exe" is located in your c:\windows\system32



For those who have windows 7:

Go to the System Tray (Notification Area, the bottom pane where your start button is there)

Click the Network icon

Click 'Open Network and Sharing Center'

Click the 'Change adapter settings'

Select the connnection for which you'd like to use a static IP.

Right click it and click 'Properties'.

Select 'Internet Protocol Version 4 (TCP/IPv4)'

Select 'Use the following IP address':

In the 'IP Address' field, insert the IP you'd like to use.

Note: The IP you use must be within the router's list of acceptable IP addresses. It's usually a list between 192.168.1.100 to 192.168.1.255


 I hope by this your "ipconfig" should start working in cmd. If due to any reason your "ipconfig" is still not working in cmd, please do let me know, i will try to find out the problem and will let you know as soon as possible.

But, I wont let your work stop, there is an alternate method by which you can get all the information that you get from "ifconfig" command in cmd.


Go to the System Tray (Notification Area, the bottom pane where your start button is there)

Click the Network icon

Click 'Open Network and Sharing Center'

Click on the Connection whose detail you want.

A small Window will open, now click on the "Details.." and there you are with all the information.

I hope this post helped you to increase your technical knowledge on computer.

You know when to catch me.
So see you next Sunday,  i.e. 29nd April, 2012
Till then take care and make it a nice day.....see you soon.
Regards,
Parth Anil Varma
(Tech Nuske)

Thursday, 19 April 2012

CRON – A daemon to execute scheduled commands


cron is a time-based job scheduler in Linux operating systems. cron enables users to schedule jobs (commands or shell scripts) to run periodically at certain times or dates. It is commonly used to automate system maintenance or administration, though its general-purpose nature means that it can be used for other purposes, such as connecting to the Internet and downloading email.

To start the cron service all you need to do is:
# /etc/init.d/cron start
OR
#start service cron

cron searches its spool area (/var/spool/cron/crontabs) for crontab files. A crontab file contains instructions to the cron daemon of the general form: "run this command at this time on this date". Each user has their own crontab, and commands in any given crontab will be executed as the user who owns the crontab. crontabs found are loaded into memory.
cron then wakes up every minute, examining all stored crontabs, checking each command to see if it should be run in the current minute. When executing commands, any output is mailed to the owner of the crontab (or to the user named in the MAILTO environment variable in the crontab, if such exists).
Along with the crontab files, there is also a command of the same name – crontab. crontab is the program used to install, remove or list the tables used to drive the cron. Check out the crontab(1) man page to refer the list of options that the crontab command provides (click here).

Crontab Format
Commands are executed by cron when the minute, hour, and month of year fields match the current time, and when at least one of the two day fields (day of month, or day of week) match the current time.
A field may be an asterisk (*), which always stands for "first-last".
Ranges of numbers are allowed. Ranges are two numbers separated with a hyphen. The specified range is inclusive. For example, 8-11 for an "hours" entry specifies execution at hours 8, 9, 10 and 11.
Lists are allowed. A list is a set of numbers (or ranges) separated by commas. Examples: "1,2,5,9", "0-4,8-12".
Step values can be used in conjunction with ranges. Following a range with "/" specifies skips of the number's value through the range. For example, "0-23/2" can be used in the hours field to specify command execution every other hour. Steps are also permitted after an asterisk, so if you want to say "every two hours", just use "*/2".
Names can also be used for the "month" and "day of week" fields. Use the first three letters of the particular day or month (case doesn't matter). Ranges or lists of names are not allowed.
The "sixth" field (the rest of the line) specifies the command to be run. The entire command portion of the line, up to a newline or % character, will be executed by /bin/sh or by the shell specified in the SHELL variable of the crontab file. Percent-signs (%) in the command, unless escaped with backslash (\), will be changed into newline characters, and all data after the first % will be sent to the command as standard input.

Here are some examples of crontab lines. Use the command "crontab -e" to edit your crontab file.

           This line executes the "ping" command every minute of every hour of every day of every month. The standard output is redirected to dev null so we will get no e-mail but will allow the standard error to be sent as an e-mail
 *    *    *    *    *       /sbin/ping -c 1 192.168.0.1 > /dev/null
   

     This line executes the "ping" and the "ls" command every 12am and 12pm on the 1st day of every 2nd month. It also puts the output of the commands into the log file /var/log/cronrun.
   0,12 1 */2 * /sbin/ping -c 192.168.0.1; ls -la >>/var/log/cronrun 
                  

           This line executes the disk usage command to get the directory sizes every 2am on the 1st through the 10th of each month. E-mail is sent to the email addresses specified with the MAILTO line. The PATH is also set to something different.

PATH=/usr/local/sbin:/usr/local/bin:/home/user1/bin
MAILTO=user1@nowhere.org,user2@somewhere.org
0 2 1-10 * * du -h --max-depth=1 /




Joohi Sinha
Stay tuned for more.

Wednesday, 18 April 2012

HackTricks := Crack Windows Password

Hello Everyone,

So you all want to crack windows password without any account or anything???

Than the first thing you should know is SAM ( Security Account Manager) file, which stores your windows password.

So where is it???

The SAM file is at c:/windows/system32/config ( I assume that you have installed windows OS in C:\ ).

Stop Stop... Dont open it or copy it, that will not work...

You need to boot your computer from other boot able CD/Pendrive etc.

And so many software will help you to crack SAM file. For Example CAIN and ABEL (Which I am using), but you can use any other software also.

I am using one more method the BackTrack OS (Linux), Which provide such facilty.

Hope I can crack SAM file without any software in future and share this with you...

Thanks...


By,
Shweta Jogi
Enjoy Every Moment of Your Life...

Monday, 16 April 2012

REST in PHP

(cont.)

In previous post we had learned the basic methods of cURL to send the GET request.
Today we  will see how to send those data using POST method.
GET method is no good for the large data because it is send in the url and it is visible to all. It's size is also limited so you can't send large data using the GET method.


In POST the data is bind in the data segment of the HTTP request packet. So it is not visible to other and only rendered by client.


To implement this in PHP we can use some cURL option.


Example.
view.php
<html>
<body>
<form name="form1" method="post" action="send name.php">
First Name  = <input type="text" name="txtfname" id="txtfname">
Last Name  = <input type="text" name="txtlname" id="txtlname">
<input type="submit" value="submit" name="submit">
</form>
</body>
</html>


send name.php


<?php
//extracting data
$firstname=$_POST['txtfname'];
$lastname=$_POST['txtlname']; 


//set URL
$url = "www.example.com";


//data
$data = "firstname=".$firstname."&lastname=".$lastname;


//Initialize and Set option for cURL object
$pst = curl_init();
$pst = curl_setopt($pst,CURLOPT_URL,$url);
$pst = curl_setopt($pst,CURLOPT_POST,true);
$pst = curl_setopt($pst,CURLOPT_RETURNTRANSFER,true);
$pst = curl_setopt($pst,CURLOPT_POSTFIELDS,$data);


//execute cURL objext
$result = curl_exec();


//close cURL object
curl_close($pst);


echo $result;


?>
Using this example you can send data to any other web server having different platforms.
change code as per your requirement and enjoy.
there is no limit how much data you can send using POST method.


By Nanji Parmar

Sunday, 15 April 2012

Varma’s back with – “MAC for little Masters (contd…)”

MAC for Little Masters (contd....)

As I promised to my readers last Sunday, I am BACK with MAC.
If you are a newbie, I will suggest you to please go through my earlier post which was posted on 8th April, 2012, just to have a sound background on the basics of MAC, but, if you are comfortable, its cool….:-) 

Well,
Last time we saw,

-> What are MAC addresses?
-> How can we get our MAC addresses?
-> Why should we change our MAC addresses?
and few more things.....am I right OR am I right….;-)

But today, we are going to try something advanced.

Finally the time has come when we will apply the theoretical concepts of MAC in our practical life.

  -  Parth Varma (Tech Nuske Team)
-----------------------------------------------
First of all I would like to show you, how can you change your MAC address:

But REMEMBER:

Procedure of changing MAC address is different for different operating system, so make sure which one you have (XP, Windows 2000, Windows Server, Linux, Windows 7 or any other)

If you have XP, Windows 2000 or Windows Server 2003, the procedure is below:

a.   Go to Start-> Control Panel -> Network and Internet Connections -> and double click on Network Connections.
b.   Right click on the active network connection with network adapter that you want to change the MAC address (normally Local Area Network or Wireless Network Connection) and click on Properties.  
c.   Under “General” tab, click on the “Configure” button
d.   Click on “Advanced” tab
e.   Under “Property section”, you should see an item called “Network Address” or "Locally Administered Address", click on it.
f.   On the right side, under “Value”, type in the New MAC address you want to assign to your NIC.  Usually this value is entered without the “-“ between the MAC address numbers.

 g.   Goto command prompt and type in “ipconfig /allornet config rdr” to verify the changes.
h.   Reboot the computer if successful to make the change effective.

Note: To restore or reset back to original default MAC address, simply set back the option to “Not Present”. 


If you have Windows 7 like OS, the procedure is below:

a. Goto command prompt and type “ipconfig /all”, and 

     I. Record the Description for the NIC you want to change. 
   II. Record the Physical Address for the NIC you want to change.  Physical Address is the MAC Address

 
 b. Goto command prompt and type “net config rdr”, and you should see something like

       
c.  Remember the number inside { }.  For example, in the above “net config rdr” output, for MAC address “00C095ECB793,” you should remember {1C9324AD-ADB7-4920-B02D-AB281838637A}.  Use print Screen and take the snapshot, that’s the easiest way.

d.  Go to Start -> Run, type “regedt32” to start registry editor.  Do not use “Regedit.”

e.  Go to “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}.  Double click on it to expand the tree.  The subkeys are 4-digit numbers, which represent particular network adapters.  You should see it starts with 0000, then 0001, 0002, 0003 and so on.  (See figure below)

g.  Go through each subkey that starts with 0000.  Click on 0000, check DriverDesc keyword on the right to see if that's the NIC you want to change the MAC address.  The DriveDesc should match the Description you recorded from step (a.-I.).  If you are not 100% sure about the DriverDesc, then you can verify by checking if the NetCfgInstanceID keyword value matches from step (c).
If there is no match, then move on to 0001, 0002, 0003, and so on, until you find the one you want.  Usually 0000 contains the first NIC you installed on the computer.

h.  Once you selected the subkey (i.e. 0000), check if there is a keyword "NetworkAddress" exist in the right side of the window. 

    I.  If "NetworkAddress" keyword does not exist, then create this new keyword:

         i. Click on the drop down menu “Edit -> Add Value”.
        ii.  In the Add Value window, enter the following value then click OK.  

                Value Name: = NetworkAddress
   
         Data Type: = REG_SZ 





                                        OR

Select New -> String Value. Name the new value name as NetworkAddress.
The double click on NetworkAddress and enter a new MAC address as its value data.

         iii.  String Editor window will pop up at this time.

          iv.  Enter the new MAC address you want to modify.  Then click OK.
          (There should not be any "-" in this address.  Your entry should  
               only consist of 12 digits as seen in the figure below)

  II. If "NetworkAddress" keyword exists, make sure it shows the keyword type is REG_SZ, and it should show as NetworkAddress:REG_SZ. This keyword might not have a value at this time.  

        i. Double click on the keyword NetworkAddress and the String Editor 
           window will pop up. 

        ii.  Enter the new MAC address you want to modify. Then click OK.
        (There should not be any "-" in this address.  Your entry should only 
             consist of 12 digits as seen in the figure above)

i. Reboot the system to make the new MAC address effective. Alternatively, if you don’t want to restart the system, try to disable and then re-enable the network adapter in Device Manager.

j. To verify the change of MAC address, go to command prompt, then type in one of the following commands: 

ipconfig /all
net config rdr

Note: To restore or reset back to true original hardware burned-in MAC address, remove the NetworkAddress registry key that is been added.
  
Restore The TRUE Hardware burned-in MAC Address:

a. Remove the entry you added:

                                     I. If you followed Method 1, then go back to the advanced 
                                 properties window and remove the entry you add.

                                    II. If you followed Method 2, then remove the "NetworkAddress" 
                                  keyword you added in the registry.
           


If you have Linux like OS, the procedure is below:


First find the physical MAC address of your machine by running the following command :
$ ifconfig -a | grep HWaddr
eth0  Link encap:Ethernet HWaddr 00:80:48:BA:d1:20

Next, login as root in Linux and enter the following commands -
# ifconfig eth0 down
# ifconfig eth0 hw ether 00:80:48:BA:d1:30
# ifconfig eth0 up
# ifconfig eth0 | grep HWaddr


I have changed the MAC address to a different number highlighted in blue. 00:80:48:BA:d1:30 is the new MAC address I have provided for my Linux machine. You can choose any 48 bits hexadecimal address as your MAC address.

-----------------------------------------------

If you remember, I told you last week that I will tell you the names of people who wrote their name in history with MAC addresses, and what they did?

Well as you know I never break promises, here I go.... 

Talking about MAC addresses and people associated with it reminds me a man, no no no.....reminds me a young man who did something for which he is remembered even today..... 

The name of that young man was Aaron Swartz.




Mr. Swartz, a well-known figure in Internet academic circles, created a site called Infogami that later merged with the social news site Reddit. He is also a founder and director of the nonprofit group Demand Progress, which calls itself a political action group hoping to change public policy that relates to the Internet.

Aaron Swartz, a 24-year-old programmer and online political activist, was indicted in Boston on charges that he stole more than four million documents from the Massachusetts Institute of Technology and JSTOR, an archive of scientific journals and academic papers.

In a press release, Ms. Ortiz’s office said that Mr. Swartz broke into a restricted area of M.I.T. and entered a computer wiring closet. Mr. Swartz apparently then accessed the M.I.T. computer network and took millions of documents from JSTOR.

In 2009 Mr. Swartz downloaded 19 million pages of federal court documents from a government database system, acting on the belief that they should be made available free.

The charges filed against Mr. Swartz include wire fraud, computer fraud, obtaining information from a protected computer and criminal forfeiture.

If convicted, Swartz faces up to 35 years in prison and a $1 million fine.

Dont be afraid, I am not telling you to go to that extent....lol.

I Hope you liked my todays post, to be very frank, I think I can write a little more on MAC, probably. But as I said before, I THINK, I am not sure. Because of this reason I will not say that the Discussion on MAC is over, if I get something new on MAC I will come back with some new and interesting stuffs on MAC.

You know when to catch me.

So see you next Sunday,  i.e. 22nd April, 2012
Till then take care and make it a nice day.....see you soon.
Regards,
Parth Anil Varma
(Tech Nuske)