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

備忘録

備忘録

C#

C# で HMACSHA256を計算する

C#

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

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

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

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

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

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 を直…

.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();…

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

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

C#でPublic Key Pinningする

C#

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

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を利…

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("-", ""); } }

.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 はサポートさ…

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

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

C#でCRC32を計算する

C#

Ⅰ. はじめに C#でCRC32を計算するクラスを作成しました。 ホントはSystem.Security.Cryptography.HashAlgorithmを実装するのが筋です。 いつか実装して記事を修正します(そのうちやります…) Ⅱ. 使い方 バイト配列のCRC32を計算する byte[] bytes = new byt…

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# で ImageProcessorを使う

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

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

C#

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

C# FiddlerCoreのサンプル

C#

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

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

タイトルの通り、使えません。System.Drawing.BitmapがWin32APIの一部(GDI+周辺のラッパ)である為です。代替案 C# で ImageProcessorを使う - 備忘録参考文献 Xamarin System.Drawing.Bitmap defined in an assembly that is not referenced — Xamarin For…

Unity Web Playerでフルスクリーンにしたとき、黒い縦線が入る

なぜ縦線が入るのか Windows のタスクバーや、Unity Web Playerのタイトルバーが邪魔になっているから。 解決方法 Unity Web Playerのタイトルバーを消し、 ウィンドウサイズに合わせてUnity Web Playerのウィンドウを拡大する。 C#で実装したサンプル ※対象…

C# HttpListenerでhttps

C#

1. オレオレ証明書を作る makecert -n "CN=localhostCA" -r -pe -sv localhostCA.pvk localhostCA.cermakecert -pe -iv localhostCA.pvk -n "CN=localhost" -ic localhostCA.cer -sv localhostSignedByCA.pvk localhostSignedByCA.cerpvk2pfx -pvk localhost…

Xamarin.AndroidでAlertDialogを出す

RunOnUiThread( () => new AlertDialog.Builder(this) .SetTitle("alert") .SetMessage("helloworld") .Show() );

Xamarin.Androidでroot権限でコマンドを実行する

Java.Lang.Runtime.GetRuntime().Exec(new string[] { "su", "-c", "your command here" });

CentOS 7.xにmonoをインストールする

やり方 この3行を実行するだけ。 rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF" yum-config-manager --add-repo http://download.mono-project.com/repo/centos/ yum -y install mono-c…

C# UnixTimeを求める

C#

現在時刻の UnixTime を計算します var now = DateTime.UtcNow; long unixtime = (long)(now - new DateTime(1970, 1, 1)).TotalSeconds; Console.WriteLine(unixtime); // output // 1454419603

C# WPF Calendarで年月のみ選択できるようにする

やりたいこと WPF標準のCalendarコントロールを使い、年月だけ指定できるようにする。 以下サンプル MainWindow.xaml

ToS(Tree of Savior) 自動ログインツール

C#

※2016/08/24 OBTに対応しました。 ダウンロード https://github.com/kagasu/TOS-Auto-Launcher/releases ソースコード https://github.com/kagasu/TOS-Auto-Launcher/ 参考動画(YouTube) https://www.youtube.com/watch?v=-9sXv1g1jV0 動作に必要なもの .NET…

WPFでWindows.FormsのWebBrowserを使う

1) 参照の追加でSystemWindows.FormsとWindowsFormsIntegrationの2つを追加する。 2) MainWindow.xamlを以下のように書き換える

C# GmailのメールをIMAPを使って受信する

C#

■必要なもの ・NuGetから「 S22.Imap Imap Library COmponent 」を入手する。■プログラム using (ImapClient client = new ImapClient("imap.gmail.com", 993, "***@gmail.com", "password", AuthMethod.Login, true)) { // 未読メールのみ IEnumerable<uint> uids</uint>…

C# GUIDをシードにして整数の乱数を作る

C#

// 1〜5 の乱数 int random = new Random(Convert.ToInt32(Guid.NewGuid().ToString("N").Substring(0, 8), 16)).Next(1, 6); // 1〜100 の乱数 int random = new Random(Convert.ToInt32(Guid.NewGuid().ToString("N").Substring(0, 8), 16)).Next(1, 101);…

C# WPF focusする

textboxなどをfocusするときに使う。また、以下の方法だとfocusしたい要素のFocusableプロパティは設定しなくてよい。 private void FocusItem(IInputElement item) { Dispatcher.BeginInvoke(DispatcherPriority.Input, new Action(delegate() { Keyboard.F…

C# MD5を計算させる

C#

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

C# 簡単に簡易的なランダム文字列を生成する

C#

最大32文字の0〜9, a〜fの文字でランダム文字列が作れる // 10文字の乱数 string random = Guid.NewGuid ().ToString ("N").Substring(0, 10); // 出力: eb29ab2d92 // 12文字の乱数 string random = Guid.NewGuid ().ToString ("N").Substring(0, 12); // …

C# IL boolの戻り値を反転させる。

パターン1 bool hoge() { return gege(); } // ↓こうしたい bool hoge() { return !gege(); } bool gege { // return false // または // return true; } ldc.i4.0 ceq を追加する call gege() stloc.0 ... ret ↓ call gege() ldc.i4.0 ceq stloc.0 .. ret …

俺得WebClient

C#

アラド戦記 自動 ログインツール

C#

DFO用として作ったものを日本のアラド戦記にも対応させました。 Chrome用のプラグインも以前作成しましたが今回紹介するツールの方が高速です。■ダウンロード https://github.com/kagasu/ARAD-Auto-Launcher/releases/■ソースコード https://github.com/kaga…

DFOをプレイする

C#

https://www.youtube.com/watch?v=njTdDibWIf4アラド戦記の海外版です。 現在はまだOBTのようです。Dungeon Fighter Online | NEOPLE http://www.dfoneople.com/しかし会員登録、ランチャーでのログインの際は、 proxyやVPNを通す必要があります。 (ゲーム…

SoundCloudでlikeしたものを全部ダウンロードする

C#

kagasu/SoundCloudLikeDownloader https://github.com/kagasu/SoundCloudLikeDownloaderDownload https://github.com/kagasu/SoundCloudLikeDownloader/releases

WPF ListViewのタイトルを左に寄せる

これを加えるだけ <ListView.Resources> <Style TargetType="{x:Type GridViewColumnHeader}"> <Setter Property="HorizontalContentAlignment" Value="Left" /> </Style> </ListView.Resources> 加えるとこんな感じになる <ListView HorizontalAlignment="Left" Height="113" Margin="10,162,0,0" VerticalAlignment="Top" Width="226"> </listview>

C# WebBrowserのcookieを消す(削除する)

C#

webBrowser1.Document.ExecCommand("ClearAuthenticationCache", false, null); 参考文献 c# - Delete cookies in webBrowser without restart - Stack Overflow http://stackoverflow.com/questions/21265674/delete-cookies-in-webbrowser-without-restart