ααΆααααα ααααααΆαααΆαααααααααΆαα xneur ααΆαααααΎα±αααααα»αααΊα αΆαααααααααα»αααααααααααΆααα½αααα α»αααααααααα (α αΆααααΆααααΈααΆαααααααα OpenSUSE 15.1 ααΎαα»αααααΌαααααΎαα»αααααααα»αα ααΆαα½αααΉα xneur ααααΌαααΆαααΎα αααα’α½α ααΆαααααααΆααααααα’αΆαααααα αα·αααΆαααααΉααααααααα½αα±ααα’ααααααΎα ααΆααααααααΆααΆαα½αααΉαααΆααααα αΌαααααΆαα α»α ).
"Ah, damn ααΆααααααααααα»αααΆαα αΆααααααΎαααΆααα αααα»αααααααα»α" - αα αααα»αααΆαααΆααααααααα»αααΆααΎαα‘αΎαααΆααΉαααΆααα’αΆαααααΆαα αα·ααα·αααααααααΆααα·αααααΆαα
αααα»ααααααΆαα½αααααΆααα αααα»α (ααΆαα·ααααααα
ααΆ) α’αΆα
αααααΆααααΌαα’αααΈααααααα»αα
ααααΆααααΆαα
αααΆααα α αΎααααα»αα
ααααΆα (ααααΌαααΈ Punto Switcher α αΎααααααΆαααα α’ααα»αααα Windows Vista ααΈαααα»αααααΌααα
Linux ααΈ xneur) αα·αααααΆαααα½αα αααααΉαααΆα’ααααααααααΆααααα·ααα
αααα»αααααααα»α (ααΆααααααΆααΆααΎαα‘αΎααα
α
α»ααααα
ααααααΆαααΆαααΆαααααααΈ) ααααααααΎ "Pause / Break"α α αΎαααα½αααΆαα’αααΈααααααα»αααΆαααΆαα
αα αααααα ααα·αααααΆααααΆααΆαααααααα’αααααΎα (ααΆααααααααααααααα»α) αααα»αααΆα/ααΆααααα»αααααΆαα ααααααα αααααααα αΎαα
TL.DR
ααααααααΆααα’ααααααααααΆααααα’α·ααα
αα
αααααααΉαα’αα»ααααααΆα, ααΌα
ααααααααΌα -
α₯αα·ααΆααααΆααααααααααΌαααΆα hardcode αα αα α»ααααααα
- "Pause/Break"α pads (Backspace) ααΆααΆαααα α»αααααα ααααΌαααααααα αααα»ααααα’α½α ααααα (α αααααααα 0 αα·α 1) α αΎαααΆααααααααα
- "αααααΆ (Ctrl) ααααααααααααΆαα’αααΈ"α ααααΌαααααααα αααα»ααααα’α½α ααααα (α αααααααα α αα·α α‘)α
- "ααΆαααααΆααααααΌαααααααααααααΆαα’αααΈ"α ααΎαααααα #0 αα αααα»ααααα’α½α αααααα
- βααααΌαααααΆααααααααΆαα’αααΈβα ααΎααααααααα α‘ αααα»ααααα’α½α αααααα
α αΆααααΈααααααααα αααα»αααΆαααααααααααααα₯αα·ααΆααα ααΎααααΆαααα·αααααα’ ααΆαα·ααα½αα±ααα αΆααα’αΆαααααααα (ααΆααααΉααααα»ααααΆαααΆααααα) α αααα»αααΏααΆαα ααΎ Habre ααΆαααΆααααααααααααΆαααααααααα·ααααααααΆααααα αΆααααααααααΆα
NB αααααΆααα αα αααα»ααααααα αα α»αααααα keylogger ααααΌαααΆαααααΆαααα "/dev/input/", xswitcher ααααΌαααααααΎαααΆαααΆ rootα
chown root:root xswitcher
chmod +xs xswitcher
ααΌαα αααΆα: ααα αΆααα―αααΆαααΆαα½α suid ααααΌαααααΆ root ααΈααααα ααΎα’αααααΆααΆααα αΆαα - αααα»αααΏαααα α αΎαααΉαααΎααα αααα αΆααααααΎαα
Paranoids (αααα»ααα·αααΆαααααΈααΎαααα) α’αΆα
ααααΌαααΈ
go get "github.com/micmonay/keybd_event"
go get "github.com/gvalkov/golang-evdev"
### X11 headers for OpenSUSE/deb-based
zypper install libX11-devel libXmu-devel
apt-get install libx11-dev libxmu-dev
cd "x switcher/src/"
go build -o xswitcher -ldflags "-s -w" --tags static_all src/*.go
αααααα autorun ααΎααααΈααααααααααΆαα· (α’αΆαααααααΎ DE) α
ααααΎααΆα "αα·ααα»αααα" (β30 CPU αα·ααΆααΈαααα»ααα½ααααα β12 MB αααα»α RSS)α
ααΎαααααααΆααααα’α·α
α₯α‘αΌαααα - ααααααΆααααα’α·αα
ααααΆααααΆααααΌαααααΌαααΆαα§αααα·ααααααααααααααα α·ααα αΉααααααααα»αααααΌαα‘αΎα α αΎααααα»ααααα·ααααα»αααΆαα αΆααααααΎααα½αααααααααα ααΌα αααα α’αααΈααααααααΆαααααΌαααΆααααααΌααααα»α (ααααΆαααααα αααα»αααα―αααΆα) αα·αααααααααααααα AGPL ("αααΆααααααα αααΆα")α
ααΌα xswitcher ααααΌαβααΆαβαααααβααΆ golang αααβααΆαβααΆαβαα½αβαααα αΌα C αα·α βαααα»αα αα·ααΈααΆαααααβαααβααααΌαβααΆαβααβααααααβααΆβααΉαβαααααβααΆαβαα·αβααβαα·α βαααα»α (αα αΌαβααβαααβαααβααα)α ααΆααααααΆαααααααΆααααα»αααΆαααααΆααααΆαααΆααααΆαααα cgo α
ααα·ααααΌαααΆαααΆααα
αααα
αααα»αα’ααααα ααΈααααααααααα½αααααΆαααα
αΈα’αααΈαα½α αα·αααΌαα ααα» αααααΆααα ααΌα xneur "αα·αααΆααααα»ααααα·α" αααα»αααααΆααΆα
ααα»α
α
αΆααααααΎα
ααΆαααααΎααααΆαα "/dev/input/" ααΆααα»ααααααααα·ααααααΆααΆααααΈα (α’αααΈααααααααΆαα’αΆα ααΎαααΎα αα½αααΆααααααΆααα α»α αααααΆαα α»α ααΆαα½αααΉαααΆαααααΎααααααααααααααααααααααα·) αα·ααα»ααα·ααααα·α αα»ααα·ααααα·ααΊα
- ααααΎααααααααααααααααααααααα· (ααααΉαααα·ααΆααααααααΆααααααΌα "2") αα·αααΆααααααΆαα½αααΆαααααΆααΆααααααααααΆαα½α xx ααα
- αα·αα’αΆα ααΎαααΎαααΆααααα αΌαααΆααααα ααα»α αααααΆαα X11 (αααααΆααααααα VNC ααααΎααΆαααΆα§ααΆα ααα)α
- ααααΌαααΆαααΆ root α
αααααΆααα·αααα α’αααα’αΆα
ααΆαααααΉαααα·ααΆααα X ααΆαααα "XSelectExtensionEvent()" α α’αααα’αΆα
ααΎααα
ααΆαααααα·ααααΆα "αααα‘αααααα·α" ααααΌαααΆαααααΎα‘αΎααααααΈαααααΆαα α»α αα·αααα·αα ααΌαα’ααα»ααααα’ααααα·αααααα keybd_event ααα»ααααααΆαααΆαα’ααΌααΈααααα·ααααααααα α αΎαααΉαααααΌαααααΎααααααααααααααααα α§ααΆα ααα Win-key ααΆαααααΆαααααΎαααΎααα½αααΈ 3 αααααΆαααααα»αα α αΎαααΆααα Win ααΆααααααααα»ααααααααααααΌαααΆααααααααααα·αα
ααα α»ααααααααααΆαα
- ααΎααα·αααΉαα’αααΈααΆααα’ααα’αααΈααΆααααα αΌα "αααΆαααΆαα»" (α§ααΆα αααα Β½) α ααΆαα·αα αΆαααΆα ααα ααααααααα
- ααα·αα‘αΎααα·ααα·αααααΉαααααΌα Win ααααΉαααααΌαα αααα»αβααααΈβααααβαααα»α ααΆβαααααβααΆαβααΆααβααααααβααα‘ααα
- αα·αβααΆαβααΆαβαα·ααΆαβαααα
αΌαβαααβα’αΆα
βαααβααΆαβααα αααα½ααααα·α ααΆααα»αααΆαααΆα
αααΎαα αααααααα(), αααααΆ (Ctrl) ααααΆαα(), ααααΆααααααα() ααααΆααααααα()α ααααααΈα
nsmcan αααααΆααααΆαααα α·ααααα»αααΆααα ααααΌαα αΎααα ααΈαααα ααΆαα½αααΉαααααΌααΆαααΈααΈααααΆααααΆαααα½α α’αααα’αΆα α αΆααααααα α»ααα ααααααα½αα
αα ααααααααααααα»ααα·αααΉα "αααα" α αΎααααα»αααΉαααΈαααΆαα ααααααΆαααααααααααααΆαα½αα - (ααααααΆααα αΆαα) ααΆαααααΎααααΆαααααααΆαααααααααΆ (keyboardEvents, miceEvents)α
ααα ααααΈααααα·ααααΆα
ααΌαααΊααΆααΈαα·αα·ααΈααΆαααααααα»αα α αΎααααααααΌα αααα»αα ααΌα αααα αααα»αβαα½αβα α·αααβαααα½αβα―αβαααβαααααΉαβααΆβα’αααβαα αα αααααβααααΎαααβααΆααα’ααβααΉαβα’αΆα βαααα ααβααΌαβα’αααΈβαααβααΆααβα ααβααΆαα α αΎααααααΆαααααα ααα·ααααααααΉααα·ααα·ααΆααααααααΆαααΆαααΆαααα ααΌα ααΆααΆαα αααΎαααααΆαααααααααΆααααΆααααααΆαα
ααΌαααααΆαααα’!
ααααα: www.habr.com