<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title><![CDATA[Swordfish_Yu]]></title> 
<atom:link href="https://smith.xyzz.info/rss.php" rel="self" type="application/rss+xml" />
<description><![CDATA[Whatever Is Worth Doing Is Worth Doing Well......]]></description>
<link>https://smith.xyzz.info/</link>
<language>zh-cn</language>
<generator>www.emlog.net</generator>
<item>
    <title>ubnuntu 18.04 boot timeout</title>
    <link>https://smith.xyzz.info/?post=10</link>
    <description><![CDATA[<p>Step：</p>
<ol>
<li>cd  etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service</li>
<li>nano systemd-networkd-wait-online.service</li>
<li>add &quot;-s -q --timeout=2&quot;  at the end of  line &quot;ExecStart=/lib/systemd/systemd-networkd-wait-online&quot;</li>
<li>reboot</li>
</ol>
<p><img src="https://smith.xyzz.info/content/uploadfile/202509/cd621757265851.png" alt="" /></p>]]></description>
    <pubDate>Mon, 08 Sep 2025 01:22:59 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=10</guid>
</item>
<item>
    <title>tar 命令参数</title>
    <link>https://smith.xyzz.info/?post=9</link>
    <description><![CDATA[<p>tar<br />
-c: 建立压缩档案<br />
-x：解压<br />
-t：查看内容<br />
-r：向压缩归档文件末尾追加文件<br />
-u：更新原压缩包中的文件<br />
这五个是独立的命令，压缩解压都要用到其中一个，可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。<br />
-z：有gzip属性的<br />
-j：有bz2属性的<br />
-Z：有compress属性的<br />
-v：显示所有过程<br />
-O：将文件解开到标准输出<br />
下面的参数-f是必须的<br />
-f: 使用档案名字，切记，这个参数是最后一个参数，后面只能接档案名</p>
<h1>tar -cf all.tar *.jpg</h1>
<p>这条命令是将所有.jpg的文件打成一个名为all.tar的包。-c是表示产生新的包，-f指定包的文件名。</p>
<h1>tar -rf all.tar *.gif</h1>
<p>这条命令是将所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。</p>
<h1>tar -uf all.tar logo.gif</h1>
<p>这条命令是更新原来tar包all.tar中logo.gif文件，-u是表示更新文件的意思。</p>
<h1>tar -tf all.tar</h1>
<p>这条命令是列出all.tar包中所有文件，-t是列出文件的意思</p>
<h1>tar -xf all.tar</h1>
<p>这条命令是解出all.tar包中所有文件，-x是解开的意思</p>
<p><strong>解压</strong></p>
<h1>tar –cvf jpg.tar *.jpg</h1>
<p>将目录里所有jpg文件打包成tar.jpg</p>
<h1>tar –czf jpg.tar.gz *.jpg</h1>
<p>将目录里所有jpg文件打包成jpg.tar后，并且将其用gzip压缩，生成一个gzip压缩过的包，命名为jpg.tar.gz</p>
<h1>tar –cjf jpg.tar.bz2 *.jpg</h1>
<p>将目录里所有jpg文件打包成jpg.tar后，并且将其用bzip2压缩，生成一个bzip2压缩过的包，命名为jpg.tar.bz2</p>
<h1>tar –cZf jpg.tar.Z *.jpg</h1>
<p>将目录里所有jpg文件打包成jpg.tar后，并且将其用compress压缩，生成一个umcompress压缩过的包，命名为jpg.tar.Z</p>
<h1>rar a jpg.rar *.jpg</h1>
<p>rar格式的压缩，需要先下载rar for linux </p>
<h1>zip jpg.zip *.jpg</h1>
<p>zip格式的压缩，需要先下载zip for linux</p>
<p><strong>压缩</strong></p>
<h1>tar –xvf file.tar</h1>
<p>解压 tar包</p>
<h1>tar -xzvf file.tar.gz</h1>
<p>解压tar.gz</p>
<h1>tar -xjvf file.tar.bz2</h1>
<p>解压 tar.bz2</p>
<h1>tar –xZvf file.tar.Z</h1>
<p>解压tar.Z</p>
<h1>unrar e file.rar</h1>
<p>解压rar</p>
<h1>unzip file.zip</h1>
<p>解压zip</p>
<p><strong>总结</strong></p>
<p>1、.tar 用 tar –xvf 解压<br />
2、.gz 用 gzip -d或者gunzip 解压<br />
3、.tar.gz和.tgz 用 tar –xzf 解压<br />
4、.bz2 用 bzip2 -d或者用bunzip2 解压<br />
5、.tar.bz2用tar –xjf 解压<br />
6、.Z 用 uncompress 解压<br />
7、.tar.Z 用tar –xZf 解压<br />
8、.rar 用 unrar e解压<br />
9、.zip 用 unzip 解压</p>]]></description>
    <pubDate>Mon, 08 Sep 2025 01:13:27 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=9</guid>
