Archive for the 'Computers' Category

The Tao Of Webdesign

Saturday, January 14th, 2006

People still don’t get it. And I’m not talking about mere webdesigners, but also of producers of content management systems (weblogs and wikis as a subclass of this).

Even though there exist some really marvelous pages which you can use as inspiration http://csszengarden.com/ for instance. Or http://www.meyerweb.com/eric/css/edge/. And there are also pages which tell you exactly what you should do, and what not: http://www.webstyleguide.com/

But what do I get? Fixed width pages which scroll sideways or put the content above each other, because some asshat thinks everyone has at least 800×600 and uses the browser in full screen mode. Well, hell, no. My Browser tries to have natural proportions of 1:√2 — same as A4.

This makes even with 1280×1024 just about a browsing-space of 700×1000. Less with my 1024×768 at home. I won’t even go into handhelds and cellphones. Of course my colleague with his 1920×1600 has the problem of pages sitting in the middle of his screen, because they only occupy 700 pixels width instead of his 900. So why the fuck are people still hardcoding it?

It Ain’t Easy

Saturday, January 14th, 2006

It ain’t easy to start blogging. Well, it would, if a blog would be all that you want. But if you want to incorporate it into an existing website, you’ll discover that the author of the thing has completely different ideas about the structure of the css-file.
Of course, your colors look terrible if the font used is smaller or bigger than intended. Also, everything seems to have some fixed width used, which really pisses me off.

Well anyway, I seem to have managed, it blends reasonably well with the rest of the page, tough it still uses its own css, so you can’t change the css as in the rest of the pages.

Well anyway, one reson for this is that the “Bookmarks”-section was getting more and more outdated, since the automatic update from the Browser didn’t work since Communicator 4.7, and attempts to do it by WebDAV have proven futile (the pugin made firefox stall and crash). The second reason is of course that I like to rant. And what I’ve done in my “Essays” Section I can do in a blog now. So there.

Webdesign Issues

Thursday, November 11th, 2004

Problems and Workarounds concerning Webdesign

Abstract

The Tao of Webdesign. Well, it’s there, its XHTML strict with
CSS. Sad that some browsers just can’t work with it or have
severe bugs. So I asked myself the question, what public do I have,
and which browsers do I have to support? Support, in a sense of
“it has to be reasonably useable an readable”. Specifically, one
Question was whether enough (more than 1 percent) of people will
be using very old (and broken) browsers like Netscape 4.x or MSIE 4.x

The Browsers

For determining the capabilites of browsers, it was necessary to decide
what browsers would have to be looked at. So I assembled some data
from October 2004 on swiss Webpages.

A statistic from a high-traffic sports-tournament page. This gives us a
hint on what the majority of unsuspecting users will use. Note that this,
as a sports-event, will necessarily not be a representative sample of the
whole population, as it is to expect that a whole lot of people are not
interested in sports at all, or not interested in that specific sport;
thus probably under-representing certain groups of people (thought to
be the technical and the scientific community, for instance).

MSIE 6.x	84.23%
MSIE 5.x	 8.25%
Mozilla		 5.37%
Opera 		 1.37%
Netscape 3/4	 0.31%
MSIE 4.x	 0.10%

And one from a medium-traffic tech-news site. The Site is moderately
technical and covers also socio-technical problems or politics related
to technology. The sample is thus heavily skewed towards technically
proficient people and early adopters. But having the early adopters
in there makes it very interesting as a foreshadow of future development.

Mozilla		39.67%
MSIE 6.x	30.41%
kHTML		 3.99%
Opera		 3.49%
MSIE 5.x	 2.01%

We thus conclude that Netscape 4.x and MSIE 4.x are practically dead,
and given the brokenness of those browsers, not worth the effort of
supporting at all.

As general trends we can thus conclude that MSIE 5.x will fall below
one percent in maybe a year or two, getting replaced by more modern
browsers. Support for MSIE 5.x should only be done if its a small
effort and does not interfere with other browsers. On a small rise
seem to be Opera and kHTML (the latter a library used by Konqueror
and Safari), definitly worth some support. The big hunk of people
right now is using MSIE 6.x, so that is the main target, along with
its contender Mozilla which might well surpass MSIE in the future.

Another point is the relative standard-adherence of the browsers.
While Mozilla, Opera and kHTML strife for maximal W3C-compliance
(and are sometimes very close to achieve it), this cannot be said
for MSIE. Since the future of MSIE is largely unknown (Microsoft
talk about a new version some time in 2007); the only sane choice
is to adhere to the standards as much as possible. Specifically
writing web-pages for MSIE 6.x seems short-sightened in this light.
Due to the large installed base however, MSIE 6.x justifies for
specific adjustments and bug-workarounds.

Standards

Given that there not only are standards, but those standards are
evolving and mostly implemented in the browsers, it makes sense to
adhere to the standards; and to adhere to the most strict version
of it (the transitional-versions are, well, for the transition of
pages from an earlier standard in order to simplify work). Well,
but there is not only one standard, but many.

There is, for instance,
the old HTML 4.0 which was surpassed by XHTML 1.0 (essentially this
would be HTML 5.0). And there is not only XHTML 1.0 but 1.1 and now
2.0. According to the recommendations of the W3C
XHTML 1.1 is a modularized version of XHTML 1.0; and XHTML 2.0 is
something completely new and incompatible to anything else. Given
that browsers don’t understand XHTML 2.0; I can’t discern the differences
between XHTML 1.1 and 1.0 and given that the W3C itself uses mostly
XHTML 1.0/strict, XHTML 1.1 and 2.0 can only be viewed as work-in-progress
or proof-of-concept which right now aren’t worth the trouble to implement.

When using XHTML 1.0/strict, we’re bound to only make layout-changes
through a Cascading Style Sheet (CSS). Now, there are different versions
of those as well. There’s level 1 and 2.1; and level 3 in development,
and not all browsers support all elements of level 2.1. Luckily all
relevant browsers support level 1. The choice making sense is to use
CSS level 1, with selected elements of level 2, and to ignore that some
features like :after and :before do not exist on MSIE 6.x; they aren’t
really of big importance, the layout will look a bit different, but so
what.

Bugs

This is a bit MSIE 6.x-heavy, but what do you expect? Pretty much
all of those are documented on
Position is Everything
. Of course I ran into several of them; one of
them seemingly not turning on a horizontal scrollbar while positioning some
text WAY to the right instead of just 350 pixels.

Peter Keel,

2004-11-11

Fighting System for Computer-Games

Thursday, November 4th, 2004
Realistic Arms- Armor- and Fight-Models

Abstract

Most action-games, even the ones set in fantasy-environments
concentrate on ranged weapons, or do have only a very limited support for
non-ranged weapons, limited moves, thrusts and slashes. More so if they’re
first person perspective. Most RPGs on the other hand just display some
pre-defined moves, according to whether the agent hits or not, which
in turn is mostly defined by the stats of the agent and some dice. This
essay will present you with an action-oriented alternative combat-system for
first-person perspective-games

Premises

Real medieval hand-to-hand-combat is completely different than what
ever is depicted in movies or computer-games. The aim is to incorporate
these realities into a game-engine.

  • Armour is as light as possible, designed to be as much as
    protective as possible against specific threats and weapons. Chain mail
    for instance was designed against slashes, but not against thrusts.
    Armour is also nearly impenetrable against those specific threats. You
    cannot, for instance, pierce late medieval plate armour with a bow or
    light crossbow.
  • Arms are as light as possible as well, and change with time
    to accomplish a very specific goal, to inflict damage to a very specific
    target. A flail is only useful against opponents wielding shields, but
    in that case very much so, because you can hit them behind their shields.
    A lucerne hammer won’t inflict more damage than a sword, but is able to
    penetrate plate armour, thus only appeared with the appearance of plate
    armour.
  • Style arms and armour dictate how you are able to fight. You
    can’t just bang on plate with your sword and hope to break it some time.
    You could try to thrust into weak spots instead. There is no “parry” or
    hard block with weapons, instead real medieval combat focuses on
    counterattacks or avoidance.
  • Damage is primarily done to the opponent. The chance of
    damaging the armor in a way that it isn’t protective anymore is
    about null. But the armour will afflict your damage if not cancel
    it altogether. As part of a simple damage-model, fatigue could be
    used, thus making wounded agents slower. In extreme cases, limbs
    could be severed, limiting the physical possibilities of the agent
    further.

