Python上的简单Radius服务器

2024-09-28 01:30:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手,我正在尝试使用python库pyrad (https://github.com/wichert/pyrad) 实现一个非常简单的Radius服务器来测试一个应用程序。 它唯一要做的就是检查密码是否等于123。 我能得到密码,但它是模糊的。我需要把它弄清楚。 pyrad->;packet->;AuthPacket内部有一个名为pwdextract的方法。 用来完成这个任务的。 我的问题是,我不知道如何在代码中调用这个方法,正如我所说的,我是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()

谢谢


Tags: importself密码dictionaryserverpacketcodereply
1条回答
网友
1楼 · 发布于 2024-09-28 01:30:42

我的朋友帮我解决了这个问题。在

这两种方法可以满足我的需要:

    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)) 

相关问题 更多 >

    热门问题