Open Source Projects

Partitioning Social Networks for Time-dependent Queries

Berenice Carrasco and I proposed this project as part of ECE 598 (Cloud Computing Infrastructure) in Fall 2010. Originally, our proposal was of a "interaction-aware" horizontal partitioning heuristics targeted at social networks. Our motivation was how the difference between social networks (i.e., the graph of users), and their respective activity networks (i.e., the messages exchanged between these users) could help in devise better ways for partitioning social graphs.

Under excellent guidance of Prof. Yi Lu, Berenice Carrasco and I improved upon the original idea, and below is an excerpt from our paper published at the 4th Workshop on Social Network Systems at EuroSys 2011:

"We propose to partition not only the spatial network of social relations, but also in the time dimension so that users who have communicated in a given period are grouped together. We build an activity prediction graph to capture relationships with strong activity and serve as the basis for partitioning. New nodes occurring in the current period are added greedily. We test the partitioning results with emulation of Facebook page downloads, and show that our algorithm achieves 10 times better data locality than hash-based horizontal partitioning algorithm."

Documentation

You can find more information about this project in our paper at SNS 2011:

Source Code

I will publish here the scripts that convert the Facebook graph to an APG and to KMetis format — both used in our experiments — as soon as I finish cleaning them up :-)

µBeR: A Microkernel Based Rootkit for Android Smartphones

In this project for CS 523 (Advanced Operating Systems) Cuong Pham, Nathan Dautenhahn and I have designed a low-level microkernel-based rootkit. μBeR, as we called it, supports persistent malicious services on an Android smartphone. Moreover, as a proof-of-concept, we have implemented a keylogger as part of μBeR using the OKL4 microkernel as virtualization framework, Android phone as target device, and the ARM Android and ARM11 KZM emulators.

Documentation

More information about this project in our poster at IEEE Symposium on Security and Privacy (Oakland) 2010:

iMusic Search Engine

iMusic is a vertical search engine that Damion Mitchell, Huong Luu, and I have developed as part of CS 511 (Advanced Database Systems) course in Fall 2009 at UIUC. In this project, we propose the integration of data to produce efficient music queries (i.e., album, artist, and songs) using resources from various websites. Our approach is based on the premise that we can enhance the quality of search results by using a number of available music resources to respond specifically to a user query.

Demo videos

Documentation

Evaluation of a BT-driven DDoS Attack

BitTorrent is a widespread peer-to-peer file-sharing protocol that is becoming more known among users over the Internet. This popularity that has been surrounding it makes it vulnerable to organize and deploy a Distributed-Denial-of-Service attack on hosts over the Internet by exploiting vulnerabilities present in the BitTorrent protocol.

In this project for CS 463 (Computer Security II) at UIUC in Spring 2009, Jurand Nogiec, Fausto Paredes and I have evaluated the effectiveness of a BitTorrent-driven DDoS Attack. The attack proposes a modification on BitTorrent trackers to enable this Denial-of- Service. Basically, peers in a BitTorrent swarm trust the tracker to get the list of peers that they could connect to, to download the file expected. The attack changes the implementation of the tracker to tell all peers that an arbitrary host is a peer in the swarm, leading to a DDoS attack. For our evaluation, we have implemented a number of modifications on top of the network simulator ns-2 and the BitTorrent simulator BTSim to simulate the attack.

Download

Documentation

Cinooka Billiard Game

Cinooka (from "Sinuca", which means billiard in Portuguese) is an open source 3D billiard game that Daniel Beck and I wrote in OpenGL. This was our final project for the "Computer Graphics" course at Universidade Federal do Rio Grande do Sul (UFRGS), Brazil. We received the 2nd best grade for this project in that semester.

Download

Documentation

Source Code

Screenshots

Below you find screenshots of a couple of views from the game's two controllable cameras (click to maximize).

cinooka-01.JPG

Aerial view (Camera 1)

cinooka-02.JPG

Aerial view (Camera 1)

cinooka-03.JPG

Aerial view (Camera 1)

cinooka-04.JPG

Close view (Camera 2)

cinooka-05.JPG

Close view (Camera 2)

ACM-UVA UFRGS

The acm-uva-ufrgs project is a central repository with solutions for problems from the ACM UVa online judge. These solutions are implemented and maintained by three students from the Informatics Institute at Universidade Federal do Rio Grande do Sul (UFRGS), Brazil.

Documentation

Source Code

SAML Holder-of-Key Single Sign-On for Shibboleth2

This project was developed as part of the Google Summer of Code 2008 Program, for the Globus Alliance. Mentored by Thomas R. Scavo from NCSA, I implemented a Holder-of-Key Single Sign-On profile handler for a SAML Identity Provider (the Shibboleth2 IdP) as part of the GridShib project. With this profile handler, a Shibboleth2 IdP can issue holder-of-key SAML assertions to property authenticated non-browser users. A holder-of-key SAML assertion represents a stronger subject confirmation method which can virtually eliminate the impersonation threat associated with bearer-of-key SAML assertions.

Documentation

Source Code

Related News

A Lex-based Lottery Results Analyzer

As part of a freestyle project from the "Compilers" lecture at UFRGS, I developed a lex-based lexical analyzer for finding patterns in the results of three famous brazilian lottery games. The lexycal analyzer takes as input an html file containing the complete draw history for the lottery. After scanning the html code for all winning draw numbers, the analyzer outputs a histogram where the x-axis contains all possible numbers, and the y-axis contains the number of times each number has been drawn.

Code for the scanning function is written in Lex syntax, a tool for specifying and generating lexical analyzers. Auxiliary code for counting the frequency of numbers in each lottery result is written in C.

Screenshots

Below you find screenshots of histograms the analyzer has generated for two famous Brazilian lottery games (chart legends are in Portuguese, click to maximize). The analyzer uses Gnuplot for plotting the scanning results.

MEGASENA2.JPG

"Mega Sena" (September 2005)

QUINA.PNG

"Quina" (September 2005)

Documentation

At the time of writing, the only documentation written for this project is comments (in Portuguese) on the source code.

Source Code

The file lex-lottery_analyzer.zip contains all source code for the project, as well as sample inputs and generated outputs.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License