Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Python: Сети

Войти
Регистрация
Восстановить пароль
 
Nikitc
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5
#1

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

28.04.2016, 09:34. Просмотров 1082. Ответов 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)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.04.2016, 09:34
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как в Python 3 получить icmp пакет (Python):

Как получить GET-запрос на Python? - Python
Как получить GET-запрос на Python 3? аналогичный вариант на PHP выглядит так: print $_GET; , только мне надо на Python

Как скомпилировать python 3.3.3 в exe? Как забустить cx-Freeze что бы получить exe? - Python
Здравствуйте, всем. Помогите, пожалуйста: Как скомпилировать python 3.3.3 в exe? Как забустить cx-Freeze что бы получить exe?

Python - момент истины. Python - как оружие возмездие против системы - Python
Какие модули в python мне нужны для взлома баз данных? Перехвата информации? Внедрения в систему? Добавлено через 10 минут Хочу...

Как из Python скрипта выполнить другой python скрипт? - Python
Как из Python скрипта выполнить другой python скрипт? Если он находится в той же папке но нужно передать еще передать скрипту аргументы.

Где получить практические уроки по Python? - Python
Всем привет, уважаемые форумчане! Я долгое время сидел на РНР (сайтики делаю) и сейчас решил, что пришло время начать работать с...

Нужно с помощью Python получить в буфере обмена скриншот нужного окна. - Python
Можно ли с помощью Python как то сделать скиншот нужного мне окна. Например поместить его в буфер обмена. Есть какие то варианты...

5
alex925
2510 / 2160 / 509
Регистрация: 19.03.2012
Сообщений: 8,405
28.04.2016, 11:10 #2
https://github.com/graywolf/pyicmp
0
Jabbson
Модератор
Эксперт по компьютерным сетям
3152 / 2230 / 458
Регистрация: 03.11.2009
Сообщений: 7,030
Записей в блоге: 3
28.04.2016, 11:51 #3
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
Nikitc
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5
28.04.2016, 14:43  [ТС] #4
Да, нужно именно для windows, решения выше не помогли
0
Jabbson
Модератор
Эксперт по компьютерным сетям
3152 / 2230 / 458
Регистрация: 03.11.2009
Сообщений: 7,030
Записей в блоге: 3
28.04.2016, 14:56 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Nikitc
0 / 0 / 0
Регистрация: 28.04.2016
Сообщений: 5
28.04.2016, 18:21  [ТС] #6
Круто! спасибо, помогло
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2016, 18:21
Привет! Вот еще темы с ответами:

Как устанавливать пакет matplotlib - Python
Здравствуйте такой вопрос как надо устанавливать правильно пакет matplotlib-1.3.1 tar.gz У меня Windows 7. 1)Простое копирование(перед...

Как установить пакет в виртуальное окружение? - Python
Делаю так: virtualenv .virtualenv ln -s .virtualenv/bin/activate source activate Дальше ставлю пакеты но они ставятся не в...

Как установить пакет mpi4py на установленную Anaconda - Python
Здравствуйте! Здесь указано, чтобы установить пакет mpi4py нужно ввести https://anaconda.org/anaconda/mpi4py это в интерпретатор. Но...

Ping с использованием ICMP - Python
Помогите пожалуйста, нужно написать функцию, для проверки доступности хоста (Ping) с использованием ICMP, но что-бы работала без root прав....


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

Или воспользуйтесь поиском по форуму:
6
Yandex
Объявления
28.04.2016, 18:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru