2016-09-16 10 views
2

Я новичок в python, и я пытаюсь использовать библиотеку python pyrad (https://github.com/wichert/pyrad) , чтобы реализовать очень простой сервер Radius для тестирования одного приложения. Единственное, что нужно сделать, это проверить, равен ли пароль 123. Я могу получить пароль, но он запутан. Мне нужно разморозить его. Существует метод PwDecrypt внутри pyrad -> packet -> AuthPacket. Это используется для выполнения этой задачи. Моя проблема заключается в том, что я не знаю, как назвать этот метод для моего кода, как я уже сказал, я новичок в Python.Простой сервер Radius на 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 (Packet)'. Проверьте папку '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))