Archive for November, 2006

用FOR命令快速生成密码字典,按键精灵做密码猜解机

Sunday, November 26th, 2006

今天同学找我帮忙写个猜解某个网络游戏里仓库密码的软件,

看了看游戏对密码没有错误次数的限制,密码为4到8位存数字

的,相对还是容易点,不过我近几年基本沉溺于网络游戏了,

技术生疏了,心地也善良了,实在是不愿意写。

游戏内验证密码的应该不支持多线程吧,这种慢速猜测对效率

要求得相对低的还是用按键盘精灵吧

密码字典存数字的,本来想用Python写个脚本来着,突然想起

windows的FOR命令了,这么简单的工作还用不到程序语言吧

FOR /L %i IN (1000,1,9999) DO echo %i>>1.txt

一条命令搞定

具体可以用for /?查看帮助。其中1

FOR /L %variable IN (start,step,end) DO command [command-parameters]

该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5) 将产生序列 1 2 3 4 5,(5,-1,1) 将产生
序列 (5 4 3 2 1)。

按键精灵里用SHIFT+方向下取文本文件的第一行密码,然后ctrl+x剪切,

这样用过的密码就从文本文件里删除了,就等于保存猜解进度了,

然后切换到游戏里输入,读屏幕指定位置颜色判断输入是否正确,

不正确就一直循环下去。

这样一个简单的猜解机器人就完成了。

django get_latest_by 取最后发布的记录

Tuesday, November 21st, 2006

get_latest_by
Models can have a get_latest_by attribute, which should be set to the name of a DateField or DateTimeField. If get_latest_by exists, the model’s module will get a get_latest() function, which will return the latest object in the database according to that field. “Latest” means “having the date farthest into the future.”

Model source code

from django.db import models

class Article(models.Model):
    headline = models.CharField(maxlength=100)
    pub_date = models.DateField()
    expire_date = models.DateField()
    class Meta:
        get_latest_by = 'pub_date'

    def __str__(self):
        return self.headline

class Person(models.Model):
    name = models.CharField(maxlength=30)
    birthday = models.DateField()

    # Note that this model doesn't have "get_latest_by" set.

    def __str__(self):
        return self.nameSample API usage

This sample code assumes the above models have been saved in a file mysite/models.py.

>>> from mysite.models import Article, Person

# Because no Articles exist yet, get_latest() raises ArticleDoesNotExist.
>>> Article.objects.latest()
Traceback (most recent call last):

DoesNotExist: Article matching query does not exist.

# Create a couple of Articles.
>>> from datetime import datetime
>>> a1 = Article(headline=’Article 1′, pub_date=datetime(2005, 7, 26), expire_date=datetime(2005, 9, 1))
>>> a1.save()
>>> a2 = Article(headline=’Article 2′, pub_date=datetime(2005, 7, 27), expire_date=datetime(2005, 7, 28))
>>> a2.save()
>>> a3 = Article(headline=’Article 3′, pub_date=datetime(2005, 7, 27), expire_date=datetime(2005, 8, 27))
>>> a3.save()
>>> a4 = Article(headline=’Article 4′, pub_date=datetime(2005, 7, 28), expire_date=datetime(2005, 7, 30))
>>> a4.save()

# Get the latest Article.
>>> Article.objects.latest()
<Article: Article 4>

# Get the latest Article that matches certain filters.
>>> Article.objects.filter(pub_date__lt=datetime(2005, 7, 27)).latest()
<Article: Article 1>

# Pass a custom field name to latest() to change the field that’s used to
# determine the latest object.
>>> Article.objects.latest(‘expire_date’)
<Article: Article 1>

>>> Article.objects.filter(pub_date__gt=datetime(2005, 7, 26)).latest(‘expire_date’)
<Article: Article 3>

# You can still use latest() with a model that doesn’t have “get_latest_by”
# set — just pass in the field name manually.
>>> p1 = Person(name=’Ralph’, birthday=datetime(1950, 1, 1))
>>> p1.save()
>>> p2 = Person(name=’Stephanie’, birthday=datetime(1960, 2, 3))
>>> p2.save()
>>> Person.objects.latest()
Traceback (most recent call last):

AssertionError: latest() requires either a field_name parameter or ‘get_latest_by’ in the model

>>> Person.objects.latest(‘birthday’)
<Person: Stephanie>