[If you’re objecting now, you’re probably wrong. If you’re not
practicing medieval armed combat and regularly wear armor, you most
certainly are]

Needs

Here we look at the technical needs to incorporate this into a game.

  • 3D-Engine Most basic. Mort probably any good one will do,
    focus on large seneries is best, as well it should be able to handle
    a great many objects with different textures (or shaders to accomodate
    for the lack of textures).
  • physics-engine is probably the most important part. Not only
    it has to apply phisics to normal objects, but also to players, and most
    importantly to weapons as well. It also needs the capability to define
    objects which can damage other objects, namely cut and pierce according
    to with which force/speed it is applied.

How it works

For ranged weapons, its simple. You target preferably a weak spot of
your opponent, and on a hit, your arrow or whatever will maybe hit some
armour, pierce it or not, and inflict a wound.

For hand-to-hand combat, you use your mouse. left button slahes, right
button thrusts; and it does it when you release the button, thus making
it possible to direct the weapon with movements of the mouse while holding
down the button. Its possible in that way, not only to direct your weapon
exactly to where you want to, like a thrust into the eyes, but also to
counter a thrust with a slash.

The weapons will of course have different mass and impact, thus making
it possible to pierce a plate armour with a lucerne hammer, or to thrust
through chain-mail with a one-and-a-half-handed sowrd.

Fatigue will be essential, making people wearing heavy armour or other
load tired and slow down very fast; opening the possibility for lightly armed
fighters to win nevertheless, even when one has to hit one small weak
spot in the enemys armour.

A further idea for more realism is that, poeple having mass, you can
define that some armour has sizes. Maybe three sizes for chain mail,
but very fine-grained sizes for plate armour. This way, most plate
armour found would be useless and could only be sold. This also balances
the inflation of armour.

Examples

To slay a wolf, you just target the wolf, go near enough and thrust or
slash anywhere. You could target the head or try to sever one of its legs.
The wolf isn’t armoured, so it doesn’t matter too much where you hit.

To fight a barbarian which wears a chain mail gets a bit more
difficult. Will you try a thrust to his head, or maybe a slash to his legs,
where he is unarmoured? Or maybe just thrust anywhere, in the hope your
long sword is able to pierce his armour?

The knight in plate armour is a very dangerous opponent. You could thrust
to his axles, or maybe run around him in order to make him tired (and then
thrust), run away, and so on.

Peter Keel,

2004-11-04

IRC’en mit Linux

Tuesday, October 2nd, 2001

IRC’en mit Linux

Das IRC, unendliche Weiten

1988 Schrieb Jarkko Oikarinen (jto@tolsun.oulu.fi) in Finnland das IRC,
Internet-Relay-Chat. Es handelt sich dabei um eine variable Anzahl Server
die miteinander verhängt ist. Alle User auf allen Servern des Netzes können
hierbei miteinander kommunizieren. Derartige Netze gibt es viele, von den
grossen EFnet (Eris-Free net) mit etwa 80 Servern und Undernet mit etwa 45
Servern zu kleineren wie dem Slashnet und privaten Mikronetzen. Informationen
zum Undernet gibts auf http://www.undernet.org
und zum EFnet auf http://www.efnet.net.

Kanäle und andere Martiografie

Die Netze sind wiederum in Kanälen organisiert, die am # vornedran erkenntlich
sind. Kanäle gibt es beliebig viele und sobald ein User einem Kanal beitritt
der noch nicht besteht, entsteht ein neuer Kanal mit dem Benutzer als
Kanal-operator (chanop). Viele etablierte Kanäle wie #linux bestehen ständig,
haben dutzende von Ops und Roboter die den Kanal in Abwesenheit menschlicher
Benutzer bewachen. Viele dieser Kanäle haben auch Regeln wie man sich benimmt
und Homepages auf denen man diese nachlesen kann.

Das Restaurant am Ende der Galaxis und die Barbaren

Wenn das Usenet der Eckpfeiler des Internets ist, dann ist das IRC der
Wilde Westen, die Hafenbar und das Rotlichtviertel des Internets. Nirgendwo
sonst geht es derart rauh zu. Nirgendwo sonst ist die Wahrscheinlichkeit
grösser für einen fauxpas aus dem Kanal geschmissen zu werden oder weil
einem ein bestimmter User nicht mag mit irgendwelchen Päckchen bombardiert
oder gehackt zu werden. Nirgendwo sonst kann man derart einfach trojanische
Pferde auflesen… Ein anderer Spass ist des equivalent zu Kneipenschlägerei:
Manchmal verlieren IRC-Server den Kontakt zueinander, ein sogenannter
“netsplit”, erkennbar daran dass Benutzer dutzendweise den Kanal verlassen.
Nun kann es vorkommen dass kein operator mehr drauf ist und man sich oder einen
Bot zum operator machen kann oder sich den Nickname eines operators aneignen
kann, was beim Ende des netsplits zwangsläufig Problemen ergibt. Ganze
Kriege werden derart mit Multi-collide-Bots u.ä. um die Herrschaft über
Kanäle geführt. Etwas anderes unbeliebtes ist “flooding”, das überfluten
des Kanals mit irgendwelchen Messages oder ctcp-kommandos. Ein Versuch
einen Kanal zu “flooden” führt meistens zum Rauswurf (“kick”) und zur
Verbannung (“ban”, man kann den Kanal nicht mehr betreten) aus dem Kanal.

Geräte der Profession

Nun, eigentlich reicht schon ein Telnet um ins irc zu kommen, viel Freude
kommt damit allerdings nicht auf. Was es braucht ist Software die etwas
mehr kann, einen IRC-Client. Es existieren gewaltige Mengen verschiedener
IRC-Clients für Linux, und alle haben ihre Vor- und Nachteile. Im folgenden
Eine Reihe von derartigen Clients, was sie sind und was sie können.

ircII
console

http://www.eterna.com.au/ircii/
Der Vater aller IRC-Clients, IRC-II. Der Client ist konsolenorientiert
und kann so ziemlich viel, wird allerdings immer seltener benutzt. Er
unterstützt Scripts, und es sind auch sehr viele Scripts dazu erhältlich.
Ircii läuft auf allen Plattformen, darunter auch VMS, AmigaOS und MacOS.

Screenshot

tkIrc
tcl/tk

http://netsplit.de/tkirc2/
Wer IrcII benutzen möchte, aber nicht auf ein grafisches Frontend
verzichten will, für den gibts tkIrc. tKIrc läuft nur mit IrcII.

Screenshot

BitchX
console

http://www.bitchx.com
BitchX basiert auf IrcII und kann auch dessen scripts verwenden, kann aber
noch einiges mehr. BitchX ist der Hauptgrund dass IrcII verschwindet und
vermutlich der meistbenutzte IRC-Client unter Linux überhaupt.

Screenshot

Epic
console

http://epicsol.org/
Konkurrenz hat BitchX höchstens durch Epic bekommen, ebenfalls ein IrcII
besierender IRC-Client auf der Konsole. Scheint jedoch noch nicht so
häufig benutzt zu werden.

Screenshot

Ircit
console

https://www.asymmetrica.com/software/ircit/
Ein weiterer IRC-Client auf der Konsole. Benutzt eine Merkwürdige
Scriptsprache namens Frexx’ Scripting Language. Wahrscheinlich nicht das
was man sich wünscht.

Sirc
console

http://www.iagora.com/~espel/sirc/sirc.html
Der letze der Konsolenbasierenden IRC-Clients den ich erwähnen will ist
sirc, und er basiert nicht auf IrcII, kann auch dessen scripts nicht verwenden
aber er unterstützt Perl als scriptsprache. sirc bildet die Basis des
KDE-Clients Ksirc.

Ksirc
kde

https://apps.kde.com/na/2/info/id/197
Dasselbe wie der sirc, aber mit nettem KDE-Interface. Der Irc-Client meiner
wahl. Stabil, zuverlässig, aber das Interface könnte intelligenter
Strukturiert sein (wer mal 100 Fenster auf dem Bildschirm hatte weiss warum).
Vorsicht ist mit den Color-codes geboten. Ich wurde wegen Benutzung von
Mirc(Windows-IRC-Client)-Color-codes schon aus einem Kanal geschmissen.

Screenshot

Keirc
kde

