bash tips: ลบไฟล์ไวรัส
ลูกน้องเอาธัมบ์ไดรฟ์มาให้หาไวรัส
ผลปรากฎว่าพบไฟล์ที่เป็นนามสกุล exe เป็นจำนวนมากภายใต้ไดเรกทอรี่ย่อยเป็นร้อย
ทางแก้คือสแกนแล้วเก็บชื่อไฟล์ไว้ ตัวอย่างของเนื้อไฟล์ที่ถูกสแกนเก็บไว้ เช่น
PhotoShop 7.0/• วิธีทำตัวเยลลลี่ •_files/• วิธีทำตัวเยลลลี่ •_files.exe: W32.Autoit.Obfus FOUND PhotoShop 7.0/• วิธีทำตัวหนังสือชอล์ค •_files/truehitsstat_files/truehitsstat_files.exe: W32.Autoit.Obfus FOUND ...
จะเห็นว่ามีรูปแบบที่เราจะตัดโดยใช้คำสั่ง cut
ได้คือตั้งแต่เครื่องหมาย :
เป็นต้นไป
คำสั่งที่ใช้คือ
cut -d: -f1
-d:
คือใช้ :
เป็นตัวแบ่ง
-f1
คื่อเมื่อแบ่งแล้ว เราจะเอาสดมถ์ที่ 1 มาใช้งาน
แต่เราจะแก้ไขเนื้อไฟล์ให้เหมาะสมเล็กน้อย คือตัดท่อนล่างของไฟล์ออก ให้เหลือเฉพาะชื่อไฟล์ที่ติดไวรัส
แล้วจึงเอาเนื้อไฟล์นั้นมาเป็นข้อมูลเข้า เพื่อจะมาลบไฟล์ที่ติดไวรัสจริง ๆ
แต่มีปัญหาเพิ่มคือ ชื่อไฟล์ประกอบด้วยช่องว่างจำนวนมาก ไม่สามารถใช้คำสั่ง for i in `cat file`
ได้
ค้นกูเกิลดู พบว่าเขาใช้คำสั่ง while read VARIABLE
สรุปคำสั่งทั้งหมดมาเป็นขั้นตอนดังนี้
สมมุติว่าค้นหาไวรัสในธัมบ์ไดรฟ์ในไดเรกทอรี่ /media/disk
ไปที่ที่ทำงาน
$ cd /media/disk
สแกนไวรัส แล้วเก็บผลไว้ที่ ~/virus.txt
$ clamscan -i -r * > ~/virus.txt
-i
คือให้แสดงเฉพาะไฟล์ที่ติดไวรัส
-r
คือให้ขุดลึกลงไปในไดเรกทอรี่ย่อยด้วย
แก้ไขไฟล์เล็กน้อย โดยตัดรายงานส่วนท้ายออก
ยกตัวอย่างส่วนที่ตัดออกคือ
$ vi ~/virus.txt
----------- SCAN SUMMARY ----------- Known viruses: 203664 Engine version: 0.92 Scanned directories: 97 Scanned files: 1234 Infected files: 252 Data scanned: 378.68 MB Time: 130.603 sec (2 m 10 s)
ทีนี้ก็ถึงเวลาลบจริง ๆ แล้ว ***ใช้ด้วยความระมัดระวังนะครับ***
ถ้ายังไม่แน่ใจ อาจแทนที่คำสั่ง rm
ด้วยคำสั่ง ls
ลองดูก่อน
$ cat ~/virus.txt | cut -d: -f1 | while read FILE; do rm "$FILE"; done
เสร็จแล้วครับ
หมายเหตุ
- ต้องติดตั้ง clamscan ไว้ก่อน ถ้ายัง ติดตั้งด้วยคำสั่ง
$ sudo aptitude install clamav $ sudo freshclam
- ปกติการเมานต์ธัมบ์ไดรฟ์ที่เป็นระบบไฟล์
vfat
เขาจะเมานต์ด้วยค่าปริยายด้วยรหัสอักขระภาษาอังกฤษ ทำให้อ่านชื่อไฟล์ภาษาไทยไม่รู้เรื่อง ซึ่งจริง ๆ แล้วต้องตั้งค่ารหัสอักขระเป็น utf-8
เราสามารถบังคับด้วยการเมานต์ใหม่ หรือตั้งค่ารหัสอักขระถาวร ดูวิธีการได้ที่ th.gnome.org: เกร็ดการแก้รหัสอักขระ usb drive - ถ้ามีไฟล์ชื่อ
runauto..
เราจะลบไฟล์นี้ตรง ๆ ไม่ได้ ต้องใช้คำสั่งว่า
$ rm runaut~1 -rf
ถึงจะลบออก
ที่มา
- Printer-friendly version
- Log in or register to post comments
- 4800 reads
Recent comments