rss.png profile for ebal on Stack Exchange, a network of free, community-driven Q&A sites
tinc-vpn on android

I ‘ve updated my wiki page to add an android section to my tinc-vpn setup.

So here it is my: tinc-vpn to a redirect-gateway instructions.

Dockerfile for Two-Factor Authentication

Most of the people that read this blog post should already know what Two-Factor Authentication is.

For those you don’t, in short terms 2FA is when you can login to a server/site/application using two things and not only one (your password).
Something you have and something you know, like when using your bank card (something you have) with it’s pin (something you know).

There are three (3) android apps at f-droid

  • Google Authenticator
  • FreeOTP
  • Gort

I dont want to use the google authenticator, and i havent yet tested FreeOTP, so i’ve chosen Gort to write about.
Gort is using the barada-pam package as the back-end.

Barada/Gort are based on HMAC-Based One-Time Password Algorithm and not on time sync. This is useful if the clocks are drift and the server (barada) can “catch” one-time passwords even if the counter is out-of-sync by a little.

I ‘ve built a Docker image to show barada/gort on the next Security Talk at Athens,Greece Hackerspace and below is the link on my wiki that contains the Dockerfile.

Be aware on the notes/comments on the file.

virtual disks

I use dd frequently. Especially when i need a backup disk image to restore it to a disk with the same geometry. Most of the case this disk image has partitions. Mounting those partitions to my system is really easy with losetup. So i gathered some basic examples here: losetup examples .

Tag(s): losetup
Dockerfile to build a docker archlinux image with ssh

Today’s work : A dockerfile to build an archlinux image with sshd

You can find my notes here: Dockerfile notes

Time at hackerspace

I am a very proud member of Athen’s Hackerspace.

I am enjoying the entire 3+ years time (and money) that i’ve spend at this hackerspace. Love it.

Today was a very productive day.

With a good friend of mine, are working to setup an ansible, docker, btrfs workshop !

We want to contribute back to the community and we thought that this is a great opportunity.
We are not guru or anything like that - no, we just want to share the knowledge we are getting by spending time at hackerspace. Nothing more, nothing less. Just share our feedback to all the people that have helped us till now.

So, we are working together (collaboration) by making small steps towards to build these workshop.
Today’s work: Creating a tiny compressed archlinux docker image.

My instruction set is documented here: archlinux installation for docker.

Hopefully my next blog post will be about a simple ssh docker file.
We are trying to keep simple notes so that many people can read and use them.

clone your windows with nfsclone

In our business there are times that you have to work with windows boxes.
The main problem with that is that they are constantly broken.

So is there a efficient way to build a proper backup image ?

The answer is YES, by using SystemRescueCd and ntfsclone

A simple and mini howto is here:


3G on Linux, review

(για πιο τεχνικά, προσπεράστε τον πρόλογο)

Πριν από λίγες μέρες, ανάρτησα το εξής post: 3g on linux, cosmote on the go.

Περιέγραψα, σε απλά βήματα, την διαδικασία σύνδεσης στο διαδίκτυο μέσω ενός usb 3g stick. είχα κατά νου γενικές οδηγίες που θα μπορεί να χρησιμοποιήσει μέχρι και ο πιο απλός χρήστης για να συνδεθεί εύκολα και γρήγορα.

Από τα σχόλια του Post, καλύφθηκαν ακόμα περισσότερα θέματα, κι όχι μόνο τεχνικά. Έγιναν αναφορές για διαφορετικές προσεγγίσεις, γραφικά προγράμματα, σύνδεση μέσω τρίτων προγραμμάτων κι άλλα πολλά.

Θα ήθελα να ευχαριστήσω όλους του φίλους για την συνεισφορά τους, τόσο για τα σχόλιά τους, όσο και για τα ηλεκτρονικά τους μηνύματα.

Με αφορμή το post, τα σχόλια και κάποια από τα ηλεκτρονικά μηνύματα που δέχθηκα, θεώρησα φρόνιμο να δημιουργήσω μία νέα σελίδα, στην οποία θα προσπαθήσω να εξηγήσω όσο πιο απλά μπορώ (κι όχι όσο το δυνατό καλύτερα) όλα όσα είναι απαραίτητα γύρω από το 3G σε διανομές Linux.

