好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

模拟登录封包python实现

#!/usr/bin/env python
# encoding:utf-8
  
from socket import  *
from ctypes import create_string_buffer
from struct import *
import sysconfig
import random
from ctypes.wintypes import BYTE
from msilib import datasizemask
from _ctypes import sizeof
from random import randint
from time import sleep
  
CODEC = 'utf-8'
  
global RECVBUFSIZ
global  m_wRecvSize
global  m_cbSendRound #发送字节映射
global  m_cbRecvRound  #接收字节映射
global  m_dwSendXorKey  #发送密钥
global  m_dwRecvXorKey #接收密钥
  
  
m_cbSendRound = 0
m_cbRecvRound = 0
  
RECVBUFSIZ = 16384
m_wRecvSize = 0
m_cbSendRound = 0 #发送字节映射
m_cbRecvRound = 0  #接收字节映射
m_dwSendXorKey = 0  #发送密钥
m_dwRecvXorKey = 0 #接收密钥
  
  
def SendLogonPacket(ADDR,SENDBUFF):
    global RECVBUFSIZ
    cs = socket(AF_INET, SOCK_STREAM)
    cs.connect(ADDR)
    cs.send(SENDBUFF)
    lennum = len( cs.recv(RECVBUFSIZ))
    cs.close()
    return lennum
  
  
def md5(str1):
    import hashlib
    m = hashlib.md5()
    m.update(str1)
    str1 = m.hexdigest()
    return  str1.upper()
def a2u(buff1,str1,start):
    i=0
    for letter in str1:
        pack_into("B",buff1,start+i,ord(letter))
        i += 2
def MapSendByte (byte):
    global m_cbSendRound
    index = byte + m_cbSendRound
    b = g_SendByteMap[index % 0x100]
    m_cbSendRound += 3
    return b
def MapRecvByte (byte):
    global m_cbRecvRound
    b = g_RecvByteMap[byte] - m_cbRecvRound
    b = b % 0x100
    m_cbRecvRound += 3
    return b
def SeedRandMap(wSeed):
    num = int(wSeed)
    num = ( num * 241103 + 2533101 ) >> 16
    return ((num  | int(0xFFFF0000)) -0xFFFF0000) #返回一个WORD类型
  
def CrevasseBuffer(buff,wDataSize):
    global dwXorKey
    global m_dwSendXorKey
    global m_dwRecvXorKey
    i = 0
    while i   

查看更多关于模拟登录封包python实现的详细内容...

  阅读:42次