更新時(shí)間:2016年08月24日10時(shí)39分 來(lái)源:傳智播客C++培訓(xùn)學(xué)院 瀏覽次數(shù):
功能:
構(gòu)造 tcp 數(shù)據(jù)包
參數(shù):
sp:源端口號(hào)
dp:目的端口號(hào)
seq:序號(hào)
ack:ack 標(biāo)記
control:控制標(biāo)記
win:窗口大小
sum:校驗(yàn)和,設(shè)為 0,libnet 自動(dòng)填充
urg:緊急指針
len:tcp包長(zhǎng)度
payload:負(fù)載,為給應(yīng)用程序發(fā)送的文本內(nèi)容,可設(shè)置為 NULL
payload_s:負(fù)載長(zhǎng)度,或?yàn)?0
l:libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,第一次組新的發(fā)送包時(shí),這里寫 0,同一個(gè)應(yīng)用程序,下一次再組包時(shí),這個(gè)位置的值寫此函數(shù)的返回值。
返回值:
成功:協(xié)議標(biāo)記
失?。?1
libnet_ptag_t libnet_build_tcp_options(
u_int8_t *options,u_int32_t options_s,libnet_t *l,libnet_ptag_t ptag );
功能:
構(gòu)造 tcp 選項(xiàng)數(shù)據(jù)包
參數(shù):
options:tcp 選項(xiàng)字符串
options_s:選項(xiàng)長(zhǎng)度
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,第一次組新的發(fā)送包時(shí),這里寫 0,同一個(gè)應(yīng)用程序,下一次再組包時(shí),這個(gè)位置的值寫此函數(shù)的返回值。
返回值:
成功:協(xié)議標(biāo)記
失?。?1
libnet_ptag_t libnet_build_ipv4(
u_int16_t ip_len, u_int8_t tos,u_int16_t id, u_int16_t flag,u_int8_t ttl, u_int8_t prot,u_int16 sum, u_int32_t src,u_int32_t dst, u_int8_t *payload,u_int32_t payload_s,libnet_t *l,libnet_ptag_t ptag );
功能:
構(gòu)造一個(gè) IPv4 數(shù)據(jù)包
參數(shù):
ip_len:ip 包總長(zhǎng)
tos:服務(wù)類型
id:ip 標(biāo)識(shí)
flag:片偏移
ttl:生存時(shí)間
prot:上層協(xié)議
sum:校驗(yàn)和,設(shè)為 0,libnet 自動(dòng)填充
src:源 ip 地址
dst:目的ip地址
payload:負(fù)載,可設(shè)置為 NULL(這里通常寫 NULL)
payload_s:負(fù)載長(zhǎng)度,或?yàn)?0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,第一次組新的發(fā)送包時(shí),這里寫 0,同一個(gè)應(yīng)用程序,下一次再組包時(shí),這個(gè)位置的值寫此函數(shù)的返回值。
返回值:
成功:協(xié)議標(biāo)記
失敗:-1
libnet_ptag_t libnet_build_ipv4_options(
u_int8_t*options, u_int32_t options,libnet_t*l, libnet_ptag_t ptag);
功能:
構(gòu)造 IPv4 選項(xiàng)數(shù)據(jù)包
參數(shù):
options:tcp 選項(xiàng)字符串
options_s:選項(xiàng)長(zhǎng)度
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,若為 0,建立一個(gè)新的協(xié)議
返回值:
成功:協(xié)議標(biāo)記
失?。?1
libnet_ptag_t libnet_build_arp(
u_int16_t hrd, u_int16_t pro,
u_int8_t hln, u_int8_t pln,
u_int16_t op, u_int8_t *sha,
u_int8_t *spa, u_int8_t *tha,
u_int8_t *tpa, u_int8_t *payload,
u_int32_t payload_s, libnet_t *l,
libnet_ptag_t ptag );
功能:
構(gòu)造 arp 數(shù)據(jù)包
參數(shù):
hrd:硬件地址格式,ARPHRD_ETHER(以太網(wǎng))
pro:協(xié)議地址格式,ETHERTYPE_IP( IP協(xié)議)
hln:硬件地址長(zhǎng)度
pln:協(xié)議地址長(zhǎng)度
op:ARP協(xié)議操作類型(1:ARP請(qǐng)求,2:ARP回應(yīng),3:RARP請(qǐng)求,4:RARP回應(yīng))
sha:發(fā)送者硬件地址
spa:發(fā)送者協(xié)議地址
tha:目標(biāo)硬件地址
tpa:目標(biāo)協(xié)議地址
payload:負(fù)載,可設(shè)置為 NULL(這里通常寫 NULL)
payload_s:負(fù)載長(zhǎng)度,或?yàn)?0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,第一次組新的發(fā)送包時(shí),這里寫 0,同一個(gè)應(yīng)用程序,下一次再組包時(shí),這個(gè)位置的值寫此函數(shù)的返回值。
返回值:
成功:協(xié)議標(biāo)記
失敗:-1
libnet_ptag_t libnet_build_ethernet(
u_int8_t*dst, u_int8_t *src,
u_int16_ttype, u_int8_t*payload,
u_int32_tpayload_s, libnet_t*l,
libnet_ptag_t ptag );
功能:
構(gòu)造一個(gè)以太網(wǎng)數(shù)據(jù)包
參數(shù):
dst:目的 mac
src:源 mac
type:上層協(xié)議類型
payload:負(fù)載,即附帶的數(shù)據(jù),可設(shè)置為 NULL(這里通常寫 NULL)
payload_s:負(fù)載長(zhǎng)度,或?yàn)?0(這里通常寫 0 )
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
ptag:協(xié)議標(biāo)記,第一次組新的發(fā)送包時(shí),這里寫 0,同一個(gè)應(yīng)用程序,下一次再組包時(shí),這個(gè)位置的值寫此函數(shù)的返回值。
返回值:
成功:協(xié)議標(biāo)記
失?。?1
int libnet_write(libnet_t * l);
功能:
發(fā)送數(shù)據(jù)包
參數(shù):
l:libnet 句柄,libnet_init() 返回的 libnet * 指針
返回值:
成功:發(fā)送數(shù)據(jù)包的長(zhǎng)度使用實(shí)例
失?。悍祷?-1
這里是在 ubuntu 下通過原始套接字組一個(gè) udp 數(shù)據(jù)包,給 PC 機(jī)的網(wǎng)絡(luò)調(diào)試助手發(fā)送信息(對(duì)比:《原始套接字實(shí)例:發(fā)送 UDP 數(shù)據(jù)包》):
復(fù)制代碼
本文版權(quán)歸傳智播客C++培訓(xùn)學(xué)院所有,歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明作者出處。謝謝!
作者:傳智播客C/C++培訓(xùn)學(xué)院
首發(fā):http://metathetuscanyresort.com/c/
c/c++培訓(xùn)之GB2312字符串和UTF-8之間的轉(zhuǎn)換
2016-08-01c/c++培訓(xùn)之常用的9個(gè)字符串C標(biāo)準(zhǔn)庫(kù)函數(shù)之strstr實(shí)現(xiàn)
2016-08-01c/c++培訓(xùn)之C ++中四種類型轉(zhuǎn)換方式
2016-08-01c/c++培訓(xùn)之C語(yǔ)言常用字符串接口總結(jié)
2016-08-01c/c++培訓(xùn)之漫談軟件編碼風(fēng)格
2016-08-01c++培訓(xùn)之C/C++中const的區(qū)別
2016-08-01北京校區(qū)