2012-08-31 28 views
4

我目前正在嘗試編寫一個程序,該程序將能夠創建穩定的TCP連接並完全控制ISN號碼。我一直在用C寫作,而且我的知識已經達到了極限,我想知道是否有更好的方法。最有效的方式來操縱TCP標頭中的ISN號碼

我試過的是手動構建標頭,使用原始套接字發送和接收沒有內核干擾的數據包,這是一個挑戰。

所以不管語言如何,你認爲操縱ISN最有效和最簡單的方法是什麼?

+1

我們在談論什麼操作系統?爲什麼你需要這個級別的控制開始?總之:你真的*想做什麼? –

+0

@MichaelMadsen嗯,我正在使用Backtrack5,至於這個原因,我讀了這篇關於tcp連接的隱藏通道的文章,並想嘗試建議的通道。純粹在愛好的基礎上,當然,看看它是否可以完成(意思是如果我能做到這一點):) – youjustreadthis

回答

4

那麼,ISN是以隨機方式生成的,以防止ISN預測攻擊(http://www.thegeekstuff.com/2012/01/tcp-sequence-number-attacks/)。

Linux的網絡堆棧,使用功能tcp_v4_init_sequence生成ISN(http://lxr.free-electrons.com/source/net/ipv4/tcp_ipv4.c#L101),這個函數調用secure_tcp_sequence_number功能(http://lxr.free-electrons.com/source/net/core/secure_seq.c#L106)來完成這項工作。看看這個函數,並嘗試克隆它,所以可以將它與來自用戶空間的代碼一起使用。

如果你有足夠的時間,你可以看看部分RFC 6528http://www.rfc-editor.org/rfc/rfc6528.txt)的3,它描述瞭如何產生ISN的算法:

ISN = M + F(localip, localport, remoteip, remoteport, secretkey) 

並設法實現它,如果你想:)

+0

謝謝你,這是一些非常有用的參考。 – youjustreadthis

相關問題