Почему на выходе отображается код памяти? - PullRequest
1 голос
/ 30 января 2020

Я пытаюсь изолировать адрес MA C от команды ifconfig, но вывод отображает то, что я считаю кодом памяти. Я использую python 2.7 на VB Kali.

root@osboxes:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.2.22  netmask 255.255.255.0  broadcast 10.0.2.255
        inet6 fe80::1171:bf6a:17f8:972  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:f8:15:03  txqueuelen 1000  (Ethernet)
        RX packets 2593  bytes 3769210 (3.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 794  bytes 57174 (55.8 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Ввод:

#!/usr/bin/env python

import subprocess
import re


def mac_1(network):
    output_check = subprocess.check_output(['ifconfig', network])
    re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w", output_check)
    # print(output_check)


print('[+] MAC Address is ' + str(mac_1))

Код вывода:

/root/PycharmProjects/test001/venv/bin/python /root/PycharmProjects/test001/test001.py
[+] MAC Address is <function mac_1 at 0x7ff4ed70e3b0>

Process finished with exit code 0

Ответы [ 2 ]

1 голос
/ 30 января 2020

str(mac_1), mac_1 - это функция, поэтому она печатает расположение этой функции в памяти. Вы должны вызывать его с аргументом, как вы указали в определении:

def mac_1(network):  # network is the argument

Функция mac_1 также не имеет возвращаемого типа, поэтому даже если вы вызываете ее с аргументом, она просто печать None. Поэтому вам нужно вернуть результаты поиска.

Хотя я мог бы предложить просто использовать другие netifaces . Тогда это так просто, как

>>> addrs = netifaces.ifaddresses('eth0')
>>> addrs[netifaces.AF_LINK]
[{'addr': '00:12:34:56:78:9a'}]
0 голосов
/ 07 февраля 2020

Я выяснил это за несколько дней go и не успел ответить. Вот результат, который я искал:

Вход

#!/usr/bin/env python
import subprocess
import re

output_check = subprocess.check_output(['ifconfig'])
check = re.search(r"\w\w:\w\w:\w\w:\w\w:\w\w:\w\w", output_check)

print("Mac Address is: " + check.group(0))

Выход

Mac Address is: 08:69:18:f9:85:06

Спасибо всем за помощь

...