首页 > 编程语言 >逆向常用python代码

逆向常用python代码

时间:2024-03-26 15:13:05浏览次数:22  
标签:逆向 python 代码 base64 bytes str ans encoded message

字符串转数组列表

def strTolist(str):
    ans = list(str)
    for i in range(len(ans)):
        ans[i] = ord(ans[i])
    return ans

str='Hello'
print(strTolist(str))
#输出:[72, 101, 108, 108, 111]

16进制字符串转字符串

def hexstrTostr(hexstr):
    byte_str = bytes.fromhex(hexstr)
    return byte_str.decode("utf-8")

hexstr = "48656c6c6f"
print(hexstrTostr(hexstr))
# 输出:Hello
# 0x48->H 0x65->e 0x6c->l 0x6c->l 0x6f->0

字符串中大写转小写

strs.lower()

字符串中大写转小写

strs.upper()

字符串大小写置换

def ulsub(old_strs):
    new_strs = ''
    for str in old_strs:
        if str.isupper():
            new_strs += chr(ord(str) + 32)
        elif str.islower():
            new_strs += chr(ord(str) - 32)
        else:
            new_strs += str
    return new_strs

倒序输出

for i in range(10,1,-1):
	print(i)
#输出:
#10
#9
#8
#7
#6
#5
#4
#3
#2

列表反转

data_list[::-1]

数组列表通过ASCII码转为字符串

def listTostr(table):
    ans = ''
    for item in table:
        ans = ans + chr(item)
    return ans
lt = [0x48,0x65,0x6c,0x6c,0x6f]
print(listTostr(lt))
#输出:Hello

base64换表

