Python привязать cmd.exe к порту - PullRequest
1 голос
/ 19 июля 2011

Как мне привязать cmd.exe к порту в Python? Я хочу сделать то же самое, что и Netcats "-e" аргумент. Таким образом, эквивалент в Netcat будет:

netcat -l -p 8080 -e cmd.exe

Но я хочу сам написать код на Python, не используя Netcat. Так как это сделанный? Есть ли функции / модули, которые могут это сделать? Как я могу преобразовать процесс (cmd.exe) и сделать его сервером, чтобы он работал на порту?

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Что-то в этом роде, за исключением того, что вам придется изменить его на запуск в Windows (этот пример отлично работает в Linux):

#!/usr/bin/env python

import socket
import subprocess

s = socket.socket(socket.AF_INET)
s.setsockopt(socket.IPPROTO_IP, socket.SO_REUSEADDR, 1)
s.bind(("", 9999))
s.listen(1)
(conn, address) = s.accept()

p = subprocess.Popen(["/bin/bash"], 
                     stdin=conn, stdout=conn, stderr=conn)

Если вы запустите эту программу, а затем в другом терминале используете netcat для подключения к порту 9999, у вас будет оболочка bash для игры. Будьте осторожны, чтобы не позволить всему интернету получить доступ к этому порту, который предоставил бы любому мгновенный доступ к оболочке на вашем компьютере: -)

0 голосов
/ 19 июля 2011
  1. Прослушивание порта
  2. Чтение ввода
  3. Передача его на cmd.exe
  4. Отправка вывода
...