Hi,

Rui wrote:
Hi, how can i do what Encoding.ASCII.GetBytes (in .net, c#) does with
the strings. I am trying to query some dns server to check its

What would it do?

response using udp sockets. Some of the source below:

# encoding: utf8
import socket
import sys
import struct

IP_PORT = 53
server_host = ('4.2.2.1', IP_PORT)
transaction_id = "Q1"
TIMEOUT = 5

type_string =
"\u0001\u0000\u0000\u0001\u0000\u0000\u0000\u0000\u0000\u0000"
trailer_string = "\u0000\u0000\u0001\u0000\u0001"

address = 'google.com'
url_name_start, domain_name = address.split(".")

# Query format copied from the C# example.
#QueryString = TransactionID1 + TypeString + (char)URLNameStart.Length
+ URLNameStart + (char)DomainName.Length + DomainName+ TrailerString;
query =  (transaction_id + type_string + str(len(url_name_start)) +
url_name_start +
         str(len(domain_name)) + domain_name + trailer_string)
print query

You should refrain from trying a 1:1 translation from one language
to another. This makes funny things with natural languages as well
as it is horribly with computer languages.

You should really read on string formatting in python.

Also, while indeed usefull to understand whats going on for production
use this is not recommended anymore, since you would have to randomize
ports for requests instead of using fixed 53UDP.

I'd recommend having a look on python adns - http://code.google.com/p/adns-python/




sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(TIMEOUT)
sock.connect(server_host)

sock.send(query)
data = sock.recv(512)

for data_item in data:
    try:
print chr(data_item)

this is never going to work since recv() returns a string buffer, not
a list of integers.

HTH
Tino

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to