導航:首頁 > 配伺服器 > linuxc伺服器如何讀取客戶端數據包後如何解析

linuxc伺服器如何讀取客戶端數據包後如何解析

發布時間:2023-01-19 04:08:17

1. linux伺服器被攻擊如何進行抓包來進行分析

用途

tcpmp簡義:mp the traffic on a network,根據使用者的定義對網路上的數據包進行截獲的包分析工具。

 tcpmp可以將網路中傳送的數據包的「頭」完全截獲下來提供分析。它支持針對網路層、協議、主機、網路或埠的過濾,並提供and、or、not等邏輯語句來幫助你去掉無用的信息。

語法

tcpmp [-adeflnNOpqStvx][-c<數據包數目>][-dd][-ddd][-F<表達文件>][-i<網路界面>]

[-r<數據包文件>][-s<數據包大小>][-tt][-T<數據包類型>][-vv][-w<數據包文件>][輸出數據欄位]

參數說明:http://write.blog.csdn.net/postedit/72898655

-a 嘗試將網路和廣播地址轉換成名稱。

-c<數據包數目> 收到指定的數據包數目後,就停止進行傾倒操作。

-d 把編譯過的數據包編碼轉換成可閱讀的格式,並傾倒到標准輸出。

-dd 把編譯過的數據包編碼轉換成C語言的格式,並傾倒到標准輸出。

-ddd 把編譯過的數據包編碼轉換成十進制數字的格式,並傾倒到標准輸出。

-e 在每列傾倒資料上顯示連接層級的文件頭。

-f 用數字顯示網際網路地址。

-F<表達文件> 指定內含表達方式的文件。

-i<網路界面> 使用指定的網路截面送出數據包。

-l 使用標准輸出列的緩沖區。

-n 不把主機的網路地址轉換成名字。

-N 不列出域名。

-O 不將數據包編碼最佳化。

-p 不讓網路界面進入混雜模式。

-q 快速輸出,僅列出少數的傳輸協議信息。

-r<數據包文件> 從指定的文件讀取數據包數據。

-s<數據包大小> 設置每個數據包的大小。

-S 用絕對而非相對數值列出TCP關聯數。

-t 在每列傾倒資料上不顯示時間戳記。

-tt 在每列傾倒資料上顯示未經格式化的時間戳記。

-T<數據包類型> 強制將表達方式所指定的數據包轉譯成設置的數據包類型。

-v 詳細顯示指令執行過程。

-vv 更詳細顯示指令執行過程。

-x 用十六進制字碼列出數據包資料。

-w<數據包文件> 把數據包數據寫入指定的文件。

案例

tcpmp -s 0 -i eth1  -w 94ip.cap

註:監聽 ETH1網站 保存文件為94ip.cap

網雲互聯(www.94ip.net/www.94ip.com)是一家從事伺服器安全防護、入侵檢測、伺服器代維等為一體的公司,免費伺服器安全檢測,並有24小時在線運維工程師為您服務。

2. linux網路編程中如何實現伺服器端多個read()和客戶端write( )

TCP通信的模式如下圖,比較固定,對著圖編代碼就可以了:

因為客戶端沒有指定IP地址和埠,所以其IP和埠都是內核隨機分配的。

3. linux建立TCP伺服器後,TCP客戶端與伺服器連接成功後,怎樣獲取客戶端的MAC地址

我認為你是從 socket中取不到這部分的信息的.

你得再操作 arp的緩存部分才行. ARP那部分如果在特殊情況,很亂套.比如有攻擊或是IP地址設置有沖突啥地.

---
詳細的C語言怎麼操作ARP緩存我不太清楚. 但你如果想知道.就得查一下這部分怎麼做了.
高層的socket操作是得不到的.

只有直連網段的計算機有MAC地址信息.經過路由來的數據包.取不到.

4. 客戶端如何讀取伺服器發送的數據

