45 lines
1.3 KiB
Python
45 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
||
"""本地 SIP 攻击模拟"""
|
||
|
||
import socket
|
||
|
||
def send_sip_register(target_ip, target_port, sip_id, local_ip="127.0.0.1", local_port=50600):
|
||
message = f"""REGISTER sip:{target_ip} SIP/2.0\r
|
||
Via: SIP/2.0/UDP {local_ip}:{local_port};rport;branch=z9hG4bK-test-{sip_id}\r
|
||
From: <sip:{sip_id}@{target_ip}>;tag=12345\r
|
||
To: <sip:{sip_id}@{target_ip}>\r
|
||
Call-ID: test-{sip_id}@{local_ip}\r
|
||
CSeq: 1 REGISTER\r
|
||
Contact: <sip:{sip_id}@{local_ip}:{local_port}>\r
|
||
Max-Forwards: 70\r
|
||
User-Agent: Python-Test\r
|
||
Expires: 3600\r
|
||
Content-Length: 0\r
|
||
\r
|
||
"""
|
||
|
||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
||
sock.settimeout(2)
|
||
|
||
try:
|
||
sock.sendto(message.encode(), (target_ip, target_port))
|
||
response, _ = sock.recvfrom(4096)
|
||
return response.decode()
|
||
except socket.timeout:
|
||
return "Timeout"
|
||
finally:
|
||
sock.close()
|
||
|
||
IP_POOL = ("1.113.12.33","1.113.12.34","1.113.12.35")
|
||
|
||
if __name__ == "__main__":
|
||
|
||
LOCAL_IP = "1.113.12.33" # 模拟IP
|
||
TARGET_IP = "127.0.0.1" # 本地测试(服务器地址)
|
||
TARGET_PORT = 5061 # SIP端口
|
||
|
||
# 模拟攻击:连续发送20个请求
|
||
for i in range(50):
|
||
sip_id = str(7000 + i)
|
||
response = send_sip_register(TARGET_IP, TARGET_PORT, sip_id)
|
||
print(f"[{sip_id}] {response.split(chr(13))[0] if response else 'No response'}") |