반응형

안녕하세요

오늘은 파이썬 에러 해결방법을 가지고 왔습니다. 

아래와 같이 발생하는 경우는 보통 파이썬을 수동 설치할때 발생해요!!

 


 

저도 여러가지 방법을 찾아가며 해보았는데요 

아래와 같이 하면 바로 해결이 되요!

 


 

먼저 스크립트 디렉토리 pywin32_postinstall.py에서 스크립트를 실행해야 합니다. 

Python 디렉토리가 C:\python3이라고 가정해보자. 아래의 코드를 따라해주세요

cd C:\python3
python Scripts/pywin32_postinstall.py -install

 

그런 다음 설치 시 C:\Windows\System32 아래에 DLL 파일이 생성됩니다.

이 두 파일(pythoncom310.dll 및 pywintypes310.dll)을 C:\python3\Lib\site-packages\win32 디렉토리로 이동해야 합니다.

 

이후 

python310._pth 파일을 수정해줘야 하는데 해당 파일에 위 경로를 적어주면 해결 됩니다.

Lib/site-packages
Lib/site-packages/win32
Lib/site-packages/win32/lib
Lib/site-packages/pythonwin
python310.zip
.

# Uncomment to run site.main() automatically
#import site

출처: https://codefaq.org/windows/python/how-to-fix-modulenotfounderror-no-module-named-win32api-in-python/

https://stackoverflow.com/questions/32639074/why-am-i-getting-importerror-no-module-named-pip-right-after-installing-pip

반응형
반응형

https://stackoverflow.com/questions/36230492/error-while-finding-spec-for-fibo-py-class-attributeerror-module-objec

python -m tt.py 

 

위와 같이 명령어 실행시 has no attribute '__path__' 에러 발생 할수 있다

python -m tt --> py를 제거하고 실행하면 된다. 

 

---

 

There are two ways you can run a Python 3 script.

  1. python fibo.py: The argument is the name of the .py file. Dots are part of the filename.
  2. python -m fibo: The argument is the name of a Python module, without .py. Dots indicate packages; fibo.py means "the module py in the package fibo."

This is a small distinction for a simple script like yours. But for something bigger or more complex, it has an important effect on the behavior of the import statement:

  1. The first form will cause import to search the directory where the .py file lives (and then search various other places including the standard library; see sys.path for a full list).
  2. The second form will make import search the current directory (and then various other places).

For this reason, under Python 3, the second form is required for most setups which involve packages (rather than just loose modules in a directory), since the parent package of the script may not be importable under the first form, which can cause things to break.

 

반응형
반응형

출처: https://bobr2.tistory.com/entry/Python-whl-%ED%8C%8C%EC%9D%BC-%EC%84%A4%EC%B9%98-%EB%B0%A9%EB%B2%95


1. Python whl 파일 설치 방법

1) 설치하고자 하는 whl 파일을 다운로드 받는다.

2) python -m pip install whl파일명


2. Beautifulsoup 설치 방법

1) https://pypi.python.org/pypi/beautifulsoup4 여기서 관련 whl 파일을 다운로드 한다.

2) 아래 해당 명령어를 console에서 실행한다.

python -m pip install beautifulsoup4-4.4.1-py2-none-any.whl 

3) 정상 설치 여부를 확인한다.

>>> import bs4
>>> bs4

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup("data", "html.parser")
>>> soup
data
>>> soup.prettify()
'\n data\n'

4) 위와 같이 출력 되면 정상적으로 설치가 완료된 것이다.

3. Python OpenSSL 설치 방법

1) Windows7에 설치시 Service Pack 1을 설치한 상태에서 진행해야 한다.

2) CMD 창에 easy_install pyopenssl 입력 한다.

3) 관련 로그가 나오구 특별한 사항이 없다면 정상설치 된 것이다.

4) 설치도중 VC++ 관련 오류가 나올경우 아래 경로에서 VC++관련 정보를 다운로드 하여 설치한다.
    https://www.microsoft.com/en-us/download/details.aspx?id=44266

4. PIP로 설치가 안될경우 설치 방법

1) easy_install pyopenssl

2) easy_install beautifulsoup

3) easy_install Scrapy
    Scrapy로 설치시 twisted관련 오류가 발생할 경우 아래 zope.interface를 추가로 설치한다.

4) easy_install zope.interface


5. PIP 최신 버전 업그레이드 방법

1) python -m pip install --upgrade pip


6. Python IDE 무료 툴

1) 기능은 제한되어 있지만 무료로 쓸수 있는 Community 버전으로 다운로드 한다.


7. pip로 관련 모듈 업그레이드 안되고 아래 오류등이 나올경우 조치 사항

1) 오류 메세지 종류 pip install scrapy만 실행시 아래 와 같은 메세지 노출될경우

Could not find a version that satisfies the requirement scrapy (from versions:)
No matching distribution found for scrapy

2) 좀더 정확한 오류 메세지를 확인하기 위해 아래 명령어를 추가로 실행 pip -vvv install scrapy

 Could not fetch URL https://pypi.python.org/simple/scrapy/: 
 connection error: SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590) - skippig

위와 같이 SSL관련 인증이 문제일경우 해당 site를 신뢰 할 수 있게 설정해서 PIP를 실행하면 됨.

pip install --upgrade --trusted-host pypi.python.org 설치하고자 하는 ex) pip install --upgrade --trusted-host pypi.python.org scrapy



출처: https://bobr2.tistory.com/entry/Python-whl-파일-설치-방법 [나만의공간]

반응형
반응형

출처: http://noplanlife.com/?p=1339

 

