學習njit client的一點助記

2021-07-09 10:30:17 字數 2419 閱讀 1329

struct bpf_program fcode;  /*存放已經編譯好的過濾表示式*/

獲取網路介面(網絡卡)後,我們需要開啟它:

pcap_t * pcap_open_live(const char * device, int snaplen, int promisc, int to_ms, char * errbuf)

功能:獲得資料報捕獲描述字

上面這個函式會返回指定介面的pcap_t型別指標,後面的所有操作都要使用這個指標。

第乙個引數是獲取的網路介面字串,可以直接使用硬編碼。

第二個引數是對於每個資料報,從開頭要抓多少個位元組,我們可以設定這個值來只抓每個資料報的頭部,而不關心具體的內容。典型的乙太網幀長度是1518位元組,但其他的某些協議的資料報會更長一點,但任何乙個協議的乙個資料報長度都必然小於65535個位元組。

第三個引數指定是否開啟混雜模式(promiscuous mode),0表示非混雜模式,任何其他值表示混合模式。如果要開啟混雜模式,那麼網絡卡必須也要開啟混雜模式,可以使用如下的命令開啟eth0混雜模式:

ifconfig eth0 promisc

第四個引數指定需要等待的毫秒數,超過這個數值後,第3步獲取資料報的這幾個函式就會立即返回。0表示一直等待直到有資料報到來。

第五個引數是存放出錯資訊的陣列。

struct ifreq 這個結構定義在/usr/include/net/if.h

getmacfromdevice函式下的htons(0x0806)是指arp協議。

ifnamsiz = if_namesize = 16.

ioctl選項siocgifhwaddr是獲取mac位址,siocgifaddr是獲取網絡卡ip位址。

pcap_compile()函式用於將使用者制定的過濾策略編譯到過濾程式中。

int 

pcap_compile(pcap_t 

*p, 

struct 

bpf_program 

*fp, 

char 

*str, 

int 

optimize, 

bpf_u_int32 

netmask)

p:表示pcap會話控制代碼;

fp:存放編譯以後的規則;

str:規則表示式格式的過濾規則(filter),同tcpdump中的filter;

optimize:制定優化選項:0 

false, 

1 true;// 0表示

以混雜模式監聽所有符合過濾規則的

資料報;

netmask:監聽介面的網路掩碼;

返回值:-1表示操作失敗,其他值表成功。

int 

pcap_setfilter(pcap_t 

*p, 

struct 

bpf_program 

*fp)

p:表示pcap的會話控制代碼;

fp:表示經過編譯後的過濾規則;

返回值:-1表示操作失敗,其他值表成功。

pcap_setfilter()函式用於應用過濾器。

pcap_next_ex(pcap_t* p,struct pcap_pkthdr** pkt_header,const u_char** pkt_data)

功能: 從inte***ce或離線記錄檔案獲取乙個報文

引數: p: 已開啟的捕捉例項的描述符

pkt_header: 報文頭

pkt_data: 報文內容

返回值: 1: 成功

0: 獲取報文超時

-1: 發生錯誤

-2: 獲取到離線記錄檔案的最後乙個報文

base64字元的最小單位是四個字元一組(也就是三個位元組)

base64編碼:

static

void fillbase64area(char area)

c1 = version[i++];c2 = version[i++];area[24] = tbl[ (c1&0xfc)>>2 ];area[25] = tbl[((c1&0x03)<<4)|((c2&0xf0)>>4)];

// 需補兩個6位,乙個是最後乙個8位的後4位補兩個0,另乙個對應異常的「=」
area[26] = tbl[ ((c2&0x0f)<<2)];
area[27] = '=';

}

pcap_sendpacket()

傳送單個資料報函式原型: int pcap_sendpacket ( pcap_t * p, u_char * buf, int size ) 說明:該函式可以傳送乙個原始資料報到網路上。buf包含要傳送到網路上的資料報的資料(包括協議頭)。注意,mac crc不用包含,因為它是網絡卡驅動計算然後新增的。返回值為0說明資料報已經成功的傳送了,否則返回-1。

一點學習技巧

學習乙個新東西或者說要掌握乙個東西,要先理清他的脈絡,結構,做到心中有數,然後再就揪細節。就像高中時候寫作文一樣,我的文章 都是議 結構基本是一成不變的。總分總,分的中間,又是排比段落,總結,排比段落,總結。確認好主題,就是忘裡面填東西,所以只要有素材,寫作文特別快。同樣的,到了乙個新城市,你想要快...

一點一點進步

requestparam,是獲取前端傳遞給後端的引數,可以使get方式,也可以是post方式。若前端傳遞的引數和後端接收的引數名稱不一致,則必須要標註。pathvariable,是獲取get方式,url後面引數,進行引數繫結。1.裝箱就是講基本資料型別轉換為包裝類,拆箱就是自動將包裝類轉換為基本資料...

深度學習的一點點一點點知識

我們手裡有大量的x和y,求權重訓練的是權重資料樣本 xwy 身高0體重0 血型0.3 腳指頭0.8 一組x計算出對應的乙個y 計算過程是w 下面的就是最基礎的公式 我們已知資料是大量的x和y 希望通過 西塔 來獲得w 我們的學習才剛剛開始,首先需要理解的是與門 x1x2y0 0001 0100 11...