IPパケットの構造解析?みたいな。

ネットワーク。完全体 が終わって…一段落!は無くて…

師匠から『IPパケットがどういう構造になっているかバイナリから調べれるといいね!』とのこと。

俺『死ぬぅwww…けど、パケットキャプチャが超たのしかったし、やってみよーかな。』
ってなって、難関がいくつかありました…。

難関って?

from struct import pack,unpack

pack('hhl',1,2,3)
unpack('!cBH',fafabaa)

とか!!
の使い方!!

今まで触ったことすら無いのに…師匠はこれを使ってやった方がいいとのこと!


むぅー!!全くわからないwww

あとパケットってどんな形してるねんww

http://www.atmarkit.co.jp/fwin2k/network/baswinlan010/baswinlan010_02.html

⬆の記事読んでふむふむ…。

http://docs.python.jp/2/library/struct.html

⬆のライブラリとにらめっこ…。

楽しくない!!www


〜2日後〜 (今日)

なぜか訳が分からないですが、ピーッンと来たのでソースを書きました。

なぜか書き終えれましたwww

from socket import inet_ntoa as _x
from struct import unpack as _u,pack as _p
#socket.inet_ntoa

with file('/etc/protocols') as AP:
    APL={}
    FLAG=0
    for line in AP:
        if line.startswith('#'):
            continue
        else:
            if line.startswith('ip'):
                FLAG=1
                hoge= line.split()
                APL[hoge[1]] = hoge[2]
            elif FLAG:
                hoge= line.split()
                APL[int(hoge[1])] = hoge[2]

STR='ffffffffffff1040f3954f5e08004500008c4a8700004011ab86c0a80104c0a801ff445c445c00786f377b22686f73745f696e74223a203533363534393532372c202276657273696f6e223a205b312c20385d2c2022646973706c61796e616d65223a2022353336353439353237222c2022706f7274223a2031373530302c20226e616d65737061636573223a205b3137393036343631325d7d'

STR2=''

hexchr =lambda x: chr(int(x,16))
_f = lambda x,y,z: _u(x,y[z:z+4])
_c = lambda z:_x(_p('!I',z[0]))


for i in range(0,len(STR),2):
    STR2+= hexchr(STR[i]+STR[i+1])
else:
    STR2=STR2[14:]
    vs_and_hdl,TOS,len = _f('!cBH',STR2,0) #_u('!cBH',STR2[0:4])
    id,fs_fr= _f('!2H',STR2,4)#_u('!2H',STR2[4:8])
    ttl,proto,chksm = _f('!BBH',STR2,8)
    src=_f('!L',STR2,12)
    dst=_f('!L',STR2,16)
    vs = hex(ord(vs_and_hdl))[2]
    hdl = hex(ord(vs_and_hdl))[3]
    proto = APL[proto]
    chksm = hex(chksm) 
    print vs,hdl,TOS,len
    print id,fs_fr,ttl,proto,chksm
    print _c(src) 
    print _c(dst)

実行結果:
4 5 0 140
19079 0 64 UDP 0xab86
192.168.1.4
192.168.1.255

です!!

全く手が止まりませんでした!!(楽し過ぎてww

はぁーい。
ね。

この結果合ってんのかよ!!ブチ切れ。
ってなるかもしれないので、
Scapyの結果と合わせましょう。

###[ IP ]###
version = 4L
ihl = 5L
tos = 0x0
len = 140
id = 19079
flags = 
frag = 0L
ttl = 64
proto = udp
chksum = 0xab86
src = 192.168.1.4
dst = 192.168.1.255

これがScapyの結果です。

全く一緒です!!ドヤぁー!!11


マジで師匠のおかげですわ…こんなデクノボーをここまで教えてくるとは(感激

今ちょうど 2:30分。  寝よう。 けど、生きる気力がないので、

能年ちゃんの写真見て元気もらいます!


次師匠がどんなもの作ったら成長できるか教えてくれるのが楽しみです笑。

おやすみー!!