Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfänger Frage: Realisation eines Software-Dongles
Hallo,
ersteinmal muß ich dieses Forum loben =D>
Da ich in Punkto BASCOM AVR noch blutiger Anfänger bin, benötige ich eine kleine Starthilfe!
Zu meiner Problem:
Da ich mich mehr im Software-Bereich bewege und Visual Basic mein Steckenpferd ist, suche ich eine einfache Möglichkeit meine Software über ein Dongle an der seriellen Schnittstelle zu schützen. Hardwaretechnisch soll ein ATtiny2313 über einen MAX232 mit der seriellen Schnittstelle verbunden werden. Der ATtiny soll das vom PC gesendete Zeichen lesen, intern aus einer Tabelle diesem Zeichen einen anderen Wert zuordnen und diesen dann wieder zum PC zurückschicken. Die SW kennt die selbe Tabelle und schaltet alle Funktionen frei.
Hab zwar mit Bascom AVR schon "rumgespielt" aber irgendwie kom ich noch nicht mit allen Funktionen klar....
Über jede hilfreich Antwort oder einem Beispiel würde ich mich sehr freun'
Gruß
Ralf
hi ich bin zwar auch noch ein relativer anfänger aber ich denke ich kann zumindest ein paar theoretische denkanstöße geben....
aber erst musst du ein paar infos geben zb unter welchen betriebssystem läuft dein VB programm? da man unter xp anscheinen nicht mehr sauber daten über die schnittstellen schicken kann( das multitasking system funkt dazwischen....)
ich würde als grund prinzip folgendes nehmen:
einfach:
der pc also das VB programm sendet ein bestimmtes signal über die verschiedenen anschlüsse der schnittstelle....der µC erkennt diese und sendet ein anderes signal zurück. dein VB programm erkennt diese folge und weiß "ich darf hier laufen"
zb: du hast 3 leitungen zum senden und die erste ist 3 sek an die 2. nach 1 sek. eine sek lang an und die 3. leitung geht aller halbe sekunde an und aus....
nachteil: lässt sich einfach aufzeichen und knacken
schwer(zumindest für meine begriffe):
du entwickelst einen algorythmus uns sendest jedes mal eine zahl verschlüsselt über die 3 leitungen ......der µC sendet eine verschlüsselte zahl zurück und dein programm weiß "ich bin echt und darf laufen"
zb: programm sendet eine zahl ......der µC kann die daten entschlüsseln und kann zb die zahl "x5" rechnen und diese zurücksenden ....dein programm rechnet diese zahl nun zurück auf die ursprungszahl vergleicht beid und wenn sie gleich sind läuft alles.....(ist ein sehr einfaches beispiel wie ichs machen würde....
a man unter xp anscheinen nicht mehr sauber daten über die schnittstellen schicken kann
Klar kann man auch unter XP sauber auf die serielle Schnittstelle zugreifen. Was nicht geht ist direkt Hardwaremäßig auf die RS232 zuzugreifen, aber über diverse Apis geht das Softwaremäßig wunderbar.
@MALIBOO
Wo hängt es in Bascom. Werte empfangen über die serielle oder mit der Tabelle?
Schaue dir mal die LookUp-Funktion an.
MfG
hmm...
also die Daten mit VB auf XP stellen kein Problem dar. Alles was ich sende kommt auch an. Sonst soll es ganz einfach geh'n.
Daten rein -> umwandeln -> Daten zurück an PC.
Was ich wissen möchte, könnte man nicht das Beispiel aus Bascom serin_out.bas entsprechend abändern?
bei xp gibt es aber das problem, dass das betriebssystem manschmal die übertragung unterbricht...selbst was sendet( zb überprüft ob ein drucke an der schnittstelle hängt) und dann weitersendet.....das stört den ganen datenverkehr...
serin_out.bas???
poste das bitte noch mal in einem code fenster....(den code selbst)
bei xp gibt es aber das problem, dass das betriebssystem manschmal die übertragung unterbricht...selbst was sendet( zb überprüft ob ein drucke an der schnittstelle hängt) und dann weitersendet.....das stört den ganen datenverkehr...
Bist du dir da sicher? Ich hab davon noch nie was gehört und noch nie Probleme damit gehabt. Gibt es Drucker für die serielle Schnittstelle? Ich hab bisher nur welche für den Parallelport und halt das moderne Zeugs wie USB gesehen.
Ich hab's etwas abgeändert, nur, das hier die gesendeten Daten nicht verändert werden.
' 10MHz Quarz
$crystal = 10000000
$regfile = "ATtiny2313.dat"
'Variable
Dim S As String * 10
Dim Mybaud As Long
Mybaud = 9600
Do
'Daten empfangen
Serin S , 0 , D , 2 , Mybaud , 1 , 8 , 1
'Daten senden
Serout S , 0 , D , 3 , Mybaud , 1 , 8 , 1
Wait 1
Loop
End
Geht das vom Prinzip?
@dremler
Wenn ich die Schnittstelle mit meinem Programm geöffnet habe kann da kein anderes Programm (auch ned XP) was machen.
@MALIBOO
das Dta müßte dann natürlich größer werden
If Ucsra.rxc = 1 Then 'Falls ein Byte im UART-Puffer...
Empfang = Udr 'Byte einlesen
Senden = Lookup(Empfang , Dta) 'Byte zum Senden aus Tabelle lesen
Udr=Senden
End If
Dta:
Data 1 , 2 , 3 , 4 , 5
Ist diese Variante mit einer look-Tabelle nicht ziemlich unsicher? Den Datenverkehr kann man ja einfach abhören und dann müsste man das Programm nur oft genug senden lassen, sodass man möglichst alle Schlüsselpaare bekommt und schon kann man den dongle nachbauen.
Allerdings weiß ich nicht, wie realistisch das Szenario ist. Wie oft würde der dongle zum Einsatz kommen? Bei jedem Programmstart? Wie viele Schlüsselpaare willst du verwenden?
Der Dongle soll kein 100% Schutz sein. Sicher kann man den ausspionieren, aber so interessant sind die Programme dann auch wieder nicht, das sich der Aufwand lohnt. Der Dongle soll nur billig zu realisieren sein.
@Pascal
Mit der unzureichenden Sicherheit hast Du recht. Ich würde vom PC ein paar mehr Bytes senden lassen und diese miteinander Verrechnen und dann erst in die Tabelle schauen. Sicher ist das immer noch nicht sonst würde heutzutage jede Software mit Dongle ausgeliefert, aber es erchwert den Diebstahl schon ein bissel.
@ Rofo88: Die Idee, dass erst ein paar Werte miteinander verrechnet werden, ist sehr gut. Dadurch dürfte die Sicherheit doch beträchtlich steigen. Dann muss man ja zusätzlich noch rausfinden, wie die Werte verrechnet werden und das können ja durchaus einige Werte sein.
Und das beste daran ist, der Hardwareaufwand steigt dadurch ja nicht, sodass die Kosten gleich bleiben.
@MALIBOO
ohne jetzt tiefer in Dein Visual Basic Projekt einzusteigen:
preisgünstige Dongle zum Softwareschutz:
http://www.matrixlock.de/bestell_demo.htm
3xUSB Dongle (60Byte) zu 40EUR
... was willst Du denn da selber entwickeln, löten, Gehäuse basteln?
Außerdem ist die RS232 heutzutage nur auf wenigen Rechnern anzutreffen.
Von der Stromversorgung ganz zu schweigen.
@tomas
Kurz mein Projekt:
BMW-Diagnosesoftware mit Interface - Software und Kommunikation (seriell) mit dem KFZ läuft. Im Interface soll gleichzeitig der Dongle integriert sein.
Gruß
Ralf
Ich hab diesen Code mal mit der besagten Schaltung ausprobiert. Das vom PC kommende Zeichen wird an Pin 2 des µC geschickt, kommt aber nicht an Pin 3 an! Wo ist der Fehler? Geht das mit dem Code nicht?
' 10MHz Quarz
$crystal = 10000000
$regfile = "ATtiny2313.dat"
'Variable
Dim S As String * 10
Dim Mybaud As Long
Mybaud = 9600
Do
'Daten empfangen
Serin S , 0 , D , 2 , Mybaud , 1 , 8 , 1
'Daten senden
Serout S , 0 , D , 3 , Mybaud , 1 , 8 , 1
Wait 1
Loop
End
Gruß
Ralf
eigentlich wurde doch nach einen dongel gefragt
hier mal ein beispiel wie man das selber machen kann
tut alles was von ihm verlangt wird via bascom fusebits setzen und flash eeprom programmierung
alles im laufenden betrieb der chip ist via steckerleiste mit einem steckbord zu verbinden und kann somit voll isp genutzt werden Reset wird über lpt geswitcht
Hab's immer noch nicht hinbekommen....
Vielleicht liegts ja an den Fusebits, weiss einfach nicht, wie ich meinen Programmer (GALEP IV) einstellen muß. Bin da etwas verwirrt. Beim GALEP kann man nicht überall 0 oder 1 einsetzen sondern nur abhaken. Null soll ja dann programmiert heißen, dann sollte logisch gesehen doch kein Haken auch programmiert heißen .....oder???
Wie muß ich die nun einstellen wenn ich extern mit 10MHz arbeiten möchte.
Sorry, aber erste "Geh-Versuche" O:)
nimm doch einfach baskom und so ein ding wiie in eins oben drüber 5euro bauteile oder bei schies mich 10 +versand
dann sind deine probleme für alle zeit in sachen avr 8bit risc gelöst
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.