2016-10-31 4 views
0

自分で開発したネットワークプロトコルをテストするためのスクリプトを作成しようとしています。したがって私はリクエストを送信するためにscapyを使用しています。すべて正常に動作するようですが、私のコードで指定したUDPソースポートは送信プロセス中に変化しているようです。 Wiresharkのソースポートは、指定したポートと同じではありません。私もtcpdumpでパケットをキャプチャしようとしましたが、tcpdumpも私に間違ったポートを示しています。 私は送信する前にhexdumpをチェックしましたが、それも正しいようです。 問題は何ですか?どのように解決できますか?scapy:送信後にUDPソースポートが変更される

for x in arr: 
      cds = TestProtocol(HopCount = 0xe, Length = 0x4, Priority = 0x1, ServiceID = 0x3, 
          ReceiverAddrLen = 0x1, UniqueID1 = 0x1, 
          UniqueID2 = 0x1, SenderAddress = 0x1b4e, 
          PacketType = 0x02c2, data1 = 0x0004, 
          data2 = 0xe6a7, data3 = 0x0) 
      ip = IP() 
      ip.dst = destAddr 
      ip.src = srcAddr 
      udp = UDP() 

      udp.sport = 1743 #the port which changes 
      udp.dport = x 
      pack = ip/udp/cds 
      send(pack, verbose = True) 

答えて

0

これは、あなたのscapyモジュールがポートを変更することを意味します...これはどのような意味ですか?

私はudpコミュニケーションのための "scapy"を知らず、ピュータン "ソケット"モジュール上でそれを使用する理由は何ですか?

UDP-送信のために私は、一般的に使用

import socket 

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 
s.bind(('192.168.66.33', 6022)) #bind local IP and Port 
s.sendto("Calling device", ('192.168.66.48', 6022)) #send string to other IP on same port 
data,addr = s.recvfrom(4096) #buf size 4096 bytes 
print str(data) #print data received from called device 

また、TCPのもののためにこれを使用することができ

+0

私はここにscapyを使用する理由は、scapyで、簡単にパケットが特定に送る操作することができるということですホスト。これは侵入テストに本当に便利です。私のコードはwiresharkに従って動作します。唯一の問題は送信元ポートであり、正しい要求を送信するために設定する必要があります。 – braheem38

+0

どのようにパケットを変更したいですか?いくつかのバイトを変更しますか?なぜこれは "ソケット"で可能ではありませんか? –

+0

私は現在scapyをPythonのソケット実装と組み合わせて動作させています。これは動作します。ありがとうございました! – braheem38

関連する問題