]> Joshua Wise's Git repositories - netwatch.git/blame - README
add top-level LICENSE
[netwatch.git] / README
CommitLineData
c00c1c15
JP
1NetWatch!
2
3 This is NetWatch, a system for remote system-management-mode-based
4control of a machine without support from or awareness by the OS. It works by
5taking over a second network card to provide a standard VNC server, such that
6a machine elsewhere on the network can see the text or graphics console of the
7machine and inject keystrokes as needed.
8
9 <description of SMM and what we do with it>.
10
11 <benchmarks here>.
12
13 Because NetWatch is invisible to the OS, its CPU usage is difficult to
14monitor; we do so by comparing the MD5 throughput of the system with NetWatch
15running versus without. The only way that the OS could detect this performance
16drain is by spinning tightly and watching for a sudden jump in the CPU's time
17stamp counters.
18
19 Although it would be possible to start up NetWatch after an OS kernel
20has already loaded, it is easier and more useful to load it from GRUB before
21the OS boots, such that even the bootloader itself can be controlled over the
22network. We do this by providing a stub loader (grubload/) which can be invoked
23from GRUB, and takes care of loading the main NetWatch ELF image. Once this is
24done and NetWatch is up and running, the loader returns to real mode and
25reinvokes GRUB via the BIOS.
26
27 Our current development platform, the Intel ICH2, does not allow SMM
28traps on arbitrary PCI accesses. This makes stealing the network card from the
29OS somewhat difficult, since there is nothing SMM code can do to cleanly block
30access. NetWatch simply chooses its desired network card, and then repeatedly
31clobbers the PCI base address registers. Although Linux resets the BARs to sane
32values when it probes the PCI bus, by the time it attempts to actually load
33the network driver, the card will no longer be accessible; fortunately, the
34driver quickly gives up, and Linux no longer attempts to access the card.
35
36 The northbridge can be configured to invoke a system management
37interrupt every 64 milliseconds, and so the bulk of NetWatch's work is done
38from this interrupt: checking the network card for incoming packets, invoking
39lwIP, and sending any response packets necessary. SMM entry also occurs when
40when the OS reads from the keyboard I/O ports, to inject scan codes as needed.
41
42 Much of NetWatch is very hardware-dependent, and although we've tried
43to maintain clean interface separation to allow for easy porting, the current
44implementation requires:
45
46 - Intel ICH2 system chipset
47 - 3C509 Ethernet card to be used by NetWatch, plus another card of
48 any type for the OS
49 - BIOS which does not set the D_LCK bit. Any system old enough to be
50 based on the ICH2 is very likely to have a suitable BIOS.
51
52 Current open issues are listed in the TODO file.
This page took 0.022341 seconds and 4 git commands to generate.