Pull to refresh

X Neural Switcher — Поваренная книга (Часть 3). Кейлоггер

Reading time9 min
Views7.1K
imageПриветствую.

Сегодня, продолжая цикл статей про настройку и использование X Neural Switcher (программы для автоматического переключения раскладки), я расскажу про одну немаловажную и даже спорную возможность программы.

Эта возможность — возможность записи набираемого текста в файл журнала.

Краткий разбор кейлогеров для linux я приводил в предыдущей статье цикла X Neural Switcher — Поваренная книга (Часть 1). Предтечи и аналоги

Вообще, я покривлю душой, если скажу, что не думал внедрять такой функционал в программу с самого начала. Punto Switcher уже имел функционал кейлоггера под названием «Дневник», так почему xneur должен был быть обделен такой функцией? Да и глупо не сделать такой простой вещи в программе, которая предназначена для перехвата клавиатуры, в конце концов!

Из личного опыта скажу, что я никогда не думал, что лично мне функционал кейлоггера может пригодиться. Да и включена эта опция в моем конфиге была по забывчивости — осталась после тестирования программы. Однако, в один далеко не прекрасный момент, эта функция позволила разоблачить одного нехорошего человека, который использовал мой компьютер в дискредитирующих меня целях. Вот и получилось, что никогда не знаешь, где «соломки подстелить».

Внимание! X Neural Switcher не является шпионской программой, и не предназначена для несанкционированного применения (похищения информации, доступа к чужой переписке, воровства паролей и прочего)!



Цели применения в качестве кейлогера


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

Общее описание возможностей по ведению журнала


На данный момент программа имеет такие возможности:
  • сохранять набираемый на клавиатуре текст в html-файл с указанием программы, в которой он набирался, и указанием даты и времени записи в журнал
  • определять размер несжатого файла журнала, при превышении которого журнал будет заархивирован
  • отправлять архив журнала по указанному емейлу через SMTP-сервер (сервер должен быть без авторизации)
Да, xneur не умеет делать скриншоты, перехватывать почту, записывать видео с камеры и звук с микрофона, грабить корованы и вызывать джина. Ну, что поделать, xneur не для того предназначен!

Опции настройки программы для ведения журнала


Ниже я приведу опции конфигурационного файла, отвечающие непосредственно за функцию кейлоггера.
  • LogSave — может принимать значения Yes или No. Если No, то остальные опции не имеют значения.
  • LogSize — принимает значение размера файла журнала в байтах. После достижения данного размера программа заархивирует журнал и попытается отправить его на емейл.
  • LogMail — здесь вы указываете адрес почты, на который будет отправляться архив журнала. Если адрес не указан, то попытка отправки происходить не будет.
  • LogHostIP — указываете smtp-сервер исходящей почты. Через этот сервер будет осуществляться отправка. В качестве аргумента может быдь указан или IP, или доменное имя сервера.
  • LogPort — порт на smtp-сервере.
В целом, список опций краток и не должен вызвать непонимания.

Пример конфигурационного файла


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

Автоматический режим переключения отключен, все горячие клавиши отключены, вся нотификация о работе программы отключена, проблемные приложения занесены в список исключений — в общем отключено все, что не относится к кейлоггеру.

В идеальном случае, программа никак не будет проявлять своего присутствия, и будет только писать журнал и отправлять его на почту. Значимые опции выделены жирным шрифтом.

# It's a X Neural Switcher configuration file by XNeur
# All values writted XNeur

# Config version
Version 0.15.0

# Work in manual mode
ManualMode Yes

# Level of messages program will write to output
#LogLevel Error
#LogLevel Warning
#LogLevel Log
#LogLevel Debug
#LogLevel Trace
LogLevel Error

# Define unused languages
# Example:
#ExcludeLanguage de

# Define initial keyboard layout for all new applications
DefaultXkbGroup 0

# Add Applications names to exclude it from procces with xneur
# Xneur will not process the input for this applications
# Example:
#ExcludeApp Gaim
ExcludeApp Krdc
ExcludeApp Remmina
ExcludeApp Unity-2d-launcher
ExcludeApp Unity-2d-places
ExcludeApp VirtualBox
ExcludeApp Wine
ExcludeApp rdesktop

# Use this parameter to force set work mode in current application to Auto.
# Example:
#SetAutoApp Gedit

# Use this parameter to force set work mode in current application to Manual.
# Example:
#SetManualApp Anjuta

# Binds hotkeys for some actions
AddBind ChangeWord 
AddBind TranslitWord 
AddBind ChangecaseWord 
AddBind PreviewChangeWord 
AddBind ChangeString 
AddBind ChangeMode 
AddBind ChangeSelected 
AddBind TranslitSelected 
AddBind ChangecaseSelected 
AddBind PreviewChangeSelected 
AddBind ChangeClipboard 
AddBind TranslitClipboard 
AddBind ChangecaseClipboard 
AddBind PreviewChangeClipboard 
AddBind EnableLayout1 
AddBind EnableLayout2 
AddBind EnableLayout3 
AddBind EnableLayout4 
AddBind RotateLayout 
AddBind RotateLayoutBack 
AddBind ReplaceAbbreviation 
AddBind AutocompletionConfirmation 
AddBind BlockKeyboardAndMouseEvents 
AddBind InsertDate 

# This option add user action when pressed key bind
# Example:
#AddAction Control Alt f Firefox Browser <cmd>firefox</cmd>

# Word Replacing
# Ignore keyboard layout for abbreviations list
# Example:
#ReplaceAbbreviationIgnoreLayout No
ReplaceAbbreviationIgnoreLayout No

# Abbreviations list
# Example:
#ReplaceAbbreviation xneur X Neural Switcher

# This option enable or disable sound playing
# Example:
#PlaySounds No
PlaySounds No

# This option defined sound playing volume percent
# Example:
#SoundVolumePercent 10
SoundVolumePercent 15

# Binds sounds for some actions
AddSound XneurStart 
AddSound XneurReload 
AddSound XneurStop 
AddSound PressKeyLayout1 
AddSound PressKeyLayout2 
AddSound PressKeyLayout3 
AddSound PressKeyLayout4 
AddSound EnableLayout1 
AddSound EnableLayout2 
AddSound EnableLayout3 
AddSound EnableLayout4 
AddSound AutomaticChangeWord 
AddSound ManualChangeWord 
AddSound ManualTranslitWord 
AddSound ManualChangecaseWord 
AddSound ManualPreviewChangeWord 
AddSound ChangeString 
AddSound ChangeSelected 
AddSound TranslitSelected 
AddSound ChangecaseSelected 
AddSound PreviewChangeSelected 
AddSound ChangeClipboard 
AddSound TranslitClipboard 
AddSound ChangecaseClipboard 
AddSound PreviewChangeClipboard 
AddSound ReplaceAbbreviation 
AddSound CorrectIncidentalCaps 
AddSound CorrectTwoCapitalLetter 
AddSound CorrectTwoSpaceWithCommaAndSpace 
AddSound CorrectTwoMinusWithDash 
AddSound CorrectCWithCopyright 
AddSound CorrectTMWithTrademark 
AddSound CorrectRWithRegistered 
AddSound ExecuteUserAction 
AddSound BlockKeyboardAndMouseEvents 
AddSound UnblockKeyboardAndMouseEvents 

# This option enable or disable self education of xneur
# Example:
#EducationMode No
EducationMode No

# This option enable or disable layout remember for each window
# Example:
#LayoutRememberMode No
LayoutRememberMode No

# Use this parameter to force enable layout remember for each application, not window.
# Option "LayoutRememberMode" must be enabled.
# Example:
#LayoutRememberModeForApp Gaim

# This option enable or disable saving selection text
# Example:
#SaveSelectionMode No
SaveSelectionMode No

# This option enable or disable rotating layout after convert selected text
# Example:
#RotateLayoutAfterChangeSelectedMode No
RotateLayoutAfterChangeSelectedMode No

# This option define delay before sendind events to application (in milliseconds between 0 to 50).
SendDelay 0

# This option enable or disable logging keyboard
# Example:
#LogSave No
LogSave Yes

# This option set max size of log file (bytes).
# Example:
#LogSize 1048576
LogSize 1048576

# This option define e-mail for send log file, if it's size greater then max size.
# Example:
#LogMail your.mail@your.server.com
LogMail example@xneur.ru

# This option define host to send e-mail without login and password.
# Example:
#LogHostIP 127.0.0.1
#LogHostIP mail.example.com
LogHostIP mail.example.com

# This option define port to send e-mail without login and password.
# Example:
#LogPort 25
LogPort 25
# This option enable or disable correction of iNCIDENTAL CapsLock
# Example:
#CorrectIncidentalCaps Yes
CorrectIncidentalCaps No

# This option enable or disable correction of two CApital letter
# Example:
#CorrectTwoCapitalLetter Yes
CorrectTwoCapitalLetter No

# This option enable or disable correction of small letter to capital letter after dot
# Example:
#CorrectCapitalLetterAfterDot Yes
CorrectCapitalLetterAfterDot No

# This option enable or disable correction of two space with a comma and a space
# Example:
#CorrectTwoSpaceWithCommaAndSpace Yes
CorrectTwoSpaceWithCommaAndSpace No

# This option enable or disable correction of two minus with a dash
# Example:
#CorrectTwoMinusWithDash Yes
CorrectTwoMinusWithDash No

# This option enable or disable correction of (c) with a copyright sign
# Example:
#CorrectCWithCopyright Yes
CorrectCWithCopyright No

# This option enable or disable correction of (tm) with a trademark sign
# Example:
#CorrectTMWithTrademark Yes
CorrectTMWithTrademark No

# This option enable or disable correction of (r) with a registered sign
# Example:
#CorrectRWithRegistered Yes
CorrectRWithRegistered No

# This option enable or disable flushing internal buffer when pressed Escape
# Example:
#FlushBufferWhenPressEscape Yes
FlushBufferWhenPressEscape No

# This option enable or disable flushing internal buffer when pressed Enter or Tab
# Example:
#FlushBufferWhenPressEnter Yes
FlushBufferWhenPressEnter No

# This option disable or enable processing word when pressed Enter or Tab
# Example:
#DontProcessWhenPressEnter Yes
DontProcessWhenPressEnter No

# This option disable or enable show OSD
# Example:
#ShowOSD Yes
ShowOSD No

# This option set font for OSD
# Example:
#FontOSD -*-*-*-*-*-*-32-*-*-*-*-*-*-u
FontOSD -*-*-*-*-*-*-32-*-*-*-*-*-*-u

# Binds OSDs for some actions
AddOSD XneurStart
AddOSD XneurReload
AddOSD XneurStop
AddOSD PressKeyLayout1
AddOSD PressKeyLayout2
AddOSD PressKeyLayout3
AddOSD PressKeyLayout4
AddOSD EnableLayout1
AddOSD EnableLayout2
AddOSD EnableLayout3
AddOSD EnableLayout4
AddOSD AutomaticChangeWord
AddOSD ManualChangeWord
AddOSD ManualTranslitWord
AddOSD ManualChangecaseWord
AddOSD ManualPreviewChangeWord
AddOSD ChangeString
AddOSD ChangeSelected
AddOSD TranslitSelected
AddOSD ChangecaseSelected
AddOSD PreviewChangeSelected
AddOSD ChangeClipboard
AddOSD TranslitClipboard
AddOSD ChangecaseClipboard
AddOSD PreviewChangeClipboard
AddOSD ReplaceAbbreviation
AddOSD CorrectIncidentalCaps
AddOSD CorrectTwoCapitalLetter
AddOSD CorrectTwoSpaceWithCommaAndSpace
AddOSD CorrectTwoMinusWithDash
AddOSD CorrectCWithCopyright
AddOSD CorrectTMWithTrademark
AddOSD CorrectRWithRegistered
AddOSD ExecuteUserAction
AddOSD BlockKeyboardAndMouseEvents
AddOSD UnblockKeyboardAndMouseEvents

# This option disable or enable show popup messages
# Example:
#ShowPopup Yes
ShowPopup No

# This option defines popup expiration interval in milliseconds
# Example:
#PopupExpireTimeout 1000
PopupExpireTimeout 1000