http://www.tedi-h.com/keirc/
Sehr nett aussehender IRC-Client unter KDE. Seine Fenster sind etwas
intelligenter aufgebaut als die des KSirc, er hat allerdings Probleme mit
dateitransfers.

Screenshot

kirc
kde

kIRC
Vermutlich der hübscheste aller IRC-Clients, aber der beschränkte
Funktionsumfang und vorallem die nichtvorhandene Stabilität machen ihn
eigentlich unbrauchbar. Zudem wurde die Entwicklung eingestellt.

Screenshot

xIrc
qt

http://xirc.sourceforge.net/
Netter auf Qt-basierender IRC-Client.

Screenshot

YagIRC
gtk+

Ein recht netter IRC-Client, der Bestandteil von Gnome ist. Funktional und
elegant, allerdings weiss ich nicht wie gut seine Scripting-Fähigkeiten sind.
Ansonsten das Richtige für Anfänger.

Screenshot
YagIRC wurde mittlerweile ersetzt durch Irssi
https://irssi.org

Bezerk

gtk+
Den scheint es seit 1999 nicht mehr zu geben.

Screenshot

Circus gibts nicht mehr aber MOST
war tcl/tk jetzt python/gtk

https://vanderwijk.info/most/
Ministry Of Silly Talks ist der Nachfolger von cIRCus

Screenshot von circus.

Zircon
tcl/tk

https://catless.ncl.ac.uk/Programs/Zircon/
Keine Informationen und Screenshots hierzu. Ich benutze kein tk, und Screenshots
waren keine auf der Homepage.

Zipper
tcl/tk

Scheint es auch nicht mehr zu geben.

Emacs
lisp

ftp://ftp.funet.fi/pub/unix/irc/Emacs/
Für Emacs gibt es eine ganze Menge IRC-Clients. Kiwi, Zenarc, Rockers und
irchat sind auf obigem Server zu finden.

Nüsse und Bolzen

Nachdem wir unsere Software beisammen habe wollen wir einen ersten Streifzug
unternehmen. Der Kernel sollte dabei mindestens 2.0.39, 2.2.25 oder 2.4.20
sein, da einige Löcher durch die man abgeschossen werden könnte gestopft
wurden. Wir starten nun unseren Lieblings-IRC-Client. Ich werde mich im
folgenden auf die Befehle auf der Konsole des IRC-Client einschränken,
da diese auch in den grafischen Varianten funktionieren. Zuerst verbinden
wir uns mit einem Server:

/server <irc-server> <port>

Normalerweise werden port 6666 oder 6667 und umgebende benutzt. Je nachdem
kann der Server auch als Umgebungsvariable IRC_SERVER gesetzt werden.
Nun, da wir an einem Server hängen, müssen wir einen übernamen wählen:

/nick <nickname>

Auch dies kann eventuell schon als variable IRC_NICK vorher gesetzt werden.
Der Nickname sollte ein kompletter Fantasienamen sein, niemand benutzt
seinen wirklichen Namen. Nun können wir uns umsehen.

/list

gibt uns die Liste aller schon bestehender Kanäle. Normalerweise dauert
das so einige Minuten da tausende Kanäle bestehen. Eine schlechte Idee also.

/list -min 6

Zeigt uns nur Kanäle mit mehr als Fünf Leuten drin. Schon besser.
Wir können uns diese nun Seitenweise anzeigen lassen, indem wir

/set hold_mode on

Setzen. Wir können auch das list-kommando noch etwas verfeinern, indem
wir zum Beispiel eine etwas komprimiertertere Darstellung wählen:

/list -min 6 -wide

Wenn wir genug gesehen haben, sollten wir das Seitenweise anzeigen wieder
ausschalten, mit

/set hold_mode off

Nun ist es zeit in einen Kanal hineinzugucken, wir schliessen uns einfach
mal irgendwo an, zum Beispiel dem kanal #linux, der vermutlich fast überall
existiert.

/join #linux

Nun sind wir drin und können zu labern beginnen. Es ist vielleicht sinnvoll
zuerst einmal zuzuhören und nicht gleich loszuplatzen. Alles was wir im
folgenden schreiben und nicht mit einem / beginnt wird automatisch allen
Benutzern im Kanal angezeigt. Wir können uns auch etwas tun lassen:

/me <something>

Zeigt an dass Ich etwas tue. z.b: /me is glad to have found #linux
zeigt allen: *Killer is glad to have found #linux* (so denn mein nick
Killer ist). Dies wird benutzt um Emotionen oder Aktionen auszudrücken.
Wir möchten nun wissen wer denn da sonst noch ist:

/who <channel>

zeigt uns wer sonst noch rumhüpft. Falls wir noch wissen möchten wer
denn jemand bestimmtes ist, können wir danach fragen:

/whois <nick>

Zeigt uns den host- und username des gegenübers an. Allerdings wird dieser
öfters gefälscht. Nun haben wir also unser opfer gefunden und möchten ihm
eine private Botschaft mitteilen:

/msg <nick> <message>

Diese Botschaft geht nur an den Empfänger. Damit können wir so am
Hauptgeschehen vorbei privat mit jemandem quasseln. Was wir nun auch tun
möchten ist einem bestimmten Benutzer eine Notiz hinterlassen. Allerdings
bekommt die dann der oder die nächste der/die mit diesem Namen auftaucht..

/Note <nick> <message>

Diese wird auf dem server gespeichert. Was wir unbedingt auch noch wissen
müssen ist was für einen IRC-Client andere Leute benutzen:

/ctcp <nick> version

Damit haben wir auch zum ersten mal ein ctcp-kommando benutzt. Andere
ctcp-kommandos erlaube es Leute zu fingern (/ctcp <nick> finger) oder
Dateien zu senden (/ctcp <nick> send <dateiname>) oder zu empfangen
(/ctcp <nick> get) etc. Es gibt da sehr viele Möglichkeiten.
Nun aber ist es zeit zu gehen. Mit

/leave

Verlassen wir den kanal. Wir können auch gerade noch den IRC-Client
verlassen:

/bye

und

/exit

Glocken und Pfeifen

Natürlich ist obiges nur so der Anfang. Das IRC ist grösser, und man
kann noch sehr viel mehr damit anstellen. Dinge die es sich anzuschauen
lohnt sind:

Scripts

Ein wichtiger Bestandteil von irc-clients sind scripts. Sehr viel Dinge
lassen sich automatisieren, vereinfachen oder erst durch scripts lösen.
Ein IRC-Client muss also scripts unterstützen. Scripts für sirc gabs auf

ftp://winnie.obuda.kando.hu/pub/irc/sirc/scripts/
, Und scripts für
BitchX gabs auf
ftp://ftp.stefan.de/pub/bionic/unix/irc/BitchX/scripts/
. Ja, gabs. ;-)

Bots

Um selber einen Kanal zu unterhalten, braucht es mindestens einen Bot
der auf den Kanal aufpasst, als Operator die ganze Zeit da ist und dem
Eigner des Bots den Operator-status gibt wenn er in den Kanal kommt.
Dabei haben Linuxler den Heimvorteil, da diese Bots auf einer Unix-Maschine
laufen müssen. Den beliebten Eggdrop-bot gibts auf

https://www.eggheads.org/
Viele Bots und Scripts für Bots sind in TCL
geschrieben.

Anhängsel

Einige IRC-Server

Lugs-net: irc.lugs.ch:6667 (Das IRC-net der Linux User Group Switzerland)
EFFNet: irc.digex.net:6667
DalNet: ced.se.eu.dal.net
UnderNet: us.undernet.org:6667, irc.span.ch:6667

Peter Keel,

2001-10-02

Update: nachdem dieser URL im ct’ 9/2003 auf Seite 223 stand hab ich
es für notwendig befunden die Seite kurz zu überarbeiten und
tote Links zu entfernen. Die Kommentare zu den Clients und die
Screenshots beziehen sich immer noch auf den Stand von 2001.
Peter Keel, 24.04.2003.

Issues on Porting

Friday, May 11th, 2001

