私のUDPチェックサム計算は毎回間違った結果を出します

イブラヒム

さまざまなUDPパケットのチェックサムを手動で計算しようとしていますが、Wiresharkに表示されているものと比較して常に間違った結果が得られます。以下は私がそれを行う方法の例です:

Source Address: 192.168.0.103 (0xC0A8, 0x0067)
Destination Address: 192.168.0.1 (0xC0A8, 0x0001)

Source Port: 57090 (0xDF02)
Destination Port: 8000 (0x1F40)

Packet length: 19 (0x0013)
Data: hello world (0x6865, 0x6C6C, 0x6F20, 0x776F, 0x726C, 0x6400)

Expected checksum: 0xEDFD (from wireshark)

UDPチェックサムが次の変数で計算されることを理解しています。

Source IP + Destination IP + 17 (0x0011 - protocol code) + 10 (0x000A - pseudoheader length) + Source Port + Destination Port + UDP Packet Length + Data

それらすべてが16ビットのグループになっています。

したがって、私の計算は(同じ順序で)次のようになります。

0xC0A8 + 0x0067 + 0xC0A8 + 0x0001 + 0x0011 + 0x000A + 0xDF02 + 0x1F40 + 0x0013 + 0x6865 + 0x6C6C + 0x6F20 + 0x776F + 0x726C + 0x6400

上記の合計の結果は次のとおりです。

0x511F4

ここで、結果が0xFFFFより大きいため、次のようにします。

0x11F4 + 0x0005 = 0x11F9

ビットを反転した後、結果が得られます。

0xEE06 <- which, as you can see, it is different from the expected one

だから私の質問は私が間違っているのは何ですか?私は常にwiresharkに表示されているもののほとんどの結果をいます。

以下は、参考として、Wireshark内のパケットのスクリーンショットですhttps://www.evernote.com/l/AWl0H1AGoxpGX4_zjgDlVBcytJM-HP_PvQE

イブラヒム

他の誰かが同様の問題を抱えている場合に備えて、私は自分が間違っていたことを見つけました。

疑似ヘッダーを計算する方法は次のとおりです。

Source IP + Destination IP + 17 (0x0011 - protocol code) + 10 (0x000A - pseudoheader length)

問題は長さバイトにありました。疑似ヘッダーの長さではなく、UDPパケットの長さである必要があります。

最終的な式は次のとおりです。

Source IP + Destination IP + 17 (0x0011 - protocol code) + UDP Packet Length + Source Port + Destination Port + UDP Packet Length + Data

UDPパケット長が2回表示されることに注意してください。最初は疑似ヘッダー用で、2番目は実際のUDPヘッダー用です。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

opencvpythonの輪郭近似は毎回間違った結果を出します

分類Dev

C ++ openmp並列計算は間違った結果を計算します

分類Dev

私のクイックソートの実装は間違った結果をもたらします

分類Dev

サーブレットの年齢計算機が間違った結果を出す

分類Dev

MySQLクエリは間違った結果を出します

分類Dev

Scipyは行列乗算に対して間違った結果を出します

分類Dev

Javaの:組み合わせソート関数は、間違った結果を計算します

分類Dev

cuSparse(cusparseDcsrgemm)での行列の乗算は、間違った結果を出力します

分類Dev

集計+平均は間違った結果を返します

分類Dev

Python3のC拡張機能にコードを移行した後に計算された間違ったチェックサム

分類Dev

MySQL移動平均は間違った結果を出します

分類Dev

Math.cos()は間違った結果を出します

分類Dev

TOSVersionは間違った結果を出します

分類Dev

Math.powは間違った結果を出します

分類Dev

base64は間違った結果を出します

分類Dev

php max()関数は間違った結果を出します

分類Dev

Java Stream.sorted()は間違った結果を出します

分類Dev

OpenCVfilter2dは間違った結果を出します

分類Dev

cudaは乗算カウンターで間違った結果を計算します

分類Dev

ダウンロードしたUbuntuISOのチェックサムは常に間違っていますか?

分類Dev

ダウンロードしたUbuntuISOのチェックサムは常に間違っていますか?

分類Dev

PythonのLinearRegressionが間違った結果を出しますか?

分類Dev

HIVEでの時差計算は間違った答えを出します

分類Dev

間違った結果を与えるnumpy関数-手作業でチェックし、優れています

分類Dev

この C++ プライム チェッカーとサマーが間違った結果を返すのはなぜですか?

分類Dev

Hibernateは間違った結果セットを返し、間違ったクエリを生成します

分類Dev

Swiftは構造体の間違ったサイズを計算します

分類Dev

pairwise.wilcox.testは(私が思うに)間違った結果を出します

分類Dev

mex:計算権; しかし、私は間違った出力を得ています

Related 関連記事

  1. 1

    opencvpythonの輪郭近似は毎回間違った結果を出します

  2. 2

    C ++ openmp並列計算は間違った結果を計算します

  3. 3

    私のクイックソートの実装は間違った結果をもたらします

  4. 4

    サーブレットの年齢計算機が間違った結果を出す

  5. 5

    MySQLクエリは間違った結果を出します

  6. 6

    Scipyは行列乗算に対して間違った結果を出します

  7. 7

    Javaの:組み合わせソート関数は、間違った結果を計算します

  8. 8

    cuSparse(cusparseDcsrgemm)での行列の乗算は、間違った結果を出力します

  9. 9

    集計+平均は間違った結果を返します

  10. 10

    Python3のC拡張機能にコードを移行した後に計算された間違ったチェックサム

  11. 11

    MySQL移動平均は間違った結果を出します

  12. 12

    Math.cos()は間違った結果を出します

  13. 13

    TOSVersionは間違った結果を出します

  14. 14

    Math.powは間違った結果を出します

  15. 15

    base64は間違った結果を出します

  16. 16

    php max()関数は間違った結果を出します

  17. 17

    Java Stream.sorted()は間違った結果を出します

  18. 18

    OpenCVfilter2dは間違った結果を出します

  19. 19

    cudaは乗算カウンターで間違った結果を計算します

  20. 20

    ダウンロードしたUbuntuISOのチェックサムは常に間違っていますか?

  21. 21

    ダウンロードしたUbuntuISOのチェックサムは常に間違っていますか?

  22. 22

    PythonのLinearRegressionが間違った結果を出しますか?

  23. 23

    HIVEでの時差計算は間違った答えを出します

  24. 24

    間違った結果を与えるnumpy関数-手作業でチェックし、優れています

  25. 25

    この C++ プライム チェッカーとサマーが間違った結果を返すのはなぜですか?

  26. 26

    Hibernateは間違った結果セットを返し、間違ったクエリを生成します

  27. 27

    Swiftは構造体の間違ったサイズを計算します

  28. 28

    pairwise.wilcox.testは(私が思うに)間違った結果を出します

  29. 29

    mex:計算権; しかし、私は間違った出力を得ています

ホットタグ

アーカイブ