python scapy tcp scan script(tcpスキャナ)
python scapyという強力なクラスライブラリを利用してtcpポートスキャナを書きました
げんり
指定したポートにtcpパケットflags=‘S’を送信し、そのポートがオープンであればtcpパケットflags=‘SA’に返信する.yes、簡単です.もちろんfirewallがあれば別です.
プロセス
1.パケットスナップを定義し、サブスレッドに送り込む.発注関数psの実行:このような複数のポートスキャンのスクリプトは、srまたはsrpで1つずつ送信および受信すると、非常に遅いです.スナップサブスレッドの実行を定義することをお勧めします.非常に効率的です.
code[name: tcp_scan.py]
実行方法
[root@local]#python tcp_scan.py 192.168.199.3 21,80
げんり
指定したポートにtcpパケットflags=‘S’を送信し、そのポートがオープンであればtcpパケットflags=‘SA’に返信する.yes、簡単です.もちろんfirewallがあれば別です.
プロセス
1.パケットスナップを定義し、サブスレッドに送り込む.発注関数psの実行:このような複数のポートスキャンのスクリプトは、srまたはsrpで1つずつ送信および受信すると、非常に遅いです.スナップサブスレッドの実行を定義することをお勧めします.非常に効率的です.
code[name: tcp_scan.py]
import sys
from scapy.all import *
from threading import Thread
def scan_Fun(args): // tcp flags "s"
ip,ports = args
pkt = IP(dst=ip)/TCP(dport=ports,flags="S")
send(pkt,verbose=False)
#print(a.show())
def port_active(): //
def print_liver(pkt):
if TCP in pkt and pkt[TCP].flags == 'SA':
retstring = '%IP.src%: '+str(pkt[TCP].sport)+'[%TCP.sport%] is open'
return pkt.sprintf(retstring)
sniff(filter='tcp',timeout=3,prn=print_liver) // , TCP
def main():
args = sys.argv // , ,
if len(args) != 3:
print('Usage: python tcp_scan.py ip start_port,end_port')
print('for example: python tcp_scan.py 192.168.199.3 21,80')
exit()
start_port,end_port = args[2].split(',')
Thread(target=port_active).start() //
scan_Fun([args[1],(int(start_port),int(end_port))]) //
if __name__ == '__main__':
main()
実行方法
[root@local]#python tcp_scan.py 192.168.199.3 21,80