DOS not make sense
  • Fileformat: Normally these things use CR/LF, and sometimes
    use braindead ibmpc-character encoding. I use “recode ibmpc:utf8mb4”
    to make umlauts meaningful and “pt -u” to convert CR/LF’s. Makefiles
    are mostly broken as well; and sources may contain some weird character
    at the end of file.
  • Filenames: Normally crippled to 8.3 characters. I happened to
    come upon some filename which was sometimes written to disk uninitalized
    resulting is a fopen()-failure on DOS but working on Unix. Thus, on
    Unix you’d get a long string of garbled characters as filename..
  • Memory Model: DOS-programs come in different flavours of memory
    models like “huge” or “small”, which is, of course, bogus. Delete it,
    including “far”, “near” and “register”.
  • Types: On DOS, “int” normally is only 16bit, but is 32bit on
    Unix. Depending on memory-models, pointers may also 16bit on DOS
    (and of course are normally 32bit on Unix).
  • Strings: There are some naming differences on string-comparison
    functions:

        DOS:		Unix:
        stricmp()		strcasecmp()
        strnicmp()		strncasecmp()
    
  • Language: C and C++ generally work when used in Character-mode,
    i.e. if no graphics are used. Pascal can be a bit harder to get to work,
    there are at least two pascal to C converters available. One is p2c of
    the FSF and another ptoc.
    I have ported some application from pascal to C using p2c and correcting
    bogus manually (see below). Of course, using gpc (GNU pascal compiler)
    or fpc (free pascal compiler)
    you can compile pascal natively. For Basic, there’s
    qb2c, which
    can handle various basic-dialects through its preprocessor, but the
    free version doesn’t understand dynamic memory allocation (DIM-command)
    which makes it pretty useless.

        Pascal:				C:
        assign FilePointer=Filename;	FilePointer=fopen(Filename, "w");
        _randint(15L);			(rand()%15);
        _randomize();			srand((unsigned int)time());
    

    For the crippled dialect of Microsoft C for DOS, I wrote a very basic
    conversion-script to Borland C (see libgrx).

  • Character-Screen: Normally, DOS-Programs either use conio.h
    or Turbo Vision. There’s a Linux-Version of conio.h, but I don’t
    like it. You can easily replace conio with ncurses. There’s also

    Turbo Vision for Unix
    , though I don’t know whether it works correctly.
    The biggest nuisance with DOS-Programs is the stupid assumption of
    its programmers that the screensize is 80×25. I wasn’t able to handle
    other screensizes with the linux-conio, so I replaced every occurence
    of conio-commands with their ncurses-equivalents.

        DOS:		UNIX (curses):
        clrsrc();		clear();
        gotoxy(Col, Row)	move(Row, Col); refresh();
        getch()		getchar();
        printf("string");	wprintw(window,"string");	#to avoid 80x25 issues
        cprintf("string");  wprintw(window,"string");
        window(a,b,c,d);    window = newwin(lines,cols,begin_y,begin_x);
    

    Currently I’m working on some perl-scripts to automate this.

    Alternatively it makes sense just to replace getch(), like this:

        DOS:		UNIX (curses):
        getch()		int ch, charactr;
    			while ((ch=getchar()) != 'n') {
    			charactr=ch;
    			}
    

    Perhaps it is most easy to use my getch.c-function
    to subsitute this. All you’ve got to do is to include it in the source.

  • Graphics: There’s a
    BGI-Library for Linux, which doesn’t seem to work (a.out, no source
    available). Another possibility seems to be

    libgrx
    , along with bcc2grx, but libgrx seems to be seriously broken, and has problems with
    mice and Keyboard on modern (glibc) systems.
    Then FPK Free Pascal, a Pascal-compiler which can do Delphi II can handle SVGA-Graphics
    as well, but not X. qb2c
    in contrast appears to be able to do graphics on X.

    On a related note, there’s a
    Visual Basic to C/GTK-converter
    , but I haven’t tried it yet.

  • Function-Keys: Handling of Function-keys, including DOWN, UP,
    PGUP and PGDN seems to be mostly messy. I haven’t soled this right
    now. It also seems that the conio.h getch() behaves different from
    the ncurses getchar(). Plus there’s the issue of kbhit() which is
    polling(!) the keyboard, which is an unbelievable stupidity and has
    to be replaced with select() or something.
  • Random Numbers: Most DOS-programs can’t do these correctly and
    they break on Unix, either resulting in always the same numbers given
    back, or numbers of completely different length.

        DOS:		UNIX:
        randomize();	srand((unsigned int)time());
        random(number);	rand()%number;
    
  • There’s also another essay on this called
    Porting
    DOS applications to Linux
    by Alan Cox.
    Also, there’s short writeup on porting DOS-programs which play with
    hardware, it’s Porting DOS inb and outb functionality by someone at SCO.

    In the meantime, some other related articles have appeared:
    Porting MS-DOS Graphics Applications in Linux Journal 53.
    Easily Porting MS-DOS Diagnostics to Linux in LinuxGazette 58.
    Porting Applications to Linux from Matt Welsh.
    Related: Porting SGI Audio Applications to Linux, again, fom Linux Journal 53.

    Porting Windows Applications to Linux
    from Mark Whitis.
    Solaris-to-Linux Porting Guide from Ulrich Drepper.
    Porting Win32 Applications To Linux from Gerson Kurz.

    Porting MFC applications to Linux
    from Markus Neifer.

    Porting MFC to GTK+
    by Ryan C. Gordon.

    Migrate your apps from OS/2 to Linux
    IBM.

Peter Keel,

2001-05-11

last update (links) 03.09.2004

Schweizer Urheberrecht im Um- und Abbruch

Saturday, January 1st, 2000

Zuerst einmal im vornherein: Das Schweizerische Urheberrechtsgesetz ist im allgemeinen kurz, klar, verständlich und konzise. Ausnahmen erscheinen ab Artikel 40, wo es um Verwertungsgesellschaften geht, aber den durchschnittlichen Bürger (und Autor, Künstler etc.) betrifft das wenig.

Allerdings hat es zwei Punkte die nicht auf den ersten Blick einsichtlich sind. Zum einen die Schutzdauer, die mit “70 Jahre nach dem Tod des Künstlers” doch sehr hoch erscheint. Das erklärt sich aus der Internationalen Schutzdauer, die ebenso hoch ist. Allerdings nicht seit ewig. Bei der Einführung des Urheberrechts im 19. Jahrhundert war sie mal 20 Jahre ab dem Entstehungsdatum des Werks. Irgendjemand schraubt also diese
Schutzdauer kontinuierlich höher… Zum anderen die Ausnahmeparagraphen bezüglich des vermietens von Computerprogrammen, die 1996 überall eingefügt wurden.

Und da haben wir den Hund. Einen ganz dicken sogar, eigentlich eher ein Walfisch, oder möglicherweise auch ein Komet, so ein Bolide der das ganze Leben auf der Erde vernichten könnte wenn er einschlägt. Also ungefähr das equivalent dazu.

Warum? Schauen wir uns mal zuerst an was da im Urheberrechtsgesetz (URG)
steht:

Mit anderen Worten, wir haben eine ganz grosse Ausnahme bezüglich Computerprogrammen. Warum wir die haben ist leicht erklärt: Weil Software-Firmen in den USA auch das ausschliessliche Recht auf Vermietung von Computerprogrammen haben wurde das der Schweiz auch aufgedrückt. Man muss ja auf internationale Beziehungen achten.

Lizenz Lizenzen zu erstellen

Vermieten heisst in diesem Zusammenhang nichts anderes als “lizensieren”. Was wiederum bedeutet dass die Softwarefirma die Lizenbedingungen diktieren kann, die durchaus nicht mit dem Rest des URG kompatibel sein müssen. Man vermietet also, mit Lizenzen zu variablen Bedingungen. Wenn man sich überlegt was man denn alles in solche Lizenzen packen kann, beginnt einem der Kopf zu wackeln. Genau da haben wir den Walfisch.

Fangen wir mal an einem Ende an, nämlich der Produktehaftpflicht.
Der “ENDBENUTZER-LIZENZVERTRAG FÜR MICROSOFT-SOFTWARE” enthält folgenden Passus:

