修改openssh源代码,添加流量统计并发送到远程功能
来源:互联网 发布:电视软件哪个资源多 编辑:程序博客网 时间:2024/05/21 14:05
修改openssh源代码,添加流量统计并发送到远程功能
版本号: openssh-6.1p1
1:打开channels.h,在channel结构中增加2个字段,如下图:
2: 打开auth.h,找到Authctxt结构,在里面增加2个字段,如下图:
3:打开channels.c,找到channel_handle_rfd函数,如下图:
4:打开channels.c,找到channel_handle_wfd函数,如下图:
5:打开serverloop.c ,找到server_loop2函数,如下图:
第一部分实现:流量超过1KB时发送给远程
第二部分实现:当用户结束连接时把流量纪录发送给远程
最后编译完成, 你会发现用户登录SSH后,流量(包括tunnel)被纪录,在用户退出或流量超过1KB时,自动发送纪录到远程,发送纪录以GET提交,例如: GET user=root&in=123&out=321
版本号: openssh-6.1p1
1:打开channels.h,在channel结构中增加2个字段,如下图:
2: 打开auth.h,找到Authctxt结构,在里面增加2个字段,如下图:
3:打开channels.c,找到channel_handle_rfd函数,如下图:
4:打开channels.c,找到channel_handle_wfd函数,如下图:
5:打开serverloop.c ,找到server_loop2函数,如下图:
第一部分实现:流量超过1KB时发送给远程
第二部分实现:当用户结束连接时把流量纪录发送给远程
6:打开serverloop.c找到server_request_session函数,如下图:
7:打开serverloopc,加入把流量发送给远程的函数,如下:
- /* zazaar */
- static void
- submit_traffic_record(char * user,int * in,int * out){
- struct addrinfo *ailist,*aip;
- struct addrinfo hint;
- struct sockaddr_in addr_in;
- int sockfd,ret = -1;
- char buff;
- int traffic_in = *(in);
- int traffic_out = *(out);
- if ((traffic_in == 0) && (traffic_out == 0)){
- return;
- }
- *(in) -= traffic_in;
- *(out) -= traffic_out;
- char *getbuff;
- asprintf (&getbuff,"GET /traffic_record.php?user=%s&in=%i&out=%i HTTP/1.1\x0D\x0AHost: www.zazaar.com\x0D\x0A\x0D\x0A\x00",user,traffic_in,traffic_out);
- hint.ai_flags = 0;
- hint.ai_family =0;
- hint.ai_socktype = SOCK_STREAM;
- hint.ai_protocol = 0;
- hint.ai_addrlen = 0;
- hint.ai_canonname = NULL;
- hint.ai_addr = NULL;
- hint.ai_next = NULL;
- if (getaddrinfo("www.zazaar.com","http",&hint,&ailist) != 0){
- debug("getaddrinfo error");
- return;
- }
- aip = ailist;
- if ((sockfd = socket(aip->ai_family,SOCK_STREAM,0)) < 0){
- debug("socket fail.");
- return;
- }
- if (connect(sockfd,aip->ai_addr,aip->ai_addrlen) == 0){
- if (send(sockfd,getbuff,strlen(getbuff),0)){
- ret = recv(sockfd,&buff,1,0);
- }
- }
- close(sockfd);
- free (getbuff);
- return;
- }
最后编译完成, 你会发现用户登录SSH后,流量(包括tunnel)被纪录,在用户退出或流量超过1KB时,自动发送纪录到远程,发送纪录以GET提交,例如: GET user=root&in=123&out=321
用户名为root,输入流量123byte,输出流量321byte
http://blog.csdn.net/hannibal_why/article/details/8363269
0 0
- 修改openssh源代码,添加流量统计并发送到远程功能
- 修改openssh源代码,添加流量统计并发送到远程功能
- 修改openssh源代码,添加操作记录审记功能
- 修改openssh源代码,添加操作记录审记功能
- 修改openssh源代码,添加操作记录审记功能
- 修改openssh源代码,添加操作记录审记功能
- 修改openssh源代码,添加操作记录审记功能
- 为你的CSDN博客添加CNZZ流量统计功能
- 如何添加网页流量统计
- 怎样给没有源代码的.net程序添加修改功能
- 怎样给没有源代码的.net程序添加修改功能
- android 流量统计功能 的实现
- BCM56445流量统计功能开发总结
- mapreduce实现简单的流量统计功能
- openssh源代码阅读指南
- rabbitmq 添加远程访问功能
- 流量统计
- 流量统计
- nyoj 132-最长回文子串
- 约瑟夫环问题
- 黑马程序员——字符串的对称问题
- 有关Filter(过滤器)实现禁用缓存和使用缓存操作的实现
- 关于android读取用户号码,手机串号,SIM卡序列号
- 修改openssh源代码,添加流量统计并发送到远程功能
- 学习JQuery - 7
- sicily DNA matching
- 动态库和共享库区别
- Android Activity 生命周期的透彻理解
- [算法导论]第八章《线性时间排序》
- CSV文本数据如何导入oracle
- Perl5 split 函数的使用详细讲解
- scanf()格式说明符