IDF实验室:初探乾坤--简单编程-字符统计

地址:

ctf.idf.cn/index.php?g=game&m=article&a=index&id=37

题目:

这里这里 → http://ctf.idf.cn/game/pro/37

Writeup:

(第二份代码引用他人新浪博客:blog.sina.com.cn/s/blog_e53f38130102vjlz.html )

很明显,编写代码分别统计woldy五个字母的数量,并提交。但是注意需要在2秒内提交,所以需要写爬虫,With Python !!!

第一次:自己用Python3.4写的:( 源代码如下 )

我连Cookies ,和 Headers 都全部伪装了。。。

但是他总是返回给我说,“你数学是小学体育老师教的吗?”

我就无语了!!!!

import urllib.request

import urllib.parse

import re

url = "http://ctf.idf.cn/game/pro/37/index.php"

req = urllib.request.Request(url)

response = urllib.request.urlopen(url)

html = response.read().decode(‘utf-8‘)

A = html.find(‘<hr />‘) + 6

B = html.find(‘<hr />‘, A)

f = html[A:B]

w = f.count(‘w‘)

o = f.count(‘o‘)

l = f.count(‘l‘)

d = f.count(‘d‘)

y = f.count(‘y‘)

ans1 = ‘%d‘%w+‘%d‘%o+‘%d‘%l+‘%d‘%d+‘%d‘%y

length = str(len(ans1))

head = {}

head[‘Host‘] = "ctf.idf.cn"

head[‘User-Agent‘] = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:38.0) Gecko/20100101 Firefox/38.0"

head[‘Accept-Language‘] = "zh-CN,en-US;q=0.7,en;q=0.3"

head[‘Accept-Encoding‘] = "gzip, deflate"

head[‘Referer‘] =  "http://ctf.idf.cn/game/pro/37/"

head[‘Cookie‘] = "Hm_lvt_184d7dcce9f76d1f5ab23d66e447d9a8=1432209840,1432307014,1433080747,1433157423; PHPSESSID=23ro01bddb6a7604ovumie8nr7; Hm_lpvt_184d7dcce9f76d1f5ab23d66e447d9a8=1433157799"

head[‘Connection‘] = "keep-alive"

head[‘Cache-Control‘] ="max-age=0"

xdata[‘Content-Type‘] = "application/x-www-form-urlencoded"

xdata[‘Content-Length‘] = length

xdata = {‘anwser‘:ans1}

xdata  = urllib.parse.urlencode(xdata).encode(‘utf-8‘)

req = urllib.request.Request(url, data = xdata)

response = urllib.request.urlopen(req)

html = response.read().decode(‘utf-8‘)

A = html.find(‘<body>‘) + 6

B = html.find(‘<hr />‘, A )

f = html[A:B]

print(f)

第二次:用 Python2.7 编写:(原代码如下)

首先安装BeautifulSoup

代码参考一个新浪博客:blog.sina.com.cn/s/blog_e53f38130102vjlz.html

#! /usr/python

#coding:utf-8

import sys, urllib,urllib2

import requests

#from BeautifulSoup import BeautifulSoup

from bs4 import BeautifulSoup

url = "http://ctf.idf.cn/game/pro/37/" #网页地址

s = requests.session()

content = s.get("http://ctf.idf.cn/game/pro/37/").text #获取页面内容

test=content.split(‘<hr />‘) #把字符串用分成3部分

print test[1]

w=0

o=0

l=0

d=0

y=0

for i, ch in enumerate(test[1]): #遍历分割后的第二部分字符串

if ch=="w":

w=w+1

elif ch=="o":

o=o+1

elif ch=="l":

l=l+1

elif ch=="d":

d=d+1

elif ch=="y":

y=y+1

tem=‘%d‘ %w +‘%d‘ %o +‘%d‘ %l +‘%d‘ %d +‘%d‘ %y #把数字拼成字符串

print tem

values = {‘anwser‘:tem} #填写表单

