Hi,
I wrote a python code to fetch web pages by logging in, authenticating (using hashing) and then collecting some stats.
I want to port this code to perl. Could anyone help me in quickly porting this code to perl or help me in getting equivalent functions for urllib2 and re. Below is the python code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import urllib, urllib2, re
from struct import *
import hashlib
import os
import sys
import xmlrpclib
#from win32com.shell import shellcon, shell
from xml.dom import minidom
def main():
tcp_connection_status("192.168.1.1")
return 0
def tcp_connection_status(nodeip):
username = 'uname'
password = 'pass'
response = ''
response = urllib2.urlopen('https://' + nodeip + '/auth1.html')
response_data = response.read()
#print response_data
id_obj = re.search('name=\"id\" value=\"[A-Za-z0-9]*\" size=',resp
+onse_data).group(0)
param1_obj = re.search('NAME=\"param1\" VALUE=\"[A-Za-z0-9]*\"',re
+sponse_data).group(0)
param2_obj = re.search('NAME=\"param2\" VALUE=\"[A-Za-z0-9]*\"',re
+sponse_data).group(0)
sessId_obj = re.search('NAME=\"sessId\" VALUE=\"[A-Za-z0-9]*\"',re
+sponse_data).group(0)
param1 = param1_obj.split('\"')[3]
param2 = param2_obj.split('\"')[3]
id = id_obj.split('\"')[3]
sessId= sessId_obj.split('\"')[3]
param1x = param1.decode("hex")
idx = id.decode("hex")
digest = hashlib.md5(idx+password+param1x).hexdigest()
login_data = urllib.urlencode({'uName' : username, 'sessId' : sess
+Id, 'digest' : digest, 'id' : id, 'pass' : ''})
request = urllib2.Request('https://' + nodeip + '/auth.cgi',login_
+data)
request.add_header('Referer', 'http://' + nodeip + '/auth1.html')
request.add_header('Cookie', 'SessId='+sessId)
response = urllib2.urlopen(request).read()
request = urllib2.Request('https://' + nodeip + '/outlookView.html
+')
request.add_header('Referer', 'http://' + nodeip + '/auth.cgi')
request.add_header('Cookie', 'SessId='+sessId)
response = urllib2.urlopen(request)
response_data = response.read()
#print response_data
loginToken_obj = re.search('loginToken = \"[A-Za-z0-9]*\"',respons
+e_data).group(0)
loginToken = loginToken_obj.split('\"')[1]
post_data = urllib.urlencode({'loginToken':loginToken, 'cgiaction'
+:'none'})
request = urllib2.Request('https://' + nodeip + '/main.cgi',post_d
+ata)
request.add_header('Referer', 'http://' + nodeip + '/auth.cgi')
request.add_header('Cookie', 'SessId='+sessId)
response = urllib2.urlopen(request)
response_data = response.read()
post_data = urllib.urlencode({'loginToken':loginToken, 'action':'c
+onnStats'})
request = urllib2.Request('https://' + nodeip + '/log',post_data)
request.add_header('Cookie', 'SessId='+sessId)
response = urllib2.urlopen(request)
response_data = response.read()
print response_data
if __name__ == "__main__":
sys.exit(main())