拳打電腦管家,腳踢金山毒霸,3分鐘用Python擼一個防毒軟體

2022-01-05 14:00:02

「作者主頁」:士別三日wyx
  此文章已錄入專欄《Python入門到精通》
  2021最新版Python小白教學,針對0基礎小白和基礎薄弱的夥伴學習

        事情要從一次重保行動說起,由於活動還沒結束,這裡就先不透漏了。我抱著親手做的康師傅紅燒牛肉泡麵,還沒開始吃,就聽見後面有人喊我名字,說是有個使用者的電腦卡死了,要我過去看看。

        我問她能不能等我吃完這桶泡麵再去,我已經3個小時沒有吃過飯了,現在餓得沒有力氣走到使用者那裡。

        她說那是主任的電腦,你自己看著辦吧。

        我向來不畏懼權貴,但九年義務教育告訴我,別人有困難的時候一定要去幫一把……

        我到現場一看,電腦上就只有一個空空桌面,連個滑鼠都找不到,看來是電腦太卡了,軟體圖示都卡沒了。

        我問使用者之前有沒有做過什麼奇怪的事情

        他說沒有,電腦一開機就是這個樣子

        我好像明白了什麼,拔掉電源重新啟動,電腦開機以後,果然跟我想的一樣,360、電腦管家、金山毒霸這三兄弟整齊的站在右下角,桌面上滿滿當當的全家桶,這不卡才怪呢。剛好電腦上沒有什麼重要檔案,懶得一個一個刪了,招呼來聯想的同志給他重新做個系統。

        回去的路上我跟聯想的同志吐槽:「這群流氓軟體真是不講武德,就知道欺負這種電腦小白。」

        聯想的同志白了我一眼:「看把你能的,有本事自己寫一個」

在這裡插入圖片描述
        我向來不喜歡斤斤計較,寫防毒軟體只是出於愛好。

        首先,防毒這個動作,本質上就是刪除病毒檔案,這還不簡單,os模組就能幹

import os
os.remove(r'E://python/病毒.txt')

        病毒軟體肯定不是隻有一種,因此我們需要準備一個病毒庫,把檔案扔到病毒庫裡匹配,匹配上了就把病毒檔案刪除

import os

病毒庫 = ['病毒.txt']

path = r'E://python/病毒.txt'

if path in 病毒庫:
    os.remove(path)
    print('已經刪除病毒檔案', file)

        當然,病毒查殺肯定不能只查一個檔案,需要查詢所有的檔案,而目錄下所有的檔案,可以寫個函數,遞迴查詢

def getAllFile(path):
    # 獲取目錄中的所有檔案並遍歷
    files = os.listdir(path)
    for file in files:
        # 拼接路徑,如果是目錄則遞迴獲取所有檔案
        new_path = path + r'/' + file
        if os.path.isdir(new_path):
            getAllFile(new_path)

        既然是自己寫的防毒軟體,那查殺什麼地方當然要自己說了算,畢竟做網安這一行,很多工具本身就是病毒。寫個input,自定義查殺目錄

path = input('請輸入需要查殺的目錄:')
getAllFile(path)

完整程式碼如下:

import os

病毒庫 = ['病毒.txt']

def getAllFile(path):
    # 獲取目錄中的所有檔案並遍歷
    files = os.listdir(path)
    for file in files:
        # 拼接路徑,如果是目錄則遞迴獲取所有檔案
        new_path = path + r'/' + file
        if os.path.isdir(new_path):
            getAllFile(new_path)
        else:
            # 如果是檔案則查詢病毒庫,匹配成功則刪除
            if file in 病毒庫:
                os.remove(new_path)
                print('已經刪除病毒檔案', file)

path = input('請輸入需要查殺的目錄:')
getAllFile(path)

        先自己寫一個病毒
在這裡插入圖片描述
        執行程式,輸入需要查殺的目錄
在這裡插入圖片描述
        好了,病毒已經被沙雕了
在這裡插入圖片描述
        小小病毒,可笑可笑。

        正當我伸著懶腰想著怎麼加大查殺力度時,感覺手好像碰到了一個硬邦邦的東西,我突然意識到不對勁……

        原來是我兩個小時前泡的那碗泡麵,坨了!

在這裡插入圖片描述
        感謝大家的三連支援,我是三日,我們下期再見!