实现一个病毒扫描app——python爬取病毒样本

文章目录

  • 开篇
  • 再开篇
  • 正篇

开篇

最近闲来无事,准备做一个病毒扫描的app,那么从哪里开始呢?

首先来分析下一般的查杀步骤都有哪些

  1. 基于黑白名单的查杀

    这种是有一个庞大的数据库,里面放着各个厂商扫出来的病毒样本,里面放着病毒文件md5/病毒各种信息

    只需要将你的包名或者签名或者文件md5传进去就能辨别是不是有毒

  2. 基于特征码的扫描

    这种就是有一个病毒特征码库,通过对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爬取病毒样本相关推荐

  1. 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!

    哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...

  2. 用 python 爬取房价信息

    这是我们python课程要求我们制作一个项目,用python爬取结果并作数据展示.我们使用requests的方法对房价的信息做了爬取,一下就是我们所爬取的网页 我们做这个项目主要分为以下几个步骤 1 ...

  3. Python爬取抖音app视频

    作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...

  4. 青灯教育python免费公开课_如何使用Python爬取抖音APP视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...

  5. 使用python爬取抖音app视频(appium可以操控手机)

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  6. python爬取手机app图片_python 手机app数据爬取

    今天向大家介绍app爬取. @ 一:爬取主要流程简述 1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单. 2.在APP中想要查看请求与响应(类似浏览 ...

  7. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  8. 以某乎为实战案例,教你用Python爬取手机App数据

    1 前言 最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数 ...

  9. 使用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  10. 教你用Python爬取手机App数据!居然有人说爬不了APP

    最近爬取的数据都是网页端,今天来教大家如何爬取手机端app数据(本文以ios苹果手机为例,其实安卓跟ios差不多)! 本文将以『某乎』为实战案例,手把手教你从配置到代码一步一步的爬取App数据! 2. ...

最新文章

  1. JDK线程池的ThreadFactory
  2. 全国大学生智能汽车竞赛讯飞 -智慧餐厅技术报告 ——信号与系统课程论文
  3. 无人再谈CV:计算机视觉公司的困境
  4. 如何更新android v7 support library,新手入门之Android Support Library | Soo Smart!
  5. 2021.11.18
  6. Spring batch 2.0例子(lineMapper)
  7. HDU 2845 Beans
  8. ESDF建图库voxblox的安装编译过程
  9. 【图像去噪】基于matlab中值滤波图像去噪【含Matlab源码 421期】
  10. Java爬虫入门(一)
  11. java网站渗透测试_如何进行Web渗透测试
  12. 网络安全工作及其配套法律法规和规范性文件汇总目录
  13. activemq_CVE-2015-5254_漏洞复现_源码分析
  14. python数学公式编辑工具_GNU TeXmacs
  15. 支配节点树及其构建算法 Dominator-tree and its Construction Algorithms
  16. 读取数据快慢的设备_目前在以下各种设备中,读取数据快慢的顺序是内存、硬盘、光盘和软盘。...
  17. 主网已经上线的币有哪些_主要币种主网上线时间(超全)
  18. 计算机达到什么水平可以接活,计算机一般达到什么水平才能被接受?
  19. 微信小程序API的Promise化及全局状态管理MobX
  20. .NET 开源开发项目【翻译】

热门文章

  1. 软件项目的需求变更及对策
  2. STM32F429第二篇之推挽输出与开漏输出
  3. 良心啊,做电商要是早点在这几个网站学习,也不至于被黑产坑啊
  4. 苹果自带的清理软件_苹果电脑清理软件哪个好?对比CleanMyMac和腾讯柠檬清理软件...
  5. 如何成为一名优秀的程序员
  6. noi linux,NOI Linux使用教程(基础讲解)
  7. 判断手机横屏和竖屏方向
  8. HDFS副本存放机制
  9. 数字验证正则表达式大全
  10. 安卓一些错误经验积累