博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Python】HackBack(获取暴力破解服务器密码的IP来源)
阅读量:5318 次
发布时间:2019-06-14

本文共 4110 字,大约阅读时间需要 13 分钟。

1、前言

又在0x00sec上翻到好东东。

帖子里的脚本会得到那些暴力服务器密码失败的IP和用户名,并且使用shodan api做一个溯源定位。

#!/usr/bin/python3.4import reimport urllib.requestimport jsonlog_path = "/var/log/auth.log"hosts = []key = "{YOUR_API_KEY}"#GET FAILED PASSWORD ATTEMPTdef get_host(test):        for line in text.split('\n'):                if line.find("Failed password for invalid ") != -1:                        if get_ip(line) not in hosts:                                hosts.append(get_ip(line))        return hosts#GET USERNAMEdef get_username(line):        username_word = line.split("Failed password for invalid user ")        username = (username_word[1]).split(" ")        return username[0]#LOCATE IP WITH GEOIPdef geoip(host):        response = urllib.request.urlopen("http://freegeoip.net/json/"+host)        geoip = response.read().decode("utf-8")        geoip = json.loads(geoip)        print("\n[+] Tracking ip {}".format(geoip['ip']))        print("-------------------------------")        print('\tCountry : {}\n\ttimezone : {}\n\tlatitude : {}\n\tlongitude : {}'.format(geoip['country_name'],geoip['time_zone'],geoip['latitude'],geoip['longitude']))def passive_recon(host,key):        url = "https://api.shodan.io/shodan/host/{}?key={}&minify=true".format(host,key)        try:                response = urllib.request.urlopen(url)                result = response.read().decode('utf-8')                result = json.loads(result)                print("[+] Passive Recon using shodan.io")                print("-------------------------------")                print("\tPort : {}\n\tOrganisation {}".format(result['ports'],result['org']))                for x in range(len(result['ports'])):                        print("Banner {}".format(result['data'][x]['data']))        except:                print("[+] Passive Recon using shodan.io")                print("-------------------------------")                print("\tCan't retrieve information")                passif __name__ == "__main__":        with open(log_path, 'rt') as log:                text = log.read()get_host(text)for host in hosts:        geoip(host)        passive_recon(host,key)

2、脚本实现的功能

def get_host(test):        for line in text.split('\n'):                if line.find("Failed password for invalid ") != -1:                        if get_ip(line) not in hosts:                                hosts.append(get_ip(line))        return hostsdef get_username(line):        username_word = line.split("Failed password for invalid user ")        username = (username_word[1]).split(" ")        return username[0]

这些函数将从auth.log文件中获取测试服务器密码的ip和用户名

使用freegeoip.net来获取ip位置(但是也可以使用shodan.io api),函数只是将json输出解析为一个美化后的文本输出。

def geoip(host):        response = urllib.request.urlopen("http://freegeoip.net/json/"+host)        geoip = response.read().decode("utf-8")        geoip = json.loads(geoip)        print("\n[+] Tracking ip {}".format(geoip['ip']))        print("-------------------------------")        print('\tCountry : {}\n\ttimezone : {}\n\tlatitude : {}\n\tlongitude : {}'.format(geoip['country_name'],geoip['time_zone'],geoip['latitude'],geoip['longitude']))

与shodan进行关联的脚本函数如下:

def passive_recon(host,key):        url = "https://api.shodan.io/shodan/host/{}?key={}&minify=true".format(host,key)        try:                response = urllib.request.urlopen(url)                result = response.read().decode('utf-8')                result = json.loads(result)                print("[+] Passive Recon using shodan.io")                print("-------------------------------")                print("\tPort : {}\n\tOrganisation {}".format(result['ports'],result['org']))                for x in range(len(result['ports'])):                        print("Banner {}".format(result['data'][x]['data']))        #If we don't get a 200 response code print 'Can't retrive information        except:                print("[+] Passive Recon using shodan.io")                print("-------------------------------")                print("\tCan't retrieve information")                pass

要获取关于黑客的信息,只需要运行:

./hackBack.py

转载于:https://www.cnblogs.com/17bdw/p/8146464.html

你可能感兴趣的文章
Python数据分析入门案例
查看>>
vue-devtools 获取到 vuex store 和 Vue 实例的?
查看>>
内存地址对齐
查看>>
创新课程管理系统数据库设计心得
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
pandas 修改指定列中所有内容
查看>>
lua语言入门之Sublime Text设置lua的Build System
查看>>
vue.js基础
查看>>
电脑的自带图标的显示
查看>>
[转载] redis 的两种持久化方式及原理
查看>>
C++ 删除字符串的两种实现方式
查看>>
ORA-01502: 索引'P_ABCD.PK_WEB_BASE'或这类索引的分区处于不可用状态
查看>>
Java抽象类和接口的比较
查看>>
MyBaits学习
查看>>
管道,数据共享,进程池
查看>>
CSS
查看>>
[Cypress] Stub a Post Request for Successful Form Submission with Cypress
查看>>
UNITY在VS中调试
查看>>
SDUTOJ3754_黑白棋(纯模拟)
查看>>
Scala入门(1)Linux下Scala(2.12.1)安装
查看>>