Gomoku online – ein einfaches Java-Applet (2007)

Gomoku ist der japanische Name für das Spiel “Fünf in einer Reihe”. Dabei handelt es sich um ein einfaches Strategiespiel, das oft mit Papier und Bleistift gespielt wird. Dabei versuchen die beiden Spieler eine Reihe mit 5 Kreisen / Kreuzen zu erstellen. Wer zuerst eine durchgehende Linie mit 5 Elementen hat, gewinnt das Spiel. Mit diesem einfachem Java-Applet können 2 Spieler gegeneinander, auf einer modernen oder klassischen Oberfläche, spielen. Dieses Java-Applet wurde beim Erlernen von Java, im Jahre 2007, in Zusammenarbeit mit H. Gut erstellt.

Das Applet ausprobieren

Mit VBScript OS Version bestimmen

Dieses Skript kann verwendet werden um die Server OS Version zu bestimmen. Das Skript liefert das Resultat für Windows 2000, Windows 2003, Windows 2008. Es kann jedoch auf einfache Weise erweitert werden, damit auch Client Versionen zurückgeliefert werden.


'/*
'	check windows version
'	return: 
'			win2k for windows 2000
'			win2k3 for windows 2003
'			win2k8 for windows 2008
'			unknown if the os is older / newer
'*/
function getOSVersion()
	strWinVersion = ""
	set objWMIService = GetObject("winmgmts:" _
		& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
	Set colOperatingSystems = objWMIService.ExecQuery _
		("Select * from Win32_OperatingSystem")
	For Each objOperatingSystem in colOperatingSystems
			strWinVersion = objOperatingSystem.Version
	Next

	'/**/	
	strMajor = left(strWinVersion,3)
	strOS = ""
	SELECT CASE strMajor
	case "5.0"
		'WScript.Echo "Windows 2000"
		strOS = "win2k"
	case "5.2"
		'WScript.Echo "Windows 2003"
		strOS = "win2k3"
	case "6.0"
		'WScript.Echo "Windows 2008"	
		strOS = "win2k8"
	case else
		'WScript.Echo "Windows x?" & "(" & strWinVersion & ")"
		strOS = "unknown"
	end select
	getOSVersion = strOS
End Function

Netcat als Port Scanner verwenden

Netcat kann als einfacher “Port Scanner” verwendet werden. Dabei liefert das Tool nicht die vielen Optionen wie nmap, aber es genügt um herauszufinden welche Ports bei einem System offen sind.


nc -v 127.0.0.1 -z 80-1024

Parameter:

    -v zeige detailierte Ausgabe
    -z zero-I/O mode [Scanner-Modus]
    80-1024 Ports zum Scannen. Eingabe eines ganzen Bereiches oder nur eines einzelnen Ports

Prüfen ob der Port 80 bei www.monsterli.ch offen ist:


nc -v www.monsterli.ch -z 80
Connection to www.monsterli.ch 80 port [tcp/www] succeeded!

Netcat als Webserver verwenden

Braucht man kurzerhand einen Webserver, der eine einzelne statische Datei ausliefert, kann dies mit Hilfe von Netcat gemacht werden.
Anwendungsszenarien:

  • Testing
  • Beim Unterbruch eines Webservers, damit möglichst schnell eine Fehlerseite angezeigt wird

[cc lang=”bash”]
while true; do sudo nc -l 80 -q 1 < error.html; done [/cc]
Parameter:

    -l Port um auf Anfragen zu warten
    -q Sekunden die nc nach einem stdin warten soll bis es terminiert
    error.html Eine einfache statische HTML-Seite, welche ausgeliefert wird

Visueller Personenzähler (Bachelor-Thesis 2010/2011)

Die Zählung von Personen, die ein Gebäude oder Fahrzeug betreten, wird oft von Hand gemacht. Dazu braucht es zusätzliches Personal, welches mit Hilfe eines Handstückzählers die Personen zählt. Oft werden auch mechanische Zähler wie Drehtore eingesetzt, diese Massnahme kann jedoch zu Stau im Eingangsbereich führen. Eine sinnvolle Alternative zu diesen Methoden ist das visuelle Zählen mit einer Kamera.

Zielsetzung
Das Ziel der Bachelor-Thesis (2010/2011) war das Erstellen einer Applikation, welche mit Hilfe einer Kamera die an der Decke montiert ist, Personen zählen kann. Die Applikation soll in der Lage sein, zu unterscheiden ob eine Person den überwachten Bereich betritt oder verlässt. Dazu wird vor der Zählung der Erfassungsbereich im Bild festgelegt und definiert wo sich Ein- und Ausgang befinden.

Anwendungsgebiete
Diese Anwendung kann vielseitig eingesetzt werden, sei es im Sicherheitsbereich bei dem es darum geht sicherzustellen, dass sich nicht zu viele Personen in einem Gebäude / Fahrzeug befinden oder im Businessbereich um Besucherstatistiken zu erstellen. Diese Informationen können dann für Marketingzwecke oder die Personalplanung verwendet werden.

Lösungsansatz
Die Applikation unterstützt 3 Arten von Video-Inputs. Es ist möglich die Bilder über eine USB-Kamera, einer Axis Netzwerkkamera oder einer Filmdatei zu beziehen. Die Detektion von Personen erfolgt dann durch eine adaptive Hintergrundsubtraktion. Kurz es wird die Differenz eines Referenzbildes mit dem aktuelle Bild berechnet. Danach werden die dadurch detektierten Objekte von Bild zu Bild verfolgt und beim übertreten der definierten Zählerlinie gezählt. Damit diese Detektion funktioniert, kann die Applikation mit Hilfe von verschiedenen Parametern an die Umgebung und die Lichtverhältnisse angepasst werden.

Technisches
Da die Verarbeitung von Videoaufnahmen ein rechenintensiver Prozess ist, wurde die ganze Applikation mit der Programmiersprache C++ entwickelt. So entsteht kein unnötiger Ressourcenverbrauch wie dies bei Java oder C#, wegen der Laufzeitumgebung, der Fall wäre. Damit das Programm auf verschiedenen Betriebssystemen lauffähig ist, wurde das GUI mit dem Framework QT4 entwickelt. Dies ermöglicht es die Applikation spezifisch für die verschiedenen Betriebssysteme zu kompilieren und damit die Verwendung unter Windows, Unix/Linux (mit X – Windows System) sowie Mac OS X. Die Verarbeitung der Videodaten, sei dies aus einer Filmdatei oder aber von einer USB-Kamera, wurde mit dem Framework OpenCV realisiert. Das Framework OpenCV unterstützt die Programmierung mit sehr vielen effizienten Algorithmen im Bereich der Bildverarbeitung.

Visueller Personenzähler
Die Applikation beim Verfolgen zweier Personen im Erfassungsbereich

DNS – Blacklists abfragen mit Python

Ein einfaches Python-Skript zum Abfragen von DNS-Blacklists, welche adressbasiert sind.
Bei adressbasierten Blacklists wird die zu überprüfende IP-Adresse, in umgekehrter Reihenfolge, an die Domain angehängt. Dann wird eine DNS-Abfrage auf einen A-Record gestartet. Wird ein A-Record zurück geliefert, gilt die IP-Adresse als gelistet. Der A-Record wird eine IP vom Typ 127.0.0.x aufweisen.

Wenn man wissen möchte warum eine IP-Adresse in die Liste aufgenommen wurde, kann der TXT-Record abgefragt werden. In diesem Record wird vom Blacklist Betreiber oft der Grund für die Aufnahme hinterlegt.


SHOW_DEBUG_MSG = 0

import string
import sys
import socket

'''
@return: 0    If the ip-address is not blacklisted
@return: 1    If the ip-address is blacklisted
'''
def checkIfBlacklisted( ip, blacklistURL):
if SHOW_DEBUG_MSG: print "Checking %s on %s" %(ip,blacklistURL)

# turn ip "a.b.c.d" into "d.c.b.a.DNS_BLACKLIST_DOMAIN"
iplist = string.split(ip, ".")
iplist.reverse()
ip = string.join(iplist, ".")
ip += "." + blacklistURL

try:
#if blacklisted, we receive a IP in the range 127.0.0.x
ret = socket.gethostbyname( ip )
if SHOW_DEBUG_MSG: print "Blacklisted! returned: %s" %ret
return 1
except socket.gaierror, message:
if SHOW_DEBUG_MSG: print "Not blacklisted [%s]" % message
return 0

if __name__ == "__main__":
if len(sys.argv) > 2:
print checkIfBlacklisted( sys.argv[1] , sys.argv[2])

DNSBlacklistChecker.py

Zum Ausführen:


python script x.x.x.x zen.spamhaus.org

Mögliche Blacklists:

  • no-more-funn.moensted.dk
  • dnsbl.sorbs.net
  • zen.spamhaus.org
  • spews.dnsbl.net.au
  • dnsbl.NJABL.org
  • proxies.relays.monkeys.com
  • list.dsbl.org