tcpdump 基于mac地址抓取数据包

1、刚刚接触tcpdump时,常用tcpdump -i eth1 host 192.168.1.1 这个命令基于ip地址抓取数据包信息。

tcpdump -i eth1(接口名称) host 192.168.1.1(计算机IP地址)

2、在分析客户的网络中,经常会用到设备中自带的tcpdump软件,再配合PC端的wireshark软件来简单检查分析客户的网络情况。

这时候经常用到的tcpdump参数为:

tcpdump -i eth1 -nn(不做地址解析) -s0(抓取数据包长度不限制) -v(显示详细信息,需要显示更详细信息,可再加两个) -e (列出链路层头部) -c 20 (抓取指定个数的数据包,比如此处写20个,则为抓取20个包就停止)

如果不加-n参数的话,抓取的数据包会显示主机名或者域名信息,端口也会显示为相关的服务,如抓80端口,会显示为http

如果不加-s0参数的话,默认只抓取一部分(68字节),则数据包在wireshark中打开,会显示数据包不完整

3、在分析dhcp数据包的交互(IP地址下发),arp攻击等问题时,会涉及到链路层头部的抓取,也就是mac地址。抓取命令为

tcpdump -i eth1 ether src 6c:41:6a:ac:11:42 -c 10

在接口eth1上,抓取源mac地址为6c:41:6a:ac:01:42的数据包,个数为10

Mac安装mongodb

在Mac上安装首选使用brew进行安装

Brew是Mac上的套件管理器,类似于Linux系统中的yum或者apt-get,在安装软件的时候可以摆脱下载软件包再手动安装的繁琐操作,让安装软件变得更加的简单。

Homebrew

homebrew是Mac下的软件包管理工具,主要是填补brew缺失的软件包。提供安装软件,卸载软件等操作。

首先安装Homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

如果想要卸载brew,不知道卸载命令,可以再一次执行brew的安装命令,如果已经安装brew再次执行安装命令的话,会提示,告诉已经安装过brew了,如果想重复安装就执行卸载命令,然后根据终端的提示执行卸载命令就可以了。

brew的常用命令

1.更新brew

brew update

2.安装软件

brew install soft_name
// soft_name为所要安装的软件名

3.卸载软件

brew uninstall soft_name

4.显示使用brew安装的软件列表

brew list

5.更新软件

brew upgrade // 更新所有使用brew安装的软件
brew upgrade soft_name // 更新soft_name

6.查看哪些软件需要更新

brew outdated

7.查找软件

// 当记不清软件的名字的时候,可以使用search,只需要写出几个字母,就可以联想所有的结果并且输出
brew search

8.查找使用brew安装的东西,安装在哪里

brew --cache

安装mongodb

因为已经安装了brew,所以通过brew安装mongodb:

brew install mongodb

安装成功

未分类

输入mongo启动,会发现并没有成功

未分类

这是因为没有创建mongo的默认数据写入目录,需要自己手动创建

创建默认数据写入目录

注:默认目录为根目录下的data/db

mkdir -p /data/db

然后给刚刚创建的目录赋予可读写的权限

chown `id -u` /data/db

注:如果不使用命令行修改权限,可以前往/data文件夹右键点击显示简介,选择最下面的共享与权限,把所有权限改成读与写

如果不想使用mongo的默认目录,可以自己更改,使用–dbpath参数

mongo --dbpath dir_name

现在可以放心的启动mongodb了

mongod

然后再开启一个新的终端,执行

mongo

要先执行mongod再执行mongo,出现箭头表示链接成功

未分类

数据库错误

如果数据库启动不了,可能是由于未正常关闭导致的,可以删除/data/db文件夹中的mongod.lock文件,然后重新启动,如果还不可以,可以查杀一下进程:

ps -aef | grep mongo

然后根据进程ID杀掉进程,最后重启mongodb

MongoDB常用命令

1.查询库、查询表

show dbs  //查询所有的数据库

show collections   //查询当前数据库下的所有数据表123

2.建库和删库

use myDbs  //建立一个名为myDbs的数据库,当这个库存在时则是切换到这个数据库中去

use myDbs

db.dropDatabase();  //这两句是删除这个数据库12345

3.建表和删表

//表操作都是要先到一个数据库中去,通过use方法
db.myTable.insert({name:’hf’,age:20});  //在mongodb中在插入数据时即创建了改表,此时创建的是名为myTable的数据表
db.myTable.drop();  //删除myTable这个数据表
//如果没有指定数据库,表会创建在mongdb默认数据库test里1234

4.单表的增删改

db.myTable.insert({name:’hahaha’,age:12});  //新增

db.myTable.update({name:’hf’},{$set:{age:25}})  //修改

