def readNetworkView(self, filename): target = None access = [] routes = [] tempNodes = {} gateway = "" with open(filename) as file: lines = file.readlines() for line in lines: line = line.replace("\n", "") args = line.split(",") if args[0] == "Target": n = Node(args[1], args[2], args[3], args[4], args[4], False, False, False, args[5], args[6]) target = n access.append(n) tempNodes[args[1]] = n if args[0] == "Server": n = Node(args[1], args[2], args[2], args[3], args[3], False, False, True, args[4], args[5]) server = n if args[0] == "Node": n = Node(args[1], args[2], args[3], args[4], args[4], False, False, False, args[5], args[6]) access.append(n) tempNodes[args[1]] = n if args[0] == "Honeypot": hp = Node(args[1], args[2], args[3], args[4], args[5], True, False, False, args[6]) access.append(hp) tempNodes[args[1]] = hp if args[0] == "Honeyrouter": hr = Node(args[1], args[2], args[2], args[3], args[3], False, True, False, args[4]) access.append(hr) tempNodes[args[1]] = hr if args[0] == "Route": idxh = 0 r = Route(tempNodes[args[1]], tempNodes[args[2]]) for h in args: if idxh > 2: r.addHop(tempNodes[h]) idxh += 1 routes.append(r) if args[0] == "Gateway": gateway = tempNodes[args[1]] nv = NetworkView(target, access, routes, gateway, server) print("Generated network view for " + str(target.decepted_ip_addr) + " on port " + str(target.switchPort)) return nv
def readNetworkView(self,filename): target = None access = [] routes = [] tempNodes = {} gateway = "" with open(filename) as file: lines = file.readlines() for line in lines: line = line.replace("\n","") args = line.split(",") if args[0] == "Target": n = Node(args[1],args[2],args[3],args[4],args[4],False,False,False,args[5],args[6]) target = n access.append(n) tempNodes[args[1]] = n if args[0] == "Server": n = Node(args[1],args[2],args[2],args[3],args[3],False,False,True,args[4],args[5]) server = n if args[0] == "Node": n = Node(args[1],args[2],args[3],args[4],args[4],False,False,False,args[5],args[6]) access.append(n) tempNodes[args[1]] = n if args[0] == "Honeypot": hp = Node(args[1],args[2],args[3],args[4],args[5],True,False,False,args[6]) access.append(hp) tempNodes[args[1]] = hp if args[0] == "Honeyrouter": hr = Node(args[1],args[2],args[2],args[3],args[3],False,True,False,args[4]) access.append(hr) tempNodes[args[1]] = hr if args[0] == "Route": idxh=0 r = Route(tempNodes[args[1]],tempNodes[args[2]]) for h in args: if idxh > 2: r.addHop(tempNodes[h]) idxh+=1 routes.append(r) if args[0] == "Gateway": gateway = tempNodes[args[1]] nv = NetworkView(target,access,routes,gateway,server) print("Generated network view for " + str(target.decepted_ip_addr) + " on port " + str(target.switchPort)) return nv
def generatgeView(self, rHosts, subnetSpace, targetPort, NCDSPort, HoneyPort, numSubnets, minHP, maxHP, Strategy): self.targetsubnet = numSubnets self.lowerSubnet = numSubnets / 2 self.upperSubnet = 0 #generate specified number of subnets for s in range(1, numSubnets): self.getAvaiSubnet(numSubnets) hosts = [] #assign hosts to subnets, and deceive their data for k in rHosts.keys(): if k != NCDSPort and k != HoneyPort: #create new host object realip = rHosts[k].split("/")[0] realmac = rHosts[k].split("/")[1] if k == targetPort: self.target = Host(self.getShortnameHost(), realip, realmac, k) #get subnet address for target self.target = self.setAvailableSubnetAddress( subnetSpace, numSubnets, self.target, targetPort) #print(str(self.target.deceptiveIP)) else: host = Host(self.getShortnameHost(), realip, realmac, k) #get subnet address for host host = self.setAvailableSubnetAddress( subnetSpace, numSubnets, host, targetPort) #print(str(host.deceptiveIP)) #assign honeypots to subnets realHoneyIP = rHosts[HoneyPort].split("/")[0] realHoneyMac = rHosts[HoneyPort].split("/")[1] for subKey in self.subnetList.keys(): numHoneypots = random.randint(minHP, maxHP) for hp in range(1, numHoneypots): subnet = self.subnetList[subKey] hpAddr = self.getAvaiHoneypotforSubnet(subnet) honeyAddr = str(subnetSpace[:-2]) + "." + str( subnet.number) + "." + str(hpAddr) honeypot = Honeypot(self.getShortnameHoneypot(), realHoneyIP, realHoneyMac, honeyAddr, self.randMac(), HoneyPort) self.subnetList[subnet.number].honeypots.append(honeypot) #print("Honeypot " + honeyAddr) #create honeyrouters routerMac = self.randMac() targetSubnet = int(self.target.deceptiveIP.split(".")[2]) subnet = self.subnetList[targetSubnet] subnetAddr = str(subnetSpace[:-2]) + "." + str(subnet.number) + ".1" hr = Honeyrouter(self.getShortnameHoneyrouter(), subnetAddr, routerMac, NCDSPort) subnet.honeyrouter.append(hr) gateway = hr.shortName self.subnetList[subnet.number] = subnet self.honeyrouterList.append(hr) for subKey in self.subnetList.keys(): subnet = self.subnetList[subKey] if subnet.number != targetSubnet: subnetAddr = str(subnetSpace[:-2]) + "." + str( subnet.number) + ".1" hr = Honeyrouter(self.getShortnameHoneyrouter(), subnetAddr, routerMac, NCDSPort) subnet.honeyrouter.append(hr) self.subnetList[subKey] = subnet self.honeyrouterList.append(hr) #generate routes numhops = 1 for subKey in self.subnetList.keys(): subnet = self.subnetList[subKey] targetSubnet = int(self.target.deceptiveIP.split(".")[2]) if subnet.number != targetSubnet: numhops += 1 #numhops=random.randint(2,networkDiameter) hostIdx = 0 for host in subnet.hosts: r = Route(self.target, host) hostSubnet = int(host.deceptiveIP.split(".")[2]) #hops = int(math.fabs(hostSubnet-targetSubnet)) #max sub dist min hop dist if Strategy == "minhop_maxsub": hops = numSubnets - hostSubnet if Strategy == "maxhop_maxsub": #max sub dist max hop dist hops = hostSubnet for hop in range(0, hops): r.addHop(self.honeyrouterList[hop]) self.routeList.append(r) host.distance = hops #subnet.hosts.insert(hostIdx,host) #hostIdx+=1 for honeypot in subnet.honeypots: r = Route(self.target, honeypot) for hop in range(0, numhops - 1): r.addHop(self.honeyrouterList[hop]) self.routeList.append(r) else: for host in subnet.hosts: r = Route(self.target, host) self.routeList.append(r) for honeypot in subnet.honeypots: r = Route(self.target, honeypot) self.routeList.append(r) #set gateway printer = NetworkPrinter() realhosts = printer.printView(self.target, self.subnetList, self.routeList, targetPort, gateway) #for printhost in realhosts: #print("realhosts.append(\"" + printhost + "\")") return (realhosts, self.targetsubnet)
def generatgeView(self,rHosts,subnetSpace,targetPort,NCDSPort,HoneyPort,numSubnets,minHP,maxHP,Strategy): self.targetsubnet = numSubnets self.lowerSubnet = numSubnets/2 self.upperSubnet = 0 #generate specified number of subnets for s in range(1,numSubnets): self.getAvaiSubnet(numSubnets) hosts=[] #assign hosts to subnets, and deceive their data for k in rHosts.keys(): if k!=NCDSPort and k!=HoneyPort: #create new host object realip=rHosts[k].split("/")[0] realmac=rHosts[k].split("/")[1] if k==targetPort: self.target=Host(self.getShortnameHost(),realip,realmac,k) #get subnet address for target self.target=self.setAvailableSubnetAddress(subnetSpace,numSubnets,self.target,targetPort) #print(str(self.target.deceptiveIP)) else: host=Host(self.getShortnameHost(),realip,realmac,k) #get subnet address for host host=self.setAvailableSubnetAddress(subnetSpace,numSubnets,host,targetPort) #print(str(host.deceptiveIP)) #assign honeypots to subnets realHoneyIP=rHosts[HoneyPort].split("/")[0] realHoneyMac=rHosts[HoneyPort].split("/")[1] for subKey in self.subnetList.keys(): numHoneypots=random.randint(minHP,maxHP) for hp in range(1,numHoneypots): subnet=self.subnetList[subKey] hpAddr=self.getAvaiHoneypotforSubnet(subnet) honeyAddr=str(subnetSpace[:-2]) + "." + str(subnet.number) + "." + str(hpAddr) honeypot=Honeypot(self.getShortnameHoneypot(),realHoneyIP,realHoneyMac,honeyAddr,self.randMac(),HoneyPort) self.subnetList[subnet.number].honeypots.append(honeypot) #print("Honeypot " + honeyAddr) #create honeyrouters routerMac=self.randMac() targetSubnet = int(self.target.deceptiveIP.split(".")[2]) subnet=self.subnetList[targetSubnet] subnetAddr=str(subnetSpace[:-2]) + "." + str(subnet.number) + ".1" hr=Honeyrouter(self.getShortnameHoneyrouter(),subnetAddr,routerMac,NCDSPort) subnet.honeyrouter.append(hr) gateway=hr.shortName self.subnetList[subnet.number]=subnet self.honeyrouterList.append(hr) for subKey in self.subnetList.keys(): subnet=self.subnetList[subKey] if subnet.number != targetSubnet: subnetAddr=str(subnetSpace[:-2]) + "." + str(subnet.number) + ".1" hr=Honeyrouter(self.getShortnameHoneyrouter(),subnetAddr,routerMac,NCDSPort) subnet.honeyrouter.append(hr) self.subnetList[subKey]=subnet self.honeyrouterList.append(hr) #generate routes numhops=1 for subKey in self.subnetList.keys(): subnet=self.subnetList[subKey] targetSubnet = int(self.target.deceptiveIP.split(".")[2]) if subnet.number != targetSubnet: numhops+=1 #numhops=random.randint(2,networkDiameter) hostIdx=0 for host in subnet.hosts: r=Route(self.target,host) hostSubnet = int(host.deceptiveIP.split(".")[2]) #hops = int(math.fabs(hostSubnet-targetSubnet)) #max sub dist min hop dist if Strategy=="minhop_maxsub": hops = numSubnets - hostSubnet if Strategy=="maxhop_maxsub": #max sub dist max hop dist hops = hostSubnet for hop in range(0,hops): r.addHop(self.honeyrouterList[hop]) self.routeList.append(r) host.distance=hops #subnet.hosts.insert(hostIdx,host) #hostIdx+=1 for honeypot in subnet.honeypots: r=Route(self.target,honeypot) for hop in range(0,numhops-1): r.addHop(self.honeyrouterList[hop]) self.routeList.append(r) else: for host in subnet.hosts: r=Route(self.target,host) self.routeList.append(r) for honeypot in subnet.honeypots: r=Route(self.target,honeypot) self.routeList.append(r) #set gateway printer = NetworkPrinter() realhosts = printer.printView(self.target,self.subnetList,self.routeList,targetPort,gateway) #for printhost in realhosts: #print("realhosts.append(\"" + printhost + "\")") return (realhosts, self.targetsubnet)