Centos 查看系统启动时间和运行时间小计 Linux
1.uptime命令
uptime
输出:16:11:40 up 59 days, 4:21, 2 users, load average: 0.00, 0.01, 0.00
如下图所示:
2.查看/proc/uptime文件计算系统启动时间
cat /proc/uptime
输出: 5113396.94 575949.85 第一数字即是系统已运行的时间5113396.94 秒,运用系统工具date即可算出系统启动时间
代码:
date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"
输出: 2008-11-09 11:50:31
3.查看/proc/uptime文件计算系统运行时间
代码:
cat /proc/uptime| awk -F. '{run_days=$1 / 86400;run_hour=($1 % 86400)/3600;run_minute=($1 % 3600)/60;run_second=$1 % 60;printf("系统已运行:%d天%d时%d分%d秒",run_days,run_hour,run_minute,run_second)}'
输出:系统已运行:59天4时13分9秒
由于需要测试刚学的shell编程咋样需要用到,就copy过来备份了,原文地址:http://www.centoscn.com/CentOS/help/2013/0731/834.html
Linux VPS/服务器上用Crontab定时执行脚本/命令来实现VPS自动化 Linux
VPS或者服务器上经常会需要VPS或者服务器上经常会需要定时备份数据、定时执行重启某个服务或定时执行某个程序等等,一般在Linux使用Crontab,Windows下面是用计划任务(Win的都是图形界面设置比较简单),下面主要介绍Linux VPS/服务器上Crontab的安装及使用。
Crontab是一个Unix/Linux系统下的常用的定时执行工具,可以在无需人工干预的情况下运行指定作业。
一、Crontab的安装
1、CentOS下面安装Crontab
yum install vixie-cron crontabs //安装Crontab chkconfig crond on //设为开机自启动 service crond start //启动
说明:vixie-cron软件包是cron的主程序;crontabs软件包是用来安装、卸装、 或列举用来驱动 cron 守护进程的表格的程序。
2、Debian下面安装Crontab
apt-get install cron //大部分情况下Debian都已安装。 /etc/init.d/cron restart //重启Crontab
二、Crontab使用方法 1、查看crontab定时执行任务列表
crontab -l
2、添加crontab定时执行任务
crontab -e
输入crontab任务命令时可能会因为crontab默认编辑器的不同。
如上图所示为nano编辑器,使用比较简单,直接在文件末尾按crontab命令格式输入即可,Ctrl+x退出,再输y 回车保存。
另外一种是vi编辑器,首先按i键,在文件末尾按crontab命令格式输入,再按ESC键,再输入:wq 回车即可。
3、crontab 任务命令书写格式
格式: | minute | hour | dayofmonth | month | dayofweek | command |
解释: | 分钟 | 小时 | 日期 | 月付 | 周 | 命令 |
范围: | 0-59 | 0~23 | 1~31 | 1~12 |
0~7,0和7都代表周日 |
在crontab中我们会经常用到* , - /n 这4个符号,好吧还是再画个表格,更清楚些:
下面举一些例子来加深理解:
每天凌晨3:00执行备份程序:0 3 * * * /root/backup.sh
每周日8点30分执行日志清理程序:30 8 * * 7 /root/clear.sh
每周1周5 0点整执行test程序:0 0 * * 1,5 test
每年的5月12日14点执行wenchuan程序:0 14 12 5 * /root/wenchuan
每晚18点到23点每15分钟重启一次php-fpm:*/15 18-23 * * * /etc/init.d/php-fpm
其他一些命令:
/sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 /sbin/service crond restart //重启服务 /sbin/service crond reload //重新载入配置 service crond status //查看crontab服务状态 service crond start //手动启动crontab服务
4,设置定时任务:【语 法:crontab [-u <用户名称>][配置文件] 或crontab [-u <用户名称>][-elr]】
5,参 数:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称> 指定要设定计时器的用户名称。
6,格式:分 时 日 月 周 命令
7,列举,比如我要每天的23点50重启nginx服务,那么,我就输入如下命令:
crontab -e
然后打开一个编辑窗口,按下 insert 按键或者是i,输入:
50 23 * * * /etc/init.d/nginx restart
1,crontab命令
功能说明:设置计时器。
语 法:crontab [-u <用户名称>][配置文件] 或 crontab [-u <用户名称>][-elr]
补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:
Minute Hour Day Month DayOFWeek Command
参 数:
-e 编辑该用户的计时器设置。
-l 列出该用户的计时器设置。
-r 删除该用户的计时器设置。
-u<用户名称> 指定要设定计时器的用户名称。
2,crontab 格式
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列 表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
crontab文件的一些例子:
30 21 * * * /etc/init.d/nginx restart
每晚的21:30重启 nginx。
45 4 1,10,22 * * /etc/init.d/nginx restart
每月1、 10、22日的4 : 45重启nginx。
10 1 * * 6,0 /etc/init.d/nginx restart
每周六、周日的1 : 10重启nginx。
0,30 18-23 * * * /etc/init.d/nginx restart
每天18 : 00至23 : 00之间每隔30分钟重启nginx。
0 23 * * 6 /etc/init.d/nginx restart
每星期六的11 : 00 pm重启nginx。
* */1 * * * /etc/init.d/nginx restart
每一小时重启nginx
* 23-7/1 * * * /etc/init.d/nginx restart
晚上11点到早上7点之间,每 隔一小时重启nginx
0 11 4 * mon-wed /etc/init.d/nginx restart
每月的4号与每周一到周三 的11点重启nginx
0 4 1 jan * /etc/init.d/nginx restart
一月一号的4点重启nginx
*/30 * * * * /usr/sbin/ntpdate 210.72.145.20
每半小时同步一下时间
如果需要根据centos vps内存大小来判断然后重启,看以参考这篇文章:
Linux脚本:根据CPU负载及内存使用率自动重启服务进程
Linux脚本:根据CPU负载及内存使用率自动重启服务进程 Linux
为了让服务器能稳定运行,所以做个脚本能自动检测系统负载,在系统负载很高的时候(当负载或内存占用达到设置值后),自动重启有问题的程序以避免宕机:
# 设置最大内存占用百分比
PID_MEM_MAX=”85″
# 设置最大系统负载
SYS_LOAD_MAX=”1″
# 设置需要监控的服务名称
NAME_LIST=”php5-cgi mysql”
for NAME in $NAME_LIST
do
# 初始化内存统计
PID_MEM_SUM=0
# 获取该程序总进程数
PID_NUM_SUM=`ps aux | grep $NAME | wc -l`
# 列出每个进程内存占用百分比
PID_MEM_LIST=`ps aux | grep $NAME | awk ‘{print $4}’`
# 计算所有进程总内存占用
for PID_MEM in $PID_MEM_LIST
do
PID_MEM_SUM=`echo $PID_MEM_SUM + $PID_MEM | bc`
done
# 获取最近一分钟系统负载
SYS_LOAD=`uptime | awk ‘{print $(NF-2)}’ | sed ‘s/,//’`
# 比较内存占用和系统负载是否超过阀值
MEM_VULE=`awk ‘BEGIN{print(‘”$PID_MEM_SUM”‘>=’”$PID_MEM_MAX”‘?”1″:”0″)}’`
LOAD_VULE=`awk ‘BEGIN{print(‘”$SYS_LOAD”‘>=’”$SYS_LOAD_MAX”‘?”1″:”0″)}’`
# 如果系统内存占用和系统负载超过阀值,则进行下面操作。
if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “killall $NAME” “(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)”>> /var/log/autoreboot.log
# 正常停止服务
/etc/init.d/$NAME stop
sleep 3
# 强制关闭
pkill $NAME
# 重启
/etc/init.d/$NAME start
#写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” “(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)” >> /var/log/autoreboot.log
else
echo “$NAME very health!(MEM:$PID_MEM_SUM,LOAD:$SYS_LOAD)” > /dev/null
fi
done
以上代码保存为一个文件,例如:auto_reboot.sh
添加计划任务,设置每分钟检查一次(注意文件的位置要搞正确)
crontab -e
* * * * * /bin/bash/root/auto_reboot.sh
请确保您的Linux系统中已经安装了bc,否则会出现错误。查看是否安装了bc可以使用命令:
bc -v
如果没有安装,centos可以用 yum -y install bc 安装,然后执行命令:
sh /bin/bash/root/auto_reboot.sh
CentOS VPS服务器根据CPU负载及内存占用自动重启的bash shell脚本:
# !/bin/sh
# usage: */2 * * * * root /root/checkload.sh
# [CentOS]VPS服务器根据CPU负载及内存占用自动重启脚本
# 设置最小剩余内存,一般至少要剩余50M可用(单位兆)
FREE_MEM_MIN=”50″
# 设置最大系统负载
SYS_LOAD_MAX=”3″
# 设置重启服务的最小剩余内存(单位兆)
RESTART_FREE_MEM_MIN=”500″
# 设置需要监控的服务名称
NAME_LIST=”httpd mysqld”
for NAME in $NAME_LIST
do
# 获得剩余内存(单位兆)
FREE_MEM=`free -m|grep Mem|awk ‘{print $4}’`
# 获得已用内存(单位兆)
# FREE_MEM=`free -m|grep Mem|awk ‘{print $3}’`
# 获取最近一分钟系统负载
SYS_LOAD=`uptime | awk ‘{print $(NF-2)}’ | sed ‘s/,//’`
# 比较内存占用和系统负载是否超过阀值
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘<’”$FREE_MEM_MIN”‘?”1″:”0″)}’`
LOAD_VULE=`awk ‘BEGIN{print(‘”$SYS_LOAD”‘>=’”$SYS_LOAD_MAX”‘?”1″:”0″)}’`
# 测试结果
# LOAD_VULE=”1″
# echo $(date +”%y-%m-%d %H:%M:%S”) “DEBUG $NAME” “(FREE_MEM:$FREE_MEM|$MEM_VULE,LOAD:$SYS_LOAD|$LOAD_VULE)”>> /var/log/autoreboot_debug.log
# 如果系统内存占用和系统负载超过阀值,则进行下面操作。
if [ $MEM_VULE = 1 ] || [ $LOAD_VULE = 1 ] ;then
# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “killall $NAME” “(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)”>> /var/log/autoreboot.log
# 正常停止服务
service $NAME stop
sleep 3
# 强制关闭
skill $NAME
# 重启
sleep 10
for i in 1 2 3
do
FREE_MEM=`free -m|grep Mem|awk ‘{print $4}’`
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘>=’”$RESTART_FREE_MEM_MIN”‘?”1″:”0″)}’`
if [ `pgrep $NAME | wc -l` -le 0 ] && [ $MEM_VULE = 1 ]
then
service $NAME start
sleep 15
echo “AutoStart:” $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” `ps -ef | grep $NAME | wc -l` > /var/log/autoreboot.log
fi
done
# 写入日志
echo $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” “(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)” >> /var/log/autoreboot.log
else
MEM_VULE=`awk ‘BEGIN{print(‘”$FREE_MEM”‘>=’”$RESTART_FREE_MEM_MIN”‘?”1″:”0″)}’`
if [ `pgrep $NAME | wc -l` -le 0 ] && [ $MEM_VULE = 1 ]
then
service $NAME start
sleep 15
echo “AutoStart:” $(date +”%y-%m-%d %H:%M:%S”) “start $NAME” `ps -ef | grep $NAME | wc -l` > /var/log/autoreboot.log
else
echo “$NAME very health!(FREE_MEM:$FREE_MEM,LOAD:$SYS_LOAD)” > /dev/null
fi
fi
done
觉得有用,在自己维护服务器的时候会有用,故转载,附上原文地址:http://www.blogdaren.com/post-548.html
虚拟机centos配置lnmp一键安装包环境 Linux
插曲:使用ssh链接虚拟机的centos之后发现 wget: command not found 这是因为没有安装wget软件包,下面找到两种解决方法:
一般linux最小化安装时,wget不会默认被安装。
可以通过以下两种方法来安装:
1、rpm 安装
rpm 下载源地址:http://mirrors.163.com/centos/6.4/os/x86_64/Packages/
下载wget的RPM包:http://mirrors.163.com/centos/6.4/os/x86_64/Packages/wget-1.12-1.4.el6.x86_64.rpm
rpm ivh wget-1.12-1.4.el6.x86_64.rpm 安装即可。
如果客户端用的是SecureCRT,linux下没装rzsz 包时,rz无法上传文件怎么办?我想到的是安装另一个SSH客户端:SSH Secure Shell。然后传到服务器上安装,这个比较费劲,所以推荐用第二种方法,不过如果yum包也没有安装的话,那就只能用这种方法了。
2、yum安装
yum -y install wget
第二种方法更简单些!!
最新版本:
LNMP 1.2
下载版:http://soft.vpser.net/lnmp/lnmp1.2.tar.gz (107KB)
MD5:4be72b49b67605477871d3f9676ca52f
完整版:http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz (312MB)
MD5:b3d3d9e40395f4eb5e525adfaabfb675
国内下载地址:
https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz 下载时wget需要加--no-check-certificate参数
http://static.suod.ga/lnmp/lnmp1.2-full.tar.gz
新加坡:http://oah.vpser.net/lnmp1.2-full.tar.gz
最后更新: 2015年7月24日17:34 GMT+8
我们最好使用国内的地址,速度取决于你的宽带。如果是默认的
wget -c http://soft.vpser.net/lnmp/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
很慢。。。估计等到花儿都谢了还没好,使用国内的地址:
wget -c --no-check-certificate https://api.sinas3.com/v1/SAE_lnmp/soft/lnmp1.2-full.tar.gz && tar zxf lnmp1.2-full.tar.gz && cd lnmp1.2-full && ./install.sh lnmp
如需要安装LNMPA或LAMP,将./install.sh 后面的参数替换为lnmpa或lamp即可。下面的都是复制哈。。。
如下载速度慢请更换其他下载节点,详情请看下载页面。LNMP下载节点具体替换方法。
按上述命令执行后,会出现如下提示:
需要设置MySQL的root密码(不输入直接回车将会设置为root),输入后回车进入下一步,如下图所示:
这里需要确认是否启用MySQL InnoDB,如果不确定是否启用可以输入 y ,输入 y 表示启用,输入 n 表示不启用。默认为y 启用,输入后回车进入下一步,选择MySQL版本:
输入MySQL或MariaDB版本的序号,回车进入下一步,选择PHP版本:
输入PHP版本的序号,回车进入下一步,选择是否安装内存优化:
可以选择不安装、Jemalloc或TCmalloc,输入对应序号回车。
如果是LNMPA或LAMP的话还需要设置管理员邮箱
再选择Apache版本
提示"Press any key to install...or Press Ctrl+c to cancel"后,按回车键确认开始安装。
LNMP脚本就会自动安装编译Nginx、MySQL、PHP、phpMyAdmin、Zend Optimizer这几个软件。
安装时间可能会几十分钟到几个小时不等,主要是机器的配置网速等原因会造成影响。
3、安装完成
如果显示Nginx: OK,MySQL: OK,PHP: OK
并且Nginx、MySQL、PHP都是running,80和3306端口都存在,并Install lnmp V1.2 completed! enjoy it.的话,说明已经安装成功。
接下来按添加虚拟主机教程,添加虚拟主机,通过sftp或ftp服务器上传网站,将域名解析到VPS或服务器的IP上,解析生效即可使用。
4、安装失败
如果出现类似上图的提示,则表明安装失败,说明没有安装成功!!需要用winscp或其他类似工具,将/root目录下面的lnmp-install.log下载下来,到LNMP支持论坛发帖注明你的系统发行版名称及版本号、32位还是64位等信息,并将lnmp-install.log压缩以附件形式上传到论坛,我们会通过日志查找错误,并给予相应的解决方法。
5、添加、删除虚拟主机及伪静态管理
http://lnmp.org/faq/lnmp-vhost-add-howto.html
6、eAccelerator、xcache、memcached、imageMagick、ionCube、redis、opcache的安装
http://lnmp.org/faq/addons.html
7、LNMP相关软件目录及文件位置
http://lnmp.org/faq/lnmp-software-list.html
8、LNMP状态管理命令
http://lnmp.org/faq/lnmp-status-manager.html
也可以前往lnmp官网查看相关教程: http://lnmp.org/install.html
linux/CentOS6忘记root密码解决办法 Linux
很久没有使用虚拟机里面的CentOS 6.6 mini(命令行界面,没有图形界面)了,今天需要使用,却发现忘记了密码。。。于是找到了下面这篇文章,还是蛮有用的,就复制过来,保存一下。
系统环境:centos6.5 mini
1、 重启服务器,在读秒的时候按任意键,就会出现如下界面
2、在1中按下e就会进入到如下界面。
将光标移动到kernel那一行,然后再一次按‘e’,进入kernel该行的编辑界面
3、这就是kernel编辑界面
4、在kernel编辑界面,按一下空格键,然后在后面输入single,同时按下回车键enter退出kernel编辑界面
5、退出kernel界面后会回到grub模式界面,在此界面再次将光标移动到kernel那一行,然后按下‘b’来启动系统
6、这个时候系统就会起来到单用户模式,不需要输入任何密码就可以直接进入系统
7、在单用户模式下,我们就可以直接修改密码
8、修改完毕,重启服务器即进入正常模式
原文地址:http://www.2cto.com/os/201411/348545.html
kali学习记录之端口扫描 Linux
端口扫描的目的是识别目标系统中哪些端口是开启状态,哪些服务可以使用。比如FTP/SSH/TELNET/打印服务/web服务等等。计算机系统中共有65536个端口,因此连接这些端口并扫描出可用的端口就变的有意义了。
1、网络连接
kali的网络默认是 设备未托管状态,因此需要开启。开启方法:修改/etc/NetworkManager/下的NetworkManger.conf文件,managed = false修改为true,重启。
2、FPing工具
root@walfred:~# fping -h Usage: fping [options] [targets...] -a show targets that are alive -A show targets by address -b n amount of ping data to send, in bytes (default 56) -B f set exponential backoff factor to f -c n count of pings to send to each target (default 1) -C n same as -c, report results in verbose format -e show elapsed time on return packets -f file read list of targets from a file ( - means stdin) (only if no -g specified) -g generate target list (only if no -f specified) (specify the start and end IP in the target list, or supply a IP netmask) (ex. fping -g 192.168.1.0 192.168.1.255 or fping -g 192.168.1.0/24) -H n Set the IP TTL value (Time To Live hops) -i n interval between sending ping packets (in millisec) (default 25) -l loop sending pings forever -m ping multiple interfaces on target host -n show targets by name (-d is equivalent) -p n interval between ping packets to one target (in millisec) (in looping and counting modes, default 1000) -q quiet (don't show per-target/per-ping results) -Q n same as -q, but show summary every n seconds -r n number of retries (default 3) -s print final stats -I if bind to a particular interface -S addr set source address -t n individual target initial timeout (in millisec) (default 500) -T n ignored (for compatibility with fping 2.4) -u show targets that are unreachable -O n set the type of service (tos) flag on the ICMP packets -v show version targets list of targets to check (if no -f specified)
3、Nmap工具
使用方法:
root@walfred:~# nmap -h Nmap 6.47 ( http://nmap.org ) Usage: nmap [Scan Type(s)] [Options] {target specification} TARGET SPECIFICATION: Can pass hostnames, IP addresses, networks, etc. Ex: scanme.nmap.org, microsoft.com/24, 192.168.0.1; 10.0.0-255.1-254 -iL <inputfilename>: Input from list of hosts/networks -iR <num hosts>: Choose random targets --exclude <host1[,host2][,host3],...>: Exclude hosts/networks --excludefile <exclude_file>: Exclude list from file HOST DISCOVERY: 主机网络发现功能 -sL: List Scan - simply list targets to scan -sn: Ping Scan - disable port scan -Pn: Treat all hosts as online -- skip host discovery 禁止网络发现功能,认为所有主机在线 -PS/PA/PU/PY[portlist]: TCP SYN/ACK, UDP or SCTP discovery to given ports -PE/PP/PM: ICMP echo, timestamp, and netmask request discovery probes -PO[protocol list]: IP Protocol Ping -n/-R: Never do DNS resolution/Always resolve [default: sometimes] --dns-servers <serv1[,serv2],...>: Specify custom DNS servers --system-dns: Use OS's DNS resolver --traceroute: Trace hop path to each host SCAN TECHNIQUES: -sS/sT/sA/sW/sM: TCP SYN/Connect()/ACK/Window/Maimon scans SYN/TCP/ACK/windown/conn扫描参数 -sU: UDP Scan UDP扫描参数指定 -sN/sF/sX: TCP Null, FIN, and Xmas scans NULL/FIN/xmas扫描 --scanflags <flags>: Customize TCP scan flags -sI <zombie host[:probeport]>: Idle scan -sY/sZ: SCTP INIT/COOKIE-ECHO scans -sO: IP protocol scan -b <FTP relay host>: FTP bounce scan PORT SPECIFICATION AND SCAN ORDER: -p <port ranges>: Only scan specified ports Ex: -p22; -p1-65535; -p U:53,111,137,T:21-25,80,139,8080,S:9 -F: Fast mode - Scan fewer ports than the default scan -r: Scan ports consecutively - don't randomize --top-ports <number>: Scan <number> most common ports --port-ratio <ratio>: Scan ports more common than <ratio> SERVICE/VERSION DETECTION: -sV: Probe open ports to determine service/version info --version-intensity <level>: Set from 0 (light) to 9 (try all probes) --version-light: Limit to most likely probes (intensity 2) --version-all: Try every single probe (intensity 9) --version-trace: Show detailed version scan activity (for debugging) SCRIPT SCAN: -sC: equivalent to --script=default --script=<Lua scripts>: <Lua scripts> is a comma separated list of directories, script-files or script-categories --script-args=<n1=v1,[n2=v2,...]>: provide arguments to scripts --script-args-file=filename: provide NSE script args in a file --script-trace: Show all data sent and received --script-updatedb: Update the script database. --script-help=<Lua scripts>: Show help about scripts. <Lua scripts> is a comma-separated list of script-files or script-categories. OS DETECTION: -O: Enable OS detection --osscan-limit: Limit OS detection to promising targets --osscan-guess: Guess OS more aggressively TIMING AND PERFORMANCE: Options which take <time> are in seconds, or append 'ms' (milliseconds), 's' (seconds), 'm' (minutes), or 'h' (hours) to the value (e.g. 30m). -T<0-5>: Set timing template (higher is faster) --min-hostgroup/max-hostgroup <size>: Parallel host scan group sizes --min-parallelism/max-parallelism <numprobes>: Probe parallelization --min-rtt-timeout/max-rtt-timeout/initial-rtt-timeout <time>: Specifies probe round trip time. --max-retries <tries>: Caps number of port scan probe retransmissions. --host-timeout <time>: Give up on target after this long --scan-delay/--max-scan-delay <time>: Adjust delay between probes --min-rate <number>: Send packets no slower than <number> per second --max-rate <number>: Send packets no faster than <number> per second FIREWALL/IDS EVASION AND SPOOFING: -f; --mtu <val>: fragment packets (optionally w/given MTU) -D <decoy1,decoy2[,ME],...>: Cloak a scan with decoys -S <IP_Address>: Spoof source address -e <iface>: Use specified interface -g/--source-port <portnum>: Use given port number --proxies <url1,[url2],...>: Relay connections through HTTP/SOCKS4 proxies --data-length <num>: Append random data to sent packets --ip-options <options>: Send packets with specified ip options --ttl <val>: Set IP time-to-live field --spoof-mac <mac address/prefix/vendor name>: Spoof your MAC address --badsum: Send packets with a bogus TCP/UDP/SCTP checksum OUTPUT: -oN/-oX/-oS/-oG <file>: Output scan in normal, XML, s|<rIpt kIddi3, and Grepable format, respectively, to the given filename. -oA <basename>: Output in the three major formats at once -v: Increase verbosity level (use -vv or more for greater effect) -d: Increase debugging level (use -dd or more for greater effect) --reason: Display the reason a port is in a particular state --open: Only show open (or possibly open) ports --packet-trace: Show all packets sent and received --iflist: Print host interfaces and routes (for debugging) --log-errors: Log errors/warnings to the normal-format output file --append-output: Append to rather than clobber specified output files --resume <filename>: Resume an aborted scan --stylesheet <path/URL>: XSL stylesheet to transform XML output to HTML --webxml: Reference stylesheet from Nmap.Org for more portable XML --no-stylesheet: Prevent associating of XSL stylesheet w/XML output MISC: -6: Enable IPv6 scanning -A: Enable OS detection, version detection, script scanning, and traceroute --datadir <dirname>: Specify custom Nmap data file location --send-eth/--send-ip: Send using raw ethernet frames or IP packets --privileged: Assume that the user is fully privileged --unprivileged: Assume the user lacks raw socket privileges -V: Print version number -h: Print this help summary page. EXAMPLES: nmap -v -A scanme.nmap.org nmap -v -sn 192.168.0.0/16 10.0.0.0/8 nmap -v -iR 10000 -Pn -p 80 SEE THE MAN PAGE (http://nmap.org/book/man.html) FOR MORE OPTIONS AND EXAMPLES
3.1Nmap执行TCP扫描
-sT 对TCP进行扫描
-p- 对所有端口扫描
-PN 禁用Nmap网络发现功能,假定所有系统都是活动的
root@walfred:~# nmap -sT -p- -PN 192.168.115.1 Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-23 20:38 CST Stats: 0:12:34 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 90.20% done; ETC: 20:51 (0:01:22 remaining) Stats: 0:16:16 elapsed; 0 hosts completed (1 up), 1 undergoing Connect Scan Connect Scan Timing: About 94.41% done; ETC: 20:55 (0:00:58 remaining) Nmap scan report for 192.168.115.1 Host is up (0.0022s latency). Not shown: 65533 closed ports PORT STATE SERVICE 23/tcp open telnet 80/tcp open http Nmap done: 1 IP address (1 host up) scanned in 1274.21 seconds
3.2Nmap执行UDP扫描
扫描udp也是有理由的,比如一些基于udp的服务,SNMP、TFTP、DHCP、DNS等等
root@walfred:~# nmap -sU 192.168.115.188 Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-23 20:21 CST Nmap scan report for 192.168.115.188 Host is up (0.00069s latency). Not shown: 994 closed ports PORT STATE SERVICE 137/udp open netbios-ns 138/udp open|filtered netbios-dgm 500/udp open|filtered isakmp 1900/udp open|filtered upnp 4500/udp open|filtered nat-t-ike 5355/udp open|filtered llmnr MAC Address: xxxxxxxxxxxxxx (Universal Global Scientific Industrial Co.) Nmap done: 1 IP address (1 host up) scanned in 974.78 seconds
3.3Nmap执行SYN扫描
nmap默认就是这种方式。这种方式要比TCP扫描快,因为只执行三次握手的前两次。也不会造成拒绝服务攻击
root@walfred:~# nmap -sS -p- -PN 192.168.115.1 Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-23 20:26 CST Nmap scan report for 192.168.115.1 Host is up (0.0020s latency). Not shown: 65533 closed ports PORT STATE SERVICE 23/tcp open telnet 80/tcp open http MAC Address: xxxxxxxxxxxxxx (Digital China (Shanghai) Networks) Nmap done: 1 IP address (1 host up) scanned in 368.52 seconds
哇偶,竟然开放了telnet....
3.3Nmap执行Xmas扫描
RFC文档描述了系统的技术细节,因此如果得到RFC文档,那么就可能找到系统的漏洞,xmas和null扫描的目的正是基于这一原因。
如果系统遵循了TCP RFC文档,那么不用完成连接,仅仅在发起连接的时候,namp就可以判断出目标系统的状态。
但是一般xmas针对unix或者linux系统比较有效。
root@walfred:~# nmap -sX -p- -Pn 192.168.115.1 Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-23 20:42 CST Nmap scan report for 192.168.115.1 Host is up (0.0029s latency). Not shown: 65533 closed ports PORT STATE SERVICE 23/tcp open|filtered telnet 80/tcp open|filtered http MAC Address: XXXXXXXXXXXXX (Digital China (Shanghai) Networks) Nmap done: 1 IP address (1 host up) scanned in 382.91 seconds
3.4Nmap执行Null
root@walfred:~# nmap -sN -p- -Pn 192.168.115.1 Starting Nmap 6.47 ( http://nmap.org ) at 2014-10-23 20:49 CST Stats: 0:04:54 elapsed; 0 hosts completed (1 up), 1 undergoing NULL Scan NULL Scan Timing: About 78.30% done; ETC: 20:55 (0:01:20 remaining) Nmap scan report for 192.168.115.1 Host is up (0.0018s latency). Not shown: 65533 closed ports PORT STATE SERVICE 23/tcp open|filtered telnet 80/tcp open|filtered http MAC Address: XXXXXXXXXXXXX (Digital China (Shanghai) Networks) Nmap done: 1 IP address (1 host up) scanned in 376.37 seconds
【原创实践】物理机安装Kali2.0 i386和Windows10 X64构成双系统详细教程 Linux
2017/02/02 更新:这篇文章是在BIOS+mbr的基础上写的,如果(你的easybcd不能用)是gpt+uefi 请查看这篇文章: 在UEFI+GPT下使用rEFind实现Win10 + Kali2.0 双引导:https://mrxn.net/Linux/UEFI-GPT-rEFind-Win10-Kali20.html
首先给大家看一下Kali2.0 i386和Windows10 X64安装成功后的截图吧:
从上图知道,我这里是使用Grub2引导的Windows系统.后面我会讲为什么这么做,比较适合新手.
首先说点需要注意的,你看看你是否遇到过这种情况,我把我安装的时候遇到的问题和群里童鞋们出现的问题综合了一下:
<一>镜像的选择:很多的人都是看自己的CPU来选择,比如Intel的使用i386.AMD的使用AMD64的.但是我用我的实践证明了,有的时候,AMD的CPU安装AMD版本的镜像是不行的,会卡在如下的界面,我想很多的人大概都遇到过.特别是使用AMD的CPU的童鞋.如果刻录了与你CPU型号相同的Kali镜像,但是却卡在如下图所示的环节,可以考虑重新刻录i386的镜像试试.因为哪个版本都可以使用的,只是性能上有多多少少的折扣。
<二>BIOS的设置,如果你是双显卡,安装的时候最好是使用集显,可以大大避免卡在安装界面进入后的第二步上。一般是在BIOS的config选项下面的Display里面设置使用集显还是双显卡。集显字样如:Intergrated Graphics 。等你安装完Kali之后,可以再进入BIOS设置重新启用双显卡。
<三>硬盘的模式选择,如果是安装双系统,推荐使用 AHCI + Legacy Only 模式,这样兼容性和性能都兼顾,但不是最好的性能哈,兼容和性能兼得,性能必然会有所牺牲的。如下图所示的硬盘模式设置:
<四>使用Windows系统自带的磁盘管理工具先压缩出来一部分给Kali 使用,一般推荐最少20G,可以大一点,比如30G比较合适。
在我的计算机上右键-管理-磁盘管理-选一个磁盘右键-压缩卷-输入压缩大小,比如:30720(30G),等待压缩完毕,退出来,关闭计算机,准备安装。
<五>如果你重新刻录镜像的时候不能够格式化U盘或者是U盘容量大小有问题,请查看这篇文章的解决方法:
使用Win32DiskImager做安装kali启动U盘后的那些事儿
下面开始详细的教程:
首先是使用windisk32这款软件来制作Kali的安装启动U盘.
选择你要安装的Kali版本镜像文件,我这里已Kali 2.0 i386做演示,也是我自己物理机安装的.记得在选择镜像的时候有个小细节,右下角的过滤选择所有文件类型:
找到镜像之后,打开就OK,然后是核对右边的Device(U盘/光盘)是否正确,软件默认是会选择U盘/光盘的,不知道的可以去我得电脑里面查看。这两项核对正确无误之后就可以点击下面的 write 开始写入镜像操作了。等待写入完成,一般是10分钟左右,主要依据你的U盘/光盘写入速度。
下面进入安装环节,关机,重启F12,到选择启动盘界面,或者是在BIOS设置好U盘为第一启动项(这不会就去百度吧,或者是别玩双系统了):
在这个界面我们可以测试能够安装。选择第一项的 Live (686-pae)更具你自己刻录的镜像,括号里面的可能会有不同,比如 Live (adm64) 等,回车进入 Kali Live 界面,记载系统文件等等,速度很快,如果你的加载中途停止了,卡在如图所示的位置,那你可以考虑换镜像重新刻录尝试:
如果顺利,会进入Kali Live界面的。如下图所示:
如果进入这里了,就表明你可以成功安装Kali 的几率提升到95%了。当然,如果你在Windows上忘了压缩分区给Kali,别着急,这里也可以分使用parttion分区命令来分区的(推荐在Windows上分区好,对于新手比较方便,老鸟直接飞过吧)。具体的分区方法,这里就不叙述了,很多的。节省空间,这篇文章已经很长了。。。
OK,点击右上角的那个倒三角,在弹出来的菜单里,选择reboot,选择now。重启,重新进入U盘安装Kali界面。这里我选择install。如果顺利,就来到选择语言的对话框,通过方向键向上选择中文(简体)。
接着是询问是否要以选择的语言安装,通过Tab键选择 是。
选择区域:中国,回车
选择汉语,回车
就开始加载数据,准备进行下一步,等待这个过程完毕,一般很快,几秒钟
接着来到了 给主机命名,随便输入你喜欢的名字,比如:Mrxn
接着是域名,选择不填写吧。直接Tab键 选择 继续
接着是 输入root用户密码,可以在这里设置,也可以在后面设置,我就在这里设置了吧,root 然后Tab键切换到 继续 回车
然后来到 重新输入刚刚输入的root密码进行确认,root Tab键到 继续之后,回车
就到了,分区这一步,很重要的步骤,因为刚刚在Windows上压缩了一个空的分区,所以会出现第一个:向导-使用最大的连续空闲空间,所以我这里直接就选择这个,回车进行下一步。如果你没有提前分区,或者是项自己设置boot分区根分区/,hone分区等等,请自行选择下面的手动。新手就别去折腾了。。小心折腾坏两个系统。
接着来到选择是否把所有文件放到一个分区中,推荐新手选择这一个,然后 回车。
然后就是分区结束最后确认阶段,选择最后一个:分区设定结束开始将更改写入磁盘,然后回车进行下一个环节
如果你是选择手动分区,并且自己选择了分区,就会弹出下面这两个对话框,我这里不是手动分区,所以不会出现这个,这只坐介绍,
接着是格式化分区的步骤,手动和向导分区都有这一步
格式化结束就会开始安装系统了,复制系统文件到磁盘了
漫长的等待数据复制完成之后,就会弹出选择是否进行网络安装,直接选择否,因为还没有修改源,会很慢,等死你。。。
接下来就是非常重要的步骤:安装Grub到那个分区,我这里选择是,安装到主mbr上,利用Grub来引导Windows。如果你想让Windows来引导Kali就选择否,然后选择将Grub安装到那个分区,如果/boot单独分区则添/boot所在的分区,如果/boot没有单独分区,则添/目录所在的分区;
Grub安装完毕之后就是重启,重启之后就可以看见熟悉的Kali Grub引导菜单,选择Kali 进入,进入Kali之后,我们需要使用下面的命令来更新Grub引导使Windows引导加入到引导菜单里面,打开终端命令面板,输入如下的命令更新Grub:
su
sudo update Grub2
如果你是以root登录的系统,直接输入 update Grub2 就可以了。然后reboot,就会发现已经有Windows load (sda1)等字样,选择并回车,就可以进入Windows系统了。如果不能进去Windows系统,请使U启动,大白菜,老毛桃之类的PE工具进行引导修复,就OK了。修复之后需要在Windows使用easybcd添加Kali 启动项。
如果是将mbr安装到其他分区,并非主分区,那么重启后是进入Windows系统的,进入Windows系统之后,下载easybcd,添加Kali启动项。具体的教程,可以百度搜搜,很多,也很详细的。
至此Kali + windows双系统安装就结束了,如果在安装中有什么问题或者是我写的不对的地方,欢迎大家评论留言:https://mrxn.net/guestbook.html或者是加我QQ-1451657099讨论。欢迎大家去折腾,生命在于折腾。生命不息,折腾不止!come on!
欢迎转载,请注明出处:https://mrxn.net/?post=363 毕竟写这么久不容易,请相互尊重,谢谢。
最新kali2.0 Linux编译安装RT2870/3070无线USB网卡驱动教程+reaver参数详解+PING方法策略 Linux
01.终端输入#lsusb,会看到再出现的几行中有USB、ralink等字样,一般是倒数第二行。。。确定下ID代码:ID 148f:5370 Ralink
02.下载驱动,可以google/百度搜索关键字----ralink rt2870/3070(根据自己的网卡型号来搜索)----进官网后选择Download字样的,只要芯片型号对就行,你说那要是不知道芯片型号?找度娘--搜索---你USB网卡型号+芯片型号(比如托实N95芯片型号)---度娘会告诉你芯片型号的!好了,这步搞定。
03.下载玩之后解压,tar -zxvf filename.tar.bz2 类似的。解压完毕后进入解压完毕的那个文件夹,然后进入 os/linux 目录下,编辑config.mk,可以使用命令 leafpad config.mk 之后在leafpad的窗口里搜索并找到,修改下面这两句,启用WPA特性:
HAS_WPA_SUPPLICANT=y
HAS_NATIVE_WPA_SUPPLICANT_SUPPORT=y
04.编译(需要root权限),make , makeinstall ,modprobe rt3070(根据自己的网卡型号),exit 。
注意:执行modprobe rt3070可能会产生一个警告: WARNING: All config files need .conf: /etc/modprobe.d/ndiswrapper, it will be ignored in a future release. 无视掉,没有关系!!!或许还有其他的警告或者是提示都不用管,稍等执行ifconfig -a 查看无线网卡驱动是否安装激活。
如果想系统每次启动就会自动驱动这张网卡,可以将模块加入/etc/modules,这样代码:echo rt3070 >> /etc/modules
下面介绍一下reaver与ping 之间的详细参数 和一些破解时设置的技巧,菜鸟请看,绝对有用,老鸟无视,直接飞过~~~~~
【Reaver v1.4 参数说明】
-i, --interface=<wlan> Name of the monitor-mode
interface to use
网卡的监视接口,通常是 mon0
-b, --bssid=<mac> BSSID of the target AP AP 的
MAC 地址
Optional Arguments:
-m, --mac=<mac> MAC of the host system
指定本机 MAC 地址,在 AP 有 MAC 过滤的时候需要使用
-e, --essid=<ssid> ESSID of the target AP 路由器的
ESSID,一般不用指定
-c, --channel=<channel> Set the 802.11 channel for
the interface (implies -f) 信号的频道,如果不指定会自动扫
描
-o, --out-file=<file>Send output to a log file [stdout]
标准输出到文件
-s, --session=<file> Restore a previous session file
恢复进程文件
-C, --exec=<command> Execute the supplied
command upon successful pin recovery pin 成功后执行
命令
-D, --daemonize Daemonize reaver
设置 reaver 成 Daemon
-a, --auto Auto detect the best advanced options
for the target AP 对目标 AP 自动检测高级参数
-f, --fixed Disable channel hopping
禁止频道跳转
-5, --5ghz Use 5GHz 802.11 channels 使用 5G 频道
-v, --verbose Display non-critical warnings (-vv for
more) 显示不重要警告信息 -vv 可以显示更多
-q, --quiet Only display critical messages 只显示关键信息
-h, --help Show help 显示帮助 Advanced Options:
-p, --pin=<wps pin> Use the specified 4 or 8 digit
WPS pin
直接读取 psk(本人测试未成功,建议用网卡自带软件获取)
-d, --delay=<seconds> Set the delay between pin
attempts [1]
pin 间延时,默认 1 秒,推荐设 0
-l, --lock-delay=<seconds> Set the time to wait if
the AP locks WPS pin attempts [60] AP 锁定 WPS 后
等待时间
-g, --max-attempts=<num> Quit after num pin
attempts
最大 pin 次数
-x, --fail-wait=<seconds> Set the time to sleep after
10 unexpected failures [0]
10 次意外失败后等待时间,默认 0 秒
-r, --recurring-delay=<x:y> Sleep for y seconds every
x pin attempts
每 x 次 pin 后等待 y 秒
-t, --timeout=<seconds> Set the receive timeout
period [5] 收包超时,默认 5 秒
-T, --m57-timeout=<seconds> Set the M5/M7
timeout period [0.20] M5/M7 超时,默认 0.2 秒
-A, --no-associate Do not associate with the AP
(association must be done by another application)
不连入 AP(连入过程必须有其他程序完成)
-N, --no-nacks Do not send NACK messages
when out of order packets are received
不发送 NACK 信息(如果一直 pin 不动,可以尝试这个参数)
-S, --dh-small Use small DH keys to improve crack
speed
使用小 DH 关键值提高速度(推荐使用)
-L, --ignore-locks Ignore locked state reported by the
target AP 忽略目标 AP 报告的锁定状态
-E, --eap-terminate Terminate each WPS session with
an EAP FAIL packet
每当收到 EAP 失败包就终止 WPS 进程
-n, --nack Target AP always sends a NACK [Auto] 对
目标 AP 总是发送 NACK,默认自动
-w, --win7 Mimic a Windows 7 registrar [False] 模拟
win7 注册,默认关闭
PIN码
破解简单解释:
PIN码分前4和后4,先破前4只有最多一万个组合,破后4中的前3只有一千个组
合,一共就是一万一千个密码组合。 10的4次方+10的3次方=11000个密码组合。
当reaver确定前4位PIN密码后,其任务进度数值将直接跳跃至90.9%以上,也就是
说只剩余一千个密码组合了。总共一万一千个密码!
学习过程
1.在虚拟机找到点击打开。如果电脑装有多个无线网卡,请先发指令
ifconfig -a 确认你用哪一个网卡WLAN0或是WLAN1
(下面的指令都是以单一网卡WLAN0为例)
2.出现root Shell窗口。敲入第一条命令“ifconfig wlan0 up” 加载
usb网卡。
接下来“airmon-ng start wlan0” 监听模式已激活到了
mon0。
如果出现网卡没有正确加载,8187驱动RF-kill的参考后记1解决问题。
3.第二条命令“airodump-ng mon0” 查看周边路由/AP的信息。
记录下你要学习的路由MAC地址。提供几个查看可以使用PIN码学习路由的方法。
特别提示:只有AP开启了WPS、QSS功能,才可以用PIN法学习PSK密码!如何查看
AP是否开了WPS、QSS呢提供几个小方法?
a) reaver1.3下使用使用命令walsh -imon0-C 查看针对xiaopangOS3.2版本
b) reaver1.4下用新的指令:WASH -i mon0 -C C是大写在wps locked一项中有显示的。
c) WIN7下,用通常的方式连接AP,如果在提示输入密码框下面,出现“通过按路由器
按钮也可以连接”,就确认此AP开了WPS、QSS。
d) 在螃蟹软件中——可用网络——模式下带N,G的这个不是很准
最准确的是下面这个选项
点击PIN输入配置,选择接入点,哈哈出来了吧,这里面都是可以学习的目标
需要注意的是,查看后面有的是不支持pin码连接的,这样的就别弄了,后果你知道。
1. 重新开启一个root Shell窗口,第三条命令“reaver -i mon0 -b MAC -a -S -vv” 抓PIN
码。注意,MAC中冒号不可省略,MAC地址的字母大小写均可,-S是大写字母, -vv
是两个V不是W!# _) }
-i 监听后接口名称
-b 目标mac地
-a 自动检测目标AP最佳配
-S 使用最小的DH key(可以提高破解速度)
-vv 显示更多的非严重警告
-d 即delay每穷举一次的闲置时间 预设为1秒
-t 即timeout每次穷举等待反馈的最长时间
-c指定频道可以方便找到信号,如-c1 指定1频道,大家查看自己的目标频道做相应修改 (非TP-LINK路由推荐–d9 –t9参数防止路由僵死
reaver -i mon0 -b MAC -a -S –d9 –t9 -vv)
小结-学习时应因状况调整参数(-c后面都已目标频道为1作为例子
目标信号非常好: reaver -i mon0 -b MAC -a -S -vv -d0 -c 1
目标信号普通: reaver -i mon0 -b MAC -a -S -vv -d2 -t .5 -c 1
目标信号一般: reaver -i mon0 -b MAC -a -S -vv -d5 -c 1
学习开始了,然后就是漫长的等待。
如果信号好的话2-4小时内进度走到100%你就会有惊喜发现。
PIN破密对信号要求极为严格,如果信号稍差,可能导致破密进度变慢或者路由死锁等(重
复同一个PIN码 或 timeout)。AP关闭了WPS、或者没有QSS滴,会出现
WARNING: Failed to associate with XX:XX:XX:XX:XX:XX (ESSID: XXXX)
5.如果出现超长的wpa PSK可以使用第四条命令“reaver –i mon0 –b MAC –p WPA PSK”
MAC为目标的mac地址,WPA PSK为获取到的超长密码。作用是将指定的pin码获取
wpa密码psk。
6.常用命令截图
7.不是所有的路由都支持pin学习。AP关闭了WPS、或者没有QSS滴,会出现
WARNING: Failed to associate with XX:XX:XX:XX:XX:XX (ESSID: XXXX) 学习过程中也可随时随地按
Ctrl+C终止破解,重复同一个PIN码 或 timeout可终止,reaver
会自动保存进度。保存进度后重复第2-4项内容,先看看AP信号强弱或是否关机,继续
学习,则重复命令reaver -i mon0 -b MAC -vv这条指令下达后,会让你选y或n,选y后
就继续了。当reaver确定前4位PIN密码后,其工作完成任务进度数值将直接跳跃至90.9%
以上,也就是说只剩余一千个密码组合了(总共一万一千个密码)。这个时候离成功就差
一步之遥了,呵呵hold住哦!!!
小技巧:只要Root Shell窗口不关闭,按方向键的上下会出现你输入过的命令方便调用。 8.虚拟机中快照的保存方法
找到这两个图标,第一个是保存快照。第二个图标是加载上一次的快照。
快照的作用:类似迅雷的断点续传,可以保存上次学习的进度,防止目标pin僵死,无法
继续前功尽弃,这是光盘启动、u盘启动、硬盘启动都无法避免的。而虚拟机则可为自己
上一份保险。
载入快照后如果无法继续,可以尝试先卸载掉usb网卡,然后重新加载。然后在开启窗口
继续上次的学习。学习过程中也可随时随地按Ctrl+C终止破解,重复同一个PIN码 或
timeou t可终止,reaver会自动保存进度。
reaver -i mon0 -b MAC -vv这条指令下达后,会让你选y或n,选y后就继续了。
9.光盘启动、u盘/硬盘启动保存学习进度的方法
reaver1.3的保存路径:打开桌面最后边一个图标xfec 定位到/etc/reaver下,有一个wpc
后缀的文件,名字是你学习的目标的mac地址,复制到你的U盘,路径是/mnt/sdb1(一
般是这个,自己找找,要是没有东西就右键mount),以后重启到xiaopanOS,把这文件
复制到原来的路径,再试试,可以载入进度了!o(∩_∩)o 哈哈
reaver1.4的保存路径:保存目录:/usr/local/etc/reaver
如果xfe文件管理器未获得ROOT权限。请先运行root shell后输入xfe即可获得root权
限。保存方法同上。下次重启动后,再手工复制到/etc/reaver/ 目录下即可
MAC地址.wpc 其实是个文本文件,格式与破密用字典酷似,其第一行和第二行,分别是
4位数和3位数的指示位置数(+4)。如果进度到99.9%后,AP死机,可打开它,总共1000
个3位数,找出剩余的十几个PIN码,用QSS、WPS客户端软件,手动测试、破密。
如果是跑了99.99%死机, 意味吗? 你懂的吧? 最后一个PIN就是。
以下这个命令是指定PIN码,获得WPA 密码PSK
reaver -i mon0 -b MAC -p PIN8位数
如果上述措施不后,仍不见PSK密码,可能因软件原因,漏码了!需要重新跑后三位数!
(前四位正确的话)reaver -i mon0 -b MAC -p PIN前4位数
1.遇见8187驱动RF-kill的 xiaopanos
对8187的网卡支持不是太好,有时会出现驱动加载不了,就是输入第一条命令
后出现operation not possible due to RF-kill,我想大部分人也遇到过把。新版本0.34使用
命令rfkill unblock all解决这个问题,容易出现问题的是0.3.2版本的。
第一种尝试的解决办法:这时候就断开USB,等上大概10几秒把再插上,连续插拔几次
总有一次会好。
第二种尝试的解决办法:先运行一下奶瓶扫描一会,然后退出奶瓶。虚拟机USB图标(USB
图标上的小点)由深绿变成浅绿色,变浅绿就输入
ifconfig wlan0 up
airmon-ng start wlan0
第三种解决办法:出现错误后的解决
a.Root Shell窗口敲击命令“ifconfig -a”,查看最后一项是否出现wlan0,这个就是你的无
线网卡。如果没有出现拔插网卡,直到测试出现wlan0。
b.接下来输入第二条命令“ifconfig wlan0 up”,接下来第三条“airmon-ng start wlan0”载入
网卡。如果出现operation not possible due to RF-kill,不要惊慌继续输入命令“airmon-ng start
wlan0”多输入几次,然后拔出USB网卡,再插入,重复第2步的命令。一般情况下就会
正常载入了括号内只会显示monitor mode enabled on mon0,不会出现operation not possible
due to RF-kill,如果不行以上步骤再次重复,直到解决。
c.输入“airodump-ng mon0”(如果括号内显示的是monitor mode enabled on mon1,相应的
命令就改为airodump-ng mon1,其他的类似),测试一下,要是可以正常扫描,说明8187L加载成功,就可以reaver了,你懂的!
d.小技巧:只要Root Shell窗口不关闭,按方向键的上下会出现你输入过的命令方便调用。
2. reaver
破密进度表 全能保存办法
用u盘或者硬盘启动xiaopanos可以保存进度,重启不会丢失,方法如下:
打开桌面最后边一个图标xfec 定位到/etc/reaver下,有一个wpc后缀的文件,名字是你
破解的mac地址,复制到你的U盘,路径是/mnt/sdb1(一般是这个,自己找找要是没有东
西就右键mount),以后重启到xiaopanOS,把这文件复制到原来的路径,再试试,可以
载入进度了
reaver的进度表文件保存在/etc/reaver/MAC地址.wpc 用资源管理器,手工将以MAC地
址命名的后辍为.wpc的文件拷贝到U盘或硬盘中,下次重启动后,再手工复制到
/etc/reaver/ 目录下即可。
MAC地址.wpc 其实是个文本文件,格式与破密用字典酷似,如果进度到99.9%后,AP
死机,可打开它,总共1000个3位数,找出剩余的十几个PIN码,用QSS、WPS客户
端软件,手动测试、破密。
3. PIN
破密降低timeout、同码重复的非常给力措施之一
首先是PIN难易与MAC无关的!主要跟路由所在频道的 信道拥挤程度相关!(同一频道
中有几个路由,特别是强信号的AP会相互干扰,造成 timeout
一般AP默认频道cn 6,部分为
解决“同频干扰”、“邻频干扰”的原则:设法 调虎离山(这个我想大家都懂的)。
将能调动的AP远离破密AP至少3个CN以上
5.如果90.9%进程后死机或停机,可以使用-p参数
请记下PIN前四位数,用指令:reaver -i mon0 -bMAC -a -vv -p XXXX(PIN前四位数
会从指定PIN段起破密.
6.只有AP开启了WPS、QSS功能,才可以用PIN法破PSK密码!如何查看AP是否开了WPS、QSS呢?
reaver1.3下 使用airodump-ng -mon0 MB一栏下,出现 54e. 是开11N的WPS的(不是
54e是有小数点的54e.)
reaver1.4除可使用上述命令外也可以用新的指令:WASH -imon0-C在wps locked一项中
有显示的。
WIN7下,用通常的方式连接AP,如果在提示输入密码框下面,出现“通过按路由器按
钮也可以连接”,就确认此AP开了WPS、QSS。PIN破密对信号要求极为严格,如果信
号稍差,可能导致破密进度变慢或者路由死锁等(重复同一个PIN码 或timeout)。AP
关闭了WPS、或者没有QSS滴,会出现
WARNING: Failed to associate with XX:XX:XX:XX:XX:XX (ESSID: XXXX)
7. 通过mac地址查找路由品牌 有时候
破解时SSID通常被改成其他的 不好判断 可以打开下面这个网址:
http://standards.ieee.org/develop/regauth/oui/public.html
输入你的ap mac的前三位,接下来就不用说了吧?破解 至少也要知道对方用的是啥路由
总结发现这个方法最快 也最好用 对破解有一定的帮助
8. 很简单地扫描支持pin解的路由
在xiaopanos下打开一个root shell 如果是1.3或之前的的就键入walsh -i mon0 -C(一般是
这个,不是的话改成你的网卡,注意c要大写)
1.4要把walsh改成wash 片刻就罗列出周围支持wps的路由,在wps locked一项如果是
N的话就可以pin破解
9. 在
xiaopanOS 中,打开的窗口最小化后,就找不到了,因为不像windows有下方的任
务栏,此时按Alt+Tab键,会出现一个弹出菜单,选择rootshell,原来最小化的窗口就会
出现了。
10. PIN僵死锁定后,无奈的方法。也可以攻击隐藏ssid的路由(不推荐使用)aireplay-ng-0 1000 -a SSID
的MAC -c 合法客户端的MAC 网卡端口 就是让客户端断开连接1000次
11. 【公共
wifi密码】
中国移动:卡号:15821275836 密码:159258;卡号:15800449592 密码:159258;卡
号:15800449954 密码:159258;卡号:15800449940 密码:159258。中国电信:但凡
你的手机能搜到电信的chinanet的热点覆盖,全国公免账号:07953591377密码3591377。
有福同享!
12. 利用虚假连接调整天线,快速穷举pin码的方法;
首先利用8187管理软件来精确调整天线的位置。(因为8187界面非常直观,友好,可以
看到当前连接ap源的信号强度和接收品质的动态条)把信号先调得接收强度,接收品质
为最优秀为破解来打下扎实的基础。
最笨的方法就是把要破解的信号连接上。那你会问了能连接上就不用破了。是兄弟们没
有反应过来,呵呵,听我慢慢说:你可以虚假的连接啊。比如:要破这个1234p这个ssid
的信号。双击这个信号后会弹出输入密码对话框,你可以按10个1嘛。下面也一样输入
10个1 。这样就会虚假连接。能在8187管理界面上看到信号接收强度和接收品质的动
态图。虽然上不去网,但是完全可以根据这两项把天线调整到最佳的接收状态,使之
信号校对到最优秀状态。把信号调整好后,你说破解顺利不啊?还会出timeout这种丢包
情况吗?会相当顺利的。呵呵呵呵。
配合破解要有好的定向天线,我是硬件版块的兄弟。我们经常自己diy大增益的天线。使
我们的信号强上更强,这叫好马配好鞍,使破解无往而不利,综上所术:这就是我要分享
的小经验。我最慢也没有超过30分钟 的啊。一般全是15分钟就搞定了。。新手兄弟:
明白了吧 .
13. 破解隐藏SSID前提:一定要有合法的客户端连上
1.在bt3/4/5下先打开一个shell,输入airodump-ng 网卡端口
2.打开另一个shell,输入aireplay-ng-0 10 -a AP的MAC -c 合法客户端的MAC 网卡端口,
可能这个命令由于频道不对会出错,这时就要多重输几次(重输技巧:只要按一下向上键就
可以了,如果不行,就是不是合法客户端,要再试其它的客户端),直到提示成功为止。
3.然后就可以在上个shell,看到显示出来的SSID图是借用论坛的XD的,希望是不会介意
吧 连接隐藏SSID: 输入SSID选好网络身份验证加密方式及破解出来的密码,点上即使此网络未广播也进行
连接,然后确定就看到右下角小电脑摇起来了吧!如果连不了,可能是因为这个信号太弱和
有太强的信号影响,这时就要把可用网络里的AP列表全部删除,只留下那个刚新增的AP就可以了.如果还是连不上,那就是因为这个信号太弱,windows认为它没有连接的价值,又
或是AP还设置了MAC、IP过滤。
14.在xiaopangOS下修改usb网卡mac地址的方法
macchanger -m 00:16:6f:ab:25:f9 wlan0
15. PIN
破密正常运行中,信号质量也很好的情况下,突然出现出现同码循环和大量
timeout,可能是如下原因造成的(排除关机状态)。
reaver只支持11N的PIN破密,11n先验证前4位码,11g也有PIN功能,是全码验证。
现在多数AP的无线模式是混和11bgn,当有11g设备接入时,AP自动从11N降至11g
此时,reaver会出现同码循环重复timeout! 甚至会出现WARNING: Failed to associate with
XX:XX:XX:XX:XX:XX (ESSID: XXXX)实证中,在排除同频干扰因素后,通过扫描无线
网络,发现路由器,确实从54e.模式降为54.模式了。有人把此种现象称为临时性WPS、
PIN功能自锁从收集情况分析,目前破密的主要是TP-LINK的路由器!
解决办法:
等待这个11g设备退出无线接入,断电重启,AP自动从11g恢复至11N模式。如果遇
到上很长很长时间不重启的顽固AP,我想最有效的办法就是我们动手帮它重启,找到附) ~
近(路由器一定离我们不远)楼内单位总电源开关!下步该知道怎么办了吧————终)
极秘籍:拉开关断电,再推上开关,回家继续。
相关推荐:
破解了你的路由密码后,我还可以这样做,绝对不是蹭你网这么简单
Kali套件之nikto扫描网站漏洞应用小计
最新kali2.0 aircrack-ng 无法进入监听模式问题的解决办法 Linux
对于升级后的aircrack-ng 和以前的 大不一样,特别是监听模式的设置,很多人会出现找不到设备会命令出错的各种原因我们先去官网(http://www.aircrack-ng.org/doku.php?id=compatibility_drivers)确定自己网卡是否有被kali2集成后就可以按照以下步骤 进行新的命令操作:
第一步:在设置监听模式前先输入airmon-ng check kill结束进程
第二步:和以前一样载入网卡airmon-ng start wlan0(自己的网卡名)
第三步:他会自动创建一个 wlan0mon接口 记住这个 接口名 而不是以前的mon0
第四步:建立监听 airodump-ng wlan0mon
如果在第四步发现出现错误 那么 有三种可能第一 你的网卡不支持监听模式,第二你的wlan0mon输入错误,第三网卡被其他进程给调用无法获取
第三种情况解决方法:
执行airmon-ng check kill
执行 ifconfig wlan0mon up
airmon-ng stop wlan0mon
最后跳回上面的第二部进行
如果还不行 那就拔掉网卡 或重启
再次ifconfig 查找时候有
网卡 标识名一般以wlan开头如果没有 就 ifconfig wlan0 (或者wlan1 wlan2.。。。载入) up
发现了 并载入了 wlan0跟着第一步走一般不会出错
相关推荐:
破解了你的路由密码后,我还可以这样做,绝对不是蹭你网这么简单
Kali套件之nikto扫描网站漏洞应用小计
Linux内核级后门的原理及简单实战应用 Linux
以下代码均在linux i86 2.0.x的内核下面测试通过。它也许可以在之前的版本通过,但并没有被测试过。因为从2.1.x内核版本就引入了相当大的改变,显著地内存管理上的差别,但这些不是我们现在要讨论的内容。
用户空间与内核空间
linux是一个具有保护模式的操作系统。它一直工作在i386 cpu的保护模式之下。
内存被分为两个单元:内核区域和用户区域。内核区域存放并运行着核心代码,当然,顾名思义,用户区域也存放并运行用户程序。当然,作为用户进程来讲它是不能访问内核区域内存空间以及其他用户进程的地址空间的。
核心进程也有同样的情况。核心代码也同样不能访问用户区地地址空间。那么,这样做到底有什么意义呢?我们假设当一个硬件驱动试图去写数据到一个用户内存
空间的程序里的时候,它是不可以直接去完成的,但是它可以利用一些特殊的核心函数来间接完成。同样,当参数需要传递地址到核心函数中时,核心函数也不能直
接的来读取该参数。同样的,它可以利用一些特殊的核心函数来传递参数。
这里有一些比较有用的核心函数用来作为内核区与用户区相互传递参数用。
#include <asm/segment.h> get_user(ptr) |
从用户内存获取给定的字节,字,或者长整形。这只是一个宏(在核心代码里面有此宏的详细定义),并且它依据参数类型来确定传输数量。所以你必须巧妙地利用它。
put_user(ptr)和get_user()非常相似,但是,它不是从用户内存读取数据,而是想用户内存写数据。
memcpy_fromfs(void *to, const void *from,unsigned long n) |
从用户内存中的from拷贝n个字节到指向核心内存的指针to。
memcpy_tofs(void *to,const *from, unsigned long n) |
从核心内存中的*from拷贝n个字节数据到用户内存中的*to。
系统调用
大部分的c函数库的调用都依赖于系统调用,就是一些使用户程序可以调用的简单核心包装函数。这些系统调用运行在内核本身或者在可加载内核模块中,就是一些可动态的加载卸载的核心代码。
就象MS-DOS和其他许多系统一样,linux中的系统调用依赖一个给定的中断来调用多个系统调用。linux系统中,这个中断就是int
0x80。当调用'int 0x80'中断的时候,控制权就转交给了内核(或者,我们确切点地说, 交给_system_call()这个函数),
并且实际上是一个正在进行的单处理过程。
* _system_call()是如何工作的?
首先,所有的寄存器被保存并且%eax寄存器全面检查系统调用表,这张表列举了所有的系统调用和他们的地址信息。它可以通过extern void *sys_call_table[]来被访问到。该表中的每个定义的数值和内存地址都对应每个系统调用。大家可以在/usr/include/sys/syscall.h这个头中找到系统调用的标示数。
他们对应相应的SYS_systemcall名。假如一个系统调用不存在,那么它在sys_call_table中相应的标示就为0,并且返回一个出错信息。否则,系统调用存在并在表里相应的入口为系统调用代码的内存地址。这儿是一个有问题的系统调用例程:
[root@plaguez kernel]# cat no1.c #include <linux/errno.h> #include <sys/syscall.h> #include <errno.h> extern void *sys_call_table[]; sc() { // 165这个系统调用号是不存在的。 __asm__( "movl $165,%eax int $0x80"); } main() { errno = -sc(); perror("test of invalid syscall"); } [root@plaguez kernel] # gcc no1.c [root@plaguez kernel] # ./a.out test of invalid syscall: Function not implemented [root@plaguez kernel] # exit |
系统控制权就会转向真正的系统调用, 用来完成你的请求并返回。 然后_system_call()调用_ret_from_sys_call()来检查不同的返回值, 并且最后返回到用户内存。
- libc
这int $0x80 并不是直接被用作系统调用; 更确切地是,libc函数,经常用来包装0x80中断,这样使用的。
libc通常利用_syscallX()宏来描述系统调用,X是系统调用的总参数个数。
举个例子吧,
libc中的write(2)就是利用_syscall3这个系统调用宏来实现的,因为实际的write(2)原型需要3个参数。在调用0x80中断之
前,这个_syscallX宏假定系统调用的堆栈结构和要求的参数列表,最后,当 _system_call()(通过int
&0x80来引发)返回的时候,_syscallX()宏将会查出错误的返回值(在%eax)并且为其设置errno。
让我们看一下另一个write(2)例程并看看它是如何进行预处理的。
[root@plaguez kernel]# cat no2.c #include <linux/types.h> #include <linux/fs.h> #include <sys/syscall.h> #include <asm/unistd.h> #include <sys/types.h> #include <stdio.h> #include <errno.h> #include <fcntl.h> #include <ctype.h>
_syscall3(ssize_t,write,int,fd,const void ,buf,size_t,count);/构建一个write调用*/
main()
{
char *t = "this is a test.\n";
write(0, t, strlen(t));
}
[root@plaguez kernel]gcc -E no2.c > no2.C
[root@plaguez kernel]
indent no2.C -kr
indent:no2.C:3304: Warning:
old style assignment ambiguity in
"=-". Assuming "= -"[root@plaguez kernel]# tail -n 50 no2.C
9 "no2.c" 2
ssize_t write(int fd,
const void *buf, size_t count)
{
long res;
asm volatile("int $0x80":"=a"
(res):"0"(4), "b"((long) (fd)),
"c"((long) (buf)),
"d"((long) (count)));
if (res >= 0)
return (ssize_t) res;
errno = -res;
return -1;
};main()
{
char *t = "this is a test.\n";
write(0, t, strlen(t));
}
[root@plaguez kernel]# exit
注意那个write()里的"0"这个参数匹配SYS_write,在/usr/include/sys/syscall.h中定义。
- 构建你自己的系统调用。
这里给出了几个构建你自己的系统调用的方法。举个例子,你可以修改内核代码并且加入你自己的代码。一个比较简单可行的方法,不过,一定要被写成可加载内核模块。
没有一个代码可以象可加载内核模块那样可以当内核需要的时候被随时加载的。我们的主要意图是需要一个很小的内核,当我们需要的时候运行insmod命令,给定的驱动就可以被自动加载。这样卸除来的lkm程序一定比在内核代码树里写代码要简单易行多了。
- 写lkm程序
一个lkm程序可以用c来很容易编写出来。它包含了大量的#defines,一些函数,一个初始化模块的函数,叫做init_module(),和一个卸载函数:cleanup_module()。
这里有一个经典的lkm代码结构:
#define MODULE #define __KERNEL__ #define __KERNE_SYSCALLS__
include <linux/config.h>
ifdef MODULE
include <linux/module.h>
include <linux/version.h>
else
define MOD_INC_USE_COUNT
define MOD_DEC_USE_COUNT
endif
include <linux/types.h>
include <linux/fs.h>
include <linux/mm.h>
include <linux/errno.h>
include <asm/segment.h>
include <sys/syscall.h>
include <linux/dirent.h>
include <asm/unistd.h>
include <sys/types.h>
include <stdio.h>
include <errno.h>
include <fcntl.h>
include <ctype.h>
int errno;
char tmp[64];
/ 假如,我们要用到ioctl调用 /
_syscall3(int, ioctl, int, d,
int, request, unsigned long, arg);int myfunction(int parm1,char parm2)
{
int i,j,k;
/ ... */
}int init_module(void)
{
/ ... /
printk("\nModule loaded.\n");
return 0;
}void cleanup_module(void)
{
/ ... /
}
检查代码中的
#defines (#define MODULE, #define __KERNEL__) 和 #includes (#include <linux/config.h> ...)
一定要注意的是我们的lkm讲要被运行在内核状态,我们就不能用libc包装的函数了,但是我们可以通过前面所讨论的_syscallX()宏来构建系
统调用。你可以这样编译你的模块'gcc -c -O3 module.c' 并且利用'insmod module.o'来加载。
提一个建议,lkm也可以用来在不完全重建核心代码的情况下来修改内核代码。举个例子, 你可以修改write系统调用让它隐藏一部分给定的文件,就象我们把我们的backdoors放到一个非常好的地方:当你无法再信任你的系统内核的时候会怎么样呢?
- 内核和系统调用后门
在简单介绍了上述理论,我们主要可以用来做什么呢。我们可以利于lkm截获一些对我们有影响的系统调用,这样可以强制内核按照我们的方式运行。例如:我们可以利用ioctl系统调用来隐藏sniffer所造成的网卡PROMISC模式的显示。非常有效。
去改变一个给定的系统调用,只需要在你的lkm程序中增加一个定义extern void
*sys_call_table[],并且利用init_module()函数来改变sys_call_table里的入口来指向我们自己的代码。改变后
的调用可以做我们希望它做的一切事情,利用改变sys_call_table来导出更多的原系统调用。
- 内核和系统调用后门
- 构建你自己的系统调用。