My Project List

Feb. 2, 2013, 8:19 p.m.

Team

RuCTF is the annual open CTF challenge in information security among teams from russian universities. RuCTF started out in 2008 and was the first challange of such kind in Russia. Now it consists of two phases: quals and finals. Quals are remote, finals are local (USU, Ekaterinburg). My roles: task/service developer.

RuCTFE is RuCTF Extended to the edge of the world. Teams from universities of all countries are welcome. My role: devteam leader.

Xain is a ezine on issues concerning computer security. My role: article writer.

HackerDom is a team that organizes UralCTF, RuCTF, RuCTFE, publishes Xain, runs a weekly seminar in USU and participates in other CTF challenges. In a team of five HackerDom members including me we won the C.I.P.H.E.R. 4.

Personal

UnPyc is a dissassembler and (sometimes) decompiler of python *.pyc files.

FIPL is a small framework for image processing on CUDA devices.

Select

Feb. 2, 2013, 7:53 p.m.
my $paddr = inet_aton($addr);
croak "Cannot resolve '$addr'" if (!defined $paddr);
socket SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')
    or croak 'Cannot create socket';
connect SOCK, sockaddr_in($port, $paddr)
    or croak "Cannot connect to server '$server'";
send SOCK, "$query\r\n", 0;
vec($rin, fileno(SOCK), 1) = 1;
do {
    ($nfound) = select($rout = $rin, '', '', $timeout);
    croak 'Select() error' if ($nfound == -1);
    croak 'Timeout' if ($nfound == 0);
    croak 'Recv() error' if (!defined(recv SOCK, $buf, 512, 0));
    $answer .= $buf;
} while $buf ne '';
shutdown SOCK, 2;
sub sendRaw($$$) {
    use constant IPPROTO_RAW => 255;
    my ($destination, $dport, $packet) = @_;
    eval {
        socket(SOCKET, PF_INET, SOCK_RAW, IPPROTO_RAW);
        my $paddr = sockaddr_in($dport, inet_aton($destination));
        send(SOCKET, $packet, 0, $paddr);
    };
    if ($@) {
        print "Error occured: $@";
    }
}

sub assembleRawUdp($$$$$) {
    my ($destination, $dport, $source, $sport, $data) = @_;

(Read more)