2013-04-02 54 views
1

我參加了一個哈希破壞競賽,我試圖自動將發佈的字符串發送到html表單並獲得哈希得分。到目前爲止,我已經設法將SOMETHING發佈到網址,但它並不是我期待的確切字符串,因此爲散列返回的值與通過手動輸入字符串獲得的值相比較是遠遠不夠的。使用urllib和Python進行簡單的POST 3.3

import urllib.parse, urllib.request 

url = "http://almamater.xkcd.com/?edu=una.edu" 
data = "test".encode("ascii") 
header = {"Content-Type":"application/octet-stream"} 
req = urllib.request.Request(url, data, header) 
f = urllib.request.urlopen(req) 
print(f.read()) 
#parse f to pull out hash 

我從網站上獲取以下散列:

0fff9563bb3279289227ac77d319b6fff8d7e9f09da1247b72a0a265cd6d2a62645ad547ed8193db48cff847c06494a03f55666d3b47eb4c20456c9373c86297d630d5578ebd34cb40991578f9f52b18003efa35d3da6553ff35db91b81ab890bec1b189b7f52cb2a783ebb7d823d725b0b4a71f6824e88f68f982eefc6d19c6 

這從很大不同我所期待的,這是如果你在「測試」(不含引號)鍵入到表單你會得到什麼:

e21091dbb0d61bc93db4d1f278a04fe1a51165fb7262c7da31f886ae09ff3e04c41483c500db2792c59742958d8f7f39fe4f4f2cdc7940b7b25e3289b89d344e06f76305b9de525933b5df5dae2a37388f82cf76374fe363587acfb49b9d2c8fc131ef4a32c762be083b07330989b298d60e312f56a6b8a4c0f53c9b59864fb7 

很明顯,代碼沒有做我期待它做的事情。有小費嗎?

回答

1

當您提交表單數據時,它還包含字段名稱,所以當您提交「測試」時,提交的數據實際上看起來像「hashable = test」。試着改變你這樣的數據:

data = "hashable=test".encode("ascii") 

或者:

data = urllib.parse.urlencode({'hashable': 'test'}) 
+0

謝謝,第一個完美的作品。 – Vecht