home *** CD-ROM | disk | FTP | other *** search
/ Reverse Code Engineering RCE CD +sandman 2000 / ReverseCodeEngineeringRceCdsandman2000.iso / RCE / Quantico / km / cftp20fk.asm.txt < prev    next >
Encoding:
Text File  |  2000-05-25  |  21.6 KB  |  586 lines

  1. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  2.  
  3. ; CUTE FTP KEY FILE GENERATOR v1.01  97-10-11  JAMMER / UCF
  4.  
  5. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  6.  
  7. ; Version 2.0 FINAL - Totally new key for v2.0
  8.  
  9. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  10.  
  11. ; Tested on CFTP v2.0
  12.  
  13. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  14.  
  15. ;
  16.  
  17. ; BPX #0137:0043D5BF (cutftp32)
  18.  
  19. ;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
  20.  
  21.  
  22.  
  23. .model Tiny,STDcall
  24.  
  25. .code
  26.  
  27. .386
  28.  
  29. .radix 16
  30.  
  31. org     100h
  32.  
  33.  
  34.  
  35. TableInit       equ 019fh
  36.  
  37.  
  38.  
  39. Start:
  40.  
  41.                 push    offset Info
  42.  
  43.                 call    Print
  44.  
  45.  
  46.  
  47.                 push    offset JamFill
  48.  
  49.                 push    offset Keyfile
  50.  
  51.                 push    100
  52.  
  53.                 call    FillBlock
  54.  
  55.  
  56.  
  57.                 push    offset CryptTable
  58.  
  59.                 push    offset Keyfile
  60.  
  61.                 push    20
  62.  
  63.                 call    CopyBlock
  64.  
  65.  
  66.  
  67.                 push    offset NameQ
  68.  
  69.                 call    Print
  70.  
  71.                 push    offset Keyfile+28
  72.  
  73.                 push    70
  74.  
  75.                 call    GetName
  76.  
  77.                 or      ax,ax
  78.  
  79.                 jnz     GotName
  80.  
  81.                 mov     ax,4cffh
  82.  
  83.                 int     21h
  84.  
  85.  
  86.  
  87. GotName:        push    offset Keyfile
  88.  
  89.                 call    CalcCrc
  90.  
  91.                 push    offset Keyfile+20
  92.  
  93.                 push    1c
  94.  
  95.                 call    Encrypt
  96.  
  97.  
  98.  
  99.                 push    dword ptr TableInit
  100.  
  101.                 push    offset CryptTable
  102.  
  103.                 call    MakeCryptTable
  104.  
  105.  
  106.  
  107.                 push    offset Keyfile
  108.  
  109.                 push    4
  110.  
  111.                 call    Encrypt
  112.  
  113.  
  114.  
  115.                 push    offset Filename
  116.  
  117.                 push    offset Keyfile
  118.  
  119.                 push    100
  120.  
  121.                 call    Writefile
  122.  
  123.                 cmp     ax,100
  124.  
  125.                 jz      WriteOk
  126.  
  127.                 push    offset WriteError
  128.  
  129.                 call    print
  130.  
  131.                 mov     ax,4cff
  132.  
  133.                 int     21
  134.  
  135.  
  136.  
  137. WriteOk:        push    offset copyfile
  138.  
  139.                 call    Print
  140.  
  141.                 mov     ax,4c00
  142.  
  143.                 int     21
  144.  
  145.  
  146.  
  147. Print           proc Txt:WORD
  148.  
  149.                 pusha
  150.  
  151.                 mov     si,[TXT]
  152.  
  153. PLoop:          lodsb
  154.  
  155.                 or      al,al
  156.  
  157.                 jz      PExit
  158.  
  159.                 mov     ah,2
  160.  
  161.                 mov     dl,al
  162.  
  163.                 int     21h
  164.  
  165.                 jmp     short PLoop
  166.  
  167. PExit:          popa
  168.  
  169.                 ret
  170.  
  171. Print           endp
  172.  
  173.  
  174.  
  175. WriteFile       proc WriteLen:WORD,Source:WORD,FName:WORD
  176.  
  177.                 LOCAL Result:WORD
  178.  
  179.                 mov     [Result],0
  180.  
  181.                 pusha
  182.  
  183.                 mov     ax,3c01
  184.  
  185.                 xor     cx,cx
  186.  
  187.                 mov     dx,[FName]
  188.  
  189.                 int     21
  190.  
  191.                 jc      WFOut
  192.  
  193.                 mov     bx,ax
  194.  
  195.                 mov     ah,40
  196.  
  197.                 mov     cx,[WriteLen]
  198.  
  199.                 mov     dx,[Source]
  200.  
  201.                 int     21
  202.  
  203.                 jc      WFOut
  204.  
  205.                 mov     [Result],ax
  206.  
  207.                 mov     ah,3e
  208.  
  209.                 int     21
  210.  
  211. WFOut:          popa
  212.  
  213.                 mov     ax,[Result]
  214.  
  215.                 ret
  216.  
  217. WriteFile       endp
  218.  
  219.  
  220.  
  221. GetName         proc MaxLen:WORD,RegName:WORD
  222.  
  223.                 LOCAL   NamLen:WORD
  224.  
  225.                 pusha
  226.  
  227.                 mov     cx,[MaxLen]
  228.  
  229.                 add     cx,4
  230.  
  231.                 sub     sp,cx
  232.  
  233.                 mov     bx,sp
  234.  
  235.                 push    bx
  236.  
  237.                 mov     word ptr [bx],cx
  238.  
  239.                 mov     dx,bx
  240.  
  241.                 mov     ah,0ah
  242.  
  243.                 int     21h
  244.  
  245.                 pop     bx
  246.  
  247.                 movsx   ax,[bx+1]
  248.  
  249.                 or      ax,ax
  250.  
  251.                 jz      GNX
  252.  
  253.                 mov     cx,ax
  254.  
  255.                 mov     [NamLen],ax
  256.  
  257.                 lea     si,[bx+2]
  258.  
  259.                 mov     di,[RegName]
  260.  
  261.                 rep     movsb
  262.  
  263. GNX:            xor     ax,ax
  264.  
  265.                 stosb
  266.  
  267.                 mov     ax,[MaxLen]
  268.  
  269.                 add     ax,4
  270.  
  271.                 add     sp,ax
  272.  
  273.                 popa
  274.  
  275.                 mov     ax,[NamLen]
  276.  
  277.                 clc
  278.  
  279.                 ret
  280.  
  281. GetName         endp
  282.  
  283.  
  284.  
  285. FillBlock       proc FillSize:WORD,Dest:WORD,Source:WORD
  286.  
  287.                 LOCAL SrcLen:WORD
  288.  
  289.                 pusha
  290.  
  291.                 xor     ax,ax
  292.  
  293.                 mov     cx,0fffe
  294.  
  295.                 mov     di,[Source]
  296.  
  297.                 rep     scasb
  298.  
  299.                 neg     cx
  300.  
  301.                 mov     [SrcLen],cx
  302.  
  303.                 mov     ax,[FillSize]
  304.  
  305.                 cwd
  306.  
  307.                 div     cx
  308.  
  309.  
  310.  
  311.                 mov     di,[Dest]
  312.  
  313.                 mov     cx,ax
  314.  
  315. FBLoop:         push    cx
  316.  
  317.                 mov     si,[Source]
  318.  
  319.                 mov     cx,[SrcLen]
  320.  
  321.                 rep     movsb
  322.  
  323.                 pop     cx
  324.  
  325.                 loop    FBLoop
  326.  
  327.                 mov     si,[Source]
  328.  
  329.                 mov     cx,dx
  330.  
  331.                 or      cx,cx
  332.  
  333.                 jz      FBOut
  334.  
  335.                 rep     movsb
  336.  
  337.  
  338.  
  339. FBOut:          popa
  340.  
  341.                 ret
  342.  
  343. FillBlock       endp
  344.  
  345.  
  346.  
  347. CopyBlock       proc uses si di, BlockLen:WORD,Dest:WORD, Source:WORD
  348.  
  349.                 mov     si,[Source]
  350.  
  351.                 mov     di,[Dest]
  352.  
  353.                 mov     cx,[BlockLen]
  354.  
  355.                 shr     cx,2
  356.  
  357.                 jz      CB
  358.  
  359.                 rep     movsd
  360.  
  361. CB:             mov     cx,[BlockLen]
  362.  
  363.                 and     cx,3
  364.  
  365.                 jz      CBOut
  366.  
  367.                 rep     movsb
  368.  
  369. CBOut:          ret
  370.  
  371. CopyBlock       endp
  372.  
  373.  
  374.  
  375. MakeCryptTable  proc TableOfs:WORD,Crypt:DWORD
  376.  
  377.                 xor     esi,esi
  378.  
  379.                 movsx   edi,[TableOfs]
  380.  
  381. MakeLoop:       call    CryptTableProc
  382.  
  383.                 movsx   edx,ax
  384.  
  385.                 xor     edx,esi
  386.  
  387.                 inc     esi
  388.  
  389.                 mov     [edi],edx
  390.  
  391.                 add     edi,4
  392.  
  393.                 cmp     esi,8
  394.  
  395.                 jl      MakeLoop
  396.  
  397.                 ret
  398.  
  399. MakeCryptTable  endp
  400.  
  401.  
  402.  
  403. CryptTableProc  proc
  404.  
  405.                 mov     ecx,[Crypt]
  406.  
  407.                 lea     edx,[ecx*2+ecx]
  408.  
  409.                 lea     edx,[edx*4+ecx]
  410.  
  411.                 shl     edx,4
  412.  
  413.                 add     edx,ecx
  414.  
  415.                 shl     edx,8
  416.  
  417.                 sub     edx,ecx
  418.  
  419.                 lea     ecx,[edx*4+ecx+269ec3]
  420.  
  421.                 mov     [Crypt],ecx
  422.  
  423.                 mov     eax,ecx
  424.  
  425.                 shr     eax,10
  426.  
  427.                 and     ax,7fff
  428.  
  429.                 ret
  430.  
  431. CryptTableProc  endp
  432.  
  433.  
  434.  
  435. Encrypt         proc Count:WORD,EncryptOfs:WORD
  436.  
  437.                 cmp     [Count],0
  438.  
  439.                 jz      EncryptOut
  440.  
  441. EncryptLoop:    movsx   esi,[EncryptOfs]
  442.  
  443.                 push    si
  444.  
  445.                 push    offset CryptTable
  446.  
  447.                 call    EncryptMain
  448.  
  449.                 add     [EncryptOfs],8
  450.  
  451.                 dec     [Count]
  452.  
  453.                 jnz     EncryptLoop
  454.  
  455. EncryptOut:     ret
  456.  
  457. Encrypt         endp
  458.  
  459.  
  460.  
  461. EncryptMain     proc uses esi edi, TableOfs:WORD,InData:WORD
  462.  
  463.                 push    bp
  464.  
  465.                 movsx   ecx,word ptr [TableOfs]
  466.  
  467.                 mov     esi,ecx
  468.  
  469.                 mov     bp,[InData]
  470.  
  471.                 mov     ebx,[bp]
  472.  
  473.                 mov     edi,[bp+4]
  474.  
  475.                 mov     ecx,[si]
  476.  
  477.                 add     ecx,ebx
  478.  
  479.                 push    ecx
  480.  
  481.                 mov     cx,si
  482.  
  483.                 call    EncryptLookup
  484.  
  485.                 xor     edi,eax
  486.  
  487.                 mov     ecx,[si+04]
  488.  
  489.                 mov     eax,edi
  490.  
  491.                 add     eax,ecx
  492.  
  493.                 mov     cx,si
  494.  
  495.                 push    eax
  496.  
  497.                 call    EncryptLookup
  498.  
  499.                 xor     ebx,eax
  500.  
  501.                 mov     ecx,[si+08]
  502.  
  503.                 mov     edx,ebx
  504.  
  505.                 add     edx,ecx
  506.  
  507.                 mov     cx,si
  508.  
  509.                 push    edx
  510.  
  511.                 call    EncryptLookup
  512.  
  513.                 xor     edi,eax
  514.  
  515.                 mov     edx,[si+0C]
  516.  
  517.                 mov     ecx,edi
  518.  
  519.                 add     ecx,edx
  520.  
  521.                 push    ecx
  522.  
  523.                 mov     cx,si
  524.  
  525.                 call    EncryptLookup
  526.  
  527.                 xor     ebx,eax
  528.  
  529.                 mov     ecx,[si+10]
  530.  
  531.                 mov     eax,ebx
  532.  
  533.                 add     eax,ecx
  534.  
  535.                 mov     cx,si
  536.  
  537.                 push    eax
  538.  
  539.                 call    EncryptLookup
  540.  
  541.                 xor     edi,eax
  542.  
  543.                 mov     ecx,[si+14]
  544.  
  545.                 mov     edx,edi
  546.  
  547.                 add     edx,ecx
  548.  
  549.                 mov     cx,si
  550.  
  551.                 push    edx
  552.  
  553.                 call    EncryptLookup
  554.  
  555.                 xor     ebx,eax
  556.  
  557.                 mov     edx,[si+18]
  558.  
  559.                 mov     ecx,ebx
  560.  
  561.                 add     ecx,edx
  562.  
  563.                 push    ecx
  564.  
  565.                 mov     cx,si
  566.  
  567.                 call    EncryptLookup
  568.  
  569.                 xor     edi,eax
  570.  
  571.                 mov     ecx,[si+1C]
  572.  
  573.                 mov     eax,edi
  574.  
  575.                 add     eax,ecx
  576.  
  577.                 mov     cx,si
  578.  
  579.                 push    eax
  580.  
  581.                 call    EncryptLookup
  582.  
  583.                 xor     ebx,eax
  584.  
  585.                 mov     edx,[si]
  586.  
  587.                 add     edx,ebx
  588.  
  589.                 mov     ecx,esi
  590.  
  591.                 push    edx
  592.  
  593.                 call    EncryptLookup
  594.  
  595.                 xor     edi,eax
  596.  
  597.                 mov     edx,[si+04]
  598.  
  599.                 mov     ecx,edi
  600.  
  601.                 add     ecx,edx
  602.  
  603.                 push    ecx
  604.  
  605.                 mov     cx,si
  606.  
  607.                 call    EncryptLookup
  608.  
  609.                 xor     ebx,eax
  610.  
  611.                 mov     ecx,[si+08]
  612.  
  613.                 mov     eax,ebx
  614.  
  615.                 add     eax,ecx
  616.  
  617.                 mov     cx,si
  618.  
  619.                 push    eax
  620.  
  621.                 call    EncryptLookup
  622.  
  623.                 xor     edi,eax
  624.  
  625.                 mov     ecx,[si+0C]
  626.  
  627.                 mov     edx,edi
  628.  
  629.                 add     edx,ecx
  630.  
  631.                 mov     cx,si
  632.  
  633.                 push    edx
  634.  
  635.                 call    EncryptLookup
  636.  
  637.                 xor     ebx,eax
  638.  
  639.                 mov     edx,[si+10]
  640.  
  641.                 mov     ecx,ebx
  642.  
  643.                 add     ecx,edx
  644.  
  645.                 push    ecx
  646.  
  647.                 mov     cx,si
  648.  
  649.                 call    EncryptLookup
  650.  
  651.                 xor     edi,eax
  652.  
  653.                 mov     ecx,[si+14]
  654.  
  655.                 mov     eax,edi
  656.  
  657.                 add     eax,ecx
  658.  
  659.                 mov     cx,si
  660.  
  661.                 push    eax
  662.  
  663.                 call    EncryptLookup
  664.  
  665.                 xor     ebx,eax
  666.  
  667.                 mov     ecx,[si+18]
  668.  
  669.                 mov     edx,ebx
  670.  
  671.                 add     edx,ecx
  672.  
  673.                 mov     cx,si
  674.  
  675.                 push    edx
  676.  
  677.                 call    EncryptLookup
  678.  
  679.                 xor     edi,eax
  680.  
  681.                 mov     edx,[si+1C]
  682.  
  683.                 mov     ecx,edi
  684.  
  685.                 add     ecx,edx
  686.  
  687.                 push    ecx
  688.  
  689.                 mov     cx,si
  690.  
  691.                 call    EncryptLookup
  692.  
  693.                 xor     ebx,eax
  694.  
  695.                 mov     eax,[si]
  696.  
  697.                 add     eax,ebx
  698.  
  699.                 mov     cx,si
  700.  
  701.                 push    eax
  702.  
  703.                 call    EncryptLookup
  704.  
  705.                 xor     edi,eax
  706.  
  707.                 mov     ecx,[si+04]
  708.  
  709.                 mov     edx,edi
  710.  
  711.                 add     edx,ecx
  712.  
  713.                 mov     cx,si
  714.  
  715.                 push    edx
  716.  
  717.                 call    EncryptLookup
  718.  
  719.                 xor     ebx,eax
  720.  
  721.                 mov     edx,[si+08]
  722.  
  723.                 mov     ecx,ebx
  724.  
  725.                 add     ecx,edx
  726.  
  727.                 push    ecx
  728.  
  729.                 mov     cx,si
  730.  
  731.                 call    EncryptLookup
  732.  
  733.                 xor     edi,eax
  734.  
  735.                 mov     ecx,[si+0C]
  736.  
  737.                 mov     eax,edi
  738.  
  739.                 add     eax,ecx
  740.  
  741.                 mov     cx,si
  742.  
  743.                 push    eax
  744.  
  745.                 call    EncryptLookup
  746.  
  747.                 xor     ebx,eax
  748.  
  749.                 mov     ecx,[si+10]
  750.  
  751.                 mov     edx,ebx
  752.  
  753.                 add     edx,ecx
  754.  
  755.                 mov     cx,si
  756.  
  757.                 push    edx
  758.  
  759.                 call    EncryptLookup
  760.  
  761.                 xor     edi,eax
  762.  
  763.                 mov     edx,[si+14]
  764.  
  765.                 mov     ecx,edi
  766.  
  767.                 add     ecx,edx
  768.  
  769.                 push    ecx
  770.  
  771.                 mov     cx,si
  772.  
  773.                 call    EncryptLookup
  774.  
  775.                 xor     ebx,eax
  776.  
  777.                 mov     ecx,[si+18]
  778.  
  779.                 mov     eax,ebx
  780.  
  781.                 add     eax,ecx
  782.  
  783.                 mov     cx,si
  784.  
  785.                 push    eax
  786.  
  787.                 call    EncryptLookup
  788.  
  789.                 xor     edi,eax
  790.  
  791.                 mov     ecx,[si+1C]
  792.  
  793.                 mov     edx,edi
  794.  
  795.                 add     edx,ecx
  796.  
  797.                 mov     cx,si
  798.  
  799.                 push    edx
  800.  
  801.                 call    EncryptLookup
  802.  
  803.                 xor     ebx,eax
  804.  
  805.                 mov     edx,[si+1C]
  806.  
  807.                 mov     ecx,ebx
  808.  
  809.                 add     ecx,edx
  810.  
  811.                 push    ecx
  812.  
  813.                 mov     cx,si
  814.  
  815.                 call    EncryptLookup
  816.  
  817.                 xor     edi,eax
  818.  
  819.                 mov     ecx,[si+18]
  820.  
  821.                 mov     eax,edi
  822.  
  823.                 add     eax,ecx
  824.  
  825.                 mov     cx,si
  826.  
  827.                 push    eax
  828.  
  829.                 call    EncryptLookup
  830.  
  831.                 xor     ebx,eax
  832.  
  833.                 mov     ecx,[si+14]
  834.  
  835.                 mov     edx,ebx
  836.  
  837.                 add     edx,ecx
  838.  
  839.                 mov     cx,si
  840.  
  841.                 push    edx
  842.  
  843.                 call    EncryptLookup
  844.  
  845.                 xor     edi,eax
  846.  
  847.                 mov     edx,[si+10]
  848.  
  849.                 mov     ecx,edi
  850.  
  851.                 add     ecx,edx
  852.  
  853.                 push    ecx
  854.  
  855.                 mov     cx,si
  856.  
  857.                 call    EncryptLookup
  858.  
  859.                 xor     ebx,eax
  860.  
  861.                 mov     ecx,[si+0C]
  862.  
  863.                 mov     eax,ebx
  864.  
  865.                 add     eax,ecx
  866.  
  867.                 mov     cx,si
  868.  
  869.                 push    eax
  870.  
  871.                 call    EncryptLookup
  872.  
  873.                 xor     edi,eax
  874.  
  875.                 mov     ecx,[si+08]
  876.  
  877.                 mov     edx,edi
  878.  
  879.                 add     edx,ecx
  880.  
  881.                 mov     cx,si
  882.  
  883.                 push    edx
  884.  
  885.                 call    EncryptLookup
  886.  
  887.                 xor     ebx,eax
  888.  
  889.                 mov     edx,[si+4]
  890.  
  891.                 mov     ecx,ebx
  892.  
  893.                 add     ecx,edx
  894.  
  895.                 push    ecx
  896.  
  897.                 mov     cx,si
  898.  
  899.                 call    EncryptLookup
  900.  
  901.                 xor     edi,eax
  902.  
  903.                 mov     eax,[si]
  904.  
  905.                 add     eax,edi
  906.  
  907.                 push    eax
  908.  
  909.                 mov     cx,si
  910.  
  911.                 call    EncryptLookup
  912.  
  913.                 xor     ebx,eax
  914.  
  915.                 mov     [bp],edi
  916.  
  917.                 mov     [bp+4],ebx
  918.  
  919.                 pop     bp
  920.  
  921.                 ret
  922.  
  923. EncryptMain     endp
  924.  
  925.  
  926.  
  927. EncryptLookup   proc uses esi, Crypt:DWORD
  928.  
  929.                 mov     eax,[Crypt]
  930.  
  931.                 xor     esi,esi
  932.  
  933.                 mov     si,cx
  934.  
  935.                 mov     ecx,eax
  936.  
  937.                 shr     ecx,18
  938.  
  939.                 movsx   edx,byte ptr [esi+ecx+20]
  940.  
  941.                 mov     ecx,eax
  942.  
  943.                 shr     ecx,10
  944.  
  945.                 and     ecx,0ff
  946.  
  947.                 shl     edx,8
  948.  
  949.                 movsx   ecx,byte ptr [esi+ecx+120]
  950.  
  951.                 or      edx,ecx
  952.  
  953.                 xor     ecx,ecx
  954.  
  955.                 mov     cl,ah
  956.  
  957.                 and     eax,0ff
  958.  
  959.                 shl     edx,8
  960.  
  961.                 movsx   ecx,byte ptr [esi+ecx+220]
  962.  
  963.                 movsx   eax,byte ptr [esi+eax+320]
  964.  
  965.                 or      edx,ecx
  966.  
  967.                 shl     edx,8
  968.  
  969.                 or      edx,eax
  970.  
  971.                 mov     eax,edx
  972.  
  973.                 shl     eax,0bh
  974.  
  975.                 shr     edx,15
  976.  
  977.                 or      eax,edx
  978.  
  979.                 ret
  980.  
  981. EncryptLookup   endp
  982.  
  983.  
  984.  
  985. CalcCrc         proc Key:WORD
  986.  
  987.                 pusha
  988.  
  989.                 mov     bx,[Key]
  990.  
  991.                 xor     eax,eax
  992.  
  993.                 xor     edx,edx
  994.  
  995.                 mov     cx,78-28
  996.  
  997.                 mov     si,[Key]
  998.  
  999.                 add     si,28
  1000.  
  1001. CrcLoop:        lodsb
  1002.  
  1003.                 add     edx,eax
  1004.  
  1005.                 loop    CrcLoop
  1006.  
  1007.                 mov     bx,[Key]
  1008.  
  1009.                 mov     dword ptr [bx+20],edx
  1010.  
  1011.                 popa
  1012.  
  1013.                 ret
  1014.  
  1015. CalcCrc         endp
  1016.  
  1017.  
  1018.  
  1019. info            db 'CUTEFTP v2.0 FINAL    *KEYMAKER*   [JAM]',0dh,0ah
  1020.  
  1021.                 db '───────────── JAMMER ─────────────',0dh,0ah
  1022.  
  1023.                 db '   ▄▄▄   ▄▄▄    ▄▄▄▄▄▄▄▄▄    ▄▄▄▄▄▄▄▄▄  ',0dh,0ah
  1024.  
  1025.                 db '   ███   ███    ███          ███▄▄▄     ',0dh,0ah
  1026.  
  1027.                 db '   ███▄  ███    ███▄         ███        ',0dh,0ah
  1028.  
  1029.                 db '   ▀▀▀▀▀▀▀▀▀    ▀▀▀▀▀▀▀▀▀    ▀▀▀        ',0dh,0ah
  1030.  
  1031.                 db '────────────────────────────────────────',0dh,0ah
  1032.  
  1033.                 db ' u N I T E D  c R A C K I N G  f O R C E',0dh,0ah
  1034.  
  1035.                 db '[KEYMAKER]────────────────────[OCT 1997]',0dh,0ah,0
  1036.  
  1037. NameQ           db 'Enter your REAL name: ',0
  1038.  
  1039. WriteError      db 'Error! Could not create file!',0
  1040.  
  1041. CopyFile        db 'CUTEFTP.KEY created! Copy it to your CFTP directory!',0
  1042.  
  1043. FileName        db 'CUTEFTP.KEY',0
  1044.  
  1045. JamFill         db 'JAM',0
  1046.  
  1047.  
  1048.  
  1049. CryptTable      db 'CUTE FTP 2.0 [F]'
  1050.  
  1051.                 db 'KEYFILE BY JAMMY'
  1052.  
  1053.  
  1054.  
  1055. .radix 10
  1056.  
  1057. Lookuptable label byte
  1058.  
  1059. db 239,225,232,238,230,235,227,228,233,231,226,237,236,224,229,234, 79, 65, 72
  1060.  
  1061. db  78, 70, 75, 67, 68, 73, 71, 66, 77, 76, 64, 69, 74,223,209,216,222,214,219
  1062.  
  1063. db 211,212,217,215,210,221,220,208,213,218, 31, 17, 24, 30, 22, 27, 19, 20, 25
  1064.  
  1065. db  23, 18, 29, 28, 16, 21, 26, 47, 33, 40, 46, 38, 43, 35, 36, 41, 39, 34, 45
  1066.  
  1067. db  44, 32, 37, 42,255,241,248,254,246,251,243,244,249,247,242,253,252,240,245
  1068.  
  1069. db 250,191,177,184,190,182,187,179,180,185,183,178,189,188,176,181,186,143,129
  1070.  
  1071. db 136,142,134,139,131,132,137,135,130,141,140,128,133,138, 63, 49, 56, 62, 54
  1072.  
  1073. db  59, 51, 52, 57, 55, 50, 61, 60, 48, 53, 58,175,161,168,174,166,171,163,164
  1074.  
  1075. db 169,167,162,173,172,160,165,170,111, 97,104,110,102,107, 99,100,105,103, 98
  1076.  
  1077. db 109,108, 96,101,106,207,193,200,206,198,203,195,196,201,199,194,205,204,192
  1078.  
  1079. db 197,202, 95, 81, 88, 94, 86, 91, 83, 84, 89, 87, 82, 93, 92, 80, 85, 90,159
  1080.  
  1081. db 145,152,158,150,155,147,148,153,151,146,157,156,144,149,154, 15,  1,  8, 14
  1082.  
  1083. db   6, 11,  3,  4,  9,  7,  2, 13, 12,  0,  5, 10,127,113,120,126,118,123,115
  1084.  
  1085. db 116,121,119,114,125,124,112,117,122,167,173,174,163,160,166,169,170,161,162
  1086.  
  1087. db 168,165,171,172,164,175,  7, 13, 14,  3,  0,  6,  9, 10,  1,  2,  8,  5, 11
  1088.  
  1089. db  12,  4, 15,151,157,158,147,144,150,153,154,145,146,152,149,155,156,148,159
  1090.  
  1091. db 231,237,238,227,224,230,233,234,225,226,232,229,235,236,228,239,103,109,110
  1092.  
  1093. db  99, 96,102,105,106, 97, 98,104,101,107,108,100,111, 55, 61, 62, 51, 48, 54
  1094.  
  1095. db  57, 58, 49, 50, 56, 53, 59, 60, 52, 63,247,253,254,243,240,246,249,250,241
  1096.  
  1097. db 242,248,245,251,252,244,255, 87, 93, 94, 83, 80, 86, 89, 90, 81, 82, 88, 85
  1098.  
  1099. db  91, 92, 84, 95, 23, 29, 30, 19, 16, 22, 25, 26, 17, 18, 24, 21, 27, 28, 20
  1100.  
  1101. db  31,215,221,222,211,208,214,217,218,209,210,216,213,219,220,212,223,199,205
  1102.  
  1103. db 206,195,192,198,201,202,193,194,200,197,203,204,196,207,119,125,126,115,112
  1104.  
  1105. db 118,121,122,113,114,120,117,123,124,116,127,183,189,190,179,176,182,185,186
  1106.  
  1107. db 177,178,184,181,187,188,180,191, 71, 77, 78, 67, 64, 70, 73, 74, 65, 66, 72
  1108.  
  1109. db  69, 75, 76, 68, 79, 39, 45, 46, 35, 32, 38, 41, 42, 33, 34, 40, 37, 43, 44
  1110.  
  1111. db  36, 47,135,141,142,131,128,134,137,138,129,130,136,133,139,140,132,143, 44
  1112.  
  1113. db  33, 42, 47, 41, 34, 38, 40, 32, 45, 35, 36, 46, 39, 37, 43,204,193,202,207
  1114.  
  1115. db 201,194,198,200,192,205,195,196,206,199,197,203, 76, 65, 74, 79, 73, 66, 70
  1116.  
  1117. db  72, 64, 77, 67, 68, 78, 71, 69, 75, 28, 17, 26, 31, 25, 18, 22, 24, 16, 29
  1118.  
  1119. db  19, 20, 30, 23, 21, 27,124,113,122,127,121,114,118,120,112,125,115,116,126
  1120.  
  1121. db 119,117,123,172,161,170,175,169,162,166,168,160,173,163,164,174,167,165,171
  1122.  
  1123. db 188,177,186,191,185,178,182,184,176,189,179,180,190,183,181,187,108, 97,106
  1124.  
  1125. db 111,105, 98,102,104, 96,109, 99,100,110,103,101,107,140,129,138,143,137,130
  1126.  
  1127. db 134,136,128,141,131,132,142,135,133,139, 92, 81, 90, 95, 89, 82, 86, 88, 80
  1128.  
  1129. db  93, 83, 84, 94, 87, 85, 91, 60, 49, 58, 63, 57, 50, 54, 56, 48, 61, 51, 52
  1130.  
  1131. db  62, 55, 53, 59,252,241,250,255,249,242,246,248,240,253,243,244,254,247,245
  1132.  
  1133. db 251,220,209,218,223,217,210,214,216,208,221,211,212,222,215,213,219, 12,  1
  1134.  
  1135. db  10, 15,  9,  2,  6,  8,  0, 13,  3,  4, 14,  7,  5, 11,236,225,234,239,233
  1136.  
  1137. db 226,230,232,224,237,227,228,238,231,229,235,156,145,154,159,153,146,150,152
  1138.  
  1139. db 144,157,147,148,158,151,149,155, 77, 66, 72, 68, 70, 79, 75, 65, 74, 73, 67
  1140.  
  1141. db  78, 69, 64, 76, 71,189,178,184,180,182,191,187,177,186,185,179,190,181,176
  1142.  
  1143. db 188,183, 45, 34, 40, 36, 38, 47, 43, 33, 42, 41, 35, 46, 37, 32, 44, 39,237
  1144.  
  1145. db 226,232,228,230,239,235,225,234,233,227,238,229,224,236,231,253,242,248,244
  1146.  
  1147. db 246,255,251,241,250,249,243,254,245,240,252,247, 13,  2,  8,  4,  6, 15, 11
  1148.  
  1149. db   1, 10,  9,  3, 14,  5,  0, 12,  7,141,130,136,132,134,143,139,129,138,137
  1150.  
  1151. db 131,142,133,128,140,135,221,210,216,212,214,223,219,209,218,217,211,222,213
  1152.  
  1153. db 208,220,215, 61, 50, 56, 52, 54, 63, 59, 49, 58, 57, 51, 62, 53, 48, 60, 55
  1154.  
  1155. db 205,194,200,196,198,207,203,193,202,201,195,206,197,192,204,199,157,146,152
  1156.  
  1157. db 148,150,159,155,145,154,153,147,158,149,144,156,151,125,114,120,116,118,127
  1158.  
  1159. db 123,113,122,121,115,126,117,112,124,119, 93, 82, 88, 84, 86, 95, 91, 81, 90
  1160.  
  1161. db  89, 83, 94, 85, 80, 92, 87,173,162,168,164,166,175,171,161,170,169,163,174
  1162.  
  1163. db 165,160,172,167,109, 98,104,100,102,111,107, 97,106,105, 99,110,101, 96,108
  1164.  
  1165. db 103, 29, 18, 24, 20, 22, 31, 27, 17, 26, 25, 19, 30, 21, 16, 28, 23
  1166.  
  1167. Keyfile         label byte
  1168.  
  1169. end start
  1170.  
  1171.