life's a struggle.
2015-02-11
2015-02-11
说明
- 固件名称:openwrt-*-upgrade.bin
通过web方式
主机IP设置为与路由器同一网段的,一般为192.168.1.0/24
打开浏览器,登录web管理页面,一般默认为192.168.1.1
选择固件升级即可
通过ssh
2015-02-10
在复合语句,如while
,for
等定义局部变量,不会造成额外的开销。
示例:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50root@long-VirtualBox:/data/Test/c/for循环中定义变量/src# objdump -d -S main.o
main.o: file format elf32-i386
Disassembly of section .text:
00000000 <main>:
#include <stdio.h>
int main(int argc, char* argv[])
{
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 83 e4 f0 and $0xfffffff0,%esp
6: 83 ec 20 sub $0x20,%esp
int i = 0;
9: c7 44 24 18 00 00 00 movl $0x0,0x18(%esp)
10: 00
for (; i < 10; ++i) {
11: eb 26 jmp 39 <main+0x39>
int j = 1;
13: c7 44 24 1c 01 00 00 movl $0x1,0x1c(%esp) // i的初始化语句
1a: 00
++j;
1b: 83 44 24 1c 01 addl $0x1,0x1c(%esp)
printf("j = %d\n", j);
20: 8b 44 24 1c mov 0x1c(%esp),%eax
24: 89 44 24 04 mov %eax,0x4(%esp)
28: c7 04 24 00 00 00 00 movl $0x0,(%esp)
2f: e8 fc ff ff ff call 30 <main+0x30>
int main(int argc, char* argv[])
{
int i = 0;
for (; i < 10; ++i) {
34: 83 44 24 18 01 addl $0x1,0x18(%esp)
39: 83 7c 24 18 09 cmpl $0x9,0x18(%esp)
3e: 7e d3 jle 13 <main+0x13> // 重复执行初始化语句
int j = 1;
++j;
printf("j = %d\n", j);
}
return 0;
40: b8 00 00 00 00 mov $0x0,%eax
}
45: c9 leave
46: c3 ret
不会造成不停的给
i
分配空间的操作,因为局部变量都是在编译时刻确定空间的,是通过操作esp
来实现的。但初始化语句
i = 0
会重复执行!
总结
- 最好最变量使用的地方,定义变量,最小化作用域
参考
2015-02-10
反汇编,并带源码
objdump -S OBJECT_FILE
2015-02-10
coreutils
du, groups, mv, date
bintuils
ar, objdump, ld, c++filt, nm, ranlib, strip, readelf, size,
bridge-utils
brctl,
e2fsprogs
mkfs.ext2, mkfs.ext3, mkfs.ext4,
dosfstools
mkfs.fat, mkfs.msdos, mkfs.vfat
ntfs-3g
mkfs.ntfs
procps
free, ps, top, sysctl, kill
sysvinit-utils
service, pidof
tar
tar
util-linux
fdisk, cfdisk
所用查找命令
ubuntu
查看命令完整文件名
which COMMAND
查看命令所属包
apt-file search FILENAME
2015-02-10
测试配置文件语法
testparm
本地连接测试
smbclient -L //127.0.0.1
连接
smbclient //localhost/fanny -U chanpin
观察连接状态
smbstatus
挂载共享目录
mount -t cifs //127.0.0.1/read /mnt
查看用户
pdbedit -L
添加一个用户
pdbedit -a -u USERNAME
删除用户
pdbedit -x -u USERNAME
修改samba用户登录密码
smbpasswd USERNAME
重启samba
system-v4
service smbd restart
systemd
systemctl restart smb
查看samba版本
smbstatus
2015-02-10
环境
CentOS-7.0.1
Samba version 4.1.12
步骤
安装samba
yum install samba
修改配置文件
cp /etc/samba/smb.conf /etc/samba/smb.conf~ vi /etc/samba/smb.conf [global] workgroup = WORKGROUP netbios name = xianji-server server string = Samba Server Version %v security = user map to guest = Bad Password guest account = guest unix extensions = no load printers = no log file = /var/log/samba/%m.log max log size = 50 encrypt passwords = true passdb backend = tdbsam unix password sync = yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . pam password change = yes [root] path = / browseable = no writable = yes wide links = yes guest ok = no [share] path = /data/share guest ok = yes read only = no
添加samba用户(需要当前已存在用户名)
pdbedit -a USERNAME
输入2次密码
关闭SELinux
setenfore 0
防火墙放行(445/tcp)
firewall-cmd --permanent --add-port=445/tcp firewall-cmd --reload
重启samba服务
systemctl restart smb systemctl restart nmb
权限控制
以用户的所有权限控制(security = user
)
根据目录、文件的权限来控制
1 | # 添加用户 |
参考
2015-02-09
2015-02-09
局域网内,目标不存在或未应答
分析
该数据包未发送,因为在tcp/ip在填充目的MAC,执行ARP请求时,没有得到应答,无法确定目的MAC。
表象
windows
无法访问目标主机
linux
Destination Host Unreachable
非局域网,目标不存在或未应答
分析
该数据包已发送,由下一跳路由负责转发,而对应的机器不存在或未应答
表象
windows
请求超时
linux
- 无输出
域名解析失败
表象
windows
Ping 请求找不到主机 a。请检查该名称,然后重试。
linux
Ping 请求找不到主机 a。请检查该名称,然后重试。
2015-02-09
build_dir/ 用于存放所有解压后的源码,并在当中编译
host/ 宿主环境下的编译工具源码
toolchain-* 交叉C编译器,C标准库,内核,二进制工具等组件源码
target-* 目标系统的软件包源码
staging_dir/ 用于存放安装已编译,为了进一步编译软件包,或产生固件镜像
host/ 最小化的Linux
toolchain-* 最小化的LInux,带有交叉C编译器,用于去编译剩余的固件部分
target…/root-ramips/ 最终的固件