336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

W32.Madangel

W32.Madangel은 감염형 악성코드(웜)이다.

실행되면 다음과 같은 작업을 수행한다.

%Windir%\rundl132.exe //자기복사(W32.Madangel) %Windir%\Logo1_.exe //자기복사(W32.Madangel) %Windir%\vDll.dll //다운로드더 생성

참고:
%CurrentFolder% 악성코드가 실행된 디렉토리의 환경변수
%System% 시스템 디렉토리의 환경변수
C:\Windows\System (Windows 95/98/Me)
C:\Winnt\System32 (Windows NT/2000)
C:\Windows\System32 (Windows XP)

아래 레지스트리의 서브키를 체크하고 존재하면 프로세스를 종료한다.
HKEY_LOCAL_MACHINE\SOFTWARE\Soft\DownloadWWW
"auto" = "1"

iexplorer.exe 또는 explorer.exe에 vDll.dll을 인젝션한다.

vDll.dll은 다음 url에서 파일 다운로드를 시도한다.
hxxp://www.wowchian.com/dl[랜덤한 문자 2자리]

C to Y 드라이브까지 모든 드라이브의 실행파일을 찾아서 감염시킨다.
웜은 감염을 시도한 디렉토리에_desktop.ini 파일을 숨김속성으로 생성하고 시스템 설정 속성 및 웜이 실행 된 날짜를 저장한다.

다음과 같은 이름을 가진 디렉토리내의 파일들은 감염시키지 않는다.

system
system32
windows
Documents and Settings
System Volume Information
Recycled
winnt
Program Files
Windows NT
WindowsUpdate
Windows Media Player
Outlook Express
Internet Explorer
ComPlus Applications
NetMeeting
Common Files
Messenger
Microsoft Office
InstallShield Installation Information
MSN
Microsoft Frontpage
Movie Maker
MSN Gaming Zone

다음 IP주소로 "Hello,World" 문자열을 포함한 ICMP 패킷을 보낼 수 있다.

192.168.0.30
192.168.8.1


또한, 감염된 컴퓨터의 IP주소와 동일한 범위의 IP주소로 ICMP 패킷을 전송할 수 있다.
PC가 ICMP에 응답하는 경우 기본 공유폴더에 접근 시도를 한다.
\\ipc$
\\admin$

프로세스는 로컬 네트워크에있는 모든 컴퓨터와 공유 폴더를 접근 시도를 한다.
사용자계정과 암호를 사용하지 않거나 암호를 사용하지 않는 계정의 공유폴더를 열었을 경우
공유폴더에 존재하는 모든.exe파일을 감염시킨다



'Analysis > Malware' 카테고리의 다른 글

GenPack:Trojan.Generic  (0) 2016.06.21
CryptXXX Decryptor  (0) 2016.06.21
Malware Classification  (0) 2016.06.21
Hosts 변조  (0) 2016.06.20
Anti-AV 센스  (0) 2016.06.20
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

윈도우 디버깅 툴

agestore.exe - 마지막 접근 날짜를 근거로 파일을 삭제하는 유용한 파일 삭제 유틸리티
cdb.exe - 콘솔 기반의 유저 모드 디버거. NTSD와 거의 유사
dbengprx.exe - 서로 다른 두 머신 간에 데이터를 중계해주는 간단한 프록시 서버
dbgrpc.exe - 마이크로소프트 원격 프로시저 호출(RPC) 정보를 쿼리하고 표시
dbgsrv.exe - 원격 디버깅용으로 사용되는 프로세스 서버
dumpchk.exe - 메모리 덤프 파일의 유효성을 검사
 gflags.exe - 시스템 조율을 활성화하고 비활성화하는 구성 설정
kd.exe - 커널 모드 디버거
kdbgctrl.exe - 커널 모드 디버거 연결을 제어하고 설정
kdsrv.exe - 커널 모드 디버깅 동안에 사용되는 연결 서버
kill.exe - 프로세스를 종료(콘솔기반)
logger.exe - 함수 호출 같은 프로세스의 행위를 기록
lgviewer.exe - logger.exe 가 생성한 로그 파일뷰어
ntsd.exe - 콘솔 기반의 유저 모드 디버거. CDB와 유사
remote - 콘솔 프로그램을 원격으로 제어하는 툴
rtlist.exe - 원격 프로세스 리스트 뷰어
symchk.exe - 심볼 파일의 유효성을 확인하고 심볼 서버에서 심볼 파일을 받는다.
symstore.exe - 심볼 저장소를 생성하고 관리
tlist.exe - 모든 실행 프로세스를 목록화
umdh.exe - 메모리 누수 탐지에 사용
windbg.exe -  GUI를 제공하는 유저 모드와 커널 모드 디버거
심볼패키지 http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx

'Analysis > Windows' 카테고리의 다른 글

Windbg 사용  (0) 2016.06.23
WebDAV에서 사용하는 메소드  (0) 2016.06.21
윈도우 보안 이벤트 // IIS 로그 분석  (0) 2016.06.21
윈도우 커맨드라인 명령어  (0) 2016.04.07
SET-환경변수확인  (0) 2016.03.30
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

악성코드에 자주 사용되는 API 함수


DLL Injection에서 사용되는 API //특정 프로세스에 DLL Injection 실행
OpenProcess  
VirtualAllocEx
WriteProcessMemory
LoadLibraryA
GetProcAddress
CreateRemoteThread

Resource 섹션에 있는 리소스 사용 API //Resource 섹션에 암호화된 데이터를 해제하여 메모리에 기록
LoadResource  
SizeofResource
LockResource
FreeResource
FindResourceA

특정 파일 이름 확인 //특정한 이름의 파일을 읽고, 생성하고, 기록하고, 복사
WriteFile   
lstrcmpiA
ReadFile
DeleteFileA
CreateFileA
CopyFileA
CreateProcessA
FindFirstFileA

레지스트리에 관련 API //레지스트리에 특정한 키의 생성과 삭제가 이루어짐
RegSetValueExA  
RegEnumValueA
RegDeleteKeyA
RegCreateKeyExA
OpenProcessToken

암호화와 관련된 API //Resource 섹션에 암호화된 데이터를 해제하여 어딘가에 기록
CryptCreateHash
CryptHashData
CryptGetHashParam
CryptAcquireContextA


-------------------------------------------------------------------------------------------------------

File 관련 API
WriteFile  
ReadFile
CreateFile
CopyFile
MoveFile

Thread 관련 API
LoadLibrary 
CreateThread
ResumeThread
CreateRemoteThread

로깅 관련 API
Mouse_event 
Keybd_event
GetAsyncKeyState

Internet 관련 API
internetWriteFile
InternetConnect  

네트워크 관련 API
WSAStartup  
Gethostbyname
Gethostbyaddr
Socket
Send Recv
Inet_addr

FTP 관련 API
FtpOpenFile
FtpGetFileSize

기타 API 함수 목록
CreateMutex
capCreateCaptureWindows
ClientToScreen


메모리 관련 함수
VirtualAlloc() //가상 메모리 할당
VirtualFree() //가상 메모리 해제
VirtualProtect() // 메모리 보호 설정 값 변경



-------------------------------------------------------------------------------------------------------

GetModuleFileName
- 현재 실행되고 있는 위치 구한다.


GetKeyboardType
- 현재 키보드 타입을 구한다.


GetLocaleinfo
- 현재 설정되어 있는 국가/지역에 대한 정보를 구한다.

CreateFile
- 핸들값 반환 받는다.


WriteFile
- 핸들 값 받아서 파일을 쓴다. //CreateFile로 반환받은 핸들값을 통해 파일을 쓴다.(파일 수정/변조 등)


SetFileAttributes
- 파일의 속성을 바꾼다.

GetTempPathA
- 경로 탐색 API


CreateFileA
- 파일 생성 API


Shellexecute

WinExec
- 생성 파일 실행 센스 API

GetStartupInfoA
GetModuleHandleA
- 파일의 위치를 구할 때 사용


RegopenKeyExA
- 레지스트리를 열어볼 때 사용

CopyFileA
- 파일을 폴더로 복사시키는 역활

CreateServiceA
- 서비스등록


CreateProcessA
- Cmd로 자가 삭제


FindResourceA
- 리소스 찾기


SizeofResource
- 크기검색


SizeofResource
- 첫 바이트 획득


-------------------------------------------------------------------------------------------------------


VMWARE
- magic_num : VMXh


VirtualBox
- \\\.\\VBoxMiniRdrDn
- VboxHook.dll


GetLogicalDrives

- 드라이브 찾기