5.  VERZICHT AUF GEWÄHRLEISTUNG. MICROSOFT UND DEREN LIEFERANTEN STELLEN DIE SOFTWARE
    "WIE BESEHEN" OHNE GARANTIE AUF FEHLERFREIHEIT ZUR VERFÜGUNG. SIE UND LEHNEN ALLE
    ANDEREN GEWÄHRLEISTUNGEN UND BEDINGUNGEN, SEIEN SIE AUSDRÜCKLICH ODER KONKLUDENT,
    EINSCHLIESSLICH, JEDOCH NICHT BESCHRÄNKT AUF, (FALLS ZUTREFFEND) JEDE KONKLUDENTE
    GEWÄHRLEISTUNG IM HINBLICK AUF HANDELSÜBLICHKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK,
    VIRENFREIHEIT, FAHRLÄSSIGKEIT ODER MANGELNDE FACHMÄNNISCHE BEMÜHUNGEN AB. ES GIBT
    AUCH BESTEHT EBENFALLS KEINE GEWÄHRLEISTUNG ODER BEDINGUNG VON RECHTSANSPRÜCHEN IN
    BEZUG AUF RECHTSINHABERSCHAFT, UNGESTÖRTERN NUTZUNGVERGNÜGENS ODER
    NICHTVERLETZUNG VON RECHTEN DRITTER. DAS GESAMTE RISIKO, DAS BEI DER BENUTZUNG ODER
    LEISTUNG DER SOFTWARE ENTSTEHT, LIEGT BEI IHNEN. 

Mit anderen Worten, Sie haben nach erstehen der Lizenz kein Recht auf auch nur einigermassen Fehlerfreie oder auch nur im geringsten funktionsfähige Software. Würden Sie eine Waschmaschine mit dieser Lizenz kaufen? “Ach, sie ist von Anfang an defekt, nun, dann müssen sie eben eine neue kaufen. Nein reparieren tun wir die nicht, Garantie gibts auch nicht”.

Tatsächlich ist dann auch wie zu erwarten war, der Zustand von Software miserabel. Katastrophal. Allein schon Fehler die die Benutzung und Benutzbarkeit betreffen sind gewaltig, aber nun gibt es auch noch Fehler die sich erst bemerkbar machen wenn man sie suchen geht. Und diese Fehler die man auch mit den besten Beta-Tests nicht findet, selbst nicht bei Programmen die bei normaler Benutzung nie abstürzen würden, diese Fehler können Sicherheitslöcher sein.

Wir können uns also nicht einmal darüber beschweren, niemanden zur Rechenschaft ziehen wenn unser Computer Opfer eines Angriffs wird. Wir können nicht einmal verlangen dass die bekannten Sicherheitlöcher repariert werden.

Und für die Firma rentiert es natürlich nicht im geringsten ihre Produkte auf Sicherheitslöcher zu prüfen, oder sichere Programmiertechniken zu fordern. Erstens muss die Software wegen des Marktdruckes möglichst schnell zur Tür raus, und zweitens kann man ja die häufigsten Fehler nachher noch beheben. Wenn man will.

Also um das ganze in einen Satz zu verpacken: Die Möglichkeit Software zu arbiträren Bedingungen zu vermieten führt zu Softwarefirmen die keine Verantwortung wahrnehmen müssen, was wiederum zu fehlerhafter Software mit Sicherheitslöchern führt. Wir haben ein Problem.

Das Problem an sich ist hier nicht die Klausel der alleinigen
Vermietbarkeit, sondern eine fehlende Produktehaftpflicht. Weil vermieten können wir ein Programm ja auch sonst, und arbiträre Bedingungen in Lizenzen aufstellen (Wie zum Beispiel ein Verbot der Weitervermietung) ebenfalls. Vorallem dann wenn wir der einzige Hersteller eines bestimmten Produktes sind, und der Markt sehr monopolbesetzt ist.

Auf der anderen Seite haben wir Lizenzen wie die GNU General Public License, GPL, die genau diesen Mechanismus benutzt um dem Konsumenten wesentlich mehr Rechte als die durch das URG zugestandenen einzuräumen, andererseits aber nicht mehr funktionieren wenn eine generelle Produktehaftpflicht eingeführt wird (Weil diese Programme von freiwilligen
Programmierern aus aller Welt programmiert werden, die Aufgrund der GPL wohl kaum je Geld dafür sehen werden und insofern auch für versehentliche Fehler nicht Haftbar gemacht werden dürfen, vorallem auch weil die GPL explizit Modifikationen durch dritte erlaubt).

Die ganze Situation ist etwas schwierig. Das “alleinige Vermietrecht” ist hier nicht Verursacher des Problems, kann aber auf anderen Ebenen zu Problemen führen (wie wir später sehen werden).

Das ist aber noch nicht alles was man mit Lizenzen tun kann. Nicht nur kann eine Softwarefirma sich aus jeglicher Schlinge ziehen, auch kann sie problemlos Delikte begehen die sich in rechtlichen Grauzonen befinden, zum Beispiel die Kompromittierung der Privatsphäre des Anwenders. Zur
Verdeutlichung dazu ein weiterer Auszug aus der Microsoft-EULA:

    Einschränkungen im Hinblick auf Zurückentwicklung (Reverse Engineering), 
    Dekompilierung und Disassemblierung.
    Sie sind nicht berechtigt, die SOFTWARE zurückzuentwickeln, zu
    dekompilieren oder zu disassemblieren, es sei denn, dass und nur
    insoweit, wie das anwendbare Recht, ungeachtet dieser Einschränkung,
    dies gestattet.

Damit verbietet der Hersteller im Prinzip dass man versucht herauszufinden wie seine Software funktioniert, kann also auch allerlei darin verstecken. Wenn es jemand herausfindet könnte man den eventuell auch noch vor Gericht ziehen um diesem den Mund zu stopfen. Zum Glück existiert in der Schweiz dazu ein Artikel, nämlich

  • URG Art. 21 Entschlüsselung von Computerprogrammen
    1 Wer das Recht hat, ein Computerprogramm zu gebrauchen, darf sich die erforderlichen Informationen über Schnittstellen zu unabhängig entwickelten Programmen durch Entschlüsselung des Programmcodes beschaffen oder durch Drittpersonen beschaffen lassen.

    2 Die durch Entschlüsselung des Programmcodes gewonnenen
    Schnittstelleninformationen dürfen nur zur Entwicklung, Wartung sowie zum Gebrauch von interoperablen Computerprogrammen verwendet werden, soweit dadurch weder die normale Auswertung des Programms noch die rechtmässigen Interessen der Rechtsinhaber und -inhaberinnen unzumutbar beeinträchtigt werden.

Wobei Ziffer 2 hier doch wieder sehr zurückkrebst und in vielen Fällen, gerade zum Beispiel wenn man sowas zum Zwecke von Sicherheits-Audits tut, eine grosse Rechtsunsicherheit lassen. Ich vermute die Interessen der Rechtsinhaber (oder mindestens die Auswertung) sind unzumutbar beeinträchtigt wenn man nachweist dass ein Programm eine konzeptuelle (nicht versehentliche) Sicherheitsschwachstelle hat? Oder was wenn
das Einkommensmodell der Firma identisch mit Verletzung der Privatsphäre ist, wie z.b. bei CueCat?

Und im übrigen, um wieder bei der Waschmaschine zu sein, verbietet ihnen der Hersteller Ihrer Waschmaschine ebenfalls diese auseinanderzunehmen? Oder darf ihr Waschmaschinentechniker (falls er nicht zur Firma gehört die
die Waschmaschine herstellt) diese ebenfalls nicht auseinandernehmen? Genau das kann man bei Software aber offensichtlich via Lizenz verbieten.

Es sollte sofort auffallen dass wir da ein sehr grosses Problem haben: Keine Haftbarkeit des Herstellers, gepaart mit einem Verbot das Produkt zu untersuchen. Die Auswirkung dessen für Sicherheit und Stabilität des Produktes, sowie die Privatsphäre des Benutzers lässt sich nur als Katastrophal bezeichnen.

Dies alles zeigt auf wie mit derartigen Lizensierereien heute umgegangen wird.

Die Zukunft

Momentan hängig in den EU-Räten ist die WPPT-Verordnung von 1996. Damit will die WIPO dieses “alleinige Vermietrecht” auf andere Werke ausweiten. Nach dem Willen der WIPO soll es bald auch für Texte, Bilder, Photografien, Musikaufnahmen usf gelten. Auch in der Schweiz ist eine Anpassung des URG an die WPPT durch die
Parlamentarische Initiative 00.444 geplant.

Der Gefährliche Teil darin geht um:

"The Treaty obliges the Contracting Parties to provide legal remedies against the circumvention of technological measures (e.g., encryption) used by performers or phonogram producers in connection with the exercise of their rights and against the removal or altering of information, such as the indication of certain data that identify the performer, the performance, the producer of the phonogram and the phonogram, necessary for the management (e.g., licensing, collecting and distribution of royalties) of the said rights ("rights management information"). 

