Wednesday 2 May 2012

python pcapy + dpkt. Грабинг http хедеров.

Задача: Узнать какие сайты популярны среди пользователей.
Решение: Настраиваем 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