Μηνιαία αρχεία: Ιούνιος 2019


Compiling the latest version of YubiKey Personalization Tool on Ubuntu 18.04 LTS

Recently, we were got our hands on some YubiKeys, and we decided to use them to create a Two Factor Authentication System (2FA) for the fun of it! We had at our disposal an updated Ubuntu 18.04 LTS so we installed the personalization tools from the official repositories in order to modify the behavior and configure the YubiKeys.

To our disappointment, when we used ykpersonalize and yubikey-personalization-gui we would get an error that the firmware of the YubiKey was unknown…
At the time, the installation packages from the official Ubuntu repositories had version 3.1.24 for the application version and 1.18.0 for the library version.

We noticed that on the YubiKey Personalization Tools page there were newer versions of both the application and the library. Specifically at the time the Application version was 3.1.26 and the Library Version was 1.19.0. Since both were newer than the versions in the repositories we decided to build them and see if they work right with our YubiKeys.

The instructions in the respective installers, were not 100% complete and the installations failed by blindly following them. To actually make the installations work, we installed the following dependencies and tools before compiling:

sudo apt update -y;
sudo apt upgrade -y;
sudo apt install build-essential -y;
sudo apt-get install pkg-config git autoconf libtool asciidoc-base -y;

After installing the above packages the rest of the installation went smoothly.

Installing the command line tools and the library

cd ~; # or any other folder of your choice
sudo apt-get install libykpers-1-dev libyubikey-dev libusb-1.0-0-dev libjson-c-dev -y;
git clone https://github.com/Yubico/yubikey-personalization.git;
cd yubikey-personalization;
autoreconf --install;
./configure;
sudo make check install;

Installing the Qt based Cross-Platform YubiKey Personalization Tool

cd ~; # or any other folder of your choice
sudo apt-get install qt4-qmake libqt4-dev -y;
git clone https://github.com/Yubico/yubikey-personalization-gui.git;
cd yubikey-personalization-gui;
qmake && make;


ACM ICPC – Cyprus National Competition 2019

(Cyprus Collegiate Programming Contest)

On the 8th of June, the Cyprus National ACM ICPC programming competition was held at the premises of the University of Central Lancashire – Cyprus in Pyla.

The competition was co-organized by all major academic institutions in Cyprus under the auspices of the Cyprus Computer Society. The participating Universities (in alphabetic order) were the following:

  • Cyprus University of Technology
  • European University Cyprus
  • Frederick University
  • Open University of Cyprus
  • UCLan, Cyprus
  • University of Cyprus
  • University of Nicosia

The technical aspects of the competition were held up to the standards of the International Olympiad in Informatics using an automated grading environment with live feedback for the contestants.

In total, the competition hosted 8 teams of 4 members (3 contestants and one mentor). 5 algorithmic problems were given to the contestants to solve programmatically in 3 hours. By the end of the competition all 5 problems were 100% solved by at least one team.

Thanks to the work of the Organizing Committee and especially the efforts by Dr. Josephina Antoniou the competition was successfully completed without any issues.

The first two teams with the highest overall score will represent Cyprus to the South-Eastern European Regional Contest. Specifically the two teams are the following (ordered by overall rank, members ordered alphabetically):

Adamos Ttofari, Andronikos Charalambous, Rafail Loizou

Washing Machines
Coach: Chryssis Georgiou

Christodoulos Constantinides, Chryssis Eftychiou, Constantinos Demetriou

Multi-Threat
Coach: Dimitrios Kouzapas

Ranking

RankAcademic InstitutionTeam Name
1University of CyprusWashingMachines
2University of CyprusMulti-Threat
3University of Cyprusinsert_catchy_name_here
4University of CyprusCoding_Warriors
5University of CyprusTrifecta
6University of CyprusPaphos
7Cyprus University of TechnologycutOverflow
8University of Central Lancashire CyprusMAF-Lab

ACM ICPC – Cyprus National Competition 2019

On the 8th of June, the Cyprus National ACM ICPC programming competition was held at the premises of the University of Central Lancashire – Cyprus in Pyla.

The competition was co-organized by all major academic institutions in Cyprus under the auspices of the Cyprus Computer Society. The participating Universities (in alphabetic order) were the following:

  • Cyprus University of Technology
  • European University Cyprus
  • Frederick University
  • Open University of Cyprus
  • UCLan, Cyprus
  • University of Cyprus
  • University of Nicosia

The technical aspects of the competition were held up to the standards of the International Olympiad in Informatics using an automated grading environment with live feedback for the contestants.

In total the competitions hosted 8 teams of 4 members (3 contestants and one mentor). 5 problems were given to the contestants to solve in a competition that lasted 3 hours.

Thanks to the work of the Organizing Committee and especially the efforts by Dr. Josephina Antoniou the competition was successfully completed without any issues.


Assigning auto-increment IDs to empty fields in a KML/XML file

Recently we were processing some KML files using OpenLayers and at some point we realised that some place-marks were not appearing on the map. After inspecting the debug console and the files more carefully we understood that OpenLayers did not like empty placemark IDs.

To mitigate the problem we wrote the following AWK script that will go over all lines in the KML/XML file, find the empty id fields (id="") and assign them with an auto-increment value. A note here, initially we just replaced all empty IDs with the same value but it seems that OpenLayers does not treat kindly conflicts on IDs and thus we had to go with an auto-increment solution.

# Assigning auto-increment IDs to the placemarkers as openlayers does not show conflicting-ID elements.
awk -i inplace '{
  for(x=1;x<=NF;x++) {
    if($x~/id=""/) {
      sub(/id=""/,"id=\"" (++i) "\"")
    }
  }
}1' "$output_path/$file_name";

Side notes

In case you already have some IDs defined, you would have to make your code a bit more complex… You would first need to find all filled IDs and then you would have two options:

  • empty them and execute the above script
  • or register them and make sure the script does not create conflicting IDs either by starting the variable i from a number greater than the biggest registered ID or making it even harder by filling in the gaps between the already registered IDs..