google-code-prettify

星期四, 9月 15, 2022

【Python】將 Python Script 編譯成 執行檔(Executable File)

 口白:

流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!

環境:
Linux Mint 下使用 Python 3.8.10
Windows X下使用 Python 3.10 .6

狀況:
將 .Py 的 Python Script 編譯成 執行檔(Executable File)

要如何實做?問問谷哥吧…沒有谷哥罩…我就廢了…
以下就以 MS Windows X 的環境進行吧

流程:
1. 安裝 軟體
1.1 PYTHON3.X
1.2 chrome
2. 更新 與 安裝 Python 的套件
2.1 編譯執行檔需要的套件
2.2 專案需要的套件
3. Python Script 編譯成 執行檔(Executable File)

參考文獻:

那我們開始吧...
1. 安裝 軟體
     去官網下載並安裝軟體吧
1.1 PYTHON3.X
安裝吧,就讓我們向那些寫書的大師致敬
(謎之音:你就懶吧…光安裝就佔了三分之一篇幅)

選擇自訂安裝
就裝想裝的東西吧
基本要裝有 pip ...如果不喜歡 notepad 那就裝 IDLE 開發工具吧

必勾選 將 Python 加入環境變數
(目的是可以在 MSDOS Command line 下執行 Python)

Python 安裝完成

1.2 chrome
要谷哥罩...必裝
安裝 Chrome

2. 更新 與 安裝 Python 的套件
用下列指令安裝需要的套件

2.1 編譯執行檔需要的套件
py -m pip install --upgrade pip
py -m pip install --upgrade pyinstaller
py -m pip install --upgrade auto-py-to-exe

2.2 專案需要的套件
py -m pip install --upgrade matplotlib
py -m pip install --upgrade ezdxf

用檔案總管 在 Python 專案目錄下,路徑列中下 cmd 開啟命令提示字元

命令提示字元 開啟囉

裝裝裝...



(謎之音:你再懶吧…)

3. Python Script 編譯成 執行檔(Executable File)

使用 auto-py-to-exe ,在命令提示字元下 輸入auto-py-to-exe
它將會使用 Chrome 來開啟,這就是為什麼要裝它了

使用參數 --hidden-import 加入專案需要的套件
(我第一次編譯出錯,再把出錯的套件加入)

可輸出成單檔,CLI 程式
並產生編譯指令
(謎之音:就是懶的打字吧…)

編譯中...

編譯完成...

完...
(未完待續)



星期四, 7月 14, 2022

星期五, 2月 14, 2020

【GIS】MapWinGIS ocx 建置

口白:
流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!

流程主軸:
1. 下載檔案( MapWinGIS V5.1.1、gdal and mapserver 需選擇對應開發工具及版本)
2. 環境說明
2.1 基礎環境
2.2 必要安裝
3. 原碼編譯
3.1 解壓縮
3.2 編譯 SupportLibs
3.3 編譯 MapWinGIS

1. 下載檔案
下載 MapWinGIS V5.1.1


下載  GDAL and Mapserver
有分 64bit  or 32bit  版本並且有對應開發工具 MSVC 2017 與 MSVC 2015 等等版本,
依據開發工具對應下載吧

使用 VS2015
release-1900-gdal-2-4-2-mapserver-7-4-0.zip、
release-1900-gdal-2-4-2-mapserver-7-4-0-libs.zip
使用 VS2017、VS2019(2017 老子不爽裝,2019 硬幹啦)
release-1911-gdal-2-4-2-mapserver-7-4-0.zip、
release-1911-gdal-2-4-2-mapserver-7-4-0-libs.zip
(有很多對應版本,只測成功過VS2015 x86 對 1900;VS2019 對 1911)

在 [Tutorial] Compiling MWGis in VS2017 有說了一段話
所以,只測過 32bit 版本囉(謎之音:有病嗎?頻寬很多嗎?抓那麼多檔案是有收集癖)

2. 環境說明
2.1 基礎環境
作業系統:Windows 10 64Bit
開發工具:Microsoft Visual Studio Enterprise 2019
2.2 必要安裝
安裝完 Visual Studio 2019 後,使用 Visual Studio Installer 安裝環境
需要安裝 【.NET 桌面開發】
【使用 C++ 的桌面開發】 需要 v142 建置工具的 C++ MFC(x86 & x64...)
【使用 C++ 的桌面開發】 需要 Windows 10 SDK (10.0.17...)

3. 原碼編譯
3.1 解壓縮
分別解壓縮兩個壓縮檔
release-1900-gdal-2-4-2-mapserver-7-4-0.zip
release-1900-gdal-2-4-2-mapserver-7-4-0-libs.zip

release-1911-gdal-2-4-2-mapserver-7-4-0.zip
release-1911-gdal-2-4-2-mapserver-7-4-0-libs.zip

Visual Studio 2015 對的版本號是 v140( MapWinGIS-4.9.3.6编译方法 ) ;
Visual Studio 2017 對的版本號是 v141( youtube 上是這樣教的);
Visual Studio 2019 對的版本號是 v142(嘗試把v142目錄建立起來,編譯是成功的)
將 release-1900-gdal-2-4-2-mapserver-7-4-0 壓說檔內的 bin 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v140\bin\win32\ 資料夾中



將 release-1900-gdal-2-4-2-mapserver-7-4-0-libs 壓說檔內
include 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v142\include\win32\ 資料夾中

lib 資料夾的檔案複製到
MapWinGIS-5.1.1.1\support\GDAL_SDK\v142\lib\win32\ 資料夾中


3.2 編譯 SupportLibs
以管理員身份使用 VS2019 打開 MapWinGIS-5.1.1.1\support\ 資料夾裡的 SupportLibs.sln
編譯 cqlib.lib 和 spatialindex-mw.lib

在【解決方案】上,按右鍵  打開【屬性】 設定界面,將【通用屬性】中的【起始專案】
改成多個啟始專案

在【解決方案】上,點選它,然後點選【屬性】頁籤,
將【使用中的組態】的屬性改成 Release|Win32

