Posted on August 28, 2007 in Uncategorized by seadogNo Comments »

Έψαχνα εχθές από που θα αγοράσω το βιβλίο Practical Python. Ο παπασωτηρίου το έχει μόλις (!) 47 ευρώ (+ έξοδα αποστολής) και λέει στο στέλνει εντός 4-7 ημερών + (2-3 ημέρες που θα κάνει η έρθει). Το όχι και τόσο αγαπητό Amazon το είχε μόνο σε used μορφή ξεκινώντας από 4 δολάρια! Απογοητεύτηκα γρήγορα πέφτοντας πάνω στην ειδοποίηση ότι τελικά δεν το στέλνουν στην Μπανανία και έτσι εγκατέλειψα και αυτή την προσπάθεια.
Βρήκα όμως το Alibris ένα site που ασχολείται με χρησιμοποιημένα βιβλία και ταινίες, κάνοντας ουσιαστικά τον μεσάζοντα μεταξύ του αγοραστή και του πραγματικού κατόχου του βιβλίου. Όπως δηλαδή και στο Amazon. Μάλιστα πολλά βιβλία υπάρχουν και σε καινούρια - μη χρησιμοποιημένη κατάσταση.
Τελικά παράγγειλα από εκεί το βιβλίο μου, μόλις για 3.87 ευρώ καινούριο! Το αιώνιο κακό είναι τα μεταφορικά τα οποία είναι 14,67 ευρώ για παράδοση εντός δύο εβδομάδων, οπότε το σύνολο 18,54 ευρώ.
Εν ολίγοις, περίπου στον ίδιο χρόνο που θα μου το έστελνε ο παπασωτηρίου και λιγότερα από τα μισά λεφτά θα πάρω το βιβλίο μου. Νεώτερα όταν φτάσει για να δούμε και την κατάσταση στην οποία θα φτάσει!

Posted on August 23, 2007 in Computers by seadog1 Comment »

Ανανεωμένη λίστα εδώ

Έφτιαξα ένα playlist με όλους τους σταθμούς από το e-radio.gr γιατί ο firefox (βλέπε bloatfox) έχει αρχίσει να είναι πολύ ασταθής τώρα τελευταία και προτιμώ να ακούω τους σταθμούς μου χωρίς crash ;)

Για τους ενδιαφερόμενους ορίστε και το script που με βοήθησε να το κάνω (αν και δεν είναι και τίποτα φοβερό!):



#!/usr/bin/env python
import re, urllib

HTML = urllib.urlopen("http://www.e-radio.gr").readlines()
#print HTML

sstring = re.compile("(?<=Repository\/Radios\/gr\/)[A-Za-z]+|(?<=\)[A-z0-9., ]+")
k = 1
for line in HTML:
radios = sstring.findall(line)
i = 0
while i+1 < len(radios):
print "File%d=mmsh://live.onestreaming.com/%s?MSWMExt=.asx" % (k,radios[i])
print "Title%d=%s" %(k,radios[i+1])
i += 2
k += 1

Posted on August 20, 2007 in Computers by seadog2 Comments »


Everybody likes UNO. You can play it uuno-cardssing common playing cards or can buy an UNO pack from your local toy store but I prefer using my homemade GPLed cards!

Here is a small howto to make yours or download the PDF to print yours right away!

Stuff you will need

  • Project DUO implements a free UNO game using python. They are so kind to offer us free GPLed uno card images.
  • Scribus is a open source desktop publishing program with scripting capabilities using python
  • Python programming language

I ripped off IDgen-NG, removed a lot of code, made some improvents and modifications to fit my needs. The resulting scribus script asks for a directory containing your uno cards images and then creates a document placing those images the one next to the other. The output is a dozen pages of physical sized, ready to print and cut uno playing cards, with almost no effort!

Of course this script can be used to produce any kind of playing cards!

Usage:
Open Scribus -> Script -> Execute Script -> Select uno.py (download uno.py)
Select dir containing card images. That's it!

Now print, cut, and enjoy your game!

Posted on August 18, 2007 in Computers by seadog6 Comments »

To howto αυτό θα μας δείξει πως να δρομολογήσουμε δεδομένα IP (TCP, UDP κτλ) "πάνω" ή καλύτερα μέσα σε DNS δεδομένα τύπου ΤΧΤ. Με απλά ελληνικά: πως θα πάρω πρόσβαση στο internet από εκείνο το wifi hotspot στο πλοίο (ή το αεροδρόμιο ή οπουδήποτε έχουν το θράσος να χρεώνουν γι' αυτό το απαραίτητο αγαθό της ζωής!)

Συστατικά:

  • Ένα linux laptop σε τοποθεσία με επί-πληρωμή wifi. Κατα προτίμηση με κάτι debian based. Εγώ το έκανα με Ubuntu
  • Ένας linux server
  • Ένα domain που να μπορούμε να επεξεργαστούμε τα subdomain του
  • Το nstx λογισμικό (debian πακέτο nstx) website

Βασική ιδέα

Η βασική ιδέα πίσω από το όλο εγχείρημα είναι η εξής. Βρισκόμαστε σε ένα χώρο με wifi hotspot στο οποίο μπορούμε να συνδεθούμε, παίρνουμε IP και μόλις ζητήσουμε ένα site αντί για το site εμφανίζεται μία ωραία σελίδα που σου λέει να βάλεις τον κωδικό σου. Σε αυτές τις περιπτώσεις συνήθως επιτρέπεται να κάνεις ping ή/και dns queries χωρίς πρόβλημα. Οπότε αμέσως το διαβολάκι πάνω από τον αριστερό σου ώμο σε ρωτάει: "Δεν είναι δυνατόν να δρομολογήσουμε κάπως δεδομένα IP "πάνω" από ICMP (ping) ή DNS?" Φυσικά και είναι δυνατόν.

Σε δύο εγκαταστάσεις με αυτό το σύστημα που έχω δει, επιτρέπουν και οι δύο ping και dns δεδομένα χωρίς να τα φιλτράρουν (τα dns φυσικά μόνο προς τον δικό τους dns server). Δυστυχώς όμως οι λύσεις IP over ICMP (παρόλο που υπάρχουν πολλές στο google και το ptunnel σε πακέτο στο ubuntu) δεν έπαιξαν επειδή έπαιρνες εσωτερικό IP και είχες πρόσβαση στο δίκτυο μέσω NAT. Οπότε κάπου κόλλαγε η διαδικασία.

Απορρίπτουμε λοιπόν το IP over ICMP και πάμε στο πιο δύσκολο στο set-αρισμα, αλλά πολύ πιο πιθανό να παίζει εάν όχι σε όλες, τουλάχιστον στις περισσότερες εγκαταστάσεις τέτοιου τύπου IP over DNS. Με απλά λόγια αυτό που κάνουμε είναι ο εξής, δημιουργούμε ένα κανάλι δεδομένων στο οποίο αποστέλλουμε πληροφορία κωδικοποιημένη στο subdomain για το οποίο ζητάμε πληροφορίες και λαμβάνουμε πληροφορία κωδικοποιημένη στο TXT πεδίο της DNS απάντησης. Δηλαδή όταν ζητάμε να μάθουμε για το domain jsKsje38.tunnel.foo.gr στην ουσία λέμε στην άλλη μεριά του καναλιού ssh root@1.2.3.4 και η απάντηση μας έρχεται ο DNS πληροφορία κ.ο.κ.

Για να παίξει αυτό θα πρέπει να κάνουμε ρυθμίσεις στο dns server που διαχειρίζεται το domain μας foo.gr, να έχουμε ένα άλλο μηχάνημα που να μην τρέχει DNS για να τρέξουμε τον nstx server που πρέπει να καταλαβαίνει τι του στέλνουμε και να μας απαντά κατάλληλα (έστω ότι έχει την IP 1.2.3.4) και φυσικά να ρυθμίσουμε το nstx client στο laptop.

DNS site:

Έστω ότι έχουμε το domain foo.gr, θα πρέπει να δημιουργήσουμε δύο νέες καταχωρήσεις στο dns server μας τύπου


tunnel.foo.gr. 1 IN NS ntunnel.foo.gr.
ntunnel.foo.gr. 1 IN A 1.2.3.4

Όπου tunnel.foo.gr είναι το domain που θα χρησιμοποιήσουμε ως tunnel για να μεταφέρουμε τα ΤΧΤ δεδομένα μας και πληροφορίες για το domain αυτό θα μας δίνει ο ntunnel.foo.gr nameserver που ακούει στην διεύθυνση 1.2.3.4.

TIP: Για να λειτουργήσει το σύστημα δεν θέλουμε αναγκαστικά δύο μηχανήματα. Μπορούμε να δώσουμε σε μία κάρτα δικτύου δύο διαφορετικά (ή και παραπάνω IP) χρησιμοποιώντας IP aliasing. Φυσικά πρέπει να έχουμε δύο διαφορετικά public IP. Στο παράδειγμά μας έχουμε τα IP 1.2.3.3 (o dns server μας) και το 1.2.3.4 (o nstx server μας).

Server side:

Χρησιμοποιούμε το ip aliasing για να δημιουργήσουμε το interface eth0:1 με την διεύθυνση 1.2.3.4


ifconfig eth0:1 1.2.3.4 netmask 255.255.255.0 up

Κατεβάζουμε το nstx


apt-get install nstx

To nstx χρησιμοποιεί το αρχείο /etc/default/nstx για την ρύθμισή του, αλλά κάτι πήγαινε στραβά με αυτό και το έτρεξα με το χέρι.

Τρέχουμε το nstx server


nstxd -i 1.2.3.4 tunnel.foo.gr

Όπου -i σημαίνει να ακούει μόνο στην διεύθυνση 1.2.3.4 (στην διεύθυνση 1.2.3.3 έχουμε τον πραγματικό DNS) και να επεξεργάζεται δεδομένα του domain tunnel.foo.gr.

Επίσης δημιουργούμε το interface που θα χρησιμοποιήσει το nstx server για να μεταφέρει δεδομένα


modprobe tun
ifconfig tun0 10.0.0.1 netmask 255.0.0.0 up

Τέλος θέλουμε ότι δεδομένα φτάνουν στο tun0 interface (δηλαδή δεδομένα από τον nstx server) να μπορούν να έχουν πρόσβαση στο net, οπότε θα χρησιμοποιήσουμε IP Masquarate για να τα δρομολογήσουμε μέσω του interface eth0 που έχει πρόσβαση στο διαδίκτυο.

Εγκαθιστούμε το iptables και κάνουμε τις κατάλληλες ρυθμίσεις


apt-get install iptables
iptables -t nat -A POSTROUTING -s 10.0.0.0/8 -o eth0 -j MASQUERADE
iptables -I FORWARD -j ACCEPT -s 10.0.0.0/8
echo "1" >> /proc/sys/net/ipv4/ip_forward

Συνοψίζουμε: Όποιος ζητήσει πληροφορίες για το domain tunnel.foo.gr θα μάθει ότι ο nameserver του tunnel.foo.gr είναι το ntunnel.foo.gr που ακούει στην διεύθυνση 1.2.3.4. Άρα θα στείλει τον DNS server στην διεύθυνση 1.2.3.4 δηλαδή τον nstx server δεδομένα, τα οποία το nstx τα μεταφράζει σε χρήσιμα δεδομένα και τα δρομολογεί στο interface eth0.

Client side:

Έχουμε συνδεθεί στο δίκτυο και έχουμε IP. Πρέπει να μάθουμε μερικά πράγματα για το δίκτυο που βρισκόμαστε. Πρώτα το IP του dns server που πρέπει να χρησιμοποιούμε. Βρίσκεται στο αρχείο /etc/resolv.conf . Δεύτερον το IP του gateway που έχουμε τώρα.

H καταχώρηση στο route table με flags UG είναι το gateway μας


route -n
Destination Gateway Genmask Flags Metric Ref Use Iface
xx.xx.xx.xx 0.0.0.0 255.255.255.248 UG 0 0 0 eth0

Κατεβάζουμε το nstx (το έχουμε από πριν! θυμάστε ότι δεν έχουμε πρόσβαση εδώ που βρισκόμαστε!)


apt-get install nstx

Και το εκτελούμε


nstxcd tunnel.foo.gr <ip dns server που πρέπει να χρησιμοποιούμε>

Δημιουργούμε το interface για το nstxcd


modprobe tun
ifconfig tun0 up 10.0.0.2 netmask 255.255.255.0

Και τώρα πρέπει να ορίσουμε ως νέο default interface το tun0 και να δρομολογούμε από το παλιό μόνο τις αιτήσεις DNS.


route del defautl
route add default gw 10.0.0.1 tun0
route add -host gw dev eth1

To eth1 είναι το wifi device στο laptop. Σε άλλους μπορεί να είναι wlan.

Voila! Τώρα όλα τα δεδομένα δρομολογούνται μέσω του tun0 μεταφράζονται σε dns queries κ.ο.κ. και εσύ απολαμβάνεις internet access χωρίς να πληρώνεις 10 ευρώ τα 15' λεπτά! (ναι για τέτοιες τιμές μιλάμε!)

Τελικές παρατηρήσεις:

Δεν ξέρω για άλλους χώρους, αλλά στα πλοία η πρόσβαση στο Inet πέρα από πανάκριβη είναι και τόσο ασταθής και αργή που ουσιαστικά δεν μπορεί να χρησιμοποιηθεί. Προσωπικά κατάφερα μερικά ssh connections (για web ούτε για αστείο) χρησιμοποιώντας συμπίεση και ssh version 1 (δεν ξέρω γιατί αλλά έπαιζε καλύτερα από το δύο. μάλλον λιγότερα δεδομένα ;) και αυτές δεν διαρκούσαν παραπάνω από 1-2 εντολές, εάν έφταναν μέχρι εκεί.

Posted on August 16, 2007 in Uncategorized by seadog6 Comments »

Επιτέλους! Είναι η δεύτερη προσπάθεια αλλά η πρώτη δεν μετράει. Είχε μόνο ένα - δυο posts και ούτε καν θυμάμαι που και πως το είχε στήσει. Τελευταία όμως συνέχεια έλεγα ότι θα έπρεπε να είχε ένα weblog για να συγκεντρώνω μερικά ενδιαφέροντα νέα και σκέψεις, μερικά scriptακια που hackαρω εδώ και εκεί και γενικά πράγματα που αξίζουν "κοινής θέας", ορίστε λοιπόν: '''To προσωπικό ιστολόγιο του Γιώργου Λογιωτατίδη (a.k.a seadog)'''

Περισσότερα σύντομα!