Peter Keel,

2000

Competition and the Microsoft Case

Thursday, November 25th, 1999

If one thing Microsoft is accomplised, it is a demonstration on how our
current patent- and copyright-laws can be misused and how inadequate
they are.

So the question is how do we fix this. A breakup of Microsoft into smaller
Nanosofts probably won’t do the trick. After all, the same principles still
apply. So there is obviously a need to further restrict Microsoft on
misusing monopoly-power, like:

  • Force Microsoft to open their document formats
  • Force Microsoft to open their protocol-specs
  • Force Microsoft to open their API specs. All of them
  • Force Microsoft to license the Windows-Source to whoever wants it.
  • Leverage other OS-manufactors to get access to hardware drivers

When there are hundreds of documented and more or less open document-formats out there (XML, HTML, SGML, roff, Postscript, RTF, TeX, only to name a few), how dares Microsoft NOT to release the specs for its document-formats? Or only to release them under NDA (Non-Disclosure Agreement)? Other formats like the ones of Wordperfect or Applixware are documented; no problem. Such a politic of sitting on the specs can only have one purpose: Deny competitiors the possibility to make their programs read these document-formats. Probably, as here in the Microsoft-case, they can be used to effectively extort competitiors.

The answer to this is simple, don’t allow anyone to use a document-format which is not fully documented or available in source-code. After all, its a document-format, not a program on which could be said that it contains trade secrets. Furtheron, I’d recommend that it is made impossible to patent such a thing; otherwise it would still be possible to lock out competition, particularly the free software community. An example is the patent on the LZW-algorithm used by .gif-images.

The same as with document-formats goes with protocols. Withelding the protocol-specs from the public only serves the misuse of a monopoly. The solution is relatively simple, as already demonstrated by the IETF (Internet Engineering Task-Force) and the W3C (World-Wide-Web Consortium): Require a free and open-source implementation (preferably BSD-Style license) in order to make a protocol a standard. This should apply to all networking-protocols not exclusively used by games (It makes no sense to force game-programmers to make a free-implementation of their protocols since it would mean effectively open-sourcing the whole game because it will probably be the only implementation of such a protocol to ever exist).

Open the API’s (Application Programmer Interfaces). This isn’t as easy as the ones above. How do you really control whether a company has withheld you parts of its API? You probably would need the source-code to it, but then you’re probably bound by an NDA and can’t even tell the public that there are undocumented API’s. The best possibility to avoid this problems is the next point.

Force the companies to license the source of (at least) operating systems to everyone. So everyone can see whats’ going on, where the API’s are, and so on. Of course, in order to make this a feasible option for the affected company itself, it must be possible to put this under an NDA and probably charge money for it. If a fee is to be allowed, a maximum sum has to be specified. This sum and the NDA have to be the same for all companies and individuals wanting to license the source code.

The last point is somewhat tricky, since it would necessary that every hardware-manufactor either a) provides drivers for every operating system out there b) releases detailed specs or c) releases its drivers open-sourced. The Problem here is that in order to fight a monopoly of some specific company, thousands of other companies need to be “regulated” as well, but I guess this shows the problem of copyrights in the whole.
The point of the hardware-manufactors is that open-sourced drivers or detailed specs possibly allow to gain hints on the nature of the hardware, which is considered a trade secret. On the other hand, some free operating systems licenses do not allow the inclusion of proprietary non-free code or even binaries; effectively making writing drivers under NDA impossible; thus again leading to a delay in availability of drivers. However, several companies no longer consider drivers (effectively the API, not the “program” of hardware) to be trade secrets and freely open the specs or even provide open-sourced drivers. A possibility for law to close in would be to actively force hardware-developers to release specs, since some companies obviously have realized that these are not trade secrets. And if everyone has to do it, nobody can gain unfair advantage.

So much to bugfixes. But where do the bugs come from? The copyright and patents.

Both, copyright and patents were meant to stimulate innovation by giving the innovator the means to collect money for its inventions. A second consideration was that the body of innovations, arts and so on available to the public would grow. The idea behind the concept is that nothing gets done unless rewarded with financial gains. This is true in many ways, but has several problems with the implementation.

First off, duration. The longer such a right lasts, the more eager people are to get it. However, as soon as they have it, there is nothing to stimulate innovation. Disney has Mickey Mouse and has not felt like introducing new characters. Instead old stories (with expired copyright, by the way) are newly animated. Instead of being creative, the copyright allows to sit back and collect the tax. And it grows: When copyright was invented, a copyright-grant lasted for 28 years. Now its 75 years and some companies want it to even last longer.

Second, competence. This applies to patents. The patent office does not understand what they are doing. It was easy once, now it’s almost impossible to tell which patents are bogus or have prior art. The effort for doing such researches however will soon get tremendously big.

Third political lobbying, making it possible to patent algorithms. It was the most stupid idea there ever was to make it possible to patent algorithms. Effectively patents on laws of nature. This makes it possible to patent any method used in any software. How can a patent-office ever tell what should be impossible to patent? As a result, more than 4000 software-patents exist, most of them are bogus or trivial. And it hurts the software-industry enormously if they have to check 4000 Patents only to write a program. Nobody can do that, and so the patent-holders may sue anyone writing software at will, because it is almost guaranteed that he reinvents some of those methods. A particular example is the technique known
as Windowing, mapping parts of two-digit decimal years to either 20xx or 19xx. It has been patented in 1996, first use is at least in 1991. It’s moot, but you’ll have to prove it.

Forth, the assumption a patent is valid unless proven it is not. The opposite should be the case. The one who applies should be forced to prove that its patent is really the first time this particular idea gets invented, as far as it is reasonably backdate-able (in Computers, this would mean about 35 years). Since this will result in an unbelievable big effort for both the office and the applicant, a more simple solution is desirable.

Too bad its even possible to base a whole business on nothing but copyrights and patents, selling licenses for things someone else has innovated, probably some half a century ago. Copyright and patents as an end in itself.

Even worse, copyright and patents can be misused to effectively kill innovation. With Lawsuits regarding copyright-infringement, innovators which most often are small and do not have too much money, can be easily put out of business. Patents are even better in respect of killing off innovation, since you probably have a bogus-patent at hand which can be misused for this.

The consequences out of this are that copyrights as well as patents are totally inadequate to ensure competition and innovation. I propose the following to fix it.

  • Patents may last no longer than 5 years, after that, it’s all public domain.
  • Make it impossible to patent algorithms
  • Copyright lasts 30 years. After that, it’s public domain. This inludes software.

Network Security by Half-Wittedness

Monday, August 16th, 1999

How to base your network security on misinformation, overreaction, nervousness and lawyers

Security cautiousness is a good thing, in the vast and wild cyberspace. A lot of networks don’t even have somebody who cares. But there are some sites which are security cautious, and there are different kinds of these: Those who care, and those who fear.

Fear and Loathing in Cyberspace

There are a lot of companies out there who fear they could be attacked by some misfit and in turn create policies, buy firewalls and try to detect any behaviour which could be interpreted as attack. Particularly
a lot of those companies are in the consulting or even network security
business. And some of them quite internationally renowned. As soon some
possible sign of an attack is detected, hell breaks loose: sysadmins of
the originating site of the possible attack are emailed, upstream
providers informed, the CERT gets an email, even the police might be
called or a lawyer to write threatening letters. In the end it probably
turns out to be some user who tried to test it’s newest movie-streaming
software. Or the sysadmin of the ISP did a portscan “to see what that
machine does”. Maybe it even was intended maliciously, but it came
from somewhere in China. What had happened was in any case something
with no importance and no actual impact which is now turned into a
great spectacle.

A very nice case is the one of the Israeli “security”
company COMSEC
versus IOS++
, the Internet Operating Systems Counter. With great
incompetence COMSEC interpreted some weird packets which reached their
webservers as attack, didn’t even bother to contact IOS++ but informed
the press instead which promptly took up a story about widespread attacks
against the isreali part of the internet.

Another typical case is people who want their DNS Zone transfers
blocked. Why would one want that when you just can do a zone transfer
of in.addr-arpa and get the whole thing anyway? This is typical for
wrong understood network security. It’s called security by obscurity,
one tries to hide something, and it never works. There are certainly
things outsiders ought not know, but certainly not which hosts you’ve
got on your external network. If you’ve got no internal (private) and
external (for the public) network, you’ll be probably in trouble
anyway…

