FlutterDart逆向从自信入门到精通跑路系列(2)-编写CrackMe
FlutterDart逆向从自信入门到精通跑路系列(2)-编写CrackMe
前言
这次依然是FlutterDart逆向系列的前置部分,学习如何正向的开发一个Flutter
在这里不想过多的深入到dart语言和flutter的本身细节中去。
只简单的讲讲用到的一些控件和按钮。
编写CrackMe
从编写一个简单的CrackMe入手
界面设计
一个按钮即可 加一个填写输入的框
校验即可
children: <Widget>[
const Text(
'填写正确的答案:',
),
TextField(
controller: textController,
style: Theme.of(context).textTheme.headline4,
),
MaterialButton(
child: const Text('提交'),
color: Colors.blue,
onPressed: (){
if(textController.text.isEmpty){
toast("请填写答案再提交");
}else{
if(textController.text==getMd5String(getMd5String("flutter"))) {
toast("恭喜你成功拿到flag");
}else{
toast("提交失败没有拿到flag");
}
}
})
如此的简单
一个text
一个TextField
一个button
组成了一套按钮 语法看起来像java嵌套了js,可以直接阅读。
加密算法选择
我们选择MD5算法
pubspec.yaml 配置文件导入相关包
dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^1.0.2
fluttertoast: ^8.0.8
crypto: ^3.0.1
直接使用:
String getMd5String(String str){
var bytes = utf8.encode(str+"test2021");
var digest = md5.convert(bytes);
return digest.toString();
}
特意加了盐
运行界面
总结
没有总结