Intelligence without ambition is a bird without wings.

2015-03-06
tcpdump

命令说明

tcpdump [option] <expression>

选项

  • -n

    不将IP转换为域名

  • -nn

    协议,IP,端口都保持数字形式,不转换为对应名字

  • -i interface

    指定接口

  • -A 使用ASCII解释数据包

  • -w file

    packet存储到文件(pcap格式),可用wireshark来分析

常用例子

  • DNS

    tcpdump port 53
    
  • ISAKMP

    tcpdump port 500
    
  • HTTP

    tcpdump -A tcp port 80
    
阅读此文

2015-03-05
windows-执行reg文件不要提问

regedit /s *.reg

阅读此文

2015-03-05
windows安装方式

使用NT6-HDD-Installer安装

步骤

参考其帮助信息

优点

  • 本地硬盘安装,速度快,花费时间少

缺点

  • 需要已有系统

参考

  1. http://www.itopdog.cn/utilities-operating-systems/windows/windows7-setup.html

使用win$man

步骤

  • 运行win$man
  • 安装

使用Win6Ins_v1.2.0.62

刻到U盘中

步骤

  • 使用UltraISO打开镜像文件
  • [启动] => [写入硬盘镜像]
  • 重启选择U盘启动

优点

  • 保证性好

缺点

  • 写入速度慢,win7大概需要15分钟

使用PE中的安装器软件

步骤

  • U盘制作为PE启动盘
  • 复制镜像文件到U盘或非系统分区中
  • 重启从U盘运行PE系统
  • 运行安装器

优点

  • 不需要主机已安装系统

缺点

  • 部分系统安装失败

解压运行setup.exe安装

步骤

  • 解压镜像文件到非系统分区
  • 运行setup.exe

优点

  • 操作快

缺点

  • 依赖现有系统,且32位不能安装64位系统

刻录到光盘中安装(基本不采用)

阅读此文

2015-03-04
strongswan搭建VPN

环境

  • VPS服务商:digitalocean

  • VPS系统:ubuntu-14.04-64

  • VPN:strongSwan-5.1.2

准备编译环境

apt-get install build-essential
aptitude install libgmp10 libgmp3-dev libssl-dev pkg-config libpcsclite-dev libpam0g-dev

编译安装

  • 下载源码

    wget http://download.strongswan.org/strongswan-5.1.2.tar.bz2
    
  • 解压

    tar -jxvf strongswan-5.1.2.tar.bz2 & cd strongswan-5.1.2
    
  • 生成Makefile

    ./configure --prefix=/usr --sysconfdir=/etc  --enable-openssl --enable-nat-transport --disable-mysql --disable-ldap  --disable-static --enable-shared --enable-md4 --enable-eap-mschapv2 --enable-eap-aka --enable-eap-aka-3gpp2  --enable-eap-gtc --enable-eap-identity --enable-eap-md5 --enable-eap-peap --enable-eap-radius --enable-eap-sim --enable-eap-sim-file --enable-eap-simaka-pseudonym --enable-eap-simaka-reauth --enable-eap-simaka-sql --enable-eap-tls --enable-eap-tnc --enable-eap-ttls
    
  • 编译安装

    make && make install
    

生成证书

根证书

  • 生成私钥

    ipsec pki --gen --outform pem > caKey.pem
    
  • 基于这个私钥自己签一个CA证书

    ipsec pki --self --in ca.pem --dn "C=CN, O=strongSwan, CN=107.170.222.166" --ca --outform pem > caCert.pem
    

服务器证书

  • 生成私钥

    ipsec pki –gen –outform pem > serverKey.pem

  • 基于这个私钥自己签一个CA证书

    ipsec pki –pub –in serverKey.pem | ipsec pki –issue –cacert caCert.pem –cakey caKey.pem –dn “C=CN, O=strongSwan, CN=107.170.222.166” –san=”107.170.222.166” –flag serverAuth –flag ikeIntermediate –outform pem > serverCert.pem

    注:

    -   VPS的公网IP即自己的VPS的IP
    

客户端证书

  • 生成私钥

    ipsec pki --gen --outform pem > clientKey.pem
    
  • 基于这个私钥自己签一个 CA 证书

    ipsec pki --pub --in clientKey.pem | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "C=CN, O=strongSwan, CN=client" --outform pem > clientCert.pem
    
  • 将该证书转换为P12格式

    openssl pkcs12 -export -inkey clientKey.pem -in clientCert.pem -name "client" -certfile caCert.pem -caname "strongSwan CA" -out clientCert.p12
    
  • 使用winscp等工具将该证书clientCert.p12下载到本地

安装证书

cp caCert.pem /etc/ipsec.d/cacerts/
cp serverCert.pem /etc/ipsec.d/certs/
cp serverKey.pem /etc/ipsec.d/private/

服务端配置

/etc/ipsec.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
config setup

conn %default
keyexchange=ikev2
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
dpdaction=clear
dpddelay=300s
rekey=no

conn windows7
left=%any
leftauth=pubkey
leftcert=serverCert.pem
leftid=@107.170.222.166
leftsubnet=0.0.0.0/0
right=%any
rightauth=eap-mschapv2
rightsourceip=10.11.1.0/24
#rightsendcert=never
eap_identity=%any

/etc/ipsec.secrets

1
2
: RSA serverKey.pem
qian : EAP "test"

/etc/strongswan.conf

1
2
3
4
5
6
7
8
9
charon {
dns1 = 8.8.8.8
load_modular = yes
plugins {
include strongswan.d/charon/*.conf
}
}

include strongswan.d/*.conf

配置iptables转发

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 10.11.1.0/24 -o eth0 -j MASQUERADE  #地址与上面地址池对应
iptables -A FORWARD -s 10.11.1.0/24 -j ACCEPT     #同上

Note:为避免VPS重启后NAT功能失效,可以把如上5行命令添加到 /etc/rc.local 文件中,添加在exit那一行之前即可。

重启strongSwan

ipsec restart

Note:可以追加--nofork选项,帮助调试

客户端配置

win7

导入证书到win7

参考https://wiki.strongswan.org/projects/strongswan/wiki/Win7Certs

建立VPN连接

参考https://wiki.strongswan.org/projects/strongswan/wiki/Win7Config

参考

  1. https://www.zeitgeist.se/2013/11/22/strongswan-howto-create-your-own-vpn/
  2. https://zh.opensuse.org/SDB:Setup_Ipsec_VPN_with_Strongswan
  3. http://www.csnc.ch/misc/files/publications/2009_scsII_andreas_steffen_VPNWindows7x.pdf
  4. https://gist.github.com/losisli/11081793
阅读此文

2015-03-02

阅读此文

2015-03-02
windows-_T和__T

定义

tchar.h

1
2
#define __T(x)      L ## x
#define _T(x) __T(x)

疑问

  • 为什么不直接定义#define _T(x) L ## x呢?

    因为在处理类似_T(__FILE__)时,会被拓展成L__FILE__,而L__FILE__则是未定义标识符

    • 为什么这样能做到?

      _T(__FILE__)先拓展__FILE__,在插入到该表达式,然后进行合并操作

参考

  1. http://cpp.ezbty.org/myfiles/boost/libs/wave/doc/macro_expansion_process.html
  2. https://gcc.gnu.org/onlinedocs/cppinternals/Macro-Expansion.html
  3. https://msdn.microsoft.com/zh-cn/library/09dwwt6y.aspx
  4. https://gcc.gnu.org/onlinedocs/cpp/Concatenation.html
阅读此文

2015-03-02
windows-UNICODE和_UNICODE作用

共性

这两个宏都是为了控制API是使用UNICODE版还是ANSI版。

  • 若定义了,则相关的API为*W版本(UNICODE版),如GetWindowTextW

  • 若未定义,则相关的API为*A版本(ANSI版),如GetWindowTextA

区别

  • UNICODE宏影响windows API

  • _UNICODE宏影响C运行库以及MFC,作用与UNICODE

参考

  1. http://blogs.msdn.com/b/oldnewthing/archive/2004/02/12/71851.aspx
  2. http://www.cnblogs.com/ini_always/archive/2011/05/20/2050517.html
阅读此文

2015-03-02
windows-WSA是什么意思

阅读此文

2015-02-28

阅读此文

2015-02-28
mbtowc

用来解决ANSI编码和wchar相关字符编码问题

功能

因为ANSI并不是一种固定的编码方式,其取决于当前LOCALE。

所以mbtowc根据LC_CTYPE来决定的编码方式,将其转换为wchar

程序默认启动LC_ALLC

使用场景

  • 标准IO

    当使用wchar提供的宽字节版的IO操作函数时,内部需要使用mbtowc族函数进行编码转换

参考

  1. http://www.cplusplus.com/reference/cstdlib/mbtowc/
  2. http://blog.sina.com.cn/s/blog_4723adba0100hnb4.html
阅读此文