Jaze

Forum Replies Created

Viewing 4 posts - 1 through 4 (of 4 total)
  • Author
    Posts
  • in reply to: Managed code in C# #6155
    Jaze
    Participant

    Немного все переделал теперь выглядит так


    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.

    ВСЕ! Разобрался. Вопрос снят.

    in reply to: Managed code in C# #6153
    Jaze
    Participant

    А я совсем не силен в c++ )) Но вот что я обнаружил если вместо
    unsigned char m_szAdapterNameList[ ADAPTER_LIST_SIZE ][ ADAPTER_NAME_SIZE ];
    написать
    unsigned char m_szAdapterNameList[ ADAPTER_LIST_SIZE * ADAPTER_NAME_SIZE ];
    то массив заполняется нормально через каждые 256 элементов.

    in reply to: HTTP Redirection #6109
    Jaze
    Participant

    Ну все – разобрался)) Outpost резал – воспринимал подмену как атаку. Еще один вопрос – не подскажешь где найти простенький алгоритм NAT на С++?

    in reply to: HTTP Redirection #6107
    Jaze
    Participant

    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 – нормально.

Viewing 4 posts - 1 through 4 (of 4 total)