<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SAPikachu的工作室</title>
	<atom:link href="http://www.sapikachu.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sapikachu.net</link>
	<description>不是什么都知道啦，只是知道Google知道的而已</description>
	<lastBuildDate>Thu, 08 Mar 2012 08:25:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>MP_Pipeline 0.11 &#8211; 多进程并行运行avs脚本 [2012-03-03]</title>
		<link>http://www.sapikachu.net/mp_pipeline-run-part-of-avisynth-script-in-external-process/</link>
		<comments>http://www.sapikachu.net/mp_pipeline-run-part-of-avisynth-script-in-external-process/#comments</comments>
		<pubDate>Tue, 06 Mar 2012 02:41:37 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[Avisynth相关]]></category>
		<category><![CDATA[EP]]></category>
		<category><![CDATA[原创工具]]></category>
		<category><![CDATA[avisynth]]></category>
		<category><![CDATA[MP_Pipeline]]></category>

		<guid isPermaLink="false">http://www.sapikachu.net/?p=83</guid>
		<description><![CDATA[（之前一直没有在Blog上发布，补发一下。。。 功能如题（拖），主要是用来解决部分EP滤镜组合使用时爆内存的情况。具体用法请参考压缩包内的示例脚本。 更新日志： 0.11 * 大大改善性能，某些情况下开销可下降80% * 可锁定子进程内的工作线程到单一核心 0.9 * 新功能：帧预读 * 新功能：同时输出多个clip变量 * 新功能：可在多个进程间共享部分代码 0.3 * 修正x86文件夹内的子程序版本 * 内置TCPDeliver，不再依赖外部滤镜 * 修正退出时的随机崩溃 * 分块Branch 0.2 * 新增x64支持（请将压缩包内各平台的TCPDeliver.dll复制到对应的插件目录内） * 可混合使用x86/x64子进程，详情请参考示例脚本（需要同时安装x86/x64的AviSynth） * BRANCH进程新增一个变量，使脚本内可以区分不同的进程 源代码 下载 使用实例： 1. 基础用法 MP_Pipeline(""" FFVideoSource("SomeVideo") QTGMC() ### &#8230; <a href="http://www.sapikachu.net/mp_pipeline-run-part-of-avisynth-script-in-external-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>（之前一直没有在Blog上发布，补发一下。。。</p>
<p>功能如题（拖），主要是用来解决部分EP滤镜组合使用时爆内存的情况。具体用法请参考压缩包内的示例脚本。</p>
<p>更新日志：</p>
<pre>0.11
* 大大改善性能，某些情况下开销可下降80%
* 可锁定子进程内的工作线程到单一核心

0.9
* 新功能：帧预读
* 新功能：同时输出多个clip变量
* 新功能：可在多个进程间共享部分代码

0.3
* 修正x86文件夹内的子程序版本
* 内置TCPDeliver，不再依赖外部滤镜
* 修正退出时的随机崩溃
* 分块Branch

0.2
* 新增x64支持（请将压缩包内各平台的TCPDeliver.dll复制到对应的插件目录内）
* 可混合使用x86/x64子进程，详情请参考示例脚本（需要同时安装x86/x64的AviSynth）
* BRANCH进程新增一个变量，使脚本内可以区分不同的进程</pre>
<p><a href="https://github.com/SAPikachu/MP_Pipeline/tree/0.11">源代码</a> <a href="http://nmm.me/cj"> 下载</a></p>
<p>使用实例：</p>
<p>1. 基础用法</p>
<pre>
MP_Pipeline("""
FFVideoSource("SomeVideo")
QTGMC()
### prefetch: 16, 0
### ###
""")
MCTD()

# MCTD及QTGMC会在两个不同的进程内并行运行
</pre>
<p>2. 以大量内存为代价提速MCTD</p>
<pre>
# 要运行这个脚本，系统必须为64位并且至少有8GB内存
MP_Pipeline("""

# 此处数值可能有下降余地，不过我只测试过这个数
SetMemoryMax(3072)

FFVideoSource("SomeVideo")
MCTD(settings="high")
### prefetch: 16, 0
### ###
""")

# 之前用类似的脚本编码时比单纯MCTD有20%~30%速度提升
</pre>
<p>3. 分支</p>
<pre>
MP_Pipeline("""
FFVideoSource("SomeVideo")
TNLMeans()
### prefetch: 16, 0
### branch: 4
### ###
""")

# TNLMeans会在4个进程内分支执行
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/mp_pipeline-run-part-of-avisynth-script-in-external-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>近期EP作品汇总</title>
		<link>http://www.sapikachu.net/%e8%bf%91%e6%9c%9fep%e4%bd%9c%e5%93%81%e6%b1%87%e6%80%bb/</link>
		<comments>http://www.sapikachu.net/%e8%bf%91%e6%9c%9fep%e4%bd%9c%e5%93%81%e6%b1%87%e6%80%bb/#comments</comments>
		<pubDate>Sun, 01 Jan 2012 03:27:00 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[EP]]></category>

		<guid isPermaLink="false">/post/2011/09/07/e8bf91e69c9fEPe4bd9ce59381e6b187e680bb.aspx</guid>
		<description><![CDATA[继续发充数文章。。。最近弄了不少东西，之前只在Twitter发过很快就被刷掉了，还是得在这记录一下。 encx264：encx264-20110819.7z Aegisub-2.1.9-r5553-ffms-2.16.7z Aegisub-2.1.9-r5773-ffms-2.16.7z with 24/32 bit audio support + subtitle grid fix Aegisub-2.1.9-r5789-ffms-r581.7z Aegisub-2.1.9-r5995-ffms-r589.7z Aegisub-2.1.9-r6159-ffms-r589.7z Aegisub-2.1.9-r6195-2-ffms-r643.7z Aegisub-2.1.9-r6195M13-ffms-r656-exec-only.7z VFRHelper：VFRHelper_1.2.7.7z flash3kyuu_deband 1.4.2：x86 / x64 ffms2_r581_with_10bit_hack_libav_ec6d743.7z ffms2 r589 ffms2_r643_libav_86b57e4_with_seeking_bug_workaround.7z ffms2-r656-libav-8ca6e52.7z MP_Pipeline 0.11]]></description>
			<content:encoded><![CDATA[<p>继续发充数文章。。。最近弄了不少东西，之前只在Twitter发过很快就被刷掉了，还是得在这记录一下。</p>
<ul>
<li><a href="/post/2011/03/01/my-x264-script.aspx">encx264</a>：<a href="http://nmm.me/g">encx264-20110819.7z</a></li>
<li><a href="http://nmm.me/c">Aegisub-2.1.9-r5553-ffms-2.16.7z</a></li>
<li><a href="http://nmm.me/2j">Aegisub-2.1.9-r5773-ffms-2.16.7z</a> with 24/32 bit audio support + subtitle grid fix</li>
<li><a href="http://nmm.me/2s">Aegisub-2.1.9-r5789-ffms-r581.7z</a></li>
<li><a href="http://nmm.me/5j">Aegisub-2.1.9-r5995-ffms-r589.7z</a></li>
<li><a href="http://nmm.me/6a">Aegisub-2.1.9-r6159-ffms-r589.7z</a></li>
<li><a href="http://nmm.me/9k">Aegisub-2.1.9-r6195-2-ffms-r643.7z</a></li>
<li><a href="http://nmm.me/d0">Aegisub-2.1.9-</a><a id="filename-480" title="获取文件地址">r6195M13-ffms-r656-exec-only</a><a href="http://nmm.me/d0">.7z</a></li>
<li><a href="/post/2011/08/29/vfrhelper-1_2.aspx">VFRHelper</a>：<a href="http://nmm.me/3z">VFRHelper_1.2.7.7z</a></li>
<li><a href="/post/2011/05/05/flash3kyuu_deband.aspx">flash3kyuu_deband 1.4.2</a>：<a href="http://nmm.me/3h">x86</a> / <a href="http://nmm.me/3j">x64</a></li>
<li><a href="http://nmm.me/2q">ffms2_r581_with_10bit_hack_libav_ec6d743.7z</a></li>
<li><a href="http://nmm.me/5i">ffms2 r589</a></li>
<li><a href="http://nmm.me/9i">ffms2_r643_libav_86b57e4_with_seeking_bug_workaround.7z</a></li>
<li><a id="filename-479" href="http://nmm.me/cz">ffms2-r656-libav-8ca6e52.7z</a></li>
<li><a href="http://www.sapikachu.net/mp_pipeline-run-part-of-avisynth-script-in-external-process/">MP_Pipeline 0.11</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/%e8%bf%91%e6%9c%9fep%e4%bd%9c%e5%93%81%e6%b1%87%e6%80%bb/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Blog迁移完毕</title>
		<link>http://www.sapikachu.net/blog%e8%bf%81%e7%a7%bb%e5%ae%8c%e6%af%95/</link>
		<comments>http://www.sapikachu.net/blog%e8%bf%81%e7%a7%bb%e5%ae%8c%e6%af%95/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 12:33:48 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[杂七杂八]]></category>

		<guid isPermaLink="false">http://www.sapikachu.net/?p=74</guid>
		<description><![CDATA[嗯，因为各种各样的原因，把GoDaddy抛弃掉换成HostGator了，Blog程序也换成了WordPress了，以上（死]]></description>
			<content:encoded><![CDATA[<p>嗯，因为各种各样的原因，把GoDaddy抛弃掉换成HostGator了，Blog程序也换成了WordPress了，以上（死</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/blog%e8%bf%81%e7%a7%bb%e5%ae%8c%e6%af%95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ffms2编译注意点</title>
		<link>http://www.sapikachu.net/ffms2%e7%bc%96%e8%af%91%e6%b3%a8%e6%84%8f%e7%82%b9/</link>
		<comments>http://www.sapikachu.net/ffms2%e7%bc%96%e8%af%91%e6%b3%a8%e6%84%8f%e7%82%b9/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 08:58:02 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[EP]]></category>

		<guid isPermaLink="false">/post/2011/10/29/compiling-ffms2.aspx</guid>
		<description><![CDATA[1. 首先libav的header不能跟mingw的系统header放一起，否则会很坑爹。。。 2. libav里面会引用inttypes.h，这个文件必须从mingw里面复制到某个地方，然后把内容改掉，不然会出现一大堆错误。改好的文件 3. LIB路径参考设置：D:\MinGW\local\lib;D:\MinGW\lib\gcc\i686-pc-mingw32\4.6.1;D:\MinGW\lib;$(LibraryPath) 4. 如链接时找不到 __imp____lc_codepage 符号，参考此处修复。注意libs.cpp里面的文件名要修正。]]></description>
			<content:encoded><![CDATA[<p>1. 首先libav的header不能跟mingw的系统header放一起，否则会很坑爹。。。</p>
<p>2. libav里面会引用inttypes.h，这个文件必须从mingw里面复制到某个地方，然后把内容改掉，不然会出现一大堆错误。<a href="https://gist.github.com/1323933">改好的文件</a></p>
<p>3. LIB路径参考设置：D:\MinGW\local\lib;D:\MinGW\lib\gcc\i686-pc-mingw32\4.6.1;D:\MinGW\lib;$(LibraryPath)</p>
<p>4. 如链接时找不到 __imp____lc_codepage 符号，参考<a href="http://ffmpeg.arrozcru.org/forum/viewtopic.php?f=1&amp;t=891#p3054">此处</a>修复。注意libs.cpp里面的文件名要修正。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/ffms2%e7%bc%96%e8%af%91%e6%b3%a8%e6%84%8f%e7%82%b9/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VFRHelper 1.2.7[2011.11.16更新]</title>
		<link>http://www.sapikachu.net/vfrhelper-1-2-72011-11-16%e6%9b%b4%e6%96%b0/</link>
		<comments>http://www.sapikachu.net/vfrhelper-1-2-72011-11-16%e6%9b%b4%e6%96%b0/#comments</comments>
		<pubDate>Mon, 29 Aug 2011 19:17:00 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[原创工具]]></category>

		<guid isPermaLink="false">/post/2011/08/29/vfrhelper-1_2.aspx</guid>
		<description><![CDATA[3.31：这次更新是@lititude的feature request，意见感谢！ &#160; VFRHelper - MKV章节制作工具（不要问我为什么叫这个名字。。。 更新日志： 1.2.7 (*)TFM OVR文件编辑器1.0.3 (*)FFMS更新到r581 1.2.6 (*)FFMS更新到2.16 1.2.4 (*)FFMS更新到2.13 (*)点击视频进度条可直接跳转到指定位置 (+)TFMOverrideEditor可使用AVS脚本作为视频 (*)其它改动略 1.2.3 (*)修复部分MKV章节文件无法加载的问题 (*)Bug修复 1.2.2 (*)FFMpegSource更新到2.0 beta 4 1.2.1 (*)Bug修复及易用性改动 1.2.0 (+)新增插件框架，章节编辑器改为插件形式 (+)新增插件：TFM OVR文件编辑器 (*)一些小改动 1.1.1 (+)新增功能：按时间跳转 1.1.0 (*)视频代码重写，速度提高 (+)FFMpegSource更新到2.0 beta 3，现在打开非avs文件不需要AviSynth了 (+)使用FFMpegSource打开文件时，在标题栏显示索引进度 &#8230; <a href="http://www.sapikachu.net/vfrhelper-1-2-72011-11-16%e6%9b%b4%e6%96%b0/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>
3.31：这次更新是@lititude的feature request，意见感谢！
</p>
<p>
&nbsp;<a href="/image.axd?picture=WindowsLiveWriter/VFRHelper12.1/43FE0D4F/TFMOVR.jpg"><img style="border-width: 0px" src="/image.axd?picture=WindowsLiveWriter/VFRHelper12.1/591BED2A/TFMOVR_thumb.jpg" border="0" alt="TFMOVR" width="644" height="421" /></a>
</p>
<div id="scid:887EC618-8FBE-49a5-A908-2339AF2EC720:67e044af-bcaa-4d6c-a9b8-dbdf5fa43bf2" class="wlWriterSmartContent" style="padding: 0px; margin: 0px; display: inline; float: none">
<pre>

VFRHelper - MKV章节制作工具（不要问我为什么叫这个名字。。。
更新日志：
1.2.7
(*)TFM OVR文件编辑器1.0.3
(*)FFMS更新到r581
1.2.6
(*)FFMS更新到2.16
1.2.4
(*)FFMS更新到2.13
(*)点击视频进度条可直接跳转到指定位置
(+)TFMOverrideEditor可使用AVS脚本作为视频
(*)其它改动略
1.2.3
(*)修复部分MKV章节文件无法加载的问题
(*)Bug修复
1.2.2
(*)FFMpegSource更新到2.0 beta 4
1.2.1
(*)Bug修复及易用性改动
1.2.0
(+)新增插件框架，章节编辑器改为插件形式
(+)新增插件：TFM OVR文件编辑器
(*)一些小改动
1.1.1
(+)新增功能：按时间跳转
1.1.0
(*)视频代码重写，速度提高
(+)FFMpegSource更新到2.0 beta 3，现在打开非avs文件不需要AviSynth了
(+)使用FFMpegSource打开文件时，在标题栏显示索引进度
(+)新增支持读取VFR MP4的Timecode
(*)一些小改动及bug修复
1.0.2
(+)新增1个快捷键
(+)FFMpegSource更新到1.19
(-)使用按钮能够正常打开非AVI文件了
1.0.1
(+)新增2个快捷键
(+)快捷键现在可以自定义
(*)退出程序时会询问是否保留临时文件（如果有的话）
1.0.0
初始版本
功能：
*可视化制作MKV章节文件
*支持打开TXT及XML格式的章节
*支持VFR（只支持V2的Timecode，如果是V1的话请预先转换好
*查看V2 Timecode各帧的时间（附带功能
*编辑TFM的OVR文件
支持的视频格式：
AVI
AVS
MKV
MP4
FLV
MKV、MP4及FLV需要FFMS2.dll支持。
快捷键说明：
方向键左/右					跳转至上一个/下一个关键帧
Shift+方向键左/右			跳转至上一帧/下一帧（注意：跳转的时候会忽略空帧）
方向键上/下					上一个/下一个章节
空格								设置当前选中章节的时间
F12									解码速度测试（可以无视
快捷键可以自定义，使用记事本之类的工具编辑keymappings.xml即可。按键名称可查看KeyNames.htm获得。
一些注意事项：
*章节文件的格式无法被改变（即只能保存为打开时候的格式）
*新建章节只支持TXT格式
</pre>
</div>
<p>
&nbsp;
</p>
<p>下载： </p>
<p>
<a href="http://nmm.me/3z" target="_blank">完整包</a>（内附源代码）
</p>
<p>
系统需求：
</p>
<p>
.Net Framework 2.0
</p>
<p>
Windows（废话
</p>
<p>
AviSynth（可选
</p>
<p>
源代码编译需求VS2008</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/vfrhelper-1-2-72011-11-16%e6%9b%b4%e6%96%b0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>flash3kyuu_deband 1.4.2 [2011-11-10]</title>
		<link>http://www.sapikachu.net/flash3kyuu_deband-1-4-2-2011-11-10/</link>
		<comments>http://www.sapikachu.net/flash3kyuu_deband-1-4-2-2011-11-10/#comments</comments>
		<pubDate>Thu, 05 May 2011 13:21:22 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[Avisynth相关]]></category>

		<guid isPermaLink="false">/post/2011/05/05/flash3kyuu_deband.aspx</guid>
		<description><![CDATA[Github: https://github.com/SAPikachu/flash3kyuu_deband 1.4.2源代码： https://github.com/SAPikachu/flash3kyuu_deband/tree/1.4.2 效果图： https://picasaweb.google.com/SAPikachu/Flash3kyuu_deband110SampleRev2?feat=directlink 文档：https://raw.github.com/SAPikachu/flash3kyuu_deband/1.4.2/flash3kyuu_deband.zh.txt 更新记录： 1.4.2 (2011-11-10) &#160;&#160; 修复某些非mod16视频的崩溃问题 1.4.1 (2011-11-05) &#160;&#160; 修复YUY2支持 &#160;&#160; 改进位深相关参数的默认值处理 &#160;&#160; precision_mode 4 / 5已过时，并可能会在新的版本中移除，请改用output_mode 1 / 2以得到同样效果 1.4.0 (2011-10-30) &#160;&#160;&#160; 9 ~ 16位深输入/输出 &#160;&#160;&#160;&#160;&#160;&#160;&#160; 相关参数：input_mode/input_depth/output_mode/output_depth &#160;&#160;&#160; 新的随机数生成器，参考像素位置及噪声可以为均匀分布或高斯分布 &#160;&#160;&#160;&#160;&#160;&#160;&#160; 相关参数：random_algo_ref / random_algo_dither &#8230; <a href="http://www.sapikachu.net/flash3kyuu_deband-1-4-2-2011-11-10/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Github: <a href="https://github.com/SAPikachu/flash3kyuu_deband">https://github.com/SAPikachu/flash3kyuu_deband</a>     <br />1.4.2源代码： <a href="https://github.com/SAPikachu/flash3kyuu_deband/tree/1.4.2">https://github.com/SAPikachu/flash3kyuu_deband/tree/1.4.2</a></p>
<p>效果图： <a href="https://picasaweb.google.com/SAPikachu/Flash3kyuu_deband110SampleRev2?feat=directlink">https://picasaweb.google.com/SAPikachu/Flash3kyuu_deband110SampleRev2?feat=directlink</a></p>
<p>文档：<a title="https://raw.github.com/SAPikachu/flash3kyuu_deband/1.4.2/flash3kyuu_deband.zh.txt" href="https://raw.github.com/SAPikachu/flash3kyuu_deband/1.4.2/flash3kyuu_deband.zh.txt">https://raw.github.com/SAPikachu/flash3kyuu_deband/1.4.2/flash3kyuu_deband.zh.txt</a></p>
<p>更新记录：</p>
<p>1.4.2 (2011-11-10)    <br />&#160;&#160; 修复某些非mod16视频的崩溃问题</p>
<p>1.4.1 (2011-11-05)    <br />&#160;&#160; 修复YUY2支持     <br />&#160;&#160; 改进位深相关参数的默认值处理     <br />&#160;&#160; precision_mode 4 / 5已过时，并可能会在新的版本中移除，请改用output_mode 1 / 2以得到同样效果</p>
<p>1.4.0 (2011-10-30)    <br />&#160;&#160;&#160; 9 ~ 16位深输入/输出     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 相关参数：input_mode/input_depth/output_mode/output_depth     <br />&#160;&#160;&#160; 新的随机数生成器，参考像素位置及噪声可以为均匀分布或高斯分布     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160; 相关参数：random_algo_ref / random_algo_dither     <br />&#160;&#160;&#160; diff_seed已被dynamic_dither_noise取代，启用时每帧的噪声模式会变化     <br />&#160;&#160;&#160; 另一个新参数：enable_fast_skip_plane     <br />&#160;&#160;&#160; 新增滤镜短名：f3kdb     <br />&#160;&#160;&#160; 新的ICC编译版理论上可在SSE2前的CPU上运行（未测试）     <br />&#160;&#160;&#160; 少量Bug修复</p>
<p>1.3.0 (2011-09-07)     <br />&#160;&#160;&#160; 新增x64版本     <br />&#160;&#160;&#160; 新增降色深滤镜：f3kdb_dither     <br />&#160;&#160;&#160; 内部处理精度提升至16bit     <br />&#160;&#160;&#160; 新增参数：keep_tv_range，具体说明请参考readme.zh.txt     <br />&#160;&#160;&#160; 修改sample_mode的默认值到2     <br />&#160;&#160;&#160; Bug修复：Floyd-Steinberg dither用于full-range视频时，结果可能会有错误     <br />&#160;&#160;&#160; Bug修复：错误的YUY2 debanding     <br />&#160;&#160;&#160; 少量优化     <br />&#160; <br />1.2.0 (2011-08-01)     <br />&#160;&#160;&#160; 新增支持YUY2（未优化）     <br />&#160;&#160;&#160; 新增支持AviSynth 2.6中新的平面YUV格式     <br />&#160;&#160;&#160; 滤镜现在同时支持AviSynth 2.5及2.6     <br />&#160;&#160;&#160; 16bit输出（precision_mode = 4/5）     <br />&#160;&#160;&#160; （目前内部处理精度仍然为14bit，未来的版本会改进）     <br />1.1.0 (2011-06-18)     <br />&#160;&#160;&#160; 修复在高精度模式下高阈值造成的错误     <br />&#160;&#160;&#160; 更改阈值效果以增加可调节性，同一个阈值在新版中的效果会变弱     <br />&#160;&#160;&#160; SSE优化高精度模式     <br />&#160;&#160;&#160; 对某些无效参数组合直接提示错误     <br />1.0.2 (2011-06-06)     <br />&#160;&#160;&#160; 高精度处理模式（目前未进行优化，将会下一个版本添加）     <br />&#160;&#160;&#160; 正确处理帧边缘     <br />&#160;&#160;&#160; 修正某些情况下的崩溃     <br />&#160;&#160;&#160; 其它bug修复     <br />1.0.1 (2011-05-27)     <br />&#160;&#160;&#160; 多线程处理     <br />&#160;&#160;&#160; 不处理阈值为0的平面     <br />&#160;&#160;&#160; <br />1.0.0 (2011-05-21)     <br />&#160;&#160;&#160; 修复大量Bug     <br />&#160;&#160;&#160; 新增SSE优化，速度大幅提升，i5-520m默认参数可以达到24fps以上     <br />0.9.1 (2011-05-05)     <br />&#160;&#160;&#160; 修正：当blur_first=false时，处理结果会出错     <br />0.9 (2011-05-04)     <br />&#160;&#160;&#160; 原始发布版</p>
<p>下载：<a title="http://www.nmm-hd.org/newbbs/viewtopic.php?f=7&amp;t=239" href="http://www.nmm-hd.org/newbbs/viewtopic.php?f=7&amp;t=239">http://www.nmm-hd.org/newbbs/viewtopic.php?f=7&amp;t=239</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/flash3kyuu_deband-1-4-2-2011-11-10/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自用的x264压制脚本（8/19更新）</title>
		<link>http://www.sapikachu.net/%e8%87%aa%e7%94%a8%e7%9a%84x264%e5%8e%8b%e5%88%b6%e8%84%9a%e6%9c%ac%ef%bc%88819%e6%9b%b4%e6%96%b0%ef%bc%89/</link>
		<comments>http://www.sapikachu.net/%e8%87%aa%e7%94%a8%e7%9a%84x264%e5%8e%8b%e5%88%b6%e8%84%9a%e6%9c%ac%ef%bc%88819%e6%9b%b4%e6%96%b0%ef%bc%89/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 12:28:18 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[EP]]></category>

		<guid isPermaLink="false">/post/2011/03/01/my-x264-script.aspx</guid>
		<description><![CDATA[某晚上在某EP群搅流基术交流技术时获得强烈反响，于是稍微改进下就贴上来了。 &#160; 脚本主要功能： * 支持1Pass crf + 2Pass bitrate模式，自动获取crf出来的码率作为2pass参数 * 自动记录压制log * 多target支持，脚本内可定义多套预置参数 代码 &#124; 代码打包下载 &#124; 免Python打包版 （脚本需求Python 3 更新日志： &#160; ## 2011-08-19 * Bug修复 * 如在参数中指定音频，则在1pass自动禁用以防止错误（可使用&#8211;1pass-same-extra-args禁用此行为） ## 2011-08-15 * 任务系统显示增强 ^ 控制台标题栏显示整体及运行中任务进度 ^ 任务完成后在信息输出中显示码率及fps ## 2011-08-12 * 以彩色输出任务列表 &#8230; <a href="http://www.sapikachu.net/%e8%87%aa%e7%94%a8%e7%9a%84x264%e5%8e%8b%e5%88%b6%e8%84%9a%e6%9c%ac%ef%bc%88819%e6%9b%b4%e6%96%b0%ef%bc%89/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>某晚上在某EP群<strike>搅流基术</strike>交流技术时获得强烈反响，于是稍微改进下就贴上来了。</p>
<p>&#160;</p>
<p>脚本主要功能：     <br />* 支持1Pass crf + 2Pass bitrate模式，自动获取crf出来的码率作为2pass参数     <br />* 自动记录压制log     <br />* 多target支持，脚本内可定义多套预置参数</p>
<p><a href="https://github.com/SAPikachu/encx264/tree/stable">代码</a> | <a href="https://github.com/SAPikachu/encx264/zipball/stable">代码打包下载</a> | <a href="http://www.nmm-hd.org/upload/get~HIdkMxkjOM0/encx264-20110819.7z">免Python打包版</a></p>
<p>（脚本需求Python 3</p>
<p>更新日志：</p>
<blockquote><p>&#160;</p>
<p>## 2011-08-19</p>
<p>* Bug修复     <br />* 如在参数中指定音频，则在1pass自动禁用以防止错误（可使用&#8211;1pass-same-extra-args禁用此行为）</p>
<p>## 2011-08-15       <br />* 任务系统显示增强       <br />^ 控制台标题栏显示整体及运行中任务进度       <br />^ 任务完成后在信息输出中显示码率及fps</p>
<p>## 2011-08-12       <br />* 以彩色输出任务列表       <br />* 修复：1pass任务有时会在完成时卡死</p>
<p>## 2011-08-05       <br />* 修复任务系统与额外参数的冲突</p>
<p>## 2011-08-04       <br />* 新增任务系统，默认可同时运行两个1pass任务，并于所有1pass完成后再逐个运行2pass任务。简单命令说明请参考encx264.py !task help       <br />* 可于target内指定x264路径，可参考sample设置       <br />* 本版本无法从旧版自动更新，请下载完整版</p>
<p>## 2011-04-11       <br />* 新参数：&#8211;inFile-2pass * ：2pass时使用另一个avs脚本       <br />* 参数现在对大小写不敏感了</p>
<p>## 2011-03-15       <br />* 默认不记录压制进度，减小log体积</p>
<p>## 2011-03-14       <br />* 支持指定x264优先级       <br />* 支持1pass压制，把target内的2pass参数删除即可       <br />* 支持脚本自动更新</p>
<p>## 2011-03-06       <br />* 可直接在命令行附加x264参数</p>
<p>## 2011-03-03       <br />* 修正路径内不能包含空格的问题</p>
</blockquote>
<p>基本用法：   <br />下载后放到x264目录，然后使用以下格式执行命令即可开始压制：
<dl>
<dt>&#160;</dt>
<dd><code>&#160;&#160;&#160; encx264.py &lt;target&gt; xxxx.avs xxxx.mp4 &lt;crf&gt; --tc &quot;&quot;        <br /></code></dd>
</dl>
<p>其中&lt;target&gt;为脚本内定义的target名字，后面的&#8211;tc &quot;&quot;是禁用输入timecode（因为我做的片子全部是VFR，为了偷懒脚本默认会使用脚本目录下的timecode.txt作为输入timecode，如果找不到就会报错）   <br />target的定义方法请参考脚本内的现有target，注意花括号参数会在运行时替换为实际值。最终传给x264的参数由公共参数和target特定参数组成。   <br />脚本可选参数：<br />
<blockquote>
<p>&#8211;bitrate *：强制指定码率，适用于1pass不是crf的target       <br />&#8211;sar *：指定sar，注意如果target内没有default_sar，不在命令行指定sar会报错       <br />&#8211;ref *：指定ref，如忽略脚本会使用target指定的default_ref       <br />&#8211;pass 2：跳过1pass，如之前用脚本运行过1pass，码率会从记录文件内读取，否则需要用&#8211;bitrate指定码率       <br />&#8211;tc &quot;xxxx.txt&quot;：指定输入timecode，忽略的话脚本会使用avs目录下的timecode.txt，找不到就会报错。如要禁用输入timecode，指定&#8211;tc &quot;&quot;       <br />&#8211;bitrate-ratio *：2pass和1pass的码率比例，默认为1.0（即使用一样的码率）       <br />&#8211;priority [idle|below_normal|normal|above_normal|high]：指定x264进程优先级       <br />&#8211;inFile-2pass &quot;xxxxx.avs&quot;：2pass时使用另一个avs脚本       <br />&#8211; [参数]：在&#8211;后面的所有参数都会直接添加到x264命令行，例：       <br />encx264.py &lt;&#8230;.&gt; &#8212; &#8211;vf resize:640&#215;480</p>
</blockquote>
<p>任务系统：<br />
<blockquote>
<p>默认可同时运行两个1pass任务，并于所有1pass完成后再逐个运行2pass任务。       <br />添加任务： encx264.py !task add &lt;参数&gt;       <br />（如：encx264.py !task add mkv_720p avs.avs video.mp4 20 &#8211;tc &quot;&quot;）       <br />清空任务： encx264.py !task clear       <br />执行任务： encx264.py !task run</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/%e8%87%aa%e7%94%a8%e7%9a%84x264%e5%8e%8b%e5%88%b6%e8%84%9a%e6%9c%ac%ef%bc%88819%e6%9b%b4%e6%96%b0%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASP.NET Padding Oracle漏洞修复补丁代码分析</title>
		<link>http://www.sapikachu.net/asp-net-padding-oracle%e6%bc%8f%e6%b4%9e%e4%bf%ae%e5%a4%8d%e8%a1%a5%e4%b8%81%e4%bb%a3%e7%a0%81%e5%88%86%e6%9e%90/</link>
		<comments>http://www.sapikachu.net/asp-net-padding-oracle%e6%bc%8f%e6%b4%9e%e4%bf%ae%e5%a4%8d%e8%a1%a5%e4%b8%81%e4%bb%a3%e7%a0%81%e5%88%86%e6%9e%90/#comments</comments>
		<pubDate>Wed, 29 Sep 2010 09:08:52 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">/post/2010/09/29/quick-code-analysis-of-asp-net-padding-oracle-patch.aspx</guid>
		<description><![CDATA[这几天ASP.NET的Padding Oracle漏洞（视频）闹得是沸沸扬扬，M$刚刚发布了修复补丁，EP起来于是研究下M$是怎么样修复的。 Reflector跟踪一下，很容易能找到关键方法是System.Web.Configuration.MachineKeySection.EncryptOrDecryptData，对比补丁前和补丁后的方法主体发现补丁后的版本主要是添加了Hash签名检测： 1: // ... snip ... 2:&#160; 3: if (!fEncrypt &#38;&#38; signData) 4: { 5: if ((start != 0) &#124;&#124; (length != buf.Length)) 6: { 7: byte[] dst = new byte[length]; 8: Buffer.BlockCopy(buf, start, dst, 0, length); 9: &#8230; <a href="http://www.sapikachu.net/asp-net-padding-oracle%e6%bc%8f%e6%b4%9e%e4%bf%ae%e5%a4%8d%e8%a1%a5%e4%b8%81%e4%bb%a3%e7%a0%81%e5%88%86%e6%9e%90/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>这几天ASP.NET的<a href="http://www.gdssecurity.com/l/b/2010/09/14/automated-padding-oracle-attacks-with-padbuster/">Padding Oracle</a><a href="http://weblogs.asp.net/scottgu/archive/2010/09/18/important-asp-net-security-vulnerability.aspx">漏洞</a>（<a href="http://www.youtube.com/watch?v=yghiC_U2RaM&amp;hd=1">视频</a>）闹得是沸沸扬扬，M$刚刚发布了<a href="http://weblogs.asp.net/scottgu/archive/2010/09/28/asp-net-security-update-now-available.aspx">修复补丁</a>，EP起来于是研究下M$是怎么样修复的。</p>
<p>Reflector跟踪一下，很容易能找到关键方法是System.Web.Configuration.MachineKeySection.<b><a href="http://www.aisto.com/roeder/dotnet/Default.aspx?Target=code://System.Web:4.0.0.0:b03f5f7f11d50a3a/System.Web.Configuration.MachineKeySection/EncryptOrDecryptData(Boolean,Byte%5b%5d,Byte%5b%5d,Int32,Int32,Boolean,Boolean,System.Web.Configuration.IVType,Boolean):Byte%5b%5d">EncryptOrDecryptData</a></b>，对比补丁前和补丁后的方法主体发现补丁后的版本主要是添加了Hash签名检测：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #008000">// ... snip ...</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #0000ff">if</span> (!fEncrypt &amp;&amp; signData)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #0000ff">if</span> ((start != 0) || (length != buf.Length))</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>         <span style="color: #0000ff">byte</span>[] dst = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[length];</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>         Buffer.BlockCopy(buf, start, dst, 0, length);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>         buf = dst;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>         start = 0;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>     buf = GetUnHashedData(buf);</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>     <span style="color: #0000ff">if</span> (buf == <span style="color: #0000ff">null</span>)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>         <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> HttpException(SR.GetString(<span style="color: #006080">&quot;Unable_to_validate_data&quot;</span>));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span>     length = buf.Length;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span> }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span> // ... snip ...</pre>
<p><!--CRLF--></div>
</div>
<p>（hash函数内部使用validationKey作为salt或者HMAC的key，这里略过）</p>
<p>另外整个方法体也被一个try catch块包了起来，遇到异常直接抛出统一的异常：</p>
<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span> <span style="color: #0000ff">try</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span>     <span style="color: #008000">// ... snip ...</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span> <span style="color: #0000ff">catch</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span> {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>     <span style="color: #0000ff">throw</span> <span style="color: #0000ff">new</span> HttpException(SR.GetString(<span style="color: #006080">&quot;Unable_to_validate_data&quot;</span>));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span> }</pre>
<p><!--CRLF--></div>
</div>
<p>从这两点看来，理论上Padding Oracle攻击的漏洞已经被堵上了。首先，因为加上了数据签名，攻击者没办法随意修改已知的数据；另外抛出的异常内部把有关错误原因的信息都消除了，攻击者没办法区分Padding错误和解密错误，攻击自然没办法进行了。</p>
<p>M$这次的反应速度算是不错，漏洞爆出来两个星期左右就放出补丁了，估计是因为影响太大了吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/asp-net-padding-oracle%e6%bc%8f%e6%b4%9e%e4%bf%ae%e5%a4%8d%e8%a1%a5%e4%b8%81%e4%bb%a3%e7%a0%81%e5%88%86%e6%9e%90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pikapika上线</title>
		<link>http://www.sapikachu.net/pikapika%e4%b8%8a%e7%ba%bf/</link>
		<comments>http://www.sapikachu.net/pikapika%e4%b8%8a%e7%ba%bf/#comments</comments>
		<pubDate>Sun, 26 Sep 2010 18:42:20 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">/post/2010/09/26/pikapika-goes-online.aspx</guid>
		<description><![CDATA[Pikapika pre-Alpha上线，目前只上传了化物语上，这几天弄好后台之后就上传其它小说。征求各种意见 另外浏览器目前只测试过IE7/8/FF3.6/Chrome6/Opera10.62/Safari5.0.2，其它浏览器有可能会RP（特别是IE6），这个稍后再决定是否支持。。。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.pikapika.me/">Pikapika pre-Alpha</a>上线，目前只上传了化物语上，这几天弄好后台之后就上传其它小说。征求各种意见 </p>
<p>另外浏览器目前只测试过IE7/8/FF3.6/Chrome6/Opera10.62/Safari5.0.2，其它浏览器有可能会RP（特别是IE6），这个稍后再决定是否支持。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/pikapika%e4%b8%8a%e7%ba%bf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>神奇的Boolean</title>
		<link>http://www.sapikachu.net/%e7%a5%9e%e5%a5%87%e7%9a%84boolean/</link>
		<comments>http://www.sapikachu.net/%e7%a5%9e%e5%a5%87%e7%9a%84boolean/#comments</comments>
		<pubDate>Fri, 10 Sep 2010 14:55:59 +0000</pubDate>
		<dc:creator>SAPikachu</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[编程相关]]></category>

		<guid isPermaLink="false">/post/2010/09/10/weird-boolean.aspx</guid>
		<description><![CDATA[1:&#160; 2: // &#34;true&#34; or &#34;false&#34; 3: public static string Bool2Str(bool b) 4: { 5: switch (b) 6: { 7: case true: 8: return System.Boolean.TrueString; 9: case false: 10: return System.Boolean.FalseString; 11: default: 12: return &#34;error&#34;; 13: } 14: } &#8230; <a href="http://www.sapikachu.net/%e7%a5%9e%e5%a5%87%e7%9a%84boolean/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div style="border-bottom: silver 1px solid; text-align: left; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper">
<div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum1">   1:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum2">   2:</span> <span style="color: #008000">// &quot;true&quot; or &quot;false&quot;</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum3">   3:</span> <span style="color: #0000ff">public</span> <span style="color: #0000ff">static</span> <span style="color: #0000ff">string</span> Bool2Str(<span style="color: #0000ff">bool</span> b)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum4">   4:</span> {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum5">   5:</span>     <span style="color: #0000ff">switch</span> (b)</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum6">   6:</span>     {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum7">   7:</span>         <span style="color: #0000ff">case</span> <span style="color: #0000ff">true</span>:</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum8">   8:</span>         <span style="color: #0000ff">return</span> System.Boolean.TrueString;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum9">   9:</span>         <span style="color: #0000ff">case</span> <span style="color: #0000ff">false</span>:</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum10">  10:</span>         <span style="color: #0000ff">return</span> System.Boolean.FalseString;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum11">  11:</span>         <span style="color: #0000ff">default</span>:</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum12">  12:</span>         <span style="color: #0000ff">return</span> <span style="color: #006080">&quot;error&quot;</span>;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum13">  13:</span>     }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum14">  14:</span> } </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum15">  15:</span>&#160; </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum16">  16:</span> Console.WriteLine(Bool2Str(<span style="color: #0000ff">true</span>));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum17">  17:</span> Console.WriteLine(Bool2Str(<span style="color: #0000ff">false</span>)); </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum18">  18:</span> <span style="color: #0000ff">unsafe</span></pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum19">  19:</span> {</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum20">  20:</span>     <span style="color: #0000ff">bool</span> val;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum21">  21:</span>     *((<span style="color: #0000ff">byte</span>*)&amp;val) = 2;</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum22">  22:</span>     Console.WriteLine(val); </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum23">  23:</span>     Console.WriteLine(val==<span style="color: #0000ff">true</span>); </pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum24">  24:</span>     Console.WriteLine(Bool2Str(val));</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum25">  25:</span> }</pre>
<p><!--CRLF--></p>
<pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &#39;Courier New&#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060" id="lnum26">  26:</span>&#160; </pre>
<p><!--CRLF--></div>
</div>
<p>大家可以猜一下这段代码会输出什么，我也是看了<a href="http://thedailywtf.com/Comments/Truthful-Strings.aspx">某篇文章的评论</a>才知道会出现这么诡异的情况。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sapikachu.net/%e7%a5%9e%e5%a5%87%e7%9a%84boolean/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

