木曜日、今その井戸ので、私は先週末の課題に対する回答を投稿するには、その時間を考え出した。 ![]()
あなたがそれを導入開始していない場合、最初に、なぜあなたも、IPv6のか注意すべきことはありますか? 私はクライアントのネットワーク内で秘密の通信チャネルとして使用されているIPv6を見つけたまで私はほとんど同じように感じた。 データはその後のTeredo経由でインターネットに押し出されていた。 あなたがこのテクニックに精通していない場合は、スコットホッグが持ついくつかの優れた投稿トピックについてを。
ですから、現時点ではIPv6を使用していない場合でも、それは技術で治療を切るだけでなく、ローカルネットワーク上での監視を開始するために支払う。
そう確認し、課題であった。
DB8:::〜2001 10:DB8::20 2001年のソースIPv6アドレスを持つすべてのトラフィックをキャプチャするtcpdumpやWindumpフィルタを書く。
このフィルタを書くと注意点がいくつかあります。 最初のいくつかの私は前回の記事で覆われて。 私はかなり頻繁にIPv6を使い始めたまで私は知っていたが、実際に考えたことがない最後の1つが、問題だった、tcpdumpを/ Windumpだけあなたが1、2または4バイトのマスクを使用できるようになるということです。 一方私たちは、"IP6 [8時14分] ="、我々は我々が4バイトに制限されることができないための最初のフィルタステートメントでこれを解決するのが大好きだ。 そこにこれを回避する方法は、実際にはですが、私はそれに戻って来ます。
だからここは私が働いているフィルタです。
(IP6 [午前8時04分] = 0x20010db8およびip6 [12:4] = 0とip6 [16時04] = 0と(IP6 [20時04分]> = 0 × 0010とip6 [20:04] <= 0050 ))
少し長いが、動作します。 エリザベスは、はるかに洗練された自分よりも解決策を考え出した。
SRCネット2001:DB8::/ 122およびip6 [23]> = 0 × 10&&IP6 [23] <= 0 × 20
ので、libpcapフォーマットで起動することによって、彼女は一つに私の最初の3つのステートメントを組み合わせることができるでしょう。 サイズの女王であるが、それは彼女の解決策は私よりもはるかに短いですにではない。 このケースではそれは良いことだ。 ![]()
それはそれについてです。 私は明日、別のIPv6型の課題を掲載します。
関連のポスト:


クリス、
後半に鐘の鳴っているがtimtowtdiとともに以下
方法についての...
は'srcネット2001:DB8::/ 122と((IP6 [23]&0XE0 == 0)または(IP6 [23] == 0 × 20))"
原因カフェインの欠如に私の返事を更新。
SRCネット2001:DB8::/ 122
我々は、122ビットでマスキングしている。 122 0に等しいか - これは、ビット33はことを指定します。
IP6 [23]&0XE0 == 0
123 0でなければならない - このフィルタは、ビット121は述べています。
IP6 [23] == 0 × 20
このフィルタは、ビット123が1であることが必要だ。
そう最後のバイトにだけ集中する、あなたの文は、"ビットが121と122がオフでなければならないと(ビット123がオフであるか、ビット123が上でなければならない)"と言う。 これは、近い私たちを取得しますが、ビット124は、どのようなオフになっている場合? これは、フィルタと一致しているが、それでもアドレスの指定された範囲外で私達を置くことができます。
[OK]をので、最後のバイトの最初のニブルに一致する。 (私はそれが1(16が得られるこれと一致するようにしたい - 31)になります
IP6 [23]&F0 == 1
トリックを行う?
フィルタ:
IP [23]&F0 == 1
つの高上位ビットを見て、*最小*の上位ビットがセットされているに一致します。 言い換えると、指定された値(1)小数として感知されるとマスクの範囲外です。 フィルタを実行する場合には、tcpdumpは、構文のエラーを与えることがわかります。
その問題がどんな容易にするかどうかを確認するために、バイナリでは、この最後のバイトを見てみましょう。
私達はから任意のバイナリ値に一致しようとしている。
00010000から00100000
フィルタの"srcネット"の部分は0に設定されている2つの上位ビット(64&128)を確保する処理を行いますので、それらを心配する必要はありません。
私たちのフィルタの残りの部分はどうかを確認する必要があります。
1)ビット32はすべての下位ビット(正確に0010万)がオフの状態で、オンになっています。
または...
00011111) - 2)ビット32は、ビット16は、任意の下位ビット(値の範囲は0001万であることを無視して、オンにオフになっている。
このため、これをフィルタリングするための最も簡単な方法は、より大きく、プリミティブよりを含めることです。 私たちが言いたいことです。
00010000 <= VALUE <= 00100000
今、六角にこのバックを変換しその結果は:
は0x10 <= VALUE <= 0x20を
tcpdumpのでは話し、次のようにこの式を記述します。
IP6 [23]> = 0 × 10&&IP6 [23] <= 0 × 20
または:
IP6 [23]> = 0 × 10とip6 [23] <= 0 × 20
もう少し理にかなって?
私は困難なようにする理にかなっている
私は、ビットマスクを使用してこれを達成するための方法があるかどうかを確認しようとしています。 ちょうど私の前の返事はとてもここでバイトが1つの最後の試みを行くではないニブルに一致するように試みたが実現
SRCネット2001:DB8::/ 122と((IP6 [23]&0xF0な= 0 × 10)または(IP6 [23] = 0 × 20))"
ので、
IP6 [23]&0xF0な= 0 × 10(10進数16と一致する必要があります - 31)後、およびip6 [23] = 0 × 20 32と一致する必要があります。 またはそれは、タオルでスローする時間です?