-
Notifications
You must be signed in to change notification settings - Fork 1
/
attmove.m
109 lines (90 loc) · 2.51 KB
/
attmove.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
function [ result ] = attmove( type,state,id )
%ATTMOVE 此处显示有关此函数的摘要
%type 攻击动作类型
%state 攻击状态
%攻击目标id标志
% result[]
% 此处显示详细说明
global nodenum
global nodes
global attview
global attiniip
global attendip
global crafttime
global vullevel
result=[];
switch type
case 'reconn'
%顺序攻击
if attiniip>attendip
attiniip=0;
end
for nodeid=1:nodenum
if nodes(nodeid).ip==attiniip || nodes(nodeid).ip == attview.ip
attview=nodes(nodeid);
result=true;
else
result=false;
end
end
attiniip=attiniip+1;
case 'weapon'
if state>0
result=state-1;
elseif state<0
craft.os=attview.os;
craft.vulnum=attview.vulnum;
if craft.vulnum>1
for vul=size(vullevel,2):-1:1
vull=find(attview.vuldegree==vullevel(vul), 1);
if ~isempty(vull)
craft.vuldegree=attview.vuldegree(vull);
break
end
end
else
craft.vuldegree=attview.vuldegree;
end
switch craft.vuldegree
case vullevel(1)
craft.time=crafttime(1);
case vullevel(2)
craft.time=crafttime(2);
case vullevel(3)
craft.time=crafttime(3);
end
result=craft.time;
elseif state==0
result=state;
end
case 'delivery'
if attview.ip==nodes(id).ip %&& attview.os==nodes(id).os
result=true;
else
result=false;
attiniip=0;
end
case 'exploit'
if attview.os == nodes(id).os
result=true;
else
result=false;
attiniip=0;
end
case 'install'
if attview.os == nodes(id).os
result=true;
else
result=false;
attiniip=0;
end
case 'c2c'
if attview.ip==nodes(id).ip && attview.os == nodes(id).os
result=true;
else
result=false;
attiniip=0;
end
case 'aoo'
end
end