- joern
type: channel
link: https://www.sharklj.com/tag/joern/
items: Joern安装

Joern安装
type: item
date: 2023-01-20T19:58:00+08:00
description: Joern安装之全网最详细教程写在前面网上很多关于jorn的安装教程都是几年前的了，而且joern对包的版本要求非常严格，就导致joern的安装异常麻烦。本人异常“幸运”的碰到了，历时三天终于安装成功。文章记录了本人安装joern的全过程，其中包括在安装过程中遇到的问题以及解决问题的方法，希望可以帮助到大家。所需要的各种包已经整理好放在最后。环境要求这里的环境要求尽量保持一致，否则会导致莫名其妙的问题。java 1.7python 2.7neo4j-community-2.1.8(2.1.5也可)，文末提供的安装包自带gremlin插件。关于java和neo4j的安装我这里就不细说了，网上教程一大堆，也不难，只给出安装neo4j的链接。开始安装确保jdk安装成功且环境已经配置完成；确保neo4j可以正常启动。安装joernwget https://github.com/fabsx00/joern/archive/0.3.1.tar.gztar xfzv 0.3.1.tar.gz这一步就是去那个链接下载joern的压缩包，然后解压。如果你有WinScp类似的工具，你可以直接复制这个链接去浏览器里下载，然后把解压后的文件夹放到linux就行。下载joern需要的依赖包cd joern-0.3.1wget http://mlsec.org/joern/lib/lib.tar.gztar xfzv lib.tar.gz这一步跟上一步一样，也是去那个链接里下载依赖包的压缩包，然后解压。注意要确保解压后的lib文件夹位于joern的目录下。lib文件夹中是各种各样的jar包，也就是说jar包的位置是：joern/lib/jar包下载antsudo apt-get install antsudo ant倒数第二行出现BUILD SUCCESSFUL即表示安装成功，如下图所示，其中红框中的路径下一步要用。建立连接alias joern = 'java -jar 红框中的路径'就是把第三步红框中的路径拼接在alias joern = 'java -jar后面，别忘了单引号。安装py2neo 2.0sudo pip install py2nep==2.0执行上面的代码大概率汇报错，因为2.0的包实在是过于久远，以至于pip已经抛弃了它。此时只能去github上下载，一定要下载2.0的包。https://github.com/py2neo-org/py2neo/tags?after=py2neo-2.0.7把下载好的安装包放在linux任意位置，进入py2neo的根目录，执行下面的代码：sudo python2 setup.py install安装python-joernsudo apt-get install python-setuptools python-devwget https://github.com/fabsx00/python-joern/archive/0.3.1.tar.gztar xfzv 0.3.1.tar.gzcd python-joern-0.3.1sudo python2 setup.py install这一步安装了两个东西，一定要按照上面的顺序安装。第一个的安装基本不会出错。安装的第二个是python-joern本体，这一步如果出错了，可能是因为py2neo的版本不对，也可能是某个包下载出错，譬如我这里的错误：最后一行这里提示出现了invalid syntax错误，然后很多同学就是去google或者百度invalid syntax关键字，去找解决方法，一顿操作猛如虎，结果哼哧哼哧搜了半天都是驴唇不对马嘴的答案。咱们要善于发现发现问题的本质，发挥主观能动性，不能是Terminal它说啥就是啥，怎么办呢？找到出现错误的第一行：上面的代码一看真的头皮发麻，我一开始也是这样，不想去读代码，反正就是赖。但是你稍微读一下就会发现下面的信息第一个红框肯定是正常信息，因为执行的时候没报错。咱们找错误肯定先找出错的第一行，首先定位关键字Traceback，用来跟踪错误出处的。一看到Traceback这个关键字就知道错误的起点在这部分，然后往上看，发现Reading.... Downloading...啥的，最后发现pyparsing这一看就是一个python包呀，也就是说它在下载这个包的时候出错了。那怎么办？去github上下载下来然后自己手动安装pyparsing版本那么多，咱们要下载哪一个版本呢？看上图箭头指出来的信息：searching for pyparsing != 3.0.5 ,>=2.0.2这里的!=和>=这个两个符号就很有意思，尤其是这个>=，打个比方：你给你女朋友买了个火腿肠(3.0.5)，然后她说：这>=棒棒糖(2…