王新阳

wangxinyang

使用ffmpeg下载合并ts视频为mp4

1、下载ffmpeg

https://www.gyan.dev/ffmpeg/builds/

2、解压后,window dos 进入相应的bin目录

3、运行ffmpeg合并ts文件

ffmpeg -i "d:\下载.m3u8" -c copy "d:\合并.mp4"

出现下面错误时,可加相应参数解决:
Filename extension of 'd:\下载\crypt.key' is not a common multimedia extension, blocked for security reasons.If you wish to override this adjust allowed_extensions, you can set it to 'ALL' to allow all

ffmpeg -allowed_extensions ALL -i "d:\下载.m3u8" -c copy "d:\合并.mp4"

------------------------

关于 IV(初始化向量):

检查您的 M3U8 文件,#EXT-X-KEY 标签中是否包含了 IV 参数(例如 IV=0x1234567890ABCDEF1234567890ABCDEF)。

如果没有指定 IV,FFmpeg 可能会使用默认值(比如序列号或全零)。如果解密后视频花屏或无法播放,可以尝试在 FFmpeg 命令中手动指定 IV(如果已知):

ffmpeg -allowed_extensions ALL -decryption_iv 1234567890ABCDEF1234567890ABCDEF -i "input.m3u8" -c copy "output.ts"

密钥格式:FFmpeg 期望的密钥通常是二进制文件或十六进制字符串。如果您的密钥是 Base64 编码的,需要先解码。可以使用在线 Base64 解码工具,或者使用 Python/Node.js 等脚本语言进行转换

用虚拟打印机检测打印效果

安装虚拟打印机:DoroPDF Writer、Bullzip PDF Printer

打印时选择虚拟打印,会自动生成pdf文件或图片文件,图片效果即为最终打印效果,不需要用真实纸张打印,快捷方便。

修改DoroPDF的配置文件Doro.ini,可以设置输出文件类型、覆盖提醒、文档转换类型、静默转换等。

Doro PDF Writer ‌是一款免费的虚拟打印机软件,主要用于将各种文档转换为PDF格式。该软件具有体积小、操作简便的特点,支持多种文件格式的转换,包括Word文档、Excel表格、PowerPoint演示文档、图片、邮件和网页等‌。

功能特点
‌体积小巧‌:Doro PDF Writer的安装包大小仅为8MB左右,不会占用过多系统资源‌。
‌操作简单‌:用户只需像操作真实打印机一样进行设置和打印,即可将各种文件转换为PDF格式‌。
支持多种文件格式‌:无论是Word文档、Excel表格、PowerPoint演示文档,还是图片、邮件、网页等,都可以轻松转换为PDF‌、JPG、PNG。
‌加密功能‌:用户可以在打印时设置加密选项,确保PDF文件的安全性‌。
使用方法
‌安装软件‌:下载并安装Doro PDF Writer后,会在“控制面板”中的“打印机和传真”选项中看到新安装的虚拟打印机‌。
‌设置默认打印机‌:右键点击Doro PDF Writer,选择“设置为默认打印机”‌。
‌打印文件‌:打开需要转换的文件,选择“打印”功能,然后在打印机选项中选择Doro PDF Writer进行打印‌。
‌设置加密‌:在打印时,可以在“加密”界面设置密码,确保PDF文件的安全性‌。

通过注册表编辑器禁用TLS1.0、TLS1.1

定位到注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols

  1. 创建或修改TLS 1.0键值
    如果不存在 TLS 1.0 键,右键点击 Protocols → 新建 → 项,命名为 TLS 1.0。
  2. 在 TLS 1.0 下分别创建 Client 和 Server 子项。
    设置禁用参数
    Client项:
     新建DWORD值:
     Enabled → 值设为 0
    Server项:
     同样新建Enabled → 值设为 0
  3. 重启服务器
    关闭注册表编辑器,重启系统使设置生效。

TLS 1.1 禁用步骤同上。

另外,可下载图形化工具 IIS Crypto 来禁用相关功能,下载地址:https://www.nartac.com/products/IISCrypto/download


我的LODOP打印控件代码备份

<script src="/static/lodop/LodopFuncs.js?v=reg"></script>
<script>
//定义打印控件
var LODOP = null;
//已打印标识
var printFlag = [0,0]; //打印次数、页数
window.onload=function(){LODOP=getLodop();};

