java写的wtmpx解析文件,新手第一次,弄了好久,自己备份一下

这篇博客记录了一位新手使用Java解析wtmpx文件的过程,虽然方法显得初级,但作为学习的成果,博主分享了一些关键代码段,以备后续复习之需。
摘要由CSDN通过智能技术生成


学了一个月java了,第一次独立写wtmpx文件的解析,完成了大概一整个从服务器下载,解析,上传,保存到mysql数据库,保存到xml文件的过程。

因为是初学,所有写了好多奇怪的方法,用来练习学过的东西,写的不是很好,由于时间不允许,只能先这样,以后有时间再做修改了,贴一些自己觉得重要的代码,以便自己忘了可以复习一下


server:

package com.alex;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

import com.alex.dao.BaseDAO;
import com.alex.util.FileIO;
import com.alex.util.MD5Util;


/**
 * 加入线程池,可以接受多个client
 * 
 *
 */
public class Server03 {
	
	private int port;
	private String serverpath;
	private ServerSocket serverSocket;
	//加入线程池,完成线程的重新调度
	private ExecutorService threadPool;
	//保存login_out.txt文见地址
	private String login_outpath;

	public Server03() {
		BaseDAO base=new BaseDAO();
		port = Integer.parseInt(base.getValue("port"));
		serverpath = base.getValue("serverpath");
		//设计线程池包含5个线程
		threadPool=Executors.newFixedThreadPool(5);
		login_outpath=base.getValue("login_outpathserver");
		try {
			serverSocket=new ServerSocket(port);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		Server03 server=new Server03();
		server.start();
	}

	public void start(){
		while(true){
			try {
				//1.创建连接
				System.out.println("等待客户连接。。。");
				Socket socket=serverSocket.accept();
				System.out.println("客户端连接成功");
				
				//启动一个线程来完成客户端的交互
				ClientHandler handler=new ClientHandler(socket);
				threadPool.execute(handler);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}

	private class ClientHandler implements Runnable{

		private Socket socket;
		public ClientHandler(Socket socket){
			this.socket=socket;
		}
		
		@Override
		public void run() {

			try{
				BufferedInputStream bis=null;
					
					OutputStream os=socket.getOutputStream();
					BufferedOutputStream bos=new BufferedOutputStream(os);
				
					InputStream is=socket.getInputStream();
					bis=new BufferedInputStream(is);
				
					
流光4.71的使用方法,这里有使用说明可以下载自己看一下:http://www.yeshack.com/jc/200508/2345.html 工具这种东西本身就是一把双刃剑,如果因为自己的站点密码太过简单而被攻破然后归罪于因特网上一些免费或共享软件的话,恐怕是有些目光短浅了 。管辖的系统存在漏洞而不自知的话,就算没被人‘干掉',也只是一种暂时的‘虚假安全'。 一、小榕流光使用的简单说明 要谈流光还真找不着感觉——在小榕的帮助文件里已经把软件的使用方法详尽无比地描述过了(强烈建议使用者使用前将帮助文件多读两遍)——我就说三个方面吧——高手完全可以略过的...... 1、 对某FTP主机一次完整的在线安全检测过程 A、选定主机:右键单击FTP主机选项,从弹出菜单中选择添加——将目标的IP地址填入,如"210.142.192.13"...... B、选定用户:右键单击该IP地址,可选添加(将想测试的用户名逐个加入)添加方案(可在方案中编辑希望测试的用户名列表)从列表添加(直接从字典文件中导入)及从SMTP主机导入(导入SMTP主机探测到的用户名),假设你想探测的用户名为quack,便直接在"添加"中填入quack。 C、选择字典: a、简单模式探测:在选项菜单条中对字典及简单模式设置做适当修正以适应本次测试要求,当然你也可以在面板上的单词小、简单后缀等按钮直接选定。 b、标准模式探测:在"解码字典或方案"中选定某一字典(方案)。 D、调整设置:检查选项菜单栏中的系统设置、连接选项和探测选项,将本次测试的各种选项调整至最优。 E、开始探测:在"探测"菜单中选定"简单模式"或"标准模式",开始此次安全检测。 F、注意事项:由于流光的系统占用较高,最好不要再开其它应用程序;在在线检测时可能有时会出现假死机现象,这时你可以通过观察MODEM的RD与SD灯来判断程序是否正常运作。 2、密码字典的选用:在线探测相当耗时,所以一个合适的字典会大大降低你的"检测成本",流光里的工具菜单栏对生成适合自己使用的字典档是一个相当实用的工具——我个人觉得尤其值得使用的是"方案编辑工具",它能够在你锁定特定用户检测时发挥较大的作用,具体使用帮助文件得非常详细,我就不再多说了 ——当然流光里附带的XKEY也是一个相当不错的字典生成程序。 3、流光其实不仅仅是一个在线安全检测工具——而是一个"工具包",同时具有以下几个辅助功能 A、探测主机端口 B、探测主机类型 C、FINGER D、扫描POP3、FTP主机 E、验证主机用户 而其主要功能是对POP3、FTP、HTTP、PROXY主机进行在线密码安全检测。所以——一句话,功能强大,试过便知。 至于同样原理的在线密码破解软件国内流行的也并不少,如很早以前的emailcrack、wwwhack、网络刺客1 以及现在流传很广网络刺客2、Webcrack、Xavior等等,流光在很大程度上集成了这些软件的功能,但这些软件早期的产品也都缺乏IP隐藏或类似功能,而近期的Webcrack以及Xavior则都具备从代理服务器端进行探测的功能,我认为这应该是在线探测的一个方向——安全第一嘛——基于此想法,我对流光在探测中会留下的记录进行试验:对一位网管朋友的WINDOWS2000 Beta3 SERVER 英文版进行了一番测试,对其上已知的帐号进行密码强攻, 经探测得知其FTP端口是开放的,在未预先通知的情况下对其进行攻击,事后打电话询问其记录情况,在EVENT VIEWER里有如下信息:WARNING:The server was unable to logon the Windows NT account 'houxiourong' due to the following error: Logon failure: unknown user name or bad password.The data is the error code. 而甚至他告诉我,当我的攻击进行到一半时,他的主机上就弹出了The System log file is full.的信息提示框——失败的登陆次数太多以至于其默认为512K的记录文件被撑饱了!所以我要奉劝某些心怀叵测的人们——别做坏事...... 二、密码设置的基本常识及工具 1、有关口令的一些统计 A、数目:在UNIX系统里可以建立多于43,000,000,000,000,000个不同的口令,但如果仅仅组合10种主要 语言的字典,加上这些字的反向、大、简单后缀等一些微小变形,仅能产生不到5,000,000个字......加 上一些俚语......也不会超出这个数量级。 B、国外某机构在对一个无约束环境的用户口令选择的调查中显示,只有1.4%的用户口令中含有控制符。 2、介绍几个工具 A、CrackLib 简介及应用举例 by JeffreyDong CrackLib 是什么? CrackLib: A ProActive Password Sanity Library By: Alec Muffett Address: alecm@crypto.dircon.co.uk CrackLib是一个可用于类UNIX系统下的函数库, 一般来说, 通常只使用其中的一个函数. :-) 它可以用于编和passwd有关的程序中, 其基本思想是很简单的, 就是防止用户使 用过于简单, 容易被猜测出来或容易被一些工具搜索到的密码. 密码攻击是网络上最为常见的攻击手段. 随着国内计算机用户水平的提高, 有很多人学 会了使用工具搜索密码的方法, 由于某些原因, 含有被加密密码的文件会被某些用户获 取; 这时, 过于简单的密码就会成为攻击者的突破口. 网上有很多这方面的报道.(我的 一个朋友告诉我他曾用一个星期的时间算出了BTA一个管理员的密码. wow! :-P) 通过限 制用户使用不安全的密码, 可以提高你的系统的安全性. CrackLib的特点 CrackLib并不是一个可以直接运行使用的程序, 它是一个函数库, 你可以利用其中的函 数自己的程序,或是加入其它程序中, 用来提高安全性. 比如, 你可以重passwd, 使用户在选择密码时受到限制. CrackLib使用一个字典, 它查找字典以判断所选用密码是否是不安全的密码, 所以你也可 以加入其它信息, 使用自己的字典.比如, 加入公司的名称, 实验室墙上的单词等等潜在 的不安全密码. CrackLib的使用非常简单, 它可以被应用于很多地方, 只需加入简单的几行源码, 就可以 得到非常好的效果. CrackLib的安装 CrackLib可以很容易的在Internet上找到, 我现在使用的版本是2.7, 跑在我的i586/RedHat Linux和i386/Slackware Linux上. 如果你无法找到它的话, 赶紧去补一补如何在Internet 上查找特定的软件吧, 因为这是一项非常重要的基本功. CrackLib好象没有什么文档, 这也是GNU急需加强的地方. 但是它的安装非常简单, 只要按照 README文件 中所叙述的就可以了.如果你用的distribution中包含了这个包, 那它说不定已经 安装在你的机器上了,如RedHat 5.1等. :-) 需要注意的是, 不同版本中一些文件所处的目录位置不同, 你要先确定它们所处的位置. 比 如, 在RedHat 5.1中, 字典是在/usr/lib/中, 文件名为cracklib_dict.*, 而不是README中 所举例的/usr/local/lib/pw_dict.* 应用举例 这里我举一个很简单的例子, 试图用很短的篇幅来说明用法. char *FascistCheck(char *pw, char *dictpath); 这是CrackLib中最常用的函数. pw是用户选择的密码, 你要去验证它是不是不安全的. dictpath是字典所在路径, 注意, 要把文件名中"."之前的部分加上.以RedHat 5.1为例, 假设你已正确的安装了CrackLib 2.7和FireBird BBS 2.66M. 让我们来 看看如何把CrackLib加入BBS中去. :-) 首先, 改bbs_src目录下的register.c: /* ----------- begin ---------- */ char *msg; /* ----------- end ---------- */ ...... while( 1 ) { getdata(0,0,"请设定您的密码 (Setup Password): ",passbuf,PASSLEN,NOECHO,YEA) ; if( strlen( passbuf ) < 4 || !strcmp( passbuf, newuser.userid ) ) { prints("密码太短或与使用者代号相同, 请重新输入\n") ; continue; } /* ----------- begin ---------- */ if (msg = (char*) FascistCheck(passbuf, CRACKLIBPATH)) { printf("请另选密码! (%s)\n",msg); continue; } /* ----------- end ---------- */ strncpy( newuser.passwd, passbuf, PASSLEN ); getdata(0,0,"请再输入一次你的密码 (Reconfirm Password): ",passbuf,PASSLEN,NOECHO,YEA); if( strncmp( passbuf, newuser.passwd, PASSLEN ) != 0 ) { prints("密码输入错误, 请重新输入密码.\n") ; continue; } passbuf[8] = '\0' ; strncpy( newuser.passwd, genpasswd( passbuf ), PASSLEN ); break; } begin和end注释所夹部分为改动处, 下同. 接着改bbs_src目录下的userinfo.c: /* ----------- begin ---------- */ char *msg; /* ----------- end ---------- */ ...... getdata(i++,0,"请设定新密码: ",buf,PASSLEN,NOECHO,YEA); if( buf[0] == '\0' ) { prints("\n\n密码设定取消, 继续使用旧密码\n"); fail++; break; } strncpy(genbuf,buf,PASSLEN) ; /* ----------- begin ---------- */ if (msg = (char*) FascistCheck(buf, CRACKLIBPATH)) { printf("\n请另选密码! (%s)\n", msg); prints("\n密码设定取消, 继续使用旧密码\n"); fail++; break; } /* ----------- end ---------- */ getdata(i++,0,"请重新输入新密码: ",buf,PASSLEN,NOECHO,YEA); if(strncmp(buf,genbuf,PASSLEN)) { prints("\n\n新密码确认失败, 无法设定新密码。\n"); fail++; break; } 接着在bbs.h中加入: #ifndef CRACKLIBPATH #define CRACKLIBPATH "/usr/lib/cracklib_dict" #endif 注意这里是字典所处的位置. 最后改动bbs的Makefile: OS_DEF = -DLINUX -DTERMIOS CC = gcc CFLAGS = -O2 /* ----------- begin ---------- */ LIBS = -ltermcap -lbsd -lcrack /* ----------- end ---------- */ 然后make, make install就可以了. :-) 很简单, 不是吗? 注意:本段关于cracklib的说明转载于[网络工作室] B、Proactive Checking 这个程序能在输入口令时进行一系列的口令检查,这会对避免不安全口令出现于你的系统有帮助作用。它与一般的shadow和NIS(也就是yellow page)口令系统共同工作。 C、Shadow 这个程序取代了原来系统的口令保护机制,它将/etc/passwd文件中的口令信息转移到文件/etc/shadow中,还有一些如口令到期机制、允许16字符口令等功能。 D、Passwd+ 这是一个典型的增强型口令系统。 三、应有的措施及其基本知识 1、日志文件 大多数日志文件都是由系统一行接着一行入的文本文件。比如sulog会记录用户使用su命 令试图进入系统的情况,在sulog文件尾部附加一条信息,以记录su命令是否被成功使用。不同版本的UNIX系统存放日志文件的目录不同,常见目录如下:/usr/adm 早期的UNIX系统/var/adm 较新版本的UNIX系统/var/log 用于Solaris\Linux\BSD等系统中在这些目录或其子目录下,你可以找到下列文件acct 或 pacct 记录每个用户使用过的命令aculog 拨出"猫"的记录lastlog 记录用户最后一次成功登陆时间及最后一次失败登陆时间loginlog 不良登陆记录messages 输出到主控台及由syslog系统服务程序产生的消息sulog su的使用情况 utmp 记录当前登陆的每个有户 utmpx 扩展的utmp wtmp 记录每一次用户登陆和注销的历史信息及系统开关信息 wtmpx 扩展wtmp vold.log 使用外部介质产生的错误 xferlog FTP存取情况 2、定期运行如crack之类的口令破解程序以检查系统中是否存在弱帐户。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值