GetDiskFreeSpaceExW

- 용량 정보를 가져온다. (VM의 경우 보통 20G)


-------------------------------------------------------------------------------------------------------

GetTickCount()
DWORD GetTickCount(VOID); // OS 부팅 후 msec(1/1000초) 단위로 시간을 돌려주는 함수
윈도우즈가 부팅된 후 1초에 1000씩 틱 카운트를 증가 시킨다.
카운트는 32비트값이므로 최대 49.7일간의 카운트를 유지할 수 있다.
특정 루틴 시작 전과 후의 시간 값을 측정하여 차이를 확인하고 Debugger가 존재하는 지 확인 .(SUB 명령어를 통해 비교)


-------------------------------------------------------------------------------------------------------

참고
malloc()의 경우 할당할 수 있는 메모리블럭의 크기에는 한계가 있다.(약 256MB)
(new, delete연산자도 결국 malloc(), free()를 호출해서 메모리를 잡고 풀어준다. 결국 new나 malloc()나 같다.)
VirtualAlloc()함수는 대용량의 메모리를 다룰때 사용한다.
윈95/98 기준으로 프로세스는 4기가 주소공간을 할당 받는다.
이중 실제 응용프로그램이 사용 가능한건 2GB이며, 주소공간은 단지 주소공간일뿐 실제 물리메모리에 로드되는건 아니다.
커밋을 시켜야 물리메모리에 해당 주소공간에 할당된다.
VirtualAlloc() 으로 메모리를 할당-사용-해제하는 절차는 아래와 같다.
  1) 프로세스 주소공간 내에 일정주소공간 예약(Reserve). (이 주소공간은 다른 할당루틴이 사용불가능)
  2) 해당 주소공간중 실제 사용할 부분에 물리적 메모리(보조기억장치, RAM 등...)를 매핑(Commit)
  3) Commit된 부분에 대하여 메모리 사용(Commit되지 않은 부분을 사용하면 페이지폴트 발생)
  4) 주소공간에 매핑된 물리적 메모리를 해제(Decommit), 이때 데이터는 소멸된다.
  5) 할당했던 주소공간 해제(Release). 이제 이 주소공간은 다른 할당루틴이 사용가능
Commit된 영역의 데이터에 대한 캐싱은 시스템에서 한다. 캐싱을 못하게도 할 수도 있다.
malloc()으로 할당한 블럭은 페이지 단위로 나뉘고, 실제 페이지가 사용되는 시점에 해당 페이지가 자동으로 Commit 된다.
만약 RAM의 용량을 넘어서는 페이지들이 사용되면 적절한 페이지들이 보조기억장치(하드디스크의 가상메모리)로 페이지아웃
그리고 Free()를 호출하면 연쇄적으로 Decommit, Release 된다.


추가 확인------------------------------------------------------------------------------------------------

GetFileAttributesW
NtCreateFile
GetFileType
SetFilePointer
NtWriteFile
GetFileAttributesW
SetFileAttributesW





336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

