Skip to content
/ B4mNote Public

个人学习一些软件和语言所记录的笔记,同时供团队内人员学习和更新。

License

Notifications You must be signed in to change notification settings

B4m600/B4mNote

Repository files navigation

PhotoShop

  • Ctrl + T: 变换图形;
  • Ctrl + J: 复制选中区域;
  • Ctrl + G: 将选中图层编组;
  • Ctrl + I: 颜色反向;
  • Ctrl + 通道层: 选中(黑白)通道对应的区域;
    • Ctrl + Shift + I: 反选选区;
    • 图层->添加矢量蒙版: 根据通道层扣除背景;
      • Alt + 图层蒙版层: 进入蒙版;
  • Ctrl + Alt + 2: 高光选区;

PremierPro

[时间轴]

  • Shift + 左/右键头: 移动一个帧
  • M: 添加标记
  • I: 标记入点
  • O: 标记出点
    • ": 删除区域并拼接左右两侧;
  • Alt + 拖拽时间轴片段
    • 复制到拖拽处

[效果]

  • 粗糙边缘
    • 边框
      • 溶解消失动画
  • 不透明度
    • 混合模式
      • 叠加/柔光: 半透明效果
  • 闪光灯
    • 周期闪烁效果。

AfterEffects

  • Ctrl+Shift+C: 预合成
  • Ctrl+Shift+D: 裁剪所选素材

Animate

  • Enter: 播放
  • Ctrl+Enter: 窗口播放
  • F5: 插帧

Illustrator

[快捷键]

  • Shift+O: 画布
  • Ctrl+J: 为选中的两个锚点之间连线
  • Ctrl+[/Ctrl+]: 为选中的区域调整次序
  • Ctrl+G: 为选中的区域编组

[对象]

  • 封套扭曲
    • 用网格建立: 建立网格后可拖动网格顶点或者区块进行形变。
  • 路径
    • 添加锚点: 所选图形每两个锚点之间再加一个锚点。

[工具]

  • 吸管(I): 吸取颜色至整体。
    • 按住Shift: 只吸取颜色至当前选中颜色种类。

SublimeText

  • Alt+F3: 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑
  • Alt+Shift+1: 窗口分屏,恢复默认1屏
  • Alt+Shift+2: 左右分屏-2列
  • Alt+Shift+3: 左右分屏-3列
  • Alt+Shift+4: 左右分屏-4列
  • Alt+Shift+5: 等分4屏
  • Alt+Shift+8: 垂直分屏-2屏
  • Alt+Shift+9: 垂直分屏-3屏
  • Ctrl+/: 注释单行
  • Ctrl+: 打开搜索框,自动带#,输入关键字,查找文件中的变量名、属性名等
  • Ctrl+→: 向右单位性地移动光标,快速移动光标
  • Ctrl+←: 向左单位性地移动光标,快速移动光标
  • Ctrl+Alt+↑: 向上添加多行光标,可同时编辑多行
  • Ctrl+Alt+↓: 向下添加多行光标,可同时编辑多行
  • Ctrl+D: 选中光标所占的文本,继续操作则会选中下一个相同的文本
  • Ctrl+Enter: 在下一行插入新行
  • Ctrl+F: 打开底部搜索框,查找关键字
  • Ctrl+F2: 设置书签
  • Ctrl+G: 打开搜索框,自动带:,输入数字跳转到该行代码
  • Ctrl+J: 合并选中的多行代码为一行
  • Ctrl+K+0: 展开所有折叠代码
  • Ctrl+K+B: 开启/关闭侧边栏
  • Ctrl+K+K: 从光标处开始删除代码至行尾
  • Ctrl+K+L: 转换小写
  • Ctrl+K+U: 转换大写
  • Ctrl+L: 选中整行,继续操作则继续选择下一行,效果和
  • Ctrl+M: 光标移动至括号内结束或开始的位置
  • Ctrl+P: 打开搜索框
  • Ctrl+PageDown: 向左切换当前窗口的标签页
  • Ctrl+PageUp: 向右切换当前窗口的标签页
  • Ctrl+R: 打开搜索框,自动带@,输入关键字,查找文件中的函数名
  • Ctrl+H: 替换。
  • Ctrl+Shift+/: 注释多行
  • Ctrl+Shift+[: 选中代码,按下快捷键,折叠代码
  • Ctrl+Shift+]: 选中代码,按下快捷键,展开代码
  • Ctrl+Shift+↑: 将光标所在行和上一行代码互换
  • Ctrl+Shift+→: 向右单位性地选中文本
  • Ctrl+Shift+↓: 将光标所在行和下一行代码互换
  • Ctrl+Shift+←: 向左单位性地选中文本
  • Ctrl+Shift+D: 复制光标所在整行,插入到下一行
  • Ctrl+Shift+Enter: 在上一行插入新行
  • Ctrl+shift+F: 在文件夹内查找,与普通编辑器不同的地方是sublime允许添加多个文件夹进行查找,略高端,未研究
  • Ctrl+Shift+K: 删除整行
  • Ctrl+Shift+L: 先选中多行,再按下快捷键,会在每行行尾插入光标,即可同时编辑这些行
  • Ctrl+Shift+M: 选择括号内的内容
  • Ctrl+Shift+P: 打开命令框
  • Ctrl+T: 左右字母互换
  • Ctrl+Tab: 按文件浏览过的顺序,切换当前窗口的标签页
  • Ctrl+U: 自动读取图片宽高
  • Ctrl+Y: 恢复撤销
  • Ctrl+Z: 撤销
  • Esc: 退出光标多行选择,退出搜索框,命令框等
  • F11: 全屏模式
  • F6: 单词检测拼写
  • shift+↑: 向上选中多行
  • Shift+→: 向右选中文本
  • shift+↓: 向下选中多行
  • Shift+←: 向左选中文本.
  • Shift+F11: 免打扰模式
  • Shift+Tab: 向左缩进

Blender

  • Shift + A: 添加;
  • Shift + D: 克隆;
  • Ctrl + P: 设置父级;
  • R: 旋转;
  • G: 移动;
  • S: 缩放;

[编辑模式]

  • L:选中当前鼠标指向的物体;
  • Ctrl+J: 合并所选内容;
  • E
    • 挤出下一个骨骼;
    • 挤出选中的面;
  • Alt + E: 挤出相关菜单;
    • 重复挤出;
    • 旋绕;
    • [选中面时]
      • 挤出面;
      • 沿法相挤出面;
      • 挤出各个面;
      • 挤出流形;
  • P: 分离选中内容;

[姿态模式]

  • Shift + I: 添加IK;

[Bool Tool]

  • Ctrl + Shift + B: 菜单;

Vim

[按键指令]

  • gg
    • 光标移至首行
  • G
    • 光标移至末行
  • u
    • 撤回
    • Ctrl + R
      • 取消撤回
  • i
    • 插入文本模式
    • 在光标前插入文本
  • a
    • 插入文本模式
    • 在一行后添加文本
  • v
    • 可视选择模式
    • D
      • 删除选择内容
  • D
    • 从当前光标位置删除至行尾
  • delete
    • 删除光标中的字符;

[:指令]

  • :q
  • :q!
    • 强制退出
  • :w
  • :wq
  • :set encoding=utf-8
    • 设置编码为UTF-8
  • :set fileencoding=utf-8
    • 设置文件编码为UTF-8
  • :set backspace=2
    • 设置backspace按键可以删除任何字符
  • :%!xxd
    • 将二进制文件的乱码内容翻译为二进制
    • :%!xxd -r
      • 返回至乱码内容
  • :goto 10
    • 跳转到第10个字
  • :10
    • 跳转到第10行

Git

[配置]

  • ssh-keygen -t rsa -C '2656980584@qq.com'
    • 生成公钥;
    • 运行后ls ~/.ssh/中包含id_rsa.pub;
    • cat ~/.ssh/id_rsa.pub查看公钥内容;
  • git config --global user.name "用户名"
  • git config -- global user.email "邮箱"
  • git config --global http.postBuffer 1048576000
    • 增大缓存容量,单位是Byte, 1048576000即1G。
  • ssh -T git@gitte.com || ssh -T git@github.com
    • 建立连接;
    • Received disconnect from 162.241.169.11 port 22:2: Too many authentication failures Disconnected from 162.241.169.11 port 22
      • /etc/ssh/sshd_config中MaxAuthTries 10修改大些;

[指令]

  • git init

    • 初始化仓库;
  • git add

    • 将文件添加到本地仓库提交缓存; git add test.txt;
  • -- all: 所有改动文件都添加到缓存区;

  • git restore

    • 修复指定文件: git restore test.txt;
    • 从某个提交(例如 HEAD~1)中恢复文件: git restore --source=HEAD~1 file.txt
  • git commit

    • -m: 将提交描述信息作为参数; git commit -m "添加了新文件\"test.txt\"。 "; git commit test.txt -m "更新单独文件";
    • --amend: 改写提交信息; git --amend;
  • git log

    • 查看日志;
    • --stat: 看到每次提交的简略的统计信息;
    • -- graph
    • --pretty=oneline
    • --abbrev-commit
  • git status

    • 查看文件是否被改动;
  • git checkout

    • 切换分支; git checkout master;

    • --: 将文件撤销到最近一次修改的状态; git checkout -- test.txt;

  • git rm

    • 删除文件;
    • -r: 删除文件夹;
    • --cached: 仅删除缓存, 保留原文件;
  • git reset

    • 清空缓存区;
  • git reflog

    • 查看提交历史;
  • git merge

    • 合并分支; git merge dev;
  • git branch

    • -a: 查看分支; git branch -a master;
    • -D: 删除本地分支; git branch -D tmp;
    • -m: 修改分支名称; git branch -m dev newdev;
  • git stash

    • 保存当前工作状态;
    • list: 查看当前存储了多少工作状态; git stash list;
  • git fetch

    • 拉取远程所有分支;
    • 拉取指定分支最新内容; git fetch dev;
  • git diff

    • 查看不同分支文件差异; git diff master dev test.txt;
  • git clone

    • 克隆默认分支;
    • -b: 选择分支克隆; git clone -b dev;
    • fatal: unable to access 'https://github.com/B4m600/Sheeps/': SSL certificate problem: unable to get local issuer certificate
      • git config --global http.sslverify false
  • git push

    • git push <远程主机名> <本地分支名>:<远程分支名>;
    • 如果本地分支名与远程分支名相同: git push <远程主机名> <本地分支名>;
    • --force: 如果本地版本与远程版本有差异,但又要强制推送;
    • --delete: 删除主机的分支; git push origin --delete master;
    • fatal: The current branch master has no upstream branch.
      • **原因:**没有将本地的分支与远程仓库的分支进行关联
      • git branch
        • master
      • git branch -a
        • remotes/origin/master
      • 这时由于远程仓库太多,且分支较多。在默认情况下,git push时一般会上传到origin下的master分支上,然而当repositorybranch过多,而又没有设置关联时,git就会产生疑问,因为它无法判断你的push目标。
      • 解决:
        • git push --set-upstream origin master
        • git push -u origin master

MySql

[Patterns]

  • like

    • like '王%' -> "王五六七八..."
    • like '张_' -> "张三"; "张四"
  • is null

  • is not null

    • SELECT * from B4m600 WHERE Name IS NOT NULL;
  • primary key

    • 约束唯一标识数据库表中的每条记录。
    • 主键必须包含唯一的值。(定义主键)
    • 主键列不能包含 NULL 值。
    • 每个表都应该有一个主键,并且每个表只能有一个主键。
    create table C
    (Cno Char(4) primary key,
    Cname Char(20),
    Cheadteacher Char(20)unique not null,
    Cmonitor Char(20)
    ); 
  • foreign key

    • 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
    • Example-Person表:
    Id_P LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street
    • Example-Order表:
    Id_O OrderNo Id_P
    1 77895 3
    2 44678 3
    3 22456 1
    4 24562 1
    • "Persons" 表中的 "Id_P" 列是 "Persons" 表中的 PRIMARY KEY。
    • "Orders" 表中的 "Id_P" 列是 "Orders" 表中的 FOREIGN KEY。
    CREATE TABLE Orders
    (
    Id_O int NOT NULL,
    OrderNo int NOT NULL,
    Id_P int,
    PRIMARY KEY (Id_O),
    FOREIGN KEY (Id_P) REFERENCES Persons(Id_P)
    )
    CREATE TABLE Orders
    (
    Id_O int NOT NULL PRIMARY KEY,
    OrderNo int NOT NULL,
    Id_P int FOREIGN KEY REFERENCES Persons(Id_P)
    )
  • unique

    • 唯一键,用来保证对应的字段中的数据唯一; 用来保证对应的字段中的数据唯一的;
    • 约束唯一标识数据库表中的每条记录; 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证; PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
    • 每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。
    • 唯一键允许字段数据为NULL,NULL可以有多个(NULL不参与比较)。
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    UNIQUE (Id_P)
    )
    CREATE TABLE Persons
    (
    Id_P int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )
  • check ({condition})

    • 对单个列定义 CHECK 约束,那么该列只允许特定的值; 对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    CHECK (Id_P>0)
    )
    CREATE TABLE Persons
    (
    Id_P int NOT NULL CHECK (Id_P>0),
    )
  • in

    • IN 操作符允许我们在 WHERE 子句中规定多个值。
    SELECT column_name(s)
    FROM table_name
    WHERE column_name IN (value1,value2,...)
    • 选取姓氏{LastName}为 Adams 和 Carter 的人:
    Id LastName FirstName Address City
    1 Adams John Oxford Street London
    2 Bush George Fifth Avenue New York
    3 Carter Thomas Changan Street
    SELECT * FROM Persons
    WHERE LastName IN ('Adams','Carter')
  • cross join: 笛卡尔乘积;

