Inspiration
Our goal is to free the users of all unwanted data, specifically ads. We want them to be able to focus on the data they're actually looking for and wish to consume. As an added bonus we relieve the network of unneeded traffic.
How it works
We have created a Linux kernel module which can be loaded anytime to a running machine, using root privileges. After being loaded, our module intercepts network traffic, deeply inspecting data it suspects to be related to ad requests. When such data is encountered, the module does its best to deny the ad from ever reaching the machine (e.g dropping queries to ad-serving domains).
Challenges we ran into
Our immediate challenge is to engage with ads downloaded through SSL as well as deal with the blank frames resulting from the successfully performed denies.
Accomplishments that we're proud of
We have successfully loaded our module to a Samsung Galaxy S4 running CyanogenMod. It then successfully blocked in-app ads as well as web ones. While testing, we've also successfully compiled our module to a generic Ubuntu machine (Desktop). It works just as well on a desktop as it would on a mobile one. We've written the code as portable as possible, meaning that it is fairly simple to compile it to other kernels (i.e other Android versions and other Linux distributions).
What we learned
We've learned how to filter strings in a driver, drop packets, and even forge answers and make sure no unwanted traffic is getting through. We have also learned the importance of making sure to have an easily configured module as more and more filter strings arrive quickly. Moreover, we saw how crucial it was to make it easy for users to compile the module.
What's next for Freeternet
With the ease of compilation being so important, combined with the basic need of the driver, we would like to integrate it into the CyanogenMod mainline kernel. This is our main goal at the moment as we believe it would benefit the entire community.
Built With
- linux-kernel