功能
1.查詢本機的乙太網地址。
2.查詢子網上任何機器的乙太網址。
3.查詢乙太網址對應的IP位址。(未測試)
4.監聽子網上流過的乙太網包。
5.傳送ARP報文。
6.建立TCP連線,傳送接收TCP報文。
利用最後兩個功能,可以偽裝成子網上的任何一台機器。當然,我只對偽裝成受信主機感興趣。
檔案
IPMan.c 原始碼
IP.h 各種包頭定義
IPMan.exe 可直接運行。只要當前目錄下存在
vpacket.vxd
IPMan.ini IPMan運行所需的初始參數。
vpacket.vxd
vpacket.exe vpacket.vxd編程環境。自解壓文
件。使用方法見展開後的vpacket.doc 檔案(Word97)。
README
初始參數
IPMan運行所需的初始參數都存放在檔案IPMan.ini中。在IPMan運行前,有兩個參數是必須重新設定的:本機的IP位址和NDIS設備名。有關NDIS NDIS設備名一般是0000、0001等等。在Win95註冊表的如下位置:KEY_LOCAL_MACHINE/System/CurrentControlSet/control/net/0000 ,IPMan.ini的格式類似於其它Windows套用的INI檔案。有一點要注意的是,兩個定義的段中間必需用一個空行分隔。由"#"開始的行是注釋行。以下是一個IPMan.ini樣板。
"//"後是作者加入的注釋,真正的檔案中是沒有的。
--------------cut here--------------
#Every segment should be seperated by blank
line #My IP address
[IpAddr] // 本機的IP位址
xxx.xxx.xxx.1 #NDIS driver name
[NDIS] // NDIS設備名
0000 #Max data length
[MaxDataLen] // 輸出時最多輸出的位元組數,詳見
輸出一節
4096 #IP table to query
[QueryIP] // IP位址列表,表示想要監聽主機的
IP位址 xxx.xxx.xxx.2
xxx.xxx.xxx.3
#Port table to query // 連線埠列表,表示想要監
聽主機的連線埠(TCP/UDP)
[QueryPort]
21 23 80 #Time out // 逾時(未提供)
[TimeOut] 12345
參數
無參數 顯示本機乙太網址 [-?] 顯示幫助信息
[-l[ini] [-ip:sour_ip[:dest_ip]]
[-port:sour_port[:dest_port]]]
-l 監聽所有信息
-lini 監聽信息有IPMan.ini的QueryIP和QueryPort過濾
-ip:sour_ip 過濾掉所有與sour_ip無關的IP包
sour_ip的格式為xxx.xxx.xxx.xxx
-ip:sour_ip:dest_ip 過濾掉非sour_ip與dest_ip之間通訊的IP包
-port:sour_port 過濾掉所有與sour_port無關的IP包
-port:sour_port:dest_port 過濾掉非sour_port和 dest_ip間通訊的IP包
[qeth:ip_addr] 查詢ip_addr對應的乙太網址
[-qip:eth_addr] 查詢eth_addr對應的IP位址,乙太網址的格式為 xx.xx.xx.xx.xx.xx(16進制)
[-fout:output_file] 輸出檔案
[-fcmd:command_file] 命令檔案,用於傳送ARP包、建立TCP連線等
詳見命令檔案一節
命令檔案
IPMan的命令檔案用於傳送ARP包、建立TCP連線和接收、傳送TCP報文。其格式為:
命令名 命令參數1 命令參數2 命令參數3 ...
現在支持的命令有:
SENDARP my_eth targ_eth sour_eth sour_ip
dest_eth dest_ip operation
傳送ARP報文。關於ARP報文,請參考TCP/IP協定。
CONNECT my_eth targ_eth sour_ip dest_ip
sour_port dest_port tcpid
建立從sour_ip的連線埠sour_port到dest_ip的dest_port連線埠的TCP
連線。用tcpid作為標識。這個標識將用於下列命令。要注意的是my_eth(我的乙太網址)和targ_eth(目的乙太網址)一定要填寫。 SENDTCP tcpid tcpmessage傳送TCP報文。將tcpmessage傳送到tcpid指定的連線。tcpmessage為一個不含空格的字串。空格或不可顯示字元以xxx表示。xxx為 三位十進制數。
RECVTCP tcpid
接收由tcpid指定的TCP報文。
CLOSE tcpid 關閉由tcpid指定的TCP連線。
以下是一個命令檔案的樣板。以"#"開始的行是注釋行。
--------------cut here--------------
# A sample comment line
SENDARP xx.xx.xx.xx.xx.xx xx.xx.xx.xx.xx.xx
xx.xx.xx.xx.xx.xx xxx.xxx.xxx.xxx
xx.xx.xx.xx.xx.xx xxx.xxx.xxx.xxx 2
CONNECT xx.xx.xx.xx.xx.xx xx.xx.xx.xx.xx.xx
xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx
1026 21 1
RECVTCP 1
SENDTCP 1 USER
RECVTCP 1
SENDTCP 1 PASS
RECVTCP 1
SENDTCP 1 BYE
RECVTCP 1
CLOSE 1
輸出
錯誤輸出到螢幕。標準輸出可以可以是螢幕或由命令行指定。輸出格式為:
xxx.xxx.xxx.xxx -> xxx.xxx.xxx.xxx // 源和目的IP位址
xx Byte(s) TCP/UDP/ARP/ICMP
Message:message_string
其中message_string的格式和上節的tcpmessage相同。xx Byte(s)表示實際收到的位元組數。真正輸出的位元組數由INI檔案指定。
將來
今後的版本將提供的功能包括建立偽UDP連線,傳送和接收UDP報文,傳送和接收 ICMP報文等。
葉問
電影《葉問》的英文名“IP MAN”
葉問為什麼會翻譯成IP MAN呢?
其實IP MAN僅僅是葉問的廣東話(香港話)發音(拼音),在廣東話裡面“葉”的拼音寫法是Ip,也可以是Yip,而“問”的話,廣東話拼音則是“man”。所以Ip man僅僅是葉問的一個廣東話拼音直譯而已,簡單明了,並不是什麼Super man之類的。
類似這種廣東話發音直接音譯的還有許多,譬如:
MCDULL:麥兜;張家輝:CHEUNG KA FAI;張學友:CHEUNG HOK YAU;劉德華:LAU TAK WAH;吳宇森:NG YU SUM;張曼玉:CHEUNG MAN YUK;周潤發:CHOW YUN FAT;梁朝偉:LEUNG CHIU WAI;謝霆鋒:TSE TING FUNG;郭富城:KWOK FU SHING;林青霞:LAM CHING HA……