使用python去发送diameter协议消息

python发送diameter协议消息,使用wireshack抓包 将发送的消息进行diameter decode

import socket
import struct

# Diameter 协议常量
DIAMETER_HEADER_LENGTH = 20
DIAMETER_REQUEST_FLAG = 0x80
DIAMETER_APPLICATION_ID = 16777236

# 创建套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 60000))

# 准备 Diameter 请求
session_id_avp = struct.pack('!IHH', 263, 61, 0x40) + '12345'
origin_host_avp = struct.pack('!IHH', 264, 47, 0x40) + 'qwert'
message_length = DIAMETER_HEADER_LENGTH + len(session_id_avp) + len(origin_host_avp)
header = struct.pack('!BBHI', DIAMETER_REQUEST_FLAG, 0, message_length, 265)
header += struct.pack('!L', DIAMETER_APPLICATION_ID)
header += struct.pack('!L', 0)  # Hop-by-Hop Identifier
header += struct.pack('!L', 0)  # End-to-End Identifier
diameter_request = header + session_id_avp + origin_host_avp

# 发送 Diameter 请求
sock.sendall(diameter_request)

# 接收 Diameter 响应
response = sock.recv(1024)
if response:
    print('Received response:', response)
else:
    print('No response received')

# 关闭套接字
sock.close()

抓包结果

img

请指点一下