備忘録

備忘録

Windows 10 ナビゲーションウィンドウの邪魔なフォルダを消す

Ⅰ.はじめに 私個人としては「ビデオ」「ピクチャ」「ドキュメント」といったフォルダは頻繁に使用しないため非常に邪魔です。 消し方 1. 以下のテキストをx.regという名前をつけて保存し、実行する。 Windows Registry Editor Version 5.00 ; Desktop [-HKEY…

C#でテンプレートマッチを行う

C#

Ⅰ. はじめに OpenCV3 のラッパーである OpenCvSharp の MatchTemplate メソッドを使ってテンプレートマッチを行います。 Ⅱ. サンプル スクリーンショットを取り、メモ帳のアイコンを探すサンプルです。 NuGet から OpenCV3 のラッパーをインストールする。 t…

Windows で touch を使う

Ⅰ. はじめに Windows に touch コマンドは存在しません。 Ⅱ. やり方 type nul > hoge.txtこれは以下のコマンドに相当します。 touch hoge.txt Ⅲ. 参考 https://web.archive.org/web/20150510181656/http://text.readalittle.net/article.php?id=244

C# で HMACSHA256を計算する

C#

string CalculateHMACSHA256(byte[] bytes) { using (var hmacsha256 = new HMACSHA256(key)) { var bs = hmacsha256.ComputeHash(bytes); return BitConverter.ToString(bs).ToLower().Replace("-", ""); } } // 出力例 // b248bb2b861e5efe1e5bea3722b19c6…

Photonの生パケットを読む

Ⅰ. はじめに 1. Photon とは クロスプラットフォームで動作する「ネットワークエンジン」です。 ドイツのベンチャー企業「Exit Games」が開発しています。「クラウド(SaaS)」と「オンプレミス」が選択できます。 アジアリージョンのクラウドはGMOが独占して…

C#で bzip2 の圧縮、展開を行う方法

Ⅰ. はじめに タイトルの通り「C#で bzip2 の圧縮、展開を行う方法」です。 Ⅱ. SharpZipLib をインストールする SharpZipLib というライブラリを使います。 1. NuGet から SharpZipLib で検索し、インストールする。 ※.NET Standard 版もありますが、作成者の…

リバースエンジニアリングを楽にする単語のメモ

Ⅰ. はじめに タイトルの通り「リバースエンジニアリングを楽にする単語のメモ」です。 随時追加します。 Ⅱ. 一覧 algorithm encrypt encode decrypt decode cipher extract rijndael aes pkcs rsa x509 certificate key block cbc su

WebSocket4Net C# .NET Standard対応 WebSocket ライブラリ

Ⅰ. はじめに WebSocket4Net は2017/05/11 時点でベータ段階ですが .NET Standard 対応の WebSocket ライブラリです。 Ⅱ. 使い方 1. 「プレリリースを含める」にチェックを入れる 2017/05/11 時点で .NET Standard 対応版がベータ段階なのでチェックを入れま…

Packer Detector一覧

Ⅰ. はじめに 解析対象のバイナリがどの Executable Packer を使っているかを自動的に判定するツールです。 Ⅱ. Packer Detector 一覧 Exeinfo PE http://exeinfo.atwebpages.com/ Detect It Easy http://ntinfo.biz/ PEiD http://www.peid.info/ 2017/05/07時…

C++ で全ての例外を try catch 出来るようにする

Ⅰ. はじめに Visual Studioのデフォルト設定ではWindowsが発行する「システム的な例外」を捉えることはできません。 無効なメモリアドレスへのアクセス 0での割り算 等が「システム的な例外」に該当します。また、「『システム的な例外』をプログラム上で扱…

C++で複数プロセスから読み書き可能な共有メモリを作る

Ⅰ. はじめに あるプロセスのメモリ空間には他のプロセスからアクセスする事ができません。 OpenProcess してアクセス権を得てもメモリ上のどのアドレスに何のデータが保存されているか簡単に分かりません。 この問題は複数プロセスで共有して使えるメモリ空…

C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする

C++

Ⅰ. はじめに タイトルの通り「C++でShift-JIS, UTF-8, UTF-16 BOM有無を考慮してファイルの読み込みをする」方法です。 参考のURLには重要な内容が含まれているので目を通してください。 Ⅱ. 環境 Visual Studio 2017 Windows 10 Pro 64 bit Version 1703 (Cr…

C++ ファイルを全て読み込む

C++

Ⅰ. はじめに STL を使ってファイルを全て読み込む(全行読み込む)方法です。※追記 C++でShift-JIS, UTF-8, UTF-16 BOM有無とエンディアンを考慮してファイルの読み込みをする - 備忘録 Ⅱ. サンプル test.txt aiueo Source.cpp #include <iostream> #include <fstream> using na</fstream></iostream>…

C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する

C#

Ⅰ. はじめに タイトルの通り、「C# で HtmlAgilityPack を使って HTML の要素値を XPath で取得する」方法です。 Web スクレイピングが簡単になります。 Ⅱ. サンプル http://example.comの「タイトル」と「リンク先(href)の値」を取得するサンプルです。 1.…

C# で Mailgun や SendGrid などを使ってメールを送信する

C#

Ⅰ. はじめに メール配信サービスのAPIをラップした FluentEmail というライブラリの紹介です。 .NET Standard で作られているためクロスプラットフォームで動作します。各サービスの API ドキュメントには HttpClient や RestClient 等を使って Web API を直…

nginx で autoindexの文字化けを治す

Ⅰ. はじめに nginx の autoindex を on にしただけだと以下のように文字化けします。 これを治す方法です。 Ⅱ. やり方 1. charset utf-8; を追加する server { listen 80; root /var/www/html/hoge; index index.html; location / { autoindex on; charset u…

BCD を修正する

Ⅰ. はじめに BCD(Boot Configuration Data)(ブート構成データ)を修正する方法です。 Windows と Linux をデュアルブートした状態から Grub を消して Windows のみブートさせる場合などに必要な作業となります。 Ⅱ. やり方 1. ブート可能な Windows メディ…

プロセスセキュリティまとめ

Ⅰ. はじめに OpenProcess などで使われるアクセス権のフラグまとめです。 Ⅱ. まとめ PROCESS_ALL_ACCESS 0x1FFFFF PROCESS_CREATE_PROCESS 0x80 PROCESS_CREATE_THREAD 0x2 PROCESS_DUP_HANDLE 0x40 PROCESS_QUERY_INFORMATION 0x400 PROCESS_SET_QUOTA 0x10…

仲介DLLを作成する

Ⅰ. はじめに 仲介DLLを作成する方法です。 DLL Proxy や DLL Wrapper とも呼ばれています。 Ⅱ. やり方 こちらを使います。 https://github.com/mavenlin/Dll_Wrapper_Gen 1. ファイルを自動生成する python Generate_Wrapper.py hoge.dll 2. ソリューション…

DoubleAgent を試してみる

Ⅰ. はじめに DoubleAgent とは? Microsoft Application Verifer を悪用した攻撃の事です。 セキュリティ会社 Cybellum によって 2017/03/22 に公開されました。 何ができるの? プロセスの開始と同時に 任意の dll が読み込まれ任意コードの実行が可能にな…

.NET Core で 実行ファイル(.exe)を作成する

Ⅰ. はじめに .NET Core のプロジェクトで .exe を作成する方法です。 .NET Core のプロジェクトのデプロイ方法は2通りあります。 # デプロイ方法の名称 略称 実行方法 1 Framework-dependent deployments FDD コマンドで dotnet run として実行する 2 Self-c…

プロセスを停止させる

C#

Ⅰ. はじめに プロセスのサスペンド、リジュームを拡張メソッドにして使いやすくしたクラスを紹介します。 コピペで動きます。 Ⅱ. プログラム Program.cs var process = Process.GetProcessesByName("notepad").FirstOrDefault(); process.Threads.Suspend();…

プロテクトを回避してメモリをフルダンプする

Ⅰ.はじめに 物理メモリを任意の物理記憶媒体にダンプする方法です。 Belkasoft社の無料ダンプツール(Belkasoft Live RAM Capture)を利用します。 Ⅱ. Belkasoft Live RAM Captureのすごいところ 無料 ダンプ後のファイルを解析するBelkasoft Evidence Cente…

一時的なメールサービスのAPIサーバを作る

Ⅰ. はじめに 一時的なメールアドレスを作成するサービスはいくつか存在します。 一時的なメールアドレスを作成する - 備忘録しかし、どのサービスもAPI経由でのアクセスが出来ないものばかりです。 送信されるリクエストを解析してサービスを利用する可能で…

VisualStudio で貼り付け時にクォートを自動的にパースする

1. はじめに IntelliJ 系のIDEであればデフォルト機能として JSON や XPath の文字列をプログラムに貼付けする時に自動的にクォートがパースされます。 VisualStudioで同様の恩恵をうけるための拡張機能の紹介です。 2. SmartPaster2017 のダウンロード Smar…

Chrome UserAgentをワンクリックで切り替える

Ⅰ. はじめに Google Chrome はデベロッパーツールや拡張機能でUserAgentを簡単に変更することが可能です。 しかし、簡単といってもクリック回数が1回で切り替わるわけではありません。1クリックのみでトグル式にUserAgentを変更するツールが存在していなかっ…

Chrome Extension 拡張機能 アイコンクリック時に何かする

Ⅰ. はじめに ウィンドウを持たせずに、アイコンクリックで何かアクションを起こしたい場合に利用できます。 Ⅱ. サンプル manifest.json { "background": { "scripts" : [ "js/background.js" ] } } background.js chrome.browserAction.onClicked.addListene…

JavaScript難読化ツールの紹介と比較

Ⅰ. はじめに 無料で使える JavaScript の難読化ツールの紹介と比較です。 強力な難読化ツールは基本的に有料です。 Ⅱ. 比較 # 名前 難読化 1 JavaScript obfuscator for Node.js 良 2 Closure Compiler 悪 3 /packer/ 悪 4 YUI Compressor 悪 5 aaencode 悪 …

C#からC++(DLL)の関数を呼び出す

Ⅰ. はじめに C#からC++(DLL)の関数を呼び出す方法です。 いわゆる P/Invoke です。Win32 API の P/Invoke はこのサイトを利用してコピペしたほうが早いです。 http://www.pinvoke.net/ Ⅱ. サンプル dllexport.def EXPORTS GetInt GetIntArray GetString GetS…

.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 ができますが、GSONはクラスが必須です。 Ⅱ. 使い…

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の作り方です。 数値のみ入力可能な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クラスは存在しません。 ※.NET Core 2.0 で追加されました。 代わりにIWebProxyを継承して自分でクラスを作る必要があります。 Ⅱ. サンプル class MyWebProxy : IWebProxy { public ICredentials Credentials { get; set; …

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

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

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

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