- 論壇徽章:
- 1
|
本帖最后由 澤畔無(wú)材 于 2014-05-06 09:13 編輯
rt, 在網(wǎng)關(guān)處加載一個(gè)內(nèi)核模塊,利用netfilter在網(wǎng)頁(yè)中加一小段代碼。
參考了網(wǎng)上很多朋友的資料,昨天曾經(jīng)幾乎做出來(lái)了,后來(lái)不知道改了哪里,結(jié)果就出現(xiàn)了標(biāo)題說(shuō)的問(wèn)題。。
主要處理方式就是:
if (ct && __nf_nat_mangle_tcp_packet(skb, ct, ctinfo,
iph->ihl*4 , (int)(head - payload), 0,
_ins, LEN_INS, true )) {
skb->local_df = 1; //強(qiáng)制分片
skb_shinfo(skb)->gso_size = 0; //hack:防止warning。。
}
貌似__nf_nat_mangle_tcp_packet里都處理好了一切,另外還用了ct->status的高幾位標(biāo)示連接狀態(tài),方便插入。
在PC端的wireshark里的抓包結(jié)果是:
抓包.jpg (58.54 KB, 下載次數(shù): 114)
下載附件
2014-05-05 10:43 上傳
可見(jiàn)整個(gè)http通信過(guò)程非常順利啊。。
然而chrome瀏覽器顯示無(wú)法顯示此網(wǎng)頁(yè),錯(cuò)誤代碼:ERR_INVALID_CHUNKED_ENCODING
chrome端的處理過(guò)程是:
chrome.jpg (65.56 KB, 下載次數(shù): 120)
下載附件
2014-05-05 10:45 上傳
也就是說(shuō)接收完頭部之后,處理body時(shí)出現(xiàn)了錯(cuò)誤。。但是查看body部分報(bào)文也是非常正常的。。
后來(lái)用較早前備份的成功的代碼測(cè)試也是相同的錯(cuò)誤,很詭異。。
求問(wèn)大嬸們,可能是什么地方出了問(wèn)題呢?我可能調(diào)太久調(diào)頭暈了。。
PS:對(duì)于有些網(wǎng)頁(yè),比如2345網(wǎng)址導(dǎo)航, 不管其長(zhǎng)度是否要分片,上述模塊可以正確添加一小段代碼,比如<!-- test -->, 但是對(duì)于多數(shù)網(wǎng)頁(yè)來(lái)說(shuō),都是返回ERR_INVALID_CHUNKED_ENCODING。。
PPS:剛發(fā)現(xiàn)是網(wǎng)頁(yè)內(nèi)容被截?cái)嗔,但content-length已經(jīng)被我改過(guò)了的啊,見(jiàn)下面截圖,不清楚為什么實(shí)際上還是按原始長(zhǎng)度解析:
pkt.jpg (68.31 KB, 下載次數(shù): 119)
下載附件
2014-05-05 12:29 上傳
更新:已查明是Transfer-Encoding: chunked 搞的鬼,這都是http部分的事情了,害我在底層找半天。。
更新:修正 上面這個(gè)屬性后,初步搞定了~
|
評(píng)分
-
查看全部評(píng)分
|