QNA > C > Come Possiamo Fare Screenshot Usando Python In Windows?

Come possiamo fare screenshot usando Python in Windows?

Questo tutorial vi aiuterà ad hackerare windows, iniziamo il tutorial.

Fare screenshot

La maggior parte dei malware e dei framework di penetration testing includono la capacità di fare screenshot contro l'obiettivo remoto. Questo può aiutare a catturare immagini, fotogrammi video, o altri dati sensibili che si potrebbero non vedere con un packet capture o un keylogger. Fortunatamente, possiamo usare il pacchetto PyWin32 per fare chiamate native all'API di Windows per catturarle. Un grabber di screenshot userà la Graphics Device Interface (GDI) di Windows per determinare le proprietà necessarie come la dimensione totale dello schermo, e per catturare l'immagine. Alcuni software di screenshot cattureranno solo un'immagine della finestra o dell'applicazione attualmente attiva, ma nel nostro caso vogliamo l'intero schermo. Let’s get started.

  1. import win32gui 
  2. import win32ui 
  3. import win32con 
  4. import win32api 
  5.  
  6.  
  7.  
  8.  
  9.  
  10. # grab a handle to the main desktop window 
  11. hdesktop = win32gui.GetDesktopWindow() 
  12.  
  13.  
  14. # determine the size of all monitors in pixels 
  15. width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN) 
  16. height = win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN) 
  17. left = win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN) 
  18. top = win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN) 
  19.  
  20.  
  21. # create a device context 
  22. desktop_dc = win32gui.GetWindowDC(hdesktop) 
  23. img_dc = win32ui.CreateDCFromHandle(desktop_dc) 
  24.  
  25. # create a memory based device context 
  26. mem_dc = img_dc.CreateCompatibleDC() 
  27.  
  28. # create a bitmap object 
  29. screenshot = win32ui.CreateBitmap() 
  30. screenshot.CreateCompatibleBitmap(img_dc, width, height) 
  31. mem_dc.SelectObject(screenshot) 
  32.  
  33.  
  34. # copy the screen into our memory device context 
  35. mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top),win32con.SRCCOPY) 
  36.  
  37.  
  38. # save the bitmap to a file 
  39. screenshot.SaveBitmapFile(mem_dc, 'c:\\WINDOWS\\Temp\\screenshot.bmp') 
  40. # free our objects 
  41. mem_dc.DeleteDC() 
  42. win32gui.DeleteObject(screenshot.GetHandle()) 

Lets crack this code one by one

Line 11:

First we acquire a handle to the entire desktop , which includes the entire viewable area across multiple monitors.

Line 15–18:

We then determine the size of the screen(s) so that we know the dimensions required for the screenshot.

Line 22- 23:

Creiamo un contesto di dispositivo usando la chiamata alla funzione GetWindowDC e passiamo un handle al nostro desktop.

Line 26:

Poi dobbiamo creare un contesto di dispositivo basato sulla memoria dove memorizzeremo la nostra cattura dell'immagine fino a quando non memorizzeremo i byte bitmap in un file.

Line 29 -31:

Creiamo quindi un oggetto bitmap che è impostato al contesto di dispositivo del nostro desktop. La chiamata SelectObject imposta quindi il contesto del dispositivo basato sulla memoria per puntare all'oggetto bitmap che stiamo catturando.

Line 35 :

Utilizziamo la funzione BitBlt per prendere una copia bit per bit dell'immagine del desktop e memorizzarla nel contesto basato sulla memoria.

Line 39:

Pensate a questo come una chiamata memcpy per gli oggetti GDI. Il passo finale è quello di scaricare questa immagine su disco. Questo script è facile da testare: Basta eseguirlo dalla riga di comando e controllare la directory C:\WINDOWS\Temp per il vostro file screenshot.bmp. Passiamo all'esecuzione dello shellcode.

Di Godden Brownsworth

Come abilitare la registrazione delle chiamate di WhatsApp su un Android One, perché non vedo nulla nella sua cartella 'chiamate' :: Quale lingua dovrei imparare dopo aver imparato Python?
Link utili