分类目录归档:代码

华为《HarmonyOS第一课》“从网络获取数据 ”代码示例中的本机服务器设置

这是华为关于HarmonyOS开发系列课程中的一课,需要构建一个本地新闻服务端,然后开发客户端去访问并获得数据。
关于如何构建服务端,程序代码的README中介绍的比较简短,测试时需要构建局域网环境:测试本Codelab时要确保运行服务端代码的电脑和测试机连接的是同一局域网下的网络,您可以用您的手机开一个个人热点,然后将测试机和运行服务端代码的电脑都连接您的手机热点进行测试。
这种方式比较麻烦,实际上调试代码时,大多时候是通过模拟器来实现,并不需要通过手机实机开热点。下面是简短步骤。

继续阅读

整了个鸿蒙官方文档的下载器

HarmonyOs的官方开发文档非常有价值,但有时不能联网,所以写了个小脚本,批量下载并打包成epub。python代码,命令行界面使用PyInquirer实现,用pygments库实现代码高亮。
主界面如下:

***************************************************
HarmonyOs Development Guides/References Downloader
功能:下载HarmonyOs的官方文档并生成epub
版本:3.0
时间:2024-07-18
****************************************************
? 主功能菜单,选择你的操作:  (Use arrow keys)
 ❯  1) 下载应用开发文档(3.1/4.0,已归档)
    2) 下载API参考文档(3.1/4.0,已归档)
    3) 下载应用开发文档(next)
    4) 下载API参考文档(next)
    5) 下载AGC文档
    6) 下载设计指南
    7) 退出程序

继续阅读

修改python的amzqr库,使其支持中文编码

amzqr是一个非常方便的文字信息生成二维码的python库,美中不足是原作者代码不支持中文。根据github上提交的pr,记录一下支持中文的修改方法。

1. 修改amzqr.py

    #if not isinstance(words, str) or any(i not in supported_chars for i in words):
    #不对中文字符进行检测
    if not isinstance(words, str):

继续阅读

Kali对AWUS1900网卡的支持

AWUS1900性能很强,但对Kali的支持并不太好,不能免驱。
驱动程序安装如下:

apt install linux-headers-$(uname -r)
apt install realtek-rtl8814au-dkms

一定要安装头文件,直接安装realtek驱动没用。然后需要重新启动linux才能进入monitor模式。但实测效果还不如其它AWUS卡。

绕过PyQt6的一些小坑

直接进入干货,供遇到相同情况的小伙伴参考。

一、pyuic6导出designer设计的窗体,py代码不完全兼容PyQt6

用Qt Designer设计完界面后,要用pyuic6导出为py文件,再在代码中调用,但直接调用会报错,原因是部分代码(主要是窗体对齐)导出的还是PyQt5的格式。
如导出为:

QtCore.Qt.AlignHCenter

在PyQt6下应该是:

QtCore.Qt.AlignmentFlag.AlignHCenter

需要将所有的对齐代码修改过来。可以用脚本自动处理(在windows下时可用wsl执行)。

awk '{sub(/Qt.AlignH/,"Qt.AlignmentFlag.AlignH");sub(/Qt.AlignL/,"Qt.AlignmentFlag.AlignL
");sub(/Qt.AlignB/,"Qt.AlignmentFlag.AlignB");sub(/Qt.AlignV/,"Qt.AlignmentFlag.AlignV");sub(/Qt.AlignT/,"Qt.AlignmentFlag.AlignT");sub(/Qt.AlignR/,"Qt.AlignmentFlag.AlignR"
);print $0}'

继续阅读

Kivy/KivyMD开发Andoird程序的一些踩坑记录

之前用python做了个命令行的爬虫,在安卓上运行时还得打开termux,用上虚拟键盘,很不方便,于是一直想改为Android版本的。近期刚发现Kivy/KivyMD可以基于Python进行跨平台开发,国庆期间进行了尝试。在此记录一些踩坑经历,供有相同需求的同学参考。

一、解决中文乱码问题

Kivy和KivyMD原生不支持中文,采用的默认字体是英文字体,直接运行起来就会显示方框。

