Como manipular recursos do sistema operacional com python (ou qualquer outra linguagem)?

Eae pessoal, blz? Bom, tenho pouca experiencia em programação e estou com uma duvida. Já procurei sobre o assunto no google e em outros fóruns, porém não encontrei nada para esclarecer minha duvida

A algum tempo venho me interessando pela área de programação e pentest.
Semestre que vem, na faculdade, terei que fazer um projeto para uma disciplina e estou pensando em fazer algo voltado para essa área.

A principio estou pensando em usar python para o projeto, por já saber o básico e pelo seu rápido desenvolvimento, porém uma segunda opção seria o C++ dependendo das limitações.

Bom a minha duvida é se eu consigo programar em um certo “baixo nível” com python. Eu queria saber se com o python é possivel eu utilizar recursos do sistema operacional (windows), ouvir o teclado, tirar print da tela, ter informações e manipular os recursos de hardware como o mouse e teclado, processos do windows.

Com python eu conseguiria fazer isso? Até onde o python seria capaz de utilizar os recursos do sistema ou hardware?

A outra duvida é em relação sobre o que eu teria que aprender para utilizar esses recursos. Independente de qual linguagem eu use, o que eu teria que aprender sobre computação/sistema operacional (ou programação) para manipular esses recursos com a linguagem de escolha. Quais APIs, bibliotecas, assuntos, documentação tenho que ter domínio, quais links?

Tem muita coisa sobre segurança que eu pretendo fazer, como por exemplo criptografia, esteganografia, software forense e outros mais voltados para o pentest. Sendo assim, muito desses software eu precisarei utilizar o recursos do sistema.

Eu sei que existem ferramentas prontas, mas eu queria entender por debaixo dos panos como elas funcionam, aprender a desenvolver minhas próprias (e dar um upgrade ao meu gosto se necessário). Em c++ eu vi alguns exemplos de algumas coisas, mas não entendi anda. Fora que, nem tudo que eu preciso vou achar na internet, então tenho que saber criar minhas próprias soluções e saber adaptar as que eu encontrar.

Eu preferia usar python (em todos, ou pelo menos a maioria), mas caso não seja possível, utilizarei c++, porém, de qualquer forma tenho que saber como funciona onde eu mexo.

Lembrando, isso é para um projeto que pretendo fazer para a faculdade. Não pretendo usar para fins maliciosos, apenas acadêmico, pois como citei, tenho interesse na área do pentest

Olha eu não sou um expert em computação mais não sei se entendi errado,mas você está querendo usar python como uma linvuagem de baixo nível?

Bom se você quer aprender crjptografia e estenografia bom tem bibliotecas para criptografar não tente desenvolver sua própria criptografia assim do nada pois uma boa cipritografia precisa de muito estudo.E já que você que trabalhar com criptografia você vai ter que pegar os bytes

Obs Não estou dizendo que é impossível você desenvolver sua própria criptografia mas estou dizendo que é bem complexo e precisa de muito testea

O que eu quero é manipular recursos do windows e o teclado por exemplo, para pegar tecla digitada, entre outras coisas. Não sei se consigo utilizar python para isso, caso nao seja possivel, irei utilizar c++, mas caso seja possivel, seria melhor pela velocidade de desenvolvimento em relação ao c++. Outra duvida é que eu não sei se saber a linguagem (c++ ou python) é o suficiente para manipular os recursos do windows, ou seja, se eu precisaria saber outras coisas para conseguir isso.

É bem mais prático com C#

https://docs.microsoft.com/pt-br/dotnet/api/system.windows.forms.keypresseventargs.keychar

Tem sim mas você terá de usar bibliotecas para isto no Youtube tem alguns tutorials que ensina fazer isto

É possível fazer de tudo com python,entretanto as ferramentas mais adequadas para se interagir com o kernel e chamadas de sistema(syscalls) é o C/C++.
Aqui está um exemplo fácil de se compreender de como tirar prints em um loop infinito da tela do pc em Python:

import pyscreenshot #note que você terá que importar esse módulo se ele não existir por padrão,o mais indicado é usar o "pip",executando o seguinte comando: "pip install pyscreenshot"
from time import sleep #importa a função sleep do módulo time
def Print(): #define a função
      count = 0 #define uma variável contador
      while(true): #define um loop infinito
           time.sleep(2) #espera dois segundos até tirar o próximo print
           image = pyscreenshot.grab() #função que tira print e aloca a imagem na variável *image*
           image.save("imagem{count}.jpg","jpeg") #salva a imagem na pasta do projeto
           count = count + 1 #soma um à variável de contador
Print()

Mateus00 Eu entendi seus pontos. Para você acessar dados do hardware do sistema operacional diretamente é necessário uma linguagem de baixo nível. As linguagens de alto nível podem fazer isso mas através de bibliotecas, API’s e frameworks feitos em linguagem de baixo nível. Se você quer criar suas próprias ferramentas você precisa usar uma linguagem de baixo nível. Quanto mais baixo o nível mais liberdade de criação você terá. Linguagens de alto nível só existem para criar coisas complexas demais e por isso as linguagens de alto nível são todas prontas, cheias de ferramentas para a gente usar. Como eu disse: elas são prontas então você não tem muito poder de criação se comparado a uma linguagem de baixo nível.