Forum: PC-Programmierung Bios, Networking und Low Level Programmierung


von Andreas S. (andreas_s39)


Lesenswert?

Hallo erstmal.
.

Zuerst mein Hintergrund: Mir ist (wieder einmal) ein Laptop "abhanden 
gekommen". Um dem in Zukunft vorzubeugen, will ich den Versuch wagen 
einen Low Level DynDNS Updater direkt ins BIOS zu integrieren. Da ich 
bereits nach kürzester Suche auf "Computrace" gestoßen bin, glaube ich 
fest an die Machbarkeit.

Jetzt zu meinen ersten Fragen:

1. Wie wird der Flashspeicher des BIOS abgefragt? Wird der Bootloader 
automatisch nach dem vollständigen Auslesen des Speichers ausgeführt, 
sofort nachdem das BIOS die Übergabe durchgeführt hat oder wenn die 
Übergabe durchgeführt wurde UND der Speicher vollständig gelesen wurde?

2. Da das BIOS als Hardware Abstraction Layer dient, jedoch durch 
Betriebssystem eigene Treiber übergangen werden kann, nehme ich an, dass 
Routinen im BIOS nach dem Start durch das Betriebssystem initialisiert 
werden. Liege ich mit dieser Annahme richtig? Falls ja, kann ich dennoch 
(z.B über CPU-Clock Cycles) eine Routine auf dem BIOS-Chip ausführen, 
notfalls durch sich selbst rekursiv?

3. Zwar habe ich hier ein recht ausführliches Buch über Low Level 
Programmierung (am Beispiel HLA) liegen, allerdings gibt es mir keine 
Auskunft über Networking und ich bin aus unerfindlichen Gründen unfähig 
erfolgreich danach zu googlen und stoße meist nur auf den winsocket, 
welchen ich nicht verwenden möchte, da er vom Betriebssystem gestellt 
wird und nutzlos wäre, wenn mein Computer auf z.B. Linux umgestellt 
wird. Meine Frage also: Wie wäre ich in der Lage einen externen Server 
zu adressieren? Wie kann ich einen Domain Namen als Adresse verwenden? 
Wie kann ich die aktuelle externe IP meines Computers ermitteln?

4. Ganz besonders zu 3. wäre ich auch froh, wenn ihr mir Begriffe 
liefern könntet nach denen ich googlen kann.

.

Mit freundlichsten Grüßen

Steini

.

PS.: Da ich trotz allem, was ich zu wissen glaube, definitiv ein 
Anfänger bin, wäre es mit Sicherheit auch hilfreich, wenn ihr mir sagen 
könntet, welche Fragen ich überhaupt stellen sollte und welche 
Grundlagen ich benötige.

von Oliver (Gast)


Lesenswert?

Andreas S. schrieb:
> und nutzlos wäre, wenn mein Computer auf z.B. Linux umgestellt
> wird.

Hm. Da selbst computrace in diesem Fall versagt, musst du aber schon 
sehr feste an die Machbarkeit glauben...

Oliver

von Bernd K. (prof7bit)


Lesenswert?

Andreas S. schrieb:
> 3. Zwar habe ich hier ein recht ausführliches Buch über Low Level
> Programmierung (am Beispiel HLA) liegen, allerdings gibt es mir keine
> Auskunft über Networking und ich bin aus unerfindlichen Gründen unfähig
> erfolgreich danach zu googlen und stoße meist nur auf den winsocket,

Stop, Langsam. Was ist erstmal mit einem Netrzwerkkarten-Treiber, wie 
implementierst Du den? Bevor Du überhaupt irgendwas auf höheren 
Protokollebenen machen kannst (Ethernet, ARP, IP, UDP, TCP) musst Du 
doch erstmal die Hardware bedienen können.

von Frank K. (fchk)


Lesenswert?

Andreas S. schrieb:

> 1. Wie wird der Flashspeicher des BIOS abgefragt? Wird der Bootloader
> automatisch nach dem vollständigen Auslesen des Speichers ausgeführt,
> sofort nachdem das BIOS die Übergabe durchgeführt hat oder wenn die
> Übergabe durchgeführt wurde UND der Speicher vollständig gelesen wurde?