Θα είναι μεγάλη μου χαρά να το διαβάσετε (κι αυτό), να το σχολιάσετε (μέσω email) και να με διορθώσετε όπου έχω κάνει λάθος ή έχω παραλείψει κάτι.

FAQ :: 3G on Linux

mbox Deduplication using python

A simple python script to deduplicate a mailbox (mbox format).

#!/usr/bin/env python
# Created by Evaggelos Balaskas on Thu Jul 29 21:22:41 EEST 2010
# Remove duplicate mails from mbox using message-id
import sys
import mailbox
if len(sys.argv) == 2:
        mid = []
        for message in mailbox.mbox( sys.argv[1] ) :
                s = message['message-id']
                if s not in mid:
                        print message
        print "Usage should be: " + sys.argv[0] + " mbox > new.mbox"

You can take a look, also, on my other python script: How to remove specific mails from a mbox by subject

Remove duplicate mails from mailbox

A couple of days back, i wrote a perl script to remove backscatter mails from a mailbox file using perl.
You can take a look on the code here:
Remove backscatter mails from mailbox.

Today i wanted to remove the duplicate mails from a mailbox. I’ve used, till now, mergembox, but i wanted to write something on my own.

So, without further ado:

  1 #!/usr/bin/perl -w
  3 use strict;
  4 use Mail::MboxParser;
  6 die $0 =~ /([^/]+)$/, "  >  n" unless @ARGV == 1;
  8 my $mb = Mail::MboxParser->new($ARGV[0]);
  9 my $field = "message-id";
 10 my @MessageIds = ();
 12 while ( my $msg = $mb->next_message ) {
 14         my @msgid = split(/@/, $msg->header->{$field});
 16         if ( grep(/$msgid[0]/, @MessageIds ) ) {
 17                 warn "Duplicate Message-ID: " . $msgid[0] . ", already exists ! n" ;
 18         } else { 
 19                 push( @MessageIds, $msgid[0] );
 20                 print $msg."n" ;
 21         }
 22 }

You can see the code with syntax highlight here:
Remove duplicate mails from mailbox

Remove backscatter mails from mailbox

Φίλος μου ζήτησε βοήθεια ώστε να καθαρίσει διάφορα backscatter mails από το mailbox του. Μία από τις πλέον γνωστές επιθέσεις είναι ο spammer να χρησιμοποιεί διαφορετική mail address ή ακόμα και reply-address με αποτέλεσμα τα back scatters να μην έρχονται σε αυτόν αλλά να πηγαίνουν σε κάποιον άλλο.

Με βοήθησε αρκετά το συγκεκριμένο άρθρο:mbox_selective_deletion και πάνω σε αυτό βασίστηκα για να γράψω την δική μου παραλλαγή:

#!/usr/bin/perl -w
# Created by Ben Okopnik on Thu Jan 14 21:55:46 EST 2010
# Updated by Evaggelos Balaskas on Sun Jun 27 20:50:11 EEST 2010

use strict;
use Mail::MboxParser;

die $0 =~ /([^/]+)$/, " <mbox> n" unless @ARGV == 1;