Of course, this is not the only case, I had at least three cases of
overreaction last year (one involving a user trying to stream some
movies and two portscans), and one demand of restriction of
zone-transfers from a big international consulting company which
really should know better.

What we have here is security cautiousness backed by a half-witted
knowledge about network security. People who know nothing about
network security don’t fear a security breach, neither do people
which really know what network security is all about. It’s those who
know a bit, but not enough, who fear and cry.

Why should a sysadmin start crying about some possible attack which
failed anyway, because the sysadmin keeps his systems updated and
knows that some 13 year-old script-kiddie will fail against his
walls anyway?

How-NotTo

Essentially, there are two forms of misbehavior when it comes to
security (not counting the case of being NOT security cautious):

  • Security By Obscurity
  • Overreaction

In the first case, we’ve got the idea of being secure just because
the enemy does not know you are not. Or where you are located. The
effect is badly designed programs which appear secure just because
nobody should be able to proof they’re not; IP-adresses which do
not resolve but which can be found by broadband-scanning anyway;
crypto-software which can cracked in seconds, and so on. A strong
lock is one where you can see how it works but are still unable to break
it. The international crypto-community has condemned obscurity long
ago, see the
Snake Oil FAQ
for details.

The second case is a bit more difficult to grasp. Is a portscan or weird
packets an attack or not? You can simply ignore it if you’re confident
enough of your security, or you can investigate, meaning taking a look
at the originating host, portscan it yourself, query whois-databases and
finally sending the sysadmin of the originating host a note. There are
a lot of sysadmins out there who portscan without any intention of
attacking you. And a sysadmin of a system into which was broken in
will be very glad if you tell him some portscan originated at his site.
The wrong answer is of course to panick and make a big fuss about it. If
you detect a portscan, chances are low the portscanning person will ever
break in, because you already updated your system — otherwise you’d be
a complete moron. On the other hand, if you’ve been already broken in,
you can investigate and collect evidence that there actually was a break-in
— then it’s time to make a fuss. So it either has nothing to say, or
it’s a failed attempt, in which case you’d better update your system, or
the breakin already occurred.

There are also several projects like the

Internet Security Auditing Project
, or the above mentionned
IOS++ which
might appear as “attackers”, but surely don’t have the intention to
break into your systems. So you better get informed before you
start crying out loud.

So if you detect something which could be a failed attack, what you
should do is to simply inform the sysadmin of the originating host
(the sysadmin of the provider, if it originated from a dialup-machine,
or the sysadmin of the company. You should be smart enough to know
who you should contact, otherwise you’d better stay away from network
security altogether). In the case of an actual break-in, the most
stupid thing you can do is also panicking. If you don’t feel experienced
enough to handle the incident, you probably get help at your internet
provider or from a specialized company. In the other case, you’ll have
to investigate what the attacker did, and most important, where it
came from. Then you mail the sysadmins of the originating hosts —
chances are it was a dialup-machine (so mail or call up the ISP) or
another compromised system, so be polite and don’t threaten him with
legal action or somesuch. Normally they’ll be very glad to hear one
of their machines was compromised (actually they’re not glad to hear
that, but glad that you tell them ;))

Prevention

So what do security cautious people do who actually know what
they’re doing? Simple. Updating. First, all security-relevant
mailinglist need to be read, and as soon as some vulnerability
is found, the systems need to be fixed. Either there is already
a fix, then it needs to be applied, or the services need to
be replaced or turned off until a fix comes. Sometimes even the
whole system needs to be either shut down or replaced, unless you want
to risk it; particularly the case with Windows NT since Microsoft
normally needs weeks to fix something. Another possibility is of
course to firewall such systems/services off.

And if someone seems portscan or to probe the network for
vulnerabilities or somesuch? Don’t panic. The Walls are strong
enough to whithstand a script-kiddie attack. Probably send an
email to the attacker or its sysadmin. It will either be harmless or a real attacker who will go away and seek something easier to penetrate; probably after he gets a new ISP. ;)

Peter Keel,

1999-08-16

Probleme mit Domain-Namen

Saturday, May 1st, 1999

In diesem Text werden die grundlegenden Probleme rund um Domain-Namen aufgelistet, die Position der SIUG erläutert und mögliche Lösungen aufgezeigt.

Domains sind einerseits Adresse, andererseits auch ein
Identifikationsmerkmal. Die Adresse wird umso einfacher gefunden je einprägsamer sie ist oder je besser sie mit der gesuchten Materie korreliert. Es ist deshalb nützlich einen aussagekräftigen oder mit dem Firmen- oder Privatnamen korrelierenden Domainnamen zu haben. Nun gibt es zwar verschiedene Top-Level-Domains (kurz: TLD; wie zum Beispiel .com, .de oder .ch) aber in jeder TLD kann eine Subdomain nur einmal existieren. Dadurch dass es tausende von gleichnamigen Leuten und Firmen (sowie international tätige Entitäten, die nun in jedem Land eine Domain haben möchten) gibt, sind Domainnamen durchaus knapp.

In den letzten Jahren sind im Internet das Cybersquatting und die Domainpiraterie in Mode gekommen. Dabei geht es im einen Fall darum, beliebte Domainnamen, oder Domainnamen von denen man erwarten kann dass sie beliebt werden, zu besetzen respektive im anderen Fall, Domainnamen an denen man glaubt ein Anrecht zu haben anderen Haltern abzujagen. Dabei kann man generell die obgenannten zwei Arten unterscheiden. Einerseits das Besetzen von Domains (Domainsquatting oder Cybersquatting) und andererseits das Abjagen schon besetzter Domains von anderen Haltern (Domainpiraterie).

1. Cybersquatting

1.1. Besetzen benachbarter Domains

Darunter versteht man das Besetzen von Domains die irgendetwas mit einem speziellen Geschäfts- oder Interessegebiet zu tun haben in der die betreffende Firma tätig ist. Eine Suche nach .ch- und .li-domains rund um Sicherheit resultiert zum Beispiel in 25 Domains die alle derselben Firma gehören.

Der Punkt hier ist, dass man anderen Firmen im gleichen Marktsegment die Internetpräsenz unter einem aussagekräftigen Namen erschwert oder später andere Firmen untervermieten kann.
Das ganze zeigt schlechten Stil, Missachtung der Netiquette und macht generell einen schlechten Eindruck; ist allerdings auch als nicht sehr relevant einzustufen.

Wir wollen unter den Betreffenden Firmen das Bewusstsein wecken, dass derartige Praxis als stillos betrachtet wird sobald es im grösseren Rahmen (mehr als 3-4 Domains) auftritt.

1.2. Besetzen von “Common Use” Domainnamen

Dabei werden Domains registriert die man nicht selbst nutzen will sondern die man nachher weiterverkaufen möchte.

Wir sprechen uns gegen diesen offensichtlichen Missbrauch aus. Es geht hier nur um Domainhandel, sondern darum mit möglichst kleinem Effort maximale Geldsummen herauszuholen. Wir sprechen uns auch dafür aus, dass man Domains in Zukunft nicht mehr als Inaktiv registrieren kann; dadurch steigt die finanzielle und/oder technische Hürde Domains zu registrieren (Man benötigt dazu zwei DNS-Server die ständig im Internet sind).

1.3. Vorbesetzen von Domainnamen

Darunter versteht man die Besetzung von Domainnamen von denen man erwarten kann dass sie in Zukunft gebraucht werden könnten oder wo klar anzunehmen ist, dass eine Firma, die noch nicht im Internet ist, diese später brauchen könnte. Ein Beispiel war die Registrierung der Domain “novartis.ch” durch eine offenbar gutinformierte Privatperson bevor die Fusion von Ciba und Sandoz bekannt wurde. Die Domain wurde dann der Greenpeace zur Verfügung gestellt und gehört heute der Novartis. Ein anderes Beispiel ist “altavista.com”, welche von einer Firma benutzt wurde, lange bevor die Suchmaschine “Altavista” bekannt wurde.

Dieser Punkt ist sehr heikel, da man manchmal sehr schlecht entscheiden kann, ob hinter der Domainregistrierung nur die Verkaufs- oder Vorbesetzungsabsicht besteht oder ob diese aus anderen Gründen registriert wurde. Im Zweifelsfall ist “first-comes-first” anzunehmen. Siehe auch 2.2.

