存档

2015年3月 的存档

Linux中访问USB摄像头

2015年3月5日 没有评论

衣服自己洗的香蕉派是基于Lubuntu的arm系统,在前几天刚完成语音合成的技术难题。今天头脑发热,就想看看视频这块。

其实在衣服自己洗的另外一个香蕉派上,已经有一个处理模块了。定时每2分钟,从局域网里的摄像头上获取图片,并上传到yeelink上。当初写这个模块是为了熟悉物联网的概念,所以视频图片并不是从本机获取的。

恰好手头上有一个几年前淘汰的USB摄像头,打算用来练练手。
首先插上USB摄像头,然后运行命令

ls /dev

如果USB摄像头被识别的话,里面应该可以看到video0。

接着查看当前的USB设备

lsusb

我这里运行结果如图所示:

lsusb如红线标记,Z-Star传说是国内比较大的山寨厂商,记录摄像头设备的硬件ID,0ac8:303b,然后访问http://mxhaard.free.fr/spca5xx.html查看spca5xx是否支持你的USB摄像头。

接下来安装camorama,

sudo apt-get install camorama

接下来,可以在远程桌面里访问这个程序,当然香蕉派系统自带的guvcview程序也是可以查看视频的。网上也有下面的方式

sudo apt-get install mplayer

sudo mplayer tv://

不过衣服自己洗用这个方式虽然可以查看视频,不过有一些错误信息。

如果各位同学的摄像头不是免驱动的话,要么就是下载对应的驱动安装,不过最快的就是换个别的型号的摄像头。

分类: 一句话, 日常 标签: , ,

Windows Server禁用SSL 3.0

2015年3月4日 没有评论

今天衣服自己洗在对网站的SSL证书续费的时候,发现网站提供了一个安全工具,顺便就用了一下,发现有个SSL 3的信息泄漏漏洞。

攻击者如何利用此漏洞?

在人为干预 (MITM) 攻击中,攻击者可能使加密的 TLS 会话降低,强制客户端使用 SSL 3.0,然后强制浏览器执行恶意代码。此代码向目标 HTTPS 网站发送许多请求,其中如果存在以前经过身份验证的会话,则会自动发送 Cookie。这是要利用此漏洞所必需的条件。攻击者然后可以截取此 HTTPS 通信,并通过利用 SSL 3.0 中 CBC 分组密码的漏洞,可以对加密通信的某些部分(例如身份验证 Cookie)进行解密。
攻击者可能利用此漏洞执行什么操作?
成功利用此漏洞的攻击者可以对加密通信的某些部分进行解密。
造成此漏洞的原因是什么?
SSL 3.0 中使用的 CBC 加密算法存在漏洞。

在windows server服务器中,基本上都使用的是IIS,而要修复该漏洞的话,需要从注册表入手。修复方式如下:

打开服务器注册表编辑器,找到路径 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Protocols

在下面新建一个 SSL 3.0的项,然后在右边新建一个Dword 格式的键值,名称为Enabled,值为0.

重启服务器即可。

而在微软官方的文档中,Enabled 居然被翻译成中文,导致无法生效。

树莓派/香蕉派语音合成

2015年3月3日 没有评论

自从衣服自己洗入手了香蕉派(banana pi)后,已经过去了很长时间了。
其实这些时间里,一直在解决语音合成的问题。按照当时的初衷是想做一个有点智(dou)能(bi)味道的东西。在olay怀孕期间,做了一个定时任务,每天定时播放胎教音乐,不过现在看起来小红薯似乎对音乐也没有多大兴趣。

然后第二步是打算做天气的定时语音预报,一直比较中意的是科大讯飞的语音合成技术。衣服自己洗本来就对Linux编译特别不熟悉,在他们的开放平台上申请了个appid后,就走上了自我折磨的不归路哇。

由于香蕉派上安装的是Lubuntu系统,硬件配置不算好,所以打算在电脑上把代码编译后再复制到香蕉派上。科大讯飞官方提供的SDK,并没有c#的版本,就考虑用c++编译一个仅仅负责语音合成的程序,然后用c#来写逻辑。Java什么的还是算了吧,看到java一大堆的配置就头疼。

mono安装下来,跑了个命令行似乎没有什么问题,于是开始处理语音合成部分。装了个Ubuntu虚拟机,编译官方的demo后拷贝到香蕉派上,运行失败。突然想起来banana pi是基于arm系统,而虚拟机里的ubuntu是基于x86的。

那么退一步,直接在香蕉派上编译应该就可以了吧。
于是直接远程桌面香蕉派,安装了CodeLite开发环境,上传源码,编译失败,一番搜索发现是要添加 -ldl 选项,但是一看官方的build脚本,是有这个选项的。后来各种尝试后,万万没有想到,应该把 -ldl 放到编译命令的最后面。当然咯,-pthread 也是一样的道理,这里就不多说了。

坑的眼睛都睁不开。

修改了编译脚本后,可以正常编译了,但是运行失败,估计是官方提供的 libmsc.so 库格式不对。
于是发邮件,对方说需要提供appid和交叉编译的名称,于是又网上搜索交叉编译,发现大家用的基本上是arm-linux-gcc,回邮件。一周后,交叉编译提供的 libmsc.so 库发过来,重新引用编译。
运行提示找不到 libmsc.so 库。再次网络搜索,发现Linux系统中对于共享库文件默认是在固定的几个目录里,而不像windows那样,先从程序的运行目录里查找dll文件。添加进去还是不行。接着网络搜索,发现还要设置 export LD_LIBRARY_PATH 为库文件存放的目录,同时还需要sudo ldconfig -v来刷新。

多么纠结的Linux啊~泪流满面。喔,忘记说的是,衣服自己洗还不会C++,为了这事情,又买了C++开发的书来学习,精神可嘉有没有~

运行还是提示找不到libmsc.so文件,官方论坛里也没有有效的答复,最后我放弃了。

今天在论坛里发现官方释放了一个针对树莓派的demo,但是提供的是一个静态库a文件。抱着试一试的想法,上传,编译失败。网上搜索也没有个所以然出来。照葫芦画瓢自己写编译脚本运行还是不行。突然想起来前面的 -ldl 要放到最后面的问题,于是添加到最后。终于编译成功,运行成功。

很是激动有没有,这就意味着困扰了好几个月的问题终于解决了。后面就好说了,获取天气预报,用c#来处理,这个实现,就放到后面的博客里描述吧。