Good in study, attitude and health

  • 计算机网络-Wireshark探索802.11

    Fetch a Trace 直接捕获无线局域网的流量有两个难题,一是有些系统(windows)不支持直接收集 802.11 frames,而第二个问题就是需要两台电脑互相发送流量。基于上述两点,推荐直接使用现成的数据包。 Inspecet the Trace 首先整体看看全部的数据帧,从 info 栏中我们可以看到 802.11 frame 有不同的类型,Beacon,Data,Ack,分别对应管理帧、数据帧和控制帧三种帧的类型。 下面重点研究数据帧。 根据 802.11,我们可以知道,这是一个无线局域网里的数据帧,而且最下面也标记了帧的字节数为 1539。 该字段记录了帧长、帧数以及一些时间信息。 Radiotap 包括头部以及 body 记录了物理层的相关参数,包括信号长度、调制信息等。 然后是 IEEE 802.11 Data,它是 802.11 中的数据帧,共占据 24 字节。 最后是最大的数据,占据了 1478 字节。 然后我们详细的分析 IEEE 802.11 Data 部分 Frame Control Version: IEEE 802.11 标准版本。 Type: Data frame Subtype:...

  • 计算机网络-利用Socket进行网络通信

    以下的通信无论是利用 UDP Socket 还是 TCP Socket 都是从客户端获取一串字符串,然后在服务端全部转为大写,之后返回客户端。 TCP Client from socket import * server_name = "10.27.138.11" server_port = 12000 client_socket = socket(AF_INET, SOCK_STREAM) client_socket.connect((server_name, server_port)) sentence = input("input lowercase sentence:") client_socket.send(sentence.encode()) modified_sentence = client_socket.recv(1024) print(modified_sentence.decode()) client_socket.close() UDP Client from socket import * server_name = "10.27.138.11" server_port = 12000 clientSocket =...

  • 计算机网络-使用Socket完成一个简易Web服务器

    实验内容 在本实验中,您将学习 Python 中 TCP 连接的套接字编程的基础知识:如何创建套接字,将其绑定到特定的地址和端口,以及发送和接收 HTTP 数据包。您还将学习一些 HTTP 首部格式的基础知识。 您将开发一个处理一个 HTTP 请求的 Web 服务器。您的 Web 服务器应该接受并解析 HTTP 请求,然后从服务器的文件系统获取所请求的文件,创建一个由响应文件组成的 HTTP 响应消息,前面是首部行,然后将响应直接发送给客户端。如果请求的文件不存在于服务器中,则服务器应该向客户端发送“404 Not Found”差错报文。 代码 在文件下面你会找到 Web 服务器的代码框架。您需要填写这个代码。而且需要在标有# Fill in start 和 # Fill in end的地方填写代码。另外,每个地方都可能需要不止一行代码。 运行服务器 将 HTML 文件(例如 HelloWorld.html)放在服务器所在的目录中。运行服务器程序。确认运行服务器的主机的 IP 地址(例如 128.238.251.26)。从另一个主机,打开浏览器并提供相应的 URL。例如: http://128.238.251.26:6789/HelloWorld.html “HelloWorld.html”是您放在服务器目录中的文件。还要注意使用冒号后的端口号。您需要使用服务器代码中使用的端口号来替换此端口号。在上面的例子中,我们使用了端口号 6789. 浏览器应该显示 HelloWorld.html 的内容。如果省略“:6789”,浏览器将使用默认端口...

  • 电脑配置-MacBook

    关闭和开启 SIP 关闭 SIP M 系列芯片关机后,长按电源键直到进入恢复模式,在终端中输入csrutil disable 开启 SIP 进入恢复页面,实用工具里选择启动安全性实用工具,选前两个安全性选项都能打开 翻译配置 《柯林斯双解》for macOS 苹果电脑用得好,英语学习没烦恼(视频) 显示器问题 one-key-hidpi 开发环境配置 Vscode C/C++ Mac 用 Visual Studio Code 编写 C/C++ Mac 在vs code中使用vim,长按j无法一直向下移动,解决办法:defaults write -g ApplePressAndHoldEnabled -bool false,禁用长按重音字符 配置文章:https://zhuanlan.zhihu.com/p/711413895 Docker 中使用 Ubuntu 安装 Docker 官方网站:https://www.docker.com 下载 Ubuntu 镜像 可在 https://hub.docker.com/_/ubuntu 找到相应镜像,以及安装命令。 // 下载镜像 docker...

  • 操作系统-从零开始编写

    教程:https://github.com/ruiers/os-tutorial-cn 01-引导扇区 02-引导打印 mov ah, 0x0e ; 设置功能号为 0x0E,TTY 模式输出字符 mov al, 'H' ; 将字符 'H' 的 ASCII 码加载到 AL 寄存器 int 0x10 ; 调用 BIOS 中断 0x10,显示字符 mov al, 'e' int 0x10 mov al, 'l' int 0x10 int 0x10 ; 'l' is still on al, remember? mov al, 'o'...

  • Docker-安装完整Ubuntu

    在 Docker 里的 Ubuntu 使用 man 命令时,总是提示: This system has been minimized by removing packages and content that are not required on a system that users do not log into. To restore this content, including manpages, you can run the 'unminimize' command. You will still need to ensure the 'man-db'...

  • OpenCV-制作视频红蓝3D效果

    这个代码生成的视频,透过红色镜片会看到蓝色部分发黑,导致观感不好。 import cv2 import numpy as np # 输入和输出视频文件路径 input_video_path = 'input_video.mp4' output_video_path = 'output_video.mp4' # 打开输入视频 cap = cv2.VideoCapture(input_video_path) # 获取视频属性 frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps = int(cap.get(cv2.CAP_PROP_FPS)) frame_count = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 设置输出视频编码和属性(MJPG 编解码器) fourcc = cv2.VideoWriter_fourcc(*'MJPG') # 更改为 MJPEG 编解码器 frame_width_out = frame_width - 10 #...

  • Docker-Mac(M1)上运行Ubuntu-AMD64

    QEMU Docker 需要 QEMU 来在 ARM 架构上运行 AMD64 镜像。我们可以通过运行 multiarch/qemu-user-static 镜像来配置 QEMU: docker run --rm --privileged multiarch/qemu-user-static --reset -p yes 这条命令会在 Docker 中配置多架构支持。 重启 Docker 下载并运行 AMD64 架构的 Ubuntu 镜像 拉取 AMD64 版本的 Ubuntu 镜像: docker pull --platform linux/amd64 ubuntu:20.04 创建并运行容器: docker run --platform linux/amd64 -it ubuntu:20.04 验证架构 在容器中运行以下命令以验证正在使用 AMD...

  • Anaconda-Python环境配置

    Anaconda 配置 Anaconda 是一个流行的 Python 和 R 数据科学平台,集成了包管理和环境管理功能。Anaconda 附带了 conda 包管理器,可以方便地管理 Python 环境和依赖。 安装 Anaconda 访问 Anaconda 官网。 创建环境 conda create -n myenv python=3.8 此命令创建了一个名为 myenv 的虚拟环境,并指定 Python 版本为 3.8。 激活环境 conda activate myenv 在我的电脑上无法使用conda activate激活环境,于是使用下面的方案替代: source ~/anaconda3/bin/activate ~/conda_envs/security_env 或者直接调用 activate 命令: source activate ~/conda_envs/security_env 退出环境 conda deactivate 导出环境 conda...

  • Windows安全-密码口令

    在 Windows 系统中,登录密码(或称为“口令”)不会以纯文本形式存储,而是以经过哈希处理的形式存储在一个系统文件中。具体来说,Windows 使用 SAM (Security Account Manager) 数据库来存储本地用户的密码哈希值。 1. SAM 文件 位置:C:\Windows\System32\config\SAM 作用:SAM 文件包含所有本地用户的账户信息和密码哈希。为了安全,SAM 文件受到系统保护,正常情况下即使是管理员也无法直接访问或读取。 我们首先要获取 SAM 文件内关于口令密码的值,于是用到了 mimikatz 工具。 这个工具会被 Windows 的防火墙或者其它一些杀毒软件识别出病毒,因此需要先将其关闭,我在此使用了 Win10 的虚拟机进行操作,但其一直阻止我下载,每次加载后都会强制删除,后来将 Windows 安全中心里的病毒和威胁防护功能关闭就可以了。 然后我们以管理员身份打开工具,并输入下面的命令提升自己的权限为 system privilege::debug 之后执行下面的命令,即可看到 SAM 文件中的密码,但其被使用 NTLM 进行加密了 sekurlsa::logonpasswords 结果如图所示: 其加密逻辑为:数据 hex(16 进制编码)—>Unicode 编码—>MD4 编码,最终得到的就是 NTLM 编码后的数据 书写 python 脚本进行验证: def string_to_hex_unicode(input_string):...