How to communicate with remote PCSC reader with local PCSC application? - local

There is a need to use local PCSC reader application to communicate with the Smart Card which is located in the remote PCSC reader.
(Windows)
| - - - - - local - - - - - | | - - - - remote - - - - |
PCSC app <-> virtual PCSC <-> tunnel <-> tunneling PCSC app <-> SCard
What are the options to do this kind of remote card communication?
Maybe an option would be to implement virtual device for every tunneling connection instance? I don't have knowledge how to do it. I would prefer Java or .NET.
OR
Maybe is it possible to fake winscard.dll(proxy) by just putting it into PCSC applications folder?
I would like to implement tunneling PCSC app at remote side as a java web applet.
Do you have any good suggestions or additional options how should I solve this problem?

OpenCT claims to have something like this: http://www.opensc-project.org/openct.
Also you can get Smartcard readers with Ethernet, their drivers do something like this.

Related

Azure IoT Communication

I have an embedded device that can be controlled by JSON over UDP. I am currently performing this via an iOS App, and everything works great.
I am now wanting to be able to also control my device from a remote location. And am wanting to use Azure to perform this task. I envision that I will set up an Azure Website which will enable me to select options which then send the JSON to my device, which is behind a firewall.
My question is which of the Azure Services should I be looking into? Also, what is the best way to get the JSON packet to the device behind the firewall (I do not want to use port forwarding).
In general, to avoid an attack surface from outside your LAN (where you have your embedded device), the better solution is to open and output connection from embedded device to the cloud and to leave it open so that it can send and receive data/command.
In this case, on Azure you can use the Service Bus (queue, topic/subscription or event hub) to send/receive with AMQP protocol but it is strictly related to your device and capabilities.
Can you share more information on it ? How much it is a constrained device or a more power device with an high level OS (Linux, Windows, ...) ?
Paolo Patierno
About using Amqp on devices running android is very tedious. The java implementation in dalvik is missing a lot of required apis to be there.
By the way, do you know where we can find information about related path segments to use in amqp pure syntax in Azure, to interact with IoT-Hub end-points. Like for queue for example, we can have :
amqps://:#.servicebus.windows.net/
Thanks

How can I open a TCP/UDP port on my NAT to configure a P2P application?

I am developing an P2P application in Delphi XE5 with a PHP remote server as a tracker to make a list of the clients sockets. I am afraid that using UDP Hole Punching would fail at some point if client's NAT decides to close/block that random port it created with in the first message sent to the PHP remote server.
So I with to know How to make a more time persistent port configuration with NAT from the Client (which is written in Delphi). I do not want my user to need to know how to access a router and configure port forwarding himself.
Could I do that and use the server just to store the socket without the PHP-P-H and be sure that at least while the Delphi's application is running the port will remain opened?
If I do decide to use UDP hole punching from remote server, Will the NAT maintain the port opened to user's local PC if no other users connect to it directly (P2P) soon enough?
If I open that port with UDP, may I use TCP after?
Obs: Delphi XE5 to compile to Windows 32 and Android, so I need a non-Windows Only solution.
Microsoft has an API for working with NATs via uPNP, especially for assigning port mappings in particular. Look at the IUPnPNAT interface and its StaticPortMappingCollection property. Use IStaticPortMappingCollection.Add to assign ports in the NAT.
Of course, this only works with routers that have uPNP turned on. Not all routers support uPNP at all, or have uPNP enabled.

Passive Monitoring with Nagios / Icinga - How to monitor external hosts correctly?

Good morning,
Our goal is to monitor many external clients with a open source monitoring solution like Icinga or Nagios..
Because most of our customers have multiple devices but only one dynamic public IP, we are still looking for one solution which works for all of our clients. The amount of clients and networks is too high that we can use VPN to connect them with Icinga. It would fit if all clients send their check reports to the icinga host. Many other monitoring solutions, such as GFI MAX simply let the clients report through TCP 443 or TCP 80 (failover). If an interval has been interrupted, the monitoring server will mark the client with a critical failure.
Here some more information about our internal infrastructure:
- Icinga Core 1.11.1 / Nagios
- static IP for monitoring server
- Endian Firewall
At the client side:
- Windows devices with NSClient++
- no static IP
- NAT and firewall are configurable
Based on my information can you suggest a solution to let the clients send their information to the Icinga server, please? Besides is it even possible to realize this scenario without VPN, static IP or dynamic dns?
THank you for helping me out!
OK I found the solution. With NSCA it's not a big deal to make this possible. Just to let you know, I found a way to resolute this. If you need help feel free to ask.

Is there a public UDP site to test ObjC code?

I'm attempting to learn UDP coding as a neophyte.
I've been doing iOS development for years and want to start learning to do some basic network coding using the UDP protocol.
Is there a practice site to play with where I can't do any harm?
Or... is it possible to merely wire up the Apache server that comes with OS X and work with that?
This is intended to be for an iOS environment so would at least have to work via simulation.
Apache is an HTTP server, HTTP being a protocol built on TCP not UDP. You're probably going to be best off trying to write both a client and server that run in the same application and having them talk to each other via UDP.
FWIW, DNS is based on UDP, so talking to a public DNS server might be a good starting point.

Interfacing Arduino with a Web app Ruby on Rails through wireless

I want to start a small project with my arduino. The idea is to have this communication flow:
arduino <-> wireless board <-> Wi-Fi router <-> Web Server <-> Ruby on Rails 3 <-> Smart Phone <-> Browser
I found a framework called RAD (Ruby Arduino Development) but the last update is from 2008. Does anyone know another option to this?
The WiShield has libraries that can talk basic TCP/IP. The source code has an example HTTP client. This can be used as a basis for a client that makes requests to a rails server.
The WiShield seems to be available in a bunch of places.
You could send sensor values through the internet via an Ethernet shield like the ENC28J60 with the EtherCard library. Then you could make an RESTful API on your Rails app (e.g. with Grape), and from the Arduino shield, send the info to this API using the EtherCard library that I suggest.
If you want to use wifi capabilities, the concept it's the same, but instead of use an Ethernet shield, use a wifi shield like this.
Here you have an example to do it with an Ethernet shield.

Resources