| 
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -62,12 +62,18 @@ print("mac = {}".format(gw.mac_address))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gw.ssh_port = 122
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				ret = gw.detect_ssh(verbose = 1, interactive = True)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if ret > 0:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  die(0, "SSH-server already installed and running")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if gw.use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    die(0, "SSH-server already installed and running")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    #die(0, "Telnet-server already running")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    pass
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				use_ssh = True
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				stok = gw.web_login()
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				dn_tmp = 'tmp/'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if gw.use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  dn_dir = 'data/payload_ssh/'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  dn_dir = 'data/payload/'
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -76,7 +82,7 @@ print("Begin creating a payload for the exploit...")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn_payload1 = 'tmp/payload1.tar.gz'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn_payload2 = 'tmp/payload2.tar.gz'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				fn_payload3 = 'tmp/payload3.tar.gz'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if gw.use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  fn_pfname = 'dropbearmulti'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  fn_pfname = 'busybox'
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -134,7 +140,7 @@ with tarfile.open(fn_payload3, "w:gz", compresslevel=9) as tar:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tar.add(fn_pf3, arcname = os.path.basename(fn_pf3))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tar.add(dn_tmp + fn_executor, arcname = fn_executor)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  tar.add(dn_dir + fn_exploit, arcname = fn_exploit)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if gw.use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  if use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    tar.add(dn_dir + 'dropbear.uci.cfg', arcname = 'dropbear.uci.cfg')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				    tar.add(dn_dir + 'dropbear.init.d.sh', arcname = 'dropbear.init.d.sh')
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
			
			 | 
			 | 
			
				@ -164,8 +170,9 @@ if (fn_payload3):
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				time.sleep(1)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if gw.use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				if use_ssh:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  print("Running SSH server on port {}...".format(gw.ssh_port))
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gw.use_ssh = True
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				else:
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  print("Running TELNET and FTP servers...")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				  gw.use_ftp = True
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
				
			
			 | 
			 | 
			
				@ -174,7 +181,7 @@ requests.get(gw.apiurl + "xqnetdetect/netspeed")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				time.sleep(0.5)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gw.passw = 'root'
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gw.ping(contimeout = 12)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				gw.ping(contimeout = 27)
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				print("")
 | 
			
		
		
	
		
			
				 | 
				 | 
			
			 | 
			 | 
			
				print("#### Connection to device {} is OK ####".format(gw.device_name))
 | 
			
		
		
	
	
		
			
				
					| 
						
						
						
					 | 
				
			
			 | 
			 | 
			
				
 
 |