WEB开发网
开发学院网络安全黑客技术 如何阅读源代码(4) 阅读

如何阅读源代码(4)

 2006-07-04 20:27:38 来源:WEB开发网   
核心提示:这一段代码,读入一行,如何阅读源代码(4),如果这一行超过了程序允许的最大字符数(则是错误的日志数据纪录),则跳过本行剩下的数据,分析了日志数据,在parse_record.c中,忽略掉(continue进行下一次循环),同时把total_bad增加一个

这一段代码,读入一行,如果这一行超过了程序允许的最大字符数(则是错误的日志数据纪录),则跳过本行剩下的数据,忽略掉(continue进行下一次循环)。同时把total_bad增加一个。如果没有超过程序允许的最大字符数(则是正确的日志数据纪录),则
/* got a record... */
  strcpy(tmp_buf, buffer); /* save buffer in case of error */
  if (parse_record(buffer)) /* parse the record  */

将该数据拷贝到一个缓冲区中,然后调用parse_record()进行处理。我们可以同样的推测一下,get_record()是这个程序的一个主要处理部分,分析了日志数据。在parse_record.c中,有此函数,
/*********************************************/
/* PARSE_RECORD - uhhh, you know... */
/*********************************************/
int parse_record(char *buffer)
{
  /* clear out structure */
  memset(&log_rec,0,sizeof(struct log_struct));
/*
  log_rec.hostname[0]=0;
  log_rec.datetime[0]=0;
  log_rec.url[0]=0;
  log_rec.resp_code=0;
  log_rec.xfer_size=0;
  log_rec.refer[0]=0;
  log_rec.agent[0]=0;
  log_rec.srchstr[0]=0;
  log_rec.ident[0]=0;
*/
#ifdef USE_DNS
  memset(&log_rec.addr,0,sizeof(struct in_addr));
#endif
/* call appropriate handler */
  switch (log_type)
  {
  default:
  case LOG_CLF: return parse_record_web(buffer); break; /* clf */
  case LOG_FTP: return parse_record_ftp(buffer); break; /* ftp */
  case LOG_SQUID: return parse_record_squid(buffer); break; /* squid */
  }
}

1 2 3 4 5  下一页

Tags:如何 阅读 源代码

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接