Ubuntu 16.04 升级OPENSSL

Ubuntu 16.04 系统默认带的是1.0.2的openssl,而openssl暴露的漏洞越来越多,而ubuntu似乎也不打算在升级包中包含它,只能手动升级它了。 首先下载最新的openssl源码包 wget https://www.openssl.org/source/openssl-1.1.1k.tar.gztar xvfz openssl-1.1.1k.tar.gz cd openssl-1.1.1k/ ./configmakemake testmake install 创建openssl软链接 mv /usr/bin/openssl /root/ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl 链接加密缺失的so文件 ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/ 来试试看效果 openssl version OpenSSL 1.1.1k 25 Mar 2021

以太坊入门(三)用web3j进行以太转账及代币转账

上章讲到账户的查询,本章讲述账户转账。 以太坊转账 We3j web3j = Web3j.build(new HttpService(ConstantLibs.WEB3_ADDRESS)); Credentials credentials = WalletTool.loadCredentials(fromAddress); EthGetTransactionCount ethGetTransactionCount = web3j.ethGetTransactionCount( fromAddress, DefaultBlockParameterName.LATEST).sendAsync().get(); BigInteger nonce = ethGetTransactionCount.getTransactionCount(); RawTransaction rawTransaction = RawTransaction.createEtherTransaction( nonce, Convert.toWei(“18”, Convert.Unit.GWEI).toBigInteger(), Convert.toWei(“45000”, Convert.Unit.WEI).toBigInteger(), toAddress, new BigInteger(amount)); byte[] signedMessage = TransactionEncoder.signMessage(rawTransaction, credentials); String hexValue = Numeric.toHexString(signedMessage); EthSendTransaction ethSendTransaction = web3.ethSendRawTransaction(hexValue).sendAsync().get(); if (ethSendTransaction.hasError()) { log.info(“transfer error:”, ethSendTransaction.getError().getMessage()); } else {… Continue reading 以太坊入门(三)用web3j进行以太转账及代币转账

以太坊入门(二)用web3j进行以太查询及通证查询

以太坊的开发,基本都是go语言和nodejs的天下,web3j出现给java开发人员提供了很大的便利。本文会对一些以太坊的基本操作用java语言来实现。 本章会讲述通过web3j进行账户余额的查询。 以太余额查询 以太的余额查询比较简单,直接调用web3j的ethGetBalance就可以。 Web3j web3j = Web3j.build(new HttpService(ConstantLibs.WEB3_ADDRESS)); EthGetBalance ethGetBalance = web3j.ethGetBalance( address, DefaultBlockParameterName.LATEST).sendAsync().get(); BigInteger balance = ethGetBalance.getBalance(); 通证的余额查询 代币的查询就比较复杂一些,研究了好长时间,最后发现每个代币合约都会实现balanceOf方法,可以通过这个方法来查询通证的余额。 Web3j web3j = Web3j.build(new HttpService(ConstantLibs.WEB3_ADDRESS)); Function function = new Function( “balanceOf”, Arrays.asList(new Address(address)), // Solidity Types in smart contract functions Arrays.asList(new TypeReference<Type>() { })); String encodedFunction = FunctionEncoder.encode(function); org.web3j.protocol.core.methods.response.EthCall response = web3j.ethCall( org.web3j.protocol.core.methods.request.Transaction.createEthCallTransaction(address, contract,… Continue reading 以太坊入门(二)用web3j进行以太查询及通证查询

以太坊入门(一)账户和nonce的关系

什么是nonce? 在以太坊的交易数据中,大家都可以看到一个数字,nonce,从0开始,一直向上递增,这个代表什么意思呢? 以太坊所有的交易都是基于account的,不同于基于utxo的比特币,因此需要对每次交易都按顺序记录,nonce值就是这个顺序,主要用来防止重放攻击。 每发起一笔交易,nonce就会加一。对于发起的解释: 1.外部账户每发送一笔交易; 2.合约账户每创建一个合约 而转入交易、合约调用其他合约等属于内部调用,因此nonce值不变。 如何使用nonce 发起转账或者创建合约的时候,通过web3从以太坊网络查询当前的nonce(ethGetTransactionCount)值,使用此值作为当前交易的nonce值,发送到以太坊网络即可。 nonce使用的几条规则 1. 当nonce太小(小于当前的nonce值),交易会被直接拒绝,Transactions with too low a nonce get immediately rejected; 2. 当nonce太大,大于当前nonce,交易会一直处于队列之中,Transactions with too high a nonce get placed in the transaction pool queue; 3.当发送一个比较大的nonce值,然后补齐开始nonce到那个值之间的nonce,那么交易依旧可以被执行,If transactions with nonces that fill the gap between the last valid nonce and the too high nonce are sent and… Continue reading 以太坊入门(一)账户和nonce的关系

树莓派充当airplay接收器

iOS升级以后,新版本经常不兼容xbian之类自带的airplay功能,目前来Shairport的支持还是不错的。我在新的树梅派3b+上编译了一下,支持ios 11.0.4版本。 首先升级树莓派 sudo apt-get update sudo apt-get upgrade 然后安装依赖包 sudo apt-get install autoconf automake avahi-daemon build-essential git libasound2-dev libavahi-client-dev libconfig-dev libdaemon-dev libpopt-dev libssl-dev libtool xmltoman 下载shairport源码 git clone https://github.com/mikebrady/shairport-sync.git 生成配置文件 cd shairport-sync autoreconf -i -f ./configure –with-alsa –with-avahi –with-ssl=openssl –with-systemd –with-metadata 编译安装 make sudo make install 设置为自动启动 sudo systemctl enable shairport-sync 启动 sudo service… Continue reading 树莓派充当airplay接收器

Nginx反向代理跨域option问题解决

CORS on Nginx The following Nginx configuration enables CORS, with support for preflight requests. # # Wide-open CORS config for nginx # location / { if ($request_method = ‘OPTIONS’) { add_header ‘Access-Control-Allow-Origin’ ‘*’; add_header ‘Access-Control-Allow-Methods’ ‘GET, POST, OPTIONS’; # # Custom headers and headers various browsers *should* be OK with but aren’t # add_header ‘Access-Control-Allow-Headers’… Continue reading Nginx反向代理跨域option问题解决

区块链翻译文章系列(一)初学者指南 Blockchain For Dummies: A Beginner’s Guide

Blockchain For Dummies: A Beginner’s Guide   Blockchain: the single most confusing term since Bitcoin. Everyone has a vague idea of what it does. It’s either the ultimate evolution of financial technologies, or a silly fad that can be summed up in the disconcerting phrase: “dogechain.” In reality, major companies around the world have already… Continue reading 区块链翻译文章系列(一)初学者指南 Blockchain For Dummies: A Beginner’s Guide

CentOS 7 下 firewalld的基本操作

这两天服务器升级,升级后发现有些服务不能用了。后来研究了一下,是因为防火墙的原因。之前调试,为了偷懒,把防火墙关了,就没启动过,现在想想裸奔了几个月,心真是大。 对外增加服务: firewall-cmd –zone=public –add-port=80/tcp –permanent 对内设置安全区 firewall-cmd –permanent –zone=internal –change-interface=enp03s firewall-cmd –zone=public –add-port=3306/tcp –permanent 最后,再重新加载firwalld策略 firewall-cmd –reload 以下转载: http://qianxunclub.com/linux-centos-7-fang-huo-qiang-zhi-ju-you-ming-ling-xing-de-firewalldde-ji-ben-cao-zuo/ 启动FirewallD服务: ? 1 2 systemctl enable firewalld.service #设置开机启动 systemctl start firewalld.service #开启服务 查看防火墙状态: ? 1 systemctl status firewalld 1. 区域管理 1.1. 网络区域简介 通过将网络划分成不同的区域,制定出不同区域之间的访问控制策略来控制不同程序区域间传送的数据流。例如,互联网是不可信任的区域,而内部网络是高度信任的区域。网络安全模型可以在安装,初次启动和首次建立网络连接时选择初始化。该模型描述了主机所连接的整个网络环境的可信级别,并定义了新连接的处理方式。有如下几种不同的初始化区域: 阻塞区域(block):任何传入的网络数据包都将被阻止。 工作区域(work):相信网络上的其他计算机,不会损害你的计算机。 家庭区域(home):相信网络上的其他计算机,不会损害你的计算机。 公共区域(public):不相信网络上的任何计算机,只有选择接受传入的网络连接。 隔离区域(DMZ):隔离区域也称为非军事区域,内外网络之间增加的一层网络,起到缓冲作用。对于隔离区域,只有选择接受传入的网络连接。 信任区域(trusted):所有的网络连接都可以接受。 丢弃区域(drop):任何传入的网络连接都被拒绝。 内部区域(internal):信任网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。 外部区域(external):不相信网络上的其他计算机,不会损害你的计算机。只有选择接受传入的网络连接。 注:FirewallD的默认区域是public。 1.2. 显示支持的区域列表… Continue reading CentOS 7 下 firewalld的基本操作

Published
Categorized as Technology

Auto start a java Swing GUI program when raspberry boots

I planed make an self-desgin photo or movie player base on Raspberry. Also I can use it as photo frame. If I need improve the performance of the PI, I need write it with Python, I think.   Part 1 – Build the Foundation In this part, we will focus on preparing Raspbian Lite. 1.… Continue reading Auto start a java Swing GUI program when raspberry boots

解决PKIX问题:unable to find valid certification path to requested target

话说前几天在测试服务器上遇到了这么个异常 javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 就是说找不着安全证书啥的等等烂码七糟的一大堆 接着就拜Google大神,发现一篇文章能被N个人转来转去的,关键文章还不怎么靠谱 后来找到了一个办法,幸运的是在测试环境一弄, 这个问题看上去就被解决了 我们要做的就是将所要访问的URL的安全认证证书导入到客户端 下面是获取安全证书的一种方法 /* * Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions… Continue reading 解决PKIX问题:unable to find valid certification path to requested target

[转]openssl的证书格式转换

证书转换 PKCS 全称是 Public-Key Cryptography Standards ,是由 RSA 实验室与其它安全系统开发商为促进公钥密码的发展而制订的一系列标准,PKCS 目前共发布过 15 个标准。 常用的有: PKCS#7 Cryptographic Message Syntax Standard PKCS#10 Certification Request Standard PKCS#12 Personal Information Exchange Syntax Standard X.509是常见通用的证书格式。所有的证书都符合为Public Key Infrastructure (PKI) 制定的 ITU-T X509 国际标准。 PKCS#7 常用的后缀是: .P7B .P7C .SPC PKCS#12 常用的后缀有: .P12 .PFX X.509 DER 编码(ASCII)的后缀是: .DER .CER .CRT X.509 PAM 编码(Base64)的后缀是: .PEM… Continue reading [转]openssl的证书格式转换

FTP时显示500 Illegal PORT command的解决

使用EditPlus打开FTP服务器上的文件时,发现连接不了 在windows的dos窗口用FTP命令去连时,可以登录,但使用ls等命令时,出现: 500 Illegal PORT command. 425 Use PORT or PASV first. 根据提示是被动模式的问题 在EditPlus的FTP设定高级选项中,选上passive FTP mode即可而dos窗口的FTP命令则无法设置为被动模式 FTP主/被动模式的原理 ————————————————————————————————————————————————– FTP是File Transfer Protocol(文件传输协议)的缩写,用来在两台计算机之间互相传送文件相比于HTTP,FTP协议要复杂得多复杂的原因,是因为FTP协议要用到两个TCP连接,一个是命令链路,用来在FTP客户端与服务器之间传递命令;另一个是数据链路,用来上传或下载数据 FTP协议有两种工作方式:PORT方式和PASV方式,中文意思为主动式和被动式 PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路当需要传送数据时,客户端在命令链路上用PORT命令告诉服务器:我打开了XXXX端口,你过来连接我于是服务器从20端口向客户端的XXXX端口发送连接请求,建立一条数据链路来传送数据 PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路当需要传送数据时,服务器在命令链路上用PASV命令告诉客户端:我打开了XXXX端口,你过来连接我于是客户端向服务器的XXXX端口发送连接请求,建立一条数据链路来传送数据 概括: ——————————————————————————– 主动模式:服务器向客户端敲门,然后客户端开门 被动模式:客户端向服务器敲门,然后服务器开门 所以,如果你是如果通过代理上网的话,就不能用主动模式,因为服务器敲的是上网代理服务器的门,而不是敲客户端的门 而且有时候,客户端也不是轻易就开门的,因为有防火墙阻挡,除非客户端开放大于1024的高端端口 ——————————————————————————– 要用主动模式来下载,请您把下载工具的被动模式(PASV)都不要打勾,用主动模式来下载就OK了,如果在出错,那就被动主动相互转换一下 常见的FTP客户端软件的PASV方式的关闭方法 大部分FTP客户端默认使用PASV方式,PASV模式的意式是被动模式 在大部分FTP客户端的设置里,常见到的字眼都是PASV或被动模式 IE: 工具 -> Internet选项 -> 高级 -> 使用被动FTP(需要IE6.0以上才支持) CuteFTP: Edit -> Setting -> Connection -> Firewall -> PASV Mode 或… Continue reading FTP时显示500 Illegal PORT command的解决

Published
Categorized as Technology

MOUNT AN SMB NETWORK DRIVE ON RASPBERRY PI

original post: http://geeks.noeit.com/mount-an-smb-network-drive-on-raspberry-pi/ In this tutorial we will describe how to connect your Raspberry Pi to a network drive and permanently mount it to your system. Even though this article uses a Raspberry Pi as an example to connect to an SMB drive, the steps used can be applied to any Debian based system, such as… Continue reading MOUNT AN SMB NETWORK DRIVE ON RASPBERRY PI

How to wake up a pc by PHP

source: http://php.net/manual/en/ref.sockets.php http://www.rkrishardy.com/2009/12/permission-denied-13-when-opening-socket-in-php-apache/ <?php /** * Wake-on-LAN * * @return boolean * TRUE: Socked was created successfully and the message has been sent. * FALSE: Something went wrong * * @param string|array $mac You will WAKE-UP this WOL-enabled computer, you * need to add the MAC-address here. Mac can be * array too. * *… Continue reading How to wake up a pc by PHP

How do I start to to play videos automatically while boot?

Seems like the answer to your question is contained within an other question on this site. I am trying to play videos automatically when the Raspberry Pi boots. I decided to use crontab for that: @reboot /storage/.config/autostart.sh The autostart.sh file contains the following code: xbmc-send -a “PlayMedia(/storage/videos/)” The Raspberry Pi successfully automatically starts to play… Continue reading How do I start to to play videos automatically while boot?