1. global cs
  2. global ip
  3.  
  4. global ss
  5. #global sp
  6.  
  7. global ds
  8. global bp
  9.  
  10. global tab
  11. global out
  12. #cs='++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.'
  13. ip =
  14.  
  15. ss = []
  16. #sp =
  17.  
  18. ds = []
  19. bp =
  20.  
  21. tab =
  22. out = []
  23.  
  24. def tab_():
  25. i = tab
  26. stab = ''
  27. while i > :
  28. stab += '\t'
  29. i -=
  30. return stab
  31.  
  32. def push(var):
  33. global ss
  34. ss.append(var)
  35.  
  36. def pop():
  37. global ss
  38. return ss.pop()
  39.  
  40. def op_inc_val():
  41. global ip
  42. count =
  43. while True:
  44. op = cs[ip]
  45. ip = ip +
  46. if op == '+':
  47. count = count +
  48. else:
  49. break
  50. print tab_()+'ds[%d] += %d'%(bp, count)
  51.  
  52. def op_dec_val():
  53. global ip
  54. count =
  55. while True:
  56. op = cs[ip]
  57. ip = ip +
  58. if op == '-':
  59. count = count +
  60. else:
  61. break
  62. print tab_()+'ds[%d] -= %d'%(bp, count)
  63.  
  64. def op_inc_dp():
  65. global bp
  66. bp = bp +
  67.  
  68. def op_dec_dp():
  69. global bp
  70. bp = bp -
  71.  
  72. def op_jmp_fwd():
  73. global tab
  74. print tab_()+'while ds[%d]:'%(bp)
  75. tab = tab +
  76.  
  77. def op_jmp_bck():
  78. global tab
  79. tab = tab -
  80.  
  81. def op_out():
  82. print tab_()+'putchar(ds[%d])'%(bp)
  83.  
  84. def op_in():
  85. print tab_()+'getchar'
  86.  
  87. end = len(cs)
  88. while ip < end:
  89. op = cs[ip]
  90. ip = ip +
  91. if op == '+':
  92. ip = ip -
  93. op_inc_val()
  94. ip = ip -
  95. elif op == '-':
  96. ip = ip -
  97. op_dec_val()
  98. ip = ip -
  99. elif op == '>':
  100. op_inc_dp()
  101. elif op == '<':
  102. op_dec_dp()
  103. elif op == '[':
  104. op_jmp_fwd()
  105. elif op == ']':
  106. op_jmp_bck()
  107. elif op == '.':
  108. op_out()
  109. elif op == ',':
  110. op_in()
  111. else:
  112. print 'invalid opcode'
  113. break

Brainfuck反汇编(Python)的更多相关文章

  1. Brainfuck反汇编-高级版(Python)

    import re def sym2cal(s): if '>' in s: return len(s) else: return -len(s) def cal(s): if '+' in s ...

  2. Python逆向(一)—— 前言及Python运行原理

    一.前言 最近在学习Python逆向相关,涉及到python字节码的阅读,编译及反汇编一些问题.经过长时间的学习有了一些眉目,为了方便大家交流,特地将学习过程整理,形成了这篇专题.专题对python逆 ...

  3. Python 中如何查看进行反汇编

    dis模块       Python 反汇编是通过 dis 这个模块来查看的,一般有两种方式可以用来查看     方式一: 在命令行中使用 dis 查看   >>> def test ...

  4. Python逆向(三)—— Python编译运行及反汇编

    一.前言 前期我们已经对python的运行原理以及运行过程中产生的文件结构有了了解.本节,我们将结合具体的例子来实践python运行,编译,反编译的过程,并对前些章节中可能遗漏的具体细节进行补充. 二 ...

  5. Brainfuck解析器(Python)

    global cs global ip global ss #global sp global ds global bp global tab global out cs='++++++++++[&g ...

  6. python反汇编函数字节码

    使用dis模块 >>> def test(): ... print(1) ... a = 1 ... print(a) ... >>> from dis impor ...

  7. 《Python标准库》 目录

    目录 译者序序前言第1章 文本1.1 string—文本常量和模板1.1.1 函数1.1.2 模板1.1.3 高级模板1.2 textwrap—格式化文本段落1.2.1 示例数据1.2.2 填充段落1 ...

  8. 运用Python成为黑客

    1.Fuzz测试: 漏洞挖掘有三种方法:白盒代码审计.灰盒逆向工程.黑盒测试.其中黑盒的Fuzz测试是效率最高的一种,能够快速验证大量潜在的安全威胁. Fuzz测试,也叫做"模糊测试&quo ...

  9. Python渗透测试工具合集

    摘自:http://www.freebuf.com/tools/94777.html 如果你热爱漏洞研究.逆向工程或者渗透测试,我强烈推荐你使用 Python 作为编程语言.它包含大量实用的库和工具, ...

随机推荐

  1. Python开发之日志记录模块:logging

    1 引言 最近在开发一个应用软件,为方便调试和后期维护,在代码中添加了日志,用的是Python内置的logging模块,看了许多博主的博文,颇有所得.不得不说,有许多博主大牛总结得确实很好.似乎我再写 ...

  2. 简述synchronized和java.util.concurrent.locks.Lock的异同?

    主要相同点:Lock能完成synchronized所实现的所有功能 . 主要不同点:Lock有比synchronized更精确的线程语义和更好的性能.synchronized会自动释放锁,而Lock一 ...

  3. VB.NET只允许打开一个实例

    If UBound(Diagnostics.Process.GetProcessesByName(Diagnostics.Process.GetCurrentProcess.ProcessName)) ...

  4. 模拟页面获取的php数据(四)

    <?php $tqzf = [ "aData" => [//通勤方式 "trafficType" => [ 0 => [ "t ...

  5. kolla之docker私有仓库创建

    kolla镜像自从P版以后就没有向之前版本直接下载一个tar然后放入仓库那么简单了. 正式开始搭建仓库: 1.启动仓库容器 docker run  -d -v /opt/registry:/var/l ...

  6. 洛谷.4114.Qtree1(树链剖分)

    题目链接 模板题都错了这么多次.. //边权赋到点上 树剖模板 //注意LCA.链的顶端不能统计到答案! #include <cstdio> #include <cctype> ...

  7. BZOJ.1497.[NOI2006]最大获利(最小割 最大权闭合子图Dinic)

    题目链接 //裸最大权闭合子图... #include<cstdio> #include<cctype> #include<algorithm> #define g ...

  8. 潭州课堂25班:Ph201805201 第七课:控制流程 (课堂笔记)

    # 条件判断 s = '储蓄卡' if s == '男': # 如果if 表达式成立 ,则执行下级语句 print('男性') elif s == '女': # 如果上面表达式不成立,执行本次判断,本 ...

  9. __x__(2)0905第二天__计算机软件和硬件

    计算机(Computer)由硬件和软件组件,没有软件的计算机称为 裸机, 计算机的软件包括操作系统(OS)和应用软件(Software). 操作系统(Operating System,简称OS) 是管 ...

  10. android:ListView 的简单用法

    首 先新 建 一个 ListViewTest 项 目, 并 让 ADT 自 动帮 我 们创 建 好 活动 . 然后 修 改 activity_main.xml 中的代码,如下所示: <Linea ...