gpt4 book ai didi

python - Python 上的简单 Radius 服务器

转载 作者:行者123 更新时间:2023-12-04 03:19:01 26 4
gpt4 key购买 nike

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

谢谢

最佳答案

我的 friend 帮我解决了这个问题。

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

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

关于python - Python 上的简单 Radius 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534494/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com