实现一个病毒扫描app——python爬取病毒样本
实现一个病毒扫描app——python爬取病毒样本
文章目录
- 开篇
- 再开篇
- 正篇
开篇
最近闲来无事,准备做一个病毒扫描的app,那么从哪里开始呢?
首先来分析下一般的查杀步骤都有哪些
基于黑白名单的查杀
这种是有一个庞大的数据库,里面放着各个厂商扫出来的病毒样本,里面放着病毒文件md5/病毒各种信息
只需要将你的包名或者签名或者文件md5传进去就能辨别是不是有毒
基于特征码的扫描
这种就是有一个病毒特征码库,通过对apk解包,深度扫描文件里是不是存在病毒
再开篇
首先我们要做个病毒库,难道要去网络上把各个厂商的病毒库都拿过来,还是要自己做一个网站等着别人来上传病毒,好像都不行,那得到猴年马月去了,今天 我们要做的就是将网络上的别人做好病毒库用python把他们爬取出来
正篇
首先我们使用的是python3,python2就不要搞事情了
首先先确定要爬取的页面
# 好吧,我就找到这一个免费的
urlprefix = 'http://www.virscan.org/reportlist'
然后我们既然做爬虫,咱就要伪装成正常用户
# 伪装成浏览器访问,适用于拒绝爬虫的网站
headers = {'User-Agent': 'Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10','Referer': 'http://www.baidu.com/'}
第一步要访问这个界面
import re
import urllib.parse
import urllib.request
import bs4
import timereponse = urllib.request.Request(myurl)
html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析html
soup = bs4.BeautifulSoup(html, 'html.parser')
拿到了html之后,就可以搞事情了
对,就是要拿到这个里面的这个页数的链接
# 正则解析页面URLpattern = r'/reportlist/\w+'liResult = soup.find_all('a', href=re.compile(pattern))# 找到页面最大值maxPage = 1for link in liResult:url2 = link['href']page = url2.split('/')[-1]if maxPage < int(page):maxPage = int(page)print(maxPage)# 访问查找到urlfor x in range(1, maxPage+1):pageUrl = myurl+'/%d' % (x)# print(pageUrl)getReport(pageUrl)time.sleep(1)
通过上面的步骤我们拿到了每一页的url,下面开始访问每一页的数据了
def getReport(myurl):#print('---------getReport-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')# 查找首页所有a链接,匹配想要的URL格式(v.xxx内容)pattern = r'http://v.virscan.org/\w+' # URL格式vLinks = soup.find_all('a', href=re.compile(pattern))for vlink in vLinks:url3 = urllib.parse.quote(vlink['href'])url3 = url3.replace('http%3A', 'http:')# print(url3)if vlink.has_attr('alt'):vn = vlink['alt']else:vn = ''# print(vn)# 只扫面和Android相关的病毒链接if 'android' in url3.lower():# 获取到病毒名称if vn == '':vn = url3.split('/')[-1][0:-5]vn = urllib.parse.unquote(vn)print('get antivirus name :'+vn)getAndroidVirusReport(url3)time.sleep(1)
通过上面的代码找到的就是它
然后点进去开始爬取详情
def getAndroidVirusReport(myurl):#print('--------getAndroidReport-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')basepageurl = urllib.parse.unquote(myurl[:-5]) + '/'# 获取详解界面pattern = 'http://v.virscan.org/'VInfoLinks = soup.find_all('a', href=re.compile(pattern))# 这里是找到页面最大值,然后for循环访问maxpagenum = 1for link in VInfoLinks: url4 = link['href']numstr = url4.split('/')[-1][0:-5]try:if maxpagenum < int(numstr):maxpagenum = int(numstr)except:continueprint('found max page:'+ str(maxpagenum))for i in range(1, maxpagenum+1):url5 = urllib.parse.quote(basepageurl + str(i) + '.html')url5 = url5.replace('http%3A','http:')#print(url5)getAndroidVirusPage(url5)time.sleep(1)
点进去就是上面这样,病毒的文件的md5就拿到了,这时候不要要着急,还要把这个md5取出来
# 获取病毒md5值
def getAndroidVirusPage(myurl):#print('--------getAndroidVirusPage-->'+myurl)reponse = urllib.request.Request(myurl)html = urllib.request.urlopen(reponse).read().decode("utf-8")# 解析htmlsoup = bs4.BeautifulSoup(html, 'html.parser')# 拿到md5值pattern = r'http://md5.virscan.org/\w+' #URL格式md5Links = soup.find_all('a', href=re.compile(pattern))for link in md5Links: url6 = link['href']md5str = url6.split('/')[-1][0:-5]print("get file md5 :"+md5str)
好了,到此结束,我们拿到了病毒文件md5
下面还要把它存到数据库,然后客户端获取到这个数据库,然后就是各种比对找出病毒就行了
实现一个病毒扫描app——python爬取病毒样本相关推荐
- 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!
哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...
- 用 python 爬取房价信息
这是我们python课程要求我们制作一个项目,用python爬取结果并作数据展示.我们使用requests的方法对房价的信息做了爬取,一下就是我们所爬取的网页 我们做这个项目主要分为以下几个步骤 1 ...
- Python爬取抖音app视频
作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...
- 青灯教育python免费公开课_如何使用Python爬取抖音APP视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...
- 使用python爬取抖音app视频(appium可以操控手机)
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- python爬取手机app图片_python 手机app数据爬取
今天向大家介绍app爬取. @ 一:爬取主要流程简述 1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单. 2.在APP中想要查看请求与响应(类似浏览 ...
- 教你用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- 以某乎为实战案例,教你用Python爬取手机App数据
1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...
- 使用python爬取抖音app视频
记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...
- 教你用Python爬取手机App数据!居然有人说爬不了APP
最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据! 2. ...
最新文章
- JDK线程池的ThreadFactory
- 全国大学生智能汽车竞赛讯飞 -智慧餐厅技术报告 ——信号与系统课程论文
- 无人再谈CV:计算机视觉公司的困境
- 如何更新android v7 support library,新手入门之Android Support Library | Soo Smart!
- 2021.11.18
- Spring batch 2.0例子(lineMapper)
- HDU 2845 Beans
- ESDF建图库voxblox的安装编译过程
- 【图像去噪】基于matlab中值滤波图像去噪【含Matlab源码 421期】
- Java爬虫入门(一)
- java网站渗透测试_如何进行Web渗透测试
- 网络安全工作及其配套法律法规和规范性文件汇总目录
- activemq_CVE-2015-5254_漏洞复现_源码分析
- python数学公式编辑工具_GNU TeXmacs
- 支配节点树及其构建算法 Dominator-tree and its Construction Algorithms
- 读取数据快慢的设备_目前在以下各种设备中,读取数据快慢的顺序是内存、硬盘、光盘和软盘。...
- 主网已经上线的币有哪些_主要币种主网上线时间(超全)
- 计算机达到什么水平可以接活,计算机一般达到什么水平才能被接受?
- 微信小程序API的Promise化及全局状态管理MobX
- .NET 开源开发项目【翻译】