SHOW / USE

  • show databases;
    • 显示全部数据库
  • use 数据库名;
    • 指定数据库
  • show tables;
    • 显示当前库中的全部表
    • show tables from {指定库};
      • 显示指定库中的全部表
  • show columns from {指定表};
    • 显示当前表中的结构

SELECT

  • select * from {表名}

    • 查看表的全部信息;
    • where {参数名}={指定值} (AND ...);
    • where {姓名} like {李_};
      • 匹配李+一个字;
    • where {姓名} like {李%};
      • 匹配李+任意长度内容;
    • order by {参数名} {ASC|DESC};
      • ASC:升序(默认);
      • DESC:降序;
  • select {function}({参数名}) from {表名};

    • AVG:平均值; 参数为数值型;
    • MAX:最大值;
    • MIN:最小值;
    • SUM:求和; 参数为数值型;
    • COUNT:参数对应的值的个数;
    # 查询所有学生的姓名和性别,并按照性别分组,计算每组学生人数。
    SELECT Sname, Ssex, COUNT(*) as StudentCount FROM Student GROUP BY Ssex;
    # 查询所有学生的姓名和成绩,并按照成绩降序排列,取出前10个。
    SELECT Sname, Grade FROM Student,SC WHERE Student.Sno = SC.Sno ORDER BY Grade DESC LIMIT 10;
    # 查询所有学生的姓名和成绩,并筛选出成绩大于等于80分的学生。
    SELECT Sname, Grade FROM Student,SC WHERE Student.Sno = SC.Sno AND SC.Grade >=80;
  • select * from {表A} cross join {表B} / select * from {表A}, {表B};

    • 笛卡尔乘积;
  • select A.id,A.name,B.age from {表A} A join {表B} B on A.id = B.id;

  • SHOW FUNCTION STATUS; / SELECT * FROM information_schema.routines WHERE routine_type = 'FUNCTION';

UNION / order by / group by

  • 将多个select语句(两个或多个)的结果组合到一个结果集中,并删除结果集中的重复数据。

  • union中的每个查询必须拥有相同的列数。

  • select column,…from table1 union select column,…from table2;

  • select name,sec,age from pte union select 1,2,3 from pte;

  • order by

    • 用来判断表的列数(二分法)。
    • select * from pte order by 2;
  • group by

    • select id,AVG(grade) from sc where grade > 80 group by id;
      • id重复时根据id分组;

CREATE

  • create database {数据库名};

    • 建立数据库;
    • create datebase {数据库名} character set utf8;
      • 设置字符编码;
  • create table {表名}({字段1} {字段类型1}, {字段2} {字段类型2}...);

    • create table {表名}(pid INT, name CHAR(20), price INT);
    • show create table {表名};
      • 显示已创建的表;
  • create trigger {触发器名} {INSERT|UPDATE|DELETE} {检测对象} ON {表名} ... ;

    DELIMITER //
    CREATE TRIGGER [触发器的名字]
    [触发器执行时机] [触发器监测的对象]
    ON [表名]
    FOR EACH ROW [触发器主体代码]//
    DELIMITER ;
    
    DELIMITER //:MySQL 默认分隔符是; 但在触发器中,我们使用 // 表示触发器的开始与结束。
    [触发器的名字]:这里填写触发器的名字
    [触发器执行时机]:这里设置触发器是在关键动作执行之前触发,还是执行之后触发。
    [触发器监测的对象]:触发器可以监测 INSERT、UPDATE、DELETE 的操作;
    当监测的命令对触发器关联的表进行操作时,触发器就被激活了。
    [表名]:将这个触发器与数据库中的表进行关联,触发器定义在表上,也附着在表上,如果这个表被删除了,那么这个触发器也随之被删除。
    FOR EACH ROW:这句表示只要满足触发器触发条件,触发器都会被执行,也就是说带上这个参数后,触发器将监测每一行对关联表操作的代码,一旦符合条件,触发器就会被触发。
    [触发器主体代码]:这里是当满足触发条件后,被触发执行的代码主体。这里可以是一句 SQL 语句,也可以是多行命令。如果是多行命令,那么这些命令要写在 BEGIN...END 之间。
    
  • create schema {模式名} authorization {用户名};

    • 为用户WANG定义一个学生-课程模式S-T:
      • CREATE SCHEMA "S-T" AUTHORIZATION WANG;
    • 为用户ZHANG创建了一个模式TEST,并且在其中定义一个表TABE1;
    CREATE SCHEMA TEST AUTHORIZATION ZHANG
    CREATE TABLE TABE1 ( COL1 SMALLINT,
    COL2 INT,
    COL3 CHAR(20),
    COL4 NUMERIC(10,3),
    COL5 DECIMAL(5,2)
    );
  • CREATE USER '{新用户名}'@'localhost' IDENTIFIED BY '{密码}';

    • CREATE USER 'SHBMS_USER'@'localhost' IDENTIFIED BY 'your_password';
    • 创建用户。
    • GRANT ALL PRIVILEGES ON shbms_db.* TO 'SHBMS_USER'@'localhost';
    • 授权用户至指定数据库。

DROP

  • drop schema {模式名} {CASCADE|RESTRICT}

    • CASCADE(级联)

      • 删除模式的同事把该模式中所有的数据库对象全部删除
    • RESTRICT(限制)

      • 如果该模式中定义了下属的数据库对象(如表、视图等),则拒绝该删除语句的执行
    • 删除模式ZHANG,同时该模式中定义的表TABE1也被删除:

      • DROP SCHEMA ZHANG CASCADE;

ALTER

ALTER TABLE table
ADD [COLUMN] column_name_1 column_1_definition [FIRST|AFTER existing_column],
ADD [COLUMN] column_name_2 column_2_definition [FIRST|AFTER existing_column],
...;
  • alter table MyTB add {新字段} {新字段类型};
    • 给表添加字段;
  • alter table MyTB drop price;
    • 给表删除字段;
  • alter table MyTB modify {旧字段} {新字段类型};
    • 修改字段类型;
  • alter table MyTB change {旧字段名} {新字段名} {新字段类型}
    • 修改字段名和类型;
  • 在一个表中增加一列:
    • alter table TABLE_NAME add column NEW_COLUMN_NAME varchar(20) not null ;

INSERT

  • insert into {表名}({列名1}, {列名2}, {列名3}...)

    • values({列值1},{列值2},{列值3},...);
    • 列名与值一一对应即可,顺序可以与表中的顺序不一致;
    • 列名可以只选部分;
    insert into fruit(id,name,price,num)
    values(1,"香蕉",3.11,10);
    insert into fruit
  • insert into {表名}

    • values({列值1},{列值2},{列值3},...);
    • 默认填写所有列名;

Truncate / Drop / Delete

  • truncate table {表名}

    • 删除表中的所有数据,释放空间,但是保留表的结构,不能与where一起使用,删除数据后不可以回滚。
  • drop

    • drop table {表名}
      • 将表的数据直接删除,以及删除表的结构同时释放空间,删除数据后无法找回。
  • delete

    • 用于删除表中的行。
    DELETE FROM {table_name}
    WHERE {condition};

Update

  • Update {表名} set {属性} = {value} [where ...]

[BUG]

[中文乱码]

locale -a
-->C
   C.UTF-8
   POSIX #默认
env LANG=C.UTF-8 /bin/bash
# 修改Linux默认字符集
DEFAULT CHARACTER SET utf8;
  • 创建表时设置默认字符集
    • create table Test(num INT) DEFAULT CHARACTER SET utf8;
  • 创建数据库时设置默认字符集
    • create database Test DEFAULT CHARACTER SET utf8;

[CMD]

  • flush privileges

  • source C:\Users\LEGION\Desktop\test.sql

  • create user root@'%' identified by '123456';
    grant all privileges on *.* to root@'%' with grant option;
  • desc {表名}

mysql> desc goods_book;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | int  | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.02 sec)

SqlMap

sqlmap -u

  • sqlmap -u url -dbs
    • 查找全部库(暴库)
  • sqlmap -u url --current-user
    • 当前使用的账户
  • sqlmap -u url -b
    • 检索DBMS Banner
  • sqlmap -u url --current-db
    • 当前的数据库
  • sqlmap -u url --hostname
    • 当前主机名
  • sqlmap -u url --is-dba
    • 检测当前用户是否为数据库管理员
  • sqlmap -u url -passwords
    • MySql的登录账户和密码
  • sqlmap -u url -D 指定数据库名 -tables 指定数据库名
  • sqlmap -u url --dbms=数据库名 --current-db

Python

Linux

  • clear
  • pwd
    • 工作目录
  • chmod
    • chmod +x Demo.exe
  • cat
    • 查看文本文件内容
  • du
    • du -sh
      • 以MB为单位查看当前目录的大小。
  • rm
    • -r: 递归删除
    • -f: 不要求确认

Minecraft

  • /set time day
  • /give [name] [item]
  • /spawnpoint [name]
  • /weather clear
  • /xp add [name]

