2015-07-23 5 views
1

код:Python декодирования UDP

import socket, binascii, struct 

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP) 
while True: 
    print s.recv(2048) 

выход:

EK9 @@ F5Wjq stackexchangecom электроники
чч

stackexchangecomDa scifi ET @@ < stackoverflowcom meta , StackoverflowcomAmeta , stackexchangecomGsecurity Ee @@ + stackexchangecomscifi

, как вы можете увидеть некоторые из данных было декодировано/интерпретировано, но остальное не совсем уверенно, почему

Может ли кто-нибудь помочь?

+0

Вы изучали запросы? http://docs.python-requests.org/en/latest/# –

+0

Знаете ли вы, в каком формате это все? – Hobnob

ответ

0

Вы печатаете необработанные UDP-пакеты, содержащие произвольные двоичные данные. Некоторые из этих байтов находятся в диапазоне printable, но те, которые не находятся в этом диапазоне, преобразуются в .

Вы можете получить более полный обзор этих данных, напечатав его representation, в котором отображаются загружаемые байты как обычно, и показаны нецензурные как шестнадцатеричные escape-коды. Чтобы сделать это, изменить print заявление:

print repr(s.recv(2048)) 

Я подозреваю, что вы хотите на самом деле декодировать эти пакеты. Это вполне возможно, но это немного технично, и вам, вероятно, следует сначала изучить эту тему. :) Эта статья Silver Moon, Code a network packet sniffer in python for Linux, выглядит весьма полезной.

Смежные вопросы