Sunday, October 30, 2011

Ra·One : A Review


All right, so I went to watch Ra·One yesterday, I had been looking forward to watching this film for a long time now.


Introduction






In case you have no clue what Ra·One is, let me give you a heads up. It is a science fiction superhero film starring Shahrukh Khan (SRK), released in Hindi, Tamil, Telugu and German.


In the first scene, a new technological innovation is described which serves as the base of the film. Then you are introduced to Shekhar Subramaniam (SRK). He is a brilliant Game Developer who acts more like Mr. Bean. The character being a South Indian, his references to the Madrasi Cliché, won't seem to get well received in the South. Shekhar lives in London, with his wife and son, who is embarrassed of sorts because of his dad trying to be cool, but messes things up.


Characters


So Shekhar develops a game with the ultimate super villain - Ra-One. It stands for 'Random Access - Version 1.0'. Now can some one tell me how that makes any sense? RaOne is the ultimate super villain that Shekar comes up to please his son who thinks villains are cool and heroes are boring. The hero in the game is G-One which means life and he is modeled after SRK, albeit a cooler looking version. Reminds you of 'Rab ne bana di Jodi'. 



Not intending to give out any spoilers in case you haven't seen the film, I will say what I thought of the game film.


I have already given my verdict on the characters played by SRK. They are the usual play of duality that you see as in Fight Club or The Mask. G-One acts more like a human, which I like compared to other films with robots where you can hear metallic sounds when the walk and move in a constrained way.


Kareena as Sonia, wife of Shekhar does exactly what she has been asked to do, although you do wonder if she is limited by her character in the script. Armaan Verma as Pratheek, Shekhar's son also does well, his role being similar to the young John Connor from Terminator 2.


But Arjun Rampal as Ra-One beats everyone else by a mile. He comes in, does his job, no nonsense, no compromise. A great villainous performance.


Special Effects


Firstly it has the best Visual Effects and CGI I have seen in an Indian film, Yes Enthiran was good, but in my opinion, Ra-One has done a little better in this department. The detail in which the effects have come out is pretty good. The fight scenes have come out really well and the action scenes are on par with International movies. 


That said the 3D didn't add anything special, it's just another thing of producers jumping on the 3D bandwagon, plus the film was shot in 2D and converted to 3D. Apart from the title scenes and a few others it seemed as the 3D was non existent.



Final Word


The first half didn't seem like a lag, but the second half I wondered was too long. I am not sure how well received Shekhar's character will be, may be its a trick to make you like G-One more. And the plot of the movie is such that I don't think it will cater to the wide audience, but to younger viewers. My grand parents and all question me for spending time on my computer playing games.


But anyways, see the film for the Visual Effects, editing and the Sound effects. So I would suggest that you watch it for the Special Effects and not for the story. You can try it once. It's kind of fun to go with your friends, young nephews, nieces or children.


A 3.5 out of 5. 

Sunday, October 09, 2011

Information on Audio Steganography

    In the following post, I am giving some guidelines and info about the Final Year Project that I did for my Engineering course. The information provided here is solely intended for educational purposes.

    What is Steaganography? Simply put, it is the art and science of writing hidden messages in such a way that no one, apart from the sender and intended recipient, suspects the existence of the message. Its like passing secret information right under people's noses, but no one has a clue that it contains secret information. This is unlike an encrypted file / information where people can suspect that there is a secret information.

    Anyway, there is a long history and types of Steganography that you can get from following this wikipedia link. What I am going to concentrate is hiding an encrypted file inside an audio file (*.wav). We have chosen wave format because of its simplicity and its simple structure and is based on the RIFF File Format. Why not use MP3, you may have a question? We need the Source audio file to be large enough to accomodate the encrypted contents of the file that we are going to hide and I haven't researched it, any licensing issues for using MP3 format.

    First of all, get a hold of the WAV file format specifications. The WAVE file header is 44 bytes long. You should not modify any data here, because if you do, the file will become unusable (i.e; cannot be played back in a media player software). 

   Since we decided to use the Java Programming Language to implement this, you would like to look into ByteArrayOutputStream, and byte Arrays to have access to each lower level bit of the files that you would be dealing with. So read the source file into a byte array, skip the header part, (44 bytes). Using an LSB replacement algorithm, we will add our data to this file.

LSB Audio Steganography Method


     What happens is we will replace the 2 least significant bits of each byte of the source file with bits from our secret message. You also need a method to know how much data you have to read back. You can use a marker text at the end, or keep the length of the message at the beginning which is what we did. The reason for changing the LSB is that, since they are the Least Significant (duh!), a listener cannot detect that much loss in information about the file.

    As stated in the FAQ,  I cannot post the source code for my project. I guess I have explained what goes on in a short post. You can figure out how to do all these with some simple Google Searches. I would suggest using the Eclipse IDE for development, splitting the project into a number of classes in nice packages :) and add any other features that you can think of. The complex part is encoding the message, and that will be just a few lines of code. 

    We had a user management module with a database for managing users, a log writer module for writing out a log, some extra UI libraries to make the app look unlike a java project, encrypt the message using any Encryption algorithm etc...