700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 静态分析网易新闻搜索加密参数sign

静态分析网易新闻搜索加密参数sign

时间:2018-10-17 06:10:00

相关推荐

静态分析网易新闻搜索加密参数sign

由于需要采集网易新闻的关键词搜索用户并且采集用户发文

爬虫太难混了,简单分析下一般参数加密的思路

通过抓包发现参数sign加密且服务端有校验

通过 jadx 查看apk客户端源码 搜索 “sign” 相关的字段 最终定位到

str9是a2和时间戳组成,然后通过加密得出sign,点进去发现加密调用了native方法

通过IDA打开librandom.so文件并且找到encrypt方法,发现是静态注册

通过F5转为C代码

进入到doEn方法中,很容易分辨出是是AES或者DES加密方式

转为java代码

结果图

完整代码

public class AES {private static String iv = "00000000000000000000000000000000";//偏移量private static String key = "neteasenewsboard";//秘钥private static final String ALGORITHM = "AES/ECB/PKCS5Padding";//"算法/模式/补码方式"private static Cipher cipher;/*** 加密** @param sSrc 需要加密的字符串* @return* @throws Exception*/public static String encrypt(String sSrc) {try {byte[] raw = key.getBytes();SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");cipher = Cipher.getInstance(ALGORITHM);//"算法/模式/补码方式"cipher.init(Cipher.ENCRYPT_MODE, skeySpec);byte[] encrypted = cipher.doFinal(sSrc.getBytes());return new BASE64Encoder().encode(encrypted);//此处使用BASE64做转码功能,同时能起到2次加密的作用。} catch (Exception e) {return null;}}/*** 解密** @param sSrc 需要解密的字符串* @return* @throws Exception*/public static String decrypt(String sSrc) {try {byte[] raw = key.getBytes();SecretKeySpec skc = new SecretKeySpec(raw, "AES");cipher = Cipher.getInstance(ALGORITHM);cipher.init(Cipher.DECRYPT_MODE, skc);byte[] encrypted1 = new BASE64Decoder().decodeBuffer(sSrc);try {byte[] original = cipher.doFinal(encrypted1);String originalString = new String(original);return originalString;} catch (Exception e) {return null;}} catch (Exception ex) {return null;}}public static void main(String[] args) {System.out.println(AES.encrypt("d74d52a7ccdd3a291c8bf1329d0ffd4b"));System.out.println(AES.decrypt("A5j4pBHLPAVcYrsPFf99Mj1vW3Wpgvf9/DLIHMfzogx48ErR02zJ6/KXOnxX046I"));}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。