Интранет сети
;
; var
; FileHandle,HiByteOffset,LoByteOffset,ErrCode,
; HiWordLen,LoWordLen : integer;
; ErrCode := PRLH_Rel(FileHandle,HiByteOffset,LoByteOffset,HiWordLen,
; LoWordLen:integer);
;
begin PRLH_Clr
push bp
mov bp,sp
push ds
lds si,[bp+x+16] ; FileHandle
mov bx,[si]
lds si,[bp+x+12] ; ByteOffset
mov cx,[si]
lds si,[bp+x+8]
mov dx,[si]
lds si,[bp+x+4] ; HiWordLen
mov si,[si]
lds di,[bp+x] ; LoWordLen
mov di,[di]
mov ah,0BEH
int 21H
mov ah,0
pop ds
pop bp
ret 22
PRLH_Clr endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Physical Record Lock: Log Rec FCB BFH
;
; var
; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;
; HiLockLen,LoLockLen,Flags,TimeOut : Integer;
;
; ErrCode :=
PRLF_Log(fcb,HiByteOffset,LoByteOffset,HiLockLen,LoLockLen,Flags,TimeOut);
;
begin PRLF_Log
push bp
mov bp,sp
push ds
lds si,[bp+x+24] ; FCB
mov dx,[si]
lds si,[bp+x+20] ; ByteOffset
mov bx,[si]
lds si,[bp+x+16]
mov cx,[si]
lds si,[bp+x+4] ; AL = Log Flags
mov ax,[si]
lds si,[bp+x+8] ; low lock length
mov di,[si]
lds si,[bp+x+12] ; hi lock length
mov si,[si]
mov bp,[bp+x] ; timeout value
mov bp,[bp]
mov ah,0BFH
int 21H
mov ah,0
pop ds
pop bp
ret 28
PRLF_Log endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Physical Record Lock: Rel Rec FCB C0H
;
; var
; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;
;
; ErrCode := PRLF_Rel(fcb,HiByteOffset,LoByteOffset);
;
begin PRLF_Rel
push bp
mov bp,sp
push ds
lds dx,[bp+x+8] ; FCB
lds si,[bp+x+4] ; ByteOffset
mov bx,[si]
lds si,[bp+x]
mov cx,[si]
mov ah,0C0H
int 21H
mov ah,0
pop ds
pop bp
ret 12
PRLF_Rel endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Physical Record Lock: Clr Rec FCB C1H
;
; var
; ErrCode,fcb,HiByteOffset,LoByteOffset : Integer;
;
; ErrCode := PRLF_clr(fcb,HiByteOffset,LoByteOffset);
;
begin PRLF_Clr
push bp
mov bp,sp
push ds
lds dx,[bp+x+8] ; FCB
lds si,[bp+x+4] ; ByteOffset
mov bx,[si]
lds si,[bp+x]
mov cx,[si]
mov ah,0C0H
int 21H
mov ah,0
pop ds
pop bp
ret 12
PRLF_Clr endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Lock Record Set C2H
;
; var
; ErrCode, Flags, TimeOut : Integer;
;
; ErrCode := PRLS_Lck(Flags,TimeOut);
;
begin PRLS_Lck
push bp
mov bp,sp
push ds
lds si,[bp+x+4] ; AL = Lock flag bits
mov ax,[si]
lds si,[bp+x] ; TimeOut Value
mov bp,[si]
mov ah,0C2h
int 21h
mov ah,0
pop ds
pop bp
ret 10
PRLS_Lck endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Release Record Set C3H
;
; var
; ErrCode : Integer;
;
; ErrCode := PRLS_Rel;
;
begin PRLS_Rel
mov ah,0C3h
int 21h
mov ah,0
ret
PRLS_Rel endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Clear Record Set C4H
;
; var
; ErrCode : Integer;
;
; errcode := PRLS_Clr;
;
begin PRLS_Clr
mov ah,0C4h
int 21h
mov ah,0
ret
PRLS_Clr endp
;--------------------------------
; Semaphores func(197) (C5H) subfunction 00h
;
; var
; RetCode,SemaValu,HiHandle,LoHandle,OpenCnt : Integer;
; Sema4 : String[n];
;
; RetCode := OpenSem(Sema4,SemaValu,HiHandle,LoHandle,OpenCnt);
;
begin OpenSem
push bp
mov bp,sp
push ds
lds dx,[bp+x+16] ; ptr to Semaphore string
; inc dx ; add 1 to get the address of the string
lds si,[bp+x+12] ; set semaphore value
mov cx,[si]
mov ax,0C500h ; set the function
int 21h
mov bh,00h
lds di,[bp+x] ; return the open count
mov [di],bx
lds di,[bp+x+4] ; return low handle
mov [di],cx
lds di,[bp+x+8] ; return high handle
mov [di],dx
mov ah,00h
pop ds
pop bp
ret 22
OpenSem endp
;--------------------------------
; Semaphores func(197) (C5H) subfunction 01h
;
; var
; RetCode,HiHandle,LoHandle,SemaValu,OpenCnt : Integer;
;
; RetCode := ExamSem(HiHandle,LoHandle,SemaValu,OpenCnt);
;
begin ExamSem
push bp
mov bp,sp
push ds
lds si,[bp+x+12] ; hi handle
mov dx,[si]
lds si,[bp+x+8] ; lo handle
mov cx,[si]
mov ax,0C501h ; set function
int 21h
lds di,[bp+x+4] ; return semaphore value
mov [di],cx
mov dh,00h
lds di,[bp+x]
mov [di],dx ; return open count
mov ah,00h
pop ds
pop bp
ret 16
ExamSem endp
;--------------------------------
; Semaphores func(197) (C5H) subfunction 02h
;
; var
; RetCode,HiHandle,LoHandle,TimeOut : Integer;
;
; RetCode := WaitSem(HiHandle,LoHandle,TimeOut);
;
begin WaitSem
push bp
mov bp,sp
push ds
lds si,[bp+x+8] ; hi handle
mov dx,[si]
lds si,[bp+x+4] ; lo handle
mov cx,[si]
lds si,[bp+x]
mov bp,[si] ; set time out
mov ax,0C502h ; set function
int 21h
mov ah,00h
pop ds
pop bp
ret 12
WaitSem endp
;--------------------------------
; Semaphores func(197) (C5H) subfunction 03h
;
; var
; RetCode,HiHandle,LoHandle : Integer;
;
; RetCode := SigSem(HiHandle,LoHandle);
;
begin SigSem
push bp
mov bp,sp
push ds
lds si,[bp+x+4] ; hi handle
mov dx,[si]
lds si,[bp+x] ; lo handle
mov cx,[si]
mov ax,0C503h ; set function
int 21h
mov ah,00h
pop ds
pop bp
ret 8
SigSem endp
;--------------------------------
; Semaphores func(197) (C5H) subfunction 04h
;
; var
; RetCode,HiHandle,LoHandle : Integer;
;
; RetCode := ClosSem(HiHandle,LoHandle);
;
begin ClosSem
push bp
mov bp,sp
push ds
lds si,[bp+x+4] ; hi handle
mov dx,[si]
lds si,[bp+x] ; lo handle
mov cx,[si]
mov ax,0C504h ; set function
int 21h
mov ah,00h
pop ds
pop bp
ret 8
ClosSem endp
;--------------------------------
; Get or Set Lock Mode func(198) (C6H)
;
; var
; Mode,Func : Integer;
;
; Mode := setlck(Func);
;
begin setlck
push bp
mov bp,sp
push ds
lds si,[bp+x]
mov ax,[si] ; set the subfunction
mov ah,0C6h ; set the function
int 21h
mov ah,0
pop ds
pop bp
ret 4
setlck endp
;--------------------------------
; Transactional Backout func(199) (C7H)
;
; var
; RetCode, Func : Integer;
;
; RetCode := BakOuts(Func);
;
begin BakOuts
push bp
mov bp,sp
push ds
lds si,[bp+x] ; set the subfunction
mov ax,[si]
mov ah,0C7h ; set the function
int 21h
mov ah,0
pop ds
pop bp
ret 4
BakOuts endp
;--------------------------------
; Begin transaction func(200) (C8H)
;
; var
; RetCode,Mode : Integer;
;
; RetCode := btrans(Mode);
;
begin btrans
mov ah,0C8h
call arg1t
ret 4
btrans endp
;--------------------------------
; End Transaction func(201) (C9H)
;
; var
; RetCode : Integer;
;
; RetCode := etrans;
;
begin etrans
mov ah,0C9H
int 021h
mov ah,00h
ret
etrans endp
;--------------------------------
; Exc.log File (202) (CA)
;
; var
; RetCode, FcbAddr : Integer;
;
; RetCode := exclog(FcbAddr);
;
begin exclog
mov ah,0CAH
call arg1f
ret 4
exclog endp
;--------------------------------
; Exc Lock Set func(203) (CBH)
;
; var
; RetCode, Mode : Integer;
;
; RetCode := exclcks(Mode);
;
begin exclcks
mov ah,0CBH
call arg1
ret 4
exclcks endp
;--------------------------------
; Exclusive file unlock (204) (CC)
;
; var
; RetCode, FcbAddr : Integer;
;
; RetCode := exculkf(FcbAddr);
;
begin exculkf
mov ah,0CCH
call arg1f
ret 4
exculkf endp
;--------------------------------
; Exclusive Unlock Set (205)(CD)
;
; var
; RetCode : Integer;
;
; RetCode := exculks;
;
begin exculks
mov ah,0CDH
int 21h
mov ah,00h
ret
exculks endp
;--------------------------------
; Exc Clear file func(206) (CEH)
;
; var
; RetCode, FcbAddr : Integer;
;
; RetCode := excclrf(FcbAddr);
;
begin excclrf
mov ah,0CEH
call arg1f
ret 4
excclrf endp
;--------------------------------
; Exc Clear Set func(207) (CFH)
;
; var
; RetCode : Integer;
;
; RetCode := excclrs;
;
begin excclrs
mov ah,0CFH
int 21h
mov ah,00h
ret
excclrs endp
;--------------------------------
; Log Record(s) func(208) (D0H)
;
; var
; RetCode, Flag, Timeout : Integer ;
; RecStr : String[n];
;
; RetCode := reclog(RecStr,Flag,Timeout);
;
begin reclog
push bp
mov bp,sp
push ds
lds si,[bp+x+4] ; load flags
mov ax,[si]
lds si,[bp+x] ; get timeout
mov si,[si]
lds dx,[bp+x+8] ; get ptr to string
; inc dx
mov bp,si ; move timeout to BP
mov ah,0D0h
int 21h
mov ah,0
pop ds
pop bp
ret 14
reclog endp
;--------------------------------
; Record Lock func(209) (D1H)
;
; var
; RetCode, Mode : Integer;
;
; RetCode := reclck(Mode);
;
begin reclck
push bp
mov bp,sp
push ds
lds si,[bp+x]
mov bp,[si]
mov ah,0D1h
int 21h
mov ah,0
pop ds
pop bp
ret 6
reclck endp
;--------------------------------
; Record Unlock func(210) (D2H)
;
; var
; RetCode : Integer;
; Semaphore : String[n];
;
; RetCode := reculk(Semaphore);
;
begin reculk
mov ah,0D2H
call arg1a
ret 4
reculk endp
;--------------------------------
; Unlock Record Set func(211) (D3H)
;
; var
; RetCode : Integer;
;
; RetCode := reculks;
;
begin reculks
mov ah,0D3H
int 21h
mov ah,00h
ret
reculks endp
;--------------------------------
; Record Clear func(212) (D4H)
;
; var
; RetCode : Integer;
; Semaphore : String[n];
;
; RetCode := recclr(Semaphore);
;
begin recclr
mov ah,0D4H
call arg1a
ret 4
recclr endp
;--------------------------------
; Clear record set func(213) (D5H)
;
; var
; RetCode : Integer;
;
; RetCode := recclrs;
;
begin recclrs
mov ah,0D5H
int 21h
mov ah,00h
ret 4
recclrs endp
;--------------------------------
; End of Job func(214) (D6H)
;
; var
; RetCode : Integer;
;
; RetCode := eoj;
;
begin eoj
mov ah,0D6H
int 21h
mov ah,00h
ret 4
eoj endp
;--------------------------------
; Logout System func(215) (D7H)
;
; var
; RetCode : Integer;
;
; RetCode := sysout;
;
begin sysout
mov ah,0D7H
int 21h
mov ah,00h
ret 4
sysout endp
;--------------------------------
; Vol Statistics func(218) (DAH)
;
; var
; RetCode,volume : Integer;
; reply : String[n];
;
; RetCode := volstat(volume, reply);
begin volstat
mov ah,0DAh
push bp
mov bp,sp
push ds
push es
lds si,[bp+x+4] ; addr for the volume number
mov dx,[si] ; get the volume number
les di,[bp+x] ; ptr to reply buffer
inc di ; add 1 to get the address of the string
int 21h
mov ah,00h
pop es
pop ds
pop bp
ret 8
volstat endp
;--------------------------------
; Local Disks func(219) (DBH)
;
; var
; NumDisks : Integer;
;
; NumDisks := locdrv;
;
begin locdrv
mov ah,0DBH
int 21h
mov ah,00h
ret
locdrv endp
;--------------------------------
; WorkStation ID func(220) (DCH)
;
; note: This routine returns the station number as an integer.
; It can also be returned in ASCII with this call.
;
; var
; StationNum : Integer;
;
; StationNum := wsid;
;
begin wsid
mov ah,0DCH
int 21h
mov ah,00h
ret
wsid endp
;--------------------------------
; Set Error mode func(221) (DDH)
;
; var
; mode : Integer;
;
; errmode(mode);
;
begin errmode
mov ah,0DDH
call arg1
ret 4
errmode endp
;--------------------------------
; Broadcast Mode func(222) (DEH)
;
; var
; mode : Integer;
;
; bcsmode(mode);
;
begin bcsmode
mov ah,0DEH
call arg1
ret 4
bcsmode endp
;--------------------------------
; Modify LST Device func(223) (DFH)
;
; var
; RetCode, Mode : Integer;
;
; RetCode := ctlspl(Mode);
;
begin ctlspl
mov ah,0DFh
call arg1
ret 4
ctlspl endp
;--------------------------------
; Spool Request func(224) (E0H)
;
; var
; ErrCode : Integer;
; RequestBlock, Reply : String[n];
;
; ErrCode := splreq(RequestBlock, Reply);
;
begin splreq
mov ah,0E0h
call req_rep
ret 8
splreq endp
;--------------------------------
; Pipe Request func(225) (E1H)
;
; var
; ErrCode : Integer;
; RequestBlock, Reply : String[n];
;
; ErrCode := pipreq(RequestBlock, Reply);
;
begin pipreq
mov ah,0E1h
call req_rep
ret 8
pipreq endp
;--------------------------------
; Directory Path func(226) (E2H)
;
; var
; ErrCode : Integer;
; RequestBlock, Reply : String[n];
;
; ErrCode := dpath(RequestBlock, Reply);
;
begin dpath
mov ah,0E2h
call req_rep
ret 8
dpath endp
;--------------------------------
; Login system func(227) (E3H)
;
; var
; ErrCode : Integer;
; RequestBlock, Reply : String[n];
;
; ErrCode := syslog(RequestBlock, Reply);
;
begin syslog
mov ah,0E3h
call req_rep
ret 8
syslog endp
;--------------------------------
; Set File Attribute func(228) (E4H)
;
; var
; RetCode, FcbAddr, Attribute : Integer;
;
; RetCode := fattr(FcbAddr, Attribute);
;
begin fattr
push bp
mov bp,sp
push ds
lds si,[bp+x]
mov cx,[si] ; cx = attribute
lds dx,[bp+x+4] ; dx = address of fcb
mov ah,0E4h
int 21h
mov ah,0
pop ds
pop bp
ret
fattr endp
;--------------------------------
; Update file size func(229) (E5H)
;
; var
; ErrCode,FcbAddr : Integer;
;
; ErrCode := updfcb(FcbAddr);
;
begin updfcb
mov ah,0E5H
call arg1f
ret 4
updfcb endp
;--------------------------------
; Copy File to File func(230) (E6H)
;
; var
; RetCode,FcbSource,FcbDest : Integer;
; CountLow, CountHigh : Integer;
;
; RetCode := cpyfile(FcbSource, FcbDest, CountLow, CountHigh)
;
;
begin cpyfile
mov ah,0E6h
push bp
mov bp,sp
push ds
push es
lds si,[bp+x] ; addr of the high byte cnt
mov dx,[si] ; dx=high word of byte cnt
lds si,[bp+x+4] ; addr low word of byte cnt
mov cx,[si] ; cx=low 16 bits of count
les di,[bp+x+8] ; address of dest fcb
lds si,[bp+x+12] ; address of the source fcb
int 21h
mov ah,0
pop es
pop ds
pop bp
ret 16
cpyfile endp
;--------------------------------
; get time / date string func(231) (E7H)
;
; var
; time : String[n];
;
; nettod(time);
;
; where time is a string of the form Y M D H M S
;
begin nettod
mov ah,0E7h
call arg1a
ret 4
nettod endp
;--------------------------------
; Set Close mode func(232) (E8H)
;
; var
; mode : Integer;
;
; clsmode(mode);
;
begin clsmode
mov ah,0E8H
call arg1wor
ret 4
clsmode endp
;--------------------------------
; Shell Base Status func(233) (E9H)
;
; var
; RetFlags, drive : Integer;
;
; RetFlags := drvmap(drive);
;
begin drvmap
mov ax,0E900h
call arg1
ret 4
drvmap endp
;--------------------------------
; Return Shell Version func(234) (EAH)
;
; var
; RetCode, Mode : Integer;
; EnvirStr : String[n];
;
; RetCode := retshl(EnvirStr, Mode);
;
begin retshl
push bp
mov bp,sp
push ds
push es
les di,[bp+x+4] ; set es:di to point at the buffer
inc di ; point di at the start of the data area
lds si,[bp+x] ; put the mode into al
mov ax,[si]
mov ah,0EAh
int 21h
mov ah,00h
pop es
pop ds
pop bp
ret 8
retshl endp
;--------------------------------
; ascii log File (235) (EB)
;
; var
; RetCode, Flags, TimeOut : Integer;
; Asciiz : String[n];
;
; RetCode := asclog(Flags, TimeOut, Asciiz);
;
begin asclog
push bp
mov bp,sp
push ds
lds si,[bp+x+8]
mov ax,[si] ; flags into al
lds dx,[bp+x] ; pointer to the asciiz string
lds si,[bp+x+4]
mov bp,[si] ; time out into bp
mov ah,0EBH
int 21h
mov ah,00h
pop ds
pop bp
ret 12
asclog endp
;--------------------------------
; ASCIIZ file unlock (236) (EC)
;
; var
; RetCode : Integer;
; Asciiz : String[n];
;
; RetCode := asculkf(Asciiz);
;
begin asculkf
mov ah,0ECH
call arg1a
ret 4
asculkf endp
;--------------------------------
; ASCIIZ Clear file func(237) (EDH)
;
; var
; RetCode : Integer;
; Asciiz : String[n];
;
; RetCode := ascclrf(Asciiz);
;
begin ascclrf
mov ah,0EDH
call arg1a
ret 4
ascclrf endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Get Physical Station Number EEH
;
; var
; StationNo : Integer;
;
; StationNo := Get_PSN;
;
begin Get_PSN
mov ah,0EEh
int 21h
mov ah,0
ret
Get_PSN endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Get Shell Table Addresses (239) EFH
;
; var
; Mode,Segment,Offset : Integer;
;
; Get_STA(Mode,Segment,Offset);
;
begin Get_STA
push bp
mov bp,sp
push es
push ds
mov si,[bp+x+8] ; get the mode
mov ax,[si]
mov ah,0EFh ; set the function
int 21h
lds di,[bp+x+4] ; store the segment location
mov [di],es
lds di,[bp+x] ; store the offset location
mov [di],si
pop ds
pop es
pop bp
ret 12
Get_STA endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Set Preferred File Server (240) F0H
;
; var
; RetServer, Mode, NewServ : Integer;
;
; RetServer := SetServ(Mode,NewServ);
;
begin SetServ
push bp
mov bp,sp
push ds
mov si,[bp+x+4] ; get the mode
mov ax,[si]
mov di,[bp+x] ; set the preferred server number
mov dx,[di]
mov ah,0F0h ; set the function
int 21h
mov ah,0
pop ds
pop bp
ret 6
SetServ endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; Attach/Detach To File Server (241) F1H
;
; var
; RetCode, Mode, NewServ : Integer;
;
; RetCode := ModServ(Mode,NewServ);
;
begin ModServ
push bp
mov bp,sp
push ds
lds si,[bp+x+4] ; get the mode
mov ax,[si]
lds di,[bp+x] ; set the preferred server number
mov dx,[di]
mov ah,0F1h ; set the function
int 21h
mov ah,0
pop ds
pop bp
ret 6
ModServ endp
;-------------------------------
; Place a single integer argument into dx
; with a return code
arg1 proc near
push bp
mov bp,sp
push ds
lds si,[bp+x+2]
mov dx,[si] ; dx gets the argument
int 21h
mov ah,0 ; clear ah for al return code
pop ds
pop bp
ret
arg1 endp
;--------------------------------
; Place a single integer argument into bp
; for use with time outs - with a return code
arg1t proc near
push bp
mov bp,sp
push ds
lds si,[bp+x+2]
mov bp,[si] ; dx gets the argument
int 21h
mov ah,0 ; clear ah for al return code
pop ds
pop bp
ret
arg1t endp
;--------------------------------
; Process an fcb address in a
; function call with a return code
arg1f proc near
push bp
mov bp,sp
push ds
lds dx,[bp+x+2] ; dx gets the argument
int 21h
mov ah,0 ; clear ah for al return code
pop ds
pop bp
ret
arg1f endp
;--------------------------------
; Process a single string argument in a
; function call with a return code
arg1a proc near
push bp
mov bp,sp
push ds
lds dx,[bp+x+2] ; ptr to parameter string
; inc dx ; add 1 to get the address of the string
int 21h
mov ah,0 ; clear ah for al return code
pop ds
pop bp
ret
arg1a endp
;----------------------------
; Perform a single integer argument
; but without a return code
arg1wor proc near
push bp
mov bp,sp
push ds
lds si,[bp+x+2]
mov dx,[si] ; dx gets the arg (or ptr)
int 21h
pop ds
pop bp
ret
arg1wor endp
;----------------------------
; Perform a single string argument
; but without a return code
arg1awor proc near
push bp
mov bp,sp
push ds
lds dx,[bp+x+2]
inc dx ; add 1 to get the start of the string
int 21h
pop ds
pop bp
ret
arg1awor endp
;----------------------------
; Handle a request$ and reply$ function
; with error code
req_rep proc near
push bp
mov bp,sp
push ds
push es
lds si,[bp+x+6] ; ptr to req. string
inc si ; add 1 to get the address of the string
les di,[bp+x+2] ; ptr to var desc block for reply buf
inc di ; add 1 to get the address of the string
pushf ; save the direction flag
int 21h
popf
mov ah,0
pop es
pop ds
pop bp
ret
req_rep endp
cseg ends
end
6. В И Р У С Ы И N E T W A R E
При работе сети NetWare фирмы Novell для совместного использо-
вания сетевого дискового пространства используется "прозрачный ре-
жим". Пользователь за комьютером видит сетевые диски в виде допол-
нительных винчестеров (F: G: ...). Особенностью этих винчестеров
является то, что для них поддерживаются все операции над файлами и
не поддерживаются операции пямого доступа к секторам диска. Драй-
вера устойств для этих дополнительных букв не существуют и все
операции над ними иммитируются путем перехвата различных прерыва-
ний.
Проблема поведения вирусов на сетевых дисков сразу же распада-
ется на две в зависимости от ответа на вопрос: выполняется ли ви-
рус на машине управляющей сетью (и содержащей сетевые диски) или
нет.
Если вирус выполняется на управляющей машине, то он имеет дост-
уп в MBR, BOOT и к секторам диска. Пока нет подтвержденной инфор-
мации о существовании вирусов знакомых со структурой диска
NetWare. Попытка "не грамотного" вируса записаться на диск NetWare
и в MBR скорее всего окончится плачевно. И не сколько для вируса,
сколько для NetWare. Поэтому для защиты от BOOT-вирусов рекоменду-
ется сохранять 0-ю дорожку. На этой дорожке содержется не только
MBR, но и начало раздела NetWare. Восстановление 0-й дорожки из
копии не всегда, наверное, возможно, но в ряде случаев это помога-
ет. В случае неуспеха еще остается тонкий анализ содержимого ста-
рой и поврежденной 0-й дорожки. Если такой анализ удастся провес-
ти, то возможно ручное восстановление потеянной информации.
Если на управляющей машине вместе с сетью работает DOS, то воз-
можно нарушение работы NetWare в памяти и, как следствие, разнооб-
разные курьезы. Поэтому к чистоте от вирусов управляющей машины
локальной сети следует относится особенно серьезно.
Если вирус выполняется на другой машине, то он не имеет физи-
ческого доступа к диску. Разговор в этом случае может идти только
о файловых вирусах. При этом нужно учесть, что пользователь сети
обычно не имеет доступа на запись ко всем файлам (особенно систем-
ным). Возможность превысить права доступа практически не возможна.
Покрайней мере пока в системе защиты нет явных проколов админист-
ратора сети и не известны "люки" в защите NetWare.
Поведение вирусов в NetWare распадается на три группы: - те кто
успешно функционирует в сети; - те кто заражает файлы на локальных
дисках, но отказывается заpажать файлы в сети (среди них есть та-
кие которые самоочищаются при копировании в сеть зараженного файла
при активном вирусе); - и те кто теряет работоспособность при ак-
тивной сети.
Распределение вирусов по этим группам можно обьяснить следующи-
ми обстаятельствами. В первую группу попадают наиболее примитивные
файловые вирусы котоые законно используют функции DOS для своих
целей. Такие фирусы довольно легко отлавливаются различными сторо-
жевыми средствами. Во вторую группу попадают вирусы которые пыта-
ются бороться с антивирусными средствами. Сеть при этом они также
обходят и поэтому работа с сетью для них не видна. В эту группу
попадает наверное большинство "СТЕЛС"-вирусов. Третью группу сост-
авляют неудачно написанные вирусы из второй группы. Они перестают
работать из-за конфликтов с оболочкой NetWare.
Список литературы.
1. Aнгло-русский словарь терминов NetWare. (13 cтр.)
Чусов В.Е.
2. Англо-русский глоссарий терминов NetWare. (66 стр.)
Чусов В.Е.
3. Введение в локальные вычислительные сети. (45 стр.)
Груздев А.Ю.
4. Texничecкиe cpeдcтвa лoкaльныx ceтeй. (27 стр.)
Гaвpилoв A.B.
5. Введение в сетевые операционные системы NetWare
фирмы Novell. (55 стр.) Груздев А.Ю.
6. Концепции построения и основные особенности системы
NetWare 386. (49 стр.) Груздев А.Ю.
7. Установка NetWare 386. (86 стр.) Гордеев В.В.
8. Установка рабочей станции DOS ODI в сети NetWare 386.
(26 стр.) Гордеев В.В.
9. Cтpyктypa кaтaлoгa, cтpyктypa пoльзoвaтeлeй и cиcтeмa
зaщиты ceти NetWare (62 cтp.) Чycoв B.E.
10. Интерфейс пользователя с системой.
Утилиты меню и утилиты командной строки NetWare 386.
(152 стр.) Шабалин А.Р.
11. Печать в сетевой операционной системе NetWare 386.
(83 стр.) Милентьев А.Д
12. Оперативное управление работой сетевой ОС NetWare 386.
(51 стр.) Поваров А.В.
13. Средства построения гетерогенных комплексов
фирмы Novell. (42 стр.) Коровкин С.Д.
14. Коммуникационные средства фирмы Novell.
(47 стр.) Коровкин С.Д.
15. Проектирование, создание и использование баз данных,
реализованных с применением продуктов фирмы Novell.
(79 стр.) Зимин В.В.
16. Практическое сравнение различных средств управления
данными в среде сетевой ОС NetWare фирмы Novell.
(41 стр.) Зимин В.В.
17. Использование FoxBase+ и Clipper в локальной сети.
(17 стр.) Нестеренко Ю.П.
18. Барри Нанс, Программирование в локальных сетях
Страницы: 1, 2, 3
|