result = s.post(‘http://ctf.idf.cn/game/pro/37/‘, data=values) #提交表单

print(result.text)

第二次可以跑出结果。

在这里,我想请教一下,我自己写的东西哪里出了问题呢???

本人python 新手一只,求高手解答,十分感激。

时间: 2024-07-30 20:16:44

IDF实验室:初探乾坤--简单编程-字符统计的相关文章

IDF 实验室 初探乾坤

简单编程-字符统计 速度要快,用AutoHotKey,语法不太适应 ^d::StringCaseSense, Onw := o := l := d := y := -1Sleep 100strArr := StrSplit(ClipBoard)  ; 分离字符for index, ch in strArr{  if ch = w  ; w 是字符串不是变量名    w := w + 1  if ch = o    o := o + 1  if ch = l    l := l + 1  if c

IDF实验室-简单编程-字符统计 writeup

题目地址:http://ctf.idf.cn/index.php?g=game&m=article&a=index&id=37 网站:http://ctf.idf.cn/game/pro/37/ 主要是要有2秒的限制.写个python 脚本. 1 #!usr/bin/env python 2 #!coding=utf-8 3 4 import requests 5 import re 6 __author__ = 'zhengjim' 7 8 9 url = 'http://ctf

IDF 实验室部分题目WriteUp

前天花了一个下午的时间刷了几道IDF实验室的题目, 这个网站实在是有点冷清, 题目也比较少, 所以就被我和师兄们刷榜了2333... 因为我最先开始做, 所以就干脆刷到第一去了. 题目很水, 切莫见怪. 牛刀小试 http://ctf.idf.cn/index.php?g=game&m=list&a=index&id=16 莫尔斯密码: 网上有转换器, 转换后去空格全小写就是flag. flag: wctf{morseode} ASCII码而已: 这是Unicode码好吧...随便

IDF实验室-CTF训练营-牛刀小试CTF

自从开始玩CTF后,发现这个游戏还是比较有意思,发现了一个练习场地IDF实验室:http://ctf.idf.cn/ 刷刷里面的题目,今天完成了其中的牛刀小试,分享一下解题思路: 1. 被改错的密码 题目为: 从前有一个熊孩子入侵了一个网站的数据库,找到了管理员密码,手一抖在数据库中修改了一下,现在的密码变成了 cca9cc444e64c8116a30la00559c042b4,那个熊孩子其实就是我!肿么办求解!在线等,挺急的.. PS:答案格式wctf{管理员原密码} 第一眼看上去cca9cc

1042 字符统计 (20 分)

题目链接:1042 字符统计 (20 分) 这道题目比较简单.但是需要注意: 1.题目要求统计字母不按照大小写且输出小写. 2.字符串中包含空格,所以要用getline(cin,str)操作. 3.map<char,int>中是红黑树,所以会按照第一个键值的升序排列. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 string str; 7 getline(cin,str); 8 int

从273二手车的M站点初探js模块化编程

前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数据. 273这个M站点是产品推荐我看的.第一眼看这个产品时我就再想他们这个三次加载和翻页按钮的方式,那么小分页的pageIndex是怎么计算的.所以就顺便看了下源码. 提到看源码时用到了Chrome浏览器的格式化工具(还是朋友推荐我的,不过这个格式化按钮的确不明显,不会的话自行百度). 三次加载和分

linux设备驱动第三篇:写一个简单的字符设备驱动

在linux设备驱动第一篇:设备驱动程序简介中简单介绍了字符驱动,本篇简单介绍如何写一个简单的字符设备驱动.本篇借鉴LDD中的源码,实现一个与硬件设备无关的字符设备驱动,仅仅操作从内核中分配的一些内存. 下面就开始学习如何写一个简单的字符设备驱动.首先我们来分解一下字符设备驱动都有那些结构或者方法组成,也就是说实现一个可以使用的字符设备驱动我们必须做些什么工作. 1.主设备号和次设备号 对于字符设备的访问是通过文件系统中的设备名称进行的.他们通常位于/dev目录下.如下: [plain] vie

0915-----Linux设备驱动 学习笔记----------一个简单的字符设备驱动程序

0.前言 研究生生活一切都在步入正轨,我也开始了新的学习,因为实在不想搞存储,所以就决定跟师兄学习设备驱动,看了两星期书,终于有点头绪了,开始记录吧! 1.准备工作 a)查看内核版本 uname -r b)安装内核源码树(http://www.cnblogs.com/Jezze/archive/2011/12/23/2299871.html) 在www.linux.org上下载源码编译,这里是.xz格式,需要安装解压工具,xz-utils: 解压方法示例:xz -d linux-3.1-rc4.

字符统计2

字符统计2 Time Limit: 1000MS Memory limit: 65536K 题目描述 输入英文句子,输出该句子中除了空格外出现次数最多的字符及其出现的次数. 输入 输入数据包含多个测试实例,每个测试实例是一个长度不超过100的英文句子,占一行. 输出 逐行输出每个句子中出现次数最多的字符及其出现的次数(如果有多个字符的次数相同,只输出ASCII码最小的字符). 示例输入 I am a student a good programming problem ABCD abcd ABC