Hydra

  • hydra -L u.txt -P p.txt {ip} telnet
  • hydra -l {用户名} -p {密码字典} -t {线程} -vV -e ns {ip} ssh
  • hydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh
  • -l 登录名 如:-l root
  • -L 读取登录文件名 如:-L D:\login.txt
  • -p 密码 如:-p 123456
  • -P 读取密码文件名,如 -P D:\passwords.txt
  • -C 冒号分隔“登录:通行证”格式
  • -M 要攻击的服务器列表,每行一个条目,“:”指定端口
  • -t 并行运行任务数(每个主机,默认值:16),如 -t 10

Nmap

  • nmap {ip}
  • nmap {ip1} {ip2}
    • 扫描多个目标。
  • nmap -vv {ip} [|] nmap -v {ip}
    • 详细描述输出扫描。
  • nmap -p 3389,20-200 {ip}
    • 扫描3389端口和20至200之间的端口
  • nmap 192.168.227.1/24 -exlude 192.168.227.1
    • 扫描除去某个ip外的所有子网主机
  • nmap 10.130.1.1/24 -excludefile gov.txt
    • 扫描除过某一个文件中的ip外的子网主机
  • nmap -sL 192.168.227.1/24
    • 显示扫描的所有主机的列表
  • nmap -sP {ip}
    • ping扫描。
    • nmap -sP 192.168.227.1-255
      • 扫描内网的一个ip范围,用来发现内网的主机。
  • nmap -sS {ip}
    • SYN半开放扫描。
    • 不需要通过完整的握手,就能获得远程主机的信息。
    • Nmap发送SYN包到远程主机,但是它不会产生任何会话.因此不会在目标主机上产生任何日志记录,因为没有形成会话。
    • 扫描类型默认Tcp SYN,需要root/administrator权限。
  • nmap -sT {ip}
    • TCP扫描。
    • 只适用于找出TCP和UDP端口。
  • nmap -sU {ip}
    • UDP扫描。
  • nmap -sF {ip}
    • FIN标志的数据包扫描。
  • nmap -sV {ip}
    • Version版本检测扫描。
    • 用来扫描目标主机和端口上运行的软件的版本。
    • 速度较慢。
  • nmap -O {ip}
    • OS操作系统类型探测。

