Помогите написать что-то типа кейлоггера (Нужен скрипт который в фоне будет ожидать ввода "*")

Модератор: Модераторы разделов

VladVol
Сообщения: 142
ОС: KUbuntu

Помогите написать что-то типа кейлоггера

Сообщение VladVol »

Как бы странно это не звучало, но нужно написать вот такую штуку. Прошу помощи.
Нужно написать что-то типа кейлоггера на линукс, для включения сигнализации (не буду вдаваться в подробности). Либо bash скрипт либо python. Что нужно: скрипт в фоне ожидает ввода «*» когда введена звезда, начинаем считывать введенный код, пока не будет обнаружен символ «/». После обнаружения символа, сверяем кол-во введенных символов, если кол-во символов <7, передаем эти символы в другую программу (это я уже сам).

Благодарю за любую помощь .
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5427
ОС: Gentoo

Re: Помогите написать что-то типа кейлоггера

Сообщение /dev/random »

iУведомление от модератора
Поскольку автор не ищет программу, а пытается её написать, перемещаю тему из "Программ" в "Программирование"
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

VladVol
Возможно, проще и быстрее будет не ждать ввода * ( как ни крути, а кейлоггер мало кому понравится ), а повесить действие, выполняемое по * на какой-нибудь хоткей (например cmd+shift+a) в вашем wm/de. * - достаточно часто используемый символ, а уж если писать пути с масками ( /path/to*som/ ), то и в паре с / . Может быть немаленькое количество ложных срабатываний. Нажать на трехкнопочный хоткей случайно всё же немного сложнее.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

Спасибо за ответ! Дело в том, что для ввода кода доступна только numlock клавиатура, из-за этого нет возможности нажимать cmd+shift+a. На этом пк никто не работает, это можно сказать сервер, к которому подключены датчики открытия дверей в серверной и еще пару комнат. Сервер работает постоянно, просто нужна возможность ловить нажатые кнопки с этой клавиатуры и передавать их программе, чтобы проще было активировать и отключать "сигналку".
С другой стороны можно сделать вместо *, активацию, например одновременным нажатием 123, если так выйдет?

Просто даже не знаю с чего начать, никогда кейлоггерами не интересовался))
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

если вы в иксах, поможет вот это: https://github.com/mnp/xspy/blob/master/xspy.c

VladVol писал(а):
29.10.2013 16:03
просто нужна возможность ловить нажатые кнопки с этой клавиатуры и передавать их программе, чтобы проще было активировать и отключать "сигналку".

сделайте беспарольного юзера, который и будет логинится при загрузке. И у этого юзера сделайте в качестве shell'а не /bin/sh как обычно, а вашу программу, которая будет просто обрабатывать кнопки.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

drBatty писал(а):
29.10.2013 16:19
если вы в иксах, поможет вот это: https://github.com/mnp/xspy/blob/master/xspy.c

VladVol писал(а):
29.10.2013 16:03
просто нужна возможность ловить нажатые кнопки с этой клавиатуры и передавать их программе, чтобы проще было активировать и отключать "сигналку".

сделайте беспарольного юзера, который и будет логинится при загрузке. И у этого юзера сделайте в качестве shell'а не /bin/sh как обычно, а вашу программу, которая будет просто обрабатывать кнопки.


