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)