python 캠퍼스 네트워크 자동 로그 인 구현 예시 설명
1.도구
불 여우 브 라 우 저+firedebug 플러그 인,debug 플러그 인 은 브 라 우 저 에 추가 구성 요 소 를 추가 할 수 있 습 니 다.다른 브 라 우 저 도 브 라 우 저의 네트워크 행동 을 모니터링 할 수 있 으 면 됩 니 다.
python+requests 패키지
2.절차
1) 로그 인 인터페이스 에 먼저 열 고 f12 를 누 르 면 firedebug 플러그 인 을 엽 니 다.이때 debug 는 아무런 기록 행위 가 없 으 며 새로 고침 단 추 를 누 른 다음 로그 인 단 추 를 누 르 면 debug 가 콘 솔 옵션 카드 를 다시 꺼 냅 니 다.이때 많은 get 방법 과 마지막 으로 로그 인 으로 인해 발생 하 는 POST 방법 을 발견 할 수 있 습 니 다.그림 과 같 습 니 다.
2)POST 방법의 작은 화살 표를 클릭 하면 브 라 우 저의 요청 헤더 헤더 정 보 를 발견 할 수 있 습 니 다.이것 은 우리 가 저장 해 야 합 니 다(응답 헤더 가 아 닙 니 다).
3)POST 옵션 의 내용 을 살 펴 보면 변수 와 인 자 를 모두 저장 해 야 합 니 다.이 안에 password 가 너무 밀 착 되 어 있 는 것 을 볼 수 있 습 니 다.자신의 계 정 비밀번호 만 로그 인 하면 프로그램 은 여기 서 끝 날 수 있 습 니 다.그 중의 데 이 터 를 자신 이 잡 은 숫자 로 바 꾸 고 아래 코드 를 사용 하면 캠퍼스 네트워크 에 로그 인 할 수 있 습 니 다.
import requests
#
post_addr="http://a.nuist.edu.cn/index.php/index/login"
#
post_header={
'Host': 'a.nuist.edu.cn',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With':'XMLHttpRequest',
'Referer':'http://a.nuist.edu.cn/index.php?url=aHR0cDovL2RldGVjdHBvcnRhbC5maXJlZm94LmNvbS9zdWNjZXNzLnR4dA==',
'Content-Length': '67',
'Cookie':'_gscu_1147341576=059821653286gq10; sunriseUsername=123441534;\
sunriseDomain=NUIST;sunriseRememberPassword=true; sunrisePassword=123456;\
PHPSESSID=hb0o9bkct2f6ge164oj3vj0me5;think_language=zh-CN',
'Connection':'keep-alive',
}
#
post_data={'domain':'NUIST',
'enablemacauth':'0',
'password':'MTgzMzEw',
'username':'xxxxxxx'
}
# post
z=requests.post(post_addr,data=post_data,headers=post_header)
4) 하지만 문 제 는 위의 프로그램 은 스스로 만 사용 할 수 있다 는 것 입 니 다.계 정 비밀 번 호 를 바 꾸 어 로그 인 하면 브 라 우 저 로 패 킷 을 잡 아야 합 니 다.귀 찮 습 니 다.위의 절 차 를 자세히 살 펴 보 니 다른 계 정 을 쓰 려 면 가방 을 잡지 않 아 도 로그 인 할 수 있 는 프로그램의 난점 은 post 를 구성 하 는 것 입 니 다.data 프로그램 에서 password 가 암호 화 되 었 습 니 다.암호 화 방식 을 알 수 있다 면 일반적인(본 학교 내)프로그램 을 쓰 는 것 이 매우 쉽 습 니 다.사실 이 단 계 는 자주 사용 하 는 암호 화 방법 에 대해 잘 알 고 있다 면 웹 페이지 의 소스 코드(js)를 보면 암호 화 방식 을 쉽게 얻 을 수 있 습 니 다.안 타 깝 게 도 저 는 잘 모 르 겠 습 니 다.md5 암호 화 만 알 고 있 습 니 다.그래서 저 는 python 의 hashlib 가방 으로 비밀 번 호 를 암호 화 한 다음 에 잡 은 데이터 와 같 는 지 확인 하려 고 했 습 니 다.안 타 깝 게 도 한 글자 도 똑 같은 지 확인 하려 고 했 습 니 다.그 다음 에 데이터 가 로 컬 에서 서버 에서 보 낸 것 이 라면 암호 화 과정 은 반드시 클 라 이언 트 에서 이 루어 질 것 이 라 고 생각 합 니 다.js 스 크 립 트(웹 프로 그래 밍 에 대해 잘 모 르 고 js 가 클 라 이언 트 에서 실 행 될 수 있다 는 것 만 알 기 때문에 js 스 크 립 트 가 passward 인 코딩 을 완성 한 것 으로 추측 합 니 다)를 통 해 debug 를 통 해 잡 은 js 코드 를 볼 수 있 습 니 다.
debug 디 버 거 를 열 면 왼쪽 에 js 코드 가 줄 지어 있 는 것 을 볼 수 있 습 니 다.js 파일 이름 을 통 해 js 의 역할 을 대충 추측 할 수 있 습 니 다.
5)왼쪽 파일 이름 을 보면 login.js,md5.js,client.js,usercss.js 가 작용 한 다 는 것 을 직접 추측 할 수 있 습 니 다.md5 가 password 암호 화 방식 이 아 닌 이상 다른 js 코드 를 볼 수 있 습 니 다.다행히도 첫 번 째 base 64 코드 를 누 르 면 민감 하 게 이 코드 가 인 코딩 방식 이라는 것 을 알 게 되 었 습 니 다.서둘러 바 이 두 에서 base 64 는 역시 인 코딩 방식 이 었 습 니 다.쇠뿔 도 단 김 에 바 이 두 python 의 base 64 인 코딩 이 실현 되 었 습 니 다.python 이 base 64 가방 을 통합 한 것 을 발 견 했 습 니 다.이 가방 을 이용 하여 비밀 번 호 를 다시 인 코딩 합 니 다...............................................................
전체 코드 는 다음 과 같 습 니 다(거 친 버 전):
#!/usr/bin/python3
# -*- coding: utf-8 -*-
'''
FileName:conNet.py
Author:shenhuixiang
Copyright(c)2017,shenhuixiang
'''
import base64
import requests
'''
CMCC
NUIST
'''
USER_ACCOUNT='110'
DOMAIN_SELECTION='CMCC'
USER_PASSWATD='123456'
#
post_addr="http://a.nuist.edu.cn/index.php/index/login"
#
post_header={
'Host': 'a.nuist.edu.cn',
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:55.0) Gecko/20100101 Firefox/55.0',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'Accept-Language':'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Content-Type': 'application/x-www-form-urlencoded',
'X-Requested-With':'XMLHttpRequest',
'Referer':'http://a.nuist.edu.cn/index.php?url=aHR0cDovL2RldGVjdHBvcnRhbC5maXJlZm94LmNvbS9zdWNjZXNzLnR4dA==',
'Content-Length': '67',
'Cookie':'_gscu_1147341576=059821653286gq10; sunriseUsername='+USER_ACCOUNT+';\
sunriseDomain='+DOMAIN_SELECTION+';sunriseRememberPassword=true; sunrisePassword='+USER_PASSWATD+';\
PHPSESSID=hb0o9bkct2f6ge164oj3vj0me5;think_language=zh-CN',
'Connection':'keep-alive',
}
'''
password post base64 ,
password ... .
'''
post_data={'domain':DOMAIN_SELECTION,
'enablemacauth':'0',
'password':base64.b64encode(USER_PASSWATD.encode()),
'username':USER_ACCOUNT
}
# post
z=requests.post(post_addr,data=post_data,headers=post_header)
#z.text str json byte unicode
s=z.text.encode('utf-8').decode('unicode-escape')
print(s)
이상 의 python 이 캠퍼스 네트워크 자동 로그 인 을 실현 하 는 예시 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 에 게 참고 가 되 고 저희 도 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.