def base64_encode(message,base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"):
    # 将字符串编码为字节串
    message_bytes = message.encode('utf-8')

    # 计算需要补齐的字节数
    padding = 3 - (len(message_bytes) % 3)
    if padding == 3:
        padding = 0

    # 补齐字节串
    message_bytes += b'\x00' * padding

    # 将每3个字节编码为4个Base64字符
    encoded_chars = []
    for i in range(0, len(message_bytes), 3):
        # 3个字节转换为一个24位整数
        value = (message_bytes[i] << 16) + (message_bytes[i + 1] << 8) + message_bytes[i + 2]
        # 拆分24位整数为4组6位
        for j in range(4):
            index = (value >> ((3 - j) * 6)) & 63
            encoded_chars.append(base64_chars[index])

    # 根据补齐数添加 '=' 字符
    for i in range(padding):
        encoded_chars[-(i + 1)] = '='

    # 将字符列表转换为字符串并返回
    return ''.join(encoded_chars)


def base64_decode(encoded_message,base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"):

    # 初始化解码字节串
    decoded_bytes = bytearray()

    # 解码每4个Base64字符为3个字节
    for i in range(0, len(encoded_message), 4):
        # 将4个Base64字符映射回6位整数
        value = 0
        for j in range(4):
            if encoded_message[i + j] == '=':
                value <<= 6
            else:
                value <<= 6
                value += base64_chars.index(encoded_message[i + j])

        # 将6位整数拆分为3个字节
        for j in range(2, -1, -1):
            decoded_bytes.append((value >> (j * 8)) & 255)

    # 去除补齐字节
    while decoded_bytes[-1] == 0:
        decoded_bytes.pop()

    # 将字节串解码为字符串并返回
    ans = None
    try:
        ans = decoded_bytes.decode('utf-8')
    except Exception as e:
        print("[*]解码失败")
    return ans

message = "Hello, World!"
encoded_message = base64_encode(message,base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
print("Encoded:", encoded_message)

decoded_message = base64_decode(encoded_message,base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/")
print("Decoded:", decoded_message)

16进制字符串转10进制整数

hexstr = "1A3F"  # 十六进制字符串
decimal_number = int(hexstr, 16)
print(decimal_number)
#输出: 6719
#0x1A3F == 6719

10进制整数转16进制字符串

hex_result = hex(6719)
print(hex_result)
#输出: 0x1a3f
#0x1A3F == 6719

标签:逆向,python,代码,base64,bytes,str,ans,encoded,message
From: https://www.cnblogs.com/noahze/p/18096681

相关文章

  • Python能用来做什么?以下是Python的三大主要用途
    如果你想学Python,或者你刚开始学习Python,那么你可能会问:“我能用Python做什么?”这个问题不好回答,因为Python有很多用途。但是随着时间,我发现有Python主要有以下三大主要应用:·Web开发·数据科学包括机器学习、数据分析和数据可视化·脚本让我们来依次介绍。一、W......
  • Python基础知识汇总
    1.Anaconda的安装百度Anaconda的官网,下载左边的Python3.X版本然后是设置路径,最后给出Jupyternotebook。具体参考:猴子:初学python者自学anaconda的正确姿势是什么??不过平时练习的时候我个人习惯用EnthoughtCanopy,但比起Anaconda有些中文字符的编写不兼容。下载链接如下:C......
  • 别再花钱报班了,这篇文章带你入门Python
    最近有许多小伙伴后台联系我,说目前想要学习Python,但是没有一份很好的资料入门。一方面的确现在市面上Python的资料过多,导致新手会不知如何选择,另一个问题很多资料内容也很杂,从1+1到深度学习都包括,纯粹关注Python本身语法的优质教材并不太多。刚好我最近看到一份不错的英文P......
  • Python之Web开发中级教程----中级教程成果下载
    Python之Web开发中级教程----中级教程成果下载到目前为止,中级教程已经完成。按照一步步的教程搭建虚拟机中的环境,包括内容如下:   Ubuntu操作系统搭建   Python配置   Redis安装配置   Python库中包括      Pip安装      Pyinstaller......
  • 代码随想录算法训练营第二十七天|●39. 组合总和 ● 40.组合总和II ● 131.分割回文串
    39组合总和题目链接/文章讲解:https://programmercarl.com/0039.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8C.html视频讲解:https://www.bilibili.com/video/BV1KT4y1M7HJ一开始自己写的大概和答案差不多,但是弄不明白回溯要传递的参数,但是自己一开始想到了终止条件,如果>7了就......
  • 32个Python爬虫项目让你一次吃到撑
    今天为大家整理了32个Python爬虫项目。整理的原因是,爬虫入门简单快速,也非常适合新入门的小伙伴培养信心。微信公众号爬虫。基于搜狗微信搜索的微信公众号爬虫接口,可以扩展成基于搜狗搜索的爬虫,返回结果是列表,每一项均是公众号具体信息字典。豆瓣读书爬虫。可以爬下豆瓣读......
  • python常用语句查询
    #!/usr/bin/python3#-*-coding:UTF-8-*-#注释'''多行三点注释'''"""多行注释"""ifTrue: print("true")else: print("false")a1=b1=c1=99d,e,f=1,2,"myname"a,b,c,d=......
  • Python之Scrapy爬虫框架安装及使用详解
    声明文章所涉及的内容仅为学习交流所用。前言:        Scrapy是用Python实现的一个为了采集网站数据、提取结构性数据而编写的应用框架。常应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通常我们可以很简单的通过Scrapy框架实现一个爬虫,抓取指......
  • PySide6:使用Python第三方库的隐蔽问题
    PySide6:使用Python第三方库的隐蔽问题问题描述PySide6使用QChart的问题,我在自己机器上和服务器上都发现无法导入QChart模块,可是我用PySide6的其他模块就好好的...解决方案鉴于PySide6官网都是直接这样导入模块的,因此肯定不是代码的问题。遂怀疑是所安装的PySide6不全。当前......
  • 【RTE里Rte_DRead函数和Rte_Read函数在代码里的区别】
    前言使用RTE时,常会使用到Rte_DRead和Rte_Read函数,今天以代码视角看看二者的区别。应用层在应用层调用Rte_DRead接口函数读取CAN信号值。read_isSignalA=Rte_DRead_Isignal_isSignalA_Isignal_isSignalA();在应用层调用Rte_Read接口函数读取CAN信号值。Rte_Read......