slightly interesting school stuff

Here are some of the school projects. Licensed under GPL v2 or later.

Forensic tool for Ext filesystem

Program for browsing and searching contents of Ext filesystem. Search can apply filtering to filenames, inode metadata, block type/state, recognize file/data type and search data. Information can be gathered in forensic case file signed wih RSA key using SHA-512 for all hashing operations. Programmed in Python and Cython with GTK+. Personally I am happy with what it does but not very happy whith maintainability (no unit testing), time constraints were a great factor here. Search capabilities and UI surpasses anything I have seen before.

  • supports ext2, ext3, ext4 and future changes (libext2fs)
  • file system inspection (including directory browsing)
  • detailed search for filenames (including regular expression, binary strings and deleted entries), files (size, times, owner, mode, type), deleted inodes, data type, data and slack space
  • type identification (libmagic)
  • forensic case file with investigator notes, search results and extracted data
  • SHA-512 for integrity verification
  • digital signature for authenticity verification (4096-bit RSA key in PEM format)

Internet radio and media server

SHOUTcast radio with voting and audio/video on demand via RTSP stream. Controlled by SIP application server (connected to OpenIMSCore system) and also includes web page/server and special SIP client (GTK+). RTSP streams supports seeking (vlc works, mplayer not). Video database consists of AVI files with MPEG-4 and MP3 streams, song database uses MP3 files with ID3. Programmed in Python.

Source code has patched PJSIP Python binding and fixed (segfault) pyshout amd64 build. Also includes newer version of GstRTSPServer Python binding.

It was tested only on very small scale but in very rare cases libgstrtspserver segfaults (I suspect race condition when stream is being removed and still is in use in some library thread).

Since it uses PJSIP, it has to be under the GPL license.

  • SIP application server in IMS system
  • persistent database IDs (same ID3 or video name information retains ID after being removed and added back)
  • seekable on-demand RTSP streams (songs and videos)
  • streams limited to one per user to conserve resources
  • voting by SIP call or message (every basic action can be done in SIP phone)
  • voting limited to 1 vote per song, any number of songs (per user)
  • web application with song database search, last broadcast songs and current votes
  • convenient SIP client with voting, requesting on-demand streams and playing them

Bayesian spam filter

Simple implementation of Bayesian spam recognition.

Download: Python script

Fake USB HID device

Arduino device which sends keypresses. It is powered over USB and tested on Window XP (works anywhere but it is programmed for controlling Windows). You will need V-USB for Arduino library. Components:

  • Arduino
  • USB socket or cable
  • 2 Zener diodes (3V6, 0.5W max)
  • 3 resistors (2x 68R, 1x 2K2)

Visual Basic script comes from answer.

Download: Arduino source

VLAB -- Cisco network simulation

I completely rewrote and cleaned up VLAB backend, implemented evaluation backend (grading), added IPv6 support and other things. Also every part of project installation and building UML kernel for simulated hosts is now documented.

Project runs on and I created Redmine project

Essay on how IT affects culture and society

This essay is in Slovak language, it's title is “Effects of information technology on the decline of western civilisation” (Vplyv informačných technológií na úpadok západnej civilizácie).

It's dealing with ideas enforced by IT and communication technology, how it endorses activity, individuality and creativity. It also mentions problems with software patents and piracy.

Download: PDF file

Inference engine

As one of our assignments we had to write inference engine. I implemented this production system in Ruby. It is capable of asking questions when there are rules with only one unknown variable. Source archive includes short documentation in Slovak. The test rule sets are also in Slovak but sources are commented in English.

Download: source and document

Regression analysis

During one of my assignments we did matching of different curves to data. It's all in Slovak but here's only the math part which is quite comprehensible :)

Download: PDF file

SIP PBX setup -- Asterisk and OpenSIPS

I've written about it on my wiki – howto

software switch

Pcap-based ethernet multiport switch emulator in Ruby and GTK+ (includes Ruby/Pcap sendpacket patch).

Download: source zip archive, documentation (in Slovak)

note manager (TakeNote)

Note manager in Ruby. Uses WebKit (includes patch for rbwebkitgtk) and GTK+. Most interesting is PathButton implementation, really.

Download: source tarball, quick'n'dirty Debian package (amd64)

scanning helper program (SANE, TWAIN)

This is Gtk+ program in Python which allows scanning documents (supports SANE on Unices and TWAIN on Windows), making PDF file and uploading it to web application.

Get tar with latest sources:

git archive --remote=git:// HEAD > evidencia-scan.tar

Or clone repository:

git clone git://

UDP messaging program with reliable messages

It really is that dumb as it sounds. Anyhow, I had to do it in C because at the time I didn't know how easy it would be in Python (not in Ruby though, py2exe is wonderful). User interface was the problem, I started with CLI and then tried to do it with ncurses (I took some code from my older project) – lesson learned, when I found out it is really no-go on Windows I did it in Gtk+. Never ever use ncurses if it isn't necessary, it's a pain and it won't work on Windows.

Download: source tarball

stuff/school.txt · Last modified: 2012/07/16 15:59 by disorder