In [ ]:
from scapy.all import *

In [ ]:
sample_smtp = "data/smtp.pcap"
packets = sniff(offline=sample_smtp)

In [ ]:
packets.nsummary()

In [ ]:
packets[11]

In [ ]:
raw = packets[11].getlayer(Raw)

In [ ]:
raw

In [ ]:
load = raw.fields.get('load').split()[0]

In [ ]:
load

In [ ]:
import base64
base64.b64decode(load)

In [ ]:
packets[12]
raw = packets[12].getlayer(Raw)
load = raw.fields.get('load')
some_encoded_string = load.split(' ')[1]
print some_encoded_string

In [ ]:
base64.b64decode(some_encoded_string)  # only need the encoded part

In [ ]:
raw = packets[13].getlayer(Raw)
load = raw.fields.get('load').split()[0]
print load

In [ ]:
base64.b64decode(load)  # what could this be?!?

In [ ]:
# ^^ a password!

In [ ]:
def filter_packet_by_string(pkt, string):
    if pkt.haslayer(Raw):
        raw_load = pkt.getlayer(Raw).fields.get('load')
        if string in raw_load:
            print pkt.sprintf("\n**QUERY FOUND:**\nFrom {IP:%IP.src% -> %IP.dst%\n}")
            print raw_load

In [ ]:
for pkt in packets:
    filter_packet_by_string(pkt, 'attachment')

In [ ]: