2012-04-29 5 views
1

Привет, мне нужна помощь, пытаясь получить доступ к элементам в том, что кажется кортежем, который возвращает scapy. Код ниже.Получение переменных из Scapy с использованием Python

ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
ans.summary(lambda (s,r): r.sprintf("%IP.src%")) 

Если я введу Scapy и введите обе эти команды вручную, он вернет один IP-адрес. Однако я запускаю его из сценария Python и должен хранить этот IP-адрес в качестве переменной. Это может быть глупый вопрос, и я просто изучаю Scapy, но как бы сохранить этот IP-адрес как переменную, используя scapy? Я хочу добиться чего-то вроде ниже.

#!/usr/bin/python 
from scapy.all import * 
ans,unans=sr(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
SourceIP = ans.summary(lambda (s,r): r.sprintf("%IP.src%")) 
+0

Почему вы не работали? Какая ошибка вы получили или какой результат вы получили, чего не хотели? –

ответ

3

Если вам понадобится значение уровня, используйте метод getlayer. Так что просто измените вещи на:

ans = sr1(IP(dst="www.google.com",ttl=5)/ICMP(),verbose=0) 
address = ans.getlayer(IP).src 

Существует еще один способ, если существует слой, который возвращает true или false. Вот пример этого.

if ans.haslayer(IP): 
    print "Packet has the layer IP" 
+0

скорректировал то, что только работал в интерактивных окнах, мои извинения .. – dc5553

+1

Это прекрасно работает за вашу помощь – Jamesla

Смежные вопросы