# diameter_credit_control_sim.py - Simulated OCS with missing final-unit indication
class OCS:
def process_CCR(self, request):
# Vulnerability: always returns SUCCESS with same quota, never sends final-unit
return {'Result-Code': 2001, 'Granted-Service-Unit': {'CC-Total-Octets': 5000}}
class Client:
def send_CCR(self):
response = ocs.process_CCR({'type': 'INITIAL'})
print(f"Received quota: {response['Granted-Service-Unit']}")
ocs = OCS()
client = Client()
client.send_CCR()
当用户余额耗尽时,Diameter Credit‑Control 应用未发送 Final-Unit-Indication AVP。客户端继续提供服务而不扣减信用额度,导致可以无限免费使用。
运行模拟:
python diameter_credit_control_sim.py
客户端将无限期获得新的配额。