В Си не шарю, думаю смысл верный, но сильно много кода, мне бы что-то по-проще. Проблема в том, что мне и нужна эта программа. Мне хотя бы понять как получать значения нажатых кнопок, дальше я уже сам. Знаю на 100% что это можно написать на Баше или Пайтоне, но е ще не знаю как (((
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5427
ОС: Gentoo

Re: Помогите написать что-то типа кейлоггера

Сообщение /dev/random »

VladVol писал(а):
29.10.2013 18:36
В Си не шарю, думаю смысл верный, но сильно много кода, мне бы что-то по-проще. Проблема в том, что мне и нужна эта программа. Мне хотя бы понять как получать значения нажатых кнопок, дальше я уже сам. Знаю на 100% что это можно написать на Баше или Пайтоне, но е ще не знаю как (((

На баше это сделать проблематично. На питоне можете воспользоваться python-evdev.
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

Спасибо, это уже что-то! Буду копать в этом направлении))
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

/dev/random писал(а):
29.10.2013 18:58
На баше это сделать проблематично
Чего ж тут проблематичного?

Код: Выделить всё

#!/bin/bash
while : ;
do
        read -r -n1 char
        [ "$char" == "*" ] && { i=0; all="";
                while [ $i -lt 10 ] ;
                do
                        read -r -n1 char
                        [ "$char" == "/" ] && i=10 || all="${all}${char}"
                done ;
                # вот тут-то мы и получили все символы между * и / в переменной $all. 10 - это их максимальное количество
                echo $all ;
        }
done
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5427
ОС: Gentoo

Re: Помогите написать что-то типа кейлоггера

Сообщение /dev/random »

SLEDopit писал(а):
29.10.2013 19:15
Чего ж тут проблематичного?

То, что вы читаете текст из терминала, где запущена программа, а топикстартеру нужен кейлоггер, работающий в фоне.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

/dev/random писал(а):
29.10.2013 19:21
То, что вы читаете текст из терминала, где запущена программа, а топикстартеру нужен кейлоггер, работающий в фоне.
Ну судя по описанию, там нет ни иксов, ни чего-то подобного. Так что вполне можно автологинить юзера с этим скриптом прописаным в login shell'e. Это самый простой и быстрый способ, который мог бы подойти.
Если это не подходит, тогда таки да, придётся писать на C или питоне.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

VladVol писал(а):
29.10.2013 18:36
В Си не шарю, думаю смысл верный, но сильно много кода, мне бы что-то по-проще. Проблема в том, что мне и нужна эта программа. Мне хотя бы понять как получать значения нажатых кнопок,

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

Лучше сделайте нормально: уберите оттуда иксы вовсе, сделайте специального юзера, и пусть этот юзер автоматом логинится в систему. Ну и что-бы запускалась какая-то программа(скрипт), которая будет ждать нажатия нужных клавиш и выполнять нужные действия. И всё.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

drBatty писал(а):
29.10.2013 19:44
Лучше сделайте нормально: уберите оттуда иксы вовсе, сделайте специального юзера, и пусть этот юзер автоматом логинится в систему. Ну и что-бы запускалась какая-то программа(скрипт), которая будет ждать нажатия нужных клавиш и выполнять нужные действия. И всё.


Вполне возможно что вопрос глупый, но все таки, как потом с этого юзера выйти и загрузить нормально. Ну как залогинится, тут все понятно, а как выйти? Я просто еще такие штуки не делал, не представляю.

И если можно сделать так чтобы вместо Шелла запускался скрипт, то я так понимаю можно использовать скрипт SLEDopitа?
Спасибо ВСЕМ огромное за участие!!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

VladVol писал(а):
29.10.2013 20:48
Ну как залогинится, тут все понятно, а как выйти?

вопрос не имеет смысла. Если вы сделаете так, как я говорил, то _вы_ и не войдёте в оболочку. Управление передастся программе, которая и будет работать _вместо_ оболочки.

Что до "выйти", дык обычно 6 терминалов открывается, в первый оно залогинет эту программу, а остальные в вашем распоряжении. У меня (в Slackware) init читает inittab
# These are the standard console login getties in multiuser mode:

Код: Выделить всё

c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

которая запускает /bin/login, которая и осуществляет логин. Вы можете поменять это поведение для одной консоли, оставив другие для обслуживания (нажмите ALT+F2, и далее логин/пароль скажем рута).

В разных дистрах реализация немного (или много, с новомодным systemd) отличается.

VladVol писал(а):
29.10.2013 20:48
И если можно сделать так чтобы вместо Шелла запускался скрипт

почему же нельзя? Можно. Только учтите, что враг может прервать скрипт, и получить доступ к оболочке. Потому не рекомендуется так делать...
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Ism
Сообщения: 1261
Статус: Никто, по сути быдло

Re: Помогите написать что-то типа кейлоггера

Сообщение Ism »

А клавиатуру убрать нелья ?
Если иксы есть то код xneur поможет

Также есть утилита xev , ловит коды клавиш
Гдето в утилитах была которая ловит без иксов
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Помогите написать что-то типа кейлоггера

Сообщение sciko »

А почему бы ТС на использовать в качестве кейлоггера xneur (он умеет работать и в консоли)?


Вот тут
приводится пример настройки для самых маленьких.
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

Что до "выйти", дык обычно 6 терминалов открывается, в первый оно залогинет эту программу, а остальные в вашем распоряжении

Логично, как-то упустил это из виду.

почему же нельзя? Можно. Только учтите, что враг может прервать скрипт, и получить доступ к оболочке. Потому не рекомендуется так делать...

Тогда выходит, что вернулись к тому же с чего и начали? Кейлоггер в фоне? Или есть возможность сделать так чтобы враг не смог прервать скрипт?

А почему бы ТС на использовать в качестве кейлоггера xneur (он умеет работать и в консоли)?

Попробую, спасибо. Уже насобиралось несколько вариантов)) Вот только еще не понял на каком лучше остановится...
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

VladVol писал(а):
30.10.2013 00:15
Что до "выйти", дык обычно 6 терминалов открывается, в первый оно залогинет эту программу, а остальные в вашем распоряжении

Логично, как-то упустил это из виду.

почему же нельзя? Можно. Только учтите, что враг может прервать скрипт, и получить доступ к оболочке. Потому не рекомендуется так делать...

Тогда выходит, что вернулись к тому же с чего и начали? Кейлоггер в фоне? Или есть возможность сделать так чтобы враг не смог прервать скрипт?

А почему бы ТС на использовать в качестве кейлоггера xneur (он умеет работать и в консоли)?

Попробую, спасибо. Уже насобиралось несколько вариантов)) Вот только еще не понял на каком лучше остановится...


