暑假里做了3的程序。虽然都不怎么好,但本着和大家一起钻研的精神,
我准备将这3个程序的源码发布在博客上。。。
第一个程序是:微软防火墙日志分析程序 ver:1.0.12
第二个程序是:个人财产记录分析系统 ver:1.1.8
第三个程序是临近暑假结束才完成的:密码破解字典生成器 ver:1.6.3
我准备将这3个程序的源码发布在博客上。。。
第一个程序是:微软防火墙日志分析程序 ver:1.0.12
第二个程序是:个人财产记录分析系统 ver:1.1.8
第三个程序是临近暑假结束才完成的:密码破解字典生成器 ver:1.6.3
其中做的最好的就是密码破解字典生成器 ^_^ ,微软防火墙日志分析程序还
在实验测试阶段,个人财产记录分析系统还不够成熟。
在实验测试阶段,个人财产记录分析系统还不够成熟。
这3个程序都是在Windows平台下开发的。而我近期准备更换Linux操作系统,
所以下阶段准备把后两个程序移植到Linux平台,并开发图形界面。
第一个程序是为Windows量身定做的,移植没有意义。但开发还是要继续的
,我还有一个想法就是把这个程序发展成CleanFoot,就是在入侵后,擦除
日志中入侵的痕迹的程序 :D 。。。。。
所以下阶段准备把后两个程序移植到Linux平台,并开发图形界面。
第一个程序是为Windows量身定做的,移植没有意义。但开发还是要继续的
,我还有一个想法就是把这个程序发展成CleanFoot,就是在入侵后,擦除
日志中入侵的痕迹的程序 :D 。。。。。
接下来说说每个程序的具体功能:
/***************** 微软防火墙日志分析程序自述文档 ***************/
LogAnalyser 1.0.1
(Alpha Test)
/***************** 微软防火墙日志分析程序自述文档 ***************/
LogAnalyser 1.0.1
(Alpha Test)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
系统最低配置要求:
CPU:>500 MHz
MEM:>128 M
HD:>1 G
OP: Microsoft(R) Windows(R) XP Professional
Microsoft(R) Windows(R) Server 2003 SE
Microsoft(R) Windows(R) Server 2003 EE
I'm think it will also work well at
Microsoft(R) Windows(R) XP Home
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CPU:>500 MHz
MEM:>128 M
HD:>1 G
OP: Microsoft(R) Windows(R) XP Professional
Microsoft(R) Windows(R) Server 2003 SE
Microsoft(R) Windows(R) Server 2003 EE
I'm think it will also work well at
Microsoft(R) Windows(R) XP Home
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
防火墙版本:
#Verson: 1.0
#Software: Microsoft Internet Connection Firewall
#Time Format: Local
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#Verson: 1.0
#Software: Microsoft Internet Connection Firewall
#Time Format: Local
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1.程序使用前的配置
程序使用前需要先修改程序的配置文件 loganalyser.ini
配置文件的默认内容如下:
THIS FILE IS PROGRAM CONFIGURE FILE.
DON'T EDIT IT UNLESS YOU KNOW WHAT YOU DO.
[FilePath]
LogFile= C:\windows\windowslog.log
HeadFile= Resource\inhead.th
OutFile= Analysis.html
FaceFileDic= Resource\face\
[IPADDRESS]
LocalIP= 127.0.0.1
PortsFile= cfg\ports.txt
TrojansFile= cfg\trojans.txt
配置文件中[FilePath]域中的
LogFile项是防火墙日志文件的路径,如果你的日志文件是 D:\windowslog.log 那么就可
以将配置改为LogFile= D:\windowslog.log。本项必须更改!
HeadFile项是输出文件的头资源,一般不必改动。
OutFile项是输出分析文件的路径,默认为输出至当前目录。
FaceFileDic项为表情头像文件夹的路径。一般不必改动。
配置文件中[IPADDRESS]域中的
LocalIP项是本机IP地址,如果你的IP地址为61.111.111.11 那么本项可以改为 LocalIP= 61.111.111.11 。本项必须更改!
PortsFile项是已知端口名列表,修改原则为端口号从小到大排列。
TrojansFile项是木马使用的端口列表,修改原则同上。
2.程序的使用
配置完程序后就可以运行程序,分析日志文件了。
(NOTE)
目前程序仍在实验开发阶段,程序的算法和效果都不是很好。
建议待分析的日志纪录数小于2000条,并且在分析日志时关闭一些无关的程序,以便让程序
获得更多的内存,否则配置低机器会出现假死现象。
3.程序功能:
运行程序后,程序将读取指定的微软防火墙日志文件,全部读取完毕后
程序将自动分析采集到的防火墙通信数据,分析结束后生成一份Html格式
文档。
目前列入分析的项目有:
远程IP地址,本地端口->远程端口,通信协议,数据包大小,通信次数,拦截次数,TCP标示。
使用的端口如果是已知端口,那么程序会列出它的名称。如果端口被已知骇客程序,
那么程序会列出警告,并在页面最底端给出提示。
/******************* 程序源代码 ************/
;说明:程序的源码在windows server 2003 EE中使用LCC编译器编译通过,
; 因为我使用的是ANSI-C,一般无序过多修改就可在TC2下编译通过。
; 唯一要注意的就是程序的的printf()函数中的中文要改为英文,否则
; 可能会出现乱码,错误。
■■■■■■■ 以下代码存为logAnalyser.c ■■■■■■■■■
/******************************************
logAnalyser.c
/******************************************
logAnalyser.c
Author:Neil.Ton (mail:neilton1987@gmail.com)
Fuction:Analyse the
Microsoft Internet Connection Firewall
Verson: 1.0
Time Format: Local
I've tested LogAnalyser.exe at
Microsoft(R) Windows(R) XP Professional
Microsoft(R) Windows(R) Server 2003 SE
Microsoft(R) Windows(R) Server 2003 EE
I'm think it will also work well at
Microsoft(R) Windows(R) XP Home
This program will create a analysis.html
at the current directory after analyse.
Microsoft Internet Connection Firewall
Verson: 1.0
Time Format: Local
I've tested LogAnalyser.exe at
Microsoft(R) Windows(R) XP Professional
Microsoft(R) Windows(R) Server 2003 SE
Microsoft(R) Windows(R) Server 2003 EE
I'm think it will also work well at
Microsoft(R) Windows(R) XP Home
This program will create a analysis.html
at the current directory after analyse.
WISH YOU LIKE IT & ENJOY IT!
THANK YOU FOR USE THIS PROGRAM!
THANK YOU FOR USE THIS PROGRAM!
*******************************************/
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define P 65535
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define P 65535
char date[10],time[8];
char action[12],protocol[5];
char srcip[15],dstip[15];
unsigned int srcport,dstport,size;
char tcpflags[5],tcpsyn[10];
char tcpack[10],tcpwin[10];
char icmptype[2],icmpcode[2],info[2];
char action[12],protocol[5];
char srcip[15],dstip[15];
unsigned int srcport,dstport,size;
char tcpflags[5],tcpsyn[10];
char tcpack[10],tcpwin[10];
char icmptype[2],icmpcode[2],info[2];
/*##########################################
##
## 配置文件读取的数据变量
##
###########################################*/
char filepath[256],localip[15],portsfile[256],trojansfile[256],resfile[256],outfile[256];
##
## 配置文件读取的数据变量
##
###########################################*/
char filepath[256],localip[15],portsfile[256],trojansfile[256],resfile[256],outfile[256];
int ukrecord=0; /* 定义日志中的不明记录 */
int linenum=0,wrongline[P]={0}; /* 日志行号 */
int linenum=0,wrongline[P]={0}; /* 日志行号 */
/* 目的个体数据结构定义 */
typedef struct ip{
char ipadd[15]; /*IP address of not local machine*/
char action[12]; /*action*/
unsigned int sport[P],dport[P],size[P]; /*Commuications ports*/
unsigned int init,pass,drop,open; /*Srcip -> dstip then init++
dstip -> srcip then pass++
if Firewalls bllock pack then drop++ */
unsigned int tcp,udp,icmp,arp,unknow; /*TCP,UDP,ICMP.....*/
double s; /*S,.......*/
/* USE FOR PROTS*/
int sp,dp,sz;
typedef struct ip{
char ipadd[15]; /*IP address of not local machine*/
char action[12]; /*action*/
unsigned int sport[P],dport[P],size[P]; /*Commuications ports*/
unsigned int init,pass,drop,open; /*Srcip -> dstip then init++
dstip -> srcip then pass++
if Firewalls bllock pack then drop++ */
unsigned int tcp,udp,icmp,arp,unknow; /*TCP,UDP,ICMP.....*/
double s; /*S,.......*/
/* USE FOR PROTS*/
int sp,dp,sz;
struct ip *next;
}IP,*PIP;
PIP head,ptr;
PIP head,ptr;
/*-------------------------------------
Deception subFunctions Fields
---------------------------------------*/
void addip(void);
void print(PIP head);
Deception subFunctions Fields
---------------------------------------*/
void addip(void);
void print(PIP head);
/************************************************
*
* the int main(int argc,char *argv[]) Function.
*
*************************************************/
int main(int argc,char *argv[])
{
/*声明外部函数*/
extern void outhtml(PIP);
extern void readcfg();
*
* the int main(int argc,char *argv[]) Function.
*
*************************************************/
int main(int argc,char *argv[])
{
/*声明外部函数*/
extern void outhtml(PIP);
extern void readcfg();
readcfg();
/*****************
*
* FILE SYSTEM
*
******************/
FILE *log;
/*日志文件路径*/
if((log=fopen(filepath,"rt"))==NULL){
printf("\n无法打开日志文件。请阅读配置说明进行配置.\n");
}
fseek(log,214,0);
*
* FILE SYSTEM
*
******************/
FILE *log;
/*日志文件路径*/
if((log=fopen(filepath,"rt"))==NULL){
printf("\n无法打开日志文件。请阅读配置说明进行配置.\n");
}
fseek(log,214,0);
head=NULL;
char ch;
/*char op;*/
/*char op;*/
system("cls");
printf("\n \n 程序正在解析日志文件%s\n \n \n 如果文件较大将要等待较长时间。",filepath);
printf("\n \n \n 关闭浏览器后,本窗口自动关闭。");
printf("\n \n 程序正在解析日志文件%s\n \n \n 如果文件较大将要等待较长时间。",filepath);
printf("\n \n \n 关闭浏览器后,本窗口自动关闭。");
/*while(1){
system("cls");
printf("\n \n 1 --- 添加纪录\n 2 --- 显示记录\n 3 --- 退出\n 4 --- 生成HTML文件\n");
printf("\n \n选择操作(0 --- 3):");
op=getch();
if(op=='3')
break;
switch(op){
case '1':*/
while(!feof(log)){
fscanf(log,"%s %s %s %s %s %s ",date,time,action,protocol,srcip,dstip);
system("cls");
printf("\n \n 1 --- 添加纪录\n 2 --- 显示记录\n 3 --- 退出\n 4 --- 生成HTML文件\n");
printf("\n \n选择操作(0 --- 3):");
op=getch();
if(op=='3')
break;
switch(op){
case '1':*/
while(!feof(log)){
fscanf(log,"%s %s %s %s %s %s ",date,time,action,protocol,srcip,dstip);
/*******************************************
*
* 对微软防火墙日志进行筛选
*
*******************************************/
*
* 对微软防火墙日志进行筛选
*
*******************************************/
if(strcmp(action,"OPEN")==0 || /* IF ACTION IS OPEN*/
strcmp(action,"OPEN-INBOUND")==0){
strcmp(action,"OPEN-INBOUND")==0){
if(strcmp(protocol,"TCP")==0){
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
size=0;
}
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
size=0;
}
if(strcmp(protocol,"UDP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ARP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ICMP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
linenum++;
}
else if(strcmp(action,"DROP")==0){ /* IF ACTION IS DROP */
if(strcmp(protocol,"TCP")==0){
fscanf(log,"%u %u %u %s %s %s %s %s %s %s",&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ARP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ICMP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
linenum++;
}
else if(strcmp(action,"DROP")==0){ /* IF ACTION IS DROP */
if(strcmp(protocol,"TCP")==0){
fscanf(log,"%u %u %u %s %s %s %s %s %s %s",&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);
}
if(strcmp(protocol,"UDP")==0){
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
fscanf(log,"%u",&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
if(strcmp(protocol,"UDP")==0){
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
fscanf(log,"%u",&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ARP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
if(strcmp(protocol,"ARP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
if(strcmp(protocol,"ICMP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
linenum++;
}
else { /* LIKE 'INFO-EVENTS-LOST' */
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
linenum++;
if(strcmp(action,"CLOSE")!=0){
ukrecord++;
wrongline[ukrecord-1]=linenum;
}
continue;
if(strcmp(protocol,"ICMP")==0){
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
strcpy(tcpflags,"blank");
}
linenum++;
}
else { /* LIKE 'INFO-EVENTS-LOST' */
ch='p';
while(ch!='\n' && !feof(log))ch=fgetc(log);
srcport=dstport=size=0;
linenum++;
if(strcmp(action,"CLOSE")!=0){
ukrecord++;
wrongline[ukrecord-1]=linenum;
}
continue;
}
/* **********************END *************************/
/*else if(strcmp(action,"OPEN")==0 ||
strcmp(protocol,"UDP")==0 ||
strcmp(action,"OPEN-INBOUND")==0 ||
(strcmp(action,"DROP")==0 && strcmp(protocol,"UDP")==0)
){
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
if(strcmp(protocol,"UDP")==0) fscanf(log,"%u",&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
}*/
/*else if(strcmp(action,"DROP")==0 &&
strcmp(protocol,"TCP")==0
){
fscanf(log,"%u %u %u %s %s %s %s %s %s %s",&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);
}*/
/*else if(strcmp(action,"DROP")==0 &&
strcmp(protocol,"UDP")==0
){
ch='p';
fscanf(log,"%u %u %u",&srcport,&dstport,&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
}*/
/* **********************END *************************/
/*else if(strcmp(action,"OPEN")==0 ||
strcmp(protocol,"UDP")==0 ||
strcmp(action,"OPEN-INBOUND")==0 ||
(strcmp(action,"DROP")==0 && strcmp(protocol,"UDP")==0)
){
ch='p';
fscanf(log,"%u %u",&srcport,&dstport);
if(strcmp(protocol,"UDP")==0) fscanf(log,"%u",&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
}*/
/*else if(strcmp(action,"DROP")==0 &&
strcmp(protocol,"TCP")==0
){
fscanf(log,"%u %u %u %s %s %s %s %s %s %s",&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);
}*/
/*else if(strcmp(action,"DROP")==0 &&
strcmp(protocol,"UDP")==0
){
ch='p';
fscanf(log,"%u %u %u",&srcport,&dstport,&size);
while(ch!='\n' && !feof(log))ch=fgetc(log);
strcpy(tcpflags,"blank");
}*/
/*NOT USEfscanf(log,"%s %s %s %s %s %s %u %u %u %s %s %s %s %s %s %s",
date,time,action,protocol,srcip,dstip,&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);*/
date,time,action,protocol,srcip,dstip,&srcport,&dstport,
&size,tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);*/
/*printf("\n%s %s %s %s %s %s %u %u %u %s %s %s %s %s %s %s",
date,time,action,protocol,srcip,dstip,srcport,dstport,size,
tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);*/
addip();
}
/*printf("\n日志文件结束");
getch();break;
case '2':print(head);getch();break;
case '4':system("Analysis.html");break;
}
system("cls");
}*/
date,time,action,protocol,srcip,dstip,srcport,dstport,size,
tcpflags,tcpsyn,tcpack,tcpwin,icmptype,icmpcode,info);*/
addip();
}
/*printf("\n日志文件结束");
getch();break;
case '2':print(head);getch();break;
case '4':system("Analysis.html");break;
}
system("cls");
}*/
outhtml(head);
fclose(log);
return 0;
}
[1] [2]
编辑 webmaster








