Kubuntu: System bleibt mit der Meldung “Checking battery state … [OK]” hängen

Nach dem Installieren von Updates kann das System nicht mehr gestartet werden und bleibt mit der Meldung “Checking battery state … [OK]” hängen.
Eine mögliche Ursache für dieses Problem kann ein aktualisierter Kernel sein. Wurde eine neuere Kernel-Version installiert, muss der Grafiktreiber unter Umständen nochmals neu installiert werden.

Da das Betriebssystem nicht mehr hochgefahren werden kann, muss dies mit Hilfe der Konsole gemacht werden. Bei der angezeigten Meldung “Checking battery state … [OK]” wird mit der Tastenkombination “ctrl+alt+F1” in eine Konsole gewechselt. Nach dem Anmelden mit Benutzernamen und Passwort, wird mit apt-get der Grafiktreiber neu installiert.

Hier in diesem Beispiel handelt es sich um eine nvidia Grafikkarte (GeForce Serie 5 bis 9):


>sudo apt-get install --reinstall nvidia-173

Wurde der Grafiktreiber erfolgreich installiert, muss das System neu gestartet werden:


>sudo reboot

Nach dem Neustart sollte das System wieder erfolgreich hochgefahren werden.

Nützliche Links

11.10 stops booting at “Checking battery state … [OK]”
After updating kernel to 3.0.0-14 the system does not boot
Paket: nvidia-173

VBScript: Microsoft DNS-Server Einträge bearbeiten

Mit Hilfe der “DNS WMI Services” kann der Microsoft DNS Server verwaltet werden. Dies ermöglicht das Erstellen von Skripts zum Hinzufügen, Löschen oder Editieren von Zonen und Records.

Um mit den “DNS WMI Klassen” zu arbeiten sind folgende Schritte notwendig:

  1. WMI Service initiieren (remote oder lokal)
  2. Mit Hilfe des WMI Service kann dann die benötigte “DNS WMI Klasse” instanziiert werden

Lokalen WMI Service initiieren:


Dim objWMIService: Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\MicrosoftDNS")

Remote WMI Service initiieren:


Dim objSWbemLocator: Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator") 
Dim objWMIService: Set objWMIService = objSWbemLocator.ConnectServer(hostIP, _ 
		"root\MicrosoftDNS", _ 
		username, _ 
		password, _ 
		"", _ 
		"") 	

Die Parameter:

  • hostIP = IP des DNS-Server
  • username = Benutzername
  • password = Passwort

Neue “Primary-Zone” erstellen:


Dim objDNSZone: Set objDNSZone = objWMIService.Get("MicrosoftDNS_Zone")
objDNSZone.CreateZone(zoneName,0)

Bedeutung der Parameter:

  • zoneName = Name der neuen Zone (monsterli.ch, switch.ch, usw.)
  • 0 = Zone des Typs: “primary zone”

Neue “Secondary-Zone” erstellen:


Dim objDNSZone: Set objDNSZone = objWMIService.Get("MicrosoftDNS_Zone")
objDNSZone.CreateZone(zoneName,1,false,zoneName & "dns",array(nsMasterIP))

Dabei sind die Parameter:

  • zoneName = Name der neuen Zone (Domain)
  • 1 = Zone des Typs: “secondary zone”
  • false = keine “AD integrated zone”
  • zoneName & “dns” = Name der Zonendatei
  • array(nsMasterIP) = Array mit der IP des primären Server dieser Zone

Neuer A-Record erstellen:


Dim objItem: Set objItem = objWMIService.Get("MicrosoftDNS_AType")
objItem.CreateInstanceFromPropertyData(masterDNSServer, zoneName, subZoneName , 1, 600, hostIP)

Die Parameter:

  • masterDNSServer = IP des primären Server
  • zoneName = Name der Zone (Domain)
  • subZoneName = gewünschter Hostname (www, mail, ftp… usw.)
  • 1 = Record Class IN (Internet)
  • 600 = TTL in Sekunden
  • hostIP = IP-Adresse des Hosts

Um weitere Records wie NS, MX, CNAME, usw. zu erstellen, muss einfach die “DNS WMI Class” geändert werden.

Zone löschen:

Um eine bestehende Zone zu löschen wird mit Hilfe der “.Get” Funktion des WMI-Service die Zone selektiert und gelöscht.


Dim objServer: set objServer = objWMIService.Get("MicrosoftDNS_Server.name="".""")
Dim objItem: Set objItem = objWMIService.Get("MicrosoftDNS_Zone.ContainerName=""" & zoneName & """,DnsServerName=""" & objServer.name & """,Name=""" &  zoneName & """")
if isObject(objItem) then
	objItem.delete_
end if

Benutzte Parameter:

  • zoneName = Name der Zone die gelöscht werden soll
  • objServer.name = Name des verwendeten DNS-Server
  • zoneName = Name der Zone die gelöscht werden soll

Nützliche Links

DNS WMI Provider Samples—Managing DNS Zones

Intel Modular Server – Firmware aktualisieren

Der Hersteller Intel bietet für seine “Modular Server Systeme” regelmässige Firmware-Updates an. Daher sollte man die Firmware-Versionen verfolgen und das System auch aktuell halten.
Dies hilft nicht nur mögliche Schwachstellen im System zu beseitigen, sondern ermöglicht es auch aktuelle Hardware (Computing Module) einzubauen. Sollte ein “Computing Module” den Dienst verweigern und muss mit einem neuen ersetzt werden, kann das neue “Computing Module” nur in ein System mit einer aktuellen Firmware-Version installiert werden.

Vorbereitung Firmware-Update

Um eine möglichst reibungslose Installation der neuen Firmware durchführen zu können, sollten folgende Punkte berücksichtigt werden.

  1. Das Aktualisieren der Firmware dauert ca. 1 Stunde.
  2. Firmware-Version für das richtige “Modular Server Chassis” wählen. (MFSYS25 oder neuer MFSYS25V2)
  3. Sind alle Abhängigkeiten der neuen Firmware-Version erfüllt? (Bsp: Installation von 6.8 verlangt eine installierte Firmware-Version >= 2.7)
  4. Sämtliche “Computing Module” müssen vor dem Update heruntergefahren werden.
  5. Der Netzwerkanschluss des CMM-Moduls sollte direkt mit dem Update-Rechner oder einem externen Switch verbunden sein. Nicht über den Modular Server Switch, da diese Firmware auch aktualisiert wird.
  6. Wenn das gewünschte Firmware-Update Paket heruntergeladen wurde, muss die Firmware noch entpackt werden. (Bsp: MFSYS25_MFSYS35_UFU_V6_8.zip) Die Firmware befindet sich dann in der Zip-Datei CMM_Core.zip. Diese darf nicht weiter entpackt werden!

Firmware-Update durchführen

Mit folgenden Schritten wird das Update durchgeführt:

Modular Server Menü
1) Firmware Menü beim Intel Modular Server
Firmware Upload
1) Hochladen der Firmware auf den Modular Server

  1. Unter dem Menü: “Settings-> Firmware” wird die Datei CMM_Core.zip hochgeladen.
  2. Nach dem die Firmware erfolgreich hochgeladen wurde, muss das “Storage Control Modul” in den “safe-modus” versetzt werden. Es erscheint eine Meldung, welche bestätigt werden muss.
  3. Die Installation der neuen Firmware kann nun gestartet werden.
  4. Danach erfolgt ein Neustart bei dem das System auf die neue Version aktualisiert wird.
  5. Sobald das CMM wieder mit dem Webbrowser erreichbar ist, kann unter dem Menü “Settings-> Firmware” beobachtet werden, was gerade aktualisiert wird. (Switch, Storage Control Modul…)
  6. Als nächstes werden die “Computing Modules” mit der neuen Firmware aktualisiert. Dazu werden die einzelnen Module nacheinander eingeschaltet und so automatisch mit der neuen Firmware aktualisiert. Wurde die neue Firmware erfolgreich aktualisiert, sollte bei jedem “Computing Module” das BIOS auf die Standarteinstellungen zurückgestellt werden. (BIOS reset to default F9)

Storage safe-mode
2) "SCM" wird in den safe-mode versetzt
Firmware-Update starten
3) Firmware Aktualisierung kann gestarted werden
Update Computing Modul
6) Aktualisieren der "Computing Module"

Nützliche Links

Intel Downloadcenter
MFSYS25 Training video for Windows
Thomas-Krenn Modular Server Wiki

Routingtabelle: statische Routen definieren unter: Windows, Debian Linux und Esxi-Server

Wenn eine Routingtabelle mit statischen Routeneinträge ergänzt werden soll, was bei einer VPN-Verbindung nötig sein kann, gibt es für die verschiedenen Betriebssysteme einen Befehl “route”. Dieser Befehl ist unter Windows und Linux sehr ähnlich. Der grösste Unterschied ist bei den permanenten Routings.

Einträge in der Rountingtabelle anzeigen:

  • unter Windows
    >route print

    Routingtabelle unter Windows
    Routingtabelle unter Windows
  • unter Linux
    >route

    Routingtabelle unter Linux
    Routingtabelle unter Linux
  • unter Esxi-Server
    >esxcfg-route -l

    Routingtabelle Esxi
    Routingtabelle Esxi

Eintrag in der Routingtabelle erstellen:
Achtung: Wenn das Betriebssystem neugestartet wird gehen die Einträge verloren, da es sich nicht um permanente Einträge handelt.

  • unter Windows
    >route add 192.168.7.0 MASK 255.255.255.0 10.50.147.66
  • unter Linux
    >route add -net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66 dev eth0
  • unter Esxi-Server
    >esxcfg-route -a 192.168.7.0 255.255.255.0 10.50.147.66

Eintrag in der Routingtabelle löschen:

  • unter Windows
    >route delete 192.168.7.0 MASK 255.255.255.0 10.50.147.66
  • unter Linux
    >route del -net 192.168.7.0/24  gw 10.50.147.66
  • unter Esxi-Server
    >esxcfg-route -d 192.168.7.0/24 10.50.147.66

Permanenter Eintrag in der Routingtabelle erstellen:
Nach einem Neustart des Betriebssystemes sind diese Einträge wieder in der Routingtabelle vorhanden.

  • unter Windows muss nur der Parameter -p mitgegeben werden, damit dieser Eintrag permanent wird.
    >route add 192.168.7.0 MASK 255.255.255.0 10.50.147.66 -p
  • unter Linux ist es ein wenig aufwändiger, es muss ein Eintrag in der Datei “/etc/network/interfaces” erstellt werden.
    
    iface eth0 inet static
          address 10.50.147.99
          netmask 255.255.255.0
          network 10.50.147.0
          broadcast 10.50.147.255
          gateway 10.50.147.1
          dns-nameservers 10.50.147.1 10.50.147.2
    
    #hinzufügen der statischen permanenten Route
    up route add -net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66 dev eth0
    
  • unter Esxi-Server wird ein Eintrag in der Datei “/etc/sysconfig/static-routes” erstellt.
    
    #hinzufügen der statischen permanenten Route
    any net 192.168.7.0 netmask 255.255.255.0  gw 10.50.147.66
    

Zum starten der Esxi-Konsole (unsupported modus: left alt key + F1, type: unsupported)

Vmware Knowledge Base: Adding a static route to an ESX host
Esxcfg-Hilfe
Linux: man route

Multicast Sender & Empfänger mit Python

Die Kommunikation über eine Punkt-zu-Punkt-Verbindung ist in den meisten Anwendungen der richtige Weg. Was aber wenn mehrere Empfänger die gleichen Informationen erhalten wollen? Da zeigt sich dann ein grosser Nachteil der Punkt-zu-Punkt-Verbindungen. Pro Empfänger muss eine Verbindung hergestellt werden um dann die gleichen Informationen mehrfach zu verschicken, was zu Engpässen in der Bandbreite führen kann. Um dies zu vermeiden, kann mit Hilfe von Multicast eine sogenannte Punkt-zu-Gruppe-Verbindung hergestellt werden. Der Sender verschickt eine einzige Nachricht an eine ganze Gruppe von Empfängern und die Netzwerkinfrastruktur sorgt dafür, dass jeder interessierte Empfänger die Informationen auch erhält. Die Kommunikation geschieht über eine spezielle Multicast-Adresse (Multicast-Group) die aus dem IPv4-Bereich 224.0.0.0 bis 239.255.255.255 stammen muss. Dieser IP-Bereich ist für Multicast reserviert und wird von Routern und Switches speziell behandelt. Die Multicast-Pakete werden über UDP versendet.

Ein gutes Beispiel eines Multicast Senders und Empfänger habe ich auf der Webseite von Doug Hellmann gefunden.

Der Multicast Sender
In diesem Beispiel müssen sich die Empfänger nicht beim Sender anmelden, daher kann der Sender nicht wissen wie viele Antworten zu erwarten sind. Aus diesem Grund wartet der Sender solange auf eine Antwort bis der festgelegte Socket-Timeout erreicht wurde.

Hier die wichtigsten Code-Zeilen:


# Create the datagram socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Set a timeout so the socket does not block indefinitely when trying
# to receive data. (in sec flaot)
sock.settimeout(1.0)

# Set the time-to-live for messages to 1 so they do not go past the
# local network segment.
ttl = struct.pack('b', 1)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, ttl)

try:        
	# Send data to the multicast group
	print >>sys.stderr, 'sending "%s"' % message
	sent = sock.sendto(message, multicast_group)

	# Look for responses from all recipients
	while True:
		print >>sys.stderr, 'waiting to receive'
		try:
			data, server = sock.recvfrom(16)
		except socket.timeout:
			print >>sys.stderr, 'timed out, no more responses'
			break
		else:
			print >>sys.stderr, 'received "%s" from %s' % (data, server)        
finally:
	print >>sys.stderr, 'closing socket'
	sock.close()

Der Multicast Empfänger
Der Empfänger lauscht auf allen Netzwerkinterfaces auf Daten seiner Multicast-Gruppe und schickt eine Empfangsbestätigung zurück.

Hier die wichtigsten Code-Zeilen:


# The first step to establishing a multicast receiver is to create 
# the UDP socket.
server_address = ('', 10000)

# Create the socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# Bind to the server address
sock.bind(server_address)

# Tell the operating system to add the socket to 
# the multicast group on all interfaces.
group = socket.inet_aton(multicast_group)
mreq = struct.pack('4sL', group, socket.INADDR_ANY)
sock.setsockopt(socket.IPPROTO_IP, socket.IP_ADD_MEMBERSHIP, mreq)


# Receive/respond loop
while True:
	print >>sys.stderr, '\nwaiting to receive message'
	data, address = sock.recvfrom(1024)
	
	print >>sys.stderr, 'received %s bytes from %s' % (len(data), address)
	print >>sys.stderr, data

	print >>sys.stderr, 'sending acknowledgement to', address
	sock.sendto('ack', address)

Source Code-Dateien:

Die 7zip-Datei enthält die Dateien:
– MulticastServer.py (Sender)
– MulticastClient.py (Empfänger)
Python – Source Code

Eine ausführbare Version (exe) der Dateien, welche eine vorhandene Installation von Python 2.7.2 erfordert:
– MulticastServer.exe (Sender)
– MulticastClient.exe (Empfänger)
Kompilierte Multicast Beispiele (x64)

Starten des Clients:
(Client empfängt Daten der Multicast-Gruppe 224.0.1.2)


>MulticastClient.exe 224.0.1.2

Starten des Servers und gleichzeitiges verschicken von Daten:
(Server verschickt ein “Hallo Multicast!” an die Multicast-Gruppe 224.0.1.2)


>MulticastServer.exe "Hallo Multicast!" 224.0.1.2

Multicast Server und Client
Multicast Server und Client


– Python: Socket-Dokumentation
– Wikipedia: Multicast

DVD abspielen unter Linux (Ubuntu / Kubuntu)

Wer unter Linux seine gekaufte DVD anschauen möchte und sich denkt: “Einfach DVD einlegen und anschauen”, der wird schnell feststellen, dass es so nicht funktioniert. Die meisten Multimedia-Dateien können unter Linux ohne Probleme abgespielt werden. Dazu gehören die gekauften DVD’s leider nicht, da sie oft verschlüsselt sind.

Damit eine verschlüsselte DVD gelesen werden kann, braucht es das Paket libdvdcss2. Aufgrund rechtlicher Unsicherheiten ist es in vielen Linux-Distributionen (Ubuntu, Debian usw.) nicht enthalten.

Das Paket kann folgendermassen installiert werden:


sudo apt-get install libdvdread4

Wurde die Installation erfolgreich abgeschlossen muss noch das Installations-Skript ausgeführt werden:


sudo sh /usr/share/doc/libdvdread4/install-css.sh

Konnte auch dieses Skript erfolgreich ausgeführt werden, sollte das Abspielen von DVD’s funktionieren.

Detaillierte Informationen zu Ubuntu und Codecs
Wikipedia: Libdvdcss

Warum ist 0.99999999999… = 1?

Eine ganz einfache Rechnung kann doch ganz schön verblüffend sein!

Angenommen wir haben ein Objekt mit der Grösse 1 und teilen dieses in 3 kleinere gleich grosse Stücke, so erhalten wir also 3 Stücke der Grösse (1/3). Wenn wir nun eines dieser Stücke nehmen und mit 3 multiplizieren, sollten wir wieder die Grösse 1 erhalten. Wirklich?

Bruchschreibweise:

(1/3) * 3 = 1
den
1/3 * 3/1 = 1

Nehmen wir doch mal die Dezimalschreibweise:


0.333333... * 3 = 0.999999...

Es scheint so als hätte unser Objekt beim Rechnen an Grösse verloren! Was ist geschehen? Ist also die Zahl 0.999999… (mit einer unendlichen Folge von Neunen) doch 1, somit einfach eine andere Schreibweise für die 1?

Versuchen wir es doch auf eine einfache Art zu beweisen:


Wenn 0.999999... = 1 dann:
0.999999... * 10 = 9.999999...

9.999999...
-0.999999...
-------------
9.000000...

Ergibt also das gleiche wie: 10 - 1 = 9

Eine weitere Möglichkeit ist die algebraische Schreibweise:

Wir definieren: 0.999999... = a

Jetzt führen wir die gleiche Rechnung wie im oberen Beispiel durch:
10a -a = 9
9a = 9
a = 1

Wenn wir nun den Wert einsetzen wofür a steht, erhalten wir:

0.999999... = 1

Somit ist also klar, dass 0.999999… nur eine weitere Schreibweise für die einzigartige natürliche Zahl Eins ist.

Weitere interessante Beispiele zu den Zahlen, findet man im Buch von Peter J. Bentley mit dem Titel “Das Buch der Zahlen”.

Nützliches

ZMS2: Hinzufügen des “google-site-verification” Meta-Tag

Bevor man die Google Webmaster-Tools verwenden kann, wird durch Google die “Eigentümerschaft” einer Webseite überprüft. Dazu wird die Webseite mit einem “google-site-verification Code” markiert. Dies kann auf verschiedene Arten geschehen:

  • Man lädt eine Datei ins Root-Verzeichnis, welche den Code enthält
  • Definiert den “google-site-verification” Meta-Tag auf der Startseite
  • Man verwendet das Google Analytics-Konto

Um nun bei einem ZMS-Web einen neuen Meta-Tag hinzuzufügen gibt es 2 Möglichkeiten:

  1. Meta-Tag unveränderlich in das Meta-Tag Template integrieren
  2. Meta-Tag im ZMS Content-Object ergänzen, damit es über das Webgui beliebig verändert werden kann

1. Meta-Tag unveränderlich in das Meta-Tag Template integrieren

Zum Template gelangt man über die Navigation “/commen/[Name des ausgewähltes Theme]/headMeta_Local”. Die Template-Datei “headMeta_Local” kann jetzt mit dem neuen Meta-Tag ergänzt werden.
headMeta_Local anpassen

2. Meta-Tag im ZMS Content-Object ergänzen

Dazu müssen wir im ZMS Conten-Object zuerst den neuen Meta-Tag definieren. Über das Menü wechselt man auf: “[Name der Webseite] » Konfiguration » Content-Objekte”.

ZMS Conten-Object anpassen
Um das ZMS-Content-Object zu editieren, klickt man in der Baumstruktur auf den Node “ZMS”.

zms-content-objekt

Jetzt kann der neue Meta-Tag definiert werden. Dazu wird in der Spalte ID und Anzeige der Meta-Tag Name “google-site-verification” eingegeben, als Typ wird “string” ausgewählt.

neuer Meta-Tag erfassen

Ist der neue Meta-Tag definiert worden, müssen wir wie bei der ersten Methode beschrieben, noch das Template anpassen. Diesmal wird der Wert des Meta-Tag jedoch nicht fix hinterlegt, sondern kann im Webgui verändert werden. Dazu muss im “headMeta_local” Template der Meta-Tag folgendermassen eingetragen werden:

[cc lang=”HTML”]” />[/cc]

Nach dieser Änderung kann der “google-site-verification Code” über das Webgui verändert / eingetragen werden und das ZMS-Web wird diesen Meta-Tag im HTML-Header führen.

zms-webgui

Google Webmaster-Tools
Bing Webmaster-Tools

Staubsaugerroboter – Hoovie (2008)

Das Projekt “Staubsaugerroboter” war eine Gruppenarbeit im Herbstsemester 2008. Dabei wurde die Steuerungssoftware für den Roboter mit dem “Lego Java Operating System” erstellt. Der Simulator wurde mit Java entwickelt.

Aufgabenstellung

Um die Aufgabenstellung zu erfüllen, musste ein Lego-Roboter, die dazugehörige Steuersoftware und einen Simulator erstellt werden. Dabei war das Ziel, dass der Roboter die ganze Fläche eines beliebigen Raumes in möglichst kurzer Zeit reinigt. Die Simulation sollte das gleiche Verhalten zeigen wie der Lego-Roboter.

Die Simulation hatte folgende Kriterien:

  • Visualisierung der Fläche und des Roboters (Roboter färbt die gefahrene Fläche)
  • Schnittstelle für Statistiken (Ausgabe der Fläche pro Zeit im CSV-Format)
  • 2-3 Bewegungsstrategien (Brown‘sche Bewegung, Random Walk, Parallelfahrt)
  • Simulation und Roboter sollen das gleiche physikalische Verhalten zeigen (Distanz, Geschwindigkeit (Dreh usw.), Ablaufgeschwindigkeit einstellbar)

Bilder

Das GUI des Simulator
Das GUI des Simulator

Simulation mit "RandomTurn"
Simulation mit "RandomTurn"

Simulation mit "Adaptive Brown" und einer Karte mit mehreren Hindernissen
Simulation mit "Adaptive Brown" und einer Karte mit mehreren Hindernissen

Das Lego Modell von Hoovie
Das Lego Modell von Hoovie

Die Kunst der Täuschung (Risikofaktor Mensch) von Kevin Mitnick

Die Kunst der Täuschung (Risikofaktor Mensch)
Die Kunst der Täuschung (Risikofaktor Mensch)
Das Buch die “Kunst der Täuschung”, von Kevin Mitnick, wurde 2002 in englischer Sprache veröffentlicht. Darin beschreibt der ehemalige Hacker wie Social Engineering funktioniert, um mit Hilfe von Täuschung an geheime Informationen zu gelangen.
Im Jahre 2006 wurde ich auf das Buch aufmerksam. Da ich den Klappentext vielversprechend fand, habe ich mir sofort ein Exemplar besorgt und begann gespannt mit dem Lesen des Buches. Die ersten paar Kapitel waren spannend und auch lehrreich. Mit der Zeit aber lies die Spannung nach und die Geschichten wiederholten sich, was dazu führte, dass es richtig langweilig wurde. Nach etwa 100 Seiten gab ich das Lesen auf und legte das Buch auf die Seite. Im Sommer 2011 startete ich den zweiten Versuch das Buch doch noch zu Ende zu lesen.

Mein Fazit:
Die verschiedenen Kapitel umfassen immer eine Geschichte, welche verdeutlicht wie der Social Engineer an Informationen gelangt und diese gezielt einsetzt, um an weitere wichtige Informationen zu gelangen. Am Schluss der Geschichten gibt es eine Trickanalyse bei der beschrieben wird, warum das es so funktionieren kann. Auch gibt der Autor Tipps wie man sich und die Firma vor solchen Tricks schützen kann. Viele dieser Methoden, um an Informationen zu gelangen, werden heute wohl kaum mehr so einfach funktionieren, denn in den 80er Jahren war die Kenntnis über sensible Daten noch geringer als heute. (Ok, nicht überall!) Trotzdem gibt das Buch einen guten Überblick wie Social Engineering funktionieren kann.

Wenn man viel Zeit und die Motivation hat dieses Buch zu lesen, sich dabei mehr auf die kleinen Details in den Geschichten konzentriert, dann erfährt man als Leser einiges zum Thema Social Engineering. Und nein, man muss das Buch nicht am Stück lesen. Am einfachsten borgt man sich das Buch aus, liest soweit man Lust hat und blättert noch bis zum Schluss. Die Kapitel 15, 16 und 17 dürften vor allem diejenigen interessieren, die in einem Unternehmen zuständig für die Sicherheitsrichtlinien sind.

Wikipedia: Kevin Mitnick