Форум программистов, компьютерный форум, киберфорум
Python: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5

Как в Python 3 получить icmp пакет

28.04.2016, 09:34. Показов 6201. Ответов 5

Студворк — интернет-сервис помощи студентам
Пишу сканер портов на python, нужно получить icmp пакет для определения типа и кода, как это сделать на windows? пишу следующий код, но приходит IP заголовок и UDP пакет
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
with socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP) as sniffer:
        sniffer.bind((host, 0))
        sniffer.settimeout(3)
        with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
            try:
 
                sock.sendto(b'', (host, port))
                data = sniffer.recv(1024)
 
                a = struct.unpack("!BBHHH", data)
                print(a)
            except Exception as e:
                self.port_dict.append(port)
                print(e)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.04.2016, 09:34
Ответы с готовыми решениями:

На входе ip-stream, содержащий icmp пакет(10 байт = 01). В нем скрытое вложение на 28байте. Как написать обработчик?
Имеем ip-stream, в нем нужно найти icmp( 10 байт в hex 01). В icmp скрытое вложение (тоже ip). Нужно проверить 28 байт, есть ли там...

Программно сформировать и отправить IP пакет, принять ICMP сообщение
Необходимо (С, C++, Perl, Assembler или др) сформировать заголовок IP пакета. Данные: длина сегмента, транспорт, контроьлная сумма, IP...

Не могу получить ICMP ответ
Доброго времени суток, проблема вот в чем: По протоколу UDP отправляется пакет с заведомо недостаточным TTL и на несуществующий порт,...

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
28.04.2016, 11:10
https://github.com/graywolf/pyicmp
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.04.2016, 11:51
Python
1
2
3
4
5
6
7
8
9
10
import socket
import struct
 
def listen():
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
    while 1:
        data, _ = s.recvfrom(1508)
        print('icmp: Type: {} Code: {}'.format(*struct.unpack('BB', data[20:22])))
 
listen()
Добавлено через 2 минуты
ааа... виндоус
0
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5
28.04.2016, 14:43  [ТС]
Да, нужно именно для windows, решения выше не помогли
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
28.04.2016, 14:56
Лучший ответ Сообщение было отмечено Nikitc как решение

Решение

win:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import socket
import struct
 
def listen(host):
    s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP)
    s.bind((host,0))
    s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
    
    while 1:
        data = s.recvfrom(65535)[0]
        ip_header = data[0:20]
        ip_struct = struct.unpack('!BBHHHBBH4s4s' , ip_header)
 
        if socket.inet_ntoa(ip_struct[9]) == host:
            print('{} --> icmp: Type: {}, Code: {}'.format(socket.inet_ntoa(ip_struct[8]), 
                                                           *struct.unpack('BB', data[20:22])))
 
listen(socket.gethostbyname(socket.gethostname()))
слушает, если видит icmp в свою сторону - пишет отправителя, тип и код.
1
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5
28.04.2016, 18:21  [ТС]
Круто! спасибо, помогло
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.04.2016, 18:21
Помогаю со студенческими работами здесь

Как определить, какой из подсетей принадлежит пакет IP-пакет?
То есть у Олиферов это всё подробно расписано. Если маршрутизация сделана на основе масок, то надо пробежаться по таблице маршрутизации и...

Godot Engine | Build Error "установите пакет разработчика (пакет SDK или пакет нацеливания)"
Здравствуйте, :senor: У меня проблема когда я пытаюсь нажать на то мне выдает кто знает как это исправить? :help:

Доработка сайта на Python django 1.4.22 пакет xapian
Требуются работы по доработке сайта. Подробнее напишу в личку, после подписания NDA. Подрядчик должен быть с юр. лицом. Работы...

QUdpSocket получить пакет.
Здравствуйте! Проблема у меня такая: Есть у меня железка, которая постоянно, с определенным интервалом, отсылает по UDP протоколу...

Почему не импортируется пакет numpy 1.6.2, скачанный с MacPorts, в python 2.7.3? Mac OS X 10.7.4 (Lion)
Ставлю на Mac OS X 10.7.4 (Lion) пакеты python27 @2.7.3, py27-numpy @1.6.2, py27-scipy @0.10.1, py27-matplotlib @1.1.1, py27-spyder @2.1.9,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru