亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

Chinaunix

標題: 局域網內實現飛鴿欺騙 [打印本頁]

作者: 陽光boyer    時間: 2011-02-10 12:01
標題: 局域網內實現飛鴿欺騙
本帖最后由 陽光boyer 于 2011-02-10 12:02 編輯

我們常在局域網內用飛鴿進行溝通、文件傳輸。有天突發(fā)奇想,要是我能冒充某給人給另外一個人發(fā)送飛鴿消息,該多有趣?有了想法,就該去實現,不然就是空想了。。不過還真空想了段時間,但最后還是寫出了個小程序,和大家分享下。


要想冒充他人,首先得了解下飛鴿協(xié)議(見http://zhidao.baidu.com/question/41558223.html)。由于我們大多數人用的都是飛秋,所以就直接分析飛秋了。

飛秋協(xié)議實際上飛鴿協(xié)議的擴展,比飛鴿稍微復雜點。首先看個簡單的例子,我們以編程的方式,自己給自己發(fā)條消息?创a和截圖:

Python代碼


>>> import socket>>> udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)>>> udp.connect(('localhost',2425))>>> udp.send('1:100:flyingzl:flyingzl:32:縱我不往,子寧不嗣音?~~')51>>>



簡單說明下代碼:

飛鴿運行時,會監(jiān)聽UDP和TCP的2425端口,所以我們首先要和本地建立UDP連接,TCP連接一般用來發(fā)送文件等。
1:100:flyingzl:flyingzl:32:縱我不往,子寧不嗣音?~~是飛鴿的協(xié)議字符串,
1表示版本號,100標識包號,flyingzl表示用戶名,第二個flyingzl表示主機名,32表示發(fā)送消息,后面的表示要發(fā)送的消息內容。

這是飛鴿的協(xié)議,后面我們會看到飛鴿和飛秋又有所不同。


我們可以通過socket連機其他人的飛秋并給他們發(fā)送消息,但是通過socket發(fā)送出去的數據包會默認帶上我們自己的ip地址和mac地址,怎么樣才能修改這些數據包呢?

有辦法,windows上不是有wincap么,linux上不是有l(wèi)ibnet么,它們都有python擴展,叫做sendpkt,直接調用就好了。關于怎么使用,可以看之前我的帖子 http://www.javaeye.com/topic/600032#1696365

通過調用sendpkt,我們可以自己構造以太網數據包,自己定義源ip地址和源mac地址,這樣就神不知鬼不覺地欺騙他人。。

現在的問題是:怎么構建以太網數據包。

由于飛秋發(fā)送消息是采用UDP協(xié)議,所以我們只需要構建一個UDP數據包,然后加上我們的內容就可以了。構建以太網數據包可以采用dpkt,非常方便。

現在,我們用wireshark來分析飛秋的協(xié)議。。打開個飛鴿,點擊刷新,就能看到wireshark捕獲的數據包:







飛秋上線時,首先會發(fā)送廣播,告訴網內的其他飛秋,有新人上線,你們馬上動起來,把他加入自己的好友,并問候他一下,這樣,對方飛鴿里面就看到你的飛秋了。然后對方也會把自己的信息發(fā)給你,你的飛秋中也就有了他。

我們把截獲的代碼拷出來,就是 1_lbt4_10#32899#002481627512#0#0#0:1289671407:Administrator:MICROSO-697TGLD:6291457: 別看這個字符串很復雜,其實它就是飛鴿的擴展,也是分為幾段。

1_lbt4_10#32899#002481627512#0#0#0 版本號,不過飛秋有很多自己的定制化,比如是否顯示太陽等,32899就表示一個太陽和一個月亮,002481627512表示發(fā)送者的mac地址,后面的三個0不知道啥意思,有興趣的童鞋好好分析下,和大家一起交流交流

1289671407 也就是包序號了。

Administrator是用戶名

MICROSO-697TGLD 是主機名

6291457是命令字表示上線。還有一些其他的,比如288表示發(fā)送消息,6291457表示下線,還有晃屏啥的,大家有興趣可以自己去分析。由于我只想發(fā)送消息,所以只需要修改下命令字為288即可。

下面就是一個發(fā)送消息的命令字:

1_lbt4_10#32899#002481627512#0#0#0:1289671407:Administrator:MICROSO-697TGLD:288:一日不見,如三月兮
Python代碼


>>> import socket>>> udp=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)>>> udp.connect(('localhost',2425))>>> udp.send('1_lbt4_10#32899#002481627512#0#0#0:1289671407:flyingzl:flyingzl:288:一日不見,如三月兮')86>>>




細心的同學已經發(fā)現,這次截圖和上次截圖顯示不一樣,上次截圖顯示的是飛鴿圖標,這次卻是飛秋圖標。呵呵。。因為我們發(fā)送的是飛秋命令字。。


有了飛秋命令字,我們就可以構建數據包,發(fā)送修改過的飛秋數據包了。。啥都不說了,上代碼:
Python代碼



代碼我就不解釋了,大家可以看里面的注釋,寫得比較明白。。我們來測試下,看看效果。。。從之前的圖片上可以看到,我飛秋上就兩個好友,我們現在要憑空造出來一個,他的ip是192.168.0.106,mac是00-15-AF-AE-E6-C0
運行后,可以看到這樣的結果:






貌似是可以欺騙成功了。。不過如果要欺騙其他網段的飛秋好友,一定要修過代碼中的MASK_MAC字段,大家用wireshark分析飛秋的UPD數據包就知道了。。。


如果大家有興趣,可以自己做個圖形化的界面,比如web頁面,可以圖形化的進行欺騙。。。那就有意思了,比如:



呵呵,就此告一段落。。。如果大家都挺關注,我就把code都發(fā)上來吧。。。。最后,希望本人能拋磚引玉,讓大家發(fā)揮出剛強的創(chuàng)造力。。。祝各位周末愉快 :)
作者: qu-hao    時間: 2013-06-20 09:33
回復 1# 陽光boyer


    高手,學習了!

再請教一個問題,消息發(fā)出去了,如果美女回復了,怎么收信息。
作者: 20032007    時間: 2013-06-20 13:15
qu-hao 發(fā)表于 2013-06-20 09:33
回復 1# 陽光boyer

同問,這個有意思
作者: pitonas    時間: 2013-06-20 13:26
有意思,同問如果美女回復了,怎么收信息啊?




歡迎光臨 Chinaunix (http://72891.cn/) Powered by Discuz! X3.2