2016-09-16 33 views
2

我是新來的python,我試圖使用python庫pyrad (https://github.com/wichert/pyrad) 來實現一個非常簡單的Radius服務器來測試一個應用程序。 它唯一要做的就是檢查密碼是否等於123. 我能夠獲得密碼,但它是混淆的。我需要Unobfuscate它。 在pyrad - > packet - > AuthPacket中有一種叫做PwDecrypt的方法。 用於完成此任務。 我的問題是,我不知道如何在我的代碼上調用此方法,正如我所說的,我是Python的新手。在Python上簡單的半徑服務器

這是我使用的測試並獲得混淆的密碼代碼:

#!/usr/bin/python 
from __future__ import print_function 
from pyrad import dictionary, packet, server 
import logging 

logging.basicConfig(filename="pyrad.log", level="DEBUG", 
        format="%(asctime)s [%(levelname)-8s] %(message)s") 

class FakeServer(server.Server): 

    def _HandleAuthPacket(self, pkt): 
     server.Server._HandleAuthPacket(self, pkt) 

     print("") 
     print("Received an authentication request") 
     print("Attributes: ") 
     for attr in pkt.keys(): 
      print("%s: %s" % (attr, pkt[attr])) 
     ########################################### 
     ########################################### 
     ########################################### 
     ########################################### 
     #HERE I GET THE OBFUSCATED PASSWORD 
     print("%s" % pkt['Password']) 
     ########################################### 
     ########################################### 
     ########################################### 
     ########################################### 

     reply = self.CreateReplyPacket(pkt, **{ 
      "Service-Type": "Framed-User", 
      "Framed-IP-Address": '10.10.10.10', 
      "Framed-IPv6-Prefix": "fc66::1/64" 
     }) 
     #reply.code = packet.AccessAccept 
     reply.code = packet.AccessChallenge 
     #reply.code = packet.AccessReject 
     self.SendReplyPacket(pkt.fd, reply) 


if __name__ == '__main__': 

    # create server and read dictionary 
    srv = FakeServer(dict=dictionary.Dictionary("dictionary")) 

    # add clients (address, secret, name) 
    srv.hosts["192.168.0.110"] = server.RemoteHost("192.168.0.110", b"secret", "192.168.0.110") 
    srv.BindToAddress("") 

    # start server 
    srv.Run() 

感謝我的

+0

可能你必須創建'類AuthPacket(分組)'的一個實例。檢查項目'tests'文件夾,特別是'testPacket.py':這個單元測試包含一個'PwDecrypt'的例子,它可能會讓你走上正確的道路。 – sal

+0

感謝您的回覆,我看到它,它不工作。該特定行中有一個錯誤。 – Reckio

回答

0

我朋友幫我解決這個問題。

這兩種方法做我需要:

pwd = map(pkt.PwDecrypt,pkt['Password']) 
    print('User: %s Pass: %s' % (pkt['User-Name'], pwd)) 

    pwd = pkt.PwDecrypt(pkt['Password'][0]) 
    print('User: %s Pass: %s' % (pkt['User-Name'], pwd))