1、前言

又在0x00sec上翻到好东东。

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

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

  1. #!/usr/bin/python3.4
  2. import re
  3. import urllib.request
  4. import json
  5. log_path = "/var/log/auth.log"
  6. hosts = []
  7. key = "{YOUR_API_KEY}"
  8. #GET FAILED PASSWORD ATTEMPT
  9. def get_host(test):
  10. for line in text.split('\n'):
  11. if line.find("Failed password for invalid ") != -1:
  12. if get_ip(line) not in hosts:
  13. hosts.append(get_ip(line))
  14. return hosts
  15. #GET USERNAME
  16. def get_username(line):
  17. username_word = line.split("Failed password for invalid user ")
  18. username = (username_word[1]).split(" ")
  19. return username[0]
  20. #LOCATE IP WITH GEOIP
  21. def geoip(host):
  22. response = urllib.request.urlopen("http://freegeoip.net/json/"+host)
  23. geoip = response.read().decode("utf-8")
  24. geoip = json.loads(geoip)
  25. print("\n[+] Tracking ip {}".format(geoip['ip']))
  26. print("-------------------------------")
  27. print('\tCountry : {}\n\ttimezone : {}\n\tlatitude : {}\n\tlongitude : {}'.format(geoip['country_name'],geoip['time_zone'],geoip['latitude'],geoip['longitude']))
  28. def passive_recon(host,key):
  29. url = "https://api.shodan.io/shodan/host/{}?key={}&minify=true".format(host,key)
  30. try:
  31. response = urllib.request.urlopen(url)
  32. result = response.read().decode('utf-8')
  33. result = json.loads(result)
  34. print("[+] Passive Recon using shodan.io")
  35. print("-------------------------------")
  36. print("\tPort : {}\n\tOrganisation {}".format(result['ports'],result['org']))
  37. for x in range(len(result['ports'])):
  38. print("Banner {}".format(result['data'][x]['data']))
  39. except:
  40. print("[+] Passive Recon using shodan.io")
  41. print("-------------------------------")
  42. print("\tCan't retrieve information")
  43. pass
  44. if __name__ == "__main__":
  45. with open(log_path, 'rt') as log:
  46. text = log.read()
  47. get_host(text)
  48. for host in hosts:
  49. geoip(host)
  50. passive_recon(host,key)

2、脚本实现的功能

  1. def get_host(test):
  2. for line in text.split('\n'):
  3. if line.find("Failed password for invalid ") != -1:
  4. if get_ip(line) not in hosts:
  5. hosts.append(get_ip(line))
  6. return hosts
  7. def get_username(line):
  8. username_word = line.split("Failed password for invalid user ")
  9. username = (username_word[1]).split(" ")
  10. return username[0]

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

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

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

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

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

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

  1. ./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. 项目复审——Beta阶段

    排名原则还是基于这个组到底自己做了多少东西,又借鉴了多少东西,不过其他组的具体情况我也不一定说的清楚,所以只是通过大家的码云和一些了解来评判的.当然,是否发布也是一个重要指标.顺便感叹一句,现在的云平 ...

  2. Docker(二十四)-Docker使用Portainer搭建可视化界面

    Portainer介绍 Portainer是Docker的图形化管理工具,提供状态显示面板.应用模板快速部署.容器镜像网络数据卷的基本操作(包括上传下载镜像,创建容器等操作).事件日志显示.容器控制台 ...

  3. JS频率控制函数

    /** * 频率控制 返回函数连续调用时,fn 执行频率限定为每多少时间执行一次 * @param {Function} fn 需要调用的函数 * @param {Number} delay 延迟时间 ...

  4. 基于Vue-cli 快速搭建项目

    Vue-cli可以快速帮助我们创建一个项目,这是官方给我们提供的脚手架.下面我说一下vue-cli的使用方法. 一.准备工作 在使用vue-cli时,首先需要安装nodejs,npm,其次需全局安装v ...

  5. Entity Framework Plus

    ZZZ Project 这家外国公司,有很多关于.NET和数据访问的项目,有收费的,有开源的,我之前介绍过 Z.ExtensionMethods 一个强大的开源扩展库 就出自该名下,其他有 如下 1. ...

  6. Luogu5162 WD与积木(生成函数+多项式求逆)

    显然的做法是求出斯特林数,但没有什么优化空间. 考虑一种暴力dp,即设f[i]为i块积木的所有方案层数之和,g[i]为i块积木的方案数.转移时枚举第一层是哪些积木,于是有f[i]=g[i]+ΣC(i, ...

  7. Simple Cycles Edges CodeForces - 962F(点双连通分量)

    题意: 求出简单环的所有边,简单环即为边在一个环内 解析: 求出点双连通分量,如果一个连通分量的点数和边数相等,则为一个简单环 点双连通分量  任意两个点都至少存在两条点不重复的路径  即任意两条边都 ...

  8. Make Palindrome CodeForces - 600C(思维)

    A string is called palindrome if it reads the same from left to right and from right to left. For ex ...

  9. 【刷题】BZOJ 4805 欧拉函数求和

    Description 给出一个数字N,求sigma(phi(i)),1<=i<=N Input 正整数N.N<=2*10^9 Output 输出答案. Sample Input 1 ...

  10. BZOJ 2879 [Noi2012]美食节 | 费用流 动态开点

    这道题就是"修车"的数据加强版--但是数据范围扩大了好多,应对方法是"动态开点". 首先先把"所有厨师做的倒数第一道菜"和所有菜连边,然后跑 ...