LINUX.ORG.RU

Ошибка в коде

 ,


0

1
import time
import netsyslog
import syslog
from scapy.all import *

arp_table = {}
def arp_inspection(pkt):
    global arp_table
    op = pkt.getlayer(ARP).op
    src = pkt.getlayer(Ether).src
    if op == 1:
        arp_table[src] = time.time()
    if op == 2:
	dst = pkt.getlayer(Ether).dst
        if dst in arp_table:
            time_arp_req = arp_table.pop(dst, None)
        if int(time.time() - time_arp_req) > 5:
            print "Alert! Attack from %s" % src
        else:
            print "Alert! Attack from %s" % src
def send_syslogd():
       loggers = netsyslog.Logger()
       loggers.add_host("google.ru")
       loggers.log(syslog.LOG_USER, syslog.LOG_NOTICE, "Alert! Attack from" %src, pid=True)
send_syslogd()
sniff(filter='arp', prn=arp_inspection)

На что мне выдает NameError: global name 'src' is not defined

Те кто хорошо шарит в питоне, помогите понять где ошибка


Ты бы хоть написал, в какой строке ошибка, а лучше - полный стек.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)

loggers.log(syslog.LOG_USER, syslog.LOG_NOTICE, «Alert! Attack from» %src, pid=True)

Переменная src не определена в этом месте

hippi90 ★★★★★
()

помогите понять где ошибка

Вот здесь

loggers.log(syslog.LOG_USER, syslog.LOG_NOTICE, «Alert! Attack from» %src, pid=True)

vvn_black ★★★★★
()
src = pkt.getlayer(Ether).src


Задефайнил в функции arp_inspection(pkt), а вызвал вне её:

loggers.log(syslog.LOG_USER, syslog.LOG_NOTICE, "Alert! Attack from" %src, pid=True)


Действительно, в чём проблема.

rotfront
()
Ответ на: комментарий от rotfront
import time
from scapy.all import *

arp_table = {}
def arp_inspection(pkt):
    global arp_table
    op = pkt.getlayer(ARP).op
    src = pkt.getlayer(Ether).src 
    if op == 1:
        arp_table[src] = time.time()
    if op == 2:
	dst = pkt.getlayer(Ether).dst 
        if dst in arp_table:
            time_arp_req = arp_table.pop(dst, None)
            if int(time.time() - time_arp_req) > 5: 
                print "Alert! Attack from %s" % src
        else:
            print "Alert! Attack from %s" % src

sniff(filter='arp', prn=arp_inspection)

На что выдает вот этот трейсбек. Код взят с хабра.

Traceback (most recent call last): File «main3.py», line 20, in <module> sniff(filter='arp', prn=arp_inspection) File «/usr/local/lib/python2.7/dist-packages/scapy/sendrecv.py», line 780, in sniff r = prn(p) File «main3.py», line 7, in arp_inspection op = pkt.getlayer(ARP).op AttributeError: 'NoneType' object has no attribute 'op'

Darki
() автор топика
Ответ на: комментарий от Darki

Код взят с хабра

А вопрос здесь? Мне кажется это странным.

vvn_black ★★★★★
()
Ответ на: комментарий от Darki

И твой вопрос в чем? Непонятно сообщение

File «main3.py», line 7, in arp_inspection op = pkt.getlayer(ARP).op
AttributeError: 'NoneType' object has no attribute 'op'
tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.