sladjfksld 发表于 2015-11-20 11:18:32

一个简短的字符处理脚本

本帖最后由 sladjfksld 于 2015-11-20 11:46 编辑

前几天用cain嗅探一个C段时,嗅出了一堆3389登录账号密码,大概有几万个吧,其中大部分都是别人爆破的记录,是无效的的。
cain把每个登录记录都保存一个txt,用cain rdp parser读取的话,要点开好几万次txt,那得搞死个人,并且也不容以判断哪个是有效的,哪个是爆破的。
在网上down了一个批量读取记录的php脚本,下载地址见:http://lcx.cc/?i=3307,读出来的账号密码单独保存在一个txt中,就是下面的截图

但是这玩意儿有好几万个记录,也不好判断哪个有效啊,然后无赖之下就写了个python脚本,便于分析
脚本代码如下:
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(':').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=list.split(':').strip()
                else:
                  client_address='不存在client server'
                if('username' in list):
                  username=list.split(':').strip().replace(' ','')
                else:
                  username='不存在username'
                if('password' in list):
                  password=list.split(':').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!=result_list.split(' ')):
               print result_line
            else:
               print '               ',result_dict,result_dict,result_dict
      else:
            print '出现错误'

if __name__=="__main__":
    obtain_server_address()
    trans_str()

执行结果见图

第一列是服务器地址,第二列是登录源地址,第三列是账号,第四列是密码。可以看到登录源地址大部分都相同,这肯定是爆破记录,一般都是无效的,不用去登录尝试了
只需要重点找那些单独出现的登录源地址对应的账号密码尝试就OK了

xiaoqqf4 发表于 2015-11-21 15:01:45

a136 发表于 2015-11-21 19:45:05

支持,看起来不错呢!

arctic 发表于 2015-11-22 01:10:14

感谢楼主的分享~

perble 发表于 2015-11-22 15:26:59

感谢楼主的分享~

yusiii 发表于 2015-11-23 03:48:08

支持,看起来不错呢!

ljy07 发表于 2015-11-23 13:21:46

学习学习技术,加油!

wtsqq123 发表于 2015-11-23 21:24:04

支持,看起来不错呢!

Jack-5 发表于 2015-11-24 11:36:32

asion 发表于 2015-11-24 16:59:01

感谢楼主的分享~
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 一个简短的字符处理脚本