@@ -66,23 +66,25 @@ def run_host(rhost)
66
66
end
67
67
68
68
def extract_members ( res , url )
69
- members = res . body . scan ( /< div class="ccm\ - profile\ - member\ - username">(.*?)< \/ div>/i )
69
+ members = res . get_html_document . search ( ' div[@ class="ccm-profile-member-username"]' )
70
70
71
- if members
71
+ unless members . empty?
72
72
print_good ( "#{ peer } Extracted #{ members . length } entries" )
73
73
74
74
# separate user data into userID, username and Profile URL
75
75
memberlist = [ ]
76
76
users = [ ]
77
77
78
78
members . each do | mem |
79
- userid = mem [ 0 ] . scan ( /\/ view\/ (\d +)/i )
80
- username = mem [ 0 ] . scan ( /">(.+)<\/ a>/i )
81
- profile = mem [ 0 ] . scan ( /href="(.+)">/i )
79
+ userid = mem . text . scan ( /\/ view\/ (\d +)/i ) . flatten . first
80
+ anchor = mem . at ( 'a' )
81
+ username = anchor . text
82
+ profile = anchor . attributes [ 'href' ] . value
82
83
# add all data to memberlist for table output
83
- memberlist . push ( [ userid [ 0 ] , username [ 0 ] , profile [ 0 ] ] )
84
+
85
+ memberlist . push ( [ userid , username , profile ] )
84
86
# add usernames to users array for reporting
85
- users . push ( username [ 0 ] )
87
+ users . push ( username )
86
88
end
87
89
88
90
membertbl = Msf ::Ui ::Console ::Table . new (
@@ -99,7 +101,7 @@ def extract_members(res, url)
99
101
] } )
100
102
101
103
memberlist . each do | mem |
102
- membertbl << [ " #{ mem [ 0 ] . join } " , " #{ mem [ 1 ] . join } " , " #{ mem [ 2 ] . join } " ]
104
+ membertbl << [ mem [ 0 ] , mem [ 1 ] , mem [ 2 ] ]
103
105
end
104
106
105
107
# print table
0 commit comments