而DAY14我們可以抓到GTPU封包,今天我們來更進一步的解析封包本身,首先我們先來判斷封包類型,分為TCP與UDP。
while True:
data, address = proxy_socket2.recvfrom(BUFFER_SIZE)
proxy_socket2.sendto(data,("10.244.0.90", 2152))
gtpu_packet = GTP_U_Header(data)
if "ICMP" in GTP_U_Header(data).getlayer(0):
print("this is a ICMP Packet")
if "TCP" in GTP_U_Header(data).getlayer(0):
print("this is a TCP packet")
if "UDP" in GTP_U_Header(data).getlayer(0):
print("this is a UDP packet")
而從上面 我們將封包分成ICMP TCP UDP分別進行過濾,並且我們在加一行來顯示目的地IP。
print("the dst ip is : ", GTP_U_Header(data)[IP].dst)
之後我們再進一步新增阻擋的功能,將8.8.8.8的IP設為禁止連線
if GTP_U_Header(data)[IP].dst == "8.8.8.8":
print("this ip is forbidden")
continue
else:
proxy_socket2.sendto(data,("10.244.0.90", 2152))
可以看到 8.8.8.8無法PING通但8.8.4.4可以
而我們嘗試CURL
可以看到有正常的抓到HTTP的封包
而若有其他需要過濾的,可以再額外加判斷並且可以放進資料庫進行封包來源與目的的顯示,不過這邊就先不做,交給讀者自行發揮