一般來講是客戶端向伺服器發送服務請求,伺服器根據客戶端所發送的服務請求給客戶端發數據。這里包括網路協議和服務認證。你可以再網上下載抓包工具來讀取發送服務請求和返回服務請求的結果。 數據都是二進制、八進制和十六進制相互轉換封包來進行發送的。客戶端向伺服器發送一個請求,客戶端會對該請求認證來確定是否合法。合法則會將數據封包加密反饋給客戶端,客戶端則得到請求結果。具體你可查一些有關網路服務的資料。

5. linux下C語言怎麼讀取http文件內容

http是協議
不是文件
你這個說法就有問題了。
如果你想用C讀網頁 可以考慮使用socket 不過還是有些麻煩的。

6. linux環境下,c語言怎麼讀取WEB伺服器的80埠上頁面的內容

已知url ,host, port;

int s, size;
struct sockaddr_in sin;
struct hostent* phe;
char cmd[256];
char msg_hdr[1000];
char* p;

//准備http中GET 方法的請求。
sprintf(cmd,"GET %s\r\nHTTP/1.1\r\nHost:%s", url, host);
//創建socket
if((s=socket(PF_INET,SOCK_STREAM,0))<0)
return -1;
//取得遠程主機的IP地址,失敗函數返回-1
if((phe = gethostbyname(host)) == NULL)
return -1;

memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(pms->port);

//跟遠程機器建立連接,失敗函數返回-1
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return -1;
//發送GET請求
if(write(s,cmd,strlen(cmd))<0)
return 0;

//從鏈接描述符(連接管道)中讀取傳送過來的數據
if(read(s, msg_hdr, 300)<0)
error;
close(s);

//讀到該文件的大小
if((p=strstr(msg_hdr,"Content-Length"))||(p=strstr(msg_hdr,"Content-length:")))
p+=16;
else
error;
//返回大小
size = atoi(p);

sprintf(cmd,"GET %s HTTP/1.1\r\nHost: %s\r\nAccept: */*\r\nPragma: no-cache\r\nCache-Control: no-cache\r\nConnection: close\r\nRange: bytes0-%d\r\n\r\n", url, host, size);
//創建套介面
if((s=socket(AF_INET,SOCK_STREAM,0))<0)
return 0;
//取得遠程主機的IP地址,失敗返回0
if((phe = gethostbyname(host)) == NULL)
return 0;
memset(&sin,0,sizeof(sin));
memcpy(&sin.sin_addr,phe->h_addr,sizeof(struct in_addr));
sin.sin_family=AF_INET;
sin.sin_port=htons(port);
//建立連接
if(connect(s,(struct sockaddr*)&sin,sizeof(sin))==-1)
return 0;
//發送讀取請求
if(write(s,cmd,strlen(cmd))<0)
error;
read(s, buf, BUFSIZE)..............

閱讀全文

與linuxc伺服器如何讀取客戶端數據包後如何解析相關的資料

熱點內容
加密貨幣交易所哪個最好 瀏覽:816
linux的現狀 瀏覽:926
命令與征服叛逆者修改器 瀏覽:246
怎麼用ios玩安卓全民槍戰 瀏覽:668
程序員入行前後的頭發 瀏覽:711
嵌入式圖像演算法 瀏覽:329
伺服器如何訪問伺服器失敗 瀏覽:875
android進度球 瀏覽:1001
Linux造成xfs文件夾 瀏覽:457
華為手機怎麼修改wifi加密類型 瀏覽:250
伺服器封口是什麼意思 瀏覽:743
有限元分析是演算法嗎 瀏覽:901
空氣壓縮機性能曲線 瀏覽:22
京城程序員2019 瀏覽:406
android新系統 瀏覽:512
安卓80有什麼bug 瀏覽:681
如何做單機伺服器 瀏覽:945
校訊通查成績怎麼顯示伺服器異常 瀏覽:885
冰箱壓縮機工作壓力是多少 瀏覽:411
程序員20多平米租房 瀏覽:453