Extract songs from Saavn app
Bad engineering that leads to loss for saavn, the famous music streaming application on android smartphones.
I write this by assuming that saavn only allows you to download in offline mode within application and you lose the songs if you happen to lose the pro membership. Without pro membership, you can only stream the songs but not save them in offline mode, means every time you must use your valuable data. Whereas, by storing on sd card the songs will be permanently available to you even if you uninstall app or you happen to lose the pro membership which allows you to save songs in offline mode within saavn’s android application.
Now I exploit this bad engineering from saavn’s engineers and tell you how can you extract songs from saavn’s offline mode to your sd card.
Note that this will violate the usage policy(I assume) and you should not do this on android smartphones. I only provide this to show you, how not to make apps that are vulnerable and to avoid bad engineering.
Pre-requisite: Some android smartphone file explorer application(I would prefer using ES File explorer) , Saavn’s android application(For the first time usage, you will get a month of pro membership for free)
Go to saavn android application and search for the song.
Note that: Using saavn pro android app you can search songs easily and save them for offline mode too(if available)
See the search option on the action bar(green color bar at the top), use it to search for songs.
Download the song.
The song will be available in the list. The download arrow indicates song is available for offline mode. So you can save in offline mode. Once you download it in offline mode, the song will turn into a green tick. See above screenshot for having a clear understanding.
Once downloaded in offline mode, you can return to home screen of saavn android application and from the menu select offline mode (see screenshot below).
Step4 : Play the song from the downloaded songs menu. Note that if you change songs, you will experience a LAG. (Here’s the bad experience involved and that bad experience is in fact a poor piece of engineering)
After song is played, press home button and go to the application drawer and open ES File explorer application.
Step5: Use search facility in the ES File explorer application and search for “saavn”.
Step6 : open folder named as com.saavn.android
Step7: Again open songs folder from the list. You will see a lot of files and you can’t play them. But then there will be a file curr.mp3 . For getting this curr.mp3 again search for “curr” in the search area.
Step8: Copy this curr.mp3 and paste it somewhere in the sd card, say paste it in the folder where you store all your rest of the songs. After pasting it rename the pasted file as copied_curr.mp3 (You might wanna rename it to the song you copied)
Step9 : Transfer the song(if you want) to your PC and enjoy it as you have successfully extracted the song that is playing in the saavn right now.
Now where comes the bad engineering in it ???
1. After giving some thoughts and my experience in building android applications, I understood what saavn does for offline mode of songs.Downloaded songs undergo some encryption so that you can’t exploit them but we just did this in above steps.
2.Once you play a song in offline mode, the encrypted file is decrypted and is made as curr.mp3 and is saved temporarily for playing in saavn android application.
3. Now if we change song, again the curr.mp3 gets replaced by new song by the process of decryption and encryption. Due to this the user gets a lag. This lag is sufficiently large to be noticed.
Bad engineering : user feels lag while playing songs + they can exploit the offline songs easily.
Update: As of 16th April, 2015 the bug still exists. We reported it too saavn, as soon as we found it but no bug fixes yet.