</item>
<item>
    <title>Scoat_Linux命令详解</title>
    <link>https://smith.xyzz.info/?post=8</link>
    <description><![CDATA[<p>socat</p>
<p>Socat 是 Linux 下的一个多功能的网络工具，名字来由是 「Socket CAT」。其功能与有瑞士军刀之称的 Netcat 类似，可以看做是 Netcat 的加强版。</p>
<p>Socat 的主要特点就是在两个数据流之间建立通道，且支持众多协议和链接方式。如 IP、TCP、 UDP、IPv6、PIPE、EXEC、System、Open、Proxy、Openssl、Socket等。</p>
<p>Socat 的官方网站：<a href="http://www.dest-unreach.org/socat/">http://www.dest-unreach.org/socat/</a></p>
<p>Socat 安装</p>
<p>通过源码方式安装<br />
$ wget <a href="http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz">http://www.dest-unreach.org/socat/download/socat-1.7.3.2.tar.gz</a><br />
$ tar zxf socat-1.7.3.2.tar.gz<br />
$ cd socat-1.7.3.2<br />
$ ./configure<br />
$ make<br />
$ make install</p>
<p>Centos<br />
$ yum install -y socat</p>
<p>Debian/Ubuntu<br />
$ apt-get install -y socat</p>
<p>macOS<br />
$ brew install socat</p>
<p>Socat 基本语法<br />
socat [options] <address> <address></p>
<p>其中这 2 个 address 就是关键了，address 类似于一个文件描述符，Socat 所做的工作就是在 2 个 address 指定的描述符间建立一个 pipe 用于发送和接收数据。几个常用的 address 描述方式如下：<br />
-,STDIN,STDOUT 表示标准输入输出，可以就用一个横杠代替。<br />
/var/log/syslog 打开一个文件作为数据流，可以是任意路径。<br />
TCP:: 建立一个 TCP 连接作为数据流，TCP 也可以替换为 UDP 。<br />
TCP-LISTEN: 建立 一个 TCP 监听端口，TCP 也可以替换为 UDP。<br />
EXEC: 执行一个程序作为数据流。<br />
以上规则中前面的 TCP 等都可以小写，在这些描述后可以附加一些选项，用逗号隔开。如 fork，reuseaddr，stdin，stdout，ctty 等。</p>
<p>Socat 使用实例<br />
文件操作<br />
通过 Socat 读取文件</p>
<h1>从绝对路径读取</h1>
<p>$ socat - /var/www/html/flag.php </p>
<h1>从相对路径读取</h1>
<p>$ socat - ./flag.php</p>
<p>注:这里的路径一般是绝对路径，如果要使用相对路径记得要加上 ./ 。</p>
<p>写入文件<br />
$ echo &quot;This is Test&quot; | socat - /tmp/hello.html</p>
<p>网络管理</p>
<p>连接远程端口<br />
$ socat - TCP:192.168.1.252:3306</p>
<p>监听一个新端口<br />
$ socat TCP-LISTEN:7000 -</p>
<p>端口转发<br />
在实际生产中我们经常会遇到到一个场景就是，用一台机器作为转发服务器，连接 AB 两个网段，将转发服务器的某个端口上的流量转发到 B 网段的某台机器的某个端口，这样 A 网段的服务器就可以通过访问转发服务器上的端口访问到 B 网段的服务器端口。</p>
<p>这样的场景一般在和客户建立专线的连接时候经常用到，一般也可以采用 iptables 做转发，但是比较复杂。Socat 可以很轻松的完成这个功能，但是 Socat 不支持端口段转发，只适用于单端口或者少量端口。</p>
<p>转发 TCP<br />
监听 192.168.1.252 网卡的 15672 端口，并将请求转发至 172.17.0.15 的 15672 端口。<br />
$ socat  -d -d -lf /var/log/socat.log TCP4-LISTEN:15672,bind=192.168.1.252,reuseaddr,fork TCP4:172.17.0.15:15672</p>
<p>参数说明：</p>
<ol>
<li>-d -d  前面两个连续的 -d -d 代表调试信息的输出级别。</li>
<li>-lf /var/log/socat.log 指定输出信息的文件保存位置。 </li>
<li>TCP4-LISTEN:15672 在本地建立一个 TCP IPv4 协议的监听端口，也就是转发端口。这里是 15672，请根据实际情况改成你自己需要转发的端口。</li>
<li>bind 指定监听绑定的 IP 地址，不绑定的话将监听服务器上可用的全部 IP。</li>
<li>reuseaddr 绑定一个本地端口。</li>
<li>fork TCP4:172.17.0.15:15672 指的是要转发到的服务器 IP 和端口，这里是 172.17.0.15 的 15672 端口。</li>
</ol>
<p>转发 UDP<br />
转发 UDP 和 TCP 类似，只要把 TCP4 改成 UDP4 就行了。<br />
$ socat -d -d -lf /var/log/socat.log UDP4-LISTEN:123,bind=192.168.1.252,reuseaddr,fork UDP4:172.17.0.15:123</p>
<p>NAT 映射<br />
在一个 NAT 网络环境中，也是可以通过 Socat 将内部机器端口映射到公网上的。</p>
<p>在外部公网机器上执行<br />
$ socat tcp-listen:1234 tcp-listen:3389</p>
<p>在内部私网机器上执行<br />
$ socat tcp:outerhost:1234 tcp:192.168.1.34:3389<br />
这样，你外部机器上的 3389 就映射在内网 192.168.1.34 的 3389 端口上了。不过这样场景下更推荐内网穿透神器 FRP，如果你不会使用，可参考「推荐一款很好用的内网穿透工具–FRP」一文。</p>
<p>文件传递<br />
文件传送<br />
将文件 demo.tar.gz 使用 2000 端口从 192.168.1.252 传到 192.168.1.253,文件传输完毕后会自动退出。</p>
<p>在 192.168.1.252 上执行<br />
$ socat -u open:demo.tar.gz tcp-listen:2000,reuseaddr</p>
<p>在 192.168.1.253 上执行<br />
$ socat -u tcp:192.168.1.252:2000 open:demo.tar.gz,create<br />
-u 表示数据传输模式为单向，从左面参数到右面参数。<br />
-U 表示数据传输模式为单向，从右面参数到左面参数。</p>
<p>读写分流功能<br />
Socat 具有一个独特的读写分流功能，比如：可以实现一个假的 Web Server，客户端连过来之后就把 read.html 里面的内容传过去，同时把客户端的数据保存到 write.txt 里面。</p>
<p>$ socat open:read.html!!open:write.txt,create,append tcp-listen:8000,reuseaddr,fork<br />
!! 符号用于合并读写流，前面的用于读，后面的用于写。由于 ! 在 Shell 中是特殊字符，所以这里在命令行中使用 \ 对其进行了转义。</p>
<p>其它功能<br />
监听一个 TCP 端口<br />
$ socat tcp-listen:12345 -</p>
<p>向 TCP 端口发送数据<br />
$ echo &quot;test&quot; | socat - tcp-connect:127.0.0.1:12345</p>
<p>监听一个 UDP 端口<br />
$ socat udp-listen:23456 -</p>
<p>向一个 UDP 端口发送数据<br />
$ echo &quot;test&quot; | socat - udp-connect:127.0.0.1:23456</p>
<p>监听一个 Unix Socket<br />
$ socat unix-listen:/tmp/unix.socket -</p>
<p>向本地 Unix Socket 发送数据<br />
$ echo &quot;test&quot; | socat - unix-connect:/tmp/unix.sock</p>
<p>监听本地 Unix Datagram Socket<br />
$ socat unix-recvfrom:/tmp/unix.dg.sock -</p>
<p>向本地 Unix Datagram Socket 发送数据<br />
$ echo &quot;test&quot; | socat - unix-sendto:/tmp/unix.dg.sock</p>
<p>通过 Openssl 来加密传输过程<br />
假设有一个服务器主机，地址为 server.domain.org。 并且服务端程序使用 4433 端口。为了尽可能的简单，我们使用一个非常简单的服务功能，即服务端仅回显数据（echo），客户端只进行标准输入（stdio）。要进行 Openssl 加密数据传输，首先需要生成 Openssl 证书。</p>
<p>生成服务端的证书</p>
<h1>为服务端的证书取一个基本的名字。</h1>
<p>$ FILENAME=server</p>
<h1>生成公钥私钥对。</h1>
<p>$ openssl genrsa -out $FILENAME.key 1024</p>
<h1>生成一个自签名的证书，会提示你输入国家代号、姓名等，或者按下回车键跳过输入提示。</h1>
<p>$ openssl req -new -key $FILENAME.key -x509 -days 3653 -out $FILENAME.crt</p>
<h1>用刚生成的密钥文件和证书文件来生成PEM文件。</h1>
<p>$ cat $FILENAME.key $FILENAME.crt &gt;$FILENAME.pem<br />
服务端证书生成完成后，复制信任证书 server.crt 到 SSL 客户端所在的主机上。</p>
<p>生成客户端证书</p>
<h1>为客户端证书取一个不同的文件名</h1>
<p>$ FILENAME=client<br />
重复上述服务端生成证书的流程。然后复制 client.pem 到 SSL 客户端主机，复制 client.crt 到服务端主机。至此完成了证书交换，服务端有 server.pem、client.crt 两个文件，客户端有 client.pem 、server.crt 两个文件。</p>
<p>其次我们需要建立 Openssl 服务端，在服务端我们不再用 tcp-listen (tcp-l) ，而用 openssl-listen (ssl-l) 。cert 参数告诉 Socat 包含证书和私钥的文件，cafile 参数指向客户端的证书文件。如果客户端能提供相关联的私钥，我们则认为该连接是可靠的。<br />
$ socat openssl-listen:4433,reuseaddr,cert=server.pem,cafile=client.crt echo<br />
运行这个命令后，Socat 会在 4433 端口监听，并要求客户端进行身份验证。</p>
<p>最后在客户端建立一个加密的链接，用 openssl-connect 或者 ssl 替换你的 tcp-connect 或 tcp 地址关键字，然后添加 cert 和 cafile 选项。<br />
$ socat stdio openssl-connect:server.domain.org:4433,cert=client.pem,cafile=server.crt<br />
test<br />
test<br />
这个命令用来建立一个到服务程序的安全的连接。如果服务端和客户端成功建立连接后，会回显在客户端输入的内容。</p>
<p>建立一个正向 Shell</p>
<p>服务端</p>
<h1>在服务端 7005 端口建立一个 Shell。</h1>
<p>$ socat TCP-LISTEN:7005,fork,reuseaddr EXEC:/bin/bash,pty,stderr<br />
或者<br />
$ socat TCP-LISTEN:7005,fork,reuseaddr system:bash,pty,stderr</p>
<p>客户端</p>
<h1>连接到服务器的 7005 端口，即可获得一个 Shell。readline 是 GNU 的命令行编辑器，具有历史功能。</h1>
<p>$ socat readline tcp:127.0.0.1:7005<br />
反弹一个交互式的 Shell<br />
当有主机连接服务端的 7005 端口时，将会发送客户端的 Shell 给服务端。</p>
<p>服务端<br />
$ socat -,raw,echo=0 tcp-listen:7005</p>
<p>客户端<br />
$ socat tcp-connect:192.168.1.252:7005 exec:'bash -li',pty,stderr,setsid,sigint,sane</p>
<p>fork 服务<br />
将一个使用标准输入输出的单进程程序变为一个使用 fork 方法的多进程服务，非常方便。</p>
<p>$ socat TCP-LISTEN:1234,reuseaddr,fork EXEC:./helloworld<br />
不同设备的通信</p>
<p>将 U 盘进行网络共享<br />
$ socat -d -d /dev/ttyUSB1,raw,nonblock,ignoreeof,cr,echo=0 TCP4-LISTEN:5555,reuseaddr</p>
<p>将终端转发到串口<br />
$ socat READLINE,/dev/ttyS0,raw,echo=0,crnl<br />
让 Socat 后台运行</p>
<p>默认情况下 Socat 只在前台运行，如果要让 Socat 一直在后台运行，可以使用 nohup 命令来保证其在后台一直运行。<br />
$ nohup socat  -d -d -lf /var/log/socat.log TCP4-LISTEN:15672,bind=192.168.1.252,reuseaddr,fork TCP4:172.17.0.15:15672 &amp;<br />
除了 nohup 外，Linux 下让进程在后台运行的方法还很多，比如：screen、tmux 等。</p>
<p>在 Linux 中一切都是文件，无论是 Socket 还是其他设备。所以从理论上来说，一切能够在文件层级访问的内容都可以成为 Socat 的数据流的来源。2 个 address 可以任意发挥，能够做到的事情还有很多。这样比起来，Socket 的确比 Netcat 更加强大。</p>]]></description>
    <pubDate>Sun, 07 Sep 2025 22:35:55 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=8</guid>
