ScreenLogger-微笑,隐藏的摄像头带您

所以,欢迎。 在本文中,我们将分析编写程序的过程,该程序允许实时监控远程计算机上发生的所有操作,而无需最终用户的了解。 文章的作者警告说,他对非法使用以下技术概不负责,也不建议将其用于非法目的。 走吧

在编写任何足够大的软件产品时,您需要将全局任务分解为几个简单的任务。 因此,在这种情况下,我确定了几个实际上不相关的过程,这些过程可以一起工作,使我们能够达到预期的结果。 特别是,要执行任务,需要执行以下任务:

0)首次运行时将服务文件添加到系统文件夹
1)从屏幕截图
2)将屏幕截图发送到远程服务器

因此,选择了具有所有必要功能的.NET平台进行实施。 出于可视化和调试的目的,该应用程序是用WindowsForms编写的,大体上它可以是一个控制台。

功能说明:

SetConfig-提供从附加的设置文件中读取配置参数的信息
发送-负责将屏幕截图发送到电子邮件
MakeScreen-负责截图
Circle-负责以指定的频率在后台重复拍摄和发送屏幕截图
CasualStart-在下次程序启动时定义操作
FirstStart-确保正确安装程序

现在-有关每个功能的更多详细信息。 配置设置:

由于该软件必须灵活,因此应该有可能从其代码外部更改程序的内部参数。 每次启动时,此软件都会尝试查找SaveScreen.ini文件,更新其设置,然后才开始在正常模式下工作。 如果无法更新参数,则使用默认值。

(哪个参数负责本文结尾处的内容)

出于技术原因,我不得不使用下划线代替@-#,而不是空格,但是在程序内部,执行了反向替换。

程序执行从Form1_load块开始,并且可以两种模式进行开发-正常启动(如果计算机具有安装目录)和安装(如果没有安装目录)。 让我们考虑它们中的每一个。

第一次运行:
第一次启动时,您需要创建一个目录,在该目录中将放置程序文件,在该目录中传输可执行文件和配置文件,并将必要的条目添加到注册表中以添加自动运行的软件。

因此,这是通过FirstStart()函数实现的

图片

安装后,该应用程序将关闭-下次重新启动计算机时,它将照常运行。

定期发布:
常规启动会启动一个后台线程,该线程将获取屏幕截图并发送它们,并使用上次会话期间拍摄的屏幕截图清除文件夹。 之后,它会等待相当长的时间,然后才会强制终止应用程序。 在启动后台线程之前,可能需要暂停,应该在相对较慢的计算机上设置该暂停,以加快系统的加载速度,并避免启动时出现冲突。
asualStart()

图片

发行量:
一切都是令人羞耻的-在永恒的周期中,我们拍摄并发送屏幕截图,然后等待指定的时间。 拍摄和发送屏幕的过程更加有趣。

图片

截图:
在C#中,可以通过使用屏幕上的复制功能将图像保存在位图中。 因此,所有需要做的就是创建一个对象,用于存储分辨率等于当前屏幕分辨率的屏幕快照,将对象附加到可以从屏幕接收位图的对象,并将其保存到先前创建的目录中。

图片

通过邮件发送:
在C#中,可以使用预定义的类处理邮件,这些类允许您填充消息字段,指定收件人和收件人,并且实际上可以通过调用一种方法进行发送。 在没有网络连接的情况下,将此方法包装在try-catch块中-即使在这种情况下,该程序也不会给出错误消息,但会尽职地等待直到有机会访问服务器。 选择邮件服务器是出于简单的原因,原则上-您可以将图片丢在任何地方。

图片

一般互动:
我重复说,程序的启动是在Form1_Load方法中进行的。 该程序尝试更新配置,然后确定是否是首次启动配置,如果是,则将其添加到正确的文件夹中并启动并禁用,如果没有启动,它将启动一个后台进程,该进程以给定的间隔将屏幕上的图像稳定地投射到邮件服务器上。 没什么复杂或异常的,只是几个内置类的交互。
图片

最后,对自动配置文件进行了解释-所有变量名称都与程序中的名称一致,因此,在解释int文件中的字段时,我还将描述变量本身。

图片

wayToDir-屏幕截图放入的子文件夹的名称
finalDir =-要将程序转移到的目录的名称
nameOfApp =可执行文件的名称
subKeyAdress =要添加到自动运行的注册表项的路径
保留-保留字段
name-注册表项的名称
startPause-在录制屏幕截图之前暂停
exitPause-在强制退出程序之前暂停
adressFrom-发件人地址
nameFrom-发件人签名
nameTo-收件人的邮寄地址
mailSubject-电子邮件主题
mailBody-消息文本
smtpAdress-发件人邮件服务器SMTP地址
smtpPort-发送邮件的端口
mailPassword-发件人邮件中的密码
exp-文件扩展名
timeBetweenScreens –拍摄两个屏幕截图之间的时间。

总结:

刚刚描述了编写用于跟踪远程计算机上的动作的应用程序的过程。 通过在此处连接接收来自服务器的命令列表的文件并将其分割,我们得到了一个简化的自行编写的TeamViewer。 但这不在本文中。

源代码

Source: https://habr.com/ru/post/zh-CN457172/


All Articles