db.myTable.remove({name:’hf'});  //删除12345

5.查询

db.myTable.find();  //查询myTable中的所有数据

db.myTable.find().sort({age:1})  //根据age升续

db.myTable.find().count();  //查询

mac上配置使用virtualenv

1.安装virtualenv

$ sudo pip install virtualenv

2.安装virtualenvwrapper

$ sudo easy_install virtualenvwrapper 

3.新建一个放置虚拟环境的目录

$ mkdir ~/workspaces
$ cd ~/workspaces

4.设置环境变量

$ export WORKON_HOME=~/workspaces
$ source /usr/local/bin/virtualenvwrapper.sh

5.创建1-n个虚拟环境

$ mkvirtualenv env1
$ mkvirtualenv env2

成功后,路径前面会有(env2)

列出所有虚拟环境:

$ workon

切换到某个虚拟环境:

$ workon env1

退出虚拟环境:

$ deactivate

删除虚拟环境:

$ rmvirtualenv env2

切换到某个虚拟环境上之后,再使用pip在当前环境下进行安装

$ workon env1
$ pip install numpy

注意,每次进入虚拟环境前,都要先配置环境变量:

$ cd ~/workspaces
$ export WORKON_HOME=~/workspaces
$ source /usr/local/bin/virtualenvwrapper.sh
$ workon env1

启动虚拟环境后,pycharm配置项目的interpreter,找到对应虚拟环境下的python文件,比如:

~/workspaces/env1/bin/python2.7

Mac使用ssh公钥登录Linux

ssh登录Linux通常有两种方法:用户名密码登录、用户名公钥登录;使用用户名密码登录每次都要输入密码,相当麻烦,而使用用户名公钥登录则可以避免这个问题。

创建公钥私钥文件
打开本地终端,执行 ssh-keygen 命令创建密钥对:

ssh-keygen -t rsa -C  'your [email protected]'

-t 指定密钥类型,默认即 rsa ,可以省略
-C 设置注释文字,比如你的邮箱,可以省略

生成过程中会提示输入密码两次,如果不想在使用公钥的时候输入密码,可以回车跳过;
密钥默认保存位置在 ~/.ssh 目录下,打开后会看到私钥文件 id_rsa 和公钥文件 id_rsa.pub;

未分类

复制公钥至服务器
使用 scp 命令将本地的公钥文件 id_rsa.pub 复制到需要连接的Linux服务器:

scp ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub

如果修改了ssh默认连接端口的话,需要加上端口信息:

scp -P <端口号> ~/.ssh/id_rsa.pub <用户名>@<ip地址>:/home/id_rsa.pub

把公钥追加到服务器ssh认证文件中:

cat /home/id_rsa.pub >> ~/.ssh/authorized_keys

未分类

这时候在本地终端中使用用户名和ip登录就不需要密码了:

ssh <用户名>@<ip>

未分类

如果修改了ssh默认连接端口的话,需要加上端口信息:

ssh -p <端口号> <用户名>@<ip地址>

未分类

配置快捷登录
即使不用输入密码,这样每次登录还要输入用户名ip端口信息还是有点麻烦,我们可以配置ssh快捷登录更方便的登录Linux;
在本地 ~/.ssh/config 配置文件中添加ssh服务器信息,格式:

Host            alias            #自定义别名
HostName        hostname         #替换为你的ssh服务器ip或domain
Port            port             #ssh服务器端口,默认为22
User            user             #ssh服务器用户名
IdentityFile    ~/.ssh/id_rsa    #第一个步骤生成的公钥文件对应的私钥文件

未分类

这时候就可以使用配置文件中自定义的别名来登录了:

未分类

Mac下Nginx端口被占用问题

配置PHP过程中看到nginx的日志文件大小达到800多MB,里面的日志内容多是:nginx: [emerg] bind() to 0.0.0.0:80 failed (48: Address already in use)等端口占用信息,不免好奇。

Mac默认的Apache已经stop,再无其他应用、程序占用80端口。事实上,netstat分析也显示没有其他进程占用,但结果就摆在眼前,仍在不停输出。通过搜索发现,可能是IPv6所致。于是带上–with-ipv6选项重新编译,并监听ipv6地址,设为ipv6only=on。重新reload后,转为报错:nginx: [emerg] bind() to [::]:80 failed (48: Address already in use)。看来,网上的解决方案无济于事。

逐渐尝试升级Nginx、换端口,问题依旧,只是提示信息改为8080、8081等。看来,问题并不出在ipv6等配置上。

升级过程中,偶然的发现,sudo launchctl unload org.nginx.plist后,似乎报错停止了。于是,恢复配置,reload后,进行了unload测试。果不其然,事实证实如此。问题完美解决。

Mac下安装Python虚拟环境Virtualenv

virtualenv官方文档对virtualenv的解释是:

virtualenv is a tool to create isolated Python environments.

virtualenv可以创建一个独立的 Python 环境,每个项目都可以有一个专属环境,避免了不同各种包安装冲突以及版本要求问题,可以让你更方便快捷的切换不同 Python 环境,更高效的开发。

pip是 Python 自带的包管理工具。

安装 virtualenv

$ sudo pip install virtualenv

测试virtualenv是否安装成功:

$ mkdir ~/Pyenv
$ cd ~/Pyenv
$ mkvirtualenv env1

安装 virtualenvwrapper

Virtaulenvwrapper是对virtualenv的封装,可以更方便地管理虚拟环境。

$ sudo easy_install virtualenvwrapper

第一次安装完成后需要,先设置WORKON_HOME,即环境的存储路径,并且运行source /usr/local/bin/virtualenvwrapper.sh

$ export WORKON_HOME=~/Pyenv
$ source /usr/local/bin/virtualenvwrapper.sh

把export命令和source命令加入到~/.bash_profile中,每次打开终端就无需初始化了。

$ vim ~/.bash_profile
$ export WORKON_HOME=~/Pyenv
$ source /usr/local/bin/virtualenvwrapper.sh

创建虚拟环境

$ mkvirtualenv env2

环境创建之后,会自动进入该目录,并激活该环境,当前路径前面就会有 (env2)。

列出虚拟环境:

$ lsvirtualenv -b
env1
env2

切换虚拟环境:

$ workon env1

查看环境里安装了哪些包:

$ lssitepackages

复制虚拟环境:

$ cpvirtualenv env1 env3
Copying env1 as env3...

退出虚拟环境:

$ deactivate

删除虚拟环境:

$ rmvirtualenv env2
Removing env2...

至此,Python虚拟环境Virtualenv安装流程完毕,你可以在你自己的虚拟环境下随意安装各种包,不同项目间也不会相互影响了。