my $mb = Mail::MboxParser->new($ARGV[0]);
my @subjects = ( 
    "Warning: could not send message for past 12 hours",
    "Returned mail: see transcript for details",
    "Delivery Status Notification (Failure)",
    "Undelivered Mail Returned to Sender"

while ( my $msg = $mb->next_message ) {
  my $s = $msg->header->{subject};
  $s ||= "empty_subject";

  my $flag = 0;
  foreach (@subjects) {
      if ( $s =~ $_ ) {
          $flag = 1;
  print $msg."n" unless $flag ;


Η χρήση του είναι η εξής:

./ mailbox > newmailbox

και φυσικά μπορείτε να προσθέσετε στην λίστα strong>@subjects</strong όσα περισσότερα subjects θέλετε.

Ο πλήρες κώδικας βρίσκεται εδώ: How to remove a specific mail from a mbox

ΥΓ: Θα χαρώ να λάβω παρατηρήσεις.

Encrypted Home & Swap Partition

Προσπάθησα να καταγράψω τις τελευταίες ημέρες (ελπίζω αναλυτικά), την διαδικασία κρυπτογράφησης του home & swap partition.

Για όποιον ενδιαφέρεται ας ρίξει μια ματιά εδώ: Encrypted Home & Swap Partition

κι εάν έχετε τυχόν παρατηρήσεις, παρακαλώ ενημερώστε με.

Yet Another Web Server ?

Ένας φίλος και συνάδελφος, μου προώθησε το εξής link:

Apache Vs Yaws

Μου έκανε τόση εντύπωση, που δεν έχασα χρόνο για να το δοκιμάσω.
Έτσι λοιπόν τις μέχρι τώρα δοκιμές και προσπάθειές μου, τις κατέγραψα στην παρακάτω σελίδα στο wiki μου:

Τυχόν παρατηρήσεις, ευπρόσδεκτες.

Chrooted DropBear

I had installed DropBear (Dropbear is a relatively small SSH 2 server and client.) to a chroot environment. The existed documentation is very poor, so i wrote down my notes here: Chrooted DropBear.

If you have any questions, i ‘ll be glad to answer them.

Another bash script for backup with a snapshot logic.

In the last days i lost some (non critical) data cause i had forgot to install rsnapshot in my laptop. I was without network for a couple of hours and there was nothing on TV. So … i’ve played with bash and made a bash script to backup some directories with a snapshot logic.


The bash script is really simple and straight-forward without any difficult parts. So you can easily configure it, to serve your needs.

# Evaggelos Balaskas, <ebalaskas AT ebalaskas DOT gr>, 20090122
PATHS="/etc /usr/local/etc /boot"
PACMAN="/usr/bin/pacman -Qqe"
RSYNC="/usr/bin/rsync -ra"
MKDIR="/bin/mkdir -p"
CP="/bin/cp -al "
MV="/bin/mv -f"
RM="/bin/rm -rf"

# Make Directory Structure
$MKDIR $DIR/`$DATE +%Y/%m/%d`

#Package List
$PACMAN > $DIR/`$DATE +%Y/%m/%d/pkglist_%H_%M`

if [ -d "$DIR/$BACKUP.$DAYS" ] ; then 

for i in `seq $(expr $DAYS - 1 ) -1 1` ;do 
    if [ -d "$DIR/$BACKUP.$i" ]; then
        $MV $DIR/$BACKUP.$i $DIR/$BACKUP.$(expr $i + 1)

# Create Hard Link
if [ -d "$DIR/$BACKUP.0" ] ; then

# Sychronization
for k in $PATHS; do
    $MKDIR $DIR/$BACKUP.0$k/
    $RSYNC --delete $k/ $DIR/$BACKUP.0$k

# TimeStamp
Debian or FreeBSD ? Why not both ?

Τελικά τι να επιλέξω debian ή FreeBSD;
Εάν όμως μπορώ να έχω και τα δύο ταυτόχρονα δεν θα ήταν καλύτερα;

Φυσικά θα ρωτήσει κάποιος πως είναι δυνατόν;
Η λύση είναι το kfreebsd

Πρακτικά είναι ένα debian σύστημα πάνω από έναν FreeBSD kernel.

Αποφάσισα να του δώσω μία ευκαιρία και για αυτό το δοκίμασα σε ένα VirtualBox. Κατέγραψα την εγκατάσταση του kfreebsd στο παρακάτω link

και το σκέφτομαι πολύ σοβαρά να το εγκαταστήσω

Roadsend PHP - alternative php compiler

Στους διαδικτυακούς προβληματισμούς μου τις τελευταίες ημέρες μπήκε η χρήση scripting languages μέσω fast-cgi. Φυσικά ο λόγος ήταν (και είναι) η (δοκιμαστική ακόμα) χρήση του nginx web server. Αναζητώντας στο διαδίκτυο περισσότερες πληροφορίες με σκοπό να ικανοποιήσω την περιέργειά μου έφτασα σε μία εναλλακτική PHP.

Αναφέρομαι στον alter-native php compiler με όνομα RoadSend-PHP.
Μέχρι στιγμής οι προσπάθείς μου είναι ικανοποιητικές μεν, μη αποδεκτές δε.

Ο σκοπός μου είναι να προσπαθήσω να περάσω το wackowiki σε nginx+roadsend

Ένα από τα ενδιαφέροντα που είδα είναι η ύπαρξη backend με όνομα: MicroServer ώστε να μπορεί κανείς να δημιουργεί stand alone web applications (αυτό θέλει λίγο ψάξιμο - στα todo).

Εάν ενδιαφέρεται να δει κάποιος πως φαίνεται ένα phpinfo στο roadsend
ας ρίξει μια ματιά εδώ:

Init Script for nginx

Αυτό που μου λείπει από τον nginx είναι ένας εύκολος και πιο generic τρόπος για να εκκινώ ή να τον σταματάω κατά βούληση.

Οπότε αποφάσισα να γράψω ένα δικό μου Init Script για αυτή την δουλειά.

Το script είναι αρκετά generic για να μπορεί να χρησιμοποιηθεί και σε άλλες περιπτώσεις με ελάχιστες τροποποιήσεις.
Ελπίζω να φανεί χρήσιμο.

nginx with php

Αυτό το ΣΚ σκέφτηκα ότι θα ήταν καλή ευκαιρία να δοκιμάσω τον nginx web server. Από ότι διαβάζω είναι αρκετά γρήγορος και ασφαλής και μπορεί να χρησιμοποιηθεί κι ως mail proxy. Αρκετά ενδιαφέρον λοιπόν.

Φυσικά ένα web server χωρίς την δυνατότητα να τρέχει ένα δυναμικό site δεν είναι και τόσο σημαντικό στις μέρες μας. Αποφάσισα λοιπόν να εγκαταστήσω και php. Όπως έμαθα γίνεται με την χρήση του fast-cgi οπότε μιας και στο παρελθόν δεν είχα την ευκαιρία να ασχοληθώ με κάτι τέτοιο θεώρησα ότι είανι καλή ευκαρία.

Τα πρώτα αποτελέσματα φαίνεται να είναι καλά. Ελπίζω εντός εβδομάδας να δω περισσότερα.

Στο παρακάτω url έχω καταγράψει την προσπάθειά μου κι ελπίζω εάν κάποιος ακολουθήσει αυτή την κατεύθυνση να βοηθηθεί σε σημεία που εγώ κόλλησα.

php - ternary

Κατά καιρούς γράφω διάφορα πράγματα στο wiki μου (κυρίως για προσωπική χρήση), ένα από αυτά είναι κάποιες σημειώσεις που έχω στα ελληνικά για php

Πρόσφατα έμαθα (θυμήθηκα από την θεωρία στην σχολή) ότι η php υποστηρίζει (όχι όσο καλά θα ήθελα) την δομή Ternary. Επίσης για να είμαι και ειλικρινής το φρέσκαρα και σήμερα που έπεσα σε αυτό.

H δομή ελέγχου ternary είναι μία συντόμευση της if - then - else
Στο manual της php αναφέρεται εδώ.

Ένα απλό παράδειγμα από μένα είναι το εξής:

// Κλασικός τρόπος
if ( $alitheia = 1 ) { 
  print "Yes. it's true";
} else {
  print "No, it's false";

// ternary
( $alitheia = 1 ) ?   print "Yes. it's true" : print "No, it's false" ;

Happy hacking :)


Το incron είναι ένα πρόγραμμα παρόμοια χρήσης και λειτουργίας με το cron.
Η διαφορά του με το cron είναι ότι δεν ενεργοποιείται σε χρονικές περιόδους,
αλλά σε διάφορα events του filesystem.

Κάνει χρήση των εξής συμβάτων ενός συστήματος αρχείων:

  • IN_ACCESS - last access of the file
  • IN_MODIFY - last modification
  • IN_ATTRIB - attributes of file change
  • IN_OPEN and IN_CLOSE - open or close of file
  • IN_MOVED_FROM and IN_MOVED_TO - when the file is moved or renamed
  • IN_DELETE - a file/directory deleted
  • IN_CREATE - a file/directory created
  • IN_DELETE_SELF - file monitored is deleted

Με αυτό τον τρόπο μπορούμε να ελέγχουμε ή να εκτελούμε διάφορα scripts σύμφωνα
με τα παραπάνω events, για παράδειγμα την ενεργοποίηση ενός μηχανισμού που θα μας
ενημερώνει εάν υπάρχει αλλαγή στο αρχείο /etc/passwd μέσω ενός email.

Η εγκατάσταση δεν παρουσιάζει κανένα πρόβλημα, και η χρήση είναι παρόμοια με αυτή του cron.
Υπάρχει το αντίστοιχο πρόγραμμα incrontab για την επεξεργασία των συμβάντων.

Εδώ: έχω και ένα μικρό παράδειγμα λειτουργίας