something about wireshark

something about wireshark

wireshark

Capture过滤表达式

只抓取表达式 匹配成功 的包,对于不匹配的包不予抓取。
表达式为与 TCP dump 相同的表达式。

  • 查看手册

    packet filter syntax

    1
    man pcap-filter
  • 只关注80端口

    1
    tcp port 80
  • 只关注icmp协议

    1
    icmp

Display过滤表达式

已经抓取 的包,进行 过滤显示 ,只显示表达式 匹配成功 的包,对于不匹配的包不予显示。
与 Capture过滤表达式 不同, Display过滤表达式是wireshark package列表过滤表达式, 语法 不相同。
Display过滤表达式 语法更多

  • 相关文档

  • Display Filter Expression

    display filter 输入框处右击,选择 Display Filter Expression ,进入表达式编辑窗口,用于创建 复杂表达式

网络协议

数据包详情

  • MAC地址以太网数据包
  • Package Bytes 中十六进制内容为 0800 时,一般为标识 IPv4协议

专家模式

  • Expert Information 专家模式

    专家模式下,会将 对话 、错误信息、重复应答、警告等在列表中显示。更加方便查看。

远程抓包

  • SSH remote capture

    • 需要远程机器安装wireshark(桌面版/命令行版 tshark 都可), 远程执行二进制程序一般为dumpcap(由wireshark提供)。
    • 配置ssh相关内容,配置 远程网卡 等信息,配置远程二进制程序等。
    • 配置完成后,即可由本机wireshark通过ssh与远程wireshark二进制程序联动,实际工作由远程wireshark二进制程序负责。
    • 本地wireshark负责内容输出。
  • Tcpdump 远程抓包

    • 需要远程机器安装tcpdump作为远程执行二进制程序。

    • tcpdump 使用

      tcpdump 常用参数
      -D 列出本机可用网卡
      -i wlan0 指定使用wlan0网卡
      -c 20 指定抓取20个包
      -w filename 指定输出到文件
      -w - 指定标准输出
      ‘filter expressions’ 最后附加filter参数
      -l 指定逐行输出,不加缓存

      搭配ssh与本地wireshark使用:

      1
      2
      # 将远程tcpdump的标准输出作为wireshark的标准输入
      ssh root@123.124.125.126 "tcpdump -i wlan0 -c 20 -w - 'not port 22'" | wireshark -i -

      本地wireshark与远程tcpdump联动,实时抓包(不指定-c参数)

      1
      2
      3
      4
      # -k 参数指定本地wireshark实时抓包
      ssh root@123.124.125.126 "tcpdump -i wlan0 -w - 'not port 22'" | wireshark -k -i -
      # -l 参数指定远程tcpdump逐行输出,而非缓存到一定程度后分批输出
      ssh root@123.124.125.126 "tcpdump -l -i wlan0 -w - 'not port 22'" | wireshark -k -i -
  • tshark 远程抓包

    tcpdump类似的命令行。

    tshark 常用参数
    -D 列出本机可用网卡
    -i eth0 指定使用eth0网卡
    命令最后可以增加filter expressions

something about git

Git-Flow

不同分支各司其职

分支类型 命名规范 创建自 合并至 说明
main main - - 部署版本分支
develop develop - - 代码集成分支
feature feature/* develop develop 新功能分支
release release/* develop develop和master 新版本发布
hotfix hotfix/* master develop和master 生产环境中发现的紧急bug的修复

git command

  • 分支(branch)

    • 使用 checkout 创建分支

      1
      2
      # 基于main分支创建develop分支
      git checkout -b develop main
    • 使用 switch 创建分支

      1
      2
      # 基于当前分支创建feature/switch分支
      git switch -c feature/switch
    • 使用 switch 切换分支

      1
      2
      # 切换到feature/switch分支
      git switch feature/switch
    • 合并分支(merge)

      1
      2
      3
      4
      # 合并feature/switch分支到当前分支(develop)
      git switch develop
      # --no-ff => no-fast-forward
      git merge --no-ff feature/switch
  • 暂存区(stage)

    • 将内容添加至暂存区

      1
      2
      3
      4
      # 添加当前目录下所有文件更改:
      git add .
      # 添加file文件更改:
      git add file
    • 将文件的部分内容添加至暂存区

      1
      2
      3
      4
      5
      6
      7
      # 对于已经暂存的文件, 开启交互模式后选择需要暂存的hunk
      git add -p <filename>
      # ######################
      # 对于未暂存的文件 先将文件添加至暂存区,但是文件内容不暂存
      git add -N <filename>
      # 然后再开启交互模式选择需要暂存的hunk
      git add -p <filename>
    • 误添加至暂存区的内容 取消添加

      add 进暂存区的内容(还未提交),取消 add,但是本地文件内容不做删除。

      1
      2
      3
      4
      # 将 filename.txt 文件取消 `add`
      git reset HEAD -filename.txt
      # 将当前目录下所有已添加文件,取消`add`
      git reset HEAD .
  • 提交(commit)

    • 将暂存区内容做一次提交

      提交至本地仓库,正式纳入版本记录。
      一次提交,看作一次版本的 原子 操作。

      1
      2
      3
      git commit
      # 随之而来的vim提交窗口中补充commit的对应message。
      # message保持Angular规范

      Angular规范保持 <type>(<scope>): <subject> 格式
      具体要求如下:

      • 主要type
        • feat: 增加新功能
        • fix: 修复bug
      • 特殊type
        • docs: 只改动了文档相关的内容
        • style: 不影响代码含义的改动,例如去掉空格、改变缩进、增删分号
        • build: 构造工具的或者外部依赖的改动,例如webpack,npm
        • refactor: 代码重构时使用
        • revert: 执行git revert打印的message
      • 暂不使用type
        • test: 添加测试或者修改现有测试
        • perf: 提高性能的改动
        • ci: 与CI(持续集成服务)有关的改动
        • chore: 不修改src或者test的其余修改,例如构建过程或辅助工具的变动
    • 修改最后一次提交

      发现提交错了:少提交文件comment写错了时都可以使用git commit命令的--amend参数。

      • 修改comment

        1
        2
        3
        git commit --amend -m "new comment"
        # 或进入vim中编辑`comment`
        git commit --amend
      • 补充漏提交文件

        1
        2
        3
        4
        # 将文件添加至暂存区
        git add file
        # 附加提交
        git commit --amend

        删除多提交文件时,git rm file将文件从暂存区中移除,其它相同。

      • 修改提交时不修改comment

        1
        2
        # 多使用`--no-edit`参数,将以不修改`comment`的方式修改上次的提交内容
        git commit --amend --no-edit
  • 备份(stash)

    • 备份当前工作区内容

      将当前工作区内容保存到Git栈中,工作区回到最近提交状态。

      1
      git stash
    • 从Git栈中恢复最近一次保存的内容

      1
      git stash pop
    • 清空Git栈

      1
      git stash clear
  • 子模块(submodule)

    • 添加子模块

      可以将不同仓库的模块添加至本模块中。

      1
      2
      # git submodule add <url> <path>
      git submodule add git@github.com:username/otherModule.git ~/localModule/otherModule
    • 子模块内容获取

      克隆包含子模块的项目时,子模块信息会克隆下来,但其包含的项目文件未克隆。

      1
      2
      3
      4
      5
      6
      7
      8
      # 使用 init 进行 子模块初始化
      git submodule init
      # 使用 update 进行 子模块获取
      git submodule update
      # 使用 --recursive 参数,获取子模块及包含的"子...子"模块
      git submodule update --recursive
      # 使用 --remote 参数获取子模块最新版本到本地仓库中
      git submodule update --remote
    • 子模块删除

      不需要子模块时,删除相应子模块。

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      # 1. 删除本地仓库中子模块目录
      rm -rf path/to/remoteModule
      # 2. 删除.gitmodules中相关内容
      vim .gitmodules
      # 3. 删除 .git/config 文件中相关内容
      vim .git/config
      # 4. 删除子模块的追踪块
      rm -rf .git/module/remoteModule
      # 5. 删除子模块缓冲区
      git rm --cached remoteModule

git add -p 参数

选项 说明
y 暂存当前块
n 不暂存当前块
a 暂存当前块及剩余块
d 不暂存当前块及剩余块
g 选择并跳转至指定的块
/ 正则搜索指定的块
j 离开当前未定块,处理下一个 未定
J 离开当前未定块,处理下一个块
k 离开当前未定块,处理上一个 未定
K 离开当前未定块,处理上一个块
s 将当前块分为更小的块
e 手动编辑当前块
? help

something about github

  • 更改github邮箱导致贡献丢失
    1. 克隆目标仓库
      1
      2
      git clone git@github.com:username/target.git
      cd target/
    2. 制作脚本文件
      1
      touch run.sh
    3. 将以下内容添加至 run.sh
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      #!/bin/sh

      # OLD_EMAIL 为旧邮箱
      # CORRECT_NAME 为用户名
      # CORRECT_EMAIL 为新邮箱
      git filter-branch --env-filter '

      OLD_EMAIL="old_mail@xxx.com"
      CORRECT_NAME="correctName"
      CORRECT_EMAIL="new_mail@xxx.com"

      if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ]
      then
      export GIT_COMMITTER_NAME="$CORRECT_NAME"
      export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
      fi
      if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ]
      then
      export GIT_AUTHOR_NAME="$CORRECT_NAME"
      export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
      fi
      ' --tag-name-filter cat -- --branches --tags
    4. 在仓库中运行 run.sh
      1
      2
      3
      # 添加执行权限
      chmod u+x ./run.sh
      bash ./run.sh
    5. 检查git log 中对应邮箱是否更改
      1
      git log
    6. 提交至远端
      1
      git push --force --tags origin 'refs/heads/*'