完成以上設定後,就可以按下 F6  來建置方案
建置完成就會產生 spatialindex-mw.lib、cqlib.lib

3.3 編譯 MapWinGIS
以管理員身份使用 VS2019 打開 MapWinGIS-5.1.1.1\src 資料夾裡的 MapWinGIS.sln
修改 AngleHelper.cpp 檔案

s.Format(format + L"?, angle); //L"%.1f?
改成
s.Format(format + L"%.1f", angle); //L"%.1f?

接下來就可以建置它囉
完成後會產出 MapWinGIS.ocx

建置是成功了能不能用不知道啦
下次搭配 MapWindow 試看看好了
下回可能跟冨樫 yoshirin 的獵人一樣不知何時才會有下ㄧ回不要期待吧

                                                                                                                                                 (未完待續…)

參考文獻:
【Github】MapWinGIS v5.1.1
GDAL and MapServer Older Releases
【Blog】MapWinGIS-4.9.3.6编译方法
[Tutorial] Compiling MWGis in VS2017
【Youtube】Compiling MWGis in VS2017






星期六, 11月 09, 2019

【EF】EntityFrameworkCore 存取空間資料 Geometry 欄位…私、失敗しないので(我,絕對不會失敗)

劇情講述的是:
直言敢諫的派遣工 EntityFrameworkCore,討厭結群、討厭權力、討厭束縛,以其專業以及高超的技術作為武器,勇於挑戰白色巨塔封建體系的故事。

不需要資料庫的事情 EntityFrameworkCore 一律不做,
像是幫教授寫論文… いたしません(不幹)、
參加院長巡房… いたしません(不幹)、
配合掩護小三等等全都… いたしません(不幹),
且一定要準時下班,若要額外加班、要另外收高額費用…

自從 EntityFramework 誕生,也過了好幾個年頭…

維基百科:
Entity Framework (又稱ADO.NET Entity Framework)
是微軟以 ADO.NET 為基礎所發展出來的物件關聯對應 (O/R Mapping) 解決方案,
早期被稱為 ObjectSpace,
ADO.NET Entity Framework 以 Entity Data Model (EDM) 為主,
將資料邏輯層切分為三塊,
分別為 Conceptual Schema, Mapping Schema 與 Storage Schema 三層,
其上還有 Entity Client,Object Context 以及 LINQ 可以使用。

第一版 發行日期:2008-8-11 Entity Framework (EFv1) 包含在 Visual Studio 2008 Service Pack 1 以及 .NET Framework 3.5 Service Pack 1 中發表。
第二版 發行日期:2010-4-12 名為:Entity Framework 4.0 (EFv4) 。
第三版 發行日期:2011-4-12 名為:Entity Framework 4.1  開始支援 Code First。
…  光陰似箭,歲月如梭 …(謎之音:偷懶…)
第6版 發行日期:2013-10-17

微軟隨後決定對 .NET 跨平台化,並將其引入Linux,OSX和其他地方,
這意味著 Entity Framework 的下一個版本將被完全重寫。
2016-6-27 作為 Entity Framework Core 1.0 與 ASP.NET Core 1.0 和.NET Core 1.0 發布。
它最初命名為Entity Framework 7,但經過重命名以強調它是完全重寫而不是增量升級,並且不替代EF6。

2017-8-14 發布 EF Core 2.0、Visual Studio 2017 15.3、ASP.NET Core 2.0
2019-9-23 發佈 EF Core 3.0、Visual Studio 2019 16.3、ASP.NET Core 3.0

如何讓 EF Core 讀取 Geometry or Geography?
NetFramework 4.7.2,.NetCore 2.0,.NetStarndard 2.0:
===================================================================
Step 0: 專案檔修改
修改 .csproj,使其支援 .NetFramework、.NetCore、.NetStarndard多個版本框架,
netstandard 要放在最後面,不然會說沒有 runtime,無法執行
修改範例如下:
<TargetFrameworks>net472;netcoreapp2.0;netstandard2.0;</TargetFrameworks>

Step 1: 需先從Nuget安裝 or 用 PackageManager 下指令安裝
Nuget安裝 要對應 EF Core 2.0 使用的版本套件
1.Microsoft.EntityFrameworkCore
2.Microsoft.EntityFrameworkCore.Design
3.Microsoft.EntityFrameworkCore.SqlServer
4.Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
5.Microsoft.EntityFrameworkCore.Tools
6.NetTopologySuite
7.NetTopologySuite.Core

用 PackageManager 下指令安裝:
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
PM> Install-Package Microsoft.EntityFrameworkCore -Version 2.2.6
PM> Install-Package Microsoft.EntityFrameworkCore.Design -Version 2.2.6
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 2.2.6
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite -Version 2.2.6
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 2.2.6
PM> Install-Package NetTopologySuite -Version 1.15.3
PM> Install-Package NetTopologySuite.Core -Version 1.15.3

Step 2: 將目錄移到有 .csproj 檔案的目錄位置
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
輸入
PM> ls 指令 (好親切…微軟 UNIX/Linux 化…)
PM> cd 指令將目錄移到有 .csproj 檔案的目錄位置

Step 3:(只需做一次)
"dotnet ef" 必須安裝為全域或本機工具。 大部分的開發人員會使用下列命令,以全域工具的形式安裝 dotnet ef:
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
PM> dotnet tool install --global dotnet-ef --version 3.0.0
(就是裝最新版…就是可以用咧…)

Step 4:由資料庫反向工程,產生資料庫存取類別庫
PM> dotnet ef dbcontext scaffold "Data Source=伺服器;Initial Catalog=資料庫;User ID=填帳號;Password=填密碼;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -d -f -o 輸出目錄

這樣就搞定囉

.NetCore 3.0,.NetStarndard 2.1:
===================================================================
Step 0: 專案檔修改
修改 .csproj,使其支援 .NetFramework、.NetCore、.NetStarndard多個版本框架,
netstandard 要放在最後面,不然會說沒有 runtime,無法執行
修改範例如下:
<TargetFrameworks>netcoreapp3.0;netstandard2.1;</TargetFrameworks>

Step 1: 需先從Nuget安裝 or 用 PackageManager 下指令安裝
Nuget安裝 要對應 EF Core 2.0 使用的版本套件
1.Microsoft.EntityFrameworkCore
2.Microsoft.EntityFrameworkCore.Design
3.Microsoft.EntityFrameworkCore.SqlServer
4.Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite
5.Microsoft.EntityFrameworkCore.Tools
6.NetTopologySuite

用 PackageManager 下指令安裝:
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
PM> Install-Package Microsoft.EntityFrameworkCore -Version 3.0.0
PM> Install-Package Microsoft.EntityFrameworkCore.Design -Version 3.0.0
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 3.0.0
PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer.NetTopologySuite -Version 3.0.0
PM> Install-Package Microsoft.EntityFrameworkCore.Tools -Version 3.0.0
PM> Install-Package NetTopologySuite -Version 2.0.0

Step 2: 將目錄移到有 .csproj 檔案的目錄位置
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
輸入
PM> ls 指令 (好親切…微軟 UNIX/Linux 化…)
PM> cd 指令將目錄移到有 .csproj 檔案的目錄位置

Step 3:(只需做一次)
"dotnet ef" 必須安裝為全域或本機工具。 大部分的開發人員會使用下列命令,以全域工具的形式安裝 dotnet ef:
打開套件管理員主控台:Visual Studio → 工具 → NuGet套件管理員 → 套件管理員主控台
PM> dotnet tool install --global dotnet-ef --version 3.0.0
(謎之音:你除了會複製貼上…你還會啥)

Step 4:由資料庫反向工程,產生資料庫存取類別庫
PM> dotnet ef dbcontext scaffold "Data Source=伺服器;Initial Catalog=資料庫;User ID=填帳號;Password=填密碼;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False" Microsoft.EntityFrameworkCore.SqlServer -d -f -o 輸出目錄

這樣就搞定囉…
就會產生 包含 Geometry or Geography 類別囉

接下來怎麼用…小愛同學努力了解中…

未完待續…

【參考文獻】
維基百科 中文 Entity_Framework
維基百科 英文 Entity_Framework
微軟繁中 空間資料
微軟英文 空間資料
安裝 Entity Framework Core
.NET standard
Spatial Mapping with NetTopologySuite
NetTopologySuite: InvalidOperationException #18172
Finding Nearby Users with Entity Framework Core Spatial Data
Entity Framework Core support for SQL Spatial Data Types - DBGeography?


星期三, 10月 02, 2019

【Android】Re:從零開始的異世界 Sony Z5 (E6653) 尋根 生活(ROOT)


怒濤般的一日(怒涛の一日目)
身為家裏蹲的少年菜月昴,在從便利商店回家途中突然發生意外被傳送到異世界。
少年原以為自己完全沒有任何特長。
但本來應該因為遭遇襲擊死去,回過神來後一切卻都被重置。
發現自己「死亡回歸」的特殊能力後,為了拯救少女,少年跨越無數次絕望,一次次地死亡並重新來過。
刷機的過程就像是不斷「死亡回歸」,只為了成為寶可夢大師…

欲練神功…揮刀自宮…(謎之音:想練神功就準備切機機)
練完神功…無需自宮…(謎之音:神功練好就不用切機機)

保證這篇沒有 雷姆、拉姆、愛蜜莉雅、帕克

環境:
Sony Z5 (E6653) 7.1.1 一枚
加入空軍自備 pc 一枚 (linux mint 18.x)
收集底下列出的工具、軟體、FTF刷機包

狀況:
自從【Android】Sony Z5 Compact 尋根之路(ROOT)與高級磚頭的生死對決
從軍以來,步兵卜朧共都是一步一腳印的攻城掠地,
但光陰似箭…炎炎夏日…雖已入秋…但一樣熱到靠北…
一直嚮往空軍在天上飛的自由自在…(謎之音:明明就是想在家吹涼涼…抓爽爽…)

為了成為像小智一樣的寶可夢大師
一個不安份的靈魂就此大爆發…


由左至右: Mi4i、Z5、RedMi note 3、Z5C(背後 iphone 11 Pro Max)



大綱:
1. 前製作業工具準備
2. 作業流程
2.01 取得基本資訊
2.02 下載 firmware
2.03 提取官方版本核心
2.04 Android 降版本
2.05 備份 TA
2.06 自製核心
2.07 Android 升版本
2.08 Unlock BootLoader
2.09 置換 自製核心 Boot Kernel
2.10 置換 TWRP Recovery
3. 參考文獻



前製作業工具準備:
【工具】



工具說明:
Android SDK Platform-Tools 主要用到的只有 adb、fastboot
Flashtool 用來刷機機
XperiFirm 用來抓取 FTF 檔案工具
FTF包 就是刷機包,可以透過 XperiFirm 抓取,再由 Flashtool 來打包
Iovyroot 與 Universal (Dirtycow-based) TA Backup v2 用來備份 TA 工具
rootkernel_v5.23 原廠核心重新包裝與修改工具 用來編譯修改 boot kernel
Team Win Recovery Project for Sony Xperia Z5 (Sumire) Recovery 工具
Unlock Bootloader Sony 原廠 Bootloader 解鎖鑰匙取得
SuperSU Root 或 Magisk 用來 root 機機 (這不說明了)

adb、fastboot 其實在 linux 上不用這麼麻煩,有 簡單取得 的方法

windows上也不用這麼麻煩…有先拜弄了迷你版的工具…
基本上 Sony 降版本,需要清除使用者資料,
用人話講,就是刷完降版,就跟全新手機狀態一樣
所以該備份的工作就去備份吧…

有個動作要先做,就是先開啟手機開發人員選項
開發人員選項目的有二,其一開啟  啟用 OEM 解鎖;另一則是開啟  USB 偵錯 

Z5 啟用後,接上 pc 後,Z5 會彈出 連線狀態選擇(充電、檔案傳輸、m啥鬼的)
我記得我選了檔案傳輸,Z5 接著會彈出 一個安全性確認的訊息,這時要選允許
這動作沒做,adb、flashboot 指令會無效

有個用 adb 備份的方式,在 LinuxMint 下操作指令如下
sudo adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
AB1C2DEFG3 device

(AB1C2DEFG3 看來出來這馬賽克加密處理過吧)
這步驟主要是,檢查是否已連接上
接著就可以用指令備份啦
sudo adb backup -apk -obb -shared -all -f ./backup_ApkObbSharedAll.ab


Backup and restore commands Description
backup[ -f file] -apk | -noapk] [-obb | -noobb] [-shared | -noshared] [-all] [-system | [-nosystem]package_names Write an archive of the device's data to file.
If you do not specify a file name, the default file is backup.adb.
The package list is optional when you specify the -all and -shared options. The following describes the usages for the other options:
-apk | -noapk: Back up or do not back up .apk files.
The default value is -noapk.
-obb | -noobb: Back up or do not back up .obb files.
The default value is -noobb.
-shared | -noshared: Back up or do not back up shared storage.
The default value is -noshared.
-all: Back up all installed apps.
-system | -nosystem: Include or do not include system apps when backing up all installed apps (-all).
The default value is -system.
參考來源:Android Debug Bridge (adb)


備份過程,Z5 會跳出備份檔案密碼設置提示,密碼設完就會開始備份
備份完成後,再把備份檔備到 sdcard 與 pc 上吧

2. 作業流程:
2.01 取得基本資訊:
取得 手機資訊:
Z5 開啟電話 輸入: *#*#7378423#*#* (進入 Service Menu )
選擇 Service info > Model info
出現
Model:
E6653

選擇 Service info > Configuration
IMEI:  012345678901234 (看來出來這馬賽克處理過吧)
IMEI 之後需要到 sony Unlock Bootloader 網站,取得解鎖鑰匙

2.02 下載 firmware
下載 firmware 的方法有兩種,
一種是問谷哥,直接找先拜分享的;
另一種是用 XperiFirm 下載,再用 Flashtool 打包
參考了這篇 [教學] XperiFirm --- Xperia全系列FTF下載器 (v2.5)




2.03 提取官方版本核心
利用 Xperifirm,下載官方最新版 firmware Taiwan 版本是 32.4.a.160/R2E
目的是將 kernel .sin 轉 .elf

打開Flashtool,選選單中的 Tools > Sin Editor


目錄指到下載的官方版軟體目錄下 kernel 開頭的檔案

再點選 Extract data
先將解出來的 .elf 檔案放到 rootkernel 工具壓縮檔所解壓縮後的目錄中,已備自製核心使用

2.04 Android 降版本
Flashtool 刷機機啦… 參考 Z5 Premium 6.0.1升7.1.1 抓寶抓到飛上天 這篇
APP_LOG、DIAG、SSD、USERDATA 打勾,其他什麼都不勾
(當沒勾 USERDATA,開機後系統極度不正常)

點選 閃電符號 選則 5.x 版的 FTF 刷機機…

刷機機中…

當出現 Flashing finished. 與 Please unplug and start you phone.
代表刷機完成,把傳輸線拔掉後就可以啟動你的手機

2.05 備份 TA
失敗備份TA工具:
backupTA_V2 失敗備份出0kb的TA
iovyroot_v0.3 失敗備份TA

成功備份TA工具:
iovyroot_v0.4:(下載 chrome 會認為是病毒…用其他瀏覽器下載吧)

注意:必須先關掉 FlashTool 不然會干擾 adb 運作
sudo -i
adb devices
List of devices attached
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
AB1C2DEFG3 device

(AB1C2DEFG3 看來出來這馬賽克加密處理過吧)
再次檢查是否已連接上

解壓縮 iovyroot_v0.4 後進入目錄,就可以輸入下面指令
gg-Desktop sony # cd iovyroot_v0.4/
gg-Desktop iovyroot_v0.4 # adb push "root/iovyroot" "/data/local/tmp/iovyroot" > NUL 2> NUL
gg-Desktop iovyroot_v0.4 # adb push "root/backup.sh" "/data/local/tmp/backup.sh" > NUL 2> NUL
gg-Desktop iovyroot_v0.4 # adb shell "chmod 777 /data/local/tmp/iovyroot"
gg-Desktop iovyroot_v0.4 # adb shell "chmod 777 /data/local/tmp/backup.sh"
gg-Desktop iovyroot_v0.4 # adb shell "mkdir /data/local/tmp/tabackup" > NUL 2> NUL
gg-Desktop iovyroot_v0.4 # adb shell "/data/local/tmp/iovyroot /data/local/tmp/backup.sh"
iovyroot by zxz0O0
poc by idler1984

[+] Changing fd limit from 1024 to 4096
[+] Changing process priority to highest
[+] Getting pipes
[+] Allocating memory
[+] Installing JOP
    [+] Patching address 0xffffffc001950630
    [+] Start map/unmap thread
    [+] Start write thread
    [+] Spraying kernel heap
    [+] Start read thread
    [+] Done
[+] Patching addr_limit
    [+] Patching address 0xffffffc034410008
    [+] Start map/unmap thread
    [+] Start write thread
    [+] Spraying kernel heap
    [+] Start read thread
    [+] Done
[+] Removing JOP
got root lmao

TA.img copied successfully

gg-Desktop iovyroot_v0.4 # adb pull "/data/local/tmp/tabackup/" "." > NUL 2> NUL
gg-Desktop iovyroot_v0.4 # adb shell "rm /data/local/tmp/tabackup/TA-*.img"
gg-Desktop iovyroot_v0.4 # adb shell "rm /data/local/tmp/backup.sh"
gg-Desktop iovyroot_v0.4 # adb shell "rm /data/local/tmp/iovyroot"
gg-Desktop iovyroot_v0.4 # adb shell "rmdir /data/local/tmp/tabackup"

其中 gg-Desktop sony # 是 linux 終端機 的命令提示字元
gg-Desktop 表示電腦名稱 ,sony 是目前工具放的位置路徑
cd iovyroot_v0.4/  切換路徑到 /home/gg/Download/sony/iovyroot_v0.4/
其他指令就是參照 iovyroot_v0.4 裡的 tabackup.bat 批次檔中的指令
整個指令做完 有出現 TA.img copied successfully 訊息,
就會在 iovyroot_v0.4/  目錄下產生一個 TA-xxxxxxx.img 檔案

2.06 自製核心
將 2.03 提取官方版本核心 解出來的 .elf 檔案放到 rootkernel_v5.23 解壓縮後的目錄中(回憶一下上面做過的)
將 2.05 備份 TA 備份出來的"TA-日期.img"放到 rootkernel_v5.23 解壓縮後的目錄中
將終端機路徑轉到 rootkernel_v5.23

在終端機裡輸入指令 "/bin/bash ./flash_dk.sh TA-xxxx2019.img Z5_DK.ftf"
產生 DK.ftf 檔

gg-Desktop rootkernel_v5.23_Windows_Linux # /bin/bash ./rootkernel.sh Z5_E6653_Customized\ TW_1298-8309_32.4.A.0.160_R2E_kernel_S1-SW-LIVE-F936-PID1-0006-MMC.elf TW_1298-8309_32.4.A.0.160_R2E_kernel_S1-SW-LIVE-F936-PID1-0006-MMC.boot_TA.img TA-30092019.img
Rootkernel V5.23
- Unpacking kernel
  Found elf boot image
  Kernel version: 3.10.84-perf-g5e25a09
  Found appended DTB
- Detected vendor: somc (Sony), device: sumire (Xperia Z5), variant: row
- Unpacking initramfs
- Detected platform: 64-bit
- Detected Android version: 7.1.1
- dm-verity is enabled. Disable? (Say yes if you modify /system) [Y/n] y
  Disabling dm-verity
- Sony RIC is enabled. Disable? [Y/n] y
  Disabling Sony RIC
- Skipping TWRP recovery. No kernel modules for 3.10.84-perf-g5e25a09 available
- Install DRM fix? [Y/n] y
- Install busybox? [Y/n] n
- Creating new initramfs
- Creating boot image
- Cleaning up
Done

這樣就產生 修改過 BOOT Kernel 檔案囉
檔名叫 TW_1298-8309_32.4.A.0.160_R2E_kernel_S1-SW-LIVE-F936-PID1-0006-MMC.boot_TA.img

2.07 Android 升版本
升版本,有兩種方式…
一種是使用 Flashtool 刷機機啦,
一種是使用 Z5 來線上即時更新,會一路從 5.1 > 6.0 > 6.0.1 > 7.1.1
(我用 Flashtool 刷完發現 Z5 怪怪的…螢幕閃閃閃…然後我就回朔到 5.1 去慢慢升級)

2.08 Unlock BootLoader
注意:開發人員選項,其一開啟  啟用 OEM 解鎖;另一則是開啟  USB 偵錯 
參考 [教學] Sony Xperia Flashtool 之 解鎖、Root、變更原廠韌體版本 這篇
先到 Unlock Bootloader 去取鑰匙

輸入 Z5 查到的 IMEI(看來出來這馬賽克處理過吧)

Your unlock code for 012345678901234
1234AB5678C9D012


點選 BLU

照著做

接著做

輸入 IMEI、Unlock Code,並按下 Unlock

就這樣很空虛的解鎖完成

2.09 置換 自製核心 Boot Kernel
gg-Desktop rootkernel_v5.23_Windows_Linux # adb reboot bootloader
上面這段是切換到 fastboot

把 Boot Image 刷到 Z5
gg-Desktop rootkernel_v5.23_Windows_Linux # fastboot flash boot TW_1298-8309_32.4.A.0.160_R2E_kernel_S1-SW-LIVE-F936-PID1-0006-MMC.boot_TA.img

2.10 置換 TWRP Recovery
去下載 Z5 TWRP Recovery ,將它放到找的到位置,
我也放到 rootkernel_v5.23_Windows_Linux 去

gg-Desktop rootkernel_v5.23_Windows_Linux # fastboot flash recovery recovery.img
上面這段是刷 recovery

gg-Desktop rootkernel_v5.23_Windows_Linux # fastboot boot recovery.img
上面這段是直接用 recovery.img 開機囉
(謎之音:能不能有點貢獻…不要老靠谷哥…)

進 Recovery 之後要刷 SuperSU、Magisk 就可以 ROOT 啦

                                                                                                                                                 (未完待續…)

3. 參考文獻

星期一, 8月 12, 2019

【C#】3DES 加解密

口白:
流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)
Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6
口白:
刻爛:真実はいつも一つ!