</item>
<item>
    <title>HiBit Uninstaller_Windows优化工具</title>
    <link>https://smith.xyzz.info/?post=7</link>
    <description><![CDATA[<p>HiBit Uninstaller_Windows优化工具</p>
<p>彻底卸载顽固软件、Windows 应用程序和浏览器扩展。</p>
<ul>
<li>
<p>官方网站：<a href="https://www.hibitsoft.ir/Uninstaller.html" title="点击直达">点击直达</a></p>
</li>
<li>
<p>本站下载：<a href="https://smith.xyzz.info/?resource_alias=KWBJmWNKfLAcOktz" title="Download">Download</a></p>
</li>
</ul>
<h1>特征****</h1>
<ul>
<li>彻底卸载程序，不留下任何残留</li>
<li>强制卸载可删除任何顽固软件</li>
<li>一次删除多个程序</li>
<li>监控程序的安装</li>
<li>节目快速搜索功能</li>
<li>卸载 Windows 应用商店应用</li>
<li>删除浏览器的扩展程序</li>
<li>粉碎敏感文件</li>
<li>修复注册表问题并提高您的 PC 性能</li>
<li>删除垃圾文件和不必要的程序文件</li>
<li>删除系统中无效的快捷方式</li>
<li>查找硬盘中的空文件夹</li>
<li>轻松管理随 Windows 启动的程序和服务</li>
<li>轻松管理 Windows 系统还原点</li>
<li>易于使用的用户界面</li>
<li>自动更新到最新版本</li>
</ul>]]></description>
    <pubDate>Fri, 30 May 2025 02:43:21 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=7</guid>