function createPage(data){
/**
 * LODOP基础知识
 * 计量单位关系如下(其中px单位与像素类似,但不是一个概念)
 * 1in = 2.54cm = 25.4mm = 72pt = 96px
 * 1mm = 2.83465pt = 3.77953px
 * 1pt = 0.352777mm = 1.333333px
 * 1px = 0.264583mm = 0.75pt
 *
 * 字号默认单位为pt,不设置默认为9pt
 * 长度单位默认为px(SET_PRINT_PAGESIZE中的PageWidth和PageHeight除外,默认为0.1mm)
 *
 * 设置纸张大小(initOrient为1-3时会锁定打印方向,为0时由用户控制)
 * SET_PRINT_PAGESIZE(intOrient, PageWidth,PageHeight,strPageName)
 * 不调用此函数则由用户在打印设置中自主设置
 */
	
	//LODOP.PRINT_INIT('证书打印');
	LODOP.PRINT_INITA(0,0,'330mm','240mm','证书打印'); //top,left,width,height,printName,整体打印有偏差时,只需要调整top和left值即可
	LODOP.SET_PRINT_MODE('CUSTOM_TASK_NAME', data.name); //打印任务名
	LODOP.SET_PRINT_MODE('POS_BASEON_PAPER',true); //true以纸张边缘为基点;false可打区域边缘为基点
	LODOP.SET_PRINT_MODE('AUTO_CLOSE_PREWINDOW',1); //打印后自动关闭预览窗口
	//LODOP.SET_PRINT_PAGESIZE(0, '240mm','330mm', 'CreateCustomPage'); // 第一个参数:1纵向打印2横向打印3宽度固定高度自适应0用户控制
	LODOP.SET_PRINT_PAGESIZE(2,0,0,''); //后三个值无效时只用来设置打印方向
	
	LODOP.SET_PRINT_STYLE('FontSize',13.5);  //全局字号,单位pt
	LODOP.SET_PRINT_STYLE('FontName', '新宋体'); //全局字体(宋体、新宋体设置加粗无效)
	LODOP.SET_PRINT_STYLE('Bold',1); //全局加粗
	LODOP.SET_SHOW_MODE('BKIMG_PRINT',false); //是否打印背景图
	//LODOP.SET_PRINT_STYLE('Alignment', 2); //全局水平居中
	
	//LODOP.ADD_PRINT_TEXT(top, left, width, height, textContent); //默认单位px
	LODOP.ADD_PRINT_TEXT(157,912,234,30, data.name);
	//LODOP.SET_PRINT_STYLEA(0, 'FontSize', 13.5); //为前面刚添加的项目设置字号、字体、颜色等打印式样
	LODOP.ADD_PRINT_TEXT(231,912,234,30, data.gender);
	LODOP.ADD_PRINT_TEXT(306,912,234,30, data.nationality);
	LODOP.ADD_PRINT_TEXT(381,912,234,30, data.ethnic_group);
	LODOP.ADD_PRINT_TEXT(455,946,234,30, data.birth);
	LODOP.ADD_PRINT_TEXT(338,289,260,30, data.major_name);
	LODOP.ADD_PRINT_TEXT(418,254,260,30, data.grade);
	LODOP.ADD_PRINT_TEXT(498,289,260,30, data.certdate);
	LODOP.ADD_PRINT_TEXT(578,289,260,30, data.certno);
	LODOP.ADD_PRINT_TEXT(659,275,260,30, data.grade_begin_end);

	if(data.photo){
		LODOP.ADD_PRINT_IMAGE(155,659,'36mm','49mm','<img border="0" src="'+data.photo+'?rnd='+Math.random()+'">');
		LODOP.SET_PRINT_STYLEA(0,'Stretch',2);//默认不设置或0为截取模式;1按打印区域尺寸缩放(变形);2按原图比例(不变形)缩放模式
	}
}

//更新打印日志
function update_print_log(row){
	row.print=parseInt(row.print)+1;
	table.updateRow('myTable', {index:row.LAY_INDEX, data:row}, true);
	$.ajax({
		type: 'POST',
		data: {act:'update_print_log', id:row.id},
		success: function(res){
			if(res.code)return layer.alert(res.msg);
		}
	});
}

function batch_print(){
	var data=table.checkStatus('myTable').dataCache;
	if(!data.length)return layer.msg('请选择要打印的记录', {time:2e3});
	
	$.each(data, function(index,row){
		createPage(row);
		LODOP.PRINT();
		update_print_log(row)
	});
}

//选择打印机
function print_printer(){
	//return layer.alert('请在打印预览界面中点击菜单栏的"设置"选择打印机或打印设置。');
/*
	var printer_list=[];
	for(var i=0; i<LODOP.GET_PRINTER_COUNT(); ++i){
		printer_list.push(LODOP.GET_PRINTER_NAME(i));
	}
	console.log(printer_list);
	return;
*/
}
//打印维护
function print_edit(){
	var row=create_data();
	if(row===null)return layer.alert('无数据');
	createPage(row);
	LODOP.ADD_PRINT_SETUP_BKIMG('<img border="0" src="/static/images/cert.jpg">');
	LODOP.SET_SHOW_MODE('SHOW_SCALEBAR',1); //显示标尺
	LODOP.SET_SHOW_MODE("BKIMG_LEFT",0);
	LODOP.SET_SHOW_MODE("BKIMG_TOP",0);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_SETUP',true);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_PREVIEW',true);
	LODOP.PRINT_SETUP();
}
//打印预览
function print_view(){
	var row=create_data();
	if(row===null)return layer.alert('无数据');
	createPage(row);
	LODOP.ADD_PRINT_SETUP_BKIMG('<img border="0" src="/static/images/cert.jpg">');
	LODOP.SET_SHOW_MODE('BKIMG_IN_PREVIEW',1); //打印预览显示背景图
	LODOP.SET_SHOW_MODE('SHOW_SCALEBAR',1); //显示标尺
	LODOP.SET_SHOW_MODE('HIDE_PAPER_BOARD',1); //隐藏打印预览背景进纸版的图案
	LODOP.SET_SHOW_MODE("BKIMG_LEFT",0);
	LODOP.SET_SHOW_MODE("BKIMG_TOP",0);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_SETUP',true);
	LODOP.SET_SHOW_MODE('HIDE_PBUTTIN_PREVIEW',true);
	LODOP.PREVIEW();
}
function print_design(){
	LODOP.PRINT_INITA(0,0, '330mm','240mm', '打印设计');
	LODOP.PRINT_DESIGN();
}
//版本检测
function print_version(){
	try{
		if(LODOP.VERSION) {
			let str=LODOP.CVERSION ? 'C-Lodop版本:'+LODOP.CVERSION+'<br>Lodop版本:'+LODOP.VERSION : '本机已安装Lodop控件!<br>版本号:'+LODOP.VERSION;
			layer.alert(str);
		};
	}catch(e){}
}
//打印预览、打印维护时展示的数据
function create_data(){
	var data=table.getData('myTable');
	if(!data.length)return null;
	var checkData=table.checkStatus('myTable').data;
	return checkData.length ? checkData[0] : data[0];
}
</script>

windows更新失败的处理办法

错误代码 0x80070002 通常表示系统找不到指定的文件或路径。在安装 Windows 更新时遇到此错误,可能是由于以下原因之一:

Windows 更新组件损坏:Windows 更新所需的某些文件可能已损坏或丢失。

系统文件损坏:系统文件可能已损坏,导致更新无法正常安装。

临时文件问题:Windows 更新过程中使用的临时文件可能存在问题。

防病毒软件干扰:某些防病毒软件可能会干扰 Windows 更新的安装过程。

解决方法
以下是一些可能的解决方法,您可以逐一尝试:

1. 运行 Windows 更新疑难解答
打开“设置” > “更新和安全” > “疑难解答”。

选择“Windows 更新”并运行疑难解答工具。

按照提示操作,查看是否能自动解决问题。

2. 清理 Windows 更新缓存
按 Win + R 键,输入 services.msc 并回车。

找到“Windows Update”服务,右键点击并选择“停止”。

打开文件资源管理器,导航到 C:\Windows\SoftwareDistribution 文件夹。

删除该文件夹中的所有内容。

返回服务管理器,重新启动“Windows Update”服务。

再次尝试安装更新。

3. 使用 DISM 工具修复系统映像
以管理员身份打开命令提示符。

输入以下命令并回车:
DISM,/Online,/Cleanup-Image,/RestoreHealth

等待命令执行完成,这可能需要一些时间。

完成后,重启计算机并再次尝试安装更新。

4. 使用 SFC 工具修复系统文件
以管理员身份打开命令提示符。

输入以下命令并回车:

sfc /scannow

等待扫描和修复过程完成。


完成后,重启计算机并再次尝试安装更新。

5. 手动下载并安装更新
访问 Microsoft Update Catalog

搜索 KB5050182(示例,需要根据实际修改),找到适合您系统的更新包。

下载并手动安装更新。

6. 检查磁盘空间
确保系统驱动器(通常是 C:)有足够的可用空间来安装更新。

7. 禁用防病毒软件
暂时禁用防病毒软件,然后尝试安装更新。

如果更新成功安装,请记得重新启用防病毒软件。


8. 检查系统时间和日期
确保系统的日期和时间设置正确,不正确的日期和时间可能会导致更新失败。


如果以上方法都无法解决问题,建议联系 Microsoft 支持或查阅相关技术论坛以获取更多帮助。

WINDOWS11激活

请输入查看密码:

lodop打印控件-关于谷歌Chrome浏览器94版跨域问题的解决方案

谷歌浏览器再次迈出激进安全步骤,Win10+Chrome94版阻断http页面访问localhost服务, 这一举动广泛影响了Web模式的设备管理系统,例如路由服务、打印服务等,其中也包括C-Lodop软件。 安全是个美好的托词,真正让谷歌贸然行动的动机是大力推广https协议,而https背后是TLS证书, TLS证书背后是浏览器厂商的年费分成,利益巨大...闲话少说,解决方案如下:

有四种方法,选其一就行:

一、网站改用HTTPS方式(彻底方案)

二、安装最新的C-Lodop6.564及后版本,并更新LodopFuncs.js文件;

三、手动修改客户浏览器安全设置,在Chrome地址栏输入:chrome://flags/#block-insecure-private-network-requests

看到底色泛黄的“Block insecure...”项的 Default 值,改选成 Disabled然后窗口下方会出现蓝底的Relaunch按钮,点它重启浏览器。

四、客户端改用低版本Chrome(94版前)浏览器,简单办法是安装360急速版(Chrome内核)

注:微软的浏览器Edge94版因为采用了Chrome内核,故以上解决方案也适用。

系统存在支持SSL中等强度密码套件(SWEET32)

转自:https://blog.csdn.net/qq_38254635/article/details/128400965

gpedit.msc 》 计算机配置 》管理模板》网络》SSL配置设置》SSL密码套件顺序》启用

TLS_AES_256_GCM_SHA384、TLS_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384、TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256、TLS_DHE_RSA_WITH_AES_256_GCM_SHA384、TLS_DHE_RSA_WITH_AES_128_GCM_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256、TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA、TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_AES_256_GCM_SHA384、TLS_RSA_WITH_AES_128_GCM_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA256、TLS_RSA_WITH_AES_128_CBC_SHA256、TLS_RSA_WITH_AES_256_CBC_SHA、TLS_RSA_WITH_AES_128_CBC_SHA、TLS_RSA_WITH_3DES_EDE_CBC_SHA、TLS_RSA_WITH_NULL_SHA256、TLS_RSA_WITH_NULL_SHA、TLS_PSK_WITH_AES_256_GCM_SHA384、TLS_PSK_WITH_AES_128_GCM_SHA256、TLS_PSK_WITH_AES_256_CBC_SHA384、TLS_PSK_WITH_AES_128_CBC_SHA256、TLS_PSK_WITH_NULL_SHA384、TLS_PSK_WITH_NULL_SHA256

改为:

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256_P384,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA_P384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P256,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA_P384,TLS_DHE_DSS_WITH_AES_256_CBC_SHA256,TLS_DHE_DSS_WITH_AES_128_CBC_SHA256,TLS_DHE_DSS_WITH_AES_256_CBC_SHA,TLS_DHE_DSS_WITH_AES_128_CBC_SHA,TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

重启系统,即可。

检查方法:

下载安全 nmap-7.93-setup.exe。
安装好之后,Win + R 输入 cmd,假设要检测的域名是 xxx.com
输入:nmap -sV --script ssl-enum-ciphers -p 443 xxx.com

没问题时如下图:

下图是有问题的情况:


服务器安全笔记

请输入查看密码:

IIS web.config设置Access-Control-Allow-Origin

来源:https://www.jianshu.com/p/85855a991275

方法一:添加自定义header,缺点是不支持正则,只能设置一个网站,或者*对全部网站开放

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
	<httpProtocol>
	  <customHeaders>
		   <add name="Access-Control-Allow-Origin" value="https://www.domain1.com" />
	  </customHeaders>
	</httpProtocol>
    </system.webServer>
</configuration>

方法二:使用正则,可添加多个,需要安装微软的URL Rewrite组件

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
	<rewrite>
		<outboundRules>
			<rule name="AddCrossDomain">
				<match serverVariable="RESPONSE_Access_Control_Allow_Origin" pattern=".*" />
				<conditions logicalGrouping="MatchAll" trackAllCaptures="true">
					<add input="{HTTP_ORIGIN}" pattern="(https?://((www\.)?domain1\.com|(www\.)?domain2\.cn))" />
				</conditions>
				<action type="Rewrite" value="{C:0}" />
			</rule>
		</outboundRules>
        </rewrite>
    </system.webServer>
</configuration>

2025-09-03 星期三 农历七月十二