Fingerprint recognition systems are susceptible to artificial spoof fingerprint attacks, like molds manufactured from polymer, gelatin or Play-Doh. Presentation attack is an open issue for fingerprint recognition systems. In a presentation attack, synthetic fingerprint which is reproduced from a real user is submitted for authentication. Different sensors are used to capture the live and fake fingerprint images. A liveness detection system has been designed to defeat different classes of spoof attacks by differentiating the features of live and fake fingerprint images. In the past few years, many hardware- and software-based approaches are suggested by researchers. However, the issues still remain challenging in terms of robustness, effectiveness and efficiency. In this paper, we explore all kinds of software-based solution to differentiate between real and fake fingerprints and present a comprehensive survey of efforts in the past to address this problem.