1.4. Besetzen von Typos

Die Idee dahinter ist, dass man eine Domain registriert, die einer anderen (bekannten) Domain derart ähnlich sieht, dass ein kleiner Rechtschreibefehler genügt um auf der falschen Seite zu landen. Als Beispiel sei hier “netcape.com” angeführt, eine Sexsite die vermutlich davon profitiert, dass “netscape.com”
ab und zu falsch geschrieben wird. Dasselbe mit “whitehouse.com”, dass im Gegensatz zu “whitehouse.gov” durchaus nichts mit der US-Amerikanischen Regierung zu tun hat.

Wir sprechen uns nicht dagegen aus, begrüssen es aber,
wenn die Site jeweils einen Hinweis enthält dass dies eventuell
nicht die gesuchte Site sei und auf die andere verweist; vorallem dann, wenn die beiden Sites sich im selben Marktsegment bewegen. Ein Verbot solcher Registrierungen würde dem Geist des Internets sehr zuwiederlaufen und würde auch die Redefreiheit einschränken. Sehr viele parodische oder satirische Seiten benutzen leicht abgewandelte Namen der
Domains die sie kritisieren.

2. Domainpiraterie

2.1. Trademarks

Trademarks, sofern sie Weltweit gültig sind, beziehen sich nur auf eine bestimmte Produktekategorie. Microsoft Software und Microsoft Fasern sind durchaus nicht dasselbe existieren aber beide. Domains wiederum sind keine Trademarks, sondern Adressen. Genausowenig wie eine Firma anrecht auf eine bestimmte Strassenadresse hat, existiert ein anrecht auf eine bestimmte Internetadresse. Speziell dann nicht, wenn es um verschiedene Top-Level Domains (TLDs) geht. So ist eine .com-Domain etwas ganz anderes als eine .net-Domain und das wiederum etwas anderes als eine .ch-Domain. Das halten einer bestimmten Domain unter einer bestimmten TLD gibt überhaupt kein Recht an Domains in anderen TLDs. Auch hat eine Meyer AG durchaus nicht
mehr Rechte an einer meyer-Domain als irgendeine Privateperson namens Meyer.

Trademarks können bei Domainstreitigkeiten berücksichtigt werden, sollten aber nie vor persönliches Recht treten. Es gilt in derartigen Fällen herauszufinden, ob der Angeklagte die Domain nur aus dem einzigen Grund registriert hat der Firma ins Gehege zu treten; in anderen Fälen sollte davon Abstand genommen werden die Domain dem Ankläger zuzusprechen

2.2. “Common Knowledge”

Firmen haben manchmal die merkwüdigsten Vorstellungen was mit Ihrem Namen assoziiert wird. So hat ein Amerikanischer Cartoon-Konzern versucht die Domain “veronica.org”, die einem kleinen Mädchen namens Veronica geschenkt wurde, abzunehmen, weil eine Cartoonfigur des Konzerns Veronica heisst (siehe veronica.org).
Ausser in Amerika kennt niemand diese Figur, und alte Internethasen würden Veronica eher mit einer alten Suchmaschine (um ca. 1994) assoziieren. Ein weiteres Beispiel sind “ajax.org” und “ajax.net”. Die Assoziation mit einem Putzmittel muss durchaus nicht gegeben sein, schliesslich ist Ajax ein Held aus der griechischen Mythologie. Selbst von allgemein bekannten Namen kann man nicht einfach annehmen, dass
diese auf die eigene Marke referenzieren. “cola.ch” könnte z.b. für eines der zig -cola-Getränke stehen oder auch für eine Abkürzung wie z.b. comp.os.linux.announce.

Wir sind der Meinung, dass eine allgemeine Assoziation mit einem bekannten Namen durchaus kein Recht auf eine bestimmte Domain gibt.

2.3. Typos

Auch hier gibt es Entitäten die gegen die Registranden von Tippfehlern (neudeutsch: Typos) ihrer eigenen Domains losgehen.

Auch dies muss als Domainpiraterie angesehen werden. Oft gibt es Verballhornungen einer bestimmten Domain, die den Halter der Originaldomain kritisieren (Beispiel: balcab.ch (jetzt UPC) und balcrap.ch, wobei hier tatsächlich sogar von “balcab.ch” auf “balcrap.ch” verwiesen wurde); gerichtliche Verfügungen würden hier einer Verletzung der Redefreiheit entsprechen.

2.4. Vorgehen

Im allgemeinen arbeiten Domainpiraten damit, dass sie die Halter unter Androhung von Gerichtsverfahren unter Druck setzen. Hilfreich sind hier durchaus auch die Unklarheiten internationalen Rechts. Es sind auch schon Fälle bekanntgeworden, in denen der Halter übertölpelt wurde, indem ein anderer sich sozusagen “im Namen des Halters” als Domaineigner eingetragen hat. Ebenfalls gab es schon Versuche mit gefälschten Modifikationsaufträgen an die Registraturstellen um Domains umzuregistrieren. Im Falle gefälschter Aufträge dürfte der Fall klar sein wer hier unrechtmässig handelt. Sobald aber in anderen Fällen die Justiz ins Spiel kommt wird es problematisch, weil hier die finanziellen Möglichkeiten entscheidend werden könnten.

3. Streitfall

3.1. Wer ist Wer?

Es ist nicht immer leicht ersichtlich, ob das Opfer der Kläger ist, oder ein Pirat das Gericht als Waffe einsetzt. Auf der einen Seite haben wir entweder den Domainpiraten oder
aber den Geschädigten, und auf der anderen Seite entweder ein Opfer oder den Cybersquatter. Geht nun ein Geschädigter gerechtfertigt auf einen Cybersquatter los um die angeeigneten Domains loszuschlagen, oder ein Domainpirat ungerechtfertigt
auf sein Opfer um ihm mit Gerichtsdruck eine Domain abzunehmen?

Das Problem hier ist, dass Gericht und gerecht zwei verschiedene Dinge sind. Effektiv kann ein gerichtliches Verfahren als Waffe eingesetzt werden um unliebsame Konkurrenten aus dem Weg zu räumen. Oftmals ist der Beklagte nicht sehr finanzstark und kann allein schon mit der Androhung
eines Verfahrens dazu bewegt werden die Domain zu übergeben.

3.2. Was weis das Gericht?

Das Problem vigilianten Verhaltens unter Ausnutzung von Gerichten wird dadurch noch verschärft, dass die Gerichte einen deutlichen Mangel an Kompetenz bezüglich neuer Technologien haben und sehr schlecht einschätzen können, um was es eigentlich geht. Oftmals wird dabei der Weg des einfachsten Widerstandes begangen, was heisst dass Firmen und Trademarks der Vorzug gegeben wird. Dazu kommt die unklare Rechtslage bezüglich des Status einer Domain: Ist es eine Adresse oder
ein Markenzeichen?

Markenzeichen können nicht universell beansprucht werden sondern sind nur innerhalb eines Marktsegementes gültig. Darauf ist bei der Rechtsprechung unbedingt Wert zu legen.

Es gibt auch ca. 200 verschiedene Top-Level Domains. “.com” ist gedacht für Amerikanische oder International tätige Unternehmen, “.ch” für Firmen und Privatpersonen in der Schweiz. Eine International tätige Entität kann also durchaus keinen Anspruch auf eine bestimmte “.ch”-Domain erheben, die vielleicht schon durch eine in der Schweiz ansässige Entität besetzt ist. Die Idee hinter den verschiedenen TLDs ist ja
gerade die, dass sich verschiedene Entitäten denselben Namen teilen können, unter einer jeweils anderen TLD.

Wir möchten die Gerichte auffordern der Domainpiraterie nicht unabsichtlich Vorschub zu geben, sondern im Rechtsfall unbedingt zu prüfen ob dem Kläger absichtlich Schaden zugefügt wird. Falls es um Markenzeichen geht ist zu prüfen ob die beiden Parteien überhaupt im gleichen Marktsektor tätig sind.

4. Referenzen/Weitergehende Informationen

http://www.ajax.org/ajax/dda/ Ajax.org: Domain Defense Advocate
Patents.com: Remedies in Domain Name Lawsuits: How is a domain name like a cow?
NZZ Online: Tippfehler-Piraten vor Gericht
don-henley.com: Rockstar seeks to grab domain name from owner

Peter Keel,

1999-05

00:15 CET by Peter Keel