環境:
https://rextester.com/ online

狀況:
該死的資安,這世界有什麼資料是重要的…
為了符合萬惡的資安!研究了C# 3DES的方法

要如何實做?問問谷哥吧…沒有谷哥罩…我就廢了…

問題:
什麼是 3DES 維基百科,自由的百科全書 定義如下:
密碼學中,三重資料加密演算法(英語:Triple Data Encryption Algorithm,縮寫為TDEA,Triple DEA),或稱3DES(Triple DES),是一種對稱密鑰加密塊密碼,相當於是對每個資料塊應用三次資料加密標準(DES)演算法。由於電腦運算能力的增強,原版DES密碼的金鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的金鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼演算法。
對看透真相的卜朧共來說,這一點都不重要!

重要的是可以線上寫程式測試…是多美好的事…
在一次無意間發現了rextester.com 這個網站…
它可以線上編輯程式並執行,
對於從開始寫asp程式就用記事本寫的卜朧共來說,簡直是天堂般的存在…
這樣寫一些測試用的小程式,超便利的…

問谷哥找了一些文獻,寫了一段來測試…

程式碼如下:
//Rextester.Program.Main is the entry point for your code. Don't change it.
//Compiler version 4.0.30319.17929 for Microsoft (R) .NET Framework 4.5

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Security.Cryptography;
using System.IO;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
            //string DESKEY="A1B2C3D4E56F7G8H1I2J3K4L5M6N7O8P1Q2R3S4T5U6V7W8X";
            string DESKEY="A1B2C3D4E56F7G8H1I2J3K4L";
            string txtSource="Hello, world!";
            //Your code goes here
            Console.WriteLine(txtSource);
            
            string EncryptResult = Encrypt3DES(txtSource, DESKEY);
            Console.WriteLine(EncryptResult);
            
            string DecryptResult = Decrypt3DES(EncryptResult, DESKEY);
            Console.WriteLine(DecryptResult);
            
            
        }
        
        /// <summary>
        /// 使用3DES加密
        /// </summary>
        /// <param name="strSource"></param>
        /// <param name="strKey">長度為24字元</param>
        /// <returns></returns>
        public static string Encrypt3DES(string strSource, string strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            //DES.Key = UTF8Encoding.UTF8.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5").Substring(0, 24));
            DES.Key = UTF8Encoding.UTF8.GetBytes(strKey.Substring(0, 24));
            DES.Mode = CipherMode.ECB;
            //DES.Mode = CipherMode.CBC;
            ICryptoTransform DESEncrypt = DES.CreateEncryptor();
            byte[] Buffer = UTF8Encoding.UTF8.GetBytes(strSource);
            return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }

        /// <summary>
        /// 使用3DES解密
        /// </summary>
        /// <param name="strEncryptData"></param>
        /// <param name="strKey">長度為24字元/param>
        /// <returns></returns>
        public static string Decrypt3DES(string strEncryptData, string strKey)
        {
            TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
            //DES.Key = UTF8Encoding.UTF8.GetBytes(System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(strKey, "md5").Substring(0, 24));
            DES.Key = UTF8Encoding.UTF8.GetBytes(strKey.Substring(0, 24));
            DES.Mode = CipherMode.ECB;
            //DES.Mode = CipherMode.CBC;
            DES.Padding = System.Security.Cryptography.PaddingMode.PKCS7;
            ICryptoTransform DESDecrypt = DES.CreateDecryptor();
            string result = "";
            byte[] Buffer = Convert.FromBase64String(strEncryptData);
            result = UTF8Encoding.UTF8.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
            return result;
        }
    }
    
} 


