ปัจจุบันนี้ความปลอดภัยของข้อมูลเป็นสิ่งสำคัญ ไวรัสต่าง ๆ เกิดขึ้นมาเพื่อทำลายข้อมูลของเรา ทำให้ในคอมพิวเตอร์ PC ไม่ว่าจะเป็นระบบปฎิบัติการอะไรก็ตาม ควรจะมีการดูแลรักษาข้อมูลที่สำคัญไว้ ไม่ว่าจะเป็นการใช้โปรแกรมป้องกันไวรัส , สำรองข้อูล , อัพเดรต OS ตลอด เพื่อปิดช่องโหว่ระบบ , ทดสอบระบบเพื่อหาช่องโหว่และเพื่ออุดช่องโหว่ ป้องกันไว้ก่อน เป็นต้น
ปัจจุบันนี้ โปรแกรมป้องกันไวรัสต่าง ๆ ส่วนใหญ่มีระบบรับคำสั่งสแกนไฟล์ด้วยคำสั่งคอมมานด์ไลน์ ไม่ว่าจะเป็น Windows Defender , McAfee , ESET และอื่น ๆ เป็นต้น
บทความนี้ผมจะขอใช้งาน Windows Defender ครับ
คำสั่งสำหรับใช้งาน Windows Defender สามารถดูได้ที่ https://technet.microsoft.com/en-us/magazine/gg131918.aspx
ผมใช้คำสั่ง
"C:\program files\windows defender\mpcmdrun.exe" -Scan -ScanType 3 -File ที่ตั้งไฟล์หรือโฟลเดอร์ที่ต้องการ
เราสามารถใช้โมดูล subprocess เข้ามาช่วยได้ โดยได้โค้ดประมาณนี้ครับ
import subprocess
path = 'C:\\Users\\วรรณพงษ์\\f1' # ที่ตั้งไฟล์หรือโฟลเดอร์ที่ต้องการ
scanner = subprocess.Popen(['C:\Program Files\Windows Defender\MpCmdRun.exe', '-Scan', '-ScanType', '3', '-File', path, '-DisableRemediation'])
หากไม่ต้องการให้แสดงการสแกนบนหน้ารันโค้ด ให้ใส่ stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)กลายเป็น
scanner = subprocess.Popen(['C:\Program Files\Windows Defender\MpCmdRun.exe', '-Scan', '-ScanType', '3', '-File', path, '-DisableRemediation'],stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT))
นอกจาก Windows Defender ขอแถมโค้ดสำหรับใช้สแกนไวรัสด้วยโปรแกรม ClamAV ซึ่งเป็นโปรแกรม Antivirus ฟรีในฝั่ง open source ยอดนิยม รองรับทั้ง Windows , MacOS และ Linux
โดยคำสั่งที่ใช้สแกนของโปรแกรม ClamAV คือ
clamscan --infected --remove --recursive ที่ตั้งโฟลเดอร์นำมาเขียนโปรแกรมในภาษา Python ได้ตามนี้
import subprocess
path = '/home' # ที่ตั้งไฟล์หรือโฟลเดอร์ที่ต้องการ
scanner = subprocess.Popen(['
clamscan', '
--infected', '
--remove', '
--recursive', path])
หากผู้อ่านต้องการใช้โปรแกรมป้องกันตัวอื่น หรือ บน OS อื่น ๆ ให้ค้น Google โดยใช้ Keyword
ชื่อโปรแกรมป้องกันไวรัส Command Line Scanner ระบบปฎิบัติการ
แล้วปรับแก้คำสั่งที่ตัวแปร scanner ให้เหมาะสมกับความต้องการครับ
สำหรับผู้ที่ต้องการสแกนไฟล์แบบออนไลน์ ผมขอแนะนำ Virus Total ครับ
Virus Total เป็นเว็บสำหรับสแกนไวรัสออนไลน์ โดยสามารถสแกนได้หลากหลายผู้ผลิตโปรแกรมป้องกันไวรัส สามารถสแกนได้ทั้งลิงค์และไฟล์
ผลการทดสอบ เมื่อใส่ลิงค์โหลดโปรแกรมตัวหนึ่ง
![](https://i.imgur.com/1fe96yz.png)
![](https://i.imgur.com/Qam5PgC.png)
ในภาษา Python มีโมดูลที่ช่วยให้เข้าถึง API ของ VirusTotal ได้ง่าย ๆ คือ โมดูล virustotal-api
โมดูล virustotal-api เป็นโมดูล Python ที่ช่วยให้เราเข้าถึง Virus Total Public/Private/Intel API ได้สะดวกยิ่งขึ้น
รองรับทั้ง Python 2 , Python 3
ใช้ MIT License
สามารถติดตั้งได้โดยใช้คำสั่ง pip :
pip install virustotal-api
ก่อนใช้งานให้ผู้อ่านลงทะเบียนบัญชีผู้ใช้งาน Virus Total ที่ https://www.virustotal.com/en/ แล้วเข้าไปที่ https://www.virustotal.com/en/user/บัญชีผู้ใช้/apikey/ แล้วทำการคัดลอก API key มาครับ
เรามาใช้งาน Virus Total กันครับ
import json
import hashlib
from virus_total_apis import PublicApi as VirusTotalPublicApi
API_KEY = 'Sign-Up for API Key at virustotal.com'
# โหลดไฟล์ไวรัสทดสอบมา
import requests
url = 'http://www.ikarussecurity.com/fileadmin/user_upload/testviren/eicar_com.zip'
b = requests.get(url)
bb = b.content
#
EICAR = bb
EICAR_MD5 = hashlib.md5(EICAR).hexdigest()
vt = VirusTotalPublicApi(API_KEY)
response = vt.get_file_report(EICAR_MD5)
print(json.dumps(response, sort_keys=False, indent=4))
ผลลัพธ์
![สแกนไวรัสด้วย Python](https://i.imgur.com/CKg0KIz.png)
จะเห็นได้ว่า ผลลัพธ์หลังเราใช้ json.dumps ออกมาเป็น json เราสามารถนำไปใช้งานต่อได้
หากต้องการสแกนไฟล์ ให้ทำการเปิดไฟล์แล้วอ่านไฟล์ส่งค่ามายังตัวแปร EICAR ครับ
อ่านเอกสารการใช้งาน https://github.com/blacktop/virustotal-api
ติดตามบบความต่อไปนะครับ
ขอบคุณครับ
ปรับปรุงครั้งที่ 1 2 ม.ค. 2562
ตอบลบเจ๋งค่ะขอตามนะค่ะ
ตอบลบ