読者です 読者をやめる 読者になる 読者になる

備忘録

備忘録

.protoをバイナリから作る

Ⅰ. はじめに .protoファイルが手元に無い場合はバイナリデータから元データをMessagePackのように完全に復元させることは困難です。 少しでも.protoファイルを楽して作る方法をメモ。私の知る限りバイナリから自動で.protoを生成するツールは公開されていま…

Androidで複数キーでソートする

Ⅰ. はじめに Java8で追加されたStream APIとComparatorを使ったソートはAndroid N (Android 7.0)以上でなければ動作しません。 Android N 以下の場合はlambdaで例外が発生しアプリが強制終了します。 Ⅱ. 使うライブラリ Lightweight-Stream-API を使います。…

自作PCを作るときにおすすめなサイト

Ⅰ. はじめに 基本的に、自作PCを作るときはパーツのリストを作ってから購入に踏み切ると思います。 その時のリスト作りに役立つWEBサイトの紹介です。 pcpartpicker.com https://pcpartpicker.com/list/作ったリストの消費電力や、消費電力まで表示してくれ…

JavaでJSONを扱う(GSONの使い方)

Ⅰ. はじめに JavaでJSONを扱う方法です 最近人気のGoogleが開発しているライブラリ GSON を利用します。C#の場合はJSON.NETを利用すれば、クラスを作らなくてもJSONをdynamicに利用したり、LINQ to Objects ができますが、Javaはクラスが必須です。 Ⅱ. 使い…

Javaでokhttpを使って全ての証明書を許可する

Ⅰ. はじめに オレオレ証明書などは以下のエラーを吐いて弾かれてしまいます。 デバッグ時など、とりあえず全部許可したいときのやり方です。 Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator. ValidatorException:…

C#でPublic Key Pinningする

C#

Ⅰ. はじめに Public Key Pinningとは、SSL証明書のチェックを行うことです。 チェックを行うことで、不正な証明書を検知することができます。例えばクラッカーはMITMを利用して傍受を試みます。 MITMを利用するとSSL証明書が書き換わる為、 不正な証明書であ…

PythonでPOSTする