Lies das hier:
http://bitsavers.trailing-edge.com/pdf/ibm/pc/ps2/PS2_and_PC_BIOS_Interface_Technical_Reference_Apr87.pdf

Das klassische BIOS hat sich seitdem nicht prinzipiell geändert, das 
dort geschriebene gilt fast unverändert immer noch.

> 2. Da das BIOS als Hardware Abstraction Layer dient, jedoch durch
> Betriebssystem eigene Treiber übergangen werden kann, nehme ich an, dass
> Routinen im BIOS nach dem Start durch das Betriebssystem initialisiert
> werden. Liege ich mit dieser Annahme richtig? Falls ja, kann ich dennoch
> (z.B über CPU-Clock Cycles) eine Routine auf dem BIOS-Chip ausführen,
> notfalls durch sich selbst rekursiv?

Der BIOS-Chip ist nur ein Datenspeicher, kein Prozessor. Er kann also 
selber nichts selber ausführen. Und die heutigen Betriebssysteme 
benutzen das BIOS eigentlich nur noch zum Booten. Die Routinen im BIOS 
werden anschließend nicht mehr verwendet.

> 3. Zwar habe ich hier ein recht ausführliches Buch über Low Level
> Programmierung (am Beispiel HLA) liegen, allerdings gibt es mir keine
> Auskunft über Networking und ich bin aus unerfindlichen Gründen unfähig
> erfolgreich danach zu googlen und stoße meist nur auf den winsocket,
> welchen ich nicht verwenden möchte, da er vom Betriebssystem gestellt
> wird und nutzlos wäre, wenn mein Computer auf z.B. Linux umgestellt
> wird. Meine Frage also: Wie wäre ich in der Lage einen externen Server
> zu adressieren? Wie kann ich einen Domain Namen als Adresse verwenden?
> Wie kann ich die aktuelle externe IP meines Computers ermitteln?

Gar nicht. So einfach ist das. Als das BIOS definiert wurde, war TCP 
noch nicht erfunden. Das Höchste der Gefühle sind Bootroms, die per UDP 
einen Bootloader per BOOTP/TFTP laden können. Mehr nicht. Punkt. Ende.

Inzwischen gibt es UEFI als BIOS-Nachfolger. Das kann mehr, aber ein 
Netzwerkstack ist auch dort nur optional.

Dazu kommt: Im Zeichen von Secure Boot etc dürften inzwischen viele 
Teile des UEFI cryptografisch signiert sein. Heißt also: DU wird daran 
ohnehin nichts mehr ändern können.

Apple hat für Dein Problem eine Lösung. Die verwenden ein etwas anderes 
EFI und haben dort auch Dinge wie Internet Recovery und "Find My Mac" 
etc eingebaut. Das läuft dann über die iCloud. Apple definiert sich halt 
eigene Standards.

fchk

von Andreas S. (andreas_s39)


Lesenswert?

Ich meine dabei natürlich das Persistentz-Modul des Computrace-Agenten. 
Dieses befindet sich laut ihrer FAQ im BIOS.

Somit dürfte meine Idee eigentlich über den Flashspeicher realisierbar 
sein.

Dennoch bin ich mir nicht sicher, da Computrace eben vom Hersteller 
selbst in das BIOS integriert wird und ich somit nicht sicher sein kann 
ob hier Modifikationen des BIOS nötig sind, die auch ich vornehmen 
könnte.

Darüber hinaus habe ich leider ohnehin zu wenig Ahnung von 
Netzwerktechnik, obwohl ich gerade intensiv versuche mich einzuarbeiten 
und auch einen öffentlichen Kurs an unserer lokalen Hochschule dazu 
besuche (der leider (noch) nicht in die gewünschte Richtung zielt)

von Max D. (max_d)


Lesenswert?

