2016-08-18 7 views
-2
##################################### 
# Portscan TCP   # 
# # 
##################################### 
# -*- coding: utf-8 -*- 
#!/usr/bin/python3 
import socket 

ip = input("Digite o IP ou endereco: ") 

ports = [] 
count = 0 

while count < 10: 
    ports.append(int(input("Digite a porta: "))) 
    count += 1 


for port in ports: 
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    client.settimeout(0.05) 
    code = client.connect_ex((ip, port)) #conecta e traz a msg de erro 
#Like connect(address), but return an error indicator instead of raising an exception for errors 
    if code == 0: #0 = Success 
     print (str(port) + " -> Porta aberta") 
    else: 
     print (str(port) + " -> Porta fechada") 

print ("Scan Finalizado") 

上記のPythonスクリプトは、TCPスキャンです。どうすればTCP SYNスキャンに変更できますか?方法(TCP SYN)を使用してポートスキャナTCP SYNを作成するには?メソッド(TCP SYN)を使用してポートスキャナTCP SYNを作成する方法は?

+2

あの、それだけで接続しようとするよりも少し違います。あなたは自分のアプローチをして、正確な*質問をしなければなりません! –

答えて

3

は、あなたがrawソケット(https://en.wikipedia.org/)を使用する場合があります(SYNを送信し、RST-ACKまたはSYN-ACK を受け取ります)。

http://www.binarytides.com/raw-socket-programming-in-python-linux/ のようなものをコーディングすることは良いexcersiceことができるので、私もhttps://github.com/secdev/scapy

Scapyを検討することをお勧め プログラムやライブラリの強力なPythonベースの対話型パケット操作です。

ここでは、既に単純なポートスキャナ http://pastebin.com/YCR3vp9B、それが何をするかについての詳細な記事を実装するコードサンプルです: http://null-byte.wonderhowto.com/how-to/build-stealth-port-scanner-with-scapy-and-python-0164779/

コードは少し醜いですが、それは動作します - 私はそれをチェックしました私のローカルのUbuntu PCからVPSに対して。ここ は(わずかPEP8に適合するように調整)、最も重要なコードスニペットです:

# Generate Port Number 
srcport = RandShort() 

# Send SYNC and receive RST-ACK or SYN-ACK 
SYNACKpkt = sr1(IP(dst=target)/
       TCP(sport=srcport, dport=port, flags="S")) 

# Extract flags of received packet 
pktflags = SYNACKpkt.getlayer(TCP).flags 

if pktflags == SYNACK: 
    # port is open 
    pass 
else: 
    # port is not open 
    # ... 
    pass 
3

まず、RAWソケットを使用して独自のSYNパケットを生成する必要があります。例を見つけることができますhere

第2に、実際にどのポートがTCPハンドシェイク(SYN、SYN-ACK、ACK)を開始しようとしているかを調べるには、スキャンしたホストからSYN-ACKを聞く必要があります。応答するアプリケーションからTCPヘッダーを検出して解析できるはずです。そのヘッダーから、元のポートを特定することができ、リスニングアプリケーションが存在することがわかります。

また、これを実装すると、基本的にSYN DDOSユーティリティが作成されます。これは、大量の半オープンtcp接続を作成するためです。 @Upsampledが述べたように、あなただけTCPプロトコルのサブセットを必要とするよう

関連する問題