Forum Replies Created
-
AuthorPosts
-
Немного все переделал теперь выглядит так
api->GetTcpipBoundAdaptersInfo(adapterList);
const char* name = (const char*)adapterList->m_szAdapterNameList[2];
char* friendlyName;
bool res = api->ConvertWindows2000AdapterName(name, friendlyName, 256);
в этом случае name показывает реальную информацию о адаптере(/DEVICE/{Идентификатор}), вызов Convert2000AdapterName возвращает true вот только friendlyName не записывается(( Может я чего с указателями путаю? Это уже почти чистый C.
ВСЕ! Разобрался. Вопрос снят.
А я совсем не силен в c++ )) Но вот что я обнаружил если вместо
unsigned char m_szAdapterNameList[ ADAPTER_LIST_SIZE ][ ADAPTER_NAME_SIZE ];
написать
unsigned char m_szAdapterNameList[ ADAPTER_LIST_SIZE * ADAPTER_NAME_SIZE ];
то массив заполняется нормально через каждые 256 элементов.Ну все – разобрался)) Outpost резал – воспринимал подмену как атаку. Еще один вопрос – не подскажешь где найти простенький алгоритм NAT на С++?
I have recalculated TCP checksum also. When sending packet I change desination IP and when recieving I change source IP(as was described in some topic here). Redirection of telnet, ping works fine and http redirection is not(( here is code
void filter()
{
WaitForSingleObject ( hEvent, INFINITE );
ResetEvent(hEvent);
while (api->ReadPacket(request))
{
if (buffer->m_dwDeviceFlags == PACKET_FLAG_ON_SEND)
{
printf("Attemp to send...n");
parsePacketHeaders(buffer);
api->SendPacketToAdapter(request);
}
if (buffer->m_dwDeviceFlags == PACKET_FLAG_ON_RECEIVE)
{
printf("Recieved...n");
parsePacketHeaders(buffer);
api->SendPacketToMstcp(request);
}
}
}
PINTERMEDIATE_BUFFER parsePacketHeaders ( PINTERMEDIATE_BUFFER pBuffer )
{
ether_header_ptr pEthernet = (ether_header_ptr)&pBuffer->m_IBuffer;
if(ntohs(pEthernet->h_proto) == ETH_P_IP)
{
iphdr_ptr pIp = NULL;
tcphdr_ptr pTcp = NULL;
pIp = (iphdr_ptr)&pBuffer->m_IBuffer[sizeof(ether_header)];
UCHAR IpProto = pIp->ip_p;
if(IpProto == IPPROTO_TCP)
{
//pTcp = (tcphdr_ptr)(((PUCHAR)pIp) + sizeof(DWORD)*pIp->ip_hl);
}//tcp??
//redirection here
if ((pIp->ip_dst.S_un.S_un_b.s_b3 == 32) & (pIp->ip_dst.S_un.S_un_b.s_b4 == 14))
{
pIp->ip_dst.S_un.S_un_b.s_b4 = 9;
pIp->ip_dst.S_un.S_un_b.s_b3 = 32;
recalculateIPChecksum(pBuffer);
recalculateTCPChecksum(pBuffer);
}
if ((pIp->ip_src.S_un.S_un_b.s_b3 == 32) & (pIp->ip_src.S_un.S_un_b.s_b4 == 9))
{
pIp->ip_src.S_un.S_un_b.s_b4 = 14;
pIp->ip_src.S_un.S_un_b.s_b3 = 32;
recalculateIPChecksum(pBuffer);
recalculateTCPChecksum(pBuffer);
}
}
return pBuffer;
}
SerpentFly – ты русский? Если да – то пиши по-русски)) А то я думал тут все из-за бугра.
Еще ethreal ом посмотрел – модифицированные http пакеты не выходят(( просто Ip(ping) telnet – нормально. -
AuthorPosts