生活随笔
收集整理的這篇文章主要介紹了
爬取某在线恶意软件仓库病毒文件进行分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前段時間,因為工作需要,要收集一些木馬文件,于是就找到了一個網站:VirusShare.com,在這里,研究者可以提交并獲得惡意軟件的樣本。該網站實時更新來自全球的惡意文件樣本。本來打算自己動手下載呢,但是特征文件更新比較慢,等好久才會出現一個我想要的文件。剛好當時也在寫Python的爬蟲,就寫了一個爬蟲來爬。后來實驗的效果果然不錯,一晚上就把我一星期的工作量就完成了。又一次說明一個道理:代碼解放雙手。。。
好了,不多說了,我們看一下這個網站的樣子:
可以看到現在圖片是黑白顏色的,原因是我們還沒有進行登陸。登陸后會有一些變化。因為是實時更新的,我們現在看到的惡意文件的MD5和sha1以及SHA256的值,其中我們最想知道的是文件的類型,這個在File Type中可以看到是PE文件,也就是可執行文件。還有一些其他的參數,沒怎么仔細看。好了,不多說了,下面說一下爬蟲的編寫過程:
首先我們模擬一遍下載的過程,通過HTTPFox抓包分析每一條請求,然后把下載請求找出來,HTTPFox的使用細節不多說了。然后,我直接上代碼吧
import urllib
import urllib2
import cookielib
import datetime
import time
import reurl =
'http://www.virusshare.com'
def Get_Page():hosturl =
'http://virusshare.com/'posturl =
'http://virusshare.com/processlogin.4n6'cj = cookielib.LWPCookieJar()cookie_support = urllib2.HTTPCookieProcessor(cj)opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)urllib2.install_opener(opener)h = urllib2.urlopen(hosturl)headers = {
'User-Agent':
'Mozilla/4.0 compatible; MSIE 5.5; Windows NT'}postData = {
'username':
'*******',
'password':
'*******'}postData = urllib.urlencode(postData)request = urllib2.Request(posturl, postData, headers)response = urllib2.urlopen(request)text = response.read()
return text
def Judje_Page(page):'''判斷是不是PE文件,如果是,保存到本地,如果不是則丟棄!'''PE_page = re.search(
'PE', page)
if PE_page:SHA256 = re.findall(
r'href="(.*?)">', page)url =
'http://virusshare.com/'+ SHA256[
9]
print '\033[0;32;40m'+
'匹配成功! ',datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S')+
'-------現在保存文件.....'i = str(SHA256[
9])
with open(str(i[-
64:])+
'.exe',
'wb')
as code:code.write(urllib2.urlopen(url).read())
else:
print '\033[0;31;40m'+
'匹配失敗!',datetime.datetime.now().strftime(
'%Y-%m-%d %H:%M:%S')+
'-------現在丟棄文件.....'while True:page = Get_Page()Judje_Page(page)time.sleep(
15)
3.上面就是代碼了,寫的很渣。
**
- 完!
**
總結
以上是生活随笔為你收集整理的爬取某在线恶意软件仓库病毒文件进行分析的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。