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

備忘録

備忘録

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)を作成する

C#

Ⅰ. はじめに .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 ができますが、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の作り方です。 数値のみ入力可能な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 実行結果

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

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

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を計算する

C#

使い方 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で圧縮、解凍する

C#

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# .NET Core ImageProcessorを使う

C#

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