查看: 16758|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr4 U, |7 l% ?: B+ N3 `% }( ]
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    / @! W5 N- V8 m5 K, P, a0 g
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
) k8 ~0 _' u. Musage: himr <address> <value>. sample: himr 0x80040000 0x0& f5 H0 d# C4 H! y( o: Q
1 [: b, H  a* a9 y. G5 U
( m* Y& J; w4 {+ j( D; k* k
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 g% [& x& Q3 [/ ^7 M2 F0 S6 }

  }, s7 _  b$ r$ l6 I+ K& A补充内容 (2012-3-8 09:42):) h3 I# _! \0 S. P# y
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数" [# {# N  R5 z2 z' k
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。$ t( K  a" ^6 D  D2 O* A

( {+ D# {" E+ q! N3 N! o! F! ihimr <address> <value>. sample: himr 0x80040000 0x0' y* H, e' V2 r% i8 x: T
% v7 H! A5 \) R% h
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。- `0 E3 j  Y+ ~" Q" Y, v' |2 P
himr 0x80040000 0x00
( u1 A! S1 a4 b& e! W: }* r6 chimr 0x80040001 0x11' i3 e; g0 r5 Z, I4 z1 i3 n
himr 0x80040002 0x22
; ]6 Q  Q, E7 ]! ihimr 0x80040003 0x33! U+ w3 }  ]& [  c
himr 0x80040004 0x44
6 h, G0 U# {3 I5 _9 @/ U3 fhimr 0x80040005 0x55! k1 h8 a2 k8 o

# c/ S% a& u2 q7 e9 d8 FSN也是类似。
5 z8 E6 ]' T/ H9 g$ o6 _$ V3 ^2 W/ Z' R9 w3 J! Z! C
现在主要是,谁告诉我们MAC和SN的地址?# J5 y8 j2 E" k' V) P/ P3 |
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
( Z6 W' C  k7 V' B; y一直想找到运程修改MAC和SN的办法,苦于无解啊

, H6 Q; i0 i3 @1 r+ l' f源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 4 ^2 E9 z0 y/ z8 q7 Q, n. {

  l4 M* S' ~8 L" {6 D, f! u4 d修改的代码早有了。到今天不会编译。1 k9 z& K! X) f6 X! D& H! O! h4 W( M
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    . P) G+ Q4 H! W. d' t* {
  2. #include <malloc.h>& n* Q8 X8 l2 N9 o
  3. #include <sys/types.h>" |! |$ t* D' {4 A. j- Z- d$ A$ [
  4. #include <sys/stat.h>+ R, n# j, U3 ?& P; k
  5. #include <sys/ioctl.h>/ q2 Y; a  g. W2 y3 B
  6. #include <stdio.h>
    ; R9 C3 e( p. {* w7 _
  7. #include <string.h>
    3 @/ u7 b7 O4 g4 T7 M- m7 w
  8. ! n/ |( _& R+ ^' n6 m; b: E# V( F. \- n
  9. typedef struct {( N$ W1 {1 u2 ]1 f1 g- u$ _1 V
  10.         unsigned int        e2prom_cmd_sub_addr;
    " r/ \: Q8 A- J  ^) v$ U; }1 U
  11.         unsigned int        sub_addr_count;
    0 e! v& C5 `3 o& k8 I$ D7 ?% n/ H
  12.         unsigned char*        e2prom_cmd_data;; J  E! O& f. z3 n, g
  13.         unsigned int        data_count;: Y6 B6 r7 Q* |1 W( E/ a4 O
  14. } e2prom_s_cmd;# C5 z: l7 F+ @) r) d

  15. , x6 r/ n5 y6 x
  16. #define E2PROM_CMD_READ 1
    $ g) \5 g* B2 a& j& K4 c1 J
  17. #define E2PROM_CMD_WRITE 2
    $ a" s  X! T1 {' [
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"$ m! U; v- h4 j) R+ n6 {3 b; z
  19. & }# o9 ], X$ ]5 P
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    ' g9 w( m2 Y, _" F% p4 A* [
  21. {
    6 |5 X8 t% j) d' U: K6 D, l3 g  p- A. C
  22.         int fd, ret;
    8 t2 s8 K: |9 O
  23.         e2prom_s_cmd arg;
    2 C9 @+ Q9 d6 |
  24.         unsigned char buf[0x18];
    9 I, [% K- t( m) Y9 Q/ c
  25. . A* A  a. z/ _! Z$ }
  26.         fd = open(E2PROM_DEVICE, O_RDWR);, l8 W' ~4 r* o$ w" t( s
  27.         if (fd  < 0) {
    # s# T' J3 A, b% x, L) M9 g9 x6 J
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    * c* ~" a5 @& ?. r9 v9 l
  29.                 return -1;" `4 ^. @0 F" P: H
  30.         }% {' K: n+ V9 V; w' O. D
  31.         arg.sub_addr_count      = 2;
    ! P0 t7 e& I. N+ {
  32.         arg.data_count          = 0x18;
    . O$ L/ H/ A1 l1 ^; w" P3 v$ \4 x
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    4 s# l; Z. R! @4 {  A' x
  34.         arg.e2prom_cmd_data     = buf;
    " y! u4 z, U5 t
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);# n4 g( j& X( t
  36.         if (ret != 0) {
    7 C) J' g% D  x' r% ^) P/ V( G
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);# p/ p) F( s6 k' \) ~7 q- Z
  38.                 return -1;4 s  P; t) J' D+ z% C. F* n: v
  39.         }: Y3 L2 o; Z( g$ c: ]
  40.         memcpy(mac, buf, 6);! D; G8 g) v! d7 B
  41.         memcpy(stbid, &buf[6], 18);
    7 P4 ^9 X* b' j/ v
  42.         stbid[18] = '\0';
    " D( U) ?" o4 ]
  43. ! i$ U/ Q5 t0 B% A) k
  44.         return 0;" a& o, K& v9 p: V) w
  45. }. r8 u" y# I& G+ ]) Y
  46. * d! B* `5 [) V  p: R
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    1 w6 Y2 r& |  c9 g7 a, H
  48. {
    5 M$ n  d: V* Y4 Y; D
  49.         int fd, ret;+ c6 u! _8 P0 _. o3 Z
  50.         e2prom_s_cmd arg;8 T0 _+ P- x, l$ I! [
  51.         unsigned char buf[0x18];
    : C/ `4 T2 Q$ U

  52. ( o# Z; E& n& Q3 o- z, R
  53.         memcpy(buf, mac, 6);
    ! @. }! E& G) N0 w, S# q
  54.         memcpy(&buf[6], stbid, 18);
    . ]$ @) u/ ^" C& X: H* \
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ( m/ \6 V) w" Z' ]3 @& `/ J" {. P
  56.         if (fd  < 0) {
    ; O0 y! e$ m, T2 _
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);0 u* r  o0 d( s
  58.                 return -1;# T- Q3 Y1 \  x  U; O) k3 Q
  59.         }
    9 M% q( m! n/ P
  60.         arg.sub_addr_count      = 2;; z$ ?# w- i5 N* X9 h' m: G2 m
  61.         arg.data_count          = 0x18;
    " d. a' ]  B7 N( S: N
  62.         arg.e2prom_cmd_sub_addr = 0x290;* ~6 Y! s) J- |/ }% z$ A
  63.         arg.e2prom_cmd_data     = buf;
    : I5 F. w6 a5 |0 W" ?( W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);3 v7 |: h; N) M$ g) p) M$ G
  65.         if (ret != 0) {
    + H4 c# U& ~& v; `1 a; l
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);& Z8 v3 t5 l1 Q1 s$ n; S
  67.                 return -1;) ^0 }, `% R9 {9 ]1 t4 R
  68.         }
    3 y5 ^) \0 `1 T/ `/ U
  69. ' K. Z1 Y7 A, q4 b$ w
  70.         return 0;' D& N+ [* T7 T) P
  71. }6 n6 N. |8 m1 ~1 k6 {

  72. 8 A! K0 y, [6 d) ^/ h* s, C
  73. int main()
    5 @1 F* h/ v0 D$ B* l7 }  [
  74. {
    6 U, x0 \3 ?! d
  75.         char c;1 [& o0 w8 H7 ^' U. ?
  76.         int i, macs[6];
    - b, S6 y. |- }3 o: g
  77.         unsigned char mac[6];. {/ P; O( {# I5 X+ m
  78.         unsigned char stbid[256];
    * d+ r) |* o4 V9 @# i* ?# v( k

  79. 7 \" E4 Y3 D8 k0 E9 ~
  80.         if (readparam(mac, stbid) < 0)
    8 z: w9 g/ c. L4 W9 ~, l0 ]
  81.                 return 1;6 s" J+ i: i# c& n

  82. " u. Y! @8 G4 T7 t# Q0 g5 a; _
  83.         printf("Current parameters: \n");( r3 `% [0 i& o
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    / @, L6 {! D! \2 H( ]1 i. t- j  G
  85.         printf("  STBID: %s\n", stbid);
    3 v7 p* R- X% S$ D! r' N. M0 J
  86.        
    0 g* o  m! S2 N" p" N3 B
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");8 \' `4 V0 E% L9 q0 q: D
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {0 e& y$ ^: I' V8 a0 _3 }
  89.                 printf("Input MAC error\n");3 t- m9 l: ?# ^, D! X8 G! }
  90.                 return 1;
    * ~2 u2 w' e  ^# S& h
  91.         }7 C  A4 v/ j- v/ S' s
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    : L8 l4 {% A) X+ n6 ]
  93.         printf("\nPlease input new STBID: ");' P- ^; {+ e4 z6 I  o& P2 ~3 V
  94.         scanf("%s", stbid);
    7 C3 g$ G; [7 a0 u" u5 O5 I
  95.         if (strlen(stbid) != 18) {2 c: t. H5 ], F6 ^, I3 Y) M
  96.                 printf("Invalid stbid\n");
    ( h3 W3 k# R/ Y, T" V
  97.                 return 1;
    ( G/ T  D* c- B( D0 Q% G) @& g
  98.         }
    + a4 _  W7 G* Z! e# x
  99.         printf("\nNew parameters: \n");& v' n) N) b2 N5 |' \
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);- i! h: m$ K6 M* ^* a
  101.         printf("  STBID: %s\n", stbid);
    . {3 e# y, x) d  s+ F( I7 N

  102. + K/ U  S# n2 |8 _) V
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ @9 V' B& l0 j2 @+ S& c( ~7 N4 N1 P
  104.         for (;;) {2 l3 s% d& M( f4 g
  105.                 c = getchar();; g2 o2 K( f: o1 ?' l
  106.                 if (c == 'y' || c == 'Y'); K6 M' C) p" Z$ x* w9 k
  107.                         break;: d, d1 J6 W1 u+ \+ b
  108.                 if (c == 'n' || c == 'N') {
    0 O" |" `. ]3 F- b$ ^
  109.                         printf("\nAborted.\n");# }( n4 [6 C: d: {- E
  110.                         return 1;; b! c* ?: Y0 z
  111.                 }
    + W+ J. E' L" T$ p( g9 n
  112.         }
    ; r" r& E) ~& ?* b* g3 @
  113.         if (writeparam(mac, stbid) == 0)
    ' h! a/ \1 U' I1 }) a
  114.                 printf("Parameters changed.\n");
    5 g& u. O5 p, F! \" |& k4 g
  115. + k0 I8 {0 i7 i( {$ v) @
  116.         return 0;7 P9 l, T* R  s; [. A
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24
: _( f, c. f3 S, G8 ^4 d5 ?) u) z: t) x3 O在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

( z3 V2 N+ P4 B! ?你用的编译命令行格式是什么?+ o5 n2 a1 ^, t) H) [
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部