Skip to content

Instantly share code, notes, and snippets.

@sh4dowb
sh4dowb / decrypt_ruby_MessageEncryptor.py
Created April 8, 2021 07:34
Decrypt Ruby's ActiveSupport::MessageEncryptor on Python 3
import hashlib
import base64
from Crypto import Random
from Crypto.Cipher import AES
import rubymarshal.reader
from pbkdf2 import PBKDF2
SECRET = "a3f58debfe0c5b71edaebea3a627f4f"
SALT = "12345"
ITERATIONS = 65536
@sh4dowb
sh4dowb / netherlands-iban-acc-number-validate.py
Last active December 25, 2020 18:44
Netherlands IBAN account number checksum validator
# Netherlands account number algorithm uses this factor table:
# digit | factor
# 1st | 10
# 2nd | 9
# ...
# 10th | 1
#
# After multiplying digits according to the table, sum of these results must be divisible with 11
@sh4dowb
sh4dowb / multipleevent.py
Last active June 18, 2020 07:21
telethon capture multiple events - capture button and/or text event
def press_or_text(user_id):
return events.Raw(func=lambda e: (type(e) == UpdateNewMessage and e.message.from_id == user_id) or (type(e) == UpdateBotCallbackQuery and e.user_id == user_id and e.data != b'cancel'))
whatever = await conv.wait_event(press_or_text(sender))
if type(whatever) == UpdateBotCallbackQuery and whatever.data in [b'create', b'list']:
# button clicked
# not actual event like "CallbackQuery", you can't use .edit() etc. directly
print(whatever.data)
else:
# message sent
@sh4dowb
sh4dowb / gist:861934f2d0472400c6f9a764b4b7589d
Last active December 9, 2021 09:02
telethon get if participant is admin
from telethon.tl.types import ChannelParticipantCreator, ChannelParticipantAdmin
from telethon.tl.functions.channels import GetParticipantRequest
#..
@client.on(events.NewMessage)
async def handler(event):
participant = await client(GetParticipantRequest(channel=event.original_update.message.to_id.channel_id,user_id=event.original_update.message.from_id))
isadmin = (type(participant.participant) == ChannelParticipantAdmin)
iscreator = (type(participant.participant) == ChannelParticipantCreator)
@sh4dowb
sh4dowb / eba-canli-ders.md
Last active March 21, 2023 16:49
EBA canlı ders için Linux ve Mac desteği (Zoom)
@sh4dowb
sh4dowb / spotify-media-key-fix.sh
Last active July 19, 2023 18:55
linux spotify media keys are sometimes not working after another media is played, and spotify is restarted. this command fixes it
dbus-monitor | grep --line-buffered interface=org.mpris.MediaPlayer2.Player | grep --line-buffered -v spotify | awk -W interactive -F'member=' '{print $2}' | xargs -L1 -I {} dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.{}
# when you play another media, and restart spotify, media keys get sent to another destination.
# in my case, it was VLC. output from dbus-monitor:
#
# method call time=1586780292.910122 sender=:1.58 -> destination=org.mpris.MediaPlayer2.vlc serial=1878 path=/org/mpris/MediaPlayer2; interface=org.mpris.MediaPlayer2.Player; member=PlayPause
# so I piped together a few commands, which got the wrong dbus output, and forwarded it to spotify.
# run:
# bash spotify-media-key-fix.sh &
@sh4dowb
sh4dowb / selenium-save-profile-session.py
Last active February 7, 2024 23:17
workaround for selenium to save the goddamn session / profile completely on firefox / geckodriver --- selenium firefox geckodriver persistent profile
# Selenium does not use the given profile, but copies it, and uses a temporary profile.
# As a result, new cookies and sessions etc. are not saved.
# To fix it, we get the actual profile firefox is using, kill firefox manually so geckodriver
# doesn't delete profile data. Copying the profile when it's being used is generally not a good idea.
# After killing firefox profile and databases are unlocked, we copy the "temporary" profile
# to our old profile.
#
# driver.profile doesn't provide the actual temporary profile, but another copy of it. And firefox
# does not use that one. that's why I got it from process list.
#
@sh4dowb
sh4dowb / phpkoru.deobfuscate.php
Last active October 17, 2023 21:36
PHPkoru.com deobfuscator. Make sure to run it isolated, to prevent any attacks from eval'd code
<?php
// FOR NEW VERSION (1.0.6): https://gist.github.com/sh4dowb/86ad09b9bcbfce323b511395e446d616
// FOR 1.0.7: https://gist.github.com/sh4dowb/68c9e090a3006b1d19ce49a22529c0a5
$input = file_get_contents("untitled.php");
//edit this filename
// for decrypting advanced version contact me on telegram
@sh4dowb
sh4dowb / ilce-listesi.json
Last active February 24, 2020 18:31
UETDS Eşya Taşımacılığı Ülke ve İlçe Listesi JSON
[
{"kod":99133,"il_kodu":"1","ad":"Şakirpaşa Havalimanı","il_adi":"ADANA"},
{"kod":2033,"il_kodu":"1","ad":"ÇUKUROVA","il_adi":"ADANA"},
{"kod":2032,"il_kodu":"1","ad":"SARIÇAM","il_adi":"ADANA"},
{"kod":1806,"il_kodu":"1","ad":"İMAMOĞLU","il_adi":"ADANA"},
{"kod":1757,"il_kodu":"1","ad":"ALADAĞ","il_adi":"ADANA"},
{"kod":1748,"il_kodu":"1","ad":"YÜREĞİR","il_adi":"ADANA"},
{"kod":1734,"il_kodu":"1","ad":"YUMURTALIK","il_adi":"ADANA"},
{"kod":1687,"il_kodu":"1","ad":"TUFANBEYLİ","il_adi":"ADANA"},
{"kod":1588,"il_kodu":"1","ad":"SAİMBEYLİ","il_adi":"ADANA"},
@sh4dowb
sh4dowb / ud64_deobfuscator.php
Created September 4, 2019 19:55
UD64 Deobfuscator / Unknowndevice64 PHP obfuscation deobfuscator
<html>
<head>
<meta charset="UTF-8">
<style>*{font-family:Arial;}a{text-decoration:none;}</style>
<link rel="stylesheet" href="https://unpkg.com/purecss@1.0.0/build/base-min.css">
<meta name="description" content="UD64, Unknowndevice64 deobfuscator/decrypter.">
<meta name="keywords" content="ud64 deobfuscate, ud64 cleaner, ud64 beautifier, ud64 decrypt">
<title>UD64 - Unknowndevice64 Deobfuscator</title>
<body>
<center>