zepek_al

Enumerate Users Wordpress 2017

Nov 8th, 2017
503
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.75 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # CodeD By ./Zepek
  3. # Enumerate Users WordPress
  4. # Ex: ./EXploit -s http://site.com.br -n 30
  5. # *** Zepek ***
  6.  
  7. import urllib2, urllib, sys, argparse
  8.  
  9. def banner():
  10.     print ("""
  11.           `,+@@@+                              
  12.         .+@@@@@@@;                            
  13.      `;@@@@@@@@@@@                            
  14.     +@@@@@@@@@@@@@:                            
  15.   ;@@@@@@@@@@@@@@@@                            
  16. `@@@@@@@@@@@@@@@@@@`                          
  17. `@@@@@@@@@@@@@@@@@@#                          
  18.  .@@@@@@@@@@@@@@@@@@,                          
  19.   :@@@@@@@@@@@@@@@@@@      .'@@                
  20.    #@@@@@@@@@@@@@@@@+;  .+@@@@@                
  21.    `@@@@@@@@@@@@@#;;+@+#@@@#:`                
  22.     #@@@@@@@@@@';'@@@@@@@:`                    
  23.     `@@@@@@@+;;+@@@@@##`                      
  24.      .@@@#;;+@@@@@#+',.,'.                    
  25.       +;;'#@@@@#+;`      ,:                    
  26.       .#@@@@#++:  @.    ...`                  
  27.    `'@@@@#++'. +  .#++;;+  +                  
  28.  ,@@@@@#++:``::+   `',:+,. ,                  
  29. `@@@@#, #+` ',.`'.   +` ``  `,  .+              
  30. @@:`  ,+. ,`:``.:   '. .',+++   #              
  31. ``    #+`++,.`:,``    :`+@@'@@@@'    ````      
  32.       #'`#+:`.,`:` .@@@+@#  +`.      :  `:    
  33.       #:: +.`,.., `@@,#@':. +        :   '    
  34.       #: ` ',:`,, @#``    + +        ' `,;    
  35.       #: ` `:''`  @` #:.. , '        #+++:    
  36.       #: ,     ;#'#  + :   `:         #++      
  37.       #; '     `''         ,          '.      
  38.       ;' '                 #         `@#             *** Zepek ***
  39.        #.;                ;`       ,#.:;      
  40.        `+;               '.        @   `            Cod3D By ./Zepek
  41.         :#;            `@:        :`  `,      
  42.          .#+;        `'+.'        +               Skype: live:zepek_al
  43.            .@++#'+@+@++` ;@.     '            
  44.             `' ., ` #:`# `+.#+  :.            
  45.              ., :  @#;.`;`:  `#@.              
  46.               +``,.;`@+,. '#                  
  47.               @' ' ;`@:+`#`;`                  
  48.              `#+  ,'`#  :.  '                  
  49.              ' #.  :`#` '`. +                  
  50.              # +.  .:+: :`. .                  
  51.             `, +,   ..+ '`   :                
  52.             ;` #+@:,:#.;``   '                
  53.             #'##:#+.  : `;   ;                
  54.             #. #:      `'`   :                
  55.                #,        `   . """)
  56.     time.sleep(1)
  57.  
  58. def uniq(lst):
  59.     last = object()
  60.     for item in lst:
  61.         if item == last:
  62.             continue
  63.         yield item
  64.         last = item
  65.  
  66. def sort_and_deduplicate(l):
  67.     return list(uniq(sorted(l, reverse=False)))
  68.  
  69. def curllib(req, params=None,postdata=None):
  70.     headers = { 'User-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0',
  71.                 'Content-Type': 'application/x-www-form-urlencoded'}
  72.     try:
  73.         req = urllib2.Request( req, postdata, headers)
  74.         req = urllib2.urlopen(req, timeout = 30).read()
  75.     except Exception as e:
  76.         return False
  77.     return req
  78.  
  79. def sout(s):
  80.     sys.stdout.write( s + "\r" )
  81.     sys.stdout.flush()
  82.  
  83. def finder( text, start, end, index = 1 ):
  84.     try:
  85.         text = text.split(start)[index]
  86.         return text.split(end)[0]
  87.     except:
  88.         return ""
  89.  
  90. def find_username( html=None ):
  91.     if html != None:
  92.         return { "user": finder( html, '/author/', '/' ), "name": finder( html, '<title>', '</title>' ).split(',')[0] }
  93.  
  94.  
  95. # Main:
  96.  
  97. parser = argparse.ArgumentParser(description="Wordpress Enumerate Users", epilog="\033[1mCoded by ChmoD \033[0m")
  98.  
  99. parser.add_argument( '-s', '--site', required=True, default=None, help='target domain or URL')
  100. parser.add_argument( '-n', required=True, type=int, default=None , help='numbers of users to enumerate.')
  101. args = vars(parser.parse_args())
  102.  
  103. results = []
  104. max_login_len = max_name_len = 0
  105. site = urllib2.urlparse.urlparse( args['site'] )
  106. usern = args['n']
  107.  
  108. if site:
  109.     site = site[0]+"://"+site[1]+"/" if site[2] == "" else site[0]+"://"+site[1]+site[2]
  110.     print("[+]: Scanning "+site)
  111. else:
  112.     sys.exit("[#]: Wrong SITE formate (ex):\r\nhttp://target.com/")
  113. for x in range( 0, usern ):
  114.     sout("[+]: %" + str( 100 / usern*x ) + "\t")
  115.     try:
  116.         tmp = curllib(site, '', urllib.urlencode({"author":(x+1)}) )#vsend the request
  117.         if tmp == False:
  118.             pass
  119.         tmp = find_username( tmp ) # extract the info from the respond
  120.     except:
  121.         pass
  122.     if len(tmp['user']):
  123.         results.append(tmp)
  124.         max_login_len = len(tmp['user']) if max_login_len < len(tmp['user']) else max_login_len #get the longest username
  125.         max_name_len = len(tmp['name']) if max_name_len < len(tmp['name']) else max_name_len #get the longest name
  126.  
  127. if not results:
  128.     print("[ERROR]: Could not find anything, or something went wrong!")
  129.     sys.exit()
  130. results = sort_and_deduplicate(results)#remove duplicate
  131. print("Found "+str( len( results ) )+" users in "+site+"")
  132.  
  133. login_space = (max_login_len-len("Login")+1)*" "
  134. name_space = (max_name_len-len("Name")+1)*" "
  135. login_bar = ((max_login_len-len("Login")+1)+6)*"-"
  136. name_bar = ((max_name_len-len("Name")+1)+5)*"-"
  137. header = "| Id | Login"+login_space+"| Name"+name_space+"|"
  138.  
  139. # print the head of the table
  140. print("  +----+"+login_bar+"+"+name_bar+"+")
  141. print("  "+header)
  142. print("  +----+"+login_bar+"+"+name_bar+"+")
  143.  
  144. # print the
  145. for x in range(0,len(results)):
  146.     id_space = (3-len(str(x+1)))*" "
  147.     login_space = (max_login_len-len(results[x]['user'])+1)*" "
  148.     name_space = (max_name_len-len(results[x]['name'])+1)*" "
  149.     print("  | "+str(x+1)+id_space+"| "+results[x]['user']+login_space+"| "+results[x]['name']+name_space+"|")
  150. print("  +----+"+login_bar+"+"+name_bar+"+")
Advertisement
Add Comment
Please, Sign In to add comment