圖片最下方那三段
第一段:Hello, world! 是顯示原始字串
第二段:uxu5I2SpRlAHUuRksyIPCA==
是3DES 加密 模式用 ECB
第三段:Hello, world! 解密囉

參考文獻:
1. 維基百科
2. [C# WinForm] 使用3DES 及金鑰加密及解密
3. 【C#.Net】使用 AES 演算法為字串加密解密
4. Android TripleDES encrypt/decrypt - 3DES加密(ECB Mode)
5. rextester.com


星期一, 6月 10, 2019

【Android】Sony Z5 Compact 尋根之路(ROOT)與高級磚頭的生死對決

口白:
流動的水沒有形狀,漂流的風找不到蹤跡,任何案件的 Coding 都取決於心
唯一看透真相的是,外表看似卜朧共,智慧卻低於常人的 名卜朧共 刻爛
(謎之音:把 Code 刻到爛簡稱刻爛.爛..爛...)

Music:
#表升半音 []表高八度
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 5 4 3 4 2 6 4 5 [2] [1] #6 6 5 6
4 3 2 6 4 2 3 #6 6 5 4 5 4 5 6 4 3 2 4 3 2 4 2 6 4 5 [2] #6 6 5 6

刻爛:真実はいつも一つ!

欲練神功…揮到自宮…(謎之音:想練神功就準備切機機)
練完神功…無需自宮…(謎之音:神功練好就不用切機機)
環境:
Sony Z5 Compact  7.1.1 一枚
加入空軍自備 pc 一枚 (linux mint 18.x)
收集底下列出的工具、軟體、FTF刷機包

狀況:
自從 Pokemon GO 推出已有多年,
從軍以來,步兵卜朧共都是一步一腳印的攻城掠地,
但光陰似箭…炎炎夏日…
一直嚮往空軍在天上飛的自由自在…(謎之音:明明就是想在家吹涼涼…抓爽爽…)

在看了底下參考文獻的1~10篇後,(謎之音:就手賤啦…)
藉由 Flashtool 完成了 7.1.1 降版動作,版本降到 5.1
藉由 lovyroot v0.3(0.4抓不下來) 與 Dirtycow TABACKUPV2 指令交互參考,
在linux環境下導出 TA 的備份檔…但是不知道是否正確…
抱持的革命必須有所犧牲… 尋根開苞必喪失保固的決心之下…
(謎之音:明明就是過保了)
再藉由 Flashtool 完成了 6..x 升版動作,版本升到 6.0.1
透過 Flashtool 工具,取得 6.0.1 的 kernel.elf
透過 rootKernel 工具與 Magisk 的 zip 檔 ,打包 新的 kernel.img,我是選擇把 TA 也包進去(這部份我試了多次…第一次是包了7.1.1的kernel…)
接下來就是透過官網取得 Bootloader 開苞 房門密碼…
接下來我是透過 Flashtool 去 BLU(Bootloader Unlock)
(謎之音:明明就是懶的打指令)
接著 透過指令 adb reboot bootloader 將手機轉成 fastboot mode

怎麼分辨 adb mode 或是 fastboot mode?
整個過程都是在 usb debug 狀態下作業…
透過指令吧 sudo adb devices 如果有回應就是在 adb
透過指令吧 sudo fastboot devices 如果有回應就是在 fastboot
Z5C 正常開機狀態下會是在adb 來操作…

然後…刷了 7.1.1 的 kernel 跟 recovery…
重開機後就停在 sony 的 mark上(謎之音:要刷對阿…)
然後就變成了高級磚頭…
這時候 你不管按什麼按鈕都不理你…就停在 sony 的 mark上
然後就變成了高級磚頭…
這時不管 power 按多久按到天荒地老…海枯石爛…手機沒電 都不理你…
(謎之音:明明按不到十秒,就快摔手機了…)
然後就變成了高級磚頭…
                                                                                                                                           The End…





接下來找到底下那篇 sony 關機密技 …
(Sony Xperia 系列手機變磚(無法開機或不斷重開機)解救經驗分享)
就是按下電源鍵+加大音量鍵,等著等著就震震震…
感覺Z5C 發出 按你涼 的三聲振動之後它就昏過去了…

這時就是解磚的時候啦…
解救法是…
斷開所有連線…先把 Flashtool 工具準備好 FTF 包準備好…
然後…在關機的狀態下…按著 加大音量鍵 把 usb 線接上去
(記得那時候是按著降低音量鍵 接上去的, Flashtool 之後從新引導了一次 按 加大音量鍵 )
只要能進fastBoot 就有救,只要能刷機就有救…
刷完機…就跟新的一樣阿…不過這時 已經 BLU 了
把對應刷進去版本的新 kernel 刷進去 基本上就完成了
因為 kernel 打包的過程中,如果有把 Magisk or SuperSU 的 zip 二則一,
放在 rootKernel 工具路徑下
這樣就會把 root 工具 與 twrp 一併打包進去
所以刷完後…基本上 recovery 也在了
無須再刷 recovery ,想用新版的也可以刷啦…
還有一個問題…不知道是刷了哪個工具後…recovery就進不去了…
反正該刷的刷完也不用再進去啦…
想再進去也不需要在重刷 boot ,
可以直接在 fastboot  mode 用指令,fastboot boot <RECOVERY檔案>
如:sudo fastboot boot ./20190514-TWRP-3.3.0-suzuran-recovery.img
就可以直接開進去 recovery …
(謎之音:能不能有點貢獻…不要老靠谷哥…)

                                                                                                                                                 (未完待續…)


【工具】


【參考文獻】
  1.  不失去原機 DRM 的情況下,取得 Sony Xperia Z5 家族 Root 權限並重新上鎖教學
  2.  Sony Xperia 系列備份 TA 分割區 (重新上鎖用) 與 DRM Key 教學 (Android 6.x 適用)
  3.  [TOOL] XperiFirm ~ Xperia Firmware Downloader [v5.3.8]
  4.  Sony Xperia Z5 系列、Z3+ 各版本軟體 FTF 刷包下載
  5.  Sony 刷機前置作業,Flashtool 安裝及使用教學
  6.  [刷機必備]Flashtool v0.9.23.2 <含刷固件教學>
  7.  Sony XPERIA Z5 Compact – Android 7.1.1 – 32.4.A.1.54 Bootloader unlock
  8.  ADB/Fastboot工具線刷TWRP Recovery圖文教學
  9. [TWRP][E5823] Latest TWRP for Z5 Compact
  10. Sony Z5 Compact [E5803] (suzuran) Recovery install / root
  11.  I can't load in fastboot mode
  12. .如何在電腦上使用 ADB指令操作Android手機(How to use adb to manipulate android mobile phone )
  13. Sony Xperia 系列手機變磚(無法開機或不斷重開機)解救經驗分享
  14. [FTF] Newest Android 7.1.1 for Xperia Z5C (E5823) 32.4.A.0.160
  15. [更新7.1.1 0.160]Z3+、Z4平板 Z5P、Z5、Z5c Android 7.0解鎖、ROOT(Magisk)
  16. [V13.2升級]隱藏root,Magisk工具(另類root)
  17. .宇的地盤 2016/6/27 4:19PM-更新原廠FTF載點-->HERE!


【PS】
單純更新 Magisk 20 PokemonGo 會不能玩…我想因該有其他的調校方式才對…繼續研究… 20191022



星期二, 9月 25, 2018

【大冒險】偉大環道 小四換新鞋 海德瑙 K81 super sports

口白:
財富(版費)、名聲(美色)、勢力(粉絲)
---擁有全台灣美景的環島王 蕭胚‧P‧妹,
她在臨行前的一句話,讓人們趨之若鶩、奔向環道!

「想要我的財寶嗎?想要的話可以全部給你,去環吧!我把所有的財寶都放在那裡。」
 於是人們為了龐大的財寶,紛紛航向「偉大的環道」。讓台灣迎接「大環島時代」!

這世界,沒錯!一個追求自由任憑選擇的世界,
就在每個人的眼前無限地延伸。
如果我們的夢想可以引導你的方向的話,就去追尋吧,
在名為信念的旗幟下!

繼前篇【大冒險】偉大環道 是有多愛 SUZUKI大冒險 之後,在環道上,
並非風平浪靜~而是暗潮洶湧阿!!!

在9948.9公里時,油表又不正常了…

於是叫了八個小朋友去,去圍店…

分解後…疑似電阻有問題…改天再來修復看看囉…

在經歷了油表停擺…
重點來了…鞋子快磨穿了…
兩雙鞋的磨耗可是1比1…

從帶回家開始,就一直想買雙鞋給她…
像我這樣勤儉持家的…能省則省…(謎之音:能花就花吧…)

最中意的德國製的鞋子,海德瑙 K66 K81 兩個系列…

其中,K66 屬於3D全天候多功能胎 還能在雪地使用…鞋紋好像巧克力
但 K81 屬於 矽膠材質 超級運動胎…鞋紋簡單,這更是喜歡啦

於是,找了一雙 K81 前80/90-14 後90/90-14 德國製
再加上兩個金屬氣嘴


在鞋子磨了 10248 公里時…終於換上新鞋…
中秋回家跟沒力號姊姊團圓(謎之音:海德瑙是給你多少贊助費…還畫輪胎咧)

小四…會咬腳嗎?
我覺的你根本就是貼地飛行阿…

胎壓設定原本 irc 的前面設定29 後面設定31
根據這樣的設定沿用…那乾地抓地力真不是蓋的…

不過這樣的設定因該會磨很快…所以改了一下設定
改成前30 後32 來實驗看看磨耗囉

話說重點又花了多少…
這次帶了24個小朋友去圍店…帶了幾個老頭回家…

(未完待續…)

星期三, 3月 14, 2018

【大冒險】偉大環道 是有多愛 SUZUKI

口白:
財富(版費)、名聲(美色)、勢力(粉絲)
---擁有全台灣美景的環島王 蕭胚‧P‧妹,
她在臨行前的一句話,讓人們趨之若鶩、奔向環道!

「想要我的財寶嗎?想要的話可以全部給你,去環吧!我把所有的財寶都放在那裡。」
 於是人們為了龐大的財寶,紛紛航向「偉大的環道」。讓台灣迎接「大環島時代」!

這世界,沒錯!一個追求自由任憑選擇的世界,
就在每個人的眼前無限地延伸。
如果我們的夢想可以引導你的方向的話,就去追尋吧,
在名為信念的旗幟下!

繼前篇【大冒險】偉大環道 緣起 犀利小四 之後,在環道上,
並非風平浪靜~而是暗潮洶湧阿!!!

話說,從2017年初,就聽聞有新的妹子~
想說~再過幾年跟沒力號就要跑給鴿子追...於是開始了選妃之旅~

為沒力號(小三)添加個妹子(小四)後~再添加個妹子(小五),小老婆等著!我來了...

國產的兩陽…真沒興趣…

自從 Yamaha 拋棄我的沒力號後,這輩子不會再給它機會了…
想到這裡沒力號…心中莫名哀傷…老二無罪!還我路權!

因為打著環保口號~而被制裁的老二們!我沒有原廠的汽缸、曲軸、連2ss都絕版了!!!
為此!我發誓我再也不要帶我的沒力號回娘家!我的妞我自己救!!!
沒2ss以後就喝蓖麻油!!!
我要帶她再走幾十年!!!(握拳)(謎之音:那還選妃…)
老二不死!只是凋零了!

Honda 本田家族…唉~只能說它不爭氣…
Singer 大魔王訪問時,斬釘截鐵的說,不會投入白牌市場…如今咧…眼紅了吧
早一點把 CB150R 弄進來,你今年的財報會很漂亮才對…失望…
我真的很想支持你的…無緣啦…

既然都看到進口車了!
川崎咧?
我覺的台崎也不爭氣,如果把 Ninja 250 好好經營下去,這個級距因該是你的天下…
川崎‧來夢先拜(爆音少女)…看來我要成為哇沙密的日子是不可能了…

重點來了~四大家族中的Suzuki
嘴裡大叫我不要輸輸去!!!(謎之音:嘴裡說不要,身體還是挺老實的阿)

等了又等!鴿子被放了又飛回來....

台鈴要自己帶進來!台鈴要自己帶進來!台鈴要自己帶進來!
台本!別怪我不給你機會阿!!!

從年初等到5月...到6月…
終於可以下聘了…但是,一直想給台本機會…它不爭氣阿…
重點是沒錢阿…怎麼下聘…那個分期方案…又定不下去…先存錢…

台鈴一度發出新聞稿說…要2018年三月底前才能交車…

到了 2017/7/22 我家小四都跟了我一年又11天,
我算算日子…過年年終有的沒的費用評估了一下…
終於克制不住,從小想騎仿賽的夢想大爆發…
直接定下去囉…

其實還有個打算…
這樣我的因該會是2018年產…不是一年前的…哈



…光陰似箭~歲月如梭…
2017年7月22日 一段漫長的等待…
很多都在去年底就上岸了…小五你在海上漂會不會怕…
到了 2018年2月27 收到媒人通知,可以帶雙證件去辦一辦了....
趁著 228 放假,就跟小四一早,就狂飆回老家繳證件去啦~
等阿等阿等阿…3月3日台鈴才把相關文件寄出…
媒婆 3月4日休息…嗚~多等一個禮拜好了…八個月都等了…
娶小老婆就刮大風加冷氣團,這要好好請教一下劉伯溫國師…這是啥尛卦象阿!
希望牽車不要下雨阿…不要妨礙我跟我妞的相聚阿!!!
妞~妳等著!我一定帶你回家!!!
等阿等阿等阿…3月8日接到媒人電話,先把妞安置到他家去…




等阿等阿等阿…3月10日終於可以回家玩咪魯囉…
為什麼叫咪魯?因為之前GSX-250 就被稱為小阿魯阿
所以 GSX-R150 我叫它mini阿魯 簡稱咪魯…長幼有序阿~不能亂阿!
那125咧…micro阿魯…簡稱麥魯…反正我是沒錢買了,管他叫啥…

交付贖款後…媒人親自帶我操駕了一遍…
然後就帶回家研究啦…人生第一台擋車入手啦
趁著我還可以趴的下去…
趴不下去就把整流罩收起來,改成街車…
卜朧共海賊團終於又加入新成員囉

在空地玩了兩公里…






坐在路邊思考…這個性,待調校…
(謎之音:不會騎不要勉強阿…不會就不會…不要遷拖)
那個屁屁還多了小翅膀…看著就倒胃口
youshimura 吉村…下個任務就是你了…
(謎之音:你明明就是不花錢就會手癢!去看醫生啦)
編入年度預算…等議會開議…我一定會讓它通過的…

然後玩著玩著…熄火了…
嗚…練過頭沒油了…推回老家找救兵…


來~叫姊解…姊姊以後要跑給鴿子追,等一下就是靠它去解救你囉

練了一小時差不多了,有信心可以上路了…半離合的點抓住了
換檔還不熟…練個六十幾公里因該就夠了…
中野千雨一定會說座高785mm,這車不適合在路上跑…太危險了
我也是這麼打算…一路開啟零的領域…一定要避開紅燈…
萬事起頭難,一檔過了就當速可達來騎吧,笑…
(謎之音:笑個頭!去騎速克達啦!)

當然第一天就要給它震撼教育啦…慢慢凸回家

來~叫姊解…
(謎之音:又沒吃到凜的口水,體內又沒本田菌…到底台鈴是給你多少廣告費…這尛死忠)


咪魯:都不帶我出去玩…(耳朵都垂下來了)


免鑰匙可用撥剌阿工具撬開…有點像吉他的pick
編碼要記著…這以後會用到…不能給外人看…

最後~三個小老婆比較愛誰阿~小三?小四?小五?
這就像是南宋詩人盧梅坡那首…雪梅二首其一
梅雪爭春未肯降,騷人擱筆費評章。
梅須遜雪三分白,雪卻輸梅一段香。
(謎之音:你倒底是有多懶,到不想打部落格…有沒有新的阿)

(未完待續…)