У меня вопрос: могу ли я заполнять структуру ethhdr фальшивыми маками. да, вроде могу. socket(PF_INET, SOCK_PACKET, htons(ETH_P_ALL)), потом привязываю его к интерфейсу, еще на всякий случай перевожу интерфейс в промиск мод( ifr.ifr_flags |= IFF_PROMISC;ioctl(s, SIOCSIFFLAGS, &ifr); ), стряпаю езернет хедер, потом ип или арп и отсылаю, вроде все работает, те пакет выходит, и другой комп ловит его....хер его знает..нахрен тогда маки, если их можно изменить, по ним и по ип у нас трафик считают..