SlideShare a Scribd company logo
1 of 100
Download to read offline
Hacking your bank
with Ruby
& reverse engineering
Madrid.rb 29/01/2015
viernes, 30 de enero de 15
About me:
Javier Cuevas
@javier_dev
Ruby on rails shop p2p marketplace for dog owners
viernes, 30 de enero de 15
About
javier
cuevas
victor
viruete
ricardo
garcia
bruno
bayón
artur
Chruszcz
viernes, 30 de enero de 15
Before we get started...
viernes, 30 de enero de 15
LET’S MAKE
SOMETHING
CLEAR
Before we get started...
viernes, 30 de enero de 15
By 2030
viernes, 30 de enero de 15
BITCOIN
WILL RULE
THE WORLD
By 2030
viernes, 30 de enero de 15
By 2030
viernes, 30 de enero de 15
BANKS
WILL
DISAPPEAR
By 2030
viernes, 30 de enero de 15
By 2030
viernes, 30 de enero de 15
COLLECTING
EUROS WILL
BE A HOBBY
By 2030
viernes, 30 de enero de 15
COLLECTING
EUROS WILL
BE A HOBBY
By 2030
viernes, 30 de enero de 15
COLLECTING
EUROS WILL
BE A HOBBY
By 2030
viernes, 30 de enero de 15
By 2030
viernes, 30 de enero de 15
GOVERNMENTS
WILL
COLLAPSE
By 2030
viernes, 30 de enero de 15
Until then...
viernes, 30 de enero de 15
WE CAN
MAKE BANKS
SUCK LESS
Until then...
viernes, 30 de enero de 15
viernes, 30 de enero de 15
now let’s
get started
viernes, 30 de enero de 15
the ROOT OF problem
• Charging our clients per hour of work
• Charging our clients every 15 days
In Diacode we have two rules for invoicing
viernes, 30 de enero de 15
the problem
viernes, 30 de enero de 15
the problem
Sending biweekly invoices means
checking our bank account every 2 weeks
to make sure we’ve been paid
viernes, 30 de enero de 15
the problem
Sending biweekly invoices means
checking our bank account every 2 weeks
to make sure we’ve been paid
Or every week if we’re working
for 2 clients simultaneously.
viernes, 30 de enero de 15
the problem
This how I was doing this.
viernes, 30 de enero de 15
the problem
viernes, 30 de enero de 15
the problem
facepalm_count = 1
viernes, 30 de enero de 15
the problem
facepalm_count = 1
viernes, 30 de enero de 15
the problem
facepalm_count = 2
Our user is not our NIF, nor our email.
It’s a weird number impossible to remember
viernes, 30 de enero de 15
the problem
facepalm_count = 3
Where do I see the last transactions?
Maybe on “Transferencias”? Nope.
viernes, 30 de enero de 15
the problem
facepalm_count = 3
viernes, 30 de enero de 15
the problem
facepalm_count = 4
viernes, 30 de enero de 15
the problem
facepalm_count = 4
We only have one account.
Why the f*ck I have to select it every time?
viernes, 30 de enero de 15
the problem
facepalm_count = 5
Concept = “Transfers”
SUPER HELPFUL.
viernes, 30 de enero de 15
the problem
facepalm_count = 5
Concept = “Transfers”
SUPER HELPFUL.
Do you see that tiny icon?
That’s what I had to click to
find out who paid us
viernes, 30 de enero de 15
the problem
TL;DR
5 facepalms and 30 clicks later
I could see if our last invoice was paid
viernes, 30 de enero de 15
the problem
TL;DR
5 facepalms and 30 clicks later
I could see if our last invoice was paid
This thing every week.
viernes, 30 de enero de 15
the problem
viernes, 30 de enero de 15
viernes, 30 de enero de 15
this is
me today
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
the solution
viernes, 30 de enero de 15
viernes, 30 de enero de 15
(YOU)
wow!
that was cool!
how did you do it?
viernes, 30 de enero de 15
Making off: hacking bbva
BBVA’s website sucks.
BUT
they have a pretty good mobile app...
viernes, 30 de enero de 15
Making off: hacking bbva
BBVA’s website sucks.
BUT
they have a pretty good mobile app...
viernes, 30 de enero de 15
...which probably uses an API, right?
Making off: hacking bbva
BBVA’s website sucks.
BUT
they have a pretty good mobile app...
viernes, 30 de enero de 15
Making off: hacking bbva
What if we use reverse
engineering to discover the
API used by the mobile app?
viernes, 30 de enero de 15
Making off: hacking bbva
Madrid.rb, please meet
Charles Proxy
viernes, 30 de enero de 15
Making off: hacking bbva
Charles Proxy allows you to
inspect the network traffic
generated on your
computer... or on your phone.
Yes, even with SSL.
Installation guide -> http://bit.ly/1DbqsZi
viernes, 30 de enero de 15
Making off: hacking bbva
Login endpoint
viernes, 30 de enero de 15
Making off: hacking bbva
Bank Accounts endpoint
viernes, 30 de enero de 15
Making off: hacking bbva
Bank Accounts endpoint
WTF
viernes, 30 de enero de 15
Making off: hacking bbva
Transactions endpoint
viernes, 30 de enero de 15
Making off: hacking bankinter
After hacking BBVA,
my friend @ismaGNU
decided to hack Bankinter.
This time with an (old school) approach:
web scrapping with Nokogiri
viernes, 30 de enero de 15
Making off: hacking bankinter
But... there was one trap.
Bankinter’s website needs to execute a
random Javascript function
that changes in every request.
So we cannot predict its output.
viernes, 30 de enero de 15
Making off: hacking bankinter
Solution:
Using execjs gem to
execute Javascript code from Ruby.
viernes, 30 de enero de 15
Making off: hacking bankinter
viernes, 30 de enero de 15
Making off: hacking ing direct
@raulmarcosl
joined the party to hack ING Direct.
ING has both a good mobile app
and a good web app.
The web app turned out to be a
single page app using the
same API than the mobile app.
viernes, 30 de enero de 15
Making off: hacking ing direct
BUT
There was a big problem:
A virtual keyboard.
viernes, 30 de enero de 15
Making off: hacking ing direct
BUT
There was a big problem:
A virtual keyboard.
viernes, 30 de enero de 15
Each number of the keyboard is
an image sent by the API
encoded in base64.
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
Each number of the keyboard is
an image sent by the API
encoded in base64.
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
And in each request, the base64 string
was different for all numbers.
In other words: some pixels were
different even if they looked the same.
Making off: hacking ING DIRECT
!=
viernes, 30 de enero de 15
Solution:
Take one sample for every number.
Then use rmagick gem to
iterate over each pixel
(for each number)
and calculate how different
they’re from the sample.
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
Decoding the received pinpad (keyboard)
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
Recognizing what numbers are they
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
Filling the required gaps
Making off: hacking ING DIRECT
viernes, 30 de enero de 15
one gem to rule
them all.
introducing:
bank_scrap
viernes, 30 de enero de 15
bank_scrap is a Ruby gem with one goal:
becoming to banks what ActiveMerchant is
to payment gateways:
A common abstraction layer
for fetching bank data.
bank_Scrap
viernes, 30 de enero de 15
bank_scrap has a Ruby API and a
Command Line Interface (CLI).
bank_Scrap
viernes, 30 de enero de 15
Here is how it works from your Ruby code:
bank_Scrap
viernes, 30 de enero de 15
Last version (0.0.8) supports fetching accounts
balance and transactions for BBVA & ING Direct
(Bankinter will get up-to-date soon)
bank_Scrap
viernes, 30 de enero de 15
Each bank implements its adapter with
a new class that inherits from Bank
bank_Scrap
viernes, 30 de enero de 15
bank_Scrap
Gem dependencies
mechanize HTTP requests
thor Implementing the CLI
activesupport Rails candies, like Date.today - 2.months
money Currency formatting and exchange
rmagick To hack virtual keyboards (used by ING adapter)
nokogiri Parsing HTML (used by Bankinter adapter)
execjs Executing JS on ruby (used by Bankinter adapter)
viernes, 30 de enero de 15
Once you have your bank data as Ruby objects
the sky is the limit.
(The sky or your imagination).
bank_Scrap
viernes, 30 de enero de 15
Some free ideas:
Use bank_scrap to automate email reminders
for expired payments.
Use bank_scrap and Twilio to get SMS
notifications of your transactions
(as some banks don’t offer this)
bank_Scrap
viernes, 30 de enero de 15
New stuff we would like to add to bank_scrap:
• More bank adapters.
• Exporters API (CSV, YAML, etc.).
• A complementary gem for creating a dashboard of
your bank data (like the one we have in Diacode).
• Support for write operations (creating transactions)?
• Tests. Yeah.
bank_Scrap
viernes, 30 de enero de 15
For doing all of this we need your help.
Especially for writing new adapters for other banks.
(we don’t have as many bank accounts as Bárcenas).
So please, fork the code and contribute!
https://github.com/ismaGNU/bank_scrap
bank_Scrap
viernes, 30 de enero de 15
viernes, 30 de enero de 15
takeaways
viernes, 30 de enero de 15
#1
viernes, 30 de enero de 15
BITCOIN
WILL RULE
THE WORLD
#1
viernes, 30 de enero de 15
#2
viernes, 30 de enero de 15
BANKS SUCKS,
BUT WE CAN
MAKE
SOMETHING
ABOUT IT
#2
viernes, 30 de enero de 15
#3
viernes, 30 de enero de 15
BUILDING
SOMETHING YOU
NEED IS THE
BEST WAY TO DO
OPEN SOURCE
#3
viernes, 30 de enero de 15
#4
viernes, 30 de enero de 15
WRITING RUBY
WITHOUT RAILS
IS COOL (AND
F*CKING FAST)
#4
viernes, 30 de enero de 15
#5
viernes, 30 de enero de 15
DON’T TAKE TESTING
AS YOUR OWN YIHAD.
MAKE SURE YOU’RE
BUILDING SOMETHING
USEFUL FIRST.
#5
viernes, 30 de enero de 15
#6
viernes, 30 de enero de 15
BE GOOD API
CITIZENS (OR
YOU MAY GET
BANNED)
#6
viernes, 30 de enero de 15
#7
viernes, 30 de enero de 15
CHARLES
PROXY IS AN
AWESOME
TOOL
#7
viernes, 30 de enero de 15
questions?
Special mention for bank_scrap contributors:
@ismaGNU, @raulmarcosl, @ferblape
Thank you.
viernes, 30 de enero de 15

More Related Content

More from Diacode

Phoenix for Rails Devs
Phoenix for Rails DevsPhoenix for Rails Devs
Phoenix for Rails DevsDiacode
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to ElixirDiacode
 
Startup nomads
Startup nomadsStartup nomads
Startup nomadsDiacode
 
Ruby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpecRuby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpecDiacode
 
TLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers MadridTLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers MadridDiacode
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoDiacode
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoDiacode
 
Presentación de Kogi
Presentación de KogiPresentación de Kogi
Presentación de KogiDiacode
 
Educación: The Next Big Thing
Educación: The Next Big ThingEducación: The Next Big Thing
Educación: The Next Big ThingDiacode
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewDiacode
 
Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Diacode
 
Taller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsTaller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsDiacode
 

More from Diacode (12)

Phoenix for Rails Devs
Phoenix for Rails DevsPhoenix for Rails Devs
Phoenix for Rails Devs
 
Introduction to Elixir
Introduction to ElixirIntroduction to Elixir
Introduction to Elixir
 
Startup nomads
Startup nomadsStartup nomads
Startup nomads
 
Ruby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpecRuby on Rails & TDD con RSpec
Ruby on Rails & TDD con RSpec
 
TLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers MadridTLKR.io @ Betabeers Madrid
TLKR.io @ Betabeers Madrid
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyecto
 
Métricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyectoMétricas para hacer crecer tu proyecto
Métricas para hacer crecer tu proyecto
 
Presentación de Kogi
Presentación de KogiPresentación de Kogi
Presentación de Kogi
 
Educación: The Next Big Thing
Educación: The Next Big ThingEducación: The Next Big Thing
Educación: The Next Big Thing
 
Front-End Frameworks: a quick overview
Front-End Frameworks: a quick overviewFront-End Frameworks: a quick overview
Front-End Frameworks: a quick overview
 
Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)Taller de Introducción a Ruby on Rails (2ª parte)
Taller de Introducción a Ruby on Rails (2ª parte)
 
Taller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on RailsTaller de Introducción a Ruby on Rails
Taller de Introducción a Ruby on Rails
 

Recently uploaded

IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeNeo4j
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfTobias Schneck
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsJaydeep Chhasatia
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxJoão Esperancinha
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorShane Coughlan
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesShyamsundar Das
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native BuildpacksVish Abrams
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Jaydeep Chhasatia
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Incrobinwilliams8624
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyRaymond Okyere-Forson
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIIvo Andreev
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxAutus Cyber Tech
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLAlluxio, Inc.
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilVICTOR MAESTRE RAMIREZ
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?AmeliaSmith90
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageDista
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...OnePlan Solutions
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionsNirav Modi
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmonyelliciumsolutionspun
 

Recently uploaded (20)

IA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG timeIA Generativa y Grafos de Neo4j: RAG time
IA Generativa y Grafos de Neo4j: RAG time
 
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdfARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
ARM Talk @ Rejekts - Will ARM be the new Mainstream in our Data Centers_.pdf
 
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software TeamsYour Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
Your Vision, Our Expertise: TECUNIQUE's Tailored Software Teams
 
Fields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptxFields in Java and Kotlin and what to expect.pptx
Fields in Java and Kotlin and what to expect.pptx
 
OpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS CalculatorOpenChain Webinar: Universal CVSS Calculator
OpenChain Webinar: Universal CVSS Calculator
 
Watermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security ChallengesWatermarking in Source Code: Applications and Security Challenges
Watermarking in Source Code: Applications and Security Challenges
 
Streamlining Your Application Builds with Cloud Native Buildpacks
Streamlining Your Application Builds  with Cloud Native BuildpacksStreamlining Your Application Builds  with Cloud Native Buildpacks
Streamlining Your Application Builds with Cloud Native Buildpacks
 
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
Optimizing Business Potential: A Guide to Outsourcing Engineering Services in...
 
Enterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze IncEnterprise Document Management System - Qualityze Inc
Enterprise Document Management System - Qualityze Inc
 
AI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human BeautyAI Embracing Every Shade of Human Beauty
AI Embracing Every Shade of Human Beauty
 
JS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AIJS-Experts - Cybersecurity for Generative AI
JS-Experts - Cybersecurity for Generative AI
 
ERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptxERP For Electrical and Electronics manufecturing.pptx
ERP For Electrical and Electronics manufecturing.pptx
 
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/MLBig Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
Big Data Bellevue Meetup | Enhancing Python Data Loading in the Cloud for AI/ML
 
Generative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-CouncilGenerative AI for Cybersecurity - EC-Council
Generative AI for Cybersecurity - EC-Council
 
How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?How Does the Epitome of Spyware Differ from Other Malicious Software?
How Does the Epitome of Spyware Differ from Other Malicious Software?
 
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales CoverageSales Territory Management: A Definitive Guide to Expand Sales Coverage
Sales Territory Management: A Definitive Guide to Expand Sales Coverage
 
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
Transforming PMO Success with AI - Discover OnePlan Strategic Portfolio Work ...
 
Kawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in TrivandrumKawika Technologies pvt ltd Software Development Company in Trivandrum
Kawika Technologies pvt ltd Software Development Company in Trivandrum
 
eAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspectionseAuditor Audits & Inspections - conduct field inspections
eAuditor Audits & Inspections - conduct field inspections
 
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine HarmonyLeveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
Leveraging DxSherpa's Generative AI Services to Unlock Human-Machine Harmony
 

Hacking your bank with Ruby and reverse engineering (Madrid.rb)