Случайно наткнулся на такой скрипт, что можете сказать, подойдет он мне или нет?
Spoiler
#! /usr/bin/python
file=open("/dev/input/event1")
keymap={
'\x2c': 'z',
'\x2d': 'x',
'\x2e': 'c',
'\xc8': 'UP',
'\xd0': 'DOWN',
'\xcb': 'LEFT',
'\xcd': 'RIGHT',
'\x10': 'q',
'\x11': 'w',
'\x12': 'e',
'\x01': 'ESC',
'\x2a': 'LSHIFT',
'\x1c': 'ENTER',
}
while True:
event=file.read(48)
if event[28] == '\x01':
state="pressed:"
elif event[28] == '\x00':
state="released:"
else:
continue
if event[12] in keymap:
print state, keymap[event[12]]
file.close()


Правда мне не совсем понятно что значит '\x2d': 'x'. Т.е. понятно что \x2d это буква х, но почему такой странный формат?!
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

VladVol писал(а):
30.10.2013 00:29
Т.е. понятно что \x2d это буква х, но почему такой странный формат?!

\x это значит "шестнадцатеричная СС". Например \xFF это число 255

VladVol писал(а):
30.10.2013 00:29
Т.е. понятно что \x2d это буква х

тащем-то это 2*16+13==45=='-'

т.е. по-русски: символ -- "знак минус".
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

drBatty писал(а):
30.10.2013 10:29
VladVol писал(а):
30.10.2013 00:29
Т.е. понятно что \x2d это буква х, но почему такой странный формат?!

\x это значит "шестнадцатеричная СС". Например \xFF это число 255

VladVol писал(а):
30.10.2013 00:29
Т.е. понятно что \x2d это буква х

тащем-то это 2*16+13==45=='-'

т.е. по-русски: символ -- "знак минус".


Ок, а что тогда значит Х напротив '\x2d': 'x'.?
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

drBatty писал(а):
29.10.2013 22:20
Только учтите, что враг может прервать скрипт, и получить доступ к оболочке. Потому не рекомендуется так делать...
Ничего себе. Покажите, как это делается?

На самом деле, если нажать ctrl+c, то произойдет разлогинивание. Иначе, когда в bash/zsh/whatever_shell набираете exit сессия не заканчивалась бы, а автоматом перезапускалась бы.
Не верите мне - попробуйте сами.

Код: Выделить всё

 # echo '#!/bin/bash
> while : ; do read -r -n1 ; done' > /root/shell.sh
 # chmod 755 /root/shell.sh
 # adduser verytest --shell /root/shell.sh
залогиньтесь и попробуйте нажать ctrl+c.

Так что это вполне рабочий вариант.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

