NetBIOS assist (NBA) is very dumb remote console for NetBIOS-based
LANs. It was tested with Artisoft Lantastic (versions 4.0 and 4.1) and
Microsoft Lan Manager. Probably, it will work with almost any NetBIOS
network. It lacks pretty appearance and fancy features, but it works!
You should have the following files in this archive:
README - Very brief documentation notes for NBA.
NBARES.COM - Resident part of NBA.
NBA.COM - Helper part of NBA.
NBA.HIS - Modification history
DONTREAD.ME - Just do what it says - ignore it.
Remember, NBA is not free! Look at the description of NBA REGISTER
command for the exact terms you could use it upon. Although it was
extensively tested, it is only version 1.02 and should contain a lot of
various bugs. (A lot was reported in version 1.01, at least) So, I will
not accept any responsibility for any damage (direct of consequential)
resulted from use of this program. Use it on your own risk.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
I wish to thank the following people (aka registered users
of NBA 😉 for the kind support of my humble work. This version
of NBA had a chance to appear only thanks to their contribution.
Andrey Vokhmianin (Novosibirsk, Russia)
Mikel Lavrentyev (Moscow, Russia)
Donald Gallagher (Somewhere on Usenet 😉
I wish to specially thank Detlef Schwenke, who had spent a
lot of his time in order to make this program able to live with
Microsoft Lan Manager.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Command: 'NBARES.COM [+][-# ][ -s] local_name [password]' loads
resident part of NBA with NetBIOS name 'local_name' on adapter number #
(assuming zero if none specified). Usually, default adapter number will be
Ok for most workstations. NBARES should be installed on each machine on
network you may wish to assist to. If there is more then one NetBIOS
adapter installed on machine, you will need to load separate copy of NBARES
for each adapter (specifying unique adapter number for each copy of
Although you can use anything you like as local name for NBARES, you should
keep in mind that all NetBIOS clients on network should have unique names.
Therefore, name you specify on NBARES command line should be different from
all names defined on network, including workstation names. To keep things
simple, you could like to give uppercase name to workstation's network
redirector and it's lowercase version to NBARES. Such approach works fine for
me. Note though what some implementations of NetBIOS could convert lowercase
names specified on command line into upper case, thus potentially causing
Optional password specified on command line gives you ability to protect
sensitive stations from unauthorized eavesdropping. You will need to
specify password each time you access such station (i.e. spy on it with
NBA or reboot it). -s (silent) command line option could help you to
enhance a bit this rather rudimentary security mechanism. This option will
prevent station from showing up in list of assistable stations generated by
NBARES is a stealthy program (you don't wish to advertise your ability
to spy on workstations, right?) and will not print any messages at all if
Resident part of NBARES usually occupies 3.6 Kbytes, but if you are
running MS DOS 5.0 and dos is loaded high (i.e., dos=high specified in
config.sys), you can use '+' as the very first symbol of NBARES command
line. It will instruct NBARES to load partially into High Memory Area (or
HMA, first 64K of extended memory), thus occupying only 1.2K of conventional
NBARES could occupy much more then it's usual 3.6K if loaded within first
64Kbytes of conventional memory on 286 (or better) CPU. This could happen
only if you are either running DOS 5.0 (and can, therefore, load NBARES in
HMA) or you are using upper memory manager (and can load NBARES high), so it
should not be a big problem anyway. Although I attempted to check HMA logic
in NBARES extensively, running code from HMA is yet an advanced programming
technique, which can conflict with some older programs. Therefore, if you
experience 'magic' troubles running NBARES in HMA, try load it into
conventional dos memory.
NBARES could sometimes issue error message 'Remote keyboard will not
function properly - please upgrade BIOS' during installation. This ordinary
happens on PC with very old (pre-11/15/85) BIOSes. If you are stuck with
such PC and can't upgrade BIOS either, you can try to install keyboard cache
capable of simulating more contemporary set of keyboard functions. HyperKey
from HyperWare will do it for you. Probably, so will do many others.
If you need to remove NBARES from memory, use 'nba remove' command,
described later in this file. Do not use T&SR management utilities to
remover NBARES from memory - they don't know how to cope with NetBIOS
programs and will crush your system.
You will not be able to send keys to workstations running Windows,
because Windows bypasses BIOS keyboard interface used by NBARES. You still
will be able to spy on Windows screen, but if more then one virtual machine
is active in Enhanced mode (i.e., you had opened at least one DOS window),
most probably you will see mixture of screens belonging to different virtual
General syntax of NBA command is: 'NBA [-adapter] command [parameters]'.
You will need to specify adapter number only you wish to use NBA on adapter
other then zero. Note what adapter number is a local property of workstation
you are running NBA upon. For example, if you had installed NBARES on remote
station's adapter 1 and your local NetBIOS adapter is configured for adapter
number zero, you will need to start NBA on adapter 0, not 1! If you have more
then one NetBIOS adapter installed, NBA will work on one adapter at a time.
You can type names of commands as an arbitrary mix of upper- and lower-case
Now let's look more closely at NBA commands.
? or LIST
This command will list names of stations on which NBARES was installed.
Note what this command could miss some stations, because it uses 'datagram'
feature of NetBIOS to implement scanning for station names, and it does not
guarantee delivery of messages to addressee. Even if station does not
appear in ? output, but you do know it's name you still can assist to it.
If you have relatively large network (more then 10 nodes), this command
could take more then a minute to complete.
[ASSIST] RemoteName [-p] [-s]
Assist to station 'RemoteName'. Because this command is probably the
most often used one, you can omit 'ASSIST' verb from command line if remote
station name does not conflict with one of NBA commands.
Your keystrokes (no mouse, sorry) will be sent over LAN to station you
had specified, while remote screen will be copied onto local one. You can
in turn start NBA on that station to assist someone else, but if you will
attempt to 'loop' back to your station (a bit meaningless occupation, isn't
it?), connection will be immediately broken.
To terminate assist session, you will need to press Alt-[Gray Del] (or
Shift-Alt-[-], if you don't have 101-key board). If you will need to pass
this keystroke to remote (e.g., to terminate copy of NBA running on other
station), you must 'quote' it by pressing Alt-[Gray Ins] (or Shift-Alt-[=]
on 84-key boards). To send Alt-[Gray Ins] code to remote, just press it
twice. NBA will not be able to send keystrokes to programs which interact
with hardware directly, bypassing BIOS keyboard interface. Most games and
Microsoft Windows are an example.
Note that remote keyboard on remote station will still function properly.
Most probably, person working on remote will not understand what he was
spied upon unless you will make it obvious by typing on his/her keyboard.
This could make NBA dangerous if you are processing sensitive information on
some of your workstations. Obviously, you should refrain from installing
NBARES on such stations.
NBA will recognize all standard CGA, MDA, MCGA, EGA and VGA text and
graphics video modes, plus some non-standard text mode dimensions, but will
it be able to mirror them over LAN or not will depend on configuration of
both remote and local station. In general, NBA will always perform at the
'least common denominator' level.
It will be able to display text data (video modes 0,1,2,3,7) on any
combination of video cards/monitors (but it could be forced to clip image if
it will not fit on local screen). All CGA (4,5,6) and MCGA (11h, 13h) video
modes will cause no problems if your hardware support them, but complete
transmission of EGA/VGA video modes (dh, eh, 10h, 12h) require VGA (some
EGAs, e.g., Genoa, will do, too) on remote end. With EGA adapter installed
in remote, NBA will be forced to display screen white-on-black, so as not to
interfere with remote programs. If NBA detects video mode which it can't
translate, it clears local screen and displays message: 'Unsupported video
mode XXh on remote'. Keyboard will still function normally.
By default, if VGA adapters are installed on both local and remote
machines, NBA will transmit VGA palette as well as picture itself. On some
VGA cards, this could cause significant display interference, so you could
disable palette passing by specifying -p on command line.
As a rule, NBA will update screen twice a second. If you are typing on
keyboard, it will attempt to update screen after each keystroke sent to
remote. If throughput of your network hardware does not permit such fast
updates, NBA could act much slower. For example, transmitting entire screen
in video mode 12h (640x480, 16 colors) via arcnet requires 3 to 10 seconds,
depending on load of network and remote station.
In order to reduce network load a bit in graphic modes, by default nba
will attempt to transmit only changed parts of graphics images. Usually,
this will make updates much faster, but if you have spectacularly fast
network with very slow video card, you can disable these smart transmissions
by specifying -s command line option.
Under very heavy network load, NBA could sometimes terminate assist
sessions with various error messages. In such a case, you have no choice
but to start NBA afresh.
NBA memory requirements could vary significantly in assist mode. 64K
bytes should be sufficient to display any text mode, but up to 256K could be
necessary for high-resolution graphics.
NBA will try to initiate cold reboot procedure on remote station. It
will attempt first to cause CPU reset and, if that fails, will jump directly
to POST. This procedure ignores possible presence of disk caching software
or incomplete state of file operations on remote and thus can cause damage
of data. Therefore, you should make sure that reboot could be accomplished
safely by termination all active applications and flushing disk caches on
remote prior to using this command. If NBA standard reboot procedure fails,
you still could sometimes reboot workstation using 'exec' command.
NBA is not free software! If you are continuing to use it after two weeks
evaluation period, you will need to register it. I will not be able to
provide any technical support at all to unregistered users. (And can't
guarantee it to registered ones. But I'll try.) Registration fee depends upon
number of nodes on which NBARES was installed. Different rates are applied to
inhabitants of Russia and all others. These rates could change in the future
in order to reflect inflation.
Number of nodes Russia (*) Outside
using NBARES of Russia
2- 3 free (@) free (@)
4- 10 100 rbls 10 US$
11- 25 200 rbls 20 US$
26 and above call (#) call (#)
(*) Inhabitants of any other country that accepts russian currency
without limitations also could apply for rubles license.
(@) Gift of 50 rubles or 5 US$ will be appreciated.
(#) I do not expect to get such requests anyway 😉
In order to register, you will need to contact me by one of the addresses
you can find at the end of this document and state number of nodes you need
and name (up to 55 characters) to which NBA should be registered. In return
message, you will receive registration key and address you should send money
to. I trust you!
If you don't mind (please say so in your message), I could ask you to do
me a favor by subscribing me to this or that magazine or finding book I
could need, provided that it will not cost you more then your registration
fee is. Considering my current whereabouts, you should not find such
NBA uses secret-key Rivest-Shamir-Adleman (RSA) encryption with 508 bits
key to protect it's registration string. RSA implementation it uses is
based upon PGP 1.0 source code, which is (c) 1990 by Philip Zimmermann. I
wish to express my gratitude to him for the kind permission to use it.
NBA also checks integrity of some parts of it's code and data at run
time, refusing to work if tampered with. Of course, it is possible to hack
it, but does it worth guilty conscience? Note what you can circumvent
'license agreement violated' message (which will appear if you have more
then 3 stations with nbares installed on network) by starting nbares in
silent mode. Still, it will not make you a rightful owner...
You can specify most commonly used NBA options with NBA_SWITCHES
environment variable. Value, assigned to it, should be in the following
[options] [$] [options]
Actual command line passed to nba will be inserted at the place of dollar
sign (at the end of string, if $ is not present), and the resulted string
will be considered to be NBA command. Thus, saying
SET NBA_SWITCHES=-1 $ -P
is equivalent to
NBA -1 SERVER -P,
but will save you a few keystrokes if nba_switches variable was set in
Most probably, you will never need four remaining NBA commands. Still,
for the sake of completeness, they are here.
PEEK RemoteName file address length
NBA will copy contents of (part of) remote machine RAM to the local file.
You can specify address either as segment:offset pair or hexadecimal linear
address. Length should be specified in hex, too and can exceed 64K. This
command will not be able to peek content of extended or expanded memory, but
you do can to get any content of any memory location addressable in real
mode (including HMA, if NBARES was started with '+' modifier). E.g.,
command 'peek allram 0 10FFF0' will copy _all_ conventional memory of remote
machine, creating file 1114096 bytes in size.
Note what NBA transmits memory in relatively small chunks, so as not to
interfere with normal operations of remote station. Therefore, parts of
resulting file will correspond to different moments of remote machine
operation and so could be in inconsistent state.
POKE RemoteName file address
This is essentially a reverse of previous command. It will copy content
of local file into (specified location of) RAM on remote workstation. You
should be _very_ careful with poke command - improper modification of remote
machine RAM most probably will cause system crash and loss of data.
Note that NBA transmits memory in small chunk when performing poke
command (even smaller then with peek command) and any amount of time can
pass between filling two consecutive bytes in memory. You can't expect what
data will be passed as a whole!
EXEC RemoteName file [return_file]
This command will copy contents of small (up to 134 bytes now, but this
could change in future releases) file to remote machine and then pass
control to program contained in it. Program should be self-based (it could
be loaded at any offset at all) and should return with retf command. It
could modify all CPU registers except stack pointer (SS:SP). If you will
specify second file name to this command, content of program memory at the
end of execution will be copied to this file.
This command will remove nbares on machine 'RemoteName', if it is
possible. If you had loaded nbares high with upper memory management
utility (such as Quarterdeck's loadhi), nba will not be able to remove it.
Also, if you had loaded nbares in HMA (command switch +), HMA space
previously occupied by it will NOT be returned to use.
HOW TO CONTACT ME
You can contact me by e-mail as:
FIDO: 2:5000/19 (FIDO netmail from zones others than 2
most probably will not reach me!)
Internet: [email protected]
(if that fails with 'domain unknown'
error message, try [email protected]
I will gratefully accept all notes and suggestions concerning NBA, but
can't guarantee to answer you. Still, I promise at least to confirm
reception of requests from registered users even if I can't produce complete
answer at the time being. So, if you had not received answer say, in two
weeks, you can safely assume that your message (or my answer) got lost in
transit. This November, I will be in process of changing my location, so
don't grow alarmed if you are not answered promptly!
Novosibirsk, Russia October 3, 1992