python socket編寫埠掃描器
python編寫埠掃描器
概要
- 使用者輸入主機名和埠的命令列解析模組
- 建立兩個函式,connScan連線主機,portScan函式將主機名和埠作為引數,通過gethostbyname()解析出主機的ip地址
基礎模組
- getopt模組使用
- getopt模組用於抽出命令列選項和引數,也就是sys.argv
- getopt.getopt ( [命令列引數列表], ‘短選項’, [長選項列表] )
短選項名後的冒號:表示該選項必須有附加的引數
長選項名後的等號=表示該選項必須有附加的引數
返回 opts 和 args:
cmd命令列輸入如下:
python example. py -i 192.168.1.110 -p 80 -l --help 123
python程式如下:
import sys
import getopt
opts,args=getopt.getopt(sys.argv[1:],"li:p:",["help"])
print(opts);
print(args)
sys.argv[1:]獲得就是從第二個引數開始一直到後面的引數
li:p: 表示短選項,l後面不帶引數,i後面需要跟上引數,同理
[“help”]表示引數行得是–help
返回的opts就是((‘-i’,’192.168.1.110’),(‘-p’,’80’),(‘-l’,”),(‘–help’,”))引數選項及其value的元組
args 是一個除去有用引數外其他的命令列輸入 (‘123’)
-
2.
用到的socket函式 | 描述 |
---|---|
socket.gethostbyname(hostname) | 將主機名轉換為ip地址 |
socket.gethostbyaddr(ip_address) | 通過ip地址,返回包括主機名的三元組:(hostname, aliaslist, ipaddrlist) |
==完整程式碼==
#coding=UTF-8
import getopt
import socket
import sys
def connScan(target_host,target_port) :
try:
conn=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
conn.connect((target_host,target_port))
conn.send('test\r\n')#通過傳送資料捕獲執行在目標主機埠的應用程式的一些資訊
results=conn.recv(1024)
print('[+]{0}/tcp open'.format(target_port))
print('[+] {0}'.format(str(results)))
conn.close()
except:
print('[-]{0}/tcp closed'.format(target_port))
def portScan(target_host,target_ports):
try:
target_ip=socket.gethostbyname(target_host)
except:
print("[-]Cannot resolve {0}:Unknow host".format(target_host))
return
try:
target_name=socket.gethostbyaddr(target_ip)
print("\n[+] scan result for:{0}".format(target_name[0]))
except:
print("\n[+] scan result for:{0}".format(target_ip))
socket.setdefaulttimeout(1)
for target_port in target_ports:
print("Scanning port"+str(target_port))
connScan(target_host,int(target_port))
def usage():
print('---------------------------------------------')
print()
print()
print("usage:scan_port.py -t target_host -p ports")
print("scan_port.py -t 192.168.1.1 -p 21,23,445,3389")
print()
print()
print('---------------------------------------------')
sys.exit(0)
def main():
try:
opts,args=getopt.getopt(sys.argv[1:],"ht:p:",["help","target","ports"])
except getopt.GetoptError as err:
print(str(err))
usage()
for o,a in opts:
if o in ("-h","--help"):
usage()
elif o in ("-t","--target"):
target_ip=a
elif o in ("-p","--ports"):
ports=a.split(',')
else:
assert False,'Unhandled option'
portScan(target_ip,ports)
if __name__=='__main__':
main()
相關推薦
python socket編寫埠掃描器
python編寫埠掃描器 概要 使用者輸入主機名和埠的命令列解析模組 建立兩個函式,connScan連線主機,portScan函式將主機名和埠作為引數,通過gethostbyname()解析出主機的ip地址 基礎模組 getopt模組使用
Python指令碼寫埠掃描器
一個用python寫的簡單的埠掃描器,python環境為 3.7.0,windows系統 TCP連線掃描是利用TCP的三次握手來確定主機的埠是否開放。確定主機埠開放之後,給埠傳送訊息,接收埠返回的訊息,看該埠執行的服務。 使用時,-H 引數可以提供主機的域名或者ip地
網路程式設計-Socket類埠掃描器
客戶端套接字埠掃描器JPortScanner.javaimport java.net.*; import java.io.*; //埠掃描 public class JPortScanner { private String host; //目標主機 priv
Python之埠掃描器編寫
其實,寫個掃描器也挺好玩的,牽涉到了RAW Socket程式設計,可以盡情地DIY資料包(當然,不符合資料包規則,比如checksum錯誤就沒辦法了),收穫頗深。其中,我覺得用C語言寫更有利於在編寫過程中對加深對計算機網路的理解,特別是資料包細節。但是由於效率問題,還有P
[python網絡編程]利用socket編寫簡單的服務器
python網絡編程 arpinging python socket 利用socket編寫簡單的服務器 步驟解析 建立socket對象 這一步跟我們上次使用socket做客戶端是一樣的,都需要有一個socket連接 s = socket.socket(socket.AF_INET,socket
python socket.connect注意事項,埠應為int型
import socket def port_status(ip,port): server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: server.connect((ip,port
python資訊保安工具之埠掃描器
前言 人生苦短,我用python。有人可能會文這樣的問題,既然市面上已經十分完美的同種型別的工具,為什麼還需要自己寫呢?我個人認為通過一定限度”造輪子”才能提高能力,通過“造輪子”才能能脫離“指令碼小子”的陣營。 這個系列我將使用python寫出埠掃描,埠爆破,
Python 簡化引用socket編寫TCP服務程式
''' Python 簡化引用socket編寫TCP服務程式 by 鄭瑞國 1、引用網路模組socket 2、建立一個TCP網路套接字s 3、繫結本機IP地址和指定埠號 4、開始監聽 5、接受連線 6、接受資訊 ''' from socket import *
Python 使用socket編寫TCP服務程式
''' 使用socket編寫TCP服務程式 by 鄭瑞國 1、引用網路模組socket 2、建立一個TCP網路套接字s 3、繫結本機IP地址和指定埠號 4、開始監聽 5、接受連線 6、接受資訊 ''' import socket
python實現FTP弱口令掃描器與簡單埠掃描器
python實現FTP弱口令掃描器與簡單埠掃描器 目錄 FTP弱口令掃描器 簡單埠掃描器 參考: https://blog.csdn.net/rebelqsp/article/details/22109925 https://www.aliyun.com
python-nmap模組的使用及製作一個簡單的埠掃描器
#!/usr/bin/env python import nmap # 匯入 nmap.py 模組 nm = nmap.PortScanner() # 例項化nmap.PortScanner物件
python 多執行緒單埠掃描器
import socket import threading import IPy #socket.setdefaulttimeout(3) class scanport(threading.Th
python socket程式設計入門(編寫server例項)
python 編寫server的步驟: 1. 第一步是建立socket物件。呼叫socket建構函式。如: socket = socket.socket( family, type ) family引數代表地址家族,可為AF_INET或AF_UNIX
python/socket編程之粘包
處理機制 滿了 bytes true src exceptio 協議 粘包問題 時間間隔 python/socket編程之粘包 粘包: 只有TCP有尿包現象,UDP永遠不會粘包。 首先需要掌握一個socket收發消息的原理 發送端可以是1k,1k的發送數據而接受端的應用程
python--socket粘包
不能 第一個 unp pen () 取出 tar world 緩沖 socket粘包 1 什麽是粘包 須知:只有TCP有粘包現象,UDP永遠不會粘包,首先需要掌握一個socket收發消息的原理, 所謂粘包問題主要還是因為接收方不知道消息之間的界限,不知道一次性提取多少字節的
python socket編程
python socket 建立服務器連接需要六個步驟。第1步是創建socket對象。調用socket構造函數。socket=socket.socket(familly,type)family的值可以是AF_UNIX(Unix域,用於同一臺機器上的進程間通訊),也可以是AF_INET(對於IPV4協議
通過python socket遠程執行命令,並返回值
python socket #!/usr/bin/env python# TCP-Serverimport socketimport subprocesssk_obj = socket.socket(socket.AF_INET,socket.SOCK_STREAM)sk_obj.bind((‘12
Python Socket
conn 操作 更改 ket size 處理 等待 while 主動 Socket_server: import socket import os port = 9000 host = "127.0.0.1" ADDR = (host, port) with s
Python socket編程客戶端與服務端通信
eve sock 系統 con conn 綁定 idt 註意 服務 [本文出自天外歸雲的博客園] 目標:實現客戶端與服務端的socket通信,消息傳輸。 客戶端 客戶端代碼: from socket import socket,AF_INET,SOCK_STRE
樹莓派小車By 樹莓派愛好者ITJoker(通過python socket通信實現樹莓派視頻小車)
Coding 以及 title 密碼 command python false sin pla 本文由樹莓派愛好者ITJoker 編輯,轉載請註明出處。本人也有新浪博客同樣是樹莓派愛好者ITJoker可能名字少了IT。。。 所需材料:樹莓派2B或者2B以上,L2985n驅動