Задача: Узнать какие сайты популярны среди пользователей.
Решение: Настраиваем span порт на циски и подрубаем его к серверу.
Скрипт:
import dpkt
import pcapy
def sniff(interface):
reader = pcapy.open_live(interface, 1500, 0, 100)
reader.setfilter('ip proto \\tcp')
reader.loop(0, callback)
def callback(hdr, buf):
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
if isinstance (tcp, str): return
if tcp.dport == 80 and len(tcp.data) > 0:
try:
http_req = dpkt.http.Request(tcp.data)
print http_req.headers['host'], len(tcp.data)
except:
pass
if tcp.sport == 80 and len(tcp.data) > 0:
try:
http_res = dpkt.http.Request(tcp.data)
print http_res.headers['host'], len(tcp.data)
except:
pass
if __name__ == "__main__":
sniff('eth1')
Решение: Настраиваем span порт на циски и подрубаем его к серверу.
Скрипт:
import dpkt
import pcapy
def sniff(interface):
reader = pcapy.open_live(interface, 1500, 0, 100)
reader.setfilter('ip proto \\tcp')
reader.loop(0, callback)
def callback(hdr, buf):
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
if isinstance (tcp, str): return
if tcp.dport == 80 and len(tcp.data) > 0:
try:
http_req = dpkt.http.Request(tcp.data)
print http_req.headers['host'], len(tcp.data)
except:
pass
if tcp.sport == 80 and len(tcp.data) > 0:
try:
http_res = dpkt.http.Request(tcp.data)
print http_res.headers['host'], len(tcp.data)
except:
pass
if __name__ == "__main__":
sniff('eth1')
Запускаем скрипт и перенаправляем поток вывода в файл.
No comments:
Post a Comment