Esempio n. 1
0
/**
  *  扫描器开始工作
  *  @type  扫描方式
  *  @arg1, @arg2  由方式解释
  */
int scanner_work(int type, int arg1, int arg2)
{
	int i = 0;
	long k;

	switch(type)
	{
	case SCAN_OPEN_PORT_ONLY:
		for(i = 0; i < sizeof(open_ports) / sizeof(int); i ++)
		{
			scan_one(open_ports[i]);
		}
		break;
	case SCAN_LOW:
		for(i = 0; i < 1024; i ++)
		{
			scan_one(i);
		}
		break;
	case SCAN_HIGH:
		for(i = 1025; i <= PORT_MAX; i ++)
			scan_one(i);
		break;
	case SCAN_ALL:
		for(i = 0; i <= PORT_MAX; i ++)
			scan_one(i);
		break;
	case SCAN_PART:
		for(i = 0; i < 2000; i ++)
			scan_one(i);
		break;
	case SCAN_FIXED:
		scan_one(arg1);
		break;
	case SCAN_RANGE:
		for(i = arg1; i <= arg2; i ++)
			scan_one(i);
		break;
	case SCAN_LOW_RAND_HIGH:
		for(i = 0; i < 1024; i ++)
			scan_one(i);
		srandom(time(NULL));
		for(i = 1025; i <= PORT_MAX; i += 100)
		{
			k = random();
			k %= 100;
			scan_one(i + k);
		}
		break;
	default:
		errno = EINVAL;
		return -EINVAL;
	}
	/*收尾处理*/
	over_handle();
	return 0;
}
Esempio n. 2
0
int read_proc(unsigned long int * const prcs_run, unsigned long int * const prcs_blked)
{
    char StatBuf[2048], *ptr = &StatBuf[0];
    unsigned long int running, blocked;
    ssize_t len;
    size_t skip;
    FILE *stat;

    *prcs_run = 0;
    *prcs_blked = 0;

    if ((stat = fopen("/proc/stat", "r")) == (FILE*)0) {
	fprintf(stderr, "ERROR: could not open /proc/stat: %s\n", strerror(errno));
	return 1;
    }

    len = sizeof(StatBuf);
    while ((len > 0) && (fgets(ptr, len, stat))) {
	if (ptr[0] != 'p')
	    continue;
	skip = strlen(ptr);
	len -= skip;
	ptr += skip;
    }
    fclose(stat);
    
    /* These fields are not present in /proc/stat for 2.4 kernels or GNU/kFreeBSD */
    running = scan_one(StatBuf, "procs_running");
    blocked = scan_one(StatBuf, "procs_blocked");

    if (running == ~0UL || blocked == ~0UL)
	return 1;

    *prcs_run   = running;
    *prcs_blked = blocked;

    return 0;
}
Esempio n. 3
0
static void processMemInfo()
{
    scan_one(MemInfoBuf, "MemTotal", &Total);
    scan_one(MemInfoBuf, "MemFree", &MFree);
    scan_one(MemInfoBuf, "Buffers", &Buffers);
    scan_one(MemInfoBuf, "Cached", &Cached);
    scan_one(MemInfoBuf, "SwapTotal", &STotal);
    scan_one(MemInfoBuf, "SwapFree", &SFree);
    Used = Total - MFree;
    Appl = (Used - (Buffers + Cached));

    if(STotal == 0) /* no swap activated */
        SUsed = 0;
    else
        SUsed = STotal - SFree;

    Dirty = 0;
}