VladVol писал(а):
30.10.2013 11:23
Ок, а что тогда значит Х напротив '\x2d': 'x'.?

шестнадцатеричная СС.

SLEDopit
вы действительно хотите, что-бы Я залогинелся?
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

drBatty писал(а):
30.10.2013 11:57
вы действительно хотите, что-бы Я залогинелся?
Я хочу, чтобы вы мне открыли секрет, как из такого шелла попасть в полноценную оболочку.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

SLEDopit, объясните, пожалуйста, куда записываются все введенные символы? Ибо не доходит!


Код: Выделить всё

#!/bin/bash
while : ;
do
        read -r -n1 char #эта строка записывает каждый введенный символ в переменную char, т.е. char содержит в себе только один символ
        [ "$char" == "*" ] && { i=0; all=""; # тут ищем совпадение с char и задаем переменную "i" и "all"
                while [ $i -lt 10 ] ;
                do
                        read -r -n1 char # тут снова читаем по одному символу
                        [ "$char" == "/" ] && i=10 || all="${all}${char}" #тут сравниваем char с "/", если =, то задаем для "i" значение равное 10, если != тогда задаем значение для переменной "all"
                                                                                               #короче тут я потерялся. ВОПРОС_1. 10 - это кол-во кол-во считываемых
                                                                                               #символов после нажатия "*"? Если да, то я не могу понять как оно их подсчитало?
                                                                                               #ВОПРОС_2. Объясните, мне нубу, как переменная "all" в итоге получает все введенные числа до нажатия "/"? Вы приравняли
                                                                                               #"all" к ранее заданной переменной "all", которая равна "" + переменная "char" которая хранит в себе только один введенный
                                                                                               #символ и каждый новый символ заменяет старый. Но в итоге получаем адекватный вывод!! Поясните плз, как не старался
                                                                                               #понять у меня выходит 2+2=12.
                done ;
                # вот тут-то мы и получили все символы между * и / в переменной $all. 10 - это их максимальное количество
                echo $all ;
        }
done


Заранее спасибо! Хочется не просто использовать код, а еще и понять его. :wacko:
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

SLEDopit писал(а):
30.10.2013 12:16
Я хочу, чтобы вы мне открыли секрет, как из такого шелла попасть в полноценную оболочку.

строго говоря, вы УЖЕ в полноценной оболочке. Достаточно первого-же eval'а. Но не нужно думать, что проблема в eval, в bash'е Over9000 мест, когда данные из юзерского ввода могут ВНЕЗАПНО стать кодом. Именно по этой причине bash(как и все такие недоязычки) настоятельно НЕ рекомендуют, когда речь идёт о безопасности.

Теоретически обезопасить можно и bash(наверное), но на практике сделать это довольно сложно. Потому-то и применяют его тогда, когда есть уверенность, что юзер ничего не сможет сделать даже получив этот shell.

Вопрос "как" зависит естественно от скрипта.
VladVol писал(а):
31.10.2013 00:43
ВОПРОС_1. 10 - это кол-во кол-во считываемых
$i это счётчик, а 10 -- это предел окончания цикла. Когда i>=10 цикл заканчивается. Когда символ "/", i=10, и цикл СРАЗУ заканчивается.

VladVol писал(а):
31.10.2013 00:43
#"all" к ранее заданной переменной "all", которая равна "" + переменная "char" которая хранит в себе только один введенный
#символ и каждый новый символ заменяет старый.

каждый символ НЕ заменяет старый. Смотрите:

$

$ X="ABC" $ ALL="$ALL$X"; echo $ALL ABC $ ALL="$ALL$X"; echo $ALL ABCABC $ ALL="$ALL$X"; echo $ALL ABCABCABC

http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

drBatty писал(а):
31.10.2013 09:55
строго говоря, вы УЖЕ в полноценной оболочке. Достаточно первого-же eval'а.
Ну строго говоря, совершенно в любом ПО, где присутствует обработка пользовательских данных есть потенциальные места для уязвимостей.


VladVol писал(а):
31.10.2013 00:43
объясните, пожалуйста, куда записываются все введенные символы?
когда мы пишем all=$all$char, all='' только при первой итерации цикла. при второй итерации all уже не пустая, а содержит в себе предыдущий $char .