# Binds popup messages for some actions
AddPopup XneurStart
AddPopup XneurReload
AddPopup XneurStop
AddPopup PressKeyLayout1
AddPopup PressKeyLayout2
AddPopup PressKeyLayout3
AddPopup PressKeyLayout4
AddPopup EnableLayout1
AddPopup EnableLayout2
AddPopup EnableLayout3
AddPopup EnableLayout4
AddPopup AutomaticChangeWord
AddPopup ManualChangeWord
AddPopup ManualTranslitWord
AddPopup ManualChangecaseWord
AddPopup ManualPreviewChangeWord
AddPopup ChangeString
AddPopup ChangeSelected
AddPopup TranslitSelected
AddPopup ChangecaseSelected
AddPopup PreviewChangeSelected
AddPopup ChangeClipboard
AddPopup TranslitClipboard
AddPopup ChangecaseClipboard
AddPopup PreviewChangeClipboard
AddPopup ReplaceAbbreviation
AddPopup CorrectIncidentalCaps
AddPopup CorrectTwoCapitalLetter
AddPopup CorrectTwoSpaceWithCommaAndSpace
AddPopup CorrectTwoMinusWithDash
AddPopup CorrectCWithCopyright
AddPopup CorrectTMWithTrademark
AddPopup CorrectRWithRegistered
AddPopup ExecuteUserAction
AddPopup BlockKeyboardAndMouseEvents
AddPopup UnblockKeyboardAndMouseEvents

# This option disable or enable checking language on input process
# Example:
#CheckOnProcess Yes
CheckOnProcess No

# This option disable or enable CapsLock use
# Example:
#DisableCapsLock Yes
DisableCapsLock No

# This option disable or enable correction spaces befor punctuation
# Example:
#CorrectSpaceWithPunctuation No
CorrectSpaceWithPunctuation No

# This option disable or enable pattern mining and recognition (autocompletion)
# Example:
#Autocompletion No
Autocompletion No

# This option disable or enable adding space after autocompletion
# Example:
#AddSpaceAfterAutocompletion No
AddSpaceAfterAutocompletion No

# Add Applications names to exclude it from autocompletion process
# Xneur will not process the autocompletion for this applications
# Example:
#AutocompletionExcludeApp Gnome-terminal

# Use next options for troubleshoot on autoswitching
# Disable autoswitching if pressed backspace
TroubleshootBackspace No
# Disable autoswitching if pressed left arrow
TroubleshootLeftArrow No
# Disable autoswitching if pressed right arrow
TroubleshootRightArrow No
# Disable autoswitching if pressed up arrow
TroubleshootUpArrow No
# Disable autoswitching if pressed down arrow
TroubleshootDownArrow No
# Disable autoswitching if pressed delete
TroubleshootDelete No
# Disable autoswitching if layout switched
TroubleshootSwitch No
# Disable autoswitching for full screen apps
TroubleshootFullScreen No

# Work-arround for compatibility with the completion
CompatibilityWithCompletion No

# Disabling this option will add any application to the list of excluded applications.
TrackingInput Yes

# Disabling this option will disable mouse tracking.
TrackingMouse No

# Disable send KeyRelease event
DontSendKeyRelease No

# Modules list
# Example:
#LoadModule libxntest.so

# That's all


Таким образом, вам только остается прописать свой емайл, сервер исходящей почты и его порт вместо фейковых, и вперед — кейлоггер готов!

Что, где, когда


Конфигурационный файл пользователя программы находится тут — ~/.xneur/xneurrc.
Файл журнала находится тут — ~/.xneur/xneurlog.html
Архивы журнала лежат тут — ~/.xneur/, и имеют вид «xneurlog.html 23.06.2010 09:08:36.gz»

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

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

Предыдущие части


X Neural Switcher — Поваренная книга (Часть 0). Введение. Сборка и настройка
X Neural Switcher — Поваренная книга (Часть 1). Предтечи и аналоги
X Neural Switcher — Поваренная книга (Часть 2). Алгоритмы

При подготовке статьи использованы значки из комплекта беcплатных значков «Aroma».
Tags:
Hubs:
+24
Comments8

Articles