共计 22325 个字符,预计需要花费 56 分钟才能阅读完成。
windows系统
//进入d盘
D:
//进入F盘
F:
cd /? //获取使用帮助
cd \ //跳转到硬盘的根目录
cd C:\WINDOWS //跳转到当前硬盘的其他文件
d: //跳转到其他硬盘
cd /d e:\software //跳转到其他硬盘的其他文件夹,注意此处必须加/d参数。否则无法跳转。
cd.. //跳转到上一层目录
//查看当前目录下的文件,类似于linux下的ls
dir
copy 路径\文件名 路径\文件名 :把一个文件拷贝到另一个地方。
move 路径\文件名 路径\文件名 :把一个文件移动(就是剪切+复制)到另一个地方。
//这个是专门删除文件的,不能删除文件夹
del 文件名
taskkill
taskkill /? 获取使用帮助
TASKKILL /S system /F /IM notepad.exe /T
TASKKILL /PID 1230 /PID 1241 /PID 1253 /T
TASKKILL /F /IM QQ.exe
TASKKILL /F /IM notepad.exe /IM mspaint.exe
find /?获取使用帮助
netstat -ano|find “.8” //使用管道符,进行模糊查询
“|”cmd命令中|代表前一个的输出代表后一个的输入
查找特定ip的网络连接及进程号:netstat -ano|find “192.168.1.10”
重定向输出符号> >>
将原本输出到命令窗口的内容,转存到文件中,如jstack 12912 >d:/s.txt 打印线程到指定文件
cmd > 重定向输出并覆盖源文件。
echo hello >c:\1.txt // 1.txt的文件内容先被清空,然后写入hello。
cmd >>重定向输出追加到文件末尾
echo hello >>c:\1.txt // 在1.txt文件末尾加上hello
netstat -ano
netstat -ab
端口,进程,进程号
netstat -ano|findstr “”
查看开放使用的端口号,以及占用进程进程号
tasklist|findsrt “”
通过进程号寻找相关进程
dfrg.msc——-磁盘碎片整理程序
chkdsk.exe—–Chkdsk磁盘检查
devmgmt.msc— 设备管理器
winver———检查Windows版本
net user 用户名 密码 /add 建立用户
net user 帐户名 查看帐户的属性
net localgroup administrators 用户名 /add 把“用户”添加到管理员中使其具有管理员权限
net start 查看开启了哪些服务
net start 服务名 开启服务;(如:net start telnet, net start schedule)
net stop 服务名 停止某服务
net time 目标ip 查看对方时间
net time 目标ip /set 设置本地计算机时间与“目标IP”主机的时间同步,加上参数/yes可取消确认信息
net user guest /active:yes 激活guest用户
net user guest 12345 用guest用户登陆后用将密码改为12345
net password 密码 更改系统登陆密码
fc one.txt two.txt > 3st.txt 对比二个文件并把不同之处输出到3st.txt文件中,”> “和”> >” 是重定向命令
at 查看所有的计划任务
route print 显示出IP路由,将主要显示网络地址Network addres,子网掩码Netmask,网关地址Gateway addres,接口地址Interface
arp 查看和处理ARP缓存,ARP是名字解析的意思,负责把一个IP解析成一个物理性的MAC地址。arp -a将显示出全部信息
set 显示当前所有的环境变量
findstr “Hello” aa.txt 在aa.txt文件中寻找字符串hello
find 文件名 查找某文件
title 标题名字 更改CMD窗口标题名字
color 颜色值 设置cmd控制台前景和背景颜色;0=黑、1=蓝、2=绿、3=浅绿、4=红、5=紫、6=黄、7=白、8=灰、9=淡蓝、A=淡绿、B=淡浅绿、C=淡红、D=淡紫、E=淡黄、F=亮白
format 盘符 /FS:类型 格式化磁盘,类型:FAT、FAT32、NTFS ,例:Format D: /FS:NTFS
chkdsk /F D: 检查磁盘D并显示状态报告;加参数/f并修复磁盘上的错误
批处理命令与变量
for命令及变量
基本格式: FOR /参数 %variable IN (set) DO command [command_parameters]
%variable:指定一个单一字母可替换的参数,如:%i ,而指定一个变量则用:%%i ,而调用变量时用:%i% ,变量是区分大小写的(%i 不等于 %I)。
批处理每次能处理的变量从%0—%9共10个,其中%0默认给批处理文件名使用,%1默认为使用此批处理时输入的的第一个值,同理:%2—%9指输入的第2-9个值;例:net use ipipc$ pass /user:user 中ip为%1,pass为%2 ,user为%3
(set):指定一个或一组文件,可使用通配符,如:(D:user.txt)和(1 1 254)(1 -1 254),{ “(1 1 254)”第一个”1″指起始值,第二个”1″指增长量,第三个”254″指结束值,即:从1到254;“(1 -1 254)”说明:即从254到1 }
command:指定对第个文件执行的命令,如:net use命令;如要执行多个命令时,命令这间加:& 来隔开
command_parameters:为特定命令指定参数或命令行开关
IN (set):指在(set)中取值;DO command :指执行command
参数:/L 指用增量形式{ (set)为增量形式时 };/F 指从文件中不断取值,直到取完为止{ (set)为文件时,如(d:pass.txt)时 }。
用法举例:
@echo off
echo 用法格式:test.bat *.*.* > test.txt
for /L %%G in (1 1 254) do echo %1.%%G >>test.txt & net use \%1.%%G /user:administrator | find “命令成功完成” >>test.txt
存为test.bat 说明:对指定的一个C类网段的254个IP依次试建立administrator密码为空的IPC$连接,如果成功就把该IP存在test.txt中。
/L指用增量形式(即从1-254或254-1);
输入的IP前面三位:..*为批处理默认的 %1;
%%G 为变量(ip的最后一位);
& 用来隔开echo 和net use 这二个命令;
| 指建立了ipc$后,在结果中用find查看是否有”命令成功完成”信息;
%1.%%G 为完整的IP地址;
(1 1 254) 指起始值,增长量,结止值。
@echo off
echo 用法格式:ok.bat ip
FOR /F %%i IN (D:user.dic) DO smb.exe %1 %%i D:pass.dic 200
存为:ok.exe 说明:输入一个IP后,用字典文件d:pass.dic来暴解d:user.dic中的用户密码,直到文件中值取完为止。
%%i为用户名;
%1为输入的IP地址(默认)。
Shutdown.exe
Shutdown IP地址 t:20
20秒后将对方NT自动关闭
fpipe.exe (TCP端口重定向工具)
fpipe -l 80 -s 1029 -r 80
当有人扫锚你的80端口时,他扫到的结果会完全是的主机信息
Fpipe -l 23 -s 88 -r 23 目标IP
把本机向目标IP发送的23端口Telnet请求经端口重定向后,就通过88端口发送到目标IP的23端口。(与目标IP建立Telnet时本机就用的88端口与其相连接)然后:直接Telnet 127.0.0.1(本机IP)就连接到目标IP的23端口了。
Linux系统
vim/vi 文本编辑器
1)常用快捷键:(在一般模式下使用):
a :在光标后一位开始插入
A 在该行的最后插入
I 在该行的最前面插入
gg 直接跳到文件的首行
G 直接跳到文件的末行
dd 删除一行;3dd 删除3行;yy 复制一行;3yy 复制3行;p 粘贴;u:即undo撤销操作;
v :进入字符选择模式,选择完成后,按y复制,按p粘贴
ctrl+v 进入块选择模式,选择完成后,按y复制,按p粘贴
shift+v 进入行选择模式,选择完成后,按y复制,按p粘贴
2)查找并替换
1 显示行号 :set nu
2 隐藏行号::set nonu
3 查找关键字 :/you ## 效果:查找文件中出现的you,并定位到第一个找到的地方,按n可以定位到下一个匹配位置(按N定位到上一个)
4 替换操作 :s/sad/bbb 查找光标所在行的第一个sad,替换为bbb
:%s/sad/bbb 查找文件中所有sad,替换为bbb
head 显示文件内容头部。
head -10 install.log 查看文件头部的10行
tail 显示文件内容尾部
tail **-10** install.log 查看文件尾部的10行
tail **+10** install.log 查看文件 10–>末行
tail -f install.log 小f跟踪文件的唯一inode号,就算文件改名后,还是跟踪原来这个inode表示的文件
tail -F install.log 大F按照文件名来跟踪
文件压缩及解压缩命令
将许多文件一起保存至一个单独的磁带或磁盘归档,并能从归档中单独还原所需文件。
示例
tar -cf archive.tar foo bar # 从文件 foo 和 bar 创建归档文件
archive.tar。
tar -tvf archive.tar # 详细列举归档文件 archive.tar
中的所有文件。
tar -xf archive.tar # 展开归档文件 archive.tar
tar -cvf archive.tar file1 创建一个非压缩的 tarball
tar -cvf archive.tar file1 file2 dir1 创建一个包含了 ‘file1’, ‘file2’ 以及 ‘dir1’的档案文件
tar -tf archive.tar 显示一个包中的内容
tar -xvf archive.tar 释放一个包
tar -xvf archive.tar -C /tmp 将压缩包释放到 /tmp目录下
tar -cvfj archive.tar.bz2 dir1 创建一个bzip2格式的压缩包
tar -xvfj archive.tar.bz2 解压一个bzip2格式的压缩包
tar -cvfz archive.tar.gz dir1 创建一个gzip格式的压缩包
tar -xvfz archive.tar.gz 解压一个gzip格式的压缩包
解压到/usr/下:tar -zxvf a.tar.gz -C /usr
查看压缩包内容tar -ztvf a.tar.gz
c创建
v显示文件信息
f递归操作
z gzip格式
x 解压
unzip 解压和zip压缩文件
zip file1.zip file1 创建一个zip格式的压缩包
zip -r file1.zip file1 file2 dir1 将几个文件和目录同时压缩成一个zip格式的压缩包
unzip file1.zip 解压一个zip格式压缩包
系统信息查询命令
hostname 显示或者设置当前系统的主机名。
dmesg 显示开机信息,用于诊断系统故障。
uptime 显示系统运行时间以及负载。
uname -m 显示机器的处理器架构(2)
cat /proc/cpuinfo 显示CPU info的信息
cat /proc/meminfo 校验内存使用
cat /proc/version 显示内核的版本
lspci -tv 罗列 PCI 设备
lsusb -tv 显示 USB 设备
top 实时显示系统资源使用情况。
free 查看系统内存
date 显示、设置系统时间
cal 查看日历、时间信息
cal 2021 显示2021年的日历表
date 041217002021.00 设置日期和时间 – 月日时分年.秒
clock -w 将时间修改保存到 BIOS
用户管理及权限、用户授权,登陆相关命令
useradd 添加用户。
添加一个tom用户,设置它属于users组,并添加注释信息:useradd -g users -c “hr tom” tom
useradd -c “Name Surname ” -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 “admin” 用户组的用户
usermod 修改系统已经存在用户属性。
修改tom用户的登陆名为tomcat:usermod -l tomcat tom
将tomcat添加到sys和root组(-G,-g)中:usermod -G sys,root tomcat
查看tomcat的组信息:groups tomcat
usermod -c “User FTP” -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
userdel 删除用户。
userdel -r spark 加一个-r就表示把用户及用户的主目录都删除
groupadd 添加用户群组+groupmod组修改
passwd 修改用户密码。
chage 修改用户密码有效期限。
id 查看用户的uid/gid及归属的用户群组
groupmod -n new_group_name old_group_name 重命名一个用户组
chmod 改变文件、目录权限
chmod -R 770 aaa/ ##如果要将一个文件夹的所有内容权限统一修改,则可以-R参数
chmod ugo+rwx directory1 ##设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限
chmod go-rwx directory1 ##删除群组(g)与其他人(o)对目录的读写执行权限
find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件
chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 – 运行该文件的用户也被赋予和所有者同样的权限
chmod u-s /bin/file1 禁用一个二进制文件的 SUID位
chmod g+s /home/public 设置一个目录的SGID 位 – 类似SUID ,不过这是针对目录的
chmod g-s /home/public 禁用一个目录的 SGID 位
chmod o+t /home/public 设置一个文件的 STIKY 位 – 只允许合法所有人删除文件
chmod o-t /home/public 禁用一个目录的 STIKY 位
chgrp 更改文件用户群组。
chown 改变文件、目录的属主和属组
chown :angela aaa ## 改变所属组
chown angela:angela aaa/ ## 同时修改所属用户和所属组
chown -R user1 directory1 ##改变一个目录的所有人属性并同时改变改目录下所有文件的属性
umask 显示、设置权限掩码。
whoami 显示当前有效用户名称,相当于执行id -un命令。
who 显示目前已登录系统的用户信息。
w 显示已登陆系统的用户列表,并显示用户正在执行的指令。
last 显示已登入系统的用户。
lastlog 显示系统中所有用户最近一次的登录信息。
users 显示当前登录系统的所有用户的用户列表。
finger 查找、显示用户信息。
gpasswd
将tomcat用户从root组和sys组删除:gpasswd -d tomcat root&&gpasswd -d tomcat sys
将america组名修改为am:groupmod -n am america
Docker
启动 docker
#启动docker
sudo systemctl start docker
#查看docker服务状态 running 就是启动成功
sudo systemctl status docker
设置 docker 开机自启
sudo systemctl enable docker
#镜像命令
docker images:列出所有镜像
docker search [image]:搜索 Docker 镜像
docker pull [image]:拉取指定镜像
docker rmi [image]:删除指定镜像
#容器命令
docker ps:列出当前所有正在运行的容器
docker ps -a:列出所有容器,包括已经停止的容器
docker create [image]:创建一个新的容器,但不启动它
docker start [container]:启动一个容器
docker stop [container]:停止一个容器
docker rm [container]:删除一个容器
docker exec -it [container] [command]:在运行中的容器中执行命令
#其他命令
docker info:显示 Docker 系统信息
docker version:显示 Docker 版本信息
docker logs [container]:查看容器的日志
docker network ls:列出 Docker 网络
docker network create [network]:创建一个新的 Docker 网络
docker network connect [network] [container]:将容器连接到指定的 Docker 网络
docker network disconnect [network] [container]:将容器从指定的 Docker 网络中断开连接
创建挂载的目录
vi /mydata/mysql/conf/my.cnf
输入以下配置文件
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect=’SET collation_connection = utf8_unicode_ci’
init_connect=’SET NAMES utf8′
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
docker pull mysql:5.7
docker run -p 3306:3306 –name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/conf:/etc/mysql/conf.d:将配置文件夹挂载到主机
-v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql:将数据文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root:初始化 root 用户的密码
使用容器mysql命令行工具
docker exec -it mysql mysql -uroot -proot
设置 root 远程访问
//设置远程root密码登录,与本地root密码登录不同
grant all privileges on *.* to ‘root’@’%’ identified by ‘root’ with grant option;
// 如需修改
//alter user ‘root’@’%’ identified with mysql_native_password by ‘123456’;
flush privileges;
进入容器内部,查看配置文件是否挂载成功
docker exec -it mysql /bin/bash
cd /etc/mysql/conf.d
cat my.cnf
容器化安装 Redis 容器
创建挂载的目录
vi /mydata/redis/conf/redis.conf
1
输入以下配置文件
# 暂无
#password= 123
1、下载镜像文件,创建实例并启动
不多废话,直接上代码
docker pull redis
docker run -p 6379:6379 –name redis \
-v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
参数说明
-p 6379:6379:将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf:将配置文件夹挂载到主机
-v /mydata/redis/data:/data :将数据文件夹挂载到主机
2、进入容器
#重启redis
docker restart redis
#启动redis客户端
docker exec -it redis redis-cli
Docker 容器化安装 Nacos容器
mysql创建nacos的数据库
create database nacos_config
SQL 文件:db/nacos-db.sql · yeye/gmall – 码云 – 开源中国 (gitee.com)
Nacos配置
创建挂载的目录
mkdir -p /mydata/nacos/conf/ #新建nacos的logs目录
mkdir -p /mydata/nacos/logs/
vim /mydata/nacos/conf/application.properties #新建并修改nacos的配置文件
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=root
nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t “%r” %s %b %D %{User-Agent}i
nacos.security.ignore.urls=/,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/login,/v1/console/health/**,/v1/cs/**,/v1/ns/**,/v1/cmdb/**,/actuator/**,/v1/console/server/**
nacos.naming.distro.taskDispatchThreadCount=1
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true
nacos.naming.expireInstance=true
注意: 这里的配置需要把数据库链接配置一下。
db.num=1
db.url.0=jdbc:mysql://xx.xx.xx.x:3306/nacos_devtest_prod?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=user
db.password=pass
修改为自己的数据库地址和账号密码
下载镜像文件,创建实例并启动
不多废话,直接上代码
docker pull nacos/nacos-server:1.1.4
docker run -d \
–name nacos \
-p 8848:8848 \
–restart=always \
-e JVM_XMS=256m \
-e JVM_XMX=256m \
-e MODE=standalone \
-v /mydata/nacos/logs:/home/nacos/logs \
-v /mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties \
nacos/nacos-server
参数说明
-p 6379:6379:将容器的 3306 端口映射到主机的 3306 端口
/mydata/nacos/conf/application.properties:/home/nacos/conf/application.properties:将配置文件夹挂载到主机
-v /mydata/nacos/logs:/home/nacos/logs:将日志文件夹挂载到主机
进入容器
#重启redis
docker restart nacos
#进入容器
docker exec -it nacos bash
访问 Nacos
访问地址:http://x.x.x.x:8848/nacos (这里是服务器的ip地址)
账号密码:nacos / nacos
进去了就算成功
“\”这是啥意思.好像是空格,删掉直接把下一行的内容跟上一行放一起就行
tcpdump -i ens33 -w ./xxx.cap //指定网口抓包
tcpdump -i ens33 src net 10.193.17.4 -w ./package.cap //指定网口+SIP抓包并保存./package.cap
date //查看系统时间
hwclock //查看硬件时间
date –s “2017-08-10 10:21:00” //系统时间校准
hwclock –w //同步时间给硬件服务器
systemctl status firewalld //查看防火墙状态
systemctl stop firewalld //临时关闭防火墙
systemctl disable firewalld //永久防火墙开机自关闭
systemctl start firewalld //临时打开防火墙
systemctl enable firewalld //防火墙开机启动
systemctl stop network.service
systemctl start network.service
service network restart //重启网卡
cd /etc/sysconfig/network-scripts/ //查看网卡信息的路径
ethtool xxx(ens33) //查看网卡xxx状态,包括速率、Link状态,传输类型等;
root用户远程ssh登录
vim /etc/ssh/sshd_config //进入修改ssh_config文件模式
PermitRootLogin:no–>yes //PermitRootLogin字段值改成yes
systemctl restart sshd //重启sshd
chmod 4755 /bin/su //su root无法登陆root账号,提示认证失败
Nmap简单的扫描方式
全面扫描:nmap -T4 -A ip
主机发现:nmap -T4 -sn ip
端口扫描:nmap -T4 ip
服务扫描:nmap -T4 -sV ip
操作系统扫描:nmap -T4 -O ip
1、SYN扫描
首先可以利用基本的SYN扫描方式探测其端口开放状态。
nmap -sS -T4 www.fujieace.com
扫描输出结果为:
All 997 ports are filtered
PORT STATE SERVICE
80/tcp open http
113/tcp closed auth
507/tcp open crs
我们可以看到SYN方式探测到3个端口开放,而有997个端口被过滤。Nmap默认扫描只扫描1000个最可能开放的端口,如果想扫描全部的端口,命令如下:
nmap -sS -T4-p- www.fujieace.com
2、FIN扫描
然后可以利用FIN扫描方式探测防火墙状态。FIN扫描方式用于识别端口是否关闭,收到RST回复说明该端口关闭,否则说明是open或filtered状态。
nmap -sF -T4 www.fujieace.com
扫描输出结果为:
PORT STATE SERVICE
7/tcp open|filtered echo
9/tcp open|filtered discard
11/tcp open|filtered systat
13/tcp open|filtered daytime
23/tcp open|filtered telnet
25/tcp open|filtered smtp
37/tcp open|filtered time
79/tcp open|filtered finger
80/tcp open|filtered http
更多端口,此处省略…….
3、ACK扫描
然后利用ACK扫描判断端口是否被过滤。针对ACK探测包,未被过滤的端口(无论打开、关闭)会回复RST包。
nmap -sA -T4 www.fujieace.com
扫描输出结果为:
Not shown: 997 unfiltered ports
PORT STATE SERVICE
135/tcp filtered msrpc
1434/tcp filtered ms-sql-m
32777/tcp filtered sometimes-rpc17
从结果可以知道997个端口是未被过滤的(unfiltered),而3个(135/1434/32777)被过滤了。所以,将ACK与FIN扫描 的结果结合分析,我们可以找到很多开放的端口。例如7号端口,FIN中得出的状态是:open或filtered,从ACK中得出的状态是 unfiltered,那么该端口只能是open的。
4、Window扫描
当然也可以利用Window扫描方式,得出一些端口信息,可以与之前扫描分析的结果相互补充。Window扫描方式只对某些TCPIP协议栈才有效。
window扫描原理与ACK类似,发送ACK包探测目标端口,对回复的RST包中的Window size进行解析。在某些TCPIP协议栈实现中,关闭的端口在RST中会将Window size设置为0;而开放的端口将Window size设置成非0的值。
nmap -sW -p- -T4 www.fujieace.com
输出结果:
PORT STATE SERVICE
7/tcp open echo
9/tcp open discard
11/tcp open systat
13/tcp open daytime
更多端口,此处省略……
在采用多种
扫描路由器操作系统
nmap -O -F -n 192.168.1.1
与通用PC扫描方式类似,使用-O选项扫描路由器的操作系统。-F用于快速扫描最可能开放的100个端口,并根据端口扫描结果进一步做OS的指纹分析方式获取出防火墙状态后,可以进一步进行应用程序与版本侦测及OS侦测。
nmap [扫描目标] [选项]
v: 增加输出的详细程度。
A: 启用OS检测、版本检测、脚本扫描和traceroute。
p:指定要扫描的端口范围,例如p 1-100。
Wireshark使用
ip.addr == 180.101.49.11 and icmp 表示只显示ICPM协议且源主机IP或者目的主机IP为180.101.49.11的数据包。
三次握手原理
先来看一下基本的原理。
第一次握手:建立连接时,客户端发送SYN到服务器,并进入SYN_SENT状态。
第二次握手:服务器收到请求后,回送SYN+ACK信令到客户端,此时服务器进入SYN_RECV状态。
第三次握手:客户端收到SYN+ACK包,向服务器发送确认ACK包,客户端进入ESTABLISHED状态,服务器收到请求后也进入ESTABLISHED状态,完成三次握手,此时TCP连接成功,客户端与服务器开始传送数据。
第一次握手
第一次握手:建立连接时,客户端发送SYN到服务器,并进入SYN_SENT状态。
SYN :标志位,表示请求建立连接。
Seq = 0 :初始建立连接值为0,数据包的相对序列号从0开始,表示当前还没有发送数据。
Ack =0:初始建立连接值为0,已经收到包的数量,表示当前没有接收到数据。
WIN = 8192 来自Window size: 8192。
MSS = 1460 来自 Maximum segment size: 1460 byte ,最长报文段,TCP包所能携带的最大数据量,不包含TCP头和Option。一般为MTU值减去IPv4头部(至少20字节)和TCP头部(至少20字节)得到。
WS = 4 来自windows scale : 2 (multiply by 4): 窗口扩张,放在TCP头之外的Option,向对方声明一个shift count,作为2的指数,再乘以TCP定义的接收窗口,得到真正的TCP窗口。
第二次握手
第二次握手:服务器收到请求后,回送SYN+ACK信令到客户端,此时服务器进入SYN_RECV状态。
Seq = 0 :初始建立值为0,表示当前还没有发送数据
Ack = 1 : 表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。尽管客户端没有发送任何有效数据,确认号还是被加1,这是因为接收的包中包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据。
第三次握手
第三次握手:客户端收到SYN+ACK包,向服务器发送确认ACK包,客户端进入ESTABLISHED状态,服务器收到请求后也进入ESTABLISHED状态,完成三次握手,此时TCP连接成功,客户端与服务器开始传送数据。
ACK :标志位,表示已经收到记录
Seq = 1 :表示当前已经发送1个数据
Ack = 1 : 表示当前端成功接收的数据位数,虽然客户端没有发送任何有效数据,确认号还是被加1,因为包含SYN或FIN标志位。尽管客户端没有发送任何有效数据,确认号还是被加1,这是因为接收的包中包含SYN或FIN标志位(并不会对有效数据的计数产生影响,因为含有SYN或FIN标志位的包并不携带有效数据)
为什么是三次握手
这个问题的本质是, 信道不可靠, 但是通信双发需要就某个问题达成一致. 而要解决这个问题, 无论你在消息中包含什么信息, 三次通信是理论上的最小值. 所以三次握手不是TCP本身的要求, 而是为了满足”在不可靠信道上可靠地传输信息”这一需求所导致的.
也是为了最小的代价验证会话双方的收发功能正常:
第一次握手成功:说明客户端的数据可以被服务端收到,说明客户端的发功能可用,说明服务端的收功能可用。但客户端自己不知道数据是否被接收。
第二次握手成功:说明服务端的数据可以被客户端收到,说明服务端的发功能可用,说明客户端的收功能可用。同时客户端知道自己的数据已经正确到达服务端,自己的发功能正常。但是服务端自己不知道数据是否被接收。
第三次握手成功:说明服务端知道自己的数据已经正确到达客户端端,自己的发功能正常。至此服务成功建立。
请求数据的过程
客户端和服务端建立连接后,开始传输数据。下图中首先是客户端发起一个GET请求,服务端收到请求后首先返回确认信息。待服务端处理完成后,将数据返回给客户端,客户端对收到的数据进行确认,完成一次数据交互的过程。
交互过程中,SEQ表示发送的数据,LEN表示发送的数据长度,下一次的SEQ就等于当前SEQ加上LEN。ACK表示接收的数据位。客户端和服务端分别计算自己的增长值。对应上图最后一次服务端返回数据时SEQ是2737,LEN是450。客户端对接收数据做了两次返回确认,第一次ACK是2737,表示还没有完成数据接收。第二次ACK是3187,等于服务端SEQ+LEN(2737+450)表示已经完成了全部数据的接收。
第一次挥手:客户端 发送一个[FIN+ACK],表示自己没有数据要发送了,想断开连接,并进入FIN_WAIT_1状态(不能再发送数据到服务端,但能够发送控制信息ACK到服务端)。
第二次挥手:服务端收到FIN后,知道不会再有数据从客户端传来,发送ACK进行确认,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务端进入CLOSE_WAIT状态。
第三次挥手:服务端发送FIN给对方,表示自己没有数据要发送了,服务端进入LAST_ACK状态,然后直接断开TCP会话的连接,释放相应的资源。
第四次挥手:客户端收到了服务端对FIN的ACK后,进入FIN_WAIT2状态(等待服务端完成资源释放的一系列工作:然后释放你为创建这个连接所分配的资源,并通知我你关闭了); 客户端收到了服务端的FIN信令后,进入TIMED_WAIT状态,并发送ACK确认消息。客户端在TIMED_WAIT状态下,等待2MSL一段时间,没有数据到来的,就认为对面已经收到了自己发送的ACK并正确关闭了进入CLOSE状态,自己也断开了到服务端的TCP连接,释放所有资源。当服务端收到客户端的ACK回应后,会进入CLOSE状态,并关闭本端的会话接口,释放相应资源。TIME_WAIT状态持续2MSL(MSL是数据分节在网络中存活的最长时间)。
网络上比较主流的文章都说关闭TCP会话是四次挥手,但是实际上为了提高效率通常合并第二、三次的挥手,即三次挥手。
关闭连接需要四次握手。
客户端向服务端发送FIN为1的报文,服务端返回确认,关闭客户端与服务端通信的部分。
服务端向客户端发送FIN为1的报文,客户端返回确认,关闭服务端与客户端通信的部分。
端口最大65535,这里用十六进制,248高八位,162低八位,即真正的端口号为248*256+162=63650
因此在过滤器处对63650端口进行过滤
tcp:port == 63650
就看到列的目录的完整信息,里面有两个文件,意义不大,继续ftp过滤追踪
看到1323有一个下载的操作
可以看到下载的时候又开放了一个端口,就去追踪这个
248*256+165=63653
http && (ip.src==202.1.1.2 || ip.dst == 192.168.1.99)
黑客上传的第一个文件名称是什么
这里使用过滤器
http && (ip.src==202.1.1.2 || ip.dst == 192.168.1.99) && http.request.method==POST
黑客需要以攻克的1.99来作为跳板来访问2.88的ftp服务器,设置过滤器
ftp && ip.src == 192.168.1.99
RETR ftp 下载标识
服务器2.88中用户名为admin_zz的web后台管理员的密码
既然这里给出用户名,直接设置过滤器
ip.addr == 192.168.1.99 && http contains “admin_zz”
服务器2.88的mysql账号密码(格式:账号/密码)
这里也应该是查看黑客下载的敏感文件中的内容,设置过滤器ip.addr == 192.168.1.99 && ftp-data
服务器2.88的mysql服务中有和admin有关的三个表,请按照黑客的查询顺序作答,使用空格分隔
ip.addr == 192.168.1.99 && mysql contains “met_”
请列出黑客设置的genreal log的绝对路径(将路径复制出来,区分大小写)
mysql日志–>设置过滤器
ip.addr == 192.168.1.99 && mysql
路由器的品牌、型号、版本(请直接复制粘贴)
涉及到路由器,设置就过滤器
ip.addr == 192.168.0.1 && http
在路由器的端口监控中,监控端口和被监控端口分别是多少,例,1号端口监控2/3/4号端口:1–>2,3,4
这里提到监控端口,还是设置过滤器慢慢找
ip.addr == 192.168.0.1 && http &&contains “port”
路由器的系统路由表中一共有几条?第三条的子网掩码是多少。例: 255 255.255.0则为24 (格式:用英文逗号分隔)
ip.addr == 192.168.0.1 && http contains “gateway”
路由器的5Gwif名称是什么,信道是多少(格式:名称信道)
设置过滤器
ip.addr == 192.168.0.1 && http contains “5G”
windows服务器只允许特定IP访问
1. 打开Windows Defender防火墙高级安全
打开“控制面板” > “系统和安全” > “Windows Defender 防火墙”。
在左侧菜单选择“高级设置”。
2. 创建允许规则
在“Windows Defender 防火墙高级安全”窗口的左侧,点击“入站规则”,然后在右侧的“操作”栏点击“新建规则”。
选择“自定义规则”,点击“下一步”。
对于“协议和端口”,根据需要保护的服务选择协议(TCP或UDP)和端口(特定端口或范围),然后点击“下一步”。
在“作用域”页面:
“本地IP地址”保持为“任何IP地址”。
在“远程IP地址”下选择“这些IP地址”,然后输入允许访问的特定IP地址或地址范围。点击“下一步”。
在“操作”页面,选择“允许连接”,点击“下一步”。
在“配置文件”页面,根据服务器的网络环境选择相应的配置文件(通常是全部勾选),点击“下一步”。
给规则命名(例如,“允许特定IP访问HTTP服务”),并提供描述(可选),点击“完成”。
3. 创建拒绝规则
为了确保除了指定的IP地址外,其他所有IP地址都无法访问,你需要创建一个拒绝规则。
重复上述步骤创建新规则,但在“操作”步骤中选择“阻止连接”。
在“远程IP地址”下选择“任何IP地址”。
确保规则名称和描述能清晰表明这是一个拒绝规则,如“拒绝所有其他IP访问HTTP服务”。
4. 确认规则顺序
确保允许规则位于拒绝规则之前,因为在处理规则时,Windows防火墙会按照从上到下的顺序应用规则,最先匹配的规则生效。
5. 测试规则
从允许的IP地址尝试访问服务器,确认可以成功连接。
从一个不在允许列表中的IP地址尝试访问,确保被拒绝。
通过上述步骤,你就成功设置了Windows服务器,只允许特定IP地址访问,而阻止了所有其他IP地址的访问。请根据实际需要调整端口、协议以及IP地址范围。
windows:wmic命令
C:\Users\Administrator>wmic
wmic:root\cli>baseboard get manufacturer,product
Manufacturer Product
ASUSTeK COMPUTER INC. H510M-D3H/M.2 R2.0
wmic:root\cli>
显示进程的详细信息
输入 process where name=”chrome.exe” list full
显示出BIOS信息
wmic bios list full
停止、暂停和运行服务功能
启动服务startservice,
停止服务stopservice,
暂停服务pauseservice,
Service where caption=”windows time” call stopservice ——停止服务
Service where caption=”windows time” call startservice ——启动服务
Service where name=”w32time” call stopservice ——停止服务
注意name和caption的区别:caption 显示服务名,name:服务名称.
如: telnet服务的显示名称是telnet ,服务名称.是tlntsvr。
还有Windows Time服务的名称是w32time 显示名称是”Windows Time”要用引号引起来,主要是有一个空格。
好了具体看一下:输入Service where caption=”windows time” call startservice后有一个确认输入y就可以了,返回ReturnValue = 0;表示成功
大家可能注意到了上面命令行中还有两个参数list和full。list决定显示的信息格式与范围,它有Brief、Full、Instance、 Status、System、Writeable等多个参数,full只是它的一个参数,也是list的缺省参数,表示显示所有的信息。其他几个参数顾名思义,如Brief表示只显示摘要信息,Instance表示只显示对象实例,Status表示显示对象状态,Writeable表示只显示该对象的可写入的属性信息等。
停止进程的操作
例如,执行下面的命令将关闭正在运行的QQ.exe:
例1、wmic process where name=’QQ.exe’ call terminate
例2、wmic process where name=”qq.exe” delete
列出所有的进程 : wmic process.
连接远程电脑
连接远程的电脑,不过好象对要开一些相应的服务
wmic /node:”192.168.203.131″ /password:”” /user:”administrator”
BIOS – 基本输入/输出服务 (BIOS) 管理
查看bios版本型号
wmic bios get Manufacturer,Name
C:\Users\Administrator>wmic baseboard get manufacturer,name,product
Manufacturer Name Product
ASUSTeK COMPUTER INC. 基板 H510M-D3H/M.2 R2.0
WMIC设置IP地址
配置或更新IP地址:
wmic nicconfig where index=0 call enablestatic(“192.168.1.5”), (“255.255.255.0”) ;index=0说明是配置网络接口1。
配置网关(默认路由):
wmic nicconfig where index=0 call setgateways(“192.168.1.1″),(1)
CPU – CPU 管理
查看cpu型号
wmic cpu get name
C:\Users\Administrator>wmic cpu get name
Name
11th Gen Intel(R) Core(TM) i5-11400F @ 2.60GHz
DISKDRIVE – 物理磁盘驱动器管理
获取物理磁盘型号大小等
wmic DISKDRIVE get Caption,size,InterfaceType
C:\Users\Administrator>wmic diskdrive get caption,size,interfacetype
Caption InterfaceType Size
SSK SCSI Disk Device SCSI 512105932800
Kingston DataTraveler 3.0 USB Device USB 123724661760
Great Wall GW3300 256GB SCSI 256052966400
LOGICALDISK – 本地储存设备管理
获取硬盘系统格式、总大小、可用空间等
wmic LOGICALDISK get name,Description,filesystem,size,freespace
远程计算机的远程桌面连接
WMIC命令开启远程计算机的远程桌面连接
执行wmic /node:192.168.1.2 /USER:administrator PATH win32_terminalservicesetting WHERE (__Class!=””) CALL SetAllowTSConnections 1
具体格式:
wmic /node:”[full machine name]” /USER:”[domain]\[username]”
PATH win32_terminalservicesetting WHERE (__Class!=””) CALL SetAllowTSConnections 1
实例summary
wmic 获取进程名称以及可执行路径:
wmic process get name,executablepath
wmic 删除指定进程(根据进程名称):
wmic process where name=”qq.exe” call terminate
或者用
wmic process where name=”qq.exe” delete
wmic 删除指定进程(根据进程PID):
wmic process where pid=”123″ delete
wmic 创建新进程
wmic process call create “C:\Program Files\Tencent\QQ\QQ.exe”
在远程机器上创建新进程:
wmic /node:192.168.201.131 /user:administrator /password:123456 process call create cmd.exe
关闭本地计算机
wmic process call create shutdown.exe
重启远程计算机
wmic /node:192.168.1.10/user:administrator /password:123456 process call create “shutdown.exe -r -f -m”
更改计算机名称
wmic computersystem where “caption=’%ComputerName%'” call rename newcomputername
更改帐户名
wmic USERACCOUNT where “name=’%UserName%'” call rename newUserName
wmic 结束可疑进程(根据进程的启动路径)
wmic process where “name=’explorer.exe’ and executablepath<>’%SystemDrive%\\windows\\explorer.exe'” delete
wmic 获取物理内存
wmic memlogical get TotalPhysicalMemory|find /i /v “t”
wmic 获取文件的创建、访问、修改时间
@echo off
for /f “skip=1 tokens=1,3,5 delims=. ” %%a in (‘wmic datafile where name^=”c:\\windows\\system32\\notepad.exe” get CreationDate^,LastAccessed^,LastModified’) do (
set a=%%a
set b=%%b
set c=%%c
echo 文件: c:\windows\system32\notepad.exe
echo.
echo 创建时间: %a:~0,4% 年 %a:~4,2% 月 %a:~6,2% 日 %a:~8,2% 时 %a:~10,2% 分 %a:~12,2% 秒
echo 最后访问: %b:~0,4% 年 %b:~4,2% 月 %b:~6,2% 日 %b:~8,2% 时 %b:~10,2% 分 %b:~12,2% 秒
echo 最后修改: %c:~0,4% 年 %c:~4,2% 月 %c:~6,2% 日 %c:~8,2% 时 %c:~10,2% 分 %c:~12,2% 秒
)
echo.
pause
wmic 全盘搜索某文件并获取该文件所在目录
for /f “skip=1 tokens=1*” %i in (‘wmic datafile where “FileName=’qq’ and extension=’exe'” get drive^,path’) do (set “qPath=%i%j”&@echo %qPath:~0,-3%)
获取屏幕分辨率 wmic DESKTOPMONITOR where Status=’ok’ get ScreenHeight,ScreenWidth
wmic PageFileSet set InitialSize=”512″,MaximumSize=”512″
设置虚拟内存到E盘,并删除C盘下的页面文件,重启计算机后生效
wmic PageFileSet create name=”E:\\pagefile.sys”,InitialSize=”1024″,MaximumSize=”1024″
wmic PageFileSet where “name=’C:\\pagefile.sys'” delete
获得进程当前占用的内存和最大占用内存的大小:
wmic process where caption=’filename.exe’ get WorkingSetSize,PeakWorkingSetSize
以KB为单位显示
@echo off
for /f “skip=1 tokens=1-2 delims= ” %%a in (‘wmic process where caption^=”conime.exe” get WorkingSetSize^,PeakWorkingSetSize’) do (
set /a m=%%a/1024
set /a mm=%%b/1024
echo 进程conime.exe现在占用内存:%m%K;最高占用内存:%mm%K
)
pause
远程打开计算机远程桌面
wmic /node:%pcname% /USER:%pcaccount% PATH win32_terminalservicesetting WHERE (__Class!=””) CALL SetAllowTSConnections 1
nmap漏洞扫描
通过下面三个强大的Nmap脚本选项, 可以将Nmap变成一个全面的漏洞扫描工具:
Vuln:–script vuln选项执行所有NSE脚本, 这些脚本专注于识别正在扫描目标系统是否有安全漏洞, 这是发现已知漏洞的常用选项。
Vulners:–script vulners选项使用vulners.com在线数据库,利用Nmap扫描目标以查找最新漏洞。该数据库定期更新,可能会找到其它扫描可能遗漏的信息。
Vulscan: –script vulscan选项是一个Nmap漏洞扫描脚本, 它使用多个离线漏洞数据库来测试目标系统漏洞, 它使用了NVD、CVE和OVAL漏洞数据库来扫描本地网络中的漏洞, 该模式支持本地离线和在线扫描。
Nmap 的漏洞扫描将针对目标运行该工具的默认漏洞扫描脚本。这些对于查找可利用的常见漏洞非常有用。要运行漏洞扫描,使用以下命令语法:
复制
nmap –script vuln <target>
vulners漏洞扫描能够使用在线数据库vulners.com扫描目标是否有最新的漏洞。要执行此扫描,使用以下命令语法:
复制
nmap -sV –script vulners <target>