Взгляд на RAW сеть с разных сторон (raw socket net).
Добавлено: 03 апр 2008, 23:16
Если кто имел опыт с контроллерами со встроенным Ethernet, могут найти интересным разные способы реализации свободных от IP, TCP, UDP протокольной нагрузки интерфейсов.
http://kerneltrap.org/node/15896
Менее гибко дело обстоит в оффтопик системе. Но поставив winpcap (с биндингами к питону для простоты) можно получать данные запакованные в простые ethernet пакеты.
Простое winpcap/pcapy получение фрэймов ниже IP:
Для того чтоб организовать диалог(winpcap+pcapy только получает, снифит), простым решенем является IP броадкаст (ARP резолвинг не влияет на него) пакетов с ПК и фильтрация их в МК. Размер и количество этих пакетов сравнительно невелико (управляющая информация). Для их аппаратной фильтрации в микроконтроллере на уровне ethernet адресов, можно реализовать что-то типа рукопожатия (hand-shaking) с нахождением и запоминанием адреса хоста.
Простой броадкастинг:
--
http://kerneltrap.org/node/15896
Менее гибко дело обстоит в оффтопик системе. Но поставив winpcap (с биндингами к питону для простоты) можно получать данные запакованные в простые ethernet пакеты.
Простое winpcap/pcapy получение фрэймов ниже IP:
Код: Выделить всё
#!/6aTBa/win32/python
import sys, pcapy
from array import array
def eth_out(header, data):
eth_dst = data[:6] # Most Significaian Byte First
eth_src = data[6:12] # MSB
eth_type = data[12:14]
eth_data = data[14:]
print array('B', eth_data), "<-END\n"
eth0 = pcapy.open_live(pcapy.findalldevs()[1], sys.maxint, 0, sys.maxint)
while 1:
eth0.dispatch(1, eth_out)
Простой броадкастинг:
Код: Выделить всё
#!/6aTBa/win32/python
import socket, time
s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_RAW)
s.connect(("255.255.255.255",0))
while 1:
print "s:--\n", s.send("X-Ether!")
time.sleep(1)
Код: Выделить всё
sed 'sed && sh + olecom = love' << ''
-o--=O`C
#oo'L O
<___=E M