2009-06-28 14 views
5

मैं अगले महीने में अपने कीस्ट्रोक का विश्लेषण करने की कोशिश कर रहा हूं और ऐसा करने के लिए एक सरल कार्यक्रम को फेंकना चाहता हूं। मैं कमांड को ठीक से लॉग नहीं करना चाहता हूं लेकिन मेरे मुख्य प्रेस पर सामान्य आंकड़े उत्पन्न करता हूं।जब पाइथन प्रोग्राम अग्रभूमि में नहीं है तो आप कीस्ट्रोक कैसे पढ़ सकते हैं?

मैं पाइथन में यह सबसे आरामदायक कोडिंग कर रहा हूं, लेकिन अन्य सुझावों के लिए खुला हूं। क्या यह संभव है, और यदि ऐसा है तो मुझे क्या पाइथन मॉड्यूल देखना चाहिए? क्या यह पहले ही हो चुका है?

मैं ओएसएक्स पर हूं लेकिन इसे उबंटू बॉक्स और विंडोज एक्सपी पर भी करने में दिलचस्पी होगी।

+3

आप पहले से ही pykeylogger जाँच की है? –

+0

मैंने इसका उपयोग करने की कोशिश की और पाया कि इसे कई पुस्तकालयों की आवश्यकता है जो मेरी स्थापना पर मौजूद नहीं हैं। –

+0

आवश्यक पुस्तकालयों को डाउनलोड करने में क्या गड़बड़ है? –

उत्तर

4

ऐसा लगता है कि आप http://patorjk.com/keyboard-layout-analyzer/

यह आसान कार्यक्रम की आवश्यकता पाठ का कोई खंड का विश्लेषण और तुम बताओ कितनी दूर अपनी उंगलियों यह टाइप करने के लिए यात्रा करने के लिए है, तो अपने इष्टतम लेआउट की सिफारिश की थी होगा।

अपने मूल प्रश्न का उत्तर देने के लिए, लिनक्स पर आप स्थानीय कीबोर्ड, माउस और जॉयस्टिक घटनाओं के लिए/dev/event * से पढ़ सकते हैं। मेरा मानना ​​है कि आप उदाहरण के लिए बस cat /dev/event0 > keylogger कर सकते हैं। घटनाएं struct input_event के उदाहरण हैं। http://www.linuxjournal.com/article/6429 भी देखें।

पायथन का struct मॉड्यूल बाइनरी डेटा को पार्स करने का एक सुविधाजनक तरीका है।

ओएसएक्स के लिए, logkext के स्रोत कोड पर एक नज़र डालें। http://code.google.com/p/logkext/

+0

हम्म, बहुत दिलचस्प लग रहा है। तो मुझे अपनी कीस्ट्रीम लॉग करना चाहिए और फिर पेस्ट करना चाहिए? मैं इसे एक शॉट दे दूंगा, धन्यवाद। –

0

आप जो आंकड़े एकत्र करना चाहते हैं उसके आधार पर, शायद आपको इसे स्वयं लिखना नहीं है; कार्यक्रम Workrave आपको एक छोटा सा ब्रेक लेने के लिए याद दिलाने के लिए एक प्रोग्राम है और कीबोर्ड और माउस गतिविधि की निगरानी करके ऐसा करता है। यह इस गतिविधि के आंकड़े रखता है जिसे आप शायद उपयोग कर सकते हैं (जब तक कि आप बहुत विस्तृत/अधिक विशिष्ट आंकड़े नहीं चाहते)। सबसे खराब स्थिति में आप यह पता लगाने के लिए स्रोत (सी ++) देख सकते हैं कि यह कैसे किया जाता है।

+0

दिलचस्प, मैं इसे देख लूंगा। मैं मूल रूप से जानना चाहता हूं कि जब मैं ड्वोरक में स्विच करता हूं कि मुझे वास्तव में कुछ लाभ मिल रहा है। –

+0

एर, कीबोर्ड लेआउट को कैसे बदलना है, आप किस कुंजी को टाइप करते हैं या आप उन्हें कितनी बार टाइप करते हैं? –

+1

मैं यह सुनिश्चित करना चाहता हूं कि वे जिन चाबियाँ टाइप कर रहे हैं वे सामान्य अंग्रेजी वितरण का पालन करें ताकि मुझे ड्वोरक से फायदा होगा। मैं काफी हद तक प्रोग्राम करता हूं, लेकिन मेरी थीसिस मैं अभी भी एक नियमित अंग्रेजी वितरण के साथ समाप्त होता हूं जब आप मेरे ईमेल लेखन, एसओ पोस्टिंग इत्यादि में कारक करते हैं –

2

जब तक आप स्वयं इंटरफेस लिखने की योजना नहीं बना रहे हैं, तो आपको कुछ लाइब्रेरी की आवश्यकता होगी, क्योंकि अन्य पोस्टर ने इंगित किया है, आपको डेस्कटॉप वातावरण द्वारा प्रबंधित निम्न-स्तरीय कुंजी प्रेस ईवेंट तक पहुंचने की आवश्यकता है।

विंडोज़ पर, PyHook लाइब्रेरी आपको आवश्यक कार्यक्षमता प्रदान करेगी।

लिनक्स पर, आप Python X Library (मानते हैं कि आप एक ग्राफिकल डेस्कटॉप चला रहे हैं) का उपयोग कर सकते हैं।

इन दोनों का उपयोग pykeylogger द्वारा अच्छे प्रभाव के लिए किया जाता है। कुंजी प्रेस इवेंट कैप्चर किए जाने के विशिष्ट उदाहरण देखने के लिए आप स्रोत डाउनलोड करना बंद कर देंगे (उदा। Pyxhook.py देखें)। आदेश को रिकॉर्ड करने के बजाए कुंजी के वितरण को पूरा करने के लिए इसे संशोधित करना छोटा होना चाहिए।

2

वर्तमान X सर्वर के रिकार्ड विस्तार के रूप में, तोड़ा जा लिनक्स के लिए pykeylogger का उपयोग कर वास्तव में मदद नहीं करता है लगता है। इसके बजाय evdev और इसके demo फ़ंक्शन पर नज़र डालें। समाधान नास्टियर है, लेकिन यह कम से कम काम करता है।

यह नियमित रूप से कुंजी और अन्य जानकारी का दर्जा प्राप्त करने के लिए डिवाइस पोल तब डिवाइस

import evdev 
keyboard_location = '/dev/input/event1' # get the correct one from HAL or so 
keyboard_device = evdev.Device(keyboard_location) 

करने के लिए एक हुक की स्थापना करने के लिए नीचे आता है:

keyboard_device.poll() 
संबंधित मुद्दे

 संबंधित मुद्दे