QXDM,QPST和QCAT是Qualcomm高通公司针对高通芯片的抓包分析工具。QXDM抓包分析,QPST与手机com口连接,QCAT用来分析抓包产生的isf文件(log)。...然后File--->Save Items保存抓的log,log为isf格式。...抓包生成isf文件默认在C:\Users\Public\Documents\Qualcomm\QXDM\ISF中,可以根据配置选择不同路径。 ?...2.QCAT查看log 打开QCAT,直接将该文件拖进去,修改edit->filter,过滤common的ims包即可。 ?...(4)选择端口和导出QCN的路径和名称,然后点击Start,进度条到100%即备份完成。
QXDM,QPST和QCAT是Qualcomm高通公司针对高通芯片的抓包分析工具。QXDM抓包分析,QPST与手机com口连接,QCAT用来分析抓包产生的isf文件(log)。...Load the QXDM Configurationfile (.dmc) that is provided by your Customer Engineering 比如我们要抓开机后不能注册到4G...然后File—>Save Items保存抓的log,log为isf格式。...抓包生成isf文件默认在C:\Users\Public\Documents\Qualcomm\QXDM\ISF中,可以根据配置选择不同路径。...2.QCAT查看log 打开QCAT,直接将该文件拖进去,修改edit->filter,过滤common的ims包即可。
一、原理 QXDM抓取log为isf格式,需要用QCAT打开进行分析,如果需要自动分析QXDM抓取的log,一个可行的方法为调用QCAT的COM接口打开isf文件并进行分析。...具体调用方法在QCAT安装后的《QCAT User Guide》用户手册中,第六章Scripting with QCAT (Windows Only) 详述了QCAT COM编程可用的接口。..., '', 'QCAT打开失败,请检查QCAT') sys.exit(1) 3、设置过滤器 self.TargetLogId = 0xB0C0 SIBFilter = qcatApp.PacketFilter...4、pywin32与多线程 用com调用QCAT处理log时,一开始单线程没有问题,一到多线程程序就崩溃,查到下面这篇文档。...response = qxdm.SetComPort(XX) #获取当前已经抓到的log的数量 qxdm.GetItemCount() #存储终端log qxdm.SaveItemStore('XXXXXX.isf
Ping包问题常见分析思路 3.1 终端与基站之间协议栈数据流走向图 3.2 测试场景无网络侧参与 3.3 QXDM Log分析思路 3.4 如何将PCAP log中的ping信息和QCAT log相应信息对应起来...从1G到2G,实现了模拟通信到数字通信的过渡,移动通信走进了千家万户;从2G到3G、4G,实现了语音业务到数据业务的转变,传输速率成百倍提升,促进了移动互联网应用的普及和繁荣。...最终,5G将渗透到经济社会的各行业各领域,成为支撑经济社会数字化、网络化、智能化转型的关键新型基础设施。 要能够使用5G网络,就必须使用5G芯片,通常可以叫做modem或基带。...3.3 QXDM Log分析思路 抓到QXDM后,用QCAT打开,导出PCAP log,如下图所示: 用QXDM打开PCAP log,过滤出Ping包内容(在过滤栏输入icmp进行筛选) 在...基站回复Ping Reply, 可以通过PDCP DL Data Pdu消息查看 3.4 如何将PCAP log中的ping信息和QCAT log相应信息对应起来 在PCAP log中,输入icmp
连接 [4.png] 此时服务端出现请求信息,表示连接成功 [5.png] 这个时候使用wireshark抓包可以查看到 Setup communication [0xF0] 的包 这里可以下载示例pcap...action=AttachFile&do=get&target=s7comm_downloading_block_db1.pcap [6.png] 相应的响应如下 [7.png] --- 漏洞利用 接下来采用开源的工控漏洞利用框架...ISF 进行漏洞测试。...cd isf/ pip install -t /usr/lib/python2.7/site-packages -r requirements.txt python2.7 isf.py kali如下...cd isf/ python2 -m pip install -r requirements.txt python2.7 isf.py 此时运行isf.py可以像msf一样访问和操作 use exploits
3.1.1 ISF介绍 ISF是一款针对工业控制系统的漏洞利用框架。...输入密码:123456,即可登录登录完毕后,执行以下指令运行isf cd /root/isf/ ./isf.py 运行效果如下: ?...当恶意代码被注入到PLC中后,会增加PLC中的代码量,如何我们定时观测原有代码和注入恶意代码后的程序,这两者的运行效果有明显的差异,然而其对生产过程的影响微乎其微。...yesBuild IPFW DAQ module...... : yesBuild IPQ DAQ module....... : noBuild NFQ DAQ module....... : noBuild PCAP...4.2 实验步骤 1.将PLC设备插入到服务器eth1网口中,并ping 192.168.20.108,查看是否可到达,若可达就进行下一步; 2.在Terminal里输入docker run -p 502
数据访问层,所谓的CRUD是后端程序员的必修课程,Spring Data JPA 可以让我们来简化CRUD过程,本文由简入深,从JPA的基本用法,到各种高级用法。...现在我们到JPA使用,JPA 接口需要继承QueryDslPredicateExecutor public interface CustomerRepository extends JpaRepository...queryFactory.selectFrom(customer) .where(customer.firstName.eq("Bob").and(customer.lastName.eq("Wilson"))); 使用JOIN QCat...cat = QCat.cat; QCat mate = new QCat("mate"); QCat kitten = new QCat("kitten"); queryFactory.selectFrom
exploit-db.com.要善于利用searchsploit - IRTmetasploit //msf相关利用插件 - framework //ics工控测试框架 - isf...//工控测试 - routersploit //iot测试 - nse //收集Nmap脚本 - pcap //收集工控协议数据包 - protocol //收集工控协议库
new BufferedWriter(new OutputStreamWriter(System.out))); for (int i = 2; i < num; i++) { boolean isf...= true; for (int j = 2; j < i; j++) { if (i % j == 0) { isf = false; break; }...} if (isf) { pw.println(i); } } pw.close(); } } 时间计算(测试数据10W): package com.item.action...:"+(end-start)+"毫秒"); pw.close(); } } 优化(测试数据10W): 只要把循环一直从2尝试到根号x就可以,可以发现,一个数的两个因数中,毕然有一个小于等于根号...所以只要从2尝试到根号x,如果都没有被整除,就是素数,否则就不是。
0x02 实战演示 前几篇文章我们讲了我们自研的一套工控攻击框架(ISF)的使用,以及怎样给这套攻击框架添加攻击脚本,并以实例的方式演示了ISF破解西门子S7-300密码的过程。...针对ISF工控攻击框架还有很多丰富的功能,比如PLC程序注入、PLC代理等,大家可以自行研究(免责声明:该攻击框架(ISF)主要应用于工控安全研究和教学,请不用作非法用途,使用该工具产生的一切后果该公司概不负责...今天我们就将网络攻击模块化,集成进我们的攻击框架ISF中,使用ISF加网络攻击模块的方式对目标设备发起攻击,观察目标设备的变化,最后分析这种攻击所带来的危害,同时,我们要从中学习到,应该采取什么的方式更好地保护工业设备...使用的方法和之前一样,我们将写好的脚本集成进ISF框架中(不懂的同学可以翻看前几期的文章,ISF框架添加模块这里不再赘述),通过ISF加载拒绝服务攻击脚本,以达到暂停“交通信息号”的演示效果。
好了,大家都知道PLC的基本功能后,那么就会有一个永恒的问题,一般有用的东西就会涉及到安全问题,既然你能通过编写程序让PLC控制设备,那么就会有别有用心的人也想控制它,所以,这里就涉及到PLC的保护机制...知道了PLC密码保护的相关知识后,我们随便找一个密码级别(这里我们使用只读),设置好密码后下载程序到PLC中,然后再次通过下载程序就需要输入密码(上面密码保护级别里说过,只读级别下载时需要输入密码),结果如下图所示...ISF模块添加 如上面细心网友发现的那样,github中的ISF项目确实没有今天要讲的这个模块,这也就是我们为什么要开发这个框架的原因,它是一套攻击框架,大家可以根据自己对PLC的研究成果,添加不同的功能模块...,最后将所有的攻击模块都集成到这个框架中,我们就可以拥有一个强大的工控攻击工具。...首先,你需要在ISF的module目录(例:/home/one/soft/isf/module/exploits/Siemens)下创建两个文件,名字任意(例:s7_200_password_check.py
我们只需要推导出对应题目的数学规律就可以直接操作,可能是一维数组,也可能是二维数组,总体来看二维数组的较多,但是如果能降为的话建议降为,因为如果降为起来你看看时间复杂度就知道咋回事了,那么在这里祝大家能无序的各种看明白,争取能帮助到大家...("char数组消耗时间:" + (end - start)); System.out.println(isf?"...("charAt消耗时间:" + (end - start)); System.out.println(isf?"...= s.charAt(i + 1)) { isf = false; break; } } if (isf) { System.out.println(s);// 因为只有...= s.charAt(i + 1)) { isf = false; break; } } if (isf) { System.out.println(s);// 因为只有
** * 将控制和逻辑及数据分类(该类就是数据) * @author Administrator * */ static class Test{ private boolean isf1...isf1){ try { this.wait(); } catch (InterruptedException e) { e.printStackTrace();...10; i++){ System.out.println(Thread.currentThread().getName() + "第" + j + "次轮巡,输出" + i); } isf1...= false; notify(); } /** * 输出100次 */ public synchronized void f2(int j){ if(isf1...可是,一旦该线程进入到wait()/sleep()/join()后,就会立马抛出InterruptedException。
args) { Action action = new Action(); action.init(); try { boolean isf...= action.fs.mkdirs(new Path("/data/infos/")); System.out.println(isf?"...Exception e) { e.printStackTrace(); } } } 会创建在【C盘的根目录】 copyFromLocalFile:复制文件到服务器...info.txt"), new Path("/data/infos/" + format.format(now) + ".txt")); System.out.println(isf...= action.fs.deleteOnExit(new Path("/data/infos/2022_04_19.txt")); System.out.println(isf
$(Platform).user.props 文件 3、系统级别的,就是 前面提供到 Microsoft.Cpp.Default.props 、Microsoft.Cpp.props 和 Microsoft.Cpp.targets...SingleFolder 属性没有定义或者定义的值为空时,将 SingleFolder 的属性定义为 false ; 如果属性组中只有一个属性,或者一个属性组中的多个属性有相同的条件,则可以把条件放置到...> Use 在这个定义中,首先增加来一个宏定义“ISF_BUILD_DLL...”,然后是定义预编译头文件的名称“ISF/Stable_Headers.h”,而不是默认的“stdafx.h”,最后定义来预编译头文件的使用规则是“使用预编译头文件”,这就要求所有的C/C++文件必须在最前面包含头文件...“ISF/Stable_Headers.h”,除非在文件上指定不使用预编译头文件; 2、链接的选项放置在 ItemDefinitionGroup 元素的 Link 子元素中,例如下面的定义: <ItemDefinitionGroup
类别 运算符 关联性 1 () [] 左到右 2 ! ~ 右到左 3 * / % 左到右 4 + - 左到右 5 >> >>> 到右 6 > >= 到右 7 == !...= 左到右 8 & 左到右 9 ^ 左到右 10 | 左到右 11 && 左到右 12 || 左到右 13 = += -= *= /= %= >>= 到左 14 , 左到右...语法 if 语句的语法格式如下: package day1 object demo2 { def main(args: Array[String]) { var isf=true;...语法 if...else 的语法格式如下: package day1 object demo2 { def main(args: Array[String]) { var isf=true...; if(isf) { // 如果布尔表达式为 true 则执行该语句块 print("is true"); }else { print("is
所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。...具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入(恶意)SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL...import java.util.regex.Pattern; public class demo { public static void main(String[] args) { boolean isf...name=admin &pass=admin' and '1=1"); System.out.println(isf?"
前言: 模运算在数论和程序设计中都有着广泛的应用,奇偶数的判别到素数的判别,从模幂运算到最大公约数的求法,从孙子问题到凯撒密码问题,无不充斥着模运算的身影。...while True: x = int(input("请输入一个整数:\n")) isf = True for j in range(2,x):#排除1和本身,所以是从2开始到x...,而不是1到x+1 if x % j == 0: isf = False if isf: print(x,"是素数") else:
= o.indexOf("傻") == -1; return isf ?..._this.index = 0; } //将每次递增或归零的下角标赋值到数组上..." />登录/注册 切换 isf"> isf ?...= this.isf ?
filesDir + "/info.json", fileIo.OpenMode.WRITE_ONLY | fileIo.OpenMode.CREATE); // 将集合转换成json序列化对象存储到文件中...let option = new Option(); let content: string = ""; let readLen: number=0; do { // 读取文件内容到数组缓冲区...order.no = no+1; order.count = this.ok; orderList.push(order); // 将集合转换成json序列化对象存储到文件中...option = new Option(); let content: string = ""; let readLen: number=0; do { // 读取文件内容到数组缓冲区...= new Option(); let content: string = ""; let readLen: number = 0; do { // 读取文件内容到数组缓冲区