Skip to main content

Posts

Privacy Concerns in Android

Introduction       Android has a robust Access control system. If an Android app needs to use resources or information outside of its own scope, the app has to request the appropriate permission . It needs to get permissions before accessing critical resources like Camera, Location, Contacts etc. On Android 6.0 (Marshmallow) or higher, the app needs to request these permissions at runtime by showing a dialog box to the user. Also, the user will have an option to revoke these permissions for that app at any time in future.       But, in this article, I would like to point out a few resources that an app can access without any permission s and this might raise a serious privacy concern for the user. Privacy Concerns An app can fetch a list of all other apps installed on your phone. An app doesn't need to request any permissions from you to get a list of all the apps installed on your phone. For example, a Netflix app can get to know wh...
Recent posts

My Android notes - 2

Note: a few of the content of this post is taken from this StackOverflow answer. Context Context is a very important concept and you will be using it throughout your application. It is an abstract Java class defined as public abstract class Context extends Object by the Android system. What is Context? Context represents a handle to get environment data . Context class itself is declared as abstract, whose implementation is provided by the android OS. Context is like remote of a TV & channels in the television are resources, services, etc. Just keep in mind that Context contains the current state of the application/object. It lets newly-created objects understand what has been going on. How to get the Context? Ways to get context : this (inside a Service, Activity or any other class that directly or indirectly extends Context ) getApplicationContext() getContext() getBaseContext() What can you do with it ? Loading resource. this.getResources() in...

My Android Notes - 1

This will be a series of tutorials on basics of Android app development. Although I won’t get too much deep into the practicalities of Android app developement (you have YouTube tutorials for that), but I will try to focus more on the concepts involved. So, let’s begin! Project Structure This is the project structure of a sample app called “Netphlix”. In your Android Studio, it will be displayed on the left sidebar of the window. manifest : You can see a file called AndroidManifest.xml in a directory (folder) called manifests . This AndroidManifest.xml file holds all the necessary information about the app. Information like: what permissions your app requires to run (like Internet permission, permission to access local disk, permission to access the camera etc.), what all components your app has, name of the app, path to the app’s icon image etc. java : Next, you can see a directory named java . This is where all the Java files that you write for you...

Using Tor - from a developer's point of view

People use Tor for various reasons these days. Journalists use them to accept whisleblower submissions, people with restricted internet access use it to jump those blockades, people with concerns about their privacy use it, people with bad intensions use it for obvious reasons etc. Tor has around 2 million users per month and today, in this post, I want to tell you how I, as a (student) developer, use Tor. There is an awesome feature in Tor called Hidden Services where Tor provides anonymity to the servers hosting a website. Tor provides you with an .onion address (just like .com or .in domain) after the Hidden Service is set up. Tor Hidden Services can also function behind a Firewall or NAT which means, if you have a website running on localhost of your machine, then you can start a Hidden Service and serve the same website on Tor and anybody on Tor can visit it even if your machine is behind a NAT and has a private IP address. I wanted to expose the website running ...

How are Bitcoins mined?

The image below is an example of the screen that appears when your Bitcoins have been sent. There is some text in roughly red marked area in that image saying “0.00022368 BTC" as a transaction fee to miners. In order to understand how Bitcoins are mined and why you should pay that transaction fee to miners, read this whole article! Whenever you start your transaction, there will be a transaction request (i.e. digitally signed message which is carrying your bitcoins) created and it is sent to the miners. Now, I have created a scenario in order to explain the mining process! The words in bold text will have a special significance and will help us to corelate with the actual Bitcoin terminologies later on. Imagine your transaction request as a letter ( or a courier). Miners collect your letter and put them in a machine . Just like yours’, there might be thousands of such letters from people all around the world! They collect all these and put them in the same mach...

My-Cloud-IDE - a SaaS built using Docker

I always wanted to know about how services like Codenvy  and Heroku  internally worked. The only way to understand that was to build a similar project. The main component of this project is Docker. Docker  Docker is a software that performs OS-level virtualisation and is developed for Linux. More information about it can be found here . About My-Cloud-IDE: My-Cloud-IDE is a proof-of-concept for a Software as a Service (SaaS). It   can be used to perform software development on cloud without worrying about resolving software dependencies, software installations etc. The user gets a fully functional IDE in his/her browser after registration. Each user has his/her own isolated software environment because My-Cloud-IDE uses Docker to perform OS-level virtualisation in the backend. Technical Details I divided the project into two modules. One module was for 'management' purpose. This includes user interfaces, user management and preparing some files that a...

How did I setup a Rasberry Pi 3 without any peripherals

I am an absolute beginner in this Raspberry Pi (I'll be using "RPi" for short) world and this post shows how I started up the RPi without using external keyboard or mouse (for RPi) and still managed to get a graphical desktop environment of Raspbian on my Debian workstation (and controlled my RPi remotely). Step 1: I downloaded 'Raspbian Stretch with Desktop' ( here ). I got a ZIP file. I unzipped it and ended up with a .img which was roughly 4.6 GB. Step 2: Now, to create a bootable media (a memory card perhaps) by copying the .img file onto it, I used dd command. sudo dd if=<path to img> of=/dev/<sdb,sdc..> Be particularly careful with using dd command. You can mess up a lot of things. Using dd command on your memory card will wipe out all contents in it. Using dd command on your hard disk, umm.. not a good idea. To know the disk path of your memory card, use sudo fdisk -l  (el in small caps) . Your hard disk will probably be /dev/sda. You...