【問題】請問一個網路技術問題.



贊助商連結


jimmysu
2008-04-16, 08:55 PM
請問一個有趣的網路技術問題.

[電腦狀態]
   ADSL -- A電腦 -- B電腦
   註: A有開ICS,讓B上Internet (2台直接用 RJ45 連起來的)
 
請問Winsock方面的問題:

條件: A-B二台並沒有任何程式用 WSAStartup 去建立連線. (A只單純讓B可上網而己)
   (因為我看網路的書, 好像他們寫的連線程式都要先用WSAStartup, 才能連起來)
   (所以我這二台應該不算有程式連線吧)

目的: A電腦 要修改'假造 封包給 B

問題1. A 廣播(或指定B的IP)用 send 送出一個封包, 是不是B電腦上所有的程式,
    只要call到 recv 的都會接到? (只是看程式本身要不要處理而己)

問題2. B電腦要送到Internet的封包, 因為要經過 A, 所以若我修改 A電腦 的 WSOCK32.DLL
    可以過濾'修改他的封包嗎? (甚至將某類封包截斷不讓他送到Internet)

其實我 B 電腦有支程式會連上某個站的 Server, 偏偏每隔一分鐘Server就送個值給 B
要 B 去計算並回應回去, 若沒回應or算出來的值不對, Server 就斷線了.

我A電腦也想連上那台Server, 可是A電腦不會計算. 計算的工作得交給 B,
所以我得將Server的問題丟給B去計算, 讓B以為是Server在問的. 而算出來的值我在A攔截下來
不讓他送出, 並收下B算出來的值.

因為我 B電腦 完全不能動到, 所以想請問各位高手, 這種方式行不行.
若不行的話, 是否有其它的方法可達到?

謝謝大家!
(因為我對網路不熟, 若問得有白吃, 請見諒)

贊助商連結


FYI
2008-04-17, 03:25 AM
請先瞭解B 和Server (S) 之間的通訊是否加密, 是就不用玩了
其次必須維持B 和Server 的連線, 否則B 大概不會替A 計算

S--s1--A--s2--B
 \-s3-/
你當然得先透過監聽, 瞭解Server 的問題格式和B 的回答格式, s1 是A 替B 建立的連線, s3 是A 自己建立的連線, Server 經由s3 問的問題, 仍然可以透過s2 去問B, 但是你得瞭解其中是否有Call Sequence, 或是你得為s1 & s3 建立Queue, 或者A 直接利用已經建立的s1, 不另外建立s3, 但是如此一來, 你得分清楚哪些得送回B, 哪些不用, 小弟對於程式寫作是大外行, 您可別拷問小弟

jimmysu
2008-04-17, 06:38 AM
謝謝 FYI 兄的回答.

您對網路一定很瞭解, 好幾個點都有切到我實際的情況, 也剛好您所擔心的問題都沒有.

只是不知道, 是不是修改Wsock32.dll就可完成所有的欺騙動作.
 Ex: B 電腦的 send, 是不是在A的 wsock32 內的 recv 可攔到 ?
   若wsock32層級太高的話(我對這個七層不熟) 不就沒辦法了.

最後, 您是不是已確定A的廣播在B電腦上所有的程式,只要有call到 recv 的都會接到? (只是看程式本身要不要處理而己)

若可行的話, 小弟己想叫人幫我改 wsock32.dll 了. :)
謝謝!

jimmysu
2008-04-17, 07:32 AM
剛剛試了一下.
若沒試錯的話, B 要送給 S 的封包, 在 A 的 wsock32.dll 是攔不到的.
若要在這裡攔得到, Windows 處理封包的流程勢必要是 B send -> A recv -> A send 才行.
(這裡說的 recv/send 皆是指 wsock32.dll)

想了一下. 這好像不太可能. B 要送到 S 的封包應該是直接通過了.
(而不是靠 wsock32.dll 來接, 因發現是要送到 S , 所以再 send 出去)

我認為靠 wsock32 好像無法達到要求. 層級太高了. 他只對於攔應用程式的接/送有效.

不知大大有何建議.

FYI
2008-04-17, 03:29 PM
不認為你應該用ICS, 這個問題也不應該是Hack Winsock, 理論上寫程式是必要的, 第一步是寫一個Forwarder, A 是B 的閘道, 單純把B 送給A 的封包Mangle 之後轉送給S, 反之亦然

其次, 問題不牽涉廣播, 你把A 想像成路由器或分享器, 難不成路由器只靠廣播? 這個問題有點類似 "Man-in-the-Middle", 但又不完全是, MITM 作用是A 取代B, 但是現在牽涉Question & Answer, 所以作法比較複雜

何以必須維持B & S 的連線? 因為以一般網路應用程式來說, 未連線, 大概就不會Listening, 等你程式寫出來, 測試一下就知道了

雖然你說不能動到B, 但是如果有方法把B 的程式複製到A, 不是比較簡單?

自己玩吧! 小弟也不夠格作為Hacker, keep low profile.