Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
1

Как создать ip-заголовок через struct.pack?

19.07.2013, 18:52. Показов 2058. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
После упаковки структуры, должна получиться строка длиной 20 байт. А получается 14 байт.
Помогите правильно упаковать.
Python
1
2
3
4
5
TTL = 40
lenght = 0
my_checksum = 0
header_ip = struct.pack("bbhhhbbHss", 0x45, 0, lenght, 0, 0x4001, TTL, 1, my_checksum, socket.inet_aton('123.123.123.123'),socket.inet_aton('127.0.0.1'))
print len(header_ip) #20
Добавлено через 23 минуты
Все, разобрался. Надо было указать длину строки
Python
1
header_ip = struct.pack("bbhhhbbH4s4s", 0x45, 0, lenght, 0, 0x4001, TTL, 1, my_checksum, socket.inet_aton('123.123.123.123'),socket.inet_aton('127.0.0.1'))
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2013, 18:52
Ответы с готовыми решениями:

Как использовать struct.pack()?
Повторяю пример из книги Лутца >>> F = open(‘data.bin’, ‘wb’) # Открыть файл для записи в...

Неправильное преобразование в byte используя struct.pack
Здравствуйте! Имеется функция, преобразующая объект в последовательность байтов. Вот она: def...

Как через pack() запаковать массив с string значениями?
// Создаю массив $aYearColor = array_fill(0,366,'#FFFFFF'); // Запаковываю его $aYearColorBlob...

Как правильно создать структуру (struct)?
Всем добрый день, Мне нужно просто создать струкутру, в который будет 3 значения: ip, login,...

7
42 / 42 / 7
Регистрация: 15.07.2012
Сообщений: 98
20.07.2013, 17:53 2
Почему не scapy?
1
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
20.07.2013, 20:19  [ТС] 3
Scapy в моих кривых руках не хочет работать
Даже простой ICMP-пакет не получается принять
Python
1
2
a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
send (a)
Сниффер вроде работает
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# автор Рыжий Лис
import os, re, sys, socket, struct, select, datetime, time, threading, thread, string
from time import sleep
try:
  s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) #) ) )
except socket.error, (errno, msg):
  if errno == 1:
    msg = msg + ' - Note: running as root.'
    raise socket.error(msg)
  raise # raise the original error
s.bind(('', 0))
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
print "Sniffer Started"
while 1:
  packet, addr = s.recvfrom(65565)
  #| [:20]-IP | [20:28]-ICMP |
  print 'ip источника:\t'+str(ord(packet[12]))+'.'+str(ord(packet[13]))+'.'+str(ord(packet[14]))+'.'+str(ord(packet[15]))
  print 'ip назначения:\t'+str(ord(packet[16]))+'.'+str(ord(packet[17]))+'.'+str(ord(packet[18]))+'.'+str(ord(packet[19]))
  #string.join(str(ord(i)) for i in recPacket[16:20])
  icmpHeader = packet[20:28]
  typep, code, checksum, packetID, sequence = struct.unpack("bbHHh", icmpHeader)
  data = packet[28:]
  print datetime.datetime.now().strftime("%H:%M:%S> ")+data
  print string.join(hex(ord(i)) for i in packet)
  №print len (packet)
  print packet


Добавлено через 5 минут
Пакет вроде отправляет
Bash
1
2
3
4
5
6
7
8
9
10
11
root@0000# scapy
INFO: Can't import python gnuplot wrapper . Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
WARNING: Failed to execute tcpdump. Check it is installed and in the PATH
WARNING: No route found for IPv6 destination :: (no default route?)
Welcome to Scapy (2.2.0)
>>> a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
>>> send (a)
.
Sent 1 packets.
>>>
Добавлено через 1 минуту
А сниффер молчит
0
42 / 42 / 7
Регистрация: 15.07.2012
Сообщений: 98
20.07.2013, 23:07 4
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А сниффер молчит
а если взять wireshark?
2
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
21.07.2013, 01:29 5
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
Scapy в моих кривых руках не хочет работать
Даже простой ICMP-пакет не получается принять
Python
1
2
a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
send (a)
Сниффер вроде работает
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# автор Рыжий Лис
import os, re, sys, socket, struct, select, datetime, time, threading, thread, string
from time import sleep
try:
  s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_ICMP) #) ) )