Also das BIOS in meinem Mainboard holt sich (nur auf Befehl) direkt von 
seinem Hersteller Updates. Es ist also definitiv möglich soetwas zu 
implementieren.
@TO: Es wäre evtl. eine gute Idee das "nach Hause telefonieren" während 
des BIOS-seitigen Bootvorgangs zu machen. Damit ist egal was (und ob 
überhaupt) auf der HDD ist. Zumindest wenn der "Schuft" LAN verwendet. 
Bei WLAN steht man so aber natürlich dumm da. Auf der anderen Seite 
erfordert eine Integration in ein OS immer die Kooperation (oder 
wenigstens eine Lücke) seitens desselben.
Man könnte die Problematik etwas entschärfen indem man in einer Meldung 
(als BIOS) fordert ein "Update" zu erhalten um mit "der neuen Hardware 
zu funktionieren".


Alternativ sollte der ganze Aufwand dir zu viel sein: Mach ein BIOS-Pw 
rein und schreib das auch mit einem großen Sticker aussen drauf. Das 
schreckt schonmal 90% der Gelegenheitsdiebe ab. Ich hatte z.B. auch 
einen Screensaver der so "sicher" aussieht mit gefakten Sensordaten und 
vielen Schlüsselsymbolen. Hab ich mal irgendwo vor tausend Jahren in den 
tiefen des nets gefunden und durch den compiler gejagt. Gibt sicher für 
das OS deiner Wahl auch sowas.

von Simon S. (-schumi-)


Lesenswert?

http://www.coreboot.org

Damit hast du schon mal eine freie BIOS-Grundlage, für das du deinen 
dyndns updater programmieren und als Payload integrieren kannst.

Man kann sogar ein ganzes kleines Linux als Payload nehmen. Damit könnte 
sogar ein einfaches Skript als Updater funktionieren, um allen 
LowLevel-Kram musst du dich ja dann nicht kümmern.

Anschließend die Payload SeaBios (
http://www.coreboot.org/SeaBIOS ) laden, welche die Funktion des 
üblichen Bios übernimmt (also das OS startet)

von Dario B. (Gast)


Lesenswert?

> Zuerst mein Hintergrund: Mir ist (wieder einmal) ein Laptop "abhanden
> gekommen". Um dem in Zukunft vorzubeugen, will ich den Versuch wagen
> einen Low Level DynDNS Updater direkt ins BIOS zu integrieren. Da ich
> bereits nach kürzester Suche auf "Computrace" gestoßen bin, glaube ich
> fest an die Machbarkeit.

und wenn du dich einfach nur mal fragst, warum dir so viele laptops 
abhanden kommen?

von Andreas S. (andreas_s39)


Lesenswert?

Frank K. schrieb:
> Der BIOS-Chip ist nur ein Datenspeicher, kein Prozessor. Er kann also
> selber nichts selber ausführen. Und die heutigen Betriebssysteme
> benutzen das BIOS eigentlich nur noch zum Booten. Die Routinen im BIOS
> werden anschließend nicht mehr verwendet.

Entschuldigung. So viel Kenntnis habe ich zum Glück noch, habe mich nur 
völlig falsch ausgedrückt. Ich meinte natürlich die Routine aus dem 
Speicher abzurufen und dann auf dem Prozessor auszuführen...^^

> Gar nicht. So einfach ist das. Als das BIOS definiert wurde, war TCP
> noch nicht erfunden. Das Höchste der Gefühle sind Bootroms, die per UDP
> einen Bootloader per BOOTP/TFTP laden können. Mehr nicht. Punkt. Ende.
>
> Inzwischen gibt es UEFI als BIOS-Nachfolger. Das kann mehr, aber ein
> Netzwerkstack ist auch dort nur optional.
>
> Dazu kommt: Im Zeichen von Secure Boot etc dürften inzwischen viele
> Teile des UEFI cryptografisch signiert sein. Heißt also: DU wird daran
> ohnehin nichts mehr ändern können.

Gut zu wissen. Dann werde ich diesen Ansatz wohl verwerfen. Das heißt 
dann wohl, dass ich entweder versuchen müsste irgendwie eine 
Dokumentation für meine NIC Treiber aufspüren müsste um selbst einen 
sehr einfachen zu basteln (rein theoretisch, ich bezweifle, dass ich 
hierfür in absehbarer Zeit genug Wissen anhäufen würde) oder trotz 
meines Unwillen über das Betriebssystem gehen muss.

Hier bietet sich vielleicht eine weitere Idee an: Da ich eine SSD 
benutze müsste es doch möglich sein einige Speicherzellen so zu 
blockieren, dass sie ausschließlich ausgelesen werden können...?

Wahrscheinlich ist der Aufwand dazu unnötig groß, daher noch eine andere 
Idee: GRUB auf eigene Partition und Routinen hinzufügen, die automatisch 
überprüfen ob eine neue Windows-Installation vorliegt und entsprechende 
Programme zu Windows hinzufügt.

Bei beiden Methoden hoffe ich natürlich dann darauf, dass mein Laptop 
ausschließlich von technisch ignoranten Windows Usern geklaut wird...

von Andreas S. (andreas_s39)


Lesenswert?

Simon S. schrieb:
> http://www.coreboot.org
>
> Damit hast du schon mal eine freie BIOS-Grundlage, für das du deinen
> dyndns updater programmieren und als Payload integrieren kannst.
>
> Man kann sogar ein ganzes kleines Linux als Payload nehmen. Damit könnte
> sogar ein einfaches Skript als Updater funktionieren, um allen
> LowLevel-Kram musst du dich ja dann nicht kümmern.

Sehr nett. Habe mich mal ein klein wenig umgeschaut was das Teil so an 
Netzwerktreibern mitliefert. Fragt sich nur noch ob meine Interfaces 
dabei sind oder ich eine Dokumentation für mein Interface finde und 
einen Treiber umbauen kann. Mach ich dann später, danke!

.

Bin gespannt ob das damit möglich wird (v.a. da fchk's Aussage mich 
schwer an den Möglichkeiten zweifeln lässt, die mir aus dem BIOS heraus 
offen stehen)

Dario B. schrieb:
> und wenn du dich einfach nur mal fragst, warum dir so viele laptops
> abhanden kommen?

Das liegt daran, dass ich Genie bis zum Umfallen vergesslich und 
tollpatschig bin. Ich habe ein paar sehr billige (und teilweise auch 
alte) Laptops, mit denen ich in Bibliotheken/Cafes/etc. ein wenig 
arbeite. Die vergesse ich aber regelmäßig und nicht immer hat ein 
Angestellter diese in Gewahrsam genommen, wenn ich zurückkomme um sie zu 
holen und sie nicht mehr da liegen wo sie sein sollten.

Max D. schrieb:
> Bei WLAN steht man so aber natürlich dumm da. Auf der anderen Seite
> erfordert eine Integration in ein OS immer die Kooperation (oder
> wenigstens eine Lücke) seitens desselben.

Ich glaube, dass wenn ich WLAN berücksichtigen will (was bei Laptops 
meiner Meinung unverzichtbar ist, keine Ahnung warum ich erst jetzt auf 
diesen Einfall komme) gar nicht um eine Integration ins Betriebssystem 
herumkomme. Wäre doch sehr verdächtig, wenn das BIOS beginnt nach WLAN 
Passwörtern zu fragen....

von Frank K. (fchk)


Lesenswert?

Andreas S. schrieb:

> Bin gespannt ob das damit möglich wird (v.a. da fchk's Aussage mich
> schwer an den Möglichkeiten zweifeln lässt, die mir aus dem BIOS heraus
> offen stehen)

Das ist kein Widerspruch. Das klasiische BIOS, wie IBM es anno 1981 
definiert hat, kennt keinerlei Netzwerk. Du kannst wohl 
Netzwerkfunktionalität einbauen - die PXE-Bootroms machen es ja auch, 
aber Du musst von der Hardwareansteuerung über den TCP/IP-Stack bis zur 
Applikation alles selber machen, und zwar im 16 Bit Real Mode.

Coreboot ist erstmal kein klassisches BIOS. Wenn Du es nutzen willst, 
wirst Du es erstmal an Deine eigene Hardware anpassen müssen, und die 
dazu erforderlichen Infos sind mitunter schwer oder gar nicht zu 
bekommen. Die BIOS-Kompatibilität kommt erst durch ein separates Modul 
zustande.

> Das liegt daran, dass ich Genie bis zum Umfallen vergesslich und
> tollpatschig bin. Ich habe ein paar sehr billige (und teilweise auch
> alte) Laptops, mit denen ich in Bibliotheken/Cafes/etc. ein wenig
> arbeite. Die vergesse ich aber regelmäßig und nicht immer hat ein
> Angestellter diese in Gewahrsam genommen, wenn ich zurückkomme um sie zu
> holen und sie nicht mehr da liegen wo sie sein sollten.

Dann lass Dir einen RFID-Transponder, wie er für Haustiere verwendet 
wird, implantieren (am Besten in einen Arm) und bau einen RFID-Reader 
ein. Wenn der Dich nicht mehr lesen kann, piept es.

fchk

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Da Notebooks überlicherweise ihren Internetzugang per WLAN abwickeln ... 
woher soll ein im BIOS liegender DynDNS-Updater die WLAN-Zugangsdaten 
kennen?

Und -- was willst Du mit den so erlangten IP-Adressen anstellen? Meinst 
Du, daß Du damit rausfindest, an welchem Ort sich der jeweilige Benutzer 
befindet, damit Du Deine verschlampte Hardware wieder einsammeln kannst?

von Andreas S. (andreas_s39)


Lesenswert?

Rufus Τ. Firefly schrieb:
> was willst Du mit den so erlangten IP-Adressen anstellen? Meinst
> Du, daß Du damit rausfindest, an welchem Ort sich der jeweilige Benutzer
> befindet, damit Du Deine verschlampte Hardware wieder einsammeln kannst?

Nope, ganz feige die Polizei um Hilfe fragen. Würde mich wundern, wenn 
die nicht in der Lage wäre ein wenig Auskunft vom ISP zu beantragen.

WLAN ist natürlich das große Problem. Da ich selbst ausschließlich an 
der HS oder zu Hause online gehe und da auch nur per LAN habe ich 
eiskalt WLAN überdacht. Komme daher anscheinend gar nicht ums OS herum.

Frank K. schrieb:
> Dann lass Dir einen RFID-Transponder, wie er für Haustiere verwendet
> wird, implantieren (am Besten in einen Arm) und bau einen RFID-Reader
> ein. Wenn der Dich nicht mehr lesen kann, piept es.

Interessante Idee. Wollte mir ohnehin schon mal einen RFID-Chip in die 
Daumenfalte setzen lassen. Zum Haustür aufsperren, am PC anmelden, Handy 
entsperren, etc. Habs dann aber sein lassen, bzw. aufgeschoben weil mich 
die Sicherheit nicht gerade überzeugt hat. Habe aber jetzt nochmal 
gegooglet und sofort einen Artikel zur Authentifikation mit AES 
gefunden. Behalte ich jetzt mal im Kopf.

von Georg (Gast)


Lesenswert?

Hallo,

mach dir eine elektronische Fussfessel, die dir einen Schlag versetzt 
oder zu heulen anfängt, wenn du dich aus dem Bluetoothbereich des 
Notebooks entfernst.

Einfacher wäre ein dünnes Stahlseil, das du am Notebook befestigst 
(Stichwort Kensington Schloss) und an einem Arm- oder Fussband.

Interessant wäre auch die "Mission Impossible" Variante: das Notebook 
vernichtet sich selbst bei längerer Abwesenheit deiner Person.

Georg

von Andreas S. (andreas_s39)


Lesenswert?

Georg schrieb:
> mach dir eine elektronische Fussfessel, die dir einen Schlag versetzt
> oder zu heulen anfängt, wenn du dich aus dem Bluetoothbereich des
> Notebooks entfernst.
>
> Einfacher wäre ein dünnes Stahlseil, das du am Notebook befestigst
> (Stichwort Kensington Schloss) und an einem Arm- oder Fussband.
>
> Interessant wäre auch die "Mission Impossible" Variante: das Notebook
> vernichtet sich selbst bei längerer Abwesenheit deiner Person.

Wie das dann wohl rüberkommt wenn ich zuckend durch die Bibliothek 
laufe, einen Laptop an einem Seil hinter mir herziehend....

Bestimmt interessant. Weniger spaßig dürfte es allerdings sein, der 
Polizei später zu erklären warum mein Laptop sich selbst entzündet und 
dabei das ganze Haus niedergefackelt hat.

von Max D. (max_d)


Lesenswert?

Solltest du auch ein schmarrphone mit dir rumzerren, dann schreib oder 
such dir eine app die piept wenn die Bluetooth Verbindung mit deinem 
Laptop getrennt wird. Bt reicht etwa 10m, also grade gut für 
diebstahlschutz.

von Georg (Gast)


Lesenswert?

Max D. schrieb:
> dann schreib oder
> such dir eine app die piept wenn die Bluetooth Verbindung mit deinem
> Laptop getrennt wird

Guter Vorschlag, das könnte auch funktionieren, wenn er das Notebook 
mitnimmt und das Smartphone liegen lässt.

Aber was, wenn er beides vergisst?

Georg

von Bernd K. (prof7bit)


Lesenswert?

Andreas S. schrieb:

> Weniger spaßig dürfte es allerdings sein, der
> Polizei später zu erklären warum mein Laptop sich selbst entzündet und
> dabei das ganze Haus niedergefackelt hat.

Diese Methode scheint aber mittlerweile mehr und mehr auf Akzeptanz zu 
stoßen, siehe dazu zum Beispiel FTDI.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Georg schrieb:
> Guter Vorschlag, das könnte auch funktionieren, wenn er das Notebook
> mitnimmt und das Smartphone liegen lässt.
>
> Aber was, wenn er beides vergisst?

Das Smartphone kann in Form einer SmartWatch am Probanden befestigt 
werden.

von Hans (Gast)


Lesenswert?

Eine wesentlich einfachere Alternative wäre, überhaupt kein 
System-Passwort zu verwenden, sondern nur sensible Daten eigenständig zu 
verschlüsseln. Wenn der Dieb dumm genug ist, nutzt er die 
Betriebssysteminstallation einfach weiter ...

http://www.youtube.com/watch?v=U4oB28ksiIo

von Rolf M. (rmagnus)


Lesenswert?

Andreas S. schrieb:
> Ich habe ein paar sehr billige (und teilweise auch alte) Laptops, mit
> denen ich in Bibliotheken/Cafes/etc. ein wenig arbeite. Die vergesse ich
> aber regelmäßig

Wie muß man sich das vorstellen? Du hockst da am Rechner und arbeitest 
daran, dann stehst du auf und gehst, vergisst aber, daß der Rechner noch 
vor dir steht?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Rolf Magnus schrieb:
> vergisst aber, daß der Rechner noch vor dir steht?

Das tut der Rechner ja nicht mehr, sobald er aufgestanden ist. Der 
Rechner steht ja nicht mit auf, sondern bleibt faul liegen.

von Andreas S. (andreas_s39)


Lesenswert?

Rolf Magnus schrieb:
> Wie muß man sich das vorstellen? Du hockst da am Rechner und arbeitest
> daran, dann stehst du auf und gehst, vergisst aber, daß der Rechner noch
> vor dir steht?

So schlimm ist es zum Glück noch nicht...

Da gibts verschiedene Möglichkeiten. Z.B. wenn ich in der Bücherei ein 
wenig schreibe und mich dann auf die Suche nach ein paar Büchern mache. 
Ich mache normalerweise nur ein paar Kopien, daher packe ich den Laptop 
meist schon mal zurück in seine Tasche. Ich hab da dann so einen 
Rucksack mit zwei getrennten Stauräumen, zwischen die man wunderbar 
diese Tasche schieben und befestigen kann.

Das mache ich aber nicht immer, meist für den Fall dass ich den Laptop 
doch noch brauche. Dann stelle ich in einfach hinter meinen Rucksack ins 
Regal. Nur vergesse ich aus irgendeinem Grund manchmal, dass ich den 
Laptop nicht in den Rucksack gepackt habe und da dieser, vollgestopft 
mit Büchern, recht schwer und der Laptop doch recht leicht ist fällt mir 
das nicht immer gleich auf.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Tja, dann solltest Du vielleicht an Dir arbeiten, und Dir abgewöhnen, 
Notebook und Rucksack getrennt irgendwo hinzustellen.

Vielleicht ist ja auch diese Tasche im Rucksack zu unpraktisch, wenn 
Du "das Notebook noch brauchst" und es dann da nicht reinpackst, scheint 
das ja so zu sein.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.