скачать рефераты
  RSS    

Меню

Быстрый поиск

скачать рефераты

скачать рефератыРеферат: Интранет сети

      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, 4, 5, 6, 7


Новости

Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

  скачать рефераты              скачать рефераты

Новости

скачать рефераты

Обратная связь

Поиск
Обратная связь
Реклама и размещение статей на сайте
© 2010.