Ⅰ. はじめに PythonでPOSTする方法です。 Ⅱ. プログラム import requests s = requests.session() proxies = { 'http':'http://127.0.0.1:8008', 'https':'https://127.0.0.1:8008' } headers = { 'User-Agent' : 'Mozilla/...', 'Content-Type' : 'applicat…

VisualStudioで設定したAWSのプロファイルを修正する

AWS

Ⅰ. はじめに AWS Toolkit for Visual Studioを利用しているのが前提です。 VisualStudioに追加したプロファイルの追加、編集、削除するについて説明します。 Ⅱ. やり方 1. AWS Explorer を表示させる VisualStudioのメニューから 「表示」→「AWS Explorer」…

JMPの隠蔽

Ⅰ. はじめに リバースエンジニアリングのテクニックの1つです。 パターン化しているので覚えておいて損はありません。 主に ASProtect というパッカーが利用する方法です。 Ⅱ. JMPの隠蔽方法 通常の場合 アセンブリでJMPする場合は以下のように書きます。 JM…

LINE Payの利用制限解除方法

Ⅰ. はじめに LINE Payに50万円を入金したところ、 アカウントの利用が制限されました。普段は月に50万円も入金することがない為、 不正利用防止の一環として自動的に制限が行われたものと推測します。 Ⅱ. 解除方法 1. 「問題報告フォーム」にアクセス http:/…

国税の支払いでLINE Payは利用できる

Ⅰ. はじめに 国税のクレジットカード納付が2017年1月4日から開始されています。 これにより、確定申告分も28年度分からクレジットカード納付が可能になりました。 ただし、手数料がかかる為注意が必要です。 クレジットカード納付するかどうかは、 還元され…

C# WPF 数値のみ入力できるTextBoxを作る

C#

Ⅰ. はじめに 半角数値0~9のみを許可するTextBoxの作り方です。 標準機能として用意されていません。(2017/02/20時点) 入力値が数値かどうかを判定して処理するコードを書く必要があります。 Ⅱ. 作り方 1. MainWindow.xaml

C# で RSA暗号鍵(.pem)作成する

C#

Ⅰ. はじめに C#でpemファイルを作成する方法です。その逆の、 C#でpemファイルを読み込む方法はy_yoda様がQiitaに投稿している記事の通りです。 http://qiita.com/y_yoda/items/f4bd3ec56ac7591c5804 Ⅱ. 環境 C# .NET Core 1.1.0 Ⅲ. ソースコード NuGetで Po…

C#でRSS 1.0のFeedを読む

C#

Ⅰ. はじめに .NET Framework 3.5以降であれば Atom 1.0 と RSS 2.0を対象にした SyndicationFeed があるのですが、RSS 1.0はサポートされていません。 RSS 1.0 を手書きで解析するときのメモです。 Ⅱ. プログラム 解析対象のXML(GIGAZINEのRSS1.0のFeedを利…

Nox App Player のデフォルトランチャーアプリを変更する方法

Ⅰ. はじめに Nox App Playerでは、 Playストアから Nova Launcher などをインストールしても、 自動的にNox Launcherに切り替わってしまいます。 それを解決する方法です。 Ⅱ. やり方 1. 任意のランチャーアプリをインストールする。 2. ファイルマネージャ…

C# でBouncyCastleを使ってRijndael で暗号化する

C#

Ⅰ. はじめに 現時点の.NET Core(1.0.3)には Rijndael に関するクラスは含まれていません。 ブロック長が 256bit 以外 かつ PaddingModeにISO10126等を使用しないのであれば Aes クラスを利用すればokです。※詳細ブロック長が 256bit のRijndael を利用したい…

C# SHA1を計算させる

C#

private string CalculateSHA1(string str) { using (var sha1 = SHA1.Create()) { var bs = sha1.ComputeHash(new UTF8Encoding().GetBytes(str)); return BitConverter.ToString(bs).ToLower().Replace("-", ""); } }

Java UUIDをシードにして乱数を発生させる

String uuid = UUID.randomUUID().toString(); // uuid = "9115d2c8-a3f4-4c4e-9c44-e65b6f483f90" long seed = Long.valueOf(uuid.substring(0, 8), 16); Random random = new Random(seed); // 0~9999 の乱数 Integer number1 = random.nextInt(10000); /…

.NET Core HttpClientでproxyを利用する

Ⅰ. はじめに .NET CoreではWebProxyクラスは存在しません。 代わりにIWebProxyを継承して自分でクラスを作る必要があります。 Ⅱ. サンプル class MyWebProxy : IWebProxy { public ICredentials Credentials { get; set; } public Uri GetProxy(Uri destinat…

.NET Core AESで暗号化、複合する

Ⅰ. はじめに .NET CoreではRijndaelManagedやAesCryptoServiceProviderクラスが使えません。※2017 Q1の終わりごろに追加されるようです。詳しくは※1 代わりにAesクラスを利用します。Aesクラスではブロック長が可変ですが、 ブロック長 256bit はサポートさ…

Android 非同期処理を強制しない方法

Ⅰ. はじめに Android 3.0以降では ネットワーク処理をメインスレッドで行うと以下の例外を吐くようになりました。 java.net.SocketException: android.os.NetworkOnMainThreadException Ⅱ. 強制しない方法 以下をonCreateなどに追加するとメインスレッドでネ…

Android 5.x以降でアプリからProxy設定を変更する方法

Ⅰ. はじめに Android 4.xまではProxy Settings などの便利なアプリで簡単にProxy設定が出来ていました。 しかし、 Android 5.xからはセキュリティの為アプリからProxyの設定が出来なくなりました。 それを回避する方法です。(root権限必須) Ⅱ. やり方 Wi-F…

Android アプリ内課金を実装する

Ⅰ. はじめに 「課金してアプリ内に表示される広告を消す」 「課金してアプリ内の石を購入する」 などの実装方法です。継続課金(定期購入)については具体的に触れませんが、 この記事を一通り行った後公式ドキュメントを見れば簡単に実装できます。備忘録と…

Python ファイル読み込み

str = open('a.txt').read() print str forで回さなくても複数行取れる

メルカリで編集ページに移動するリンクを追加する

メルカリの商品URLは2種類あります。1. https://www.mercari.com/jp/items/m1111111/ 2. https://item.mercari.com/jp/m1111111/商品の編集、出品の一時停止、商品の削除 を行うためには1である必要があります。1から2に移動するのが面倒なのでuserscriptを…

Android 5.x PIE チェックを回避する

Ⅰ. 概要 Android 5.xからPIE以外の実行ファルが実行できなくなりました。 PIEのチェックは /system/bin/linker によって行われています。 セキュリティの強化の為に存在するチェックですが、邪魔な場合があるので回避方法についてのメモです。 また、制限さ…

.Net Coreのコンソールで日本語が文字化けする

問題点 対策 1. NuGet から System.Text.Encoding.CodePages をインストール 2. 以下の一行を追加 Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); 結果 参考文献 https://opcdiary.net/?p=31103

Highcharts 桁をカンマで区切る

Highcharts.setOptions({ lang: { // 小数点の文字を指定 decimalPoint: '.', // 桁区切りの文字を指定 thousandsSep: ',' } }); var chart = new Highcharts.Chart({ tooltip: { // 桁区切り有効、少数点第1位まで pointFormat: "Value: {point.y:,.1f} mm"…

C#でCRC32を計算する

使い方 byte[] bytes = new byte[] { 0x00, 0x01, 0x02 }; uint crc32 = new CRC32().Calc(bytes); Console.WriteLine(Convert.ToString(crc32, 16)); // 854897f 使い方(文字列のCRC32を計算する) string str = "abc"; byte[] bytes = new UTF8Encoding.G…

ファイル調査に使えるツール達

Home of Hexinator - The Professional Hex Editor - Hexinatorforemostbinwalk

squid3で匿名串にする

squid.conf を編集する /etc/squid/squid.conf request_header_access X-Forwarded-For deny all request_header_access Via deny all request_header_access Cache-Control deny all reply_header_access X-Forwarded-For deny all reply_header_access Via…

squidで上位プロクシを設定する

一番下に以下の2行追加 /etc/squid/squid.conf cache_peer [上位プロクシのホスト] parent [上位プロクシのポート] 7 no-query login=[ユーザー名]:[パスワード] never_direct allow all 例 上位プロクシ 192.168.0.100:3128 ユーザー名 abc@def.com パスワ…

PHP 日付加算、減算

PHP

よく忘れるのでメモ。 減算は「+」を「-」に変えるだけ。

C# GZipで圧縮、解凍する

1. GZipで圧縮する public static byte[] GZipCompress(byte[] bytes) { using (MemoryStream ms = new MemoryStream()) { using (GZipStream compsrsm = new GZipStream(ms, CompressionLevel.Fastest)) { compsrsm.Write(bytes, 0, bytes.Length); } retur…

C# ImageProcessorを使う

http://imageprocessor.org/ https://github.com/JimBobSquarePants/ImageProcessor Ⅰ. はじめに ImageProcessorは画像処理ライブラリです。System.Drawingが使えない.NET Coreやmonoで利用したり、 .NETでも十分高機能なライブラリとして利用できます。 現…

IntelliJでjarファイルを生成する(Gradleの場合も含む)

やり方 File → Project Structure Artifacts → 「+」 → JAR → From modules with dependencies Main Classを指定して、OKをクリック ※Gradleプロジェクトの場合 プロジェクトのルートディレクトリにあるMANIFEST.MFを指定すること。 他のMANIFEST.MFを指定…

Captcha代行サービス

Captchaを人力で解いてくれる代行サービス。 また、バイトとしてCaptchaを解くと、Captcha1枚あたり0.0344084346円(※2016/10/07 時点)ほどの収入を得ることができます。 少ないですね。やりたくないです。また、ゲームのBOTなどの項目もあるのでそれなりに…

C# HttpClientでContent-Typeを指定する方法

基本的にはHttpContentを継承したクラス(FormUrlEncodedContentなど)があるのでそれを使います。 しかし、なんとかしてContent-Typeを任意の値に変更したい場合は以下のように書きます。 文字列の場合 using(var client = new HttpClient()) { var content…

C# FiddlerCoreのサンプル

FiddlerCoreを使いHTTP, HTTPS, WebSocketのプロクシサーバーを作る場合のサンプル using System; using Fiddler; namespace fiddler_core_exsample { class Program { static void Main(string[] args) { FiddlerApplication.OnWebSocketMessage += Fiddler…

ARMの激安VPS

メモ https://www.scaleway.com/

Frida

JavaScriptでネイティブアプリをデバッグすることができます。 www.frida.reAndroidアプリをトレースする frida-trace -U -i *Func* appWindowsでトレースする frida-trace -i *Func* notepad.exe引数を表示する onEnter: function (log, args, state) { for…

SSL Pinningを削除する方法

某有名なPoke○○○ GOのAndroidアプリを例にした解説サイトがあったのでメモ Reverse engineering and removing Pokémon GO’s certificate pinning | Eaton Works

VisualStudio Community 2015の日本語版をダウンロードする

Downloads | Visual Studio Official Site サイトが変更され、わかりづらくなっていたのでメモ。 ※2016/09/26時点でのメモ。また変わるかもしれない。 ※サイトが変更される前までは特定のURL(ココ)からアクセスするだけで日本語版がDLできた。

Windows 10 Hyper-Vを有効/無効にする方法

有効にする 1. コントロールパネル→プログラム→プログラムと機能 2. Hyper-Vのチェックを入れる 3. コマンドをプロンプトを起動して以下のコマンドを実行 bcdedit /set hypervisorlaunchtype auto 無効にする 1. コントロールパネル→プログラム→プログラムと…

Windows 10 右クリックメニューの「3D Builderによる3D印刷」を消す方法

以下のレジストリを消す Windows Registry Editor Version 5.00 [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.bmp\Shell\T3D Print] [-HKEY_LOCAL_MACHINE\SOFTWARE\Classes\SystemFileAssociations\.jpg\Shell\T3D Print] [-HKEY_LOCAL_…

SSH接続でrootログインを許可する

vim /etc/ssh/sshd_config PermitRootLogin no ↓ PermitRootLogin yesservice sshd restart @IT:ssh接続でrootによるログインを許可するには

XamarinでSystem.Drawing.Bitmapは使えない

タイトルの通り、使えません。System.Drawing.BitmapがWin32APIの一部(GDI+周辺のラッパ)である為です。代替案 http://imageprocessor.org/ 参考文献 Xamarin System.Drawing.Bitmap defined in an assembly that is not referenced — Xamarin Forums http…

GitHubのReleaseを監視し、リリースされた時に通知(メール)を受信する

GitHubのWatch機能を利用した場合、 commitやissueまで通知されます。releaseのみの通知を受け取りたい場合は現時点でGitHubの機能だけではできません。 IFTTTを用いて行う方法のメモ。※GitHubだけでなく、RSSやAtomやその他のフィードの通知をメールで受信…

AngularJS ng-repeatでn以上、n以下の値をフィルタする

Qiitaに投稿しました。 qiita.com

Glancesをインストールする

Glancesとは システムモニタリングツールです。 クロスプラットフォームで動作します。 Unix系に限らずWindowsでも動作します。 Pythonで書かれています。 公式WEBサイト https://nicolargo.github.io/glances/ インストール方法 1. インストールする $ curl…