22 เมษายน 2559

Published เมษายน 22, 2559 by with 2 comments

สแกนไวรัสด้วย Python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปเขียนโปรแกรมสแกนไวรัสด้วย Python แบบง่าย ๆ กันครับ

ปัจจุบันนี้ความปลอดภัยของข้อมูลเป็นสิ่งสำคัญ ไวรัสต่าง ๆ เกิดขึ้นมาเพื่อทำลายข้อมูลของเรา ทำให้ในคอมพิวเตอร์ 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 เป็นเว็บสำหรับสแกนไวรัสออนไลน์ โดยสามารถสแกนได้หลากหลายผู้ผลิตโปรแกรมป้องกันไวรัส สามารถสแกนได้ทั้งลิงค์และไฟล์
ผลการทดสอบ เมื่อใส่ลิงค์โหลดโปรแกรมตัวหนึ่ง



ในภาษา 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
จะเห็นได้ว่า ผลลัพธ์หลังเราใช้ json.dumps ออกมาเป็น json เราสามารถนำไปใช้งานต่อได้
หากต้องการสแกนไฟล์ ให้ทำการเปิดไฟล์แล้วอ่านไฟล์ส่งค่ามายังตัวแปร EICAR ครับ

อ่านเอกสารการใช้งาน https://github.com/blacktop/virustotal-api

ติดตามบบความต่อไปนะครับ
ขอบคุณครับ

2 ความคิดเห็น:

แสดงความคิดเห็นได้ครับ :)