Kivy中可以通过设置LabelBase修改字体,但是每一个控件都要在代码中增加font_style的定义,非常不方便。而KivyMD的控件就没有提供定义LabelBase改字体的功能。

而且,即使在本机开发环境中修改了字体设置,在打包生成apk文件安装后,在手机上运行时仍然是乱码。

下面是使用buildozer打包时,彻底解决中文乱码问题的方法。

继续阅读

部署使用WebGoat6网络漏洞测试平台

什么是WebGoat?引用一下OWASP官方介绍:

WebGoat是OWASP组织研制出的用于进行web漏洞实验的应用平台,用来说明web应用中存在的安全漏洞。WebGoat运行在带有java虚拟机的平台之上,当前提供的训练课程有30多个,其中包括:跨站点脚本攻击(XSS)、访问控制、线程安全、操作隐藏字段、操纵参数、弱会话cookie、SQL盲注、数字型SQL注入、字符串型SQL注入、web服务、Open Authentication失效、危险的HTML注释等等。WebGoat提供了一系列web安全学习的教程,某些课程也给出了视频演示,指导用户利用这些漏洞进行攻击。

WebGoat多年来一直是版本5.4,今年升级为版本6。主要是基于新的框架和界面对各项课程进行了重新集成,项目主页是 https://github.com/WebGoat/WebGoat

先来看一下两个版本的界面:

实际使用中,新版本不仅界面漂亮,关键是hints、solutions等选项的内容更加完善,便于学习。使用WebGoat有两种方法,一是直接下载运行包WebGoat-6.0-exec-war.jar,然后:

java -jar WebGoat-6.0-exec-war.jar

随后就可以在本机浏览器里使用了:http://localhost:8080/WebGoat

但是个人更倾向于另一种方法,就是下载源码包,通过maven部署使用。好处是可以完成一些需要修改源代码的课程,而且不限于本机运行。但全新安装tomcat、maven、java等必需环境,而且把参数设置好非常麻烦,所以直接在OWASP的Broken Web APP虚拟机上使用是最方便的,因为环境都已经构建好了。具体步骤如下:

下载得到WebGoat-Master.tar.gz,复制到/var/www里解压,得到WebGoat-master项目目录;
因为虚拟机启动时tomcat已经运行了,所以要先停止服务,再用mvn启动。将几个过程写成批处理:

    cat >~/run_webgoat6.sh<<EOF
    /etc/init.d/tomcat6 stop
    cd /var/www/WebGoat-master
    mvn clean tomcat:run-war
    EOF

这样,WebGoat5.4和6两个版本就是虚拟机里共存了。开机以后不运行run_webgoat6.sh脚本,则启动webgoat5.4,运行了以后再从主界面进入就可以play了!

给hostapd打补丁, 解决rt3070网卡建立软AP时无法握手的问题

折磨了自己一周多,供遇到同样问题的朋友们参考。

一般有两种方法在kali linux下建立软AP,一是使用airbase-ng,优点是运行方便,适应网卡的范围比较广,比如常见的rtl8187的网卡,局限是只能建立OPN和WEP加密的,不支持WPA和WPA2加密。二是通过hostapd,支持OPN、WEP、WPA、WPA2等多种加密方式,但支持的网卡有限。

之前我手上有rtl8187的网卡,一直把它当作神器,后来发现完全是被误导了,不仅信号一般,且支持的模式相当有限,最关键是不支持hostapd建立WPA加密的AP。用iw list命令可以看到rtl8187网卡支持的模式:

iw list
…
Supported interface modes:
     * IBSS
     * managed
     * monitor

一阵google后,在某电商那淘了一块rt3070芯片的,价格便宜、童叟无欺,支持b/g/n(rtl8187仅支持b/g),标配双6dBi增益天线,iw list看一下,瞬间发现这泥马才是真正的神器啊!(强烈推荐!!)

Supported interface modes:
     * IBSS
     * managed
     * AP
     * AP/VLAN
     * WDS
     * monitor
     * mesh point

继续阅读