Sunday, October 27, 2013

Hacking: Understanding Hacking

Hacking can be termed as use of a computer to gain unauthorized access to data in a system.Hacking can be either good or bad depending on the intent with which the hacking was carried out. 

In this blog post we will be looking at hacking on computers systems.

Along with the usual intent of harm there is also another breed of hackers called the “Ethical Hacker / White Hat Hacker” who tries to hack into the system to ensure that there are indeed no security flaws in the system that can be used by the harmful hackers to compromise the integrity of the data and / or cause the system to behave in an errant way.

The recent hacking of various important websites, like the nsa.gov, the defacement of public sites show hacking can also serve as a means to protest.
There are a few basic steps that are taken when trying to hack into a system –
1. Recon – Gather information about the intended target.
2. Analysis – Analysis of the gathered information for possible ways to hack the system.  Then a decision on using one or more vulnerabilities is made and a plan is chalked out.
3. Attack – The plan is actually put into action.

Edit : The hacking process
All of the above was from the view point of a system. However individual users can also be hacked.
Today individuals have a lot of online accounts like email accounts, Facebook etc. If individually targets and if the user has not taken precautions then an account can be easily hacked.

Moreover these accounts are often linked to each other and sometimes what is public information on one account forms the basis of identification for another account as this post (very interesting read) over here shows. The hacker gained control of his Amazon, Apple and Gmail accounts and wiped all the data on the users HDD. All of this possible because Amazon shows the last four digits of the credit card number to the account holder. Apple considers these same four digits along with a few publicly available pieces of info to be sufficient information to reset the password.

Simple steps to prevent hacking are to have a good anti-virus installed and monitoring all the activities. Additionally things like creating a strong enough password can go a long way towards preventing dictionary attacks on account passwords.

References -
Honan, Mat. "How Apple and Amazon Security Flaws Led to My Epic Hacking”, 8th June 2012. "http://www.wired.com/gadgetlab/2012/08/apple-amazon-mat-honan-hacking/all/”

Sunday, October 13, 2013

Open Source Software: Pros vs. cons.

What is Open Source Software? 
Open source software is described as follows -
“Open-source software (OSS) is computer software with its source code made available and licensed with a license in which the copyright holder provides the rights to study change and distribute the software to anyone and for any purpose.”[1]

How is it different form other types of Software?
Open source software differs from other types of software in the way that the “Source code” or the code for that software is available for the user to edit. The user may add, delete or otherwise edit the code to suit his needs.

Open Source Software Pros –
1. Few if any license fees – Contrary to popular belief Open Source != Free . The developer might choose to charge a fee. That said most open source software is free to use.

2. Easy to manage – Open source software is easy to manage. This is because the code is available to every user. If the user thinks there is an issue he can himself work on it to get it fixed. This is the real power of Open source software. When the software is widely used if any issues crop up then it can be fixed by anyone. Maintenance is not limited to the code author.

3. Customizable – Since the source code is openly available the user can easily modify the software to suit his needs.

4. Encourages creativity thereby increasing the spectrum of usage of the software – Many a times software cannot be used due to changes needed in the Software. However with tweaks the software can be used in Domains that it was not designed to be used in the first place.

Adoption of Open Source Software
Adoption of Open Source Software
Open Source Software Cons – 
1. Open source software does not (in most cases) come with support. If one runs into some issues then there is no guarantee that the developer will be at hand to solve it.
2. Open Source is often Orphaned – After a period of time the main developers might decide to walk away leaving the code incomplete /orphaned. This can be due to issues between developers or because the developer got bored and decided to stop working on the project.

Gray Area – 
Security: Since it is open source and especially if the software is free the software might not be 100% secure. However if there are any flaws which have been made public then a wide number of developers, either individually or in unison can work towards quickly solving the issue.

My Opinion –
Open source software has its own Pros and cons however Open source software is slightly more preferable due to the mentioned Pros. This is also evident from the statistics in the diagram.

References -
[1] - St. Laurent, Andrew M. (2008). Understanding Open Source and Free Software Licensing, O'Reilly Media, p. 4. ISBN 9780596553951.
[2] -  http://www.leadcommerce.com/blog/the-pros-cons-of-open-source-ecommerce-software.html
[3] - http://www.cioinsight.com/it-strategy/linux-open-source/slideshows/five-pros-and-five-cons-of-open-source-software/

Sunday, October 6, 2013

Agile : A Methodology.

Let's have a peek at what Agile is and how it works.

What is Agile?
Agile methodology is just another methodology to control/track/improve Project Development. Other project development models include the Waterfall model etc. The main advantage of Agile is that all the development is broken up into sprints which allow the teams the flexibility to develop iteratively and can also help increment the number of chances that a client has to impact the direction of the project.

What is Scrum?
Scrum is nothing but a means of carrying out software development in small iterative units called Sprints. These sprints usually form the backbone of why the development is iterative.

What is a Sprint?
A sprint is usually a 2-4 week cycle where the team is allowed to develop working code and a demo of which is available at the end of each sprint length. This working code provides the stimuli to the client through demos who then come back with feedback (Response) on the demo.

It is essential to choose the right Sprint length. For a project which has a small duration the Sprint length has to be small while for a project with a large duration the sprint length can be longer. This is due to the fact that we want to have as many Stimuli – Response cycles as possible so that at the end of the product we don’t have a client who goes “Eh? What is that? I didn't want this to be built in this way” . This leads us to the conclusion that smaller the sprint length greater the satisfaction of the client because he has had the chance to influence the direction of the project.