DWORD WINAPI GetEnvironmentVariable( __in LPCTSTR lpName, //환경변수이름 __out LPTSTR lpBuffer, //환경변수를 담을 버퍼, null-terminating 문자를 포함 최대 "32,767"의 크기 제한이 있다. __in DWORD nSize );


시스템 환경 변수 위치
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\control\session Manager\Enviroment


사용자 환경 변수 위치
HKEY_CURRENT_USER\Environment


환경변수 가져오기
int nSize = ::GetEnvironmentVariable("TEMP", NULL, NULL);
TCHAR* buffer = new TCHAR[nSize +1];
GetEnvironmentVariable("TEMP",buffer, nSize);
// 만약 버퍼의 크기가 변수의 크기보다 작다면 0이 리턴 되므로 버퍼의 크기를 nSize만큼 얻어와야 한다.


환경변수 설정하기
SetEnvironmentVariable("TEMP", "C:\\tmp");


환경변수 지우기

SetEnvironmentVariable("TEMP", NULL);


336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

참고 : https://webnet77.net/cgi-bin/helpers/base-64.pl


Python 2.7 code

# -*- coding: utf-8 -*-
import sys,base64

if len(sys.argv) is 2:
  print >> sys.stderr, 'e.g) base64.py c:\test\base64.txt c:\test\base64'
  exit(1)

fname = sys.argv[1]
zname = sys.argv[2]

FH = open(fname, 'rb')
zname = str(zname)+".exe"

try:
	s = FH.read()
	dec = base64.b64decode(s)
	FZ = open(zname, 'wb')
	FZ.write(dec)
	FH.close()
	FZ.close() 
except IOError:
	print >> sys.stderr, 'error'


'Analysis > Python' 카테고리의 다른 글

[Python] wmi  (0) 2016.08.10
[Python] with, seek, tell  (0) 2016.08.03
Python 리스트(배열)  (0) 2016.07.05
Python Random 함수  (0) 2016.07.05
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

C:\>SET
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\USER\AppData\Roaming
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=DESKTOP-USER
ComSpec=C:\Windows\system32\cmd.exe
HOMEDRIVE=C:
HOMEPATH=\Users\USER
LOCALAPPDATA=C:\Users\USER\AppData\Local
LOGONSERVER=\\DESKTOP-USER
NUMBER_OF_PROCESSORS=4
OS=Windows_NT
Path=C:\Perl64\site\bin;C:\Perl64\bin;C:\Python27\;C:\Python27\Scripts;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 69 Stepping 1, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=4501
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\PowerShell\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\Users\USER\AppData\Local\Temp
TMP=C:\Users\USER\AppData\Local\Temp
USERDOMAIN=DESKTOP-USER
USERDOMAIN_ROAMINGPROFILE=DESKTOP-USER
USERNAME=USER
USERPROFILE=C:\Users\USER
VS100COMNTOOLS=c:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\Tools\
windir=C:\Windows


'Analysis > Windows' 카테고리의 다른 글

Windbg 사용  (0) 2016.06.23
WebDAV에서 사용하는 메소드  (0) 2016.06.21
윈도우 보안 이벤트 // IIS 로그 분석  (0) 2016.06.21
윈도우 커맨드라인 명령어  (0) 2016.04.07
윈도우 디버깅 툴  (0) 2016.04.07
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

기본적으로 TCP 프로토콜은 초기 3Way Handshaking 후
데이터 전송 시 수신자의 윈도우 사이즈만큼(65536bytes) 수신확인(Ack) 없이 전송한다.(윈도잉)


Next Squence Number 계산


1) Client, Seq는 [ 58 2e 7d 4d ], 3Way Handshaking 시작

Client  ----- [ TCP/syn ] ---->  Server

[ 58 2e 7d 4d ] Seq

[ 00 00 00 00 ] Ack (Server에서 보낸 확인 패킷이 없으니 Acknowledgment Number는 0)


2) Server, Seq는 [ 7c b7 34 26 ], Client의 Seq가 [ 58 2e 7d 4d ]인 패킷을 수신확인, 다음 Client의 Seq는 [ 58 2e 7d 4e ]

Client  <---- [ TCP/syn/ack ] ------  Server 

                                    [ 7c b7 34 26 ] Seq

                                    [ 58 2e 7d 4e ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Client Seq는 [ 58 2e 7d 4e ], Server의 Seq가 [ 7c b7 34 26 ]인 패킷은 수신확인, 3Way HandShaking 종료

Client  ----- [ TCP/ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

[ 7c b7 34 26 ] Ack (Sever에서 보낸 패킷에 대한 확인 응답)


1) Client, Seq는 [ 58 2e 7d 4e ]

(TCP Segment 길이가 386(0x182), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ])

다음 Server의 Seq는 [ 7c b7 34 27 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7d 4e ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

[ 7c b7 34 27 ] Ack (Server의 Next Sequence Number)


2-1) Server, Seq는 [ 7c b7 34 27 ]

Client의 TCP Segment에 대한 확인응답 [ 0x582e7d4e + 0x182 = 58 2e 7e d0 ] 

Client  <---- [ TCP/ack ] -----  Server

[ 7c b7 34 27 ] Seq (다음 패킷부터 Data를 보내고 마지막 패킷에서 psh,ack로 데이터 전송 종료를 알림)

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


2-2) Server, Seq는 [ 7c b7 34 27 ], HTTP/1.1 200 OK

(TCP Segment 길이가 1026(0x402), Client가 정상 수신하면 Client의 Ack는 [ 0x7cb73427 + 0x402 = 7c b7 38 29 ])

다음 Client의 Seq는 [ 58 2e 7e d0 ]