웹 취약점 점검에 Burp-Suite와 같은 상용(혹은 free) Proxy 도구를 많이 사용하긴 하지만
특정 영역에서 취약점을 발견했을 경우 상용 도구에서 제공되는 부가기능(Intruder 등)을 쓰기 보다는
Python을 통해 직접 도구를 제작하는 것이 효율적일 때가 있다.

파이썬에서 http 통신을 위해 가장 기본적으로 사용되는 라이브러리에는 socket, urllib(2) 등이 있지만
아래 소개할 requests 를 사용하면 아주 간편하고 빠르게 공격 도구를 제작할 수 있다.

본 포스팅 내용은 아래 공식 페이지 내용을 참고하여 작성하였음을 미리 밝힌다.
http://docs.python-requests.org/en/latest/

 

설치 방법

pip 혹은 easy_install 도구를 통해 간편하게 설치가 가능하며, git 을 통한 수동 설치도 지원한다.

설치가 끝나면 정상적으로 라이브러리가 import 가 되는지 파이썬을 열어 확인해보자

오류 없이 정상적으로 설치 된 것을 확인할 수 있다.
이제 본격적으로 requests 라이브러리를 활용해보도록 하자.

 

GET / POST 요청(request)과 응답(response) 받기

라이브러리를 불러오는(Importing) 것은 다음 한 줄이면 충분하다.

공격 대상 웹 서비스가 GET 메서드를 지원하는 경우 다음과 같이 Request를 생성한다.

url을 별도로 분리해 놓은 것은 추후에 코딩시에 유연성을 높이기 위해서이며,
직접 get(‘대상주소’) 형식으로 입력해도 무방하다.

위와 같이 get 메서드를 호출하게 되면 응답 값에 대한 객체가 “r” 에 부여되며,
앞으로도 이 객체를 사용하여 url 에 관련된 정보를 수집할 수 있다.

GET 이 아닌 POST 방식의 경우 다음과 같이 파라미터를 딕셔너리 형태로 정의한 후
post 메서드 호출 시 인자값으로 전달하면 된다.

Response(응답) 값은 아래와 같이 r.text를 통해 가져올 수 있다.

json 타입의 Response의 경우도 r.json()을 통해 가져올 수 있으며, 응답값 내용을 분석 후
원하는 값을 Parsing 하는 작업도 간편하게 할 수 있다.

 

Custom Header 설정

requests 라이브러리는 사용자가 직접 Header 값을 작성하여 Request 전송이 가능하다.
Post 요청시 파라미터 값을 넣었던 방식과 동일하게 딕셔너리 형태로 header 를 작성한 후
GET / POST 호출 인자값에 추가시켜준다.

 

Bruteforce 공격도구 제작하기

파이썬 라이브러리는 사용하기 매우 직관적이기 때문에 위에서 다룬 내용만으로도
충분히 공격 도구를 제작할 수 있다.

실제 케이스를 바탕으로 좀 더 자세히 샆펴보도록 하자.


“특정 웹사이트를 대상으로 모의해킹을 하던 도중, [회원 정보 조회] 페이지에 대한
세션 처리가 미흡하여 타 회원의 정보를 조회할 수 있는 취약점을 발견하였다.
단, 타 회원의 정보는 8자리 랜덤 영문자+숫자 포맷으로 구성되어 있었다”


 

실제 웹사이트 모의해킹을 하다보면 위와 같은 케이스를 매우 빈번하게 접할 수 있다.
특히, 회원 정보 / 상품구매 이력 등 개인의 민감한 정보와 관련된 페이지에서
인증 처리가 미흡하거나, 회원 구분을 단순 숫자값으로 구성하고 있을 경우는 문제가 될 수 있다.

취약한 웹 서비스의 주소를 “www.example.com/info/profile/{profile-id}” 라고 가정한 후,
공격 코드를 한단계씩 만들어 보자.

먼저 회원 profile-id 를 구성하는 랜덤 8자리 영문자+숫자 조합을 만들기 위해
파이썬의 itertools 라이브러리를 사용해보도록 하자.

8자리 id가 생성되긴 하나 itertools 라이브러리 특성상 알파벳 순차적으로 생성되기 때문에
공격용으로 쓰기에는 적절해보이지 않는다 (물론 상황에 따라 이것이 더 효율적인 경우도 있다)

random 라이브러리를 사용하여 다른 방법으로 id를 생성해보았다.

확률적으로 어떤 것이 profile-id를 찾는데 더 효율적인지는 확인할 수 없으나,
itertools의 순차적으로 생성된 id가 아닌 랜덤하게 생성된 id를 사용하여 도구를 만들 예

이제 남은 것은 앞서 다룬 Requests 라이브러리를 통해, 임의로 생성한 profile-id를 요청한 후,
Response Code를 통해 의미있는 페이지와 아닌 것을 구분하기만 하면 된다.

남은 코드를 완성해보도록 하자.
Custom Header의 경우 Burp Suite를 통해 Request 부분을 그대로 복사한 후,
그대로 Dictionary 타입으로 변환하여 넣어주면 된다. (아래 코드 헤더 영역 참조)

 

공격 환경이 Proxy Server를 사용하고 있을 경우에는 request 옵션에 “proxies” 를 넣어주면
정상적으로 커넥션을 맺을 수 있다.

이상으로 파이썬의 requests 라이브러리에 대해 간단하게 알아보았다.
사실 urllib(또는 urllib2) 가 사용하기 더 편하다면 그것을 사용해도 무방하다.

위 예제는 PoC 목적으로 짜여진 코드이므로, 직접 사용하기 보다는
해킹 대상 서버와 주고 받는 값들을 우선적으로 면밀히 분석한 후, 최종 자동화툴을 만들 때
참고해서 사용하는 것이 좋겠다.

반응형

+ Recent posts