查看: 17055|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr5 U. m% d1 ~# p; y
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    $ W4 h1 z9 G) d9 K
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:0 S* n1 a4 Q" b% ^8 o4 E. t0 n. k
usage: himr <address> <value>. sample: himr 0x80040000 0x0  G0 b* {# ]' C$ y
- I6 G) w; Q) q5 H/ h9 w: f

4 n0 \- P5 j! v不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?8 z4 i  i) f( @4 {6 q: |' K2 i
8 l( z% S2 p; L- y) H& {
补充内容 (2012-3-8 09:42):
' M) m% b3 ^: r2 |http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
% Z( }6 j" ?- ~# a: y7 _$ a8 k' G这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。
6 E! ]% T  f; }" |
2 k- x; B: M# ?- S4 X8 ohimr <address> <value>. sample: himr 0x80040000 0x0
" ?" J' U( d- S9 o* f% X; {: Q) `, ]9 [& ?
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。  B) W5 |. V% `* a# _' h, R0 t& {9 M
himr 0x80040000 0x00& O4 O3 r* `. k5 m1 Z4 e
himr 0x80040001 0x119 @0 j( N( A9 ^3 V! G
himr 0x80040002 0x22# m) q6 i3 Q* E' h
himr 0x80040003 0x33
5 m) b5 E# C% i, o! vhimr 0x80040004 0x44
  M, _4 B* \* m( {- m4 Zhimr 0x80040005 0x55
2 I! A. f  r3 ?: l' ]6 ]! W( t2 Q# K4 \& S  n1 F
SN也是类似。
5 J! M, @+ r/ b) Q* r0 x
# ~! Q6 e( b0 a8 Z& Y! ^% `& |现在主要是,谁告诉我们MAC和SN的地址?  d0 _- S( Q4 P+ z: t5 j
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
1 W& f8 z. h2 w3 O3 v0 J' F1 k一直想找到运程修改MAC和SN的办法,苦于无解啊
: R3 Q: C) W2 @" h5 {9 J
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
( J0 y9 U& a, ~) y& Y& y
2 R" B3 [$ Z& X# r; U修改的代码早有了。到今天不会编译。; ]$ Q) g2 n9 _" Z# m. T; c
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>1 B- x  d" {6 D* U
  2. #include <malloc.h>3 u8 q# P/ C2 A# d
  3. #include <sys/types.h>
    3 F6 X! S4 j. ?$ _
  4. #include <sys/stat.h>
    & |/ B" ~1 \' m' a3 g5 k- p
  5. #include <sys/ioctl.h>1 t& O& E4 x3 f4 P" ?$ n' E
  6. #include <stdio.h>  o: A1 Q+ |. P- l. \" a: ^6 x
  7. #include <string.h>. l; f  R# r6 s  c" B/ R

  8. $ y2 c5 i; r* J' o6 c
  9. typedef struct {
    * B' E( {( t% A9 K5 k8 K; I" P  C
  10.         unsigned int        e2prom_cmd_sub_addr;+ ~! w7 I8 N2 C% t. n$ V
  11.         unsigned int        sub_addr_count;
    $ ]: P  M; o2 ]+ b( F. y
  12.         unsigned char*        e2prom_cmd_data;/ o3 r4 L) }- j* k) V3 y
  13.         unsigned int        data_count;' y1 p+ Y' Z  i% @" i* T' W
  14. } e2prom_s_cmd;9 b& R( x- C% x/ d# d# r3 |
  15. 2 ]) j6 p8 n+ J; _* b. T
  16. #define E2PROM_CMD_READ 1; n) r# I3 |4 E' l
  17. #define E2PROM_CMD_WRITE 2
    : m; v' |5 P) [* {. R4 i0 Y4 f) V# d
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    5 W7 [1 R! i/ ^6 {
  19. 5 X- c& W. H2 U
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    & S! N4 ], o3 ?, D$ o/ u! n. V. L. t
  21. {
    - v" E6 T) `2 Q: i( i
  22.         int fd, ret;
    + f- H8 Y! K6 n8 ~1 C9 ]
  23.         e2prom_s_cmd arg;
    ; W$ k% @8 j# y' v( h+ Y
  24.         unsigned char buf[0x18];
    ) l8 X/ z, P, p3 T# B0 e

  25. ( |6 l, `0 b, `6 g' \2 [
  26.         fd = open(E2PROM_DEVICE, O_RDWR);- R9 K: c  k* L8 j) k: B' j: J7 ?
  27.         if (fd  < 0) {$ j/ P& s# U" z) ]4 ^* f: F; G
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);% x# ]! j" [5 }! G
  29.                 return -1;5 c' \* J% j5 S3 K1 }$ s
  30.         }
    $ U4 r2 G- ~' d8 I
  31.         arg.sub_addr_count      = 2;
    6 i2 @3 m1 W. Z% u' j
  32.         arg.data_count          = 0x18;
    ( A  M) \! |& {* O; ~0 R
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    5 p& X3 r5 A2 M4 `
  34.         arg.e2prom_cmd_data     = buf;; a( d: i  W( i: z2 `0 s
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , r6 ^4 W; ^: {8 T
  36.         if (ret != 0) {
      M: z1 r* T4 A% w8 b
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);0 S. [. l7 i" Y; S
  38.                 return -1;% q) t! {9 j5 L# T7 x
  39.         }! d2 x, Q, S5 D* s9 J
  40.         memcpy(mac, buf, 6);
    / p2 C0 H- E) q1 y- S
  41.         memcpy(stbid, &buf[6], 18);
    ' p, p4 L2 p2 N8 F
  42.         stbid[18] = '\0';& L2 x" v, l7 r* p5 `3 O
  43. 6 E4 F  d! }& L- W' j4 P! L4 V( `
  44.         return 0;4 G! u- J! h+ C+ W; {1 `1 f
  45. }! A% c! `$ ^9 P0 B

  46. ! i4 }7 k% s# O& p2 h; V
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    . [# F5 }& @8 }
  48. {
    0 S( q3 s, C) a- Q& X% N8 \( q
  49.         int fd, ret;4 G8 Q* o' ]- z& g" |
  50.         e2prom_s_cmd arg;" Y: P3 v+ V9 u8 d2 c3 h( b) ^+ L. X
  51.         unsigned char buf[0x18];! w% S/ N4 A" l- y2 g. }% @) ]

  52. ) l* {7 {! k" l% W8 z# t' ?
  53.         memcpy(buf, mac, 6);. j5 f; Q/ T% r+ Q
  54.         memcpy(&buf[6], stbid, 18);  {# H7 J' k' P* w* l8 w* y" s
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    ) J0 R6 z/ Z. \6 a
  56.         if (fd  < 0) {* x' C3 X3 [9 F2 {+ d+ e" D
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);$ R: X( f* }% a8 [; A
  58.                 return -1;( Y* o( l6 c+ {
  59.         }
    ! S" d, ~: Q2 p
  60.         arg.sub_addr_count      = 2;  F) [5 o. Y3 {2 p( S
  61.         arg.data_count          = 0x18;
    ! ~3 t2 o2 W9 Y, H
  62.         arg.e2prom_cmd_sub_addr = 0x290;
    8 h3 B! j/ n3 A/ x- v- e* b, d  X
  63.         arg.e2prom_cmd_data     = buf;$ n" v( J+ y+ ]& ~! A/ |. }. a8 r
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    ' D7 n0 F  G8 n1 l( ~% a+ x% L
  65.         if (ret != 0) {
    ; D" G* T3 m' t2 _3 v: T8 R; O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: C, d5 _% e$ W7 L6 j! T4 [
  67.                 return -1;
    : W0 A8 `5 ]' P
  68.         }0 W8 H; {6 ^! z4 K- S# Z
  69. , j: v" h9 \& j4 g6 O) F# z/ S
  70.         return 0;) m$ t) ~( r0 u, A" B9 o
  71. }& Y0 ]  H8 C, u, \" d4 A; B1 R( \- c
  72. # `' W+ L9 Q7 M7 J. D
  73. int main()  Y& F( D# b7 D9 U! R
  74. {7 ]& w1 J/ w, J6 o- o
  75.         char c;* q% e1 G2 c8 |
  76.         int i, macs[6];
    7 Q/ U7 R  y5 L" f
  77.         unsigned char mac[6];
    ! `6 F5 i2 V6 }$ O6 N
  78.         unsigned char stbid[256];
    8 E  \' `2 V, S/ i. z) l2 {1 \

  79. 4 D3 c% L4 g! `1 f+ h1 s! |; D! F
  80.         if (readparam(mac, stbid) < 0)
    " i4 L1 j9 T3 @& q3 g3 a+ X
  81.                 return 1;9 F; V) w8 i7 x6 T

  82. . ~  C+ c/ j/ ]# c
  83.         printf("Current parameters: \n");$ O" [1 z" f& M: _. s5 o$ U( h
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);/ p2 E% u' R" w8 Z: q
  85.         printf("  STBID: %s\n", stbid);- Q4 e0 \% k- @' l
  86.         5 E' J% k1 h* y0 D, `: w- M
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");/ J' G# W8 D) E( `. o5 ~
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {* S. Y, S: V0 h8 p# ?6 k
  89.                 printf("Input MAC error\n");
    % T, @3 E) Z0 T- N
  90.                 return 1;
    * k0 n/ W" J7 w
  91.         }6 w9 P& Z5 J0 ]: n  j& ?
  92.         for (i=0; i<6; i++)mac[i] = macs[i];- N' o3 j9 H- s+ D& P
  93.         printf("\nPlease input new STBID: ");1 Q) Z7 G0 c  ^) d3 d
  94.         scanf("%s", stbid);
    9 j7 a) W$ S& \
  95.         if (strlen(stbid) != 18) {
    * p: @8 L0 x/ |/ \# H3 D( s7 ~4 x
  96.                 printf("Invalid stbid\n");$ b5 V) q/ ]; m6 L. X8 T
  97.                 return 1;
    $ S- y  y9 n7 ~
  98.         }
    1 D, T% y$ N4 S* \9 v  x
  99.         printf("\nNew parameters: \n");7 C; Y3 b! k5 r; P* |9 T, g, i
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    - m1 A* i% M6 r  v" q) F
  101.         printf("  STBID: %s\n", stbid);
    & ~' M2 j% ]: i5 n0 p' l5 o

  102. 8 H, l  t4 I) h+ R3 u
  103.         printf("\nDo you want to change paramemters? (y/N) ");+ I. E4 {& |# c; P
  104.         for (;;) {
    ! c2 b. ]7 @# b, u: J/ V
  105.                 c = getchar();: o3 D8 U4 N3 U7 C  O; j3 f' r
  106.                 if (c == 'y' || c == 'Y')
    4 O6 r* W6 C; H7 o" _  d# K& Z
  107.                         break;4 {* D! |( s1 w& t! m
  108.                 if (c == 'n' || c == 'N') {* A. m; @% E1 t4 S1 W3 a
  109.                         printf("\nAborted.\n");
      m) n4 `: y4 x0 o& s5 Q% H2 i3 L
  110.                         return 1;- w4 @7 ^0 ~- t5 k+ u, x7 D/ c% V
  111.                 }* [, O, \1 g5 W  w1 p4 b: q
  112.         }
    : h6 R) A- k! R, x
  113.         if (writeparam(mac, stbid) == 0)
    3 q$ ^3 ?: }& k) @" I( A. ~' l( n/ n
  114.                 printf("Parameters changed.\n");2 O: b: b+ `5 |/ i5 S

  115. & d; @. h- ?& x7 o0 \$ R0 N
  116.         return 0;
      T5 g0 p% n4 k
  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
' G! d6 |+ J( L2 V8 Q$ O4 S7 E在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
9 T( H$ b+ J% `, R
你用的编译命令行格式是什么?, O% D: H' r) x
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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