Client  <---- [ HTTP/psh,ack ] -----  Server

[ 7c b7 34 27 ] Seq (HTTP/psh,ack)

Next Sequence Number --> Seq + TCP Segment Length = [ 7c b7 38 29 ]

[ 58 2e 7e d0 ] Ack (Client에서 보낸 패킷에 대한 확인 응답 + Client의 Next Sequence Number)


3) Cient, Seq는 [ 58 2e 7e d0 ]

(TCP Segment 길이가 387(0x183), Server가 정상 수신하면 Server의 Ack는 [ 0x582e7ed0 + 0x183 = 58 2e 80 53 ])

다음 Server의 Seq는 [ 7c b7 38 29 ]

Client  ----- [ HTTP/psh,ack ] ---->  Server

[ 58 2e 7e d0 ] Seq

Next Sequence Number --> Seq + TCP Segment Length = [ 58 2e 7e d0 ]

7c b7 38 29 ] Ack (Server에서 보낸 패킷에 대한 확인 응답 + Server의 Next Sequence Number)

.

.

.

.




'Analysis > Network' 카테고리의 다른 글

[VPN] 터널링  (0) 2016.08.09
Tcpdump usage examples  (0) 2016.04.26
HTTPS와 SSL 이해  (0) 2016.04.15
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

How To Install nginx, MySQL, PHP (LEMP) stack on Ubuntu 14.04


nginx -v 1.4.6

php -v 5.5.9


sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nginx
ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//' 
sudo apt-get install mysql-server
sudo mysql_install_db
sudo mysql_secure_installation
sudo apt-get install php5-fpm php5-mysql php5-cli
sudo vim /etc/php5/fpm/php.ini

cgi.fix_pathinfo=0

sudo service php5-fpm restart
sudo vim /etc/nginx/sites-available/default

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.html index.htm;

    server_name localhost;

    location / {
        try_files $uri $uri/ =404;
    }
}

server {
    listen 80 default_server;
    listen [::]:80 default_server ipv6only=on;

    root /usr/share/nginx/html;
    index index.php index.html index.htm;

    server_name server_domain_name_or_IP;

    location / {
        try_files $uri $uri/ =404;
    }

    error_page 404 /404.html;
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

sudo service nginx restart
vim info.php
phpinfo();

http://server_domain_name_or_IP/info.php

sudo rm /usr/share/nginx/html/info.php


많이 사용하는 php 모듈도 미리 설치해놓자.

apt-get install php5-geoip, php5-curl

service php5-fpm restart


참고 #https://www.digitalocean.com/community/tutorials/how-to-install-linux-nginx-mysql-php-lemp-stack-on-ubuntu-14-04


'Web Service' 카테고리의 다른 글

OWASP Honeypot  (0) 2022.03.10
[PHP] IP체크 정규식  (0) 2016.07.12
Nginx SSH 설정 & Rewrite 설정  (0) 2016.07.12
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

python /var/www/example.com/src/example/manage.py startapp app


sudo vim /var/www/example.com/src/example/example/setting.py

INSTALLED_APPS = [
    'django.contrib.admin',
    '.........
    'app',
]


sudo vim /var/www/example.com/src/example/example/urls.py

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('app.urls', namespace="app")),
]


cd /var/www/example.com/src/example/app/

sudo vim urls.py

from django.conf.urls import patterns, url
from app import views

urlpatterns = [
    url(r'^$', views.index, name='index'),
]


cd /var/www/example.com/src/example/app/

sudo vim views.py

from django.shortcuts import render
#from django.http import HttpResponse
def index(request):
  #return HttpResponse("home")
  return render(request, 'app/index.html', {})


mkdir /var/www/example.com/src/example/app/templates/app

sudo vim /var/www/example.com/src/example/app/templates/app/index.html

"hello"


cd /var/www/example.com/src/example/
sudo python manage.py createsuperuser


'Web Service > Django' 카테고리의 다른 글

django 버전 확인  (0) 2016.03.09
우분투에서 nginx + uwsgi + django 연동  (0) 2016.03.08
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

python2.x

$python -c "import django; print(django.get_version())"


python3.x

$python3 -c "import django; print(django.get_version())"

'Web Service > Django' 카테고리의 다른 글

django application 만들기  (0) 2016.03.09
우분투에서 nginx + uwsgi + django 연동  (0) 2016.03.08

+ Recent posts