• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

python scapy сканер сети

m1a1g1i1

Member
14.02.2020
8
0
BIT
0
Пишу сканер сети на питоне , возникает ошибка при попытке засканить ip`шники из сети (192.168.1.1/24), но когда сканю только один ip все работает идеально, как можно исправить данную ошибку подскажите пожалуйста.

код скрипта :
Код:
#!/usr/bin/env python

import scapy.all as scapy

def scan(ip):
    arp_request = scapy.ARP(pdst=ip)
    arp_request.show()
    broadcast = scapy.Ether(dst="ff:ff:ff:ff:ff:ff")
    broadcast.show()
    arp_request_broadcast = broadcast / arp_request
    print(arp_request_broadcast.summary())
    arp_request_broadcast.show()


scan("192.168.1.1/24")

код ошибки :
Код:
root@kali:~/PycharmProjects/network_scaner# python --version
Python 2.7.18
root@kali:~/PycharmProjects/network_scaner#
root@kali:~/PycharmProjects/network_scaner# pip --version
pip 20.0.2 from /usr/local/lib/python2.7/dist-packages/pip (python 2.7)
root@kali:~/PycharmProjects/network_scaner#
root@kali:~/PycharmProjects/network_scaner# python network_scaner.py
/usr/local/lib/python2.7/dist-packages/scapy/config.py:384: CryptographyDeprecationWarning: Python 2 is no longer supported by the Python core team. Support for it is now deprecated in cryptography, and will be removed in a future release.
  import cryptography
Traceback (most recent call last):
  File "network_scaner.py", line 15, in <module>
    scan("192.168.1.1/24")
  File "network_scaner.py", line 7, in scan
    arp_request.show()
  File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 1261, in show
    return self._show_or_dump(dump, indent, lvl, label_lvl)
  File "/usr/local/lib/python2.7/dist-packages/scapy/packet.py", line 1235, in _show_or_dump
    reprval = f.i2repr(self, fvalue)
  File "/usr/local/lib/python2.7/dist-packages/scapy/fields.py", line 376, in i2repr
    return fld.i2repr(pkt, val)
  File "/usr/local/lib/python2.7/dist-packages/scapy/fields.py", line 502, in i2repr
    x = self.i2h(pkt, x)
  File "/usr/local/lib/python2.7/dist-packages/scapy/layers/l2.py", line 136, in i2h
    iff = self.getif(pkt)
  File "/usr/local/lib/python2.7/dist-packages/scapy/layers/l2.py", line 132, in <lambda>
    self.getif = (lambda pkt: pkt.route()[0]) if getif is None else getif
  File "/usr/local/lib/python2.7/dist-packages/scapy/layers/l2.py", line 400, in route
    fld, dst = fld._find_fld_pkt_val(self, dst)
  File "/usr/local/lib/python2.7/dist-packages/scapy/fields.py", line 313, in _find_fld_pkt_val
    if val == dflts_pkt[self.name] and self.name not in pkt.fields:
  File "/usr/local/lib/python2.7/dist-packages/scapy/base_classes.py", line 133, in __eq__
    p2, nm2 = self._parse_net(other)
  File "/usr/local/lib/python2.7/dist-packages/scapy/base_classes.py", line 99, in _parse_net
    tmp = net.split('/') + ["32"]
AttributeError: 'NoneType' object has no attribute 'split'
root@kali:~/PycharmProjects/network_scaner#

не правильно работают конкретно методы show , но скрипт отправляет пакеты, не могу понять почему не хочет отображать содержимое пакетов..
 
Последнее редактирование:

TR1X

Green Team
04.04.2020
220
156
BIT
134
Данный код заработал у меня. У вас в ошибке пишет что объект типа None, то есть там пусто. Есть рабочий код сканера, попробуй, правда лишняя инфа там отфильтрована, но можете получить ее через summary() или show()
Код:
import scapy.all as scapy
from prettytable import PrettyTable

table = PrettyTable(['IP', 'MAC Adress'])
def local_scan(ip):
    apr_requests = scapy.ARP(pdst=ip)
    broadcast = scapy.Ether(dst='ff:ff:ff:ff:ff:ff')
    arp_pack = broadcast/apr_requests
    answered_list = scapy.srp(arp_pack, timeout=1, verbose=False)[0]
    for element in answered_list:
        table.add_row([element[1].psrc, element[1].hwsrc])
    print(table)
local_scan('192.168.1.0/24')


Только pip install PreetyTable, ну и соответственно подключение к локальной сети)
 

Sombrero

Green Team
23.09.2019
67
4
BIT
0
Ошибка
'NoneType' object has no attribute 'split'
возникает если запускать через python3 . На python скрипт работает .
Похоже что либа под 3 версию не понимает маску подсети /24 в принципе . Или ее нужно объявлять как-то иначе . Все работает через * (192.168.0.*)
 

m1a1g1i1

Member
14.02.2020
8
0
BIT
0
Ошибка

возникает если запускать через python3 . На python скрипт работает .
Похоже что либа под 3 версию не понимает маску подсети /24 в принципе . Или ее нужно объявлять как-то иначе . Все работает через * (192.168.0.*)
заработало так, премного благодарен)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!