except socket.error, (errno, msg):
  if errno == 1:
    msg = msg + ' - Note: running as root.'
    raise socket.error(msg)
  raise # raise the original error
s.bind(('', 0))
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
print "Sniffer Started"
while 1:
  packet, addr = s.recvfrom(65565)
  #| [:20]-IP | [20:28]-ICMP |
  print 'ip источника:\t'+str(ord(packet[12]))+'.'+str(ord(packet[13]))+'.'+str(ord(packet[14]))+'.'+str(ord(packet[15]))
  print 'ip назначения:\t'+str(ord(packet[16]))+'.'+str(ord(packet[17]))+'.'+str(ord(packet[18]))+'.'+str(ord(packet[19]))
  #string.join(str(ord(i)) for i in recPacket[16:20])
  icmpHeader = packet[20:28]
  typep, code, checksum, packetID, sequence = struct.unpack("bbHHh", icmpHeader)
  data = packet[28:]
  print datetime.datetime.now().strftime("%H:%M:%S> ")+data
  print string.join(hex(ord(i)) for i in packet)
  №print len (packet)
  print packet


Добавлено через 5 минут
Пакет вроде отправляет
Bash
1
2
3
4
5
6
7
8
9
10
11
root@0000# scapy
INFO: Can't import python gnuplot wrapper . Won't be able to plot.
INFO: Can't import PyX. Won't be able to use psdump() or pdfdump().
WARNING: Failed to execute tcpdump. Check it is installed and in the PATH
WARNING: No route found for IPv6 destination :: (no default route?)
Welcome to Scapy (2.2.0)
>>> a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
>>> send (a)
.
Sent 1 packets.
>>>
Добавлено через 1 минуту
А сниффер молчит
Scapy по дефолту отправляет пакеты не в сетевую карту а в кольцо loopback. Если перехватываешь снифером смотри lo а не ethXX.

Добавлено через 6 минут
Bash
1
2
3
4
5
>>> a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
>>> send(a*10)
..........
Sent 10 packets.
>>>
2
Z3JheSBoYXQ=
342 / 237 / 83
Регистрация: 08.07.2012
Сообщений: 577
21.07.2013, 01:33 6
Как создать ip-заголовок через struct.pack?
0
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
21.07.2013, 15:30  [ТС] 7
Цитата Сообщение от s0rg Посмотреть сообщение
а если взять wireshark?
wireshark нормально принял
Цитата Сообщение от fanatdebian Посмотреть сообщение
Scapy по дефолту отправляет пакеты не в сетевую карту а в кольцо loopback
А как отправить на сетевую карту eth0?
Миниатюры
Как создать ip-заголовок через struct.pack?  
0
Просто Лис
Эксперт Python
5731 / 3530 / 1055
Регистрация: 17.05.2012
Сообщений: 10,359
Записей в блоге: 9
21.07.2013, 16:42  [ТС] 8
Цитата Сообщение от Рыжий Лис Посмотреть сообщение
А как отправить на сетевую карту eth0?
Так?
Bash
1
2
3
4
5
>>> a=IP(src="127.0.0.1",dst="127.0.0.2")/ICMP()/"icmpdata"
>>> sendp(a, iface="eth0")
.
Sent 1 packets.
>>>
0
21.07.2013, 16:42
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.07.2013, 16:42
Помогаю со студенческими работами здесь

Как создать struct из PORT-ов в (CVAVR 3.10)?
Необходимо сделать примерно так: struct PORTnew { PORTA.1 PORTB.2 ...

Как исправить ошибку: Struct contents reference from a non-struct array object
Здравствуйте. Недавно начал работать с симулинк тест менеджером и еще не знаю всех тонкостей работы...

Создать приложение в Delphi, в котором по нажатию кнопки у формы будет меняться заголовок через каждые 2 секунды
очень-очень нужна помощь....

Как создать Большой заголовок
Как создать Большой заголовок с кнопками как в программах Win7 в стиле Aero

Как изменить заголовок навигации через VB?
Здравствуйте! Подскажите пожалуйста, как в VB обратиться к заголовку навигации формы?

Как открыть struct в struct
Здравствуйте, есть код, мне нужно узнать как можно открыть struct в struct, к примеру чтобы...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru