2016-10-11 19 views
3

私はRishabhであり、Pythonプログラミング言語の初心者です。私はPythonを使用して認証プログラムの一種を作成しようとしました。ここで ウェブサイトに格納された文字列からベース64の暗号化された文字列をマッチさせることができません:Pythonプログラム

は、私は私のプログラムでやっている何:

  1. は、私はのような2つの文字列を連結するユーザー名とパスワード
  2. を得る:
  3. その後###ユーザー名:::パスワードI (私はbase64エンコーディングに慣れていませんし、私は以下のPythonプログラムで使用したすべてのツールの初心者です)
  4. 暗号化されたStringを取得しました。 https://pastarchive.blogspot.in

暗号化された文字列をページのHTMLコード内に隠されたテキストとして保存されています:

  • 私は、この目的のために作成されたブログのHTMLに隠された同じ暗号化された文字列を持っている

    <span style="background-color: white; display: none;">HELLO !! POST</span><br /> 
    <span style="background-color: white; display: none;">HELLO !! POST</span><br /> 
    <span style="background-color: white; display: none;">HELLO !! POST</span><br /> 
    <span style="background-color: white; display: none;">HELLO !! POST</span><br /> 
    <span style="background-color: white; display: none;">HELLO !! POST</span><br /> 
    <span style="background-color: white; display: none;">IIKTxK6FBJC+or4JPyQqSI0BrAevMJix//LSgGyoiETg=</span><br /> 
    <span style="background-color: white; display: none;">4M3CXPZGRKUsQRqbaOPd/gajp6XD9irrM2pQ8N9MHyM=</span><br /> 
    <span style="background-color: white; display: none;">F5uxniPOSEiU2h/v1QreAx1+hXzW7GRRcJS15kYE/EM=</span><br /> 
    <span style="background-color: white; display: none;">mAHuxBo7URh0QcRswXTccxq/sMTUNfbqmSaiopZxzuA=</span><br /> 
    

    あなたは上記のHTMLコードで参照ランダムな文字は、ウェブサイトからです:

    1. 私がしているのは、前にも述べたようにプログラム内に暗号化された文字列を作成し、その文字列がWebサイトに存在するかどうかを確認するだけです。表示されている場合は、「正常にログインしました」というメッセージが表示され、表示されない場合は「ログインに失敗しました」と表示されます。

  • 問題:私が持っている問題は、この方法は、妙にもかかわらず、ウェブサイトのソースコードからの正確な文字列を見つけることに成功していないだけで少数のユーザーと休息のために働く、ということである

    正確に暗号化された文字列がWebサイトに存在します。

    あなたが理解できるように

    1.アカウントSucessfullyログのコードをダウンロードし、それを実行してください:ユーザー名がある

    :USER

    パスワードはです。 TEMPPASS

    このアカウントは、私が思った通り完璧に動作します

    2。妙に動作しないアカウント:

    ユーザー名はです:

    パスワードUSER2です:最初のアカウントは完全に正常に動作以降が失敗した理由をCLR

    は、誰かが私に言うことはできますか?そして、どうすればこの問題を解決できますか?私が初心者であるので、この問題を解決するために私を導いてください。

    は...そのだけのローカルアカウントを検証..管理者アカウントで混乱してはいけない

    コード:

    import requests 
    from getpass import getpass 
    from bs4 import BeautifulSoup 
    import re 
    import csv 
    import time 
    from Crypto.Cipher import AES 
    import base64 
    
    counter =1 
    counter2=1 
    import requests 
    import urllib2 
    from bs4 import BeautifulSoup 
    import re 
    
    print("\nPlease Authenticate Yourself:") 
    #print("Welcome to Mantis\n") 
    user = raw_input("\nEnter Username:") 
    password= getpass("\nEnter Password:") 
    print "\n...................................................................." 
    
    matchstring="###"+user+":::"+password 
    matches="" 
    chkstr=matchstring 
    print chkstr 
         ###Encryption 
    msg_text = chkstr.rjust(32) 
    secret_key = '123456789' 
    cipher = AES.new(secret_key,AES.MODE_ECB) 
    encoded = base64.b64encode(cipher.encrypt(msg_text)) 
    #encoded = encoded.encode('string-escape') 
    print "Encrypted Text: \n"+encoded 
    
    
    
    
    ##print matchstring #data sent for Authentication 
    if encoded == "OiKUr4N8ZT7V7hZlwvnXP2d0F1I4xtktNbZSpNotJh0=": 
         print "\nHello Rishabh !! Is the Login Portal Locked ?" 
         print "\n\nAdministrator Access Granted" 
         counter2=2 
    if counter2==1: 
    
         ###https://pastarchive.blogspot.in 
         ###https://pastarchive.wordpress.com/2016/10/08/hello/ 
         html_content = urllib2.urlopen('https://pastarchive.blogspot.in').read() 
         rematchstring=re.compile(encoded) 
         matches = re.findall(encoded, html_content); 
    
    
    if len(matches) != 0 or counter2==2: 
           print 'Sucessfully Logged in\n' 
           print 'Hello '+user.upper()+" !\n" 
           if user.upper()!="ADMINISTRATOR": 
           print "Thanks in Advance for using Eagle, the Advanced Data Parsing Algorithm." 
           print "\nCreator - Rishabh Raghunath, Electrical Engineering Student, MVIT\n" 
           time.sleep(1) 
           print "Let's Start !\n" 
           print ".....................................................................\n" 
    if len(matches) == 0: 
         print '\nUserName or Password is Incorrect\n' 
         print "Please Check Your mail in case your Password has been Changed" 
         print "Log in failed.\n" 
         time.sleep(5)     
    

    この奇妙な問題で私を助けるためにしてみてください。私はこれを解決するための手がかりを持っていません.. ありがとう。

    +1

    Base64は暗号化ではないエンコードです。このようなデータをWebページHTML(非表示または非表示)に保存することは、このエンコーディングが双方向で誰にでもクリアテキストとして読み取ることができるため、良い考えではありません。 – marekful

    +0

    @marekfulはい..私は知っている..私はスーパーセキュアなアプリケーションを構築しようとはしていない。これはちょうど私がやっている小さなプロジェクトのためであり、3人または4人だけで使用されます...そして、誰もこのファイルをexeファイルにパッケージ化して誰もがプログラムのソースコードを表示する。この問題の修正方法を教えていただけますか? –

    +0

    'print()'を使って変数の値を見てください。問題を見つけるのに役立ちます。 – furas

    答えて

    1

    reを使用し、encodec+を使用しているために問題が発生しています。 reは特別な方法で+を扱います。 1+2は今、あなたはBTW if matched != -1 or counter2 = 2if matched == -1:


    を使用する必要がありますhtml_contentまたは-1

    encodecの位置を返します12 or 112 or 1112 etc.

    使用html_content.find(encoded)を探している:あなたがコードに混乱を持っています。それはこのように見えるかもしれません。

    from getpass import getpass 
    from Crypto.Cipher import AES 
    import base64 
    import urllib2 
    import time 
    
    # --- constants --- 
    
    SECRET_KEY = '123456789' 
    
    # --- classes --- 
    
        # empty 
    
    # --- functions --- 
    
        # empty 
    
    # --- main --- 
    
    loggedin = False 
    
    # ------ input 
    
    print("\nPlease Authenticate Yourself:") 
    #print("Welcome to Mantis\n") 
    user = raw_input("\nEnter Username:") 
    password = getpass("\nEnter Password:") 
    
    print "\n...................................................................." 
    
    # ------ encrypting 
    
    matchstring = "###{}:::{}".format(user, password) 
    
    cipher = AES.new(SECRET_KEY, AES.MODE_ECB) 
    encoded = base64.b64encode(cipher.encrypt(matchstring.rjust(32))) 
    
    print "Encrypted Text: \n", encoded 
    
    # ------ checking 
    
    # print matchstring #data sent for Authentication 
    if encoded == "eiKUr3N8ZT7V7RZlwvnXW2F0F1I4xtktNZZSpNotDh0=": 
        print "\nHello Rishabh !! Is the Login Portal Locked ?" 
        print "\n\nAdministrator Access Granted" 
        loggedin = True 
    else:   
        html = urllib2.urlopen('https://passarchive.blogspot.in').read() 
        loggedin = (html.find(encoded) != 1) # True or False 
    
    # ------ info 
    
    if loggedin: 
        user = user.upper() 
        print 'Sucessfully Logged in\n' 
        print 'Hello', user, "!\n" 
    
        if user != "ADMINISTRATOR": 
         print "Thanks in Advance for using Eagle, the Advanced Data Parsing Algorithm." 
         print "\nCreator - Rishabh Raghunath, Electrical Engineering Student, MVIT\n" 
         time.sleep(1) 
         print "Let's Start !\n" 
         print ".....................................................................\n" 
    else: 
        print '\nUserName or Password is Incorrect\n' 
        print "Please Check Your mail in case your Password has been Changed" 
        print "Log in failed.\n" 
        time.sleep(5) 
    
    # ------ end 
    
    +0

    素晴らしい!とった !!私は自分のコードが厄介であることを知っている..実際これは私の最初のPythonプログラムです。私はPythonを学び始めてから2日しか経ちませんでしたので、何をすべきか分かりませんでした..だから私は不完全なものを残しました..これは単なる認証私が書いているプログラムの一部..完全なプログラムは約4倍の大きさです。たくさんのものが非効率的に書かれているので、このコードを改良して改良します。とにかく@furas、ありがとう私を助けてくれた.. !! –

    関連する問題