[脚本]

  • nmap --script vuln {ip}

    • 扫描服务器的常见漏洞。
  • nmap --script ftp-anon {ip}

    • 检查FTP是否开启匿名登陆。
    nmap --script ftp-anon <target>
    PORT   STATE SERVICE
    21/tcp open  ftp
    | ftp-anon: Anonymous FTP login allowed (FTP code 230)
    | -rw-r--r--   1 1170     924            31 Mar 28  2001 .banner
    | d--x--x--x   2 root     root         1024 Jan 14  2002 bin
    | d--x--x--x   2 root     root         1024 Aug 10  1999 etc
    | drwxr-srwt   2 1170     924          2048 Jul 19 18:48 incoming [NSE: writeable]
    | d--x--x--x   2 root     root         1024 Jan 14  2002 lib
    | drwxr-sr-x   2 1170     924          1024 Aug  5  2004 pub
    |_Only 6 shown. Use --script-args ftp-anon.maxlist=-1 to see all.
  • nmap --script=mysql-brute {ip}

    • 对MySQL进行暴破解。
    nmap --script=mysql-brute <target>
    3306/tcp open  mysql
    | mysql-brute:
    |   Accounts
    |     root:root - Valid credentials
  • nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt {ip}

    • 对MsSQL进行暴破解。
    nmap -p 1433 --script ms-sql-brute --script-args userdb=customuser.txt,passdb=custompass.txt <host>
    | ms-sql-brute:
    |   [192.168.100.128\TEST]
    |     No credentials found
    |     Warnings:
    |       sa: AccountLockedOut
    |   [192.168.100.128\PROD]
    |     Credentials found:
    |       webshop_reader:secret => Login Success
    |       testuser:secret1234 => PasswordMustChange
    |_      lordvader:secret1234 => Login Success
  • nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL {ip}

    • 对Oracle数据库进行暴破解。
    nmap --script oracle-brute -p 1521 --script-args oracle-brute.sid=ORCL <host>
    PORT     STATE  SERVICE REASON
    1521/tcp open  oracle  syn-ack
    | oracle-brute:
    |   Accounts
    |     system:powell => Account locked
    |     haxxor:haxxor => Valid credentials
    |   Statistics
    |_    Perfomed 157 guesses in 8 seconds, average tps: 19
  • nmap -p 5432 --script pgsql-brute {ip}

    • 对pgSQL的暴力破解。
    nmap -p 5432 --script pgsql-brute <host>
    5432/tcp open  pgsql
    | pgsql-brute:
    |   root:<empty> => Valid credentials
    |_  test:test => Valid credentials
  • nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s {ip}

    • 对SSH进行暴力破解。
    nmap -p 22 --script ssh-brute --script-args userdb=users.lst,passdb=pass.lst --script-args ssh-brute.timeout=4s <target>
    22/ssh open  ssh
    | ssh-brute:
    |  Accounts
    |    username:password
    |  Statistics
    |_   Performed 32 guesses in 25 seconds.
  • nmap --script dns-brute {ip}

    • 利用DNS进行子域名暴力破解。
    nmap --script dns-brute www.baidu.com
    λ nmap --script dns-brute www.baidu.com                      
    
    Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 13:12 ?
    Nmap scan report for www.baidu.com (180.97.33.108)           
    Host is up (0.018s latency).                                 
    Other addresses for www.baidu.com (not scanned): 180.97.33.10
    Not shown: 998 filtered ports                                
    PORT    STATE SERVICE                                        
    80/tcp  open  http                                           
    443/tcp open  https                                          
    
    Host script results:                                         
    | dns-brute:                                                 
    |   DNS Brute-force hostnames:                               
    |     admin.baidu.com - 10.26.109.19                         
    |     mx.baidu.com - 61.135.163.61                           
    |     svn.baidu.com - 10.65.211.174                          
    |     ads.baidu.com - 10.42.4.225                                                
    
    Nmap done: 1 IP address (1 host up) scanned in 92.64 seconds
  • nmap --script http-vmware-path-vuln -p 80,443,8222,8333 {ip}

    • 检查VMWare ESX,ESXi和服务器(CVE-2009-3733)中的路径遍历漏洞。
    nmap --script http-vmware-path-vuln -p 80,443,8222,8333 <host>
    | http-vmware-path-vuln:
    |   VMWare path traversal (CVE-2009-3733): VULNERABLE
    |     /vmware/Windows 2003/Windows 2003.vmx
    |     /vmware/Pentest/Pentest - Linux/Linux Pentest Bravo.vmx
    |     /vmware/Pentest/Pentest - Windows/Windows 2003.vmx
    |     /mnt/vmware/vmware/FreeBSD 7.2/FreeBSD 7.2.vmx
    |     /mnt/vmware/vmware/FreeBSD 8.0/FreeBSD 8.0.vmx
    |     /mnt/vmware/vmware/FreeBSD 8.0 64-bit/FreeBSD 8.0 64-bit.vmx
    |_    /mnt/vmware/vmware/Slackware 13 32-bit/Slackware 13 32-bit.vmx
  • nmap --script vmware-version -p 443 {ip}

    • 查询VMware服务器(vCenter,ESX,ESXi)SOAP API以提取版本信息。
    λ nmap --script vmware-version -p 443 10.0.1.4
    
    Starting Nmap 7.50 ( https://nmap.org ) at 2017-07-25 12:26 ?D1ú±ê×?ê±??
    Nmap scan report for 10.0.1.4
    Host is up (0.0019s latency).
    
    PORT    STATE SERVICE
    443/tcp open  https
    | vmware-version:
    |   Server version: VMware ESXi 6.5.0
    |   Build: 4887370
    |   Locale version: INTL 000
    |   OS type: vmnix-x86
    |_  Product Line ID: embeddedEsx
    Service Info: CPE: cpe:/o:vmware:ESXi:6.5.0
    
    Nmap done: 1 IP address (1 host up) scanned in 6.28 seconds

[参数]

  • -iL filename 从文件中读取待检测的目标,文件中的表示方法支持机名,ip,网段
  • -iR hostnum 随机选取,进行扫描.如果-iR指定为0,则是无休止的扫描
  • --exclude host1[, host2] 从扫描任务中需要排除的主机
  • --exculdefile exclude_file 排除文件中的IP,格式和-iL指定扫描文件的格式相同
  • -sL 仅仅是显示,扫描的IP数目,不会进行任何扫描
  • -sn ping扫描,即主机发现
  • -Pn 不检测主机存活
  • -PS/PA/PU/PY[portlist] TCP SYN Ping/TCP ACK Ping/UDP Ping发现
  • -PE/PP/PM 使用ICMP echo, timestamp and netmask 请求包发现主机
  • -PO[prococol list] 使用IP协议包探测对方主机是否开启
  • -n/-R 不对IP进行域名反向解析/为所有的IP都进行域名的反响解析
  • -sS/sT/sA/sW/sM TCP SYN/TCP connect()/ACK/TCP窗口扫描/TCP Maimon扫描
  • -sU UDP扫描
  • -sN/sF/sX TCP Null,FIN,and Xmas扫描
  • --scanflags 自定义TCP包中的flags
  • -sI zombie host[:probeport] Idlescan
  • -sY/sZ SCTP INIT/COOKIE-ECHO 扫描
  • -sO 使用IP protocol 扫描确定目标机支持的协议类型
  • -b “FTP relay host” 使用FTP bounce scan
  • -p 特定的端口 -p80,443 或者 -p1-65535
  • -p U:PORT 扫描udp的某个端口, -p U:53
  • -F 快速扫描模式,比默认的扫描端口还少
  • -r 不随机扫描端口,默认是随机扫描的
  • --top-ports "number" 扫描开放概率最高的number个端口,出现的概率需要参考nmap-services文件,ubuntu中该文件位于/usr/share/nmap.nmap默认扫前1000个
  • --port-ratio "ratio" 扫描指定频率以上的端口
  • -sV 开放版本探测,可以直接使用-A同时打开操作系统探测和版本探测
  • --version-intensity "level" 设置版本扫描强度,强度水平说明了应该使用哪些探测报文。数值越高,服务越有可能被正确识别。默认是7
  • --version-light 打开轻量级模式,为--version-intensity 2的别名
  • --version-all 尝试所有探测,为--version-intensity 9的别名
  • --version-trace 显示出详细的版本侦测过程信息
  • -sC 根据端口识别的服务,调用默认脚本
  • --script=”Lua scripts” 调用的脚本名
  • --script-args=n1=v1,[n2=v2] 调用的脚本传递的参数
  • --script-args-file=filename 使用文本传递参数
  • --script-trace 显示所有发送和接收到的数据
  • --script-updatedb 更新脚本的数据库
  • --script-help=”Lua script” 显示指定脚本的帮助
  • -O 启用操作系统检测,-A来同时启用操作系统检测和版本检测
  • --osscan-limit 针对指定的目标进行操作系统检测(至少需确知该主机分别有一个open和closed的端口)
  • --osscan-guess 推测操作系统检测结果,当Nmap无法确定所检测的操作系统时,会尽可能地提供最相近的匹配,Nmap默认进行这种匹配 防火墙/IDS躲避和哄骗
  • -f; --mtu value 指定使用分片、指定数据包的MTU.
  • -D decoy1,decoy2,ME 使用诱饵隐蔽扫描
  • -S IP-ADDRESS 源地址欺骗
  • -e interface 使用指定的接口
  • -g/ --source-port PROTNUM 使用指定源端口
  • --proxies url1,[url2],... 使用HTTP或者SOCKS4的代理
  • --data-length NUM 填充随机数据让数据包长度达到NUM
  • --ip-options OPTIONS 使用指定的IP选项来发送数据包
  • --ttl VALUE 设置IP time-to-live域
  • --spoof-mac ADDR/PREFIX/VEBDOR MAC地址伪装
  • --badsum 使用错误的checksum来发送数据包
  • -oN 将标准输出直接写入指定的文件
  • -oX 输出xml文件
  • -oS 将所有的输出都改为大写
  • -oG 输出便于通过bash或者perl处理的格式,非xml
  • -oA BASENAME 可将扫描结果以标准格式、XML格式和Grep格式一次性输出
  • -v 提高输出信息的详细度
  • -d level 设置debug级别,最高是9
  • --reason 显示端口处于带确认状态的原因
  • --open 只输出端口状态为open的端口
  • --packet-trace 显示所有发送或者接收到的数据包
  • --iflist 显示路由信息和接口,便于调试
  • --log-errors 把日志等级为errors/warings的日志输出
  • --append-output 追加到指定的文件
  • --resume FILENAME 恢复已停止的扫描
  • --stylesheet PATH/URL 设置XSL样式表,转换XML输出
  • --webxml 从namp.org得到XML的样式
  • --no-sytlesheet 忽略XML声明的XSL样式表
  • -6 开启IPv6
  • -A OS识别,版本探测,脚本扫描和traceroute
  • --datedir DIRNAME 说明用户Nmap数据文件位置
  • --send-eth / --send-ip 使用原以太网帧发送/在原IP层发送
  • --privileged 假定用户具有全部权限
  • --unprovoleged 假定用户不具有全部权限,创建原始套接字需要root权限
  • -V 打印版本信息
  • -h 输出帮助

Scons

  • 安装(3.1.1): python setup.py install --standard-lib
  • -j6: 使用CPU多线程进行编译。
  • plantform
    • windows
  • bits
    • 64
    • 32
  • target
    • release_debug
    • release
    • debug

About

个人学习一些软件和语言所记录的笔记,同时供团队内人员学习和更新。

Resources

License

Stars

Watchers

Forks