Как узнать процессор python
Обновлено: 07.07.2024
Чтобы просто увидеть IP-адрес и другие сетевые настройки, вам нужно перейти в командную строку и запустить команду ipconfig / all. Ситуация — одна из самых распространенных для эникейщиков и удаленных шаманов, но, по крайней мере, ее можно быстро решить. Но если вам нужно собрать более серьезный набор информации о машине, с которой вы теперь будете работать, без автоматизации вам не обойтись. Этим и займемся.
Доступ к компьютерной информации без санкции является преступлением. Ни автор, ни редакция не несут ответственности за ваши действия.
Задачи
Давай сначала обрисуем, что мы вообще планируем делать. Я планирую собирать следующую информацию:
- IP-адрес.
- MAC-адрес.
- Имя пользователя.
- Тип операционной системы.
- Скорость работы системы.
- Время.
- Скриншот.
- Скорость интернет‑соединения.
- Модель процессора.
И отправляться это все будет прямиком тебе в телегу через специальный бот.
Инструменты
Сначала рассмотрим, где мы будем писать код. Вы можете писать код в обычном блокноте Windows, но мы будем использовать специальную среду разработки Python — PyCharm. Установка и настройка просты как два рубля: скачайте установщик, запустите его — и нажмите «Далее» при появлении такой кнопки.
Еще нам нужен Python. Буду использовать версию 3.9.0 — уверен, что с ней все работает.
Основа программы
Для отправки данных я решил использовать робота Telegram. Вы можете создать его через BotFather, а затем сохранить токен своего создания. Вы не можете опубликовать его — любой, кто получит этот токен, сможет взять под контроль вашего бота.
Для подключения к Bot API «телеги» нужны всего две строчки:
Чтобы оценить быстродействие, можно написать еще пару строк. Весь дальнейший код расположим между ними. Описанное выше подключение бота уже вписано сюда
Теперь перейдем собственно к сбору данных.
Сбор данных
Я не буду долго ходить вокруг да около и сразу начну разбирать секцию импорта.
Теперь кратко рассмотрим, что делает каждый модуль. Если какие‑то функции тебе не нужны, выброси строку импорта модуля и код, который использует этот модуль. Все просто!
Итак, за работу с ОС и локальными ресурсами отвечают эти четыре модуля:
- getpass нужен для определения информации о пользователе;
- os используем для взаимодействия с функциями ОС, вроде вызова внешних исполняемых файлов;
- psutil работает с некоторыми низкоуровневыми системными функциями;
- platform предоставит информацию об ОС.
Этими модулями реализованы сетевые взаимодействия:
- socket — для работы с сокетами и получения IP-адресов;
- getnode получает MAC-адрес машины;
- speedtest замеряет характеристики интернет‑соединения;
- telebot сделает всю рутину по работе с Telegram-ботом.
Служебные примочки, которые трудно отнести к категориям выше:
- datetime позволит определить время работы программы;
- pyautogui работает с GUI;
- PIL. Image — для снятия скриншота.
После этого нам требуется узнать основные стабильные характеристики системы: IP- и MAC-адреса, имя пользователя и ОС:
Строки кода снабжены комментариями и в пояснениях не нуждаются.
Скорость интернет-соединения
Важно понимать, что измерения не должны быть слишком точными, поскольку мы не можем легко проверить, какая часть канала используется другими программами или даже другими устройствами в сети. Если вы подключились к рабочей станции удаленно, ваше соединение тоже что-то потребляет. Исправление этого не было реализовано в программе из-за очень низкой точности и качества исполнения.
Часовой пояс и время
Частота процессора
Это может помочь определить причину, по которой ваш компьютер замедляется: если процессор постоянно развивается, но программы дают сбой, процессор устарел, а если он простаивает, виновата программа. И просто общее представление о железе.
Глубокий фингерпринтинг
В этой статье специально не рассказывается, как получить идентификатор жесткого диска или установленный идентификатор Windows GUID — мы не пишем руководство для рекламодателей, а практикуемся в программировании. Однако вы можете легко добавить коллекцию такой информации с помощью утилиты консоли wmic. Его вывод можно проанализировать с помощью скрипта Python, поэтому вам даже не нужно писать дополнительные привязки. На скриншоте показан пример получения серийного номера BIOS.
Скриншот рабочего стола
bot . send_message ( message . chat . id , "[ Error]: Location not found!" )Тут все тоже максимально просто, а за собственно снятие скриншота отвечает только последняя строка кода. Остальное мы используем для корректной обработки входящей команды бота.
Запись в файл
После того, как все будет сделано, мы можем перейти к окончательному сбору и отправке данных. Мы создаем готовый файл с нашими данными: если был использован максимальный сбор информации, а точнее весь приведенный выше код, мы будем использовать этот набор данных, в противном случае мы удалим данные, которые вам не нужны:
bot . send_message ( message . chat . id , "[ Error]: Location not found!" )Отправка данных
Теперь дополним код выше, чтобы он еще и файлы отправлял.
Сначала указывается подпись к скриншоту, потом читаем и отправляем файлы в виде фото и документа, затем зачищаем следы и закрываем соединение с ботом. Ничего сложного!
Естественно, если нам не нужен, к примеру, скриншот, мы можем вырезать код его отправки, получив такой вариант:
Чтобы бот гарантированно отправлял все сообщения тебе, укажи вместо message. chat. id ID чата с собой. Его можно узнать через бот GetMyID.
Чтобы не перетаскивать Python и зависимости программы с собой на другой компьютер, давайте объединим все в один исполняемый файл. Это делается с помощью PyInstaller, который устанавливается с помощью простой команды pip install pyinstaller.
Переходим с помощью командной строки в папку с нашей программой и собираем ее командой
Аргумент —onefile заставит PyInstaller упаковать все в один файл. После -i вы должны указать путь к значку исполняемого файла, если хотите его использовать. Если он вам не нужен, просто удалите этот аргумент. Последнее — это путь к файлу с нашим кодом. Если вы не хотите, чтобы консоль появлялась при запуске (например, если владелец компьютера не знает, что вы собираетесь ему помочь: D), измените расширение входного файла с помощью кода на .pyw или укажите параметр -w.
Результат сканирования на VirusTotal
Полный код проекта я разместил на GitHub. Там есть и программа‑сборщик, о которой я расскажу ниже.
Сборщик с графическим интерфейсом
Для создания GUI сборщика нам придется работать с библиотекой Tkinter, поэтому прежде всего импортируем ее и нужные элементы:
После этого нужно создать окно, которое и будет основой интерфейса:
Нам нужен только ввод API-ключа для доступа к боту. Делается такой ввод кодом ниже:
Это создаст два графических объекта — поле ввода и подпись к нему.
В этом интерфейсе не хватает кнопки для сборки выходного файла. Давай создадим ее:
button = Button ( root , text = "Create" , command = clicked , height = 2 , width = 10 )Создаем функцию, которая должна находиться в файле после импорта библиотек. В ней мы должны создавать файл и записывать в него код полезной нагрузки.
На самом деле, вы должны использовать управляемые объекты JVM или Spring-managed Object для вызова методов. из вашего вышеуказанного кода в классе контроллера вы создаете новый объект для вызова своего класса обслуживания, у которого есть объект с автоматической проводкой.
, поэтому он не будет работать таким образом.
Решение делает этот MileageFeeCalculator как объект с автоматической проводкой в самом контроллере.
Измените свой класс контроллера, как показано ниже.
Похоже, что отсутствующий скрипт в ответе @Spacedman находится здесь:
Он исправлен для работы с Python 3.
Структура данных действительно зависит от ОС, в Windows это выглядит так:
В Linux это другое:
Я попробовал различные решения здесь. cat /proc/cpuinf дает огромное количество результатов для многоядерной машины, много страниц длиннее platform.processor() , кажется, дает вам очень мало. Используя Linux и Python 3, следующее возвращает полезное резюме около двадцати строк:
Вот хакерский бит кода, который должен последовательно находить имя процессора на трех платформах, у которых есть разумный опыт.
Спасибо, @wings - я удалил дополнительный импорт. – dbn 22 July 2016 в 22:05Для Linux и обратной совместимости с Python (не у всех есть cpuinfo ), вы можете проанализировать через /proc/cpuinfo напрямую. Чтобы получить скорость процессора, попробуйте:
Обратите внимание на необходимое использование \s для пробелов . /proc/cpuinfo на самом деле имеет символы табуляции, и я работал в течение нескольких часов с sed до тех пор, пока я придумал:
Мне не хватало \t , и это сбило меня с ума, потому что я либо сопоставил весь файл, либо ничего.
Попробуйте аналогичные регулярные выражения для других полей вам нужно:
В случае if-case для платформы Windows i.e platform.processor () просто указывается описание или фамилия процессора, например. Intel64 Family 6 Model 60 Stepping 3.
, чтобы получить фактическую модель процессора, которая является тем же самым выходом, что и if-blocks для Darwin и Linux, например Intel (R) Core (TM) i7-4790K CPU @ 4.00GHz Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
Различная информацию об операционной системе и языке Python.
Python часто используется в качестве кроссплатформенного языка и иногда необходимо знать, на какой системе работает программа.
Например, инструмент для управления сетевой конфигурацией операционной системы может определять переносимое представление сетевых интерфейсов, псевдонимов, IP-адресов и т. д., но когда приходит время редактировать файлы конфигурации, то Python должен знать больше о хосте, чтобы использовать правильные команды и файлы конфигурации операционной системы.
Модуль platform включает в себя инструменты для получения сведений об аппаратной платформе, операционной системе и интерпретаторе на которой выполняется программа.
Содержание:
-
Кроссплатформенные функции:
- IP-адрес.
- MAC-адрес.
- Имя пользователя.
- Тип операционной системы.
- Скорость работы системы.
- Время.
- Скриншот.
- Скорость интернет‑соединения.
- Модель процессора.
-
platform.architecture() , platform.machine() , platform.node() , platform.platform() , platform.processor() , platform.python_build() , platform.python_compiler() , platform.python_branch() , platform.python_implementation() , platform.python_revision() , platform.python_version() , platform.python_version_tuple() , platform.release() , platform.system() , , platform.version() , platform.uname() ,
-
platform.java_ver() ,
-
platform.win32_ver() , platform.win32_edition() , platform.win32_is_iot() ,
-
platform.mac_ver() ,
-
platform.libc_ver() ,
-
platform.freedesktop_os_release() (доступна в Python 3.10).
Кроссплатформенные функции.
Функция platform.architecture() запрашивает исполняемый файл executable для получения различной информации об архитектуре. По умолчанию двоичный файл интерпретатора Python.
Возвращает кортеж (bits, linkage), который содержит информацию об архитектуре битов и формате связи, используемом для исполняемого файла. Оба значения возвращаются в виде строк.
Функция полагается на системную команду file для выполнения реальной работы. Это доступно на большинстве, если не на всех платформах Unix и некоторых не-Unix платформах и только в том случае, если исполняемый файл указывает на интерпретатор Python.
Примечание.
В Mac OS X (и, возможно, на других платформах) исполняемые файлы могут быть универсальными файлами с несколькими архитектурами. Чтобы получить 64-разрядность текущего интерпретатора, более надежно запросить атрибут sys.maxsize :
platform.machine() :
platform.node() :
Функция platform.node() возвращает сетевое имя компьютера, может быть не полностью! Если значение не может быть определено, то возвращается пустая строка..
platform.platform(aliased=0, terse=0) :
Функция platform.platform() возвращает одну строку, идентифицирующую базовую платформу, с максимально возможным количеством полезной информации.
Вывод предназначен для чтения человеком, а не для машинного анализа. Это может выглядеть по-разному на разных платформах, и это предназначено.
Если aliased имеет значение True , функция будет использовать псевдонимы для различных платформ, которые сообщают имена систем, которые отличаются от их общих имен, например SunOS будет сообщаться как Solaris.
При установке значения terse в значение True функция возвращает только абсолютный минимум информации, необходимой для идентификации платформы.
platform.processor() :
Возвращается пустая строка, если значение не может быть определено. Обратите внимание, что многие платформы не предоставляют эту информацию или просто возвращают то же значение, что и для platform.machine() .
platform.python_build() :
Функция platform.python_build() возвращает кортеж (buildno, builddate) с указанием номера и даты сборки Python в виде строк.
platform.python_compiler() :
Функция platform.python_compiler() возвращает строку, идентифицирующую компилятор, используемый для компиляции Python.
platform.python_branch() :
Функция platform.python_branch() возвращает строку, идентифицирующую ветвь SCM реализации Python.
platform.python_implementation() :
Функция platform.python_implementation() возвращает строку, идентифицирующую реализацию Python. Возможные возвращаемые значения: ‘CPython’ , ‘IronPython’ , ‘Jython’ , ‘PyPy’ .
platform.python_revision() :
Функция platform.python_revision() возвращает строку, идентифицирующую ревизию SCM реализации Python.
platform.python_version() :
Обратите внимание, что в отличие от Python sys.version() , возвращаемое значение всегда будет включать уровень исправления (по умолчанию 0).
platform.python_version_tuple() :
Функция platform.python_version_tuple() возвращает версию Python как кортеж (major, minor, patchlevel) строк.
Обратите внимание, что в отличие от Python sys.version, возвращаемое значение всегда будет включать уровень исправления (по умолчанию он равен 0).
platform.release() :
platform.system() :
platform.system_alias(system, release, version) :
Функция platform.system_alias() возвращает (system, release, version) , связанные с общими маркетинговыми именами, используемыми в некоторых системах.
platform.version() :
platform.uname() :
Функция platform.uname() представляет портативный интерфейс команды uname. Возвращает именованный кортеж, содержащий шесть атрибутов: system , node , release , version , machine и processor .
Обратите внимание, что функция platform.uname() добавляет шестой атрибут ( processor ), отсутствующий в результате os.uname(). Кроме того, имена атрибутов отличаются для первых двух атрибутов. Функция оs.uname() называет их sysname и nodename .
Функции платформы Java
Функция platform.java_ver() возвращает версию интерфейса для Jython.
Функции платформы Windows
Функция platform.win32_ver() получает дополнительную информацию о версии из реестра Windows и возвращает кортеж (release, version, csd, ptype) , относящийся к выпуску ОС, номеру версии, уровню CSD (пакет обновления) и типу ОС (многопроцессорный/однопроцессорный).
Примечание. Эта функция лучше всего работает с установленным пакетом win32all Марка Хаммонда. Очевидно, что функция platform.win32_ver() работает только на Win32-совместимых платформах.
platform.win32_edition() :
platform.win32_is_iot() :
Функция platform.win32_is_iot() возвращает True , если версия Windows, возвращенная platform.win32_edition() , распознается как версия IoT .
Функции платформы Mac OS.
Функция platform.mac_ver() Получите информацию о версии Mac OS и возвращает ее как кортеж (release, versioninfo, machine) , а versioninfo так-же является кортежем (version, dev_stage, non_release_version) .
Функции платформы Unix.
Функция platform.libc_ver() пытается определить версию libc , с которой связан исполняемый файл, по умолчанию интерпретатор Python.
Возвращает кортеж строк (lib, version) , которые по умолчанию соответствуют заданным параметрам в случае сбоя поиска.
Обратите внимание, что эта функция хорошо знает, как разные версии libc добавляют символы к исполняемому файлу. Можно использовать только для исполняемых файлов, скомпилированных с использованием gcc .
Файл читается и сканируется кусками байтов.
Функции платформы Unix.
platform.freedesktop_os_release() :
Вызывает ошибку OSError или подкласс OSError , если невозможно прочитать ни /etc/os-release , ни /usr/lib/os-release .
В случае успеха функция возвращает словарь, в котором ключи и значения являются строками. В значениях есть специальные символы, такие как " и $ без кавычек. Поля NAME , ID и PRETTY_NAME всегда определяются в соответствии со стандартом. Все остальные поля являются необязательными. Поставщики могут включать дополнительные поля.
Обратите внимание, что такие поля, как NAME , VERSION и VARIANT , представляют собой строки, подходящие для представления пользователям. Программы должны использовать такие поля, как ID , ID_LIKE , VERSION_ID или VARIANT_ID для идентификации дистрибутивов Linux.
Чтобы просто посмотреть IP-адрес и другие настройки сети, тебе придется обратиться к командной строке и выполнить команду ipconfig / all . Ситуация одна из самых частых для эникейщиков и удаленных шаманов, но она хотя бы быстро решаема. Но если придется собирать более серьезный набор информации о машине, с которой сейчас будешь работать, — без автоматизации не обойтись. Этим мы сегодня и займемся.
Имей в виду, что эта программа может использоваться как для быстрого сбора информации о своей системе, так и для кражи идентифицирующей информации с компьютера жертвы. Мы граждане законопослушные, поэтому пусть это и не пароли, но, чтобы не раздражать правоохранителей, все тесты будут проводиться на изолированных виртуальных машинах.
warning
Несанкционированный доступ к компьютерной информации — преступление. Ни автор, ни редакция журнала не несут ответственности за твои действия.
Инструменты
Сначала давай разберемся, где будем писать код. Можно кодить в обычном виндовом «Блокноте», но мы воспользуемся специальной IDE для Python — PyCharm. Установка и настройка просты как два рубля: скачал установщик, запустил — и кликай себе «Далее», пока есть такая кнопка.
Еще нам потребуется Python. Я буду использовать версию 3.9.0 — с ней точно все работает.
Задачи
Давай сначала обрисуем, что мы вообще планируем делать. Я планирую собирать следующую информацию:
И отправляться это все будет прямиком тебе в телегу через специальный бот.
Зачем?
Наверняка у тебя возник вопрос: зачем может понадобиться MAC-адрес или модель процессора? Эти параметры меняются очень и очень редко, так что прекрасно подходят для фингерпринтинга. Даже если пользователь купит более быстрый интернет‑канал или поменяет часовой пояс, ты без особого труда сможешь определить, что уже имел дело с этим компьютером. Стоит помнить, что ровно такие же методы используют хитрые рекламщики для идентификации пользователей, да и разработчики триальных версий программ тоже. Эта статья поможет чуть лучше понять, что можно узнать о твоем компьютере в полностью автоматическом режиме, а как применить эту информацию — решать только тебе.
В этой статье мы не будем показывать, как сформировать устойчивый к незначительным изменениям идентификатор, который поможет однозначно определить конкретный компьютер. Если тебе станет интересно — пиши в комментариях, и, возможно, мы сделаем большой гайд на эту тему!
Создаем основу программы
Для отправки данных я решил воспользоваться Telegram-ботом. Создать его ты можешь через BotFather, а после сохранить token твоего творения. Публиковать его нельзя — любой, кто получит этот токен, сможет захватить контроль над твоим ботом.
Для подключения к Bot API «телеги» нужны всего две строчки:
Чтобы оценить быстродействие, можно написать еще пару строк. Весь дальнейший код расположим между ними. Описанное выше подключение бота уже вписано сюда.
Читайте также: