Dear friends! We have passed more than half of the journey together: Tbilisi, Yerevan, Vilnius… Up next are Berlin and Warsaw. In less than a month, over a hundred people – IT specialists, UX designers, data analysts, activists, and journalists – have participated in our Hackathon Without Borders. They have come together to find new technical solutions that will help overcome internet censorship and digital surveillance in times of war.
Another distinctive feature of the Hackathon Without Borders is the curated tasks we have developed in partnership with renowned technical projects working in the field of Internet Freedom. We are curating tasks from eight projects: Torproject, OONI, CENO, AmneziaVPN, Goodbye DPI, Lantern, NewNode, and Roskomsvoboda.
This means that by choosing a task from one of our partners, you are working on it under the guidance of developers from these organizations.
Unlike a traditional hackathon, our event fosters cooperation and collaboration among teams in different cities. Projects initiated by one team can be further developed by another. And, of course, in each city, we give local projects the opportunity to propose their own tasks that are relevant to the local community because the main goal of the Hackathon Without Borders is to unite diasporas and support communities that have been forced to leave their countries due to war and global political crises.
Ambitious? Absolutely! And for a good reason! The experience from the first three cities has shown that the format works!
Let’s briefly summarize the intermediate results: what has been accomplished in the first three hackathons and what lies ahead? We hope that this information will help the teams in Berlin and Warsaw find a task that resonates with them, while participants from Tbilisi, Yerevan, and Vilnius will recognize themselves and their achievements in the text!
The Roskomsvoboda team
Roskomsvoboda has proposed three tasks for the Hackathon Without Borders:
- Visualize the history of internet censorship in Russia.
- Automate the registry of prohibited information.
- Visualize the map of video surveillance cameras in Moscow.
1. Visualization of internet censorship history in Russia
A participant from Vilnius worked on a graph representing website blockages in Russia based on censorship data from 2012 onwards, categorized by government agencies.
What else can be done?
- Verify the data against the original source, especially for completeness prior to 2016. In 2016-2017, there are instances of website unblocking, which contradicts the pattern shown in the graph. It’s possible that information for a specific government agency is missing.
2. Automation of the registry of banned information
Teams in Tbilisi worked on the task of automating the monitoring of the registry of banned information in Russia, categorized by different themes and reasons for blockages. The goal of the tool is to assist the editors of the Roskomsvoboda website in tracking statistics on blockages across various categories such as anime, music censorship, military censorship, and more. Currently, this process is done manually and consumes a lot of time.
The team proposed creating a tool that would help quickly determine the thematic category to which a blocked resource (website or page) belongs. The working principle involves counting keywords on the blocked resource, considering the domain and the government agency that made the decision. This would enable automatic categorization of the blockage. The website editor would then need to make a decision on whether the category determination is correct or not.
What has been done:
- Database model.
- Script for downloading files from the Roskomsvoboda website.
- Script for parsing blocked websites.
- Selection of a library for website parsing.
- Layout of the main page of the web application.
- Preliminary scheme for the server-side of the application.
What else can be done:
- Develop the API for the server-side.
- Improve the previous work and incorporate feedback and suggestions.
To be improved:
- Enhance the website analysis block.
- Improve the website parsing block.
- Enhance the data loading block into the database.
- Develop the client-side of the web application for the editor.
If you wish to continue working on the tasks mentioned, please contact the organizers on Telegram. They will connect you with the team from Tbilisi to provide access to their project.
3. Surveillance Cameras Map in Moscow
Team from Yerevan created a website called Prospectus, which showcases a prototype map of surveillance cameras in Moscow along with draft recommendations for the “camera-free” areas.
You can view it here: Prospectus
The project’s code can be found here: Prospectus on GitHub
The team from Vilnius further developed the project initiated in Yerevan by adding a heat map: Prospectus on GitHub
What else can be done?
- Add automatic data loading for updating information. Currently, it only works with manual data export, which will soon become outdated.
- Improve the search feature for districts in the web version. One can develop he project differently: – explore different possibilities, such as packaging it into an application for a social mixed-reality game where users can navigate the map and mark the cameras they have encountered; – add a layer where users can draw their own routes with minimal camera presence; – implement a heatmap layer for cameras (e.g., red for areas with many cameras, green for areas with few cameras).
- It is possible to try finding other datasets (for example, utilizing a dataset of cameras for recording traffic violations). Cameras in parks, subways, and railway platforms are not covered by the existing datasets.
- Another approach would be to extract entrances from OpenStreetMap, associate them with residential cameras (currently, all home cameras are displayed in one location), and point them away from the house.
- Nikolay Ovchinnikov, one of the curators of the Hackathon Without Borders and the director of the social gaming studio Noesis, suggests a subtask: developing a game to popularize the information obtained during the hackathons regarding the number of cameras and attempting to raise awareness among people about the dangers of surveillance and the possibilities to bypass it through the game.
In Vilnius, a project was initiated by Team OONI to analyze data on blocked websites in selected countries on a daily basis using the OONI API to detect new blockages. A prototype was created that collects daily statistics and generates HTML tables showing the difference in confirmed inaccessible websites between days. The next step is to determine when to consider the received signal as a new blockage and send notifications via Telegram.
What else can be done for OONI?
- Update lists of blocked resources to enable OONI to continue measuring censorship using the most current data (including Russian, Ukrainian, Belarusian, and others of your choice).
- Visualize data on military censorship in Russia and Ukraine using the new OONI API. Here are examples of visualizations: https://explorer.ooni.org/chart/mat.
- Develop a new test (for example, to track and measure VPN protocol blocking in Russia).
In Tbilisi, two subtasks were initiated: creating explanatory cards about the CENO browser for social networks to promote this tool among participants of the anti-war movement, as well as several good and simple texts explaining CENO for beginners. Additionally, the accessibility test for the BitTorrent protocol was further developed.
In Yerevan and Vilnius, participants continued to refine the texts about CENO for social networks.
What else can be done for CENO?
Proofread the texts for typos and factual errors. Once ready, distribution plans can be made. There are still pending subtasks from CENO for which no solutions have been proposed yet: https://internetborders.net/o-proekte-ceno/
In Vilnius, an onion service was successfully created for the Golos organization (golosinfo.org): http://golos4u7dbfyii5hhln2rehlmjphbkp2ucxh3mqvsspsl2p6wgbu5qyd.onion/
Work on this service or a similar one should be continued.
In addition to that, there are interesting tasks from Tor:
- Visualize and interpret data on Tor usage since the beginning of the war. Create a bot to distribute Tor Browser via iMessage, allowing people to download the Tor browser in locations where torproject.org is blocked.
Team Goodbye DPI
The team in Tbilisi worked on developing a module that substitutes the response to a known accessible address if the DNS response contains addresses from specified CDN provider ranges. The task has been fully implemented!
The code can be viewed here: https://github.com/CZ-NIC/knot-resolver/pull/77
In Yerevan, the renumber module for the knot-resolver DNS resolver was completed: the ability to renumber networks of any size was implemented, not just fixed /24, /16, /8 networks as it was before the change. The task has also been fully implemented.
The team from Yerevan worked on developing a tool for detecting DNS blocking, DNS injections, HTTP blocking, and SNI blocking.
What else can be done?
- Easy: Design a forward proxy that performs DNS lookups using a specified table, effectively bypassing DNS blocking.
- Medium: Develop a tool for detecting DNS blocking, DNS injections, HTTP blocking, and SNI blocking.
- Hard: Develop an HTTP CONNECT proxy system (client and server components) that utilizes the QUIC protocol as a dialing mechanism.
Team Amnezia VPN
In Yerevan, an all-in-one Docker image was prepared to run a Tor hidden service based on WordPress: a Dockerfile was prepared to build an image that includes apache2, PHP, WordPress, Tor, and MariaDB. Code: https://github.com/wietmann/torpress
What remains to be done?
Fix (complete) the initialization of the database during the first launch of the container and the subsequent generation of the WordPress config with credentials for connecting to the database.
Team New Node
Currently, the problem with all messengers, specifically for Russian and Belarusian users, is the inability to hide certain information when their phones are confiscated by law enforcement. Essentially, the only way to protect oneself at the moment is to delete chats before potential contact with representatives of unlawful authority. However, anticipating all such situations is quite challenging. Therefore, we propose a solution along the following lines:
The messenger should be able to hide certain chats and switch between hidden states in a way that is not obvious to law enforcement. Let’s assume that chats are organized into “spaces.” Upon startup, when switching the app to the foreground, it enters a safe space where the user can gather chats that are safe to be viewed by representatives of unlawful authority.
Creating a new space would involve inputting a gesture (we also need to determine its minimum complexity). The user trains a neural network, and thereafter, it recognizes the gestures. To switch to this space, the user will need to draw the same gesture directly on top of the chats. The user can create an unlimited number of spaces, so even under pressure from law enforcement, they can open a few more with additional safe chats.
Solutions for NewNode from hackathons:
The ifreedomlab project received assistance from a team of UX designers in Yerevan. An audit of the project’s website, specifically the tools page, led to the expansion of tasks. Other pages were added to the website, and recommendations were made regarding the expansion of project activities.
Project Link: https://ifreedomlab.net
The Zeronet-conservancy project team in Yerevan was able to develop a more user-friendly installation guide for Android/Termux. They also created a script that further simplifies the installation process. A potential attack vector on the network was discovered, and a decision was made on the most effective way to move away from the central element of the network (zeroid) and its associated vestiges. A bug on macOS was found and fixed. Additionally, they developed a concept for launching websites through a new API and a test server as a starting point for development in this direction.
Project Link: https://github.com/zeronet-conservancy/rzhs0
What else can be done for Zeronet-conservancy?
Continued simplification of installation and usage for novice users. Further work on DHT (Distributed Hash Table). Further development of the new API. Creation and categorization of useful websites within the network, along with the development of strategies to attract new users.
WHAT TO EXPECT IN BERLIN?
Tasks from our partners from eight projects remain the same. Descriptions of all the tasks can be found here: https://internetborders.net/hackathon/ (you can also read the full description of each task and find links to resources and code by clicking on the team name).
In addition, new teams will join us in Berlin:
The legendary student opposition media offers the following task for the hackathon:
Help develop an open-source self-hosted alternative to Amplifer that can be integrated into the website’s admin panel, allowing news to be shared across all social networks. Access to the DOXA website’s API and other details will be provided to the team that chooses this task.
FAR (Feminist Antiwar Resistance) Team
The Feminist Anti-War Resistance offers two tasks for the hackathon:
- Create a Telegram bot for generating anti-war greeting cards for platforms like Odnoklassniki and WhatsApp, aiming to spread anti-war slogans and images among new target audiences.
- Design an infographic on women’s/feminist protest activities. The participants from FAS will provide the necessary data for this task.
We are looking forward to seeing you at the Internet Without Borders Conference and Hackathon Without Borders in Berlin on June 17-18 and in Warsaw on June 24-25. You can register here: https://internetborders.net/register/
If you want to choose one of the new tasks, please indicate “Own project” and the name of the selected project (DOXA, FAS, Nitka) during registration.