• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            jeromewen

            努力中
            隨筆 - 9, 文章 - 0, 評(píng)論 - 22, 引用 - 0
            數(shù)據(jù)加載中……

            POP(110)監(jiān)控

            #include "nids.h"
            #include <cstdio>
            #pragma comment(lib,"ws2_32")
            #pragma comment(lib,"wpcap")
            #pragma comment(lib,"libnids")
            char ascii_string[10000];
            char * char_to_ascii(char ch)
            {
            ?char * string;
            ?ascii_string[0] = 0;
            ?string = ascii_string;
            ?if(isgraph(ch))
            ?{
            ??*string++ =ch;
            ?}
            ?else if (ch == '\n' || ch == '\r')
            ?{
            ??*string++ =ch;
            ?}
            ?else
            ?{
            ??*string++ = '.';
            ?}
            ?*string? = 0;
            ?return ascii_string;
            }

            void pop3_protocol_callback(struct tcp_stream* pop3_connection, void **arg)
            {
            ?int i;
            ?char address_string[1024];
            ?char content[65535];
            ?char content_urgent[65535];
            ?struct tuple4 ip_and_port = pop3_connection->addr;
            ?strcpy(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.saddr))));
            ?sprintf(address_string+strlen(address_string),": %i",ip_and_port.source);
            ?strcat(address_string, " <----> ");
            ?strcat(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.daddr))));
            ?sprintf(address_string+strlen(address_string),": %i",ip_and_port.dest);
            ?strcat(address_string,"\n");
            ?switch (pop3_connection->nids_state)
            ?{
            ?case NIDS_JUST_EST:
            ??if(pop3_connection->addr.dest == 110)
            ??{
            ??pop3_connection->client.collect++;
            ??pop3_connection->client.collect_urg++;
            ??pop3_connection->server.collect++;
            ??pop3_connection->server.collect_urg++;
            ??printf("%sPOP3客戶端和服務(wù)端建立連接\n", address_string);
            ??}
            ??return;
            ?case NIDS_CLOSE:
            ??printf("---------------------------------------\n");
            ??printf("%sPOP3客戶端和服務(wù)端正常關(guān)閉\n", address_string);
            ??return;
            ?case NIDS_RESET:
            ??printf("---------------------------------------\n");
            ??printf("%sPOP3客戶端和服務(wù)端被RST關(guān)閉\n", address_string);
            ??return;
            ?case NIDS_DATA:
            ??{
            ???char status_code[5];
            ???struct half_stream* hlf;
            ???if(pop3_connection->server.count_new_urg)
            ???{
            ????printf("----------------------------------------\n");
            ????strcpy(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.saddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.source);
            ????strcat(address_string, " urgent----> ");
            ????strcat(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.daddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.dest);
            ????strcat(address_string,"\n");
            ????address_string[strlen(address_string)+1] = 0;
            ????address_string[strlen(address_string)] = pop3_connection->server.urgdata;
            ????printf("%s",address_string);
            ????return;
            ???}
            ???if (pop3_connection->client.count_new_urg)
            ???{
            ????printf("----------------------------------------\n");
            ????strcpy(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.saddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.source);
            ????strcat(address_string, " <------urgent");
            ????strcat(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.daddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.dest);
            ????strcat(address_string,"\n");
            ????address_string[strlen(address_string)+1] = 0;
            ????address_string[strlen(address_string)] = pop3_connection->server.urgdata;
            ????printf("%s",address_string);
            ????return;
            ???}
            ???if (pop3_connection->client.count_new)
            ???{
            ????hlf = &pop3_connection->client;
            ????strcpy(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.saddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.source);
            ????strcat(address_string, " <-----");
            ????strcat(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.daddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.dest);
            ????strcat(address_string,"\n");
            ????printf("----------------------------------------\n");
            ????printf("%s",address_string);
            ????memcpy(content, hlf->data, hlf->count_new);
            ????content[hlf->count_new] = '\0';
            ????if (strstr(strncpy(status_code,content,4),"+OK"))
            ?????printf("操作成功\n");
            ????if (strstr(strncpy(status_code,content,4),"-ERR"))
            ?????printf("操作失敗\n");
            ????for(i = 0;i<hlf->count_new;i++)
            ????{
            ?????printf("%s",char_to_ascii(content[i]));
            ????}
            ????printf("\n");
            ????if (strstr(content,"\n\r.\n\r"))
            ?????printf("數(shù)據(jù)傳輸結(jié)束\n");
            ???}
            ???else
            ???{
            ????hlf = &pop3_connection->server;
            ????strcpy(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.saddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.source);
            ????strcat(address_string, " <-----");
            ????strcat(address_string, inet_ntoa(*((struct in_addr*)&(ip_and_port.daddr))));
            ????sprintf(address_string+strlen(address_string),": %i",ip_and_port.dest);
            ????strcat(address_string,"\n");
            ????printf("----------------------------------------\n");
            ????printf("%s",address_string);
            ????memcpy(content, hlf->data, hlf->count_new);
            ????content[hlf->count_new] = '\0';
            ????if(strstr(content, "USER"))
            ?????printf("郵件用戶名為\n");
            ????if(strstr(content, "PASS"))
            ?????printf("用戶密碼為\n");
            ????if(strstr(content, "STAT"))
            ?????printf("返回統(tǒng)計(jì)資料\n");
            ????if(strstr(content, "LIST"))
            ?????printf("返回郵件數(shù)量和大小\n");
            ????if(strstr(content, "RETR"))
            ?????printf("獲取郵件\n");
            ????if(strstr(content, "DELE"))
            ?????printf("刪除郵件\n");
            ????if(strstr(content, "QUIT"))
            ?????printf("退出連接\n");

            ????for(i = 0;i<hlf->count_new;i++)
            ????{
            ?????printf("%s",char_to_ascii(content[i]));
            ????}
            ????printf("\n");
            ???}
            ??}
            ?default:
            ??break;
            ?}
            ?return ;
            }
            int main(int argc, char **argv)
            {
            ?if(!nids_init())
            ?{
            ??printf("出現(xiàn)錯(cuò)誤: %s\n", nids_errbuf);
            ??exit(1);
            ?}

            ?nids_register_tcp(pop3_protocol_callback);
            ?nids_run();
            ?return 0;
            }

            posted on 2006-09-29 13:07 JeromeWen 閱讀(736) 評(píng)論(9)  編輯 收藏 引用 所屬分類: C++

            評(píng)論

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            ka看不懂
            2006-09-29 17:11 | 搞活

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            請(qǐng)問JeromeWen,我也在windows平臺(tái)下(我的是windows xp sp2 winpcap 3.1)做過用nids監(jiān)視tcp連接的東西,編譯沒有任何問題,但是就是沒有輸出,得不到任何結(jié)果,明明有網(wǎng)絡(luò)連接卻監(jiān)視不到,不知道怎么回事,您的例子也在我的機(jī)器上也是這樣,望指點(diǎn).
            2006-10-14 15:10 | aganno2

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            我這里很正常
            2006-11-18 00:59 | j

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            在XP下,本地機(jī)器上可以抓取110端口的POP包,
            查看POP包的內(nèi)容,
            內(nèi)容符合個(gè)人設(shè)置策略限制,如:不讓來信人用戶名以H開頭的郵件通過

            未曾限制的郵件可以通過,從而進(jìn)入Foxmail的收件箱

            勞駕回復(fù),我的信箱,不勝感激~~!!
            hanxuexiang2006@yahoo.com.cn
            2007-03-06 22:16 | 韓學(xué)祥

            # re: POP(110)監(jiān)控[未登錄]  回復(fù)  更多評(píng)論   

            郵件內(nèi)容是根據(jù)base64加密的.你可以解密后,限定內(nèi)容等.郵件頭中是有發(fā)現(xiàn)人信息的,你解析后過濾就行了.我沒有做過這個(gè)測(cè)試.
            2007-03-07 02:29 | jeromewen

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            勞駕你:可以對(duì)POP(110)監(jiān)控多加一些注解嗎?我是初學(xué)者
            2007-03-07 10:42 | 韓言

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            請(qǐng)看nids注釋,或者下載libnids的例子看看.
            2007-03-08 09:22 | JeromeWen

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            請(qǐng)問:POP(110)監(jiān)控----是在收信方收到郵件之前:先截獲此郵件的pop3數(shù)據(jù)包,獲取pop3包中的用戶名和密碼,直接刪除我想刪除的某一個(gè)用戶名的郵件 ,只有我沒有刪除的郵件,才能被收信方收到;
            我想pop(110)監(jiān)控:在WINDOWS下能做到我認(rèn)為的上述功能,你可以幫忙代碼實(shí)現(xiàn)一下么----基于對(duì)話框?
            2007-03-17 11:19 | 文科

            # re: POP(110)監(jiān)控  回復(fù)  更多評(píng)論   

            請(qǐng)問:POP(110)監(jiān)控----是在收信方收到郵件之前:先截獲此郵件的pop3數(shù)據(jù)包,獲取pop3包中的用戶名和密碼,直接刪除我想刪除的某一個(gè)用戶名的郵件 ,只有我沒有刪除的郵件,才能被收信方收到;
            我想pop(110)監(jiān)控:在WINDOWS下---針對(duì)Foxmail能做到我認(rèn)為的上述功能,你可以幫忙代碼實(shí)現(xiàn)一下么----基于對(duì)話框?
            2007-03-17 11:29 | 文科
            亚洲国产成人精品91久久久| 久久亚洲精品国产亚洲老地址| 亚洲国产成人精品女人久久久 | 国产成人久久AV免费| 亚洲AV无码久久精品蜜桃| WWW婷婷AV久久久影片| 国产精品美女久久久久av爽| 亚洲精品高清一二区久久| 一本色道久久综合亚洲精品| 国内精品久久久久影院免费| 香蕉aa三级久久毛片| 久久99免费视频| 久久精品国产亚洲av麻豆图片 | 久久久久免费看成人影片| 国产精品永久久久久久久久久| 久久午夜无码鲁丝片秋霞| 91久久精品视频| 久久w5ww成w人免费| 一级做a爰片久久毛片免费陪| 精品国产乱码久久久久久郑州公司 | 91久久九九无码成人网站| 久久精品一区二区三区AV| 国产精品九九久久免费视频| 久久国产色AV免费看| 理论片午午伦夜理片久久 | 国内精品久久久久久久久电影网 | 久久久噜噜噜www成人网| 久久久久国产| 久久艹国产| 久久综合给合综合久久| 激情五月综合综合久久69| 久久久久久久尹人综合网亚洲| 久久精品国产亚洲AV高清热| 亚洲精品乱码久久久久久蜜桃图片| 中文成人无码精品久久久不卡| 国产亚洲美女精品久久久| 99久久免费国产精品| 国产高清美女一级a毛片久久w | 欧美伊人久久大香线蕉综合| 久久久久久亚洲精品不卡| 久久精品国产99久久香蕉|