1、前言

又在0x00sec上翻到好东东。

https://0x00sec.org/t/python-hackback-updated/882

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

#!/usr/bin/python3.4
import re
import urllib.request
import json
log_path = "/var/log/auth.log"
hosts = []
key = "{YOUR_API_KEY}"
#GET FAILED PASSWORD ATTEMPT
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 hosts
#GET USERNAME
def get_username(line):
username_word = line.split("Failed password for invalid user ")
username = (username_word[1]).split(" ")
return username[0] #LOCATE IP WITH GEOIP
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']))
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")
pass
if __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 hosts def 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

【Python】HackBack(获取暴力破解服务器密码的IP来源)的更多相关文章

  1. 最详细Python批量字典暴力破解zip密码

    工具破解 前两天在网上下来了一波项目案例,结果全是加密的压缩包,于是去网上找了一个压缩包破解的工具 苦于工具破解太慢,一个压缩包要好久,解压了三个之后就放弃了,准备另寻他法 密码字典 巧的是破解的三个 ...

  2. 分享一个撩妹、装13神技能,0基础用Python暴力破解WiFi密码

    WiFi密码Python暴力破解   Python密码破解部分截图 获取视频资料,转发此文+点击喜欢,然后获取资料请加Python交流群:580478401,就可以获取视频教程+源码 环境准备: py ...

  3. 忘记秘密利用python模拟登录暴力破解秘密

    忘记秘密利用python模拟登录暴力破解秘密: #encoding=utf-8 import itertools import string import requests def gen_pwd_f ...

  4. 记录ssh暴力破解的密码字典

    之前我已经在wooyun和91ri上发表了这篇文章,今天转到51cto上... 默认的ssh日志是不带密码记录功能的,现在想把登录密码记录下来,这样就可以搜集黑客的ssh爆破字典了,从而可以反扫回去. ...

  5. 使用Medusa美杜莎暴力破解SSH密码

    使用Medusa美杜莎暴力破解SSH密码 1.Medusa简介 Medusa(美杜莎)是一个速度快,支持大规模并行,模块化的爆力破解工具.可以同时对多个主机,用户或密码执行强力测试.Medusa和hy ...

  6. Linux用root强制踢掉已登录用户;用fail2ban阻止ssh暴力破解root密码

    Linux用root强制踢掉已登录用户   首先使用w命令查看所有在线用户: [root@VM_152_184_centos /]# w 20:50:14 up 9 days, 5:58, 3 use ...

  7. Odoo14 防暴力破解登录密码

    1 # Odoo14 防暴力破解登录密码 2 # 主要工具:redis 3 # 实现思路:限制每个用户24小时内登录失败次数.连续超过5次失败后,需要等待一定时间后才能再次尝试登录 4 # 配置:在你 ...

  8. 10小时之内,暴力破解SSH账号的IP

    10小时之内,暴力破解SSH账号的IP,IP 地址数据来源于  ip138.com 182.18.76.246 北京市昌平区 北京亿安天下网络科技有限公司 联通 221.223.200.143 北京市 ...

  9. python暴力破解压缩包密码

    啥也不说,直接上代码 #-*-coding:utf-8-*- import zipfile #生成1-999999的数字密码表, 要是有别的密码类型,对密码表改造一下就可以了,也可以上网下载某些类型的 ...

随机推荐

  1. 《linux内核分析》第六周:分析fork函数对应的系统调用处理过程

    一. 阅读理解task_struct数据结构http://codelab.shiyanlou.com/xref/linux-3.18.6/include/linux/sched.h#1235: 进程是 ...

  2. Spring sprint @ ninth day

    时间 日期 地点 工作 20:05 5.20 九实 集成网络助手项目 遇到的困难:集成遇到,画了好久的rc文件,编译不了.rc文件也不能复制,还得重画.郁闷!!!

  3. 第二个Sprint冲刺第三天(燃尽图)

  4. ElasticSearch 2 (20) - 语言处理系列之如何开始

    ElasticSearch 2 (20) - 语言处理系列之如何开始 摘要 Elasticsearch 配备了一组语言分析器,为世界上大多数常见的语言提供良好的现成基础支持. 阿拉伯语.亚美尼亚语,巴 ...

  5. PAT 1043 输出PATest

    https://pintia.cn/problem-sets/994805260223102976/problems/994805280074743808 给定一个长度不超过10000的.仅由英文字母 ...

  6. k8s 实验过程中遇到的两个小问题 端口 和 批量删除Error的pods

    1. 自己kubeadm搭建的一套k8s系统 然后进行做实验 发现了几个问题 jenkins 创建 salves的时候总是有问题.  提示注册不上 然后 我修改了下yaml文件 暴露端口 50000 ...

  7. SSR & Next.js & Nuxt.js

    SSR & Next.js & Nuxt.js Server Side Rendering https://nextjs.org/ https://nuxtjs.org/ SSR &a ...

  8. Linux_Centos7_设置MySql定时备份

    一.查看是否安装了必要的组件 [root@localhost /]# rpm -qa | grep cron cronie-1.4.11-14.el7_2.1.x86_64 cronie-anacro ...

  9. Luogu4768 NOI2018归程(最短路径+kruskal重构树)

    按海拔从大到小合并建出kruskal重构树,这样就能知道开车能到达哪些点,对这些点到1的最短路取min即可.最难的部分在于多组数据的初始化和数组大小的设置. #include<iostream& ...

  10. C++11 初始化

    C++11 初始化 统一初始化语法        C++11新添加初始化列表 std::initializer_list<>类型,可以通过{}语法来构造初始化列表 .初始化列表是常数:一旦 ...