修改openssh源代码,添加流量统计并发送到远程功能

修改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时发送给远程
第二部分实现:当用户结束连接时把流量纪录发送给远程


6:打开serverloop.c找到server_request_session函数,如下图:



7:打开serverloopc,加入把流量发送给远程的函数,如下:

[cpp]  view plain copy
  1. /* zazaar */  
  2. static void   
  3. submit_traffic_record(char * user,int * in,int * out){  
  4.     
  5.     struct addrinfo *ailist,*aip;  
  6.     struct addrinfo hint;  
  7.     struct sockaddr_in addr_in;  
  8.     int    sockfd,ret = -1;  
  9.     char   buff;  
  10.     int traffic_in  = *(in);  
  11.     int traffic_out = *(out);  
  12.   
  13.     if ((traffic_in == 0) && (traffic_out == 0)){  
  14.         return;  
  15.     }  
  16.   
  17.     *(in)  -= traffic_in;  
  18.     *(out) -= traffic_out;  
  19.   
  20.     char *getbuff;  
  21.     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);  
  22.   
  23.     hint.ai_flags = 0;  
  24.     hint.ai_family =0;  
  25.     hint.ai_socktype = SOCK_STREAM;  
  26.     hint.ai_protocol = 0;  
  27.     hint.ai_addrlen = 0;  
  28.     hint.ai_canonname = NULL;  
  29.     hint.ai_addr = NULL;  
  30.     hint.ai_next = NULL;  
  31.   
  32.     if (getaddrinfo("www.zazaar.com","http",&hint,&ailist) != 0){  
  33.         debug("getaddrinfo error");  
  34.         return;  
  35.     }  
  36.     aip = ailist;  
  37.     if ((sockfd = socket(aip->ai_family,SOCK_STREAM,0)) < 0){  
  38.         debug("socket fail.");  
  39.         return;  
  40.     }  
  41.   
  42.     if (connect(sockfd,aip->ai_addr,aip->ai_addrlen) == 0){  
  43.         if (send(sockfd,getbuff,strlen(getbuff),0)){  
  44.              ret = recv(sockfd,&buff,1,0);  
  45.         }  
  46.     }  
  47.     close(sockfd);  
  48.   
  49.     free (getbuff);  
  50.   
  51.     return;  
  52. }  


最后编译完成, 你会发现用户登录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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
使用 JavaScript 编写的记忆游戏(附源代码)   项目:JavaScript 记忆游戏(附源代码) 记忆检查游戏是一个使用 HTML5、CSS 和 JavaScript 开发的简单项目。这个游戏是关于测试你的短期 记忆技能。玩这个游戏 时,一系列图像会出现在一个盒子形状的区域中 。玩家必须找到两个相同的图像并单击它们以使它们消失。 如何运行游戏? 记忆游戏项目仅包含 HTML、CSS 和 JavaScript。谈到此游戏的功能,用户必须单击两个相同的图像才能使它们消失。 点击卡片或按下键盘键,通过 2 乘 2 旋转来重建鸟儿对,并发现隐藏在下面的图像! 如果翻开的牌面相同(一对),您就赢了,并且该对牌将从游戏中消失! 否则,卡片会自动翻面朝下,您需要重新尝试! 该游戏包含大量的 javascript 以确保游戏正常运行。 如何运行该项目? 要运行此游戏,您不需要任何类型的本地服务器,但需要浏览器。我们建议您使用现代浏览器,如 Google Chrome 和 Mozilla Firefox, 以获得更好、更优化的游戏体验。要玩游戏,首先,通过单击 memorygame-index.html 文件在浏览器中打开游戏。 演示: 该项目为国外大神项目,可以作为毕业设计的项目,也可以作为大作业项目,不用担心代码重复,设计重复等,如果需要对项目进行修改,需要具备一定基础知识。 注意:如果装有360等杀毒软件,可能会出现误报的情况,源码本身并无病毒,使用源码时可以关闭360,或者添加信任。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值