Volt-

Пользователи
  • Публикаций

    11
  • Зарегистрирован

  • Посещение

Информация о Volt-

  • Звание
    Пользователь
  1. Спасибо, я раньше находил эту статью, но по ней ещё больше вопросов. Пытался воспроизвести у себя, но ругается на WriteToBytes, WordToBytes, LongWordToBytes, ToBytes, BitsToByte, BytesToWord, ReadFromBytes, ByteToBits.
  2. Попробовал сделать через idDNSServer, но ответ так и не приходит в командную строку. Выкладываю исходник. DNS2.rar Запускаете его, заходите в командную строку и набираете nslookup google.ru 127.0.0.1 и увидите что в неё (командную строку) не придет ответ от нашего сервера DNS.Вопрос в том, как правильно сформировать ответ что бы он дошел до командной строки. Если у кого получиться добиться получения ответа в командно строке, напиши пожалуйста. Очень хочется разобраться в вопросе.
  3. Rusland При всем уважении к сообществу, я не знаю как нужно формировать ответ. Прошу помощи у гуру.
  4. Странно, у меня на Delphi XE7 на эту строчку не ругается. Попробуйте для теста в ручную забить. MainForm.IdDNSResolver.Resolve('google.ru')
  5. Пример приложил. Запускаете его, заходите в командную строку и набираете nslookup google.ru 127.0.0.1 и увидите что в неё (командную строку) не придет ответ от нашего сервера DNS. Вопрос в том, как правильно сформировать ответ что бы он дошел до командной строки. DNS.rar
  6. А как сформировать эти данные для отправки в IdDNSResolver1? Уже всю голову сломал. =( procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin form1.IdDNSResolver1.Resolve('google.ru'); ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort,form1.IdDNSResolver1.ГдеХранитсяОтветВФорматеTBytes); end; Я не могу понять как мне сделать пакет для отправки ответа. Как TBytes сформировать. Или я чего то не так понимаю?
  7. Теперь проблема в следующем. Получив запрос DNS я его отправляю через idDNSResolve и ответ отправить обратно в командную строку. procedure TForm1.UDPBeforeQuery(ABinding: TIdSocketHandle; ADNSHeader: TDNSHeader; var ADNSQuery: TIdBytes); begin form1.IdDNSResolver1.Resolve('google.ru'); form1.IdDNSResolver1.DNSHeader.AA:=ADNSHeader.AA; form1.IdDNSResolver1.DNSHeader.ANCount:=ADNSHeader.ANCount; form1.IdDNSResolver1.DNSHeader.ARCount:=ADNSHeader.ARCount; form1.IdDNSResolver1.DNSHeader.BitCode:=ADNSHeader.BitCode; form1.IdDNSResolver1.DNSHeader.ID:=ADNSHeader.ID; form1.IdDNSResolver1.DNSHeader.NSCount:=ADNSHeader.NSCount; form1.IdDNSResolver1.DNSHeader.Qr:=1; form1.IdDNSResolver1.DNSHeader.OpCode:=ADNSHeader.OpCode; form1.IdDNSResolver1.DNSHeader.QDCount:=ADNSHeader.QDCount; form1.IdDNSResolver1.DNSHeader.RA:=ADNSHeader.RA; form1.IdDNSResolver1.DNSHeader.RCode:=ADNSHeader.RCode; form1.IdDNSResolver1.DNSHeader.RD:=ADNSHeader.RD; form1.IdDNSResolver1.DNSHeader.TC:=ADNSHeader.TC; ABinding.SendTo(ABinding.PeerIP,ABinding.PeerPort,form1.IdDNSResolver1.DNSHeader.GenerateBinaryHeader); end; Но в командной строке ответ не отображается. Как правильно его отправить?
  8. Евгений Корепов Спасибо за наглядное разъяснение. С парсингом разобрался. Сейчас запрос приходит как нужно.
  9. Прочитать DNS запрос в idUDPServer

    Добрый день. Кинул на форму idUDPServer1 и Memo1 В событии idUDPServer1.OnUDPRead написал: procedure TForm1.IdUDPServer1UDPRead(AThread: TIdUDPListenerThread; const AData: TIdBytes; ABinding: TIdSocketHandle); begin Memo1.Lines.Add(BytesToString(AData,13)); end; в событии Form1.OnCreate написал: procedure TForm1.FormCreate(Sender: TObject); begin idUDPServer1.DefaultPort:=53; idUDPServer1.Active:=True; end; Запускаю проект. Захожу в командную строку Windows и набираю команду: nslookup google.ru 127.0.0.1 В Memo1 появляется DNS запрос, но что то не так с кодировкой. Первая строчка должна выглядеть так "1.0.0.127.in-addr.arpa" а вторая и последующие так "google.ru" Как поправить?