質問

私はJavaでのWebSocketサーバーを構築しようとしているが、私は困難を抱えている...のWebSocketの仕様は、「あなたが、その後にデータの余分な8つのバイトを連結KEY1とKEY2から数字を連結する必要があると言います...そのMD5和である128ビット列を形成 それは握手を読むことを証明するために、サーバによって使用されます。」

例KEY1は155712099 例KEY2は173347027です 例えば、余分な8バイトのデータは、TM [K T2U

であります

'155712099173347027Tm [K T2U' が26バイトではない16バイト(128ビット)があると仮定するているようです!私はここで何をしないのですか?

私はWebSocketをについてのすべてが、ここで、この小さな部分を「取得」することができます。

役に立ちましたか?

解決

あなたが代わりに32ビットの数値の桁数の文字列としてKEY1とKEY2を使用しています。

は、例えば、16進数、32ビット数として155712099である:は0x63、0xfa、0x47、0x09の(0x947fa63)。それはあなたが欲しいものです。あなたは、ターゲットのバイト配列の(key1に対する)位置0と(KEY2用)、4位にそれらの4つのバイトをパックその後、符号なし整数にKEY1とKEY2文字列を変換し、する必要があります。

進値で9バイト列になり数字の列として155712099をとる

:0x31、0x35の0x35の0x37は、0x31、0x32の、0x30から、ます。0x39、ます。0x39。一方、あなたは16バイト長あなたの目標バイト配列を与えるべき位置8から始まるターゲット・バイト配列に直接余分なバイトをパックしたいです。

ハンドシェークが意図的WebSocketをサーバに対する攻撃の種類を試してみて、阻止するために、異なるデータ型などの異なるデータ要素を操作していること。

他のヒント

KEY1とKEY2は、32ビットの整数である場合、あなたはおそらく一緒に4として、それらのそれぞれの表現を連結する必要があるが、その文字列表現、各バイトではない。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top