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

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問(wèn)板塊 發(fā)新帖
查看: 2412 | 回復(fù): 1
打印 上一主題 下一主題

[問(wèn)]關(guān)于網(wǎng)絡(luò)安全開(kāi)發(fā)包libnids的問(wèn)題:編譯的時(shí)候?yàn)槭裁匆B接庫(kù):libgthread-2.0.so [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-03-17 16:31 |只看該作者 |倒序?yàn)g覽
本帖最后由 bjtulq 于 2011-03-17 16:32 編輯

在編譯的時(shí)候?yàn)槭裁匆B接庫(kù):libgthread-2.0.so?能否講一下libgthread-2.0.so的作用啊?
gcc -o show_tcp_connection tcp.c -lpcap -lnet -lnids -lgthread-2.0;不加-lgthread不能編譯成功!
謝謝了!
  1. #include "nids.h"
  2. /* Libnids的頭文件,必須包含 */
  3. char ascii_string[10000];
  4. char *char_to_ascii(char ch)
  5. /* 此函數(shù)的功能主要用于把協(xié)議數(shù)據(jù)進(jìn)行顯示 */
  6. {
  7.     char *string;
  8.     ascii_string[0] = 0;
  9.     string = ascii_string;
  10.     if (isgraph(ch))
  11.      /* 可打印字符 */
  12.     {
  13.         *string++ = ch;
  14.     }
  15.     else if (ch == ' ')
  16.      /* 空格 */
  17.     {
  18.         *string++ = ch;
  19.     }
  20.     else if (ch == '\n' || ch == '\r')
  21.      /* 回車(chē)和換行 */
  22.     {
  23.         *string++ = ch;
  24.     }
  25.     else
  26.      /* 其它字符以點(diǎn)"."表示 */
  27.     {
  28.         *string++ = '.';
  29.     }
  30.     *string = 0;
  31.     return ascii_string;
  32. }
  33. /*
  34. =======================================================================================================================
  35. 下面的函數(shù)是回調(diào)函數(shù),用于分析TCP連接,分析TCP連接狀態(tài),對(duì)TCP協(xié)議傳輸?shù)臄?shù)據(jù)進(jìn)行分析
  36. =======================================================================================================================
  37. */
  38. void tcp_protocol_callback(struct tcp_stream *tcp_connection, void **arg)
  39. {
  40.     int i;
  41.     char address_string[1024];
  42.     char content[65535];
  43.     char content_urgent[65535];
  44.     struct tuple4 ip_and_port = tcp_connection->addr;
  45.     /* 獲取TCP連接的地址和端口對(duì) */
  46.     strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
  47.     /* 獲取源地址 */
  48.     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.source);
  49.     /* 獲取源端口 */
  50.     strcat(address_string, " <---> ");
  51.     strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
  52.     /* 獲取目的地址 */
  53.     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.dest);
  54.     /* 獲取目的端口 */
  55.     strcat(address_string, "\n");
  56.     switch (tcp_connection->nids_state) /* 判斷LIBNIDS的狀態(tài) */
  57.     {
  58.         case NIDS_JUST_EST:
  59.             /* 表示TCP客戶端和TCP服務(wù)器端建立連接狀態(tài) */
  60.             tcp_connection->client.collect++;
  61.             /* 客戶端接收數(shù)據(jù) */
  62.             tcp_connection->server.collect++;
  63.             /* 服務(wù)器接收數(shù)據(jù) */
  64.             tcp_connection->server.collect_urg++;
  65.             /* 服務(wù)器接收緊急數(shù)據(jù) */
  66.             tcp_connection->client.collect_urg++;
  67.             /* 客戶端接收緊急數(shù)據(jù) */
  68.             printf("%sTCP連接建立\n", address_string);
  69.             return ;
  70.         case NIDS_CLOSE:
  71.             /* 表示TCP連接正常關(guān)閉 */
  72.             printf("--------------------------------\n");
  73.             printf("%sTCP連接正常關(guān)閉\n", address_string);
  74.             return ;
  75.         case NIDS_RESET:
  76.             /* 表示TCP連接被RST關(guān)閉 */
  77.             printf("--------------------------------\n");
  78.             printf("%sTCP連接被RST關(guān)閉\n", address_string);
  79.             return ;
  80.         case NIDS_DATA:
  81.             /* 表示有新的數(shù)據(jù)到達(dá) */
  82.             {
  83.                 struct half_stream *hlf;
  84.                 /* 表示TCP連接的一端的信息,可以是客戶端,也可以是服務(wù)器端 */
  85.                 if (tcp_connection->server.count_new_urg)
  86.                 {
  87.                     /* 表示TCP服務(wù)器端接收到新的緊急數(shù)據(jù) */
  88.                     printf("--------------------------------\n");
  89.                     strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
  90.                     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.source);
  91.                     strcat(address_string, " urgent---> ");
  92.                     strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
  93.                     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.dest);
  94.                     strcat(address_string, "\n");
  95.                     address_string[strlen(address_string) + 1] = 0;
  96.                     address_string[strlen(address_string)] = tcp_connection->server.urgdata;
  97.                     printf("%s", address_string);
  98.                     return ;
  99.                 }
  100.                 if (tcp_connection->client.count_new_urg)
  101.                 {
  102.                     /* 表示TCP客戶端接收到新的緊急數(shù)據(jù) */
  103.                     printf("--------------------------------\n");
  104.                     strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
  105.                     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.source);
  106.                     strcat(address_string, " <--- urgent ");
  107.                     strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
  108.                     sprintf(address_string + strlen(address_string), " : %i", ip_and_port.dest);
  109.                     strcat(address_string, "\n");
  110.                     address_string[strlen(address_string) + 1] = 0;
  111.                     address_string[strlen(address_string)] = tcp_connection->client.urgdata;
  112.                     printf("%s", address_string);
  113.                     return ;
  114.                 }
  115.                 if (tcp_connection->client.count_new)
  116.                 {
  117.                     /* 表示客戶端接收到新的數(shù)據(jù) */
  118.                     hlf = &tcp_connection->client;
  119.                     /* 此時(shí)hlf表示的是客戶端的TCP連接信息 */
  120.                     strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
  121.                     sprintf(address_string + strlen(address_string), ":%i", ip_and_port.source);
  122.                     strcat(address_string, " <--- ");
  123.                     strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
  124.                     sprintf(address_string + strlen(address_string), ":%i", ip_and_port.dest);
  125.                     strcat(address_string, "\n");
  126.                     printf("--------------------------------\n");
  127.                     printf("%s", address_string);
  128.                     memcpy(content, hlf->data, hlf->count_new);
  129.                     content[hlf->count_new] = '\0';
  130.                     printf("客戶端接收數(shù)據(jù)\n");
  131.                     for (i = 0; i < hlf->count_new; i++)
  132.                     {
  133.                         printf("%s", char_to_ascii(content[i]));
  134.                         /* 輸出客戶端接收的新的數(shù)據(jù),以可打印字符進(jìn)行顯示 */
  135.                     }
  136.                     printf("\n");
  137.                 }
  138.                 else
  139.                 {
  140.                     /* 表示服務(wù)器端接收到新的數(shù)據(jù) */
  141.                     hlf = &tcp_connection->server;
  142.                     /* 此時(shí)hlf表示服務(wù)器端的TCP連接信息 */
  143.                     strcpy(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.saddr))));
  144.                     sprintf(address_string + strlen(address_string), ":%i", ip_and_port.source);
  145.                     strcat(address_string, " ---> ");
  146.                     strcat(address_string, inet_ntoa(*((struct in_addr*) &(ip_and_port.daddr))));
  147.                     sprintf(address_string + strlen(address_string), ":%i", ip_and_port.dest);
  148.                     strcat(address_string, "\n");
  149.                     printf("--------------------------------\n");
  150.                     printf("%s", address_string);
  151.                     memcpy(content, hlf->data, hlf->count_new);
  152.                     content[hlf->count_new] = '\0';
  153.                     printf("服務(wù)器端接收數(shù)據(jù)\n");
  154.                     for (i = 0; i < hlf->count_new; i++)
  155.                     {
  156.                         printf("%s", char_to_ascii(content[i]));
  157.                         /* 輸出服務(wù)器接收到的新的數(shù)據(jù) */
  158.                     }
  159.                     printf("\n");
  160.                 }
  161.             }
  162.         default:
  163.             break;
  164.     }
  165.     return ;
  166. }
  167. void main()
  168. {
  169.     if (!nids_init())
  170.      /* Libnids初始化 */
  171.     {
  172.         printf("出現(xiàn)錯(cuò)誤:%s\n", nids_errbuf);
  173.         exit(1);
  174.     }
  175.     nids_register_tcp(tcp_protocol_callback);
  176.     /* 注冊(cè)回調(diào)函數(shù) */
  177.     nids_run();
  178.     /* Libnids進(jìn)入循環(huán)捕獲數(shù)據(jù)包狀態(tài) */
  179. }
復(fù)制代碼

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2012-02-29 15:55 |只看該作者
我也出現(xiàn)這種問(wèn)題的,在ubuntu11.10編譯時(shí)需要加上-lgthread-2.0,而在ubuntu10.04下卻不需要,都不知道什么原因
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專(zhuān)區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過(guò)ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP