Вообщем проблемма в том что прога похоже не правильно работает раз выводит не правильный IP, т.е. когда я запускаю в инете и приходит какой нибуть пакет то прога должна вытащить IP адрес источника, она вроде как вытаскивает IP но не верный то есть адрес вообще какой то левый. например послал 192.34.180.23, а прога выводит 18.0.32.64. если кто знает в чем может быть проблемма обьясните плз. буду очень благодарен.
| Код | #include <stdio.h> #include <conio.h> #include <packet32.h> #include <ntddndis.h> #pragma comment(lib,"ws2_32.lib") #pragma comment(lib,"packet.lib") void main() { struct ipHeader{ BYTE iph_verlen; BYTE iph_tos; WORD iph_length; WORD iph_id; WORD iph_offset; BYTE iph_ttl; BYTE iph_protocol; WORD iph_xsum; DWORD iph_src; DWORD iph_dest; }; struct in_addr inaddr; struct ipPacketBuffer{ struct ipHeader IPH; char PckData[65516]; }Packet; struct ipPacketBuffer *addrIpBuff; addrIpBuff = &Packet;
char AdapterName[512] = {0}; char *IPsrc; DWORD BufferSize = 1024; LPADAPTER OpenAdp; LPPACKET ipPacket; IPsrc = new char [16];
if(PacketGetAdapterNames(AdapterName,&BufferSize) == 0){ printf("Error \n"); getch(); exit(1); } OpenAdp = PacketOpenAdapter(AdapterName); PacketSetHwFilter(OpenAdp,NDIS_PACKET_TYPE_ALL_MULTICAST); printf("Using Devices: [%s]\n",AdapterName); ipPacket = PacketAllocatePacket(); PacketInitPacket(ipPacket,&Packet,sizeof(Packet)); PacketReceivePacket(OpenAdp,ipPacket,TRUE); addrIpBuff = (struct ipPacketBuffer*)ipPacket->Buffer; inaddr.s_addr = Packet.IPH.iph_src; IPsrc = inet_ntoa(inaddr); printf("IP Sender: [%s]\n",IPsrc); //---- Выодится не правильный IP getch(); PacketCloseAdapter(OpenAdp); PacketFreePacket(ipPacket); return; } | |