Scapyの入門
Scapyはパケットを作るための最高のアプリ。Pythonで実装と。はい。
まじでPython最強なんだけど。
どうやら、簡単にパケットを作れるらしいです。
>>> ping = IP(dst='192.168.1.13')/ICMP() >>> ping.show() ###[ IP ]### version= 4 ihl= None tos= 0x0 len= None id= 1 flags= frag= 0 ttl= 64 proto= icmp chksum= 0x0 src= 172.16.247.139 dst= ***.***.**.*** options= '' ###[ ICMP ]### type= echo-request code= 0 chksum= 0x0 id= 0x0 seq= 0x0 >>> send(ping) . Sent 1 packets. >>> reply = sr1(ping) Begin emission: Finished to send 1 packets. * Received 1 packets, got 1 answers, remaining 0 packets >>>
これを見る感じだと、
IP()/ICMP()っていう1つ1つがプロトコルで、オプション決めれる?みたいな?
send()とsr1()の違いが分からないんですが、大体同じと思います。
とおもって調べた所、 sendはただただ送るだけ。
sr1は送って答えも要求するという者でした。
root@bt:~$ scapy Welcome to Scapy (2.0.1) >>> send(IP(src=RandIP('78.0.0.0/16'), dst='192.168.1.13')/TCP(sport=RandShort(), dport=51487), loop=1, verbose=1) .....................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
これが何をしているかというと、
IPプロトコルに 送信元は クラスAをランダムにして、 送信先を 192.168.1.13という場所にして、ずっと送り続けるという者です。←イメージ
TCPプロトコルの sportとdportがイマイチわからないので調べた所、
-
- sport is short for --source-port
-
- dport is short for --destination-port
ふむふむ、相手のポートをどれにするか、ってことだなぁ。
そもそも Randomが使えるって時点で少し悪意を感じますよねw
loop=1 って言うのがイマイチ分からないですが、直感的に言うと、loopし続けると思うので
loop= Trueでやってみたところ成功しました。
verboseも同様。
verboseってなんだ!てなって、調べた所、
loop: send the packets endlessly if not 0.
inter: time in seconds to wait between 2 packets
verbose: override the level of verbosity. Make the function totally silent
when 0
と書いてあって、読んでみても分からん。
誰か助けてください!!
入門なので、これぐらいがちょード良いかと思います。
###追加###
verbose: 冗長な、くどい とかいう意味なんですが、
コンピュータ的な意味合いでいうと『詳細に』っていう意味になるらしいです。
だから、verbose=1っていうのはメモリを多くしてるのかなって思いました。