Mã ngắn nhất cho key-logger


8

Được rồi, tôi đề xuất một thử thách key-logger ngắn nhất. Theo giải thích của quý ông tại " Các câu hỏi về log-logger có được phép không? ", Các quy tắc nghiêm ngặt phải được áp đặt để làm cho thách thức này có hiệu lực đối với PPCG.

  1. Trình ghi khóa phải chạy trên Windows, Linux hoặc Mac OSX (mọi ngôn ngữ lập trình đều được chào đón).
  2. Sau khi thực hiện, nó phải hiển thị thông báo: "Tôi sẽ đăng nhập cho bạn" (trong bảng điều khiển hoặc sử dụng GUI).
  3. Các khóa có liên quan để đăng nhập vào thử thách này là các chữ cái (trường hợp không quan trọng) và các số, tất cả các khóa khác như ký hiệu, phím điều khiển và khoảng trắng là tùy chọn và có thể bỏ qua.
  4. Tất cả các lần nhấn phím có liên quan xảy ra trong thời gian chạy (ngay cả khi ứng dụng không tập trung) phải được lưu trong tệp nhật ký có thể được đọc và xác minh bằng bất kỳ trình soạn thảo văn bản nào (ngay cả một trình soạn thảo, miễn là tôi có thể xác minh bằng cách sử dụng biên tập văn bản đó).

Có ai lên không? Ngày nào?


1
"4. [...] được lưu trong tệp nhật ký" ở định dạng nào?
Leaky Nun

Cập nhật câu hỏi của tôi để xác định định dạng dự định.
MathuSum Mut

Tôi có thể dễ dàng đăng nhập những gì được gõ trong REPL của chương trình của mình, điều đó có đủ hay nó sẽ hoạt động khi tôi nhập bất cứ thứ gì trong trình duyệt của tôi hoặc bất kỳ ứng dụng nào khác?
coredump

Có, nó sẽ hoạt động cho mọi thứ, "ngay cả khi ứng dụng không tập trung".
MathuSum Mut

1
Chúng tôi có thể viết chương trình chạy trên mac (AppleScript) không, nếu chúng tôi cung cấp một ví dụ gif của chương trình đang chạy?
Hạ cấp

Câu trả lời:


10

Bash, 90 byte

Điều này hoạt động trên Ubuntu và yêu cầu evtest. Nó chọn một thiết bị là bàn phím và lưu evtestkết quả đầu ra vào tệp l. Nếu bạn muốn một đầu ra có định dạng hơn, tôi có thể làm điều đó với nhiều byte hơn.

echo I\'m gonna log you
sudo evtest /dev/input/by-path/`ls /dev/input/by-path/|grep kbd`>l

1
Bạn xứng đáng được tôn trọng.
MathuSum Mut

5

AutoHotKey, 1171 byte

Vâng, nó cực kỳ lớn, nhưng nó thực hiện công việc.

#NoEnv ;
SendMode Input ;
ToolTip, I'm gonna log you!

~a::fileappend, a, keylog.txt
~b::fileappend, b, keylog.txt
~c::fileappend, c, keylog.txt
~d::fileappend, d, keylog.txt
~e::fileappend, e, keylog.txt
~f::fileappend, f, keylog.txt
~g::fileappend, g, keylog.txt
~h::fileappend, h, keylog.txt
~i::fileappend, i, keylog.txt
~j::fileappend, j, keylog.txt
~k::fileappend, k, keylog.txt
~l::fileappend, l, keylog.txt
~m::fileappend, m, keylog.txt
~n::fileappend, n, keylog.txt
~o::fileappend, o, keylog.txt
~p::fileappend, p, keylog.txt
~q::fileappend, q, keylog.txt
~r::fileappend, r, keylog.txt
~s::fileappend, s, keylog.txt
~t::fileappend, t, keylog.txt
~u::fileappend, u, keylog.txt
~v::fileappend, v, keylog.txt
~w::fileappend, w, keylog.txt
~x::fileappend, x, keylog.txt
~y::fileappend, y, keylog.txt
~z::fileappend, z, keylog.txt
~1::fileappend, 1, keylog.txt
~2::fileappend, 2, keylog.txt
~3::fileappend, 3, keylog.txt
~4::fileappend, 4, keylog.txt
~5::fileappend, 5, keylog.txt
~6::fileappend, 6, keylog.txt
~7::fileappend, 7, keylog.txt
~8::fileappend, 8, keylog.txt
~9::fileappend, 9, keylog.txt
~0::fileappend, 0, keylog.txt

Sáng tạo, đã không xảy ra với tôi để sử dụng màn hình phím nóng: P
MathuSum Mut

Tên của tệp nhật ký có thể là một ký tự duy nhất giúp bạn tiết kiệm 9 byte cho mỗi khóa . Bạn sẽ có thể lặp lại tất cả các khóa trong một vòng lặp for, giúp bạn tiết kiệm nhiều, nhiều, nhiều byte. Vì thế, tôi không tin rằng câu trả lời này đáp ứng các tiêu chí đối thủ nghiêm trọng của chúng tôi.
Mego

Theo các quy tắc trong trung tâm trợ giúp của chúng tôi , tất cả các giải pháp phải là một ứng cử viên nghiêm trọng cho các tiêu chí chiến thắng được sử dụng. Đối với một cuộc thi golf mã, điều đó có nghĩa là tất cả các mục phải thể hiện một số nỗ lực trong việc đánh golf mã.
Dennis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.