А насчёт 10, у меня строка где i увеличивается на единицу потерялась. Она должна быть во внутреннем цикле.

Код: Выделить всё

#!/bin/bash
while : ;
do
        read -r -n1 char
        [ "$char" == "*" ] && { i=0; all="";
                while [ $i -lt 10 ] ;
                do
                        read -r -n1 char
                        [ "$char" == "/" ] && i=10 || all="${all}${char}"
                        ((i++))
                done ;
                # вот тут-то мы и получили все символы между * и / в переменной $all. 10 - это их максимальное количество
                echo $all ;
        }
done


Ну т.е. в двух словах принцип работы такой:

1. читаем в бесконечном цикле символ
2. символ == * → переключаемся во внутренний цикл, обнуляем переменные i и all
3. во внутреннем цикле (не более 10 итераций) продолжаем читать по одному символу, и сравниваем с /
4. если символ не равен / , то сохраняем символ в переменную all и увеличиваем i на единицу
5. если символ == / или i достигло 10, то завершаем цикл и выводим введённые в цикле символы
6. возвращаемся в бесконечный цикл
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

SLEDopit писал(а):
31.10.2013 10:14
Ну строго говоря, совершенно в любом ПО, где присутствует обработка пользовательских данных есть потенциальные места для уязвимостей.

конечно, но в сишечке с этим намного проще: надо сильно извратиться, что-бы данные стали кодом. В bash'е это намного проще.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
VladVol
Сообщения: 142
ОС: KUbuntu

Re: Помогите написать что-то типа кейлоггера

Сообщение VladVol »

drBatty писал(а):
31.10.2013 10:39
SLEDopit писал(а):
31.10.2013 10:14
Ну строго говоря, совершенно в любом ПО, где присутствует обработка пользовательских данных есть потенциальные места для уязвимостей.

конечно, но в сишечке с этим намного проще: надо сильно извратиться, что-бы данные стали кодом. В bash'е это намного проще.

Вопрос к drBatty и SLEDopit.
Насколько проще? Т.е. если я не подразумеваю ставить эту сигнализацию в банк, а сугубо для офисного, ну может быть еще домашнего использования, на сколько % возрастает опасность, так сказать, взлома возрастает? Или даже не взлома, а опасность изменения кода? Если взять 0% за невозможность взлома, чего, конечно нет в природе )))

SLEDopit и drBatty, спасибо за пояснения по коду!
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Помогите написать что-то типа кейлоггера

Сообщение SLEDopit »

VladVol писал(а):
31.10.2013 11:45
Насколько проще? Т.е. если я не подразумеваю ставить эту сигнализацию в банк, а сугубо для офисного, ну может быть еще домашнего использования, на сколько % возрастает опасность, так сказать, взлома возрастает? Или даже не взлома, а опасность изменения кода? Если взять 0% за невозможность взлома, чего, конечно нет в природе )))
В данном случае теоретический взлом возможен исключительно при физическом доступе к машине. А судя по тому, что вы упомянули урезанную версию клавиатуры без символов, то мне сложно представить вредоносную комбинацию.
Впрочем в случае с вышеприведённым кодом, мне сложно представить её и с полноценной клавиатурой. Всё зависит от вашей команды, которая будет обрабатывать введённые символы. Если там не будет eval'a или другой попытки интерпретации данных, как исполняемого кода, то я не вижу опасности.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Помогите написать что-то типа кейлоггера

Сообщение drBatty »

VladVol писал(а):
31.10.2013 11:45
Насколько проще?

в данном конкретном случае не проще. Дело в том, что множество допустимых вариантов очень маленькое. Потому вы можете откинуть ВСЕ остальные коды как недопустимые, т.е. ничего не выполнять, если нажато что-то не то.

Ну и нужно обдумать вопрос обработки сигналов, т.е. решить вопрос, как будет обрабатываться например прерывание CTRL+C, и как будут обрабатываться ошибки. Тут правило простое -- пусть хоть как-то ОБРАБАТЫВАЮТСЯ. Ибо стандартная обработка сигналов вам не подходит(в стандартном случае при получении сигнала S процесс завершается с кодом S+128. Вам это не подходит, т.к. возвращаться некуда)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали: