点击一下 名称 那个column即可 ![]()

点击一下 名称 那个column即可 ![]()

今天对电子科技大学清水河校区的宿舍网络突然有了兴趣,写了个小工具来扫描各个router的信息。以后有时间再深入一点,研究出个拓扑图之类的东西出来。
import socket, sys, time
for x in range(1,254):
s = socket.socket(2, 1)
s.settimeout(0.5)
ip="222.197."+str(x)+".1"
try:
s.connect((ip, 23))
print ip
time.sleep(0.2)
d=s.recv(1024)
print d
except:
pass
finally:
s.close()
得到结果:
222.197.176.1 uestc-benke-10D2#-3750-24TS-1> 222.197.177.1 uestc-shuoshi-1D-3750-24TS-1> 222.197.178.1 uestc-shuoshi-3D-3750-24TS-1> 222.197.179.1 uestc-shuoshi-4D-3750-24TS-1> 222.197.180.1 uestc-shuoshi-6D-3750-24TS-1> 222.197.181.1 uestc-shuoshi-7D-3750-24TS-1> 222.197.182.1 uestc-benke-2D-3750-24TS-1>
发现python的socket对象有点问题,如果出错了,错误状态不能清除,即使重新开一个python shell也无济于事。
清水河校区宿舍网络的router都没有加密码,电信的网管真不负责 -_-!
软件特点:
值得一提的是,该程序只有49KB大,而且内嵌了一个29.9KB的 clock.chm 帮助文件,释放在 C:\Windows\clock.chm
罗云彬是国内汇编界的著名超级黑客,也是当年的文曲星高手。著有 《Windows 环境下32位汇编语言程序设计(第2版)》
最近为DormForce Music和Media研发anti-leeching, viewing only机制,顺便抓包了几个支持media streaming的流行播放器HTTP headers,记下备用
GET /1.avi HTTP/1.1 Accept: */* User-Agent: Windows-Media-Player/11.0.6000.6336 UA-CPU: x86 Accept-Encoding: gzip, deflate Host: 222.197.188.x Connection: Keep-Alive Cookie: __utma=78507287.1103584299.1187456764.1189668525.1190966298.6; __utmz=78507287.1187456764.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
可以说Windows Media Player是最没有特色的一个播放器了,HTTP请求头一点特征都没有。
MPC是著名的开源播放器,它会尝试2次HTTP请求
GET /1.rmvb HTTP/1.0 User-Agent: Media Player Classic Host: 222.197.188.x Accept: */*
第二次
GET /1.rmvb HTTP/1.1 Accept: */* UA-CPU: x86 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.0.590; .NET CLR 3.5.20706) Host: 222.197.188.x Connection: Keep-Alive Cookie: __utma=78507287.1103584299.1187456764.1189668525.1190966298.6; __utmz=78507287.1187456764.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
RealPlayer是著名的播放器,广告暴多。
GET /1.rmvb HTTP/1.1 Accept: */* User-Agent: RMA/1.0 (compatible; RealMedia) Icy-MetaData: 1 Bandwidth: 393216 ClientID: WinNT_5.1_6.0.12.1741_RealPlayer_R31CND_zh-CN_686 Cookie: __utma=78507287.1103584299.1187456764.1189668525.1190966298.6; __utmz=78507287.1187456764.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) GUID: 00000000-0000-0000-0000-000000000000 Language: zh-CN, zh, * PlayerCookie: ASP.NET_SessionId RegionData: 0 SupportsMaximumASMBandwidth: 1 Connection: Keep-Alive Host: 222.197.188.x Accept-Language: zh-CN, zh, * Accept-Encoding: gzip
KMPlayer是传说中的全能播放器,会多次尝试多个HTTP请求 首先是User-Agent: http_parser
GET /1.rmvb HTTP/1.1 User-Agent: http_parser Host: 222.197.188.x Cookie: __utma=78507287.1103584299.1187456764.1189668525.1190966298.6; __utmz=78507287.1187456764.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)
然后添加了个Icy-MetaData:1,用于解析metaData
GET /1.rmvb HTTP/1.0 Icy-MetaData:1 User-Agent: shoutcastsource Host: 222.197.188.x Accept: */* Connection: Keep-Alive
没有User-Agent
GET /1.rmvb HTTP/1.0 Icy-MetaData:1 Host: 222.197.188.x Accept: */* Connection: Keep-Alive
尝试解析HTML
GET /1.rmvb HTTP/1.1 Content-Type: text/html Host: 222.197.188.x Accept: text/html, */* User-Agent: Mozilla/3.0 (compatible; Indy Library) Range: bytes=0-9
模仿RealPlayer
GET /1.rmvb HTTP/1.1 Accept: */* User-Agent: RMA/1.0 (compatible; RealMedia) Icy-MetaData: 1 Bandwidth: 524300 ClientID: WinNT_6.0_10.0.0.0_play32_RN01_EN_686 Cookie: __utma=78507287.1103584299.1187456764.1189668525.1190966298.6; __utmz=78507287.1187456764.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) GUID: 00000000-0000-0000-0000-000000000000 Language: zh-CN RegionData: 0 SupportsMaximumASMBandwidth: 1 Connection: Keep-Alive Host: 222.197.188.x Accept-Language: zh-CN Accept-Encoding: gzip
所以我们可以根据Icy-MetaData: 1这个请求头来限制某些静态HTTP资源只允许播放器打开,让下载工具和浏览器都不能leech服务器上的资源。(Orbit Downloader可以突破这些限制)
以前写vbs的时候获得本身.vbs的绝对路径很简单 WScript.Echo(WScript.ScriptFullName),在python下想实现相同的功能,没有找到对应的object和属性。原因是:Python可以直接在shell下执行,所以不一定是以文件的形式运行的。最后找到了一个属性 __file__,写成完整的代码就是
import os
print os.path.abspath(os.path.join(os.getcwd(), __file__))
abspath()是为了避免 ///// ../ 等不严格路径的出现
在Vista Ultimate+Python 2.5和debian+Python 2.4上测试过,工作的很好。
好久没写blog了,最近超级忙,coding的时间比较少。
A very common error among django learner is like this:
From django.db import models
From django.contrib.auth.models import User
# Create your models here.
class DLUser(models.Model):
xxxx = models.xxxxField()
user = models.OneToOneField('CustomUser', User)
...
When execute python manage.py validate you'll get
Traceback (most recent call last):
File "manage.py", line 13, in
execute_manager(settings)
File "C:\Python25\Lib\site-packages\django\core\management.py", line 1672, in
execute_manager
execute_from_command_line(action_mapping, argv)
File "C:\Python25\Lib\site-packages\django\core\management.py", line 1569, in
execute_from_command_line
action_mapping[action]()
File "C:\Python25\Lib\site-packages\django\core\management.py", line 1152, in
validate
num_errors = get_validation_errors(outfile)
File "C:\Python25\Lib\site-packages\django\core\management.py", line 1018, in
get_validation_errors
for r in rel_opts.get_all_related_objects():
File "C:\Python25\Lib\site-packages\django\db\models\options.py", line 125, in
get_all_related_objects
if f.rel and self == f.rel.to._meta:
AttributeError: 'str' object has no attribute '_meta'
The error message is misleading. Infact you just made a mistake here
user = models.OneToOneField('CustomUser', User)
Correct that to
user = models.OneToOneField(User, 'CustomUser')
Or, according to official defination of verbose-field-names, ForeignKey, ManyToManyField and OneToOneField require the first argument to be a model class, so use the verbose_name keyword argument:
user = models.OneToOneField(User, verbose_name='CustomUser')
And the problem is solved.
想做个GTalkBot玩玩,于是在Debian etch上部署PyXMPP。
官网写得很清楚:
For PyXMPP you will need:
- Python. PyXMPP was designed for Python 2.4, 2.3 should work too.
- libxml2. Recent release (>=2.6.11) with python bindings is required. Additionally, all development files for libxml2 (usually in separate libxml2-devel package) are recommended for compilation of PyXMPP for best performance. PyXMPP 1.0 was tested with libxml2-2.6.21.
- dnspython. PyXMPP 1.0 was tested with version 1.3.4.
- M2Crypto for TLS support. Tested with M2Crypto-0.13/swig-1.3.21.
所以部署pyxmpp就相当简单而方便了
su
apt-get install python-dev
apt-get install libxml2
apt-get install libxml2-dev
apt-get install python-libxml2
apt-get install dnspython
apt-get install m2crypto
apt-get install m2crypto-dev
apt-get install python-m2crypto
接下来下载pyxmpp-1.0.0.tar.gz,解包并且
python setup.py build
python setup.py install
安装完毕。甩出python的shell:
Python 2.4.4 (#2, Apr 5 2007, 20:11:1 ![]()
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pyxmpp
>>> print pyxmpp
>>>
部署完毕。
恩,apt-get真是个好东西。
WLW test
Update: yo2.cn终于解封了
继续Blogging。
由于IE下没有很好的xHTML/DOM/JS调试工具,所以不得不安装了一个Firefox 2.0.0.6。记得最第一次用Firefox的时候,Firefox还叫Pheonix Browser,跟Opera一个级别的。后来慢慢地发现Firefox1.0 兼容性问题太多,于是弃之不用。加上重装系统后Firefox的配置文档就丢了,很不爽,后来一直用Maxthon,目前用的是TheWorld2。
其实安装完毕Firefox后不要立即启动Firefox,先打开cmd,跳到Firefox的安装目录,运行这个命令:
D:\浏览器及工具\Firefox>firefox.exe -p
或者这个命令:

D:\浏览器及工具\Firefox>firefox.exe -profilemanager
这里可以设定你的 Firefox profile 放到非系统分区

这样可以重装系统,甚至跨Windows/Linux共用一个Firefox配置文档。
第二部是安装Flash插件,我把这个xpi的地址嗅探出来了,用迅雷下载比Firefox速度快得多。
#helpMenu{
display: none;
}
#edit-menu{
display: none;
}
#file-menu{
display: none;
}