</item>
<item>
    <title>Windows 设置 Syncthing 开机自启动</title>
    <link>https://smith.xyzz.info/?post=3</link>
    <description><![CDATA[<h1>第一种方案：</h1>
<h2>保存 syncthing.bat 脚本文件保存 syncthing.bat 脚本文件</h2>
<p>打开 “记事本” 软件，将以下代码复制进去，另存为 syncthing.bat。<br />
start &quot;Syncthing&quot; syncthing.exe -no-console -no-browser</p>
<h2>复制脚本文件到 syncthing.exe 同级目录复制脚本文件到 syncthing.exe 同级目录</h2>
<p>找到 syncthing.exe 所在目录，将 syncthing.bat 脚本文件复制到该目录。</p>
<h2>将脚本文件快捷方式添加到 “启动” 菜单将脚本文件快捷方式添加到 “启动” 菜单</h2>
<p>选中 syncthing.bat 脚本文件，右键创建快捷方式<br />
按下 win + R，输入 “shell:startup” 打开 “启动” 文件夹<br />
将快捷方式复制到 “启动” 文件夹</p>
<h1>第二种方案：</h1>
<h2>1. 使用任务调度器</h2>
<p>打开任务调度器<br />
按下 Win + R，输入 taskschd.msc，然后按回车。</p>
<h2>2. 创建新任务</h2>
<p>在右侧的“操作”面板中，点击“创建任务”。</p>
<h2>3. 常规选项卡</h2>
<p>为任务命名（例如：“Syncthing”）。<br />
选择“无论用户是否登录都要运行”。</p>
<h2>4. 触发器选项卡</h2>
<p>选择“新建…”，然后在“开始任务”中选择“在登录时”或“在启动时”，根据你的需要。<br />
如果选择“在启动时”，点击“确定”。</p>
<h2>5. 操作选项卡</h2>
<p>点击“新建…”，在“程序/脚本”中输入Syncthing的路径（例如：C:\path\to\syncthing.exe）。<br />
在“添加参数（可选）”中输入 --no-console --no-browser。<br />
点击“确定”。</p>
<h2>6. 设置选项卡</h2>
<p>取消选中“如果任务运行时间超过：停止任务”。<br />
点击“确定”。</p>
<h2>7. 输入密码</h2>]]></description>
    <pubDate>Sat, 24 May 2025 22:42:39 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=3</guid>
</item>
<item>
    <title>常用工具软件</title>
    <link>https://smith.xyzz.info/?post=2</link>
    <description><![CDATA[<p>[该文章已设置加密]</p>]]></description>
    <pubDate>Sat, 24 May 2025 05:20:56 +0800</pubDate>
    <dc:creator>Swordfish_Yu</dc:creator>
    <guid>https://smith.